<snapdata remixID="12371463"><project name="files" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAxVJREFUeF7t10FKmwEUhdE/LsYduBDHLiKuS4fuR9ehkwhCS6HUXiq3F+T80zzfIycfhpwul8vl8BAYCZwEOJJ39kNAgEKYCghwyu+4ADUwFRDglN9xAWpgKiDAKb/jAtTAVECAU37HBaiBqYAAp/yOC1ADUwEBTvkdF6AGpgICnPI7LkANTAUEOOV3XIAamAoIcMrvuAA1MBUQ4JTfcQFqYCogwCm/4wLUwFRAgFN+xwWogamAAKf8jgtQA1MBAU75HRegBqYCApzyOy5ADUwFBDjld1yAGpgKCHDK77gANTAVEOCU33EBamAqIMApv+MC1MBUQIBTfscFqIGpgACn/I4LUANTAQFO+R0XoAamAgKc8jsuQA1MBQQ45XdcgBqYCghwyu+4ADUwFRDglN9xAWpgKiDAKb/jAtTAVECAf+C/ubk5zufzcXd3d5xOp+mH9J2PC/CTT/f29vbnq8/Pz8fj4+NxfX39nXv47+9NgH8h/zXCH6NXV1fH6+vr8fT05L/jF5MV4D8G+Pb29hGg52sCAgy/gl9eXo6HhwdfwV/r7be/FuAnP0Lu7+8/foR4egIC7NnaHAgIMEAy0hMQYM/W5kBAgAGSkZ6AAHu2NgcCAgyQjPQEBNiztTkQEGCAZKQnIMCerc2BgAADJCM9AQH2bG0OBAQYIBnpCQiwZ2tzICDAAMlIT0CAPVubAwEBBkhGegIC7NnaHAgIMEAy0hMQYM/W5kBAgAGSkZ6AAHu2NgcCAgyQjPQEBNiztTkQEGCAZKQnIMCerc2BgAADJCM9AQH2bG0OBAQYIBnpCQiwZ2tzICDAAMlIT0CAPVubAwEBBkhGegIC7NnaHAgIMEAy0hMQYM/W5kBAgAGSkZ6AAHu2NgcCAgyQjPQEBNiztTkQEGCAZKQnIMCerc2BgAADJCM9AQH2bG0OBAQYIBnpCQiwZ2tzICDAAMlIT0CAPVubAwEBBkhGegIC7NnaHAgIMEAy0hMQYM/W5kBAgAGSkZ6AAHu2NgcCAgyQjPQEBNiztTkQEGCAZKQnIMCerc2BwDvXCfyo8D4qYQAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="files"><notes></notes><hidden></hidden><headers></headers><code></code><blocks></blocks><stage name="Stage" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="5"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list id="6"><item><ref mediaID="Stage_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="7"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="12"><costumes><list struct="atomic" id="13"></list></costumes><sounds><list struct="atomic" id="14"></list></sounds><blocks></blocks><variables></variables><scripts><comment x="9.756097560975611" y="9.756097560975611" w="330.9756097560976" collapsed="true">export the variables and remove the .txt at the end. the static folder is to be aquired yourself. (gui.js.map is too large, project 2 required.)&#xD;THESE ALL GO IN A NEW FOLDER, AND NOT THE STATIC FOLDER</comment><comment x="9.756097560975611" y="34.0731707317073" w="332.43902439024396" collapsed="true">instructions above.</comment><comment x="9.756097560975611" y="58.390243902439025" w="331.46341463414643" collapsed="true">Working Blocks below</comment><script x="9.756097560975611" y="82.70731707317074"><block s="receiveCondition"><l/></block></script><script x="9.756097560975611" y="124.02439024390236"><block s="getPosition"></block></script><script x="9.756097560975611" y="145.7581300813007"><block s="reportMousePosition"></block></script><script x="9.756097560975611" y="167.49186991869908"><block s="reportPower"><l></l><l></l></block></script><script x="9.756097560975611" y="192.8089430894308"><block s="reportBoolean"><l><bool>false</bool></l></block></script><script x="9.756097560975611" y="219.12601626016257"><block s="reportBoolean"><l><bool>true</bool></l></block></script><script x="9.756097560975611" y="245.44308943089425"><block s="reportMonadic"><l><option>2^</option></l><l>10</l></block></script></scripts></sprite><watcher var="gui.js" style="normal" x="0" y="0" color="243,118,29" hidden="true"/><watcher var="index.html" style="normal" x="0" y="68.54999800000002" color="243,118,29" hidden="true"/><watcher var="lib.min.js" style="normal" x="10" y="320.5499980000001" color="243,118,29" hidden="true"/><watcher var="lib.min.js.map" style="normal" x="-5" y="67.54999800000002" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="gui.js"><l>webpackJsonp([0],[&#xD;/* 0 */,&#xD;/* 1 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global) {/*!&#xD; * The buffer module from node.js, for the browser.&#xD; *&#xD; * @author   Feross Aboukhadijeh &lt;feross@feross.org&gt; &lt;http://feross.org&gt;&#xD; * @license  MIT&#xD; */&#xD;/* eslint-disable no-proto */&#xD;&#xD;&#xD;&#xD;var base64 = __webpack_require__(258)&#xD;var ieee754 = __webpack_require__(349)&#xD;var isArray = __webpack_require__(137)&#xD;&#xD;exports.Buffer = Buffer&#xD;exports.SlowBuffer = SlowBuffer&#xD;exports.INSPECT_MAX_BYTES = 50&#xD;&#xD;/**&#xD; * If `Buffer.TYPED_ARRAY_SUPPORT`:&#xD; *   === true    Use Uint8Array implementation (fastest)&#xD; *   === false   Use Object implementation (most compatible, even IE6)&#xD; *&#xD; * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,&#xD; * Opera 11.6+, iOS 4.2+.&#xD; *&#xD; * Due to various browser bugs, sometimes the Object implementation will be used even&#xD; * when the browser supports typed arrays.&#xD; *&#xD; * Note:&#xD; *&#xD; *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,&#xD; *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.&#xD; *&#xD; *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.&#xD; *&#xD; *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of&#xD; *     incorrect length in some situations.&#xD;&#xD; * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they&#xD; * get the Object implementation, which is slower but behaves correctly.&#xD; */&#xD;Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined&#xD;  ? global.TYPED_ARRAY_SUPPORT&#xD;  : typedArraySupport()&#xD;&#xD;/*&#xD; * Export kMaxLength after typed array support is determined.&#xD; */&#xD;exports.kMaxLength = kMaxLength()&#xD;&#xD;function typedArraySupport () {&#xD;  try {&#xD;    var arr = new Uint8Array(1)&#xD;    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}&#xD;    return arr.foo() === 42 &amp;&amp; // typed array instances can be augmented&#xD;        typeof arr.subarray === &apos;function&apos; &amp;&amp; // chrome 9-10 lack `subarray`&#xD;        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`&#xD;  } catch (e) {&#xD;    return false&#xD;  }&#xD;}&#xD;&#xD;function kMaxLength () {&#xD;  return Buffer.TYPED_ARRAY_SUPPORT&#xD;    ? 0x7fffffff&#xD;    : 0x3fffffff&#xD;}&#xD;&#xD;function createBuffer (that, length) {&#xD;  if (kMaxLength() &lt; length) {&#xD;    throw new RangeError(&apos;Invalid typed array length&apos;)&#xD;  }&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    // Return an augmented `Uint8Array` instance, for best performance&#xD;    that = new Uint8Array(length)&#xD;    that.__proto__ = Buffer.prototype&#xD;  } else {&#xD;    // Fallback: Return an object instance of the Buffer class&#xD;    if (that === null) {&#xD;      that = new Buffer(length)&#xD;    }&#xD;    that.length = length&#xD;  }&#xD;&#xD;  return that&#xD;}&#xD;&#xD;/**&#xD; * The Buffer constructor returns instances of `Uint8Array` that have their&#xD; * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of&#xD; * `Uint8Array`, so the returned instances will have all the node `Buffer` methods&#xD; * and the `Uint8Array` methods. Square bracket notation works as expected -- it&#xD; * returns a single octet.&#xD; *&#xD; * The `Uint8Array` prototype remains unmodified.&#xD; */&#xD;&#xD;function Buffer (arg, encodingOrOffset, length) {&#xD;  if (!Buffer.TYPED_ARRAY_SUPPORT &amp;&amp; !(this instanceof Buffer)) {&#xD;    return new Buffer(arg, encodingOrOffset, length)&#xD;  }&#xD;&#xD;  // Common case.&#xD;  if (typeof arg === &apos;number&apos;) {&#xD;    if (typeof encodingOrOffset === &apos;string&apos;) {&#xD;      throw new Error(&#xD;        &apos;If encoding is specified then the first argument must be a string&apos;&#xD;      )&#xD;    }&#xD;    return allocUnsafe(this, arg)&#xD;  }&#xD;  return from(this, arg, encodingOrOffset, length)&#xD;}&#xD;&#xD;Buffer.poolSize = 8192 // not used by this implementation&#xD;&#xD;// TODO: Legacy, not needed anymore. Remove in next major version.&#xD;Buffer._augment = function (arr) {&#xD;  arr.__proto__ = Buffer.prototype&#xD;  return arr&#xD;}&#xD;&#xD;function from (that, value, encodingOrOffset, length) {&#xD;  if (typeof value === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;"value" argument must not be a number&apos;)&#xD;  }&#xD;&#xD;  if (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value instanceof ArrayBuffer) {&#xD;    return fromArrayBuffer(that, value, encodingOrOffset, length)&#xD;  }&#xD;&#xD;  if (typeof value === &apos;string&apos;) {&#xD;    return fromString(that, value, encodingOrOffset)&#xD;  }&#xD;&#xD;  return fromObject(that, value)&#xD;}&#xD;&#xD;/**&#xD; * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError&#xD; * if value is a number.&#xD; * Buffer.from(str[, encoding])&#xD; * Buffer.from(array)&#xD; * Buffer.from(buffer)&#xD; * Buffer.from(arrayBuffer[, byteOffset[, length]])&#xD; **/&#xD;Buffer.from = function (value, encodingOrOffset, length) {&#xD;  return from(null, value, encodingOrOffset, length)&#xD;}&#xD;&#xD;if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;  Buffer.prototype.__proto__ = Uint8Array.prototype&#xD;  Buffer.__proto__ = Uint8Array&#xD;  if (typeof Symbol !== &apos;undefined&apos; &amp;&amp; Symbol.species &amp;&amp;&#xD;      Buffer[Symbol.species] === Buffer) {&#xD;    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97&#xD;    Object.defineProperty(Buffer, Symbol.species, {&#xD;      value: null,&#xD;      configurable: true&#xD;    })&#xD;  }&#xD;}&#xD;&#xD;function assertSize (size) {&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;"size" argument must be a number&apos;)&#xD;  } else if (size &lt; 0) {&#xD;    throw new RangeError(&apos;"size" argument must not be negative&apos;)&#xD;  }&#xD;}&#xD;&#xD;function alloc (that, size, fill, encoding) {&#xD;  assertSize(size)&#xD;  if (size &lt;= 0) {&#xD;    return createBuffer(that, size)&#xD;  }&#xD;  if (fill !== undefined) {&#xD;    // Only pay attention to encoding if it&apos;s a string. This&#xD;    // prevents accidentally sending in a number that would&#xD;    // be interpretted as a start offset.&#xD;    return typeof encoding === &apos;string&apos;&#xD;      ? createBuffer(that, size).fill(fill, encoding)&#xD;      : createBuffer(that, size).fill(fill)&#xD;  }&#xD;  return createBuffer(that, size)&#xD;}&#xD;&#xD;/**&#xD; * Creates a new filled Buffer instance.&#xD; * alloc(size[, fill[, encoding]])&#xD; **/&#xD;Buffer.alloc = function (size, fill, encoding) {&#xD;  return alloc(null, size, fill, encoding)&#xD;}&#xD;&#xD;function allocUnsafe (that, size) {&#xD;  assertSize(size)&#xD;  that = createBuffer(that, size &lt; 0 ? 0 : checked(size) | 0)&#xD;  if (!Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    for (var i = 0; i &lt; size; ++i) {&#xD;      that[i] = 0&#xD;    }&#xD;  }&#xD;  return that&#xD;}&#xD;&#xD;/**&#xD; * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.&#xD; * */&#xD;Buffer.allocUnsafe = function (size) {&#xD;  return allocUnsafe(null, size)&#xD;}&#xD;/**&#xD; * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.&#xD; */&#xD;Buffer.allocUnsafeSlow = function (size) {&#xD;  return allocUnsafe(null, size)&#xD;}&#xD;&#xD;function fromString (that, string, encoding) {&#xD;  if (typeof encoding !== &apos;string&apos; || encoding === &apos;&apos;) {&#xD;    encoding = &apos;utf8&apos;&#xD;  }&#xD;&#xD;  if (!Buffer.isEncoding(encoding)) {&#xD;    throw new TypeError(&apos;"encoding" must be a valid string encoding&apos;)&#xD;  }&#xD;&#xD;  var length = byteLength(string, encoding) | 0&#xD;  that = createBuffer(that, length)&#xD;&#xD;  var actual = that.write(string, encoding)&#xD;&#xD;  if (actual !== length) {&#xD;    // Writing a hex string, for example, that contains invalid characters will&#xD;    // cause everything after the first invalid character to be ignored. (e.g.&#xD;    // &apos;abxxcd&apos; will be treated as &apos;ab&apos;)&#xD;    that = that.slice(0, actual)&#xD;  }&#xD;&#xD;  return that&#xD;}&#xD;&#xD;function fromArrayLike (that, array) {&#xD;  var length = array.length &lt; 0 ? 0 : checked(array.length) | 0&#xD;  that = createBuffer(that, length)&#xD;  for (var i = 0; i &lt; length; i += 1) {&#xD;    that[i] = array[i] &amp; 255&#xD;  }&#xD;  return that&#xD;}&#xD;&#xD;function fromArrayBuffer (that, array, byteOffset, length) {&#xD;  array.byteLength // this throws if `array` is not a valid ArrayBuffer&#xD;&#xD;  if (byteOffset &lt; 0 || array.byteLength &lt; byteOffset) {&#xD;    throw new RangeError(&apos;\&apos;offset\&apos; is out of bounds&apos;)&#xD;  }&#xD;&#xD;  if (array.byteLength &lt; byteOffset + (length || 0)) {&#xD;    throw new RangeError(&apos;\&apos;length\&apos; is out of bounds&apos;)&#xD;  }&#xD;&#xD;  if (byteOffset === undefined &amp;&amp; length === undefined) {&#xD;    array = new Uint8Array(array)&#xD;  } else if (length === undefined) {&#xD;    array = new Uint8Array(array, byteOffset)&#xD;  } else {&#xD;    array = new Uint8Array(array, byteOffset, length)&#xD;  }&#xD;&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    // Return an augmented `Uint8Array` instance, for best performance&#xD;    that = array&#xD;    that.__proto__ = Buffer.prototype&#xD;  } else {&#xD;    // Fallback: Return an object instance of the Buffer class&#xD;    that = fromArrayLike(that, array)&#xD;  }&#xD;  return that&#xD;}&#xD;&#xD;function fromObject (that, obj) {&#xD;  if (Buffer.isBuffer(obj)) {&#xD;    var len = checked(obj.length) | 0&#xD;    that = createBuffer(that, len)&#xD;&#xD;    if (that.length === 0) {&#xD;      return that&#xD;    }&#xD;&#xD;    obj.copy(that, 0, 0, len)&#xD;    return that&#xD;  }&#xD;&#xD;  if (obj) {&#xD;    if ((typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp;&#xD;        obj.buffer instanceof ArrayBuffer) || &apos;length&apos; in obj) {&#xD;      if (typeof obj.length !== &apos;number&apos; || isnan(obj.length)) {&#xD;        return createBuffer(that, 0)&#xD;      }&#xD;      return fromArrayLike(that, obj)&#xD;    }&#xD;&#xD;    if (obj.type === &apos;Buffer&apos; &amp;&amp; isArray(obj.data)) {&#xD;      return fromArrayLike(that, obj.data)&#xD;    }&#xD;  }&#xD;&#xD;  throw new TypeError(&apos;First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.&apos;)&#xD;}&#xD;&#xD;function checked (length) {&#xD;  // Note: cannot use `length &lt; kMaxLength()` here because that fails when&#xD;  // length is NaN (which is otherwise coerced to zero.)&#xD;  if (length &gt;= kMaxLength()) {&#xD;    throw new RangeError(&apos;Attempt to allocate Buffer larger than maximum &apos; +&#xD;                         &apos;size: 0x&apos; + kMaxLength().toString(16) + &apos; bytes&apos;)&#xD;  }&#xD;  return length | 0&#xD;}&#xD;&#xD;function SlowBuffer (length) {&#xD;  if (+length != length) { // eslint-disable-line eqeqeq&#xD;    length = 0&#xD;  }&#xD;  return Buffer.alloc(+length)&#xD;}&#xD;&#xD;Buffer.isBuffer = function isBuffer (b) {&#xD;  return !!(b != null &amp;&amp; b._isBuffer)&#xD;}&#xD;&#xD;Buffer.compare = function compare (a, b) {&#xD;  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {&#xD;    throw new TypeError(&apos;Arguments must be Buffers&apos;)&#xD;  }&#xD;&#xD;  if (a === b) return 0&#xD;&#xD;  var x = a.length&#xD;  var y = b.length&#xD;&#xD;  for (var i = 0, len = Math.min(x, y); i &lt; len; ++i) {&#xD;    if (a[i] !== b[i]) {&#xD;      x = a[i]&#xD;      y = b[i]&#xD;      break&#xD;    }&#xD;  }&#xD;&#xD;  if (x &lt; y) return -1&#xD;  if (y &lt; x) return 1&#xD;  return 0&#xD;}&#xD;&#xD;Buffer.isEncoding = function isEncoding (encoding) {&#xD;  switch (String(encoding).toLowerCase()) {&#xD;    case &apos;hex&apos;:&#xD;    case &apos;utf8&apos;:&#xD;    case &apos;utf-8&apos;:&#xD;    case &apos;ascii&apos;:&#xD;    case &apos;latin1&apos;:&#xD;    case &apos;binary&apos;:&#xD;    case &apos;base64&apos;:&#xD;    case &apos;ucs2&apos;:&#xD;    case &apos;ucs-2&apos;:&#xD;    case &apos;utf16le&apos;:&#xD;    case &apos;utf-16le&apos;:&#xD;      return true&#xD;    default:&#xD;      return false&#xD;  }&#xD;}&#xD;&#xD;Buffer.concat = function concat (list, length) {&#xD;  if (!isArray(list)) {&#xD;    throw new TypeError(&apos;"list" argument must be an Array of Buffers&apos;)&#xD;  }&#xD;&#xD;  if (list.length === 0) {&#xD;    return Buffer.alloc(0)&#xD;  }&#xD;&#xD;  var i&#xD;  if (length === undefined) {&#xD;    length = 0&#xD;    for (i = 0; i &lt; list.length; ++i) {&#xD;      length += list[i].length&#xD;    }&#xD;  }&#xD;&#xD;  var buffer = Buffer.allocUnsafe(length)&#xD;  var pos = 0&#xD;  for (i = 0; i &lt; list.length; ++i) {&#xD;    var buf = list[i]&#xD;    if (!Buffer.isBuffer(buf)) {&#xD;      throw new TypeError(&apos;"list" argument must be an Array of Buffers&apos;)&#xD;    }&#xD;    buf.copy(buffer, pos)&#xD;    pos += buf.length&#xD;  }&#xD;  return buffer&#xD;}&#xD;&#xD;function byteLength (string, encoding) {&#xD;  if (Buffer.isBuffer(string)) {&#xD;    return string.length&#xD;  }&#xD;  if (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; typeof ArrayBuffer.isView === &apos;function&apos; &amp;&amp;&#xD;      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {&#xD;    return string.byteLength&#xD;  }&#xD;  if (typeof string !== &apos;string&apos;) {&#xD;    string = &apos;&apos; + string&#xD;  }&#xD;&#xD;  var len = string.length&#xD;  if (len === 0) return 0&#xD;&#xD;  // Use a for loop to avoid recursion&#xD;  var loweredCase = false&#xD;  for (;;) {&#xD;    switch (encoding) {&#xD;      case &apos;ascii&apos;:&#xD;      case &apos;latin1&apos;:&#xD;      case &apos;binary&apos;:&#xD;        return len&#xD;      case &apos;utf8&apos;:&#xD;      case &apos;utf-8&apos;:&#xD;      case undefined:&#xD;        return utf8ToBytes(string).length&#xD;      case &apos;ucs2&apos;:&#xD;      case &apos;ucs-2&apos;:&#xD;      case &apos;utf16le&apos;:&#xD;      case &apos;utf-16le&apos;:&#xD;        return len * 2&#xD;      case &apos;hex&apos;:&#xD;        return len &gt;&gt;&gt; 1&#xD;      case &apos;base64&apos;:&#xD;        return base64ToBytes(string).length&#xD;      default:&#xD;        if (loweredCase) return utf8ToBytes(string).length // assume utf8&#xD;        encoding = (&apos;&apos; + encoding).toLowerCase()&#xD;        loweredCase = true&#xD;    }&#xD;  }&#xD;}&#xD;Buffer.byteLength = byteLength&#xD;&#xD;function slowToString (encoding, start, end) {&#xD;  var loweredCase = false&#xD;&#xD;  // No need to verify that "this.length &lt;= MAX_UINT32" since it&apos;s a read-only&#xD;  // property of a typed array.&#xD;&#xD;  // This behaves neither like String nor Uint8Array in that we set start/end&#xD;  // to their upper/lower bounds if the value passed is out of range.&#xD;  // undefined is handled specially as per ECMA-262 6th Edition,&#xD;  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.&#xD;  if (start === undefined || start &lt; 0) {&#xD;    start = 0&#xD;  }&#xD;  // Return early if start &gt; this.length. Done here to prevent potential uint32&#xD;  // coercion fail below.&#xD;  if (start &gt; this.length) {&#xD;    return &apos;&apos;&#xD;  }&#xD;&#xD;  if (end === undefined || end &gt; this.length) {&#xD;    end = this.length&#xD;  }&#xD;&#xD;  if (end &lt;= 0) {&#xD;    return &apos;&apos;&#xD;  }&#xD;&#xD;  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.&#xD;  end &gt;&gt;&gt;= 0&#xD;  start &gt;&gt;&gt;= 0&#xD;&#xD;  if (end &lt;= start) {&#xD;    return &apos;&apos;&#xD;  }&#xD;&#xD;  if (!encoding) encoding = &apos;utf8&apos;&#xD;&#xD;  while (true) {&#xD;    switch (encoding) {&#xD;      case &apos;hex&apos;:&#xD;        return hexSlice(this, start, end)&#xD;&#xD;      case &apos;utf8&apos;:&#xD;      case &apos;utf-8&apos;:&#xD;        return utf8Slice(this, start, end)&#xD;&#xD;      case &apos;ascii&apos;:&#xD;        return asciiSlice(this, start, end)&#xD;&#xD;      case &apos;latin1&apos;:&#xD;      case &apos;binary&apos;:&#xD;        return latin1Slice(this, start, end)&#xD;&#xD;      case &apos;base64&apos;:&#xD;        return base64Slice(this, start, end)&#xD;&#xD;      case &apos;ucs2&apos;:&#xD;      case &apos;ucs-2&apos;:&#xD;      case &apos;utf16le&apos;:&#xD;      case &apos;utf-16le&apos;:&#xD;        return utf16leSlice(this, start, end)&#xD;&#xD;      default:&#xD;        if (loweredCase) throw new TypeError(&apos;Unknown encoding: &apos; + encoding)&#xD;        encoding = (encoding + &apos;&apos;).toLowerCase()&#xD;        loweredCase = true&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect&#xD;// Buffer instances.&#xD;Buffer.prototype._isBuffer = true&#xD;&#xD;function swap (b, n, m) {&#xD;  var i = b[n]&#xD;  b[n] = b[m]&#xD;  b[m] = i&#xD;}&#xD;&#xD;Buffer.prototype.swap16 = function swap16 () {&#xD;  var len = this.length&#xD;  if (len % 2 !== 0) {&#xD;    throw new RangeError(&apos;Buffer size must be a multiple of 16-bits&apos;)&#xD;  }&#xD;  for (var i = 0; i &lt; len; i += 2) {&#xD;    swap(this, i, i + 1)&#xD;  }&#xD;  return this&#xD;}&#xD;&#xD;Buffer.prototype.swap32 = function swap32 () {&#xD;  var len = this.length&#xD;  if (len % 4 !== 0) {&#xD;    throw new RangeError(&apos;Buffer size must be a multiple of 32-bits&apos;)&#xD;  }&#xD;  for (var i = 0; i &lt; len; i += 4) {&#xD;    swap(this, i, i + 3)&#xD;    swap(this, i + 1, i + 2)&#xD;  }&#xD;  return this&#xD;}&#xD;&#xD;Buffer.prototype.swap64 = function swap64 () {&#xD;  var len = this.length&#xD;  if (len % 8 !== 0) {&#xD;    throw new RangeError(&apos;Buffer size must be a multiple of 64-bits&apos;)&#xD;  }&#xD;  for (var i = 0; i &lt; len; i += 8) {&#xD;    swap(this, i, i + 7)&#xD;    swap(this, i + 1, i + 6)&#xD;    swap(this, i + 2, i + 5)&#xD;    swap(this, i + 3, i + 4)&#xD;  }&#xD;  return this&#xD;}&#xD;&#xD;Buffer.prototype.toString = function toString () {&#xD;  var length = this.length | 0&#xD;  if (length === 0) return &apos;&apos;&#xD;  if (arguments.length === 0) return utf8Slice(this, 0, length)&#xD;  return slowToString.apply(this, arguments)&#xD;}&#xD;&#xD;Buffer.prototype.equals = function equals (b) {&#xD;  if (!Buffer.isBuffer(b)) throw new TypeError(&apos;Argument must be a Buffer&apos;)&#xD;  if (this === b) return true&#xD;  return Buffer.compare(this, b) === 0&#xD;}&#xD;&#xD;Buffer.prototype.inspect = function inspect () {&#xD;  var str = &apos;&apos;&#xD;  var max = exports.INSPECT_MAX_BYTES&#xD;  if (this.length &gt; 0) {&#xD;    str = this.toString(&apos;hex&apos;, 0, max).match(/.{2}/g).join(&apos; &apos;)&#xD;    if (this.length &gt; max) str += &apos; ... &apos;&#xD;  }&#xD;  return &apos;&lt;Buffer &apos; + str + &apos;&gt;&apos;&#xD;}&#xD;&#xD;Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {&#xD;  if (!Buffer.isBuffer(target)) {&#xD;    throw new TypeError(&apos;Argument must be a Buffer&apos;)&#xD;  }&#xD;&#xD;  if (start === undefined) {&#xD;    start = 0&#xD;  }&#xD;  if (end === undefined) {&#xD;    end = target ? target.length : 0&#xD;  }&#xD;  if (thisStart === undefined) {&#xD;    thisStart = 0&#xD;  }&#xD;  if (thisEnd === undefined) {&#xD;    thisEnd = this.length&#xD;  }&#xD;&#xD;  if (start &lt; 0 || end &gt; target.length || thisStart &lt; 0 || thisEnd &gt; this.length) {&#xD;    throw new RangeError(&apos;out of range index&apos;)&#xD;  }&#xD;&#xD;  if (thisStart &gt;= thisEnd &amp;&amp; start &gt;= end) {&#xD;    return 0&#xD;  }&#xD;  if (thisStart &gt;= thisEnd) {&#xD;    return -1&#xD;  }&#xD;  if (start &gt;= end) {&#xD;    return 1&#xD;  }&#xD;&#xD;  start &gt;&gt;&gt;= 0&#xD;  end &gt;&gt;&gt;= 0&#xD;  thisStart &gt;&gt;&gt;= 0&#xD;  thisEnd &gt;&gt;&gt;= 0&#xD;&#xD;  if (this === target) return 0&#xD;&#xD;  var x = thisEnd - thisStart&#xD;  var y = end - start&#xD;  var len = Math.min(x, y)&#xD;&#xD;  var thisCopy = this.slice(thisStart, thisEnd)&#xD;  var targetCopy = target.slice(start, end)&#xD;&#xD;  for (var i = 0; i &lt; len; ++i) {&#xD;    if (thisCopy[i] !== targetCopy[i]) {&#xD;      x = thisCopy[i]&#xD;      y = targetCopy[i]&#xD;      break&#xD;    }&#xD;  }&#xD;&#xD;  if (x &lt; y) return -1&#xD;  if (y &lt; x) return 1&#xD;  return 0&#xD;}&#xD;&#xD;// Finds either the first index of `val` in `buffer` at offset &gt;= `byteOffset`,&#xD;// OR the last index of `val` in `buffer` at offset &lt;= `byteOffset`.&#xD;//&#xD;// Arguments:&#xD;// - buffer - a Buffer to search&#xD;// - val - a string, Buffer, or number&#xD;// - byteOffset - an index into `buffer`; will be clamped to an int32&#xD;// - encoding - an optional encoding, relevant is val is a string&#xD;// - dir - true for indexOf, false for lastIndexOf&#xD;function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {&#xD;  // Empty buffer means no match&#xD;  if (buffer.length === 0) return -1&#xD;&#xD;  // Normalize byteOffset&#xD;  if (typeof byteOffset === &apos;string&apos;) {&#xD;    encoding = byteOffset&#xD;    byteOffset = 0&#xD;  } else if (byteOffset &gt; 0x7fffffff) {&#xD;    byteOffset = 0x7fffffff&#xD;  } else if (byteOffset &lt; -0x80000000) {&#xD;    byteOffset = -0x80000000&#xD;  }&#xD;  byteOffset = +byteOffset  // Coerce to Number.&#xD;  if (isNaN(byteOffset)) {&#xD;    // byteOffset: it it&apos;s undefined, null, NaN, "foo", etc, search whole buffer&#xD;    byteOffset = dir ? 0 : (buffer.length - 1)&#xD;  }&#xD;&#xD;  // Normalize byteOffset: negative offsets start from the end of the buffer&#xD;  if (byteOffset &lt; 0) byteOffset = buffer.length + byteOffset&#xD;  if (byteOffset &gt;= buffer.length) {&#xD;    if (dir) return -1&#xD;    else byteOffset = buffer.length - 1&#xD;  } else if (byteOffset &lt; 0) {&#xD;    if (dir) byteOffset = 0&#xD;    else return -1&#xD;  }&#xD;&#xD;  // Normalize val&#xD;  if (typeof val === &apos;string&apos;) {&#xD;    val = Buffer.from(val, encoding)&#xD;  }&#xD;&#xD;  // Finally, search either indexOf (if dir is true) or lastIndexOf&#xD;  if (Buffer.isBuffer(val)) {&#xD;    // Special case: looking for empty string/buffer always fails&#xD;    if (val.length === 0) {&#xD;      return -1&#xD;    }&#xD;    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)&#xD;  } else if (typeof val === &apos;number&apos;) {&#xD;    val = val &amp; 0xFF // Search for a byte value [0-255]&#xD;    if (Buffer.TYPED_ARRAY_SUPPORT &amp;&amp;&#xD;        typeof Uint8Array.prototype.indexOf === &apos;function&apos;) {&#xD;      if (dir) {&#xD;        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)&#xD;      } else {&#xD;        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)&#xD;      }&#xD;    }&#xD;    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)&#xD;  }&#xD;&#xD;  throw new TypeError(&apos;val must be string, number or Buffer&apos;)&#xD;}&#xD;&#xD;function arrayIndexOf (arr, val, byteOffset, encoding, dir) {&#xD;  var indexSize = 1&#xD;  var arrLength = arr.length&#xD;  var valLength = val.length&#xD;&#xD;  if (encoding !== undefined) {&#xD;    encoding = String(encoding).toLowerCase()&#xD;    if (encoding === &apos;ucs2&apos; || encoding === &apos;ucs-2&apos; ||&#xD;        encoding === &apos;utf16le&apos; || encoding === &apos;utf-16le&apos;) {&#xD;      if (arr.length &lt; 2 || val.length &lt; 2) {&#xD;        return -1&#xD;      }&#xD;      indexSize = 2&#xD;      arrLength /= 2&#xD;      valLength /= 2&#xD;      byteOffset /= 2&#xD;    }&#xD;  }&#xD;&#xD;  function read (buf, i) {&#xD;    if (indexSize === 1) {&#xD;      return buf[i]&#xD;    } else {&#xD;      return buf.readUInt16BE(i * indexSize)&#xD;    }&#xD;  }&#xD;&#xD;  var i&#xD;  if (dir) {&#xD;    var foundIndex = -1&#xD;    for (i = byteOffset; i &lt; arrLength; i++) {&#xD;      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {&#xD;        if (foundIndex === -1) foundIndex = i&#xD;        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize&#xD;      } else {&#xD;        if (foundIndex !== -1) i -= i - foundIndex&#xD;        foundIndex = -1&#xD;      }&#xD;    }&#xD;  } else {&#xD;    if (byteOffset + valLength &gt; arrLength) byteOffset = arrLength - valLength&#xD;    for (i = byteOffset; i &gt;= 0; i--) {&#xD;      var found = true&#xD;      for (var j = 0; j &lt; valLength; j++) {&#xD;        if (read(arr, i + j) !== read(val, j)) {&#xD;          found = false&#xD;          break&#xD;        }&#xD;      }&#xD;      if (found) return i&#xD;    }&#xD;  }&#xD;&#xD;  return -1&#xD;}&#xD;&#xD;Buffer.prototype.includes = function includes (val, byteOffset, encoding) {&#xD;  return this.indexOf(val, byteOffset, encoding) !== -1&#xD;}&#xD;&#xD;Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {&#xD;  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)&#xD;}&#xD;&#xD;Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {&#xD;  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)&#xD;}&#xD;&#xD;function hexWrite (buf, string, offset, length) {&#xD;  offset = Number(offset) || 0&#xD;  var remaining = buf.length - offset&#xD;  if (!length) {&#xD;    length = remaining&#xD;  } else {&#xD;    length = Number(length)&#xD;    if (length &gt; remaining) {&#xD;      length = remaining&#xD;    }&#xD;  }&#xD;&#xD;  // must be an even number of digits&#xD;  var strLen = string.length&#xD;  if (strLen % 2 !== 0) throw new TypeError(&apos;Invalid hex string&apos;)&#xD;&#xD;  if (length &gt; strLen / 2) {&#xD;    length = strLen / 2&#xD;  }&#xD;  for (var i = 0; i &lt; length; ++i) {&#xD;    var parsed = parseInt(string.substr(i * 2, 2), 16)&#xD;    if (isNaN(parsed)) return i&#xD;    buf[offset + i] = parsed&#xD;  }&#xD;  return i&#xD;}&#xD;&#xD;function utf8Write (buf, string, offset, length) {&#xD;  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)&#xD;}&#xD;&#xD;function asciiWrite (buf, string, offset, length) {&#xD;  return blitBuffer(asciiToBytes(string), buf, offset, length)&#xD;}&#xD;&#xD;function latin1Write (buf, string, offset, length) {&#xD;  return asciiWrite(buf, string, offset, length)&#xD;}&#xD;&#xD;function base64Write (buf, string, offset, length) {&#xD;  return blitBuffer(base64ToBytes(string), buf, offset, length)&#xD;}&#xD;&#xD;function ucs2Write (buf, string, offset, length) {&#xD;  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)&#xD;}&#xD;&#xD;Buffer.prototype.write = function write (string, offset, length, encoding) {&#xD;  // Buffer#write(string)&#xD;  if (offset === undefined) {&#xD;    encoding = &apos;utf8&apos;&#xD;    length = this.length&#xD;    offset = 0&#xD;  // Buffer#write(string, encoding)&#xD;  } else if (length === undefined &amp;&amp; typeof offset === &apos;string&apos;) {&#xD;    encoding = offset&#xD;    length = this.length&#xD;    offset = 0&#xD;  // Buffer#write(string, offset[, length][, encoding])&#xD;  } else if (isFinite(offset)) {&#xD;    offset = offset | 0&#xD;    if (isFinite(length)) {&#xD;      length = length | 0&#xD;      if (encoding === undefined) encoding = &apos;utf8&apos;&#xD;    } else {&#xD;      encoding = length&#xD;      length = undefined&#xD;    }&#xD;  // legacy write(string, encoding, offset, length) - remove in v0.13&#xD;  } else {&#xD;    throw new Error(&#xD;      &apos;Buffer.write(string, encoding, offset[, length]) is no longer supported&apos;&#xD;    )&#xD;  }&#xD;&#xD;  var remaining = this.length - offset&#xD;  if (length === undefined || length &gt; remaining) length = remaining&#xD;&#xD;  if ((string.length &gt; 0 &amp;&amp; (length &lt; 0 || offset &lt; 0)) || offset &gt; this.length) {&#xD;    throw new RangeError(&apos;Attempt to write outside buffer bounds&apos;)&#xD;  }&#xD;&#xD;  if (!encoding) encoding = &apos;utf8&apos;&#xD;&#xD;  var loweredCase = false&#xD;  for (;;) {&#xD;    switch (encoding) {&#xD;      case &apos;hex&apos;:&#xD;        return hexWrite(this, string, offset, length)&#xD;&#xD;      case &apos;utf8&apos;:&#xD;      case &apos;utf-8&apos;:&#xD;        return utf8Write(this, string, offset, length)&#xD;&#xD;      case &apos;ascii&apos;:&#xD;        return asciiWrite(this, string, offset, length)&#xD;&#xD;      case &apos;latin1&apos;:&#xD;      case &apos;binary&apos;:&#xD;        return latin1Write(this, string, offset, length)&#xD;&#xD;      case &apos;base64&apos;:&#xD;        // Warning: maxLength not taken into account in base64Write&#xD;        return base64Write(this, string, offset, length)&#xD;&#xD;      case &apos;ucs2&apos;:&#xD;      case &apos;ucs-2&apos;:&#xD;      case &apos;utf16le&apos;:&#xD;      case &apos;utf-16le&apos;:&#xD;        return ucs2Write(this, string, offset, length)&#xD;&#xD;      default:&#xD;        if (loweredCase) throw new TypeError(&apos;Unknown encoding: &apos; + encoding)&#xD;        encoding = (&apos;&apos; + encoding).toLowerCase()&#xD;        loweredCase = true&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;Buffer.prototype.toJSON = function toJSON () {&#xD;  return {&#xD;    type: &apos;Buffer&apos;,&#xD;    data: Array.prototype.slice.call(this._arr || this, 0)&#xD;  }&#xD;}&#xD;&#xD;function base64Slice (buf, start, end) {&#xD;  if (start === 0 &amp;&amp; end === buf.length) {&#xD;    return base64.fromByteArray(buf)&#xD;  } else {&#xD;    return base64.fromByteArray(buf.slice(start, end))&#xD;  }&#xD;}&#xD;&#xD;function utf8Slice (buf, start, end) {&#xD;  end = Math.min(buf.length, end)&#xD;  var res = []&#xD;&#xD;  var i = start&#xD;  while (i &lt; end) {&#xD;    var firstByte = buf[i]&#xD;    var codePoint = null&#xD;    var bytesPerSequence = (firstByte &gt; 0xEF) ? 4&#xD;      : (firstByte &gt; 0xDF) ? 3&#xD;      : (firstByte &gt; 0xBF) ? 2&#xD;      : 1&#xD;&#xD;    if (i + bytesPerSequence &lt;= end) {&#xD;      var secondByte, thirdByte, fourthByte, tempCodePoint&#xD;&#xD;      switch (bytesPerSequence) {&#xD;        case 1:&#xD;          if (firstByte &lt; 0x80) {&#xD;            codePoint = firstByte&#xD;          }&#xD;          break&#xD;        case 2:&#xD;          secondByte = buf[i + 1]&#xD;          if ((secondByte &amp; 0xC0) === 0x80) {&#xD;            tempCodePoint = (firstByte &amp; 0x1F) &lt;&lt; 0x6 | (secondByte &amp; 0x3F)&#xD;            if (tempCodePoint &gt; 0x7F) {&#xD;              codePoint = tempCodePoint&#xD;            }&#xD;          }&#xD;          break&#xD;        case 3:&#xD;          secondByte = buf[i + 1]&#xD;          thirdByte = buf[i + 2]&#xD;          if ((secondByte &amp; 0xC0) === 0x80 &amp;&amp; (thirdByte &amp; 0xC0) === 0x80) {&#xD;            tempCodePoint = (firstByte &amp; 0xF) &lt;&lt; 0xC | (secondByte &amp; 0x3F) &lt;&lt; 0x6 | (thirdByte &amp; 0x3F)&#xD;            if (tempCodePoint &gt; 0x7FF &amp;&amp; (tempCodePoint &lt; 0xD800 || tempCodePoint &gt; 0xDFFF)) {&#xD;              codePoint = tempCodePoint&#xD;            }&#xD;          }&#xD;          break&#xD;        case 4:&#xD;          secondByte = buf[i + 1]&#xD;          thirdByte = buf[i + 2]&#xD;          fourthByte = buf[i + 3]&#xD;          if ((secondByte &amp; 0xC0) === 0x80 &amp;&amp; (thirdByte &amp; 0xC0) === 0x80 &amp;&amp; (fourthByte &amp; 0xC0) === 0x80) {&#xD;            tempCodePoint = (firstByte &amp; 0xF) &lt;&lt; 0x12 | (secondByte &amp; 0x3F) &lt;&lt; 0xC | (thirdByte &amp; 0x3F) &lt;&lt; 0x6 | (fourthByte &amp; 0x3F)&#xD;            if (tempCodePoint &gt; 0xFFFF &amp;&amp; tempCodePoint &lt; 0x110000) {&#xD;              codePoint = tempCodePoint&#xD;            }&#xD;          }&#xD;      }&#xD;    }&#xD;&#xD;    if (codePoint === null) {&#xD;      // we did not generate a valid codePoint so insert a&#xD;      // replacement char (U+FFFD) and advance only 1 byte&#xD;      codePoint = 0xFFFD&#xD;      bytesPerSequence = 1&#xD;    } else if (codePoint &gt; 0xFFFF) {&#xD;      // encode to utf16 (surrogate pair dance)&#xD;      codePoint -= 0x10000&#xD;      res.push(codePoint &gt;&gt;&gt; 10 &amp; 0x3FF | 0xD800)&#xD;      codePoint = 0xDC00 | codePoint &amp; 0x3FF&#xD;    }&#xD;&#xD;    res.push(codePoint)&#xD;    i += bytesPerSequence&#xD;  }&#xD;&#xD;  return decodeCodePointsArray(res)&#xD;}&#xD;&#xD;// Based on http://stackoverflow.com/a/22747272/680742, the browser with&#xD;// the lowest limit is Chrome, with 0x10000 args.&#xD;// We go 1 magnitude less, for safety&#xD;var MAX_ARGUMENTS_LENGTH = 0x1000&#xD;&#xD;function decodeCodePointsArray (codePoints) {&#xD;  var len = codePoints.length&#xD;  if (len &lt;= MAX_ARGUMENTS_LENGTH) {&#xD;    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()&#xD;  }&#xD;&#xD;  // Decode in chunks to avoid "call stack size exceeded".&#xD;  var res = &apos;&apos;&#xD;  var i = 0&#xD;  while (i &lt; len) {&#xD;    res += String.fromCharCode.apply(&#xD;      String,&#xD;      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)&#xD;    )&#xD;  }&#xD;  return res&#xD;}&#xD;&#xD;function asciiSlice (buf, start, end) {&#xD;  var ret = &apos;&apos;&#xD;  end = Math.min(buf.length, end)&#xD;&#xD;  for (var i = start; i &lt; end; ++i) {&#xD;    ret += String.fromCharCode(buf[i] &amp; 0x7F)&#xD;  }&#xD;  return ret&#xD;}&#xD;&#xD;function latin1Slice (buf, start, end) {&#xD;  var ret = &apos;&apos;&#xD;  end = Math.min(buf.length, end)&#xD;&#xD;  for (var i = start; i &lt; end; ++i) {&#xD;    ret += String.fromCharCode(buf[i])&#xD;  }&#xD;  return ret&#xD;}&#xD;&#xD;function hexSlice (buf, start, end) {&#xD;  var len = buf.length&#xD;&#xD;  if (!start || start &lt; 0) start = 0&#xD;  if (!end || end &lt; 0 || end &gt; len) end = len&#xD;&#xD;  var out = &apos;&apos;&#xD;  for (var i = start; i &lt; end; ++i) {&#xD;    out += toHex(buf[i])&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;function utf16leSlice (buf, start, end) {&#xD;  var bytes = buf.slice(start, end)&#xD;  var res = &apos;&apos;&#xD;  for (var i = 0; i &lt; bytes.length; i += 2) {&#xD;    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)&#xD;  }&#xD;  return res&#xD;}&#xD;&#xD;Buffer.prototype.slice = function slice (start, end) {&#xD;  var len = this.length&#xD;  start = &#126;&#126;start&#xD;  end = end === undefined ? len : &#126;&#126;end&#xD;&#xD;  if (start &lt; 0) {&#xD;    start += len&#xD;    if (start &lt; 0) start = 0&#xD;  } else if (start &gt; len) {&#xD;    start = len&#xD;  }&#xD;&#xD;  if (end &lt; 0) {&#xD;    end += len&#xD;    if (end &lt; 0) end = 0&#xD;  } else if (end &gt; len) {&#xD;    end = len&#xD;  }&#xD;&#xD;  if (end &lt; start) end = start&#xD;&#xD;  var newBuf&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    newBuf = this.subarray(start, end)&#xD;    newBuf.__proto__ = Buffer.prototype&#xD;  } else {&#xD;    var sliceLen = end - start&#xD;    newBuf = new Buffer(sliceLen, undefined)&#xD;    for (var i = 0; i &lt; sliceLen; ++i) {&#xD;      newBuf[i] = this[i + start]&#xD;    }&#xD;  }&#xD;&#xD;  return newBuf&#xD;}&#xD;&#xD;/*&#xD; * Need to make sure that buffer isn&apos;t trying to write out of bounds.&#xD; */&#xD;function checkOffset (offset, ext, length) {&#xD;  if ((offset % 1) !== 0 || offset &lt; 0) throw new RangeError(&apos;offset is not uint&apos;)&#xD;  if (offset + ext &gt; length) throw new RangeError(&apos;Trying to access beyond buffer length&apos;)&#xD;}&#xD;&#xD;Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) checkOffset(offset, byteLength, this.length)&#xD;&#xD;  var val = this[offset]&#xD;  var mul = 1&#xD;  var i = 0&#xD;  while (++i &lt; byteLength &amp;&amp; (mul *= 0x100)) {&#xD;    val += this[offset + i] * mul&#xD;  }&#xD;&#xD;  return val&#xD;}&#xD;&#xD;Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) {&#xD;    checkOffset(offset, byteLength, this.length)&#xD;  }&#xD;&#xD;  var val = this[offset + --byteLength]&#xD;  var mul = 1&#xD;  while (byteLength &gt; 0 &amp;&amp; (mul *= 0x100)) {&#xD;    val += this[offset + --byteLength] * mul&#xD;  }&#xD;&#xD;  return val&#xD;}&#xD;&#xD;Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 1, this.length)&#xD;  return this[offset]&#xD;}&#xD;&#xD;Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 2, this.length)&#xD;  return this[offset] | (this[offset + 1] &lt;&lt; 8)&#xD;}&#xD;&#xD;Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 2, this.length)&#xD;  return (this[offset] &lt;&lt; 8) | this[offset + 1]&#xD;}&#xD;&#xD;Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;&#xD;  return ((this[offset]) |&#xD;      (this[offset + 1] &lt;&lt; 8) |&#xD;      (this[offset + 2] &lt;&lt; 16)) +&#xD;      (this[offset + 3] * 0x1000000)&#xD;}&#xD;&#xD;Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;&#xD;  return (this[offset] * 0x1000000) +&#xD;    ((this[offset + 1] &lt;&lt; 16) |&#xD;    (this[offset + 2] &lt;&lt; 8) |&#xD;    this[offset + 3])&#xD;}&#xD;&#xD;Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) checkOffset(offset, byteLength, this.length)&#xD;&#xD;  var val = this[offset]&#xD;  var mul = 1&#xD;  var i = 0&#xD;  while (++i &lt; byteLength &amp;&amp; (mul *= 0x100)) {&#xD;    val += this[offset + i] * mul&#xD;  }&#xD;  mul *= 0x80&#xD;&#xD;  if (val &gt;= mul) val -= Math.pow(2, 8 * byteLength)&#xD;&#xD;  return val&#xD;}&#xD;&#xD;Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) checkOffset(offset, byteLength, this.length)&#xD;&#xD;  var i = byteLength&#xD;  var mul = 1&#xD;  var val = this[offset + --i]&#xD;  while (i &gt; 0 &amp;&amp; (mul *= 0x100)) {&#xD;    val += this[offset + --i] * mul&#xD;  }&#xD;  mul *= 0x80&#xD;&#xD;  if (val &gt;= mul) val -= Math.pow(2, 8 * byteLength)&#xD;&#xD;  return val&#xD;}&#xD;&#xD;Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 1, this.length)&#xD;  if (!(this[offset] &amp; 0x80)) return (this[offset])&#xD;  return ((0xff - this[offset] + 1) * -1)&#xD;}&#xD;&#xD;Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 2, this.length)&#xD;  var val = this[offset] | (this[offset + 1] &lt;&lt; 8)&#xD;  return (val &amp; 0x8000) ? val | 0xFFFF0000 : val&#xD;}&#xD;&#xD;Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 2, this.length)&#xD;  var val = this[offset + 1] | (this[offset] &lt;&lt; 8)&#xD;  return (val &amp; 0x8000) ? val | 0xFFFF0000 : val&#xD;}&#xD;&#xD;Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;&#xD;  return (this[offset]) |&#xD;    (this[offset + 1] &lt;&lt; 8) |&#xD;    (this[offset + 2] &lt;&lt; 16) |&#xD;    (this[offset + 3] &lt;&lt; 24)&#xD;}&#xD;&#xD;Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;&#xD;  return (this[offset] &lt;&lt; 24) |&#xD;    (this[offset + 1] &lt;&lt; 16) |&#xD;    (this[offset + 2] &lt;&lt; 8) |&#xD;    (this[offset + 3])&#xD;}&#xD;&#xD;Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;  return ieee754.read(this, offset, true, 23, 4)&#xD;}&#xD;&#xD;Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 4, this.length)&#xD;  return ieee754.read(this, offset, false, 23, 4)&#xD;}&#xD;&#xD;Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 8, this.length)&#xD;  return ieee754.read(this, offset, true, 52, 8)&#xD;}&#xD;&#xD;Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {&#xD;  if (!noAssert) checkOffset(offset, 8, this.length)&#xD;  return ieee754.read(this, offset, false, 52, 8)&#xD;}&#xD;&#xD;function checkInt (buf, value, offset, ext, max, min) {&#xD;  if (!Buffer.isBuffer(buf)) throw new TypeError(&apos;"buffer" argument must be a Buffer instance&apos;)&#xD;  if (value &gt; max || value &lt; min) throw new RangeError(&apos;"value" argument is out of bounds&apos;)&#xD;  if (offset + ext &gt; buf.length) throw new RangeError(&apos;Index out of range&apos;)&#xD;}&#xD;&#xD;Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) {&#xD;    var maxBytes = Math.pow(2, 8 * byteLength) - 1&#xD;    checkInt(this, value, offset, byteLength, maxBytes, 0)&#xD;  }&#xD;&#xD;  var mul = 1&#xD;  var i = 0&#xD;  this[offset] = value &amp; 0xFF&#xD;  while (++i &lt; byteLength &amp;&amp; (mul *= 0x100)) {&#xD;    this[offset + i] = (value / mul) &amp; 0xFF&#xD;  }&#xD;&#xD;  return offset + byteLength&#xD;}&#xD;&#xD;Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  byteLength = byteLength | 0&#xD;  if (!noAssert) {&#xD;    var maxBytes = Math.pow(2, 8 * byteLength) - 1&#xD;    checkInt(this, value, offset, byteLength, maxBytes, 0)&#xD;  }&#xD;&#xD;  var i = byteLength - 1&#xD;  var mul = 1&#xD;  this[offset + i] = value &amp; 0xFF&#xD;  while (--i &gt;= 0 &amp;&amp; (mul *= 0x100)) {&#xD;    this[offset + i] = (value / mul) &amp; 0xFF&#xD;  }&#xD;&#xD;  return offset + byteLength&#xD;}&#xD;&#xD;Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)&#xD;  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)&#xD;  this[offset] = (value &amp; 0xff)&#xD;  return offset + 1&#xD;}&#xD;&#xD;function objectWriteUInt16 (buf, value, offset, littleEndian) {&#xD;  if (value &lt; 0) value = 0xffff + value + 1&#xD;  for (var i = 0, j = Math.min(buf.length - offset, 2); i &lt; j; ++i) {&#xD;    buf[offset + i] = (value &amp; (0xff &lt;&lt; (8 * (littleEndian ? i : 1 - i)))) &gt;&gt;&gt;&#xD;      (littleEndian ? i : 1 - i) * 8&#xD;  }&#xD;}&#xD;&#xD;Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &amp; 0xff)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 8)&#xD;  } else {&#xD;    objectWriteUInt16(this, value, offset, true)&#xD;  }&#xD;  return offset + 2&#xD;}&#xD;&#xD;Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &gt;&gt;&gt; 8)&#xD;    this[offset + 1] = (value &amp; 0xff)&#xD;  } else {&#xD;    objectWriteUInt16(this, value, offset, false)&#xD;  }&#xD;  return offset + 2&#xD;}&#xD;&#xD;function objectWriteUInt32 (buf, value, offset, littleEndian) {&#xD;  if (value &lt; 0) value = 0xffffffff + value + 1&#xD;  for (var i = 0, j = Math.min(buf.length - offset, 4); i &lt; j; ++i) {&#xD;    buf[offset + i] = (value &gt;&gt;&gt; (littleEndian ? i : 3 - i) * 8) &amp; 0xff&#xD;  }&#xD;}&#xD;&#xD;Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset + 3] = (value &gt;&gt;&gt; 24)&#xD;    this[offset + 2] = (value &gt;&gt;&gt; 16)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 8)&#xD;    this[offset] = (value &amp; 0xff)&#xD;  } else {&#xD;    objectWriteUInt32(this, value, offset, true)&#xD;  }&#xD;  return offset + 4&#xD;}&#xD;&#xD;Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &gt;&gt;&gt; 24)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 16)&#xD;    this[offset + 2] = (value &gt;&gt;&gt; 8)&#xD;    this[offset + 3] = (value &amp; 0xff)&#xD;  } else {&#xD;    objectWriteUInt32(this, value, offset, false)&#xD;  }&#xD;  return offset + 4&#xD;}&#xD;&#xD;Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) {&#xD;    var limit = Math.pow(2, 8 * byteLength - 1)&#xD;&#xD;    checkInt(this, value, offset, byteLength, limit - 1, -limit)&#xD;  }&#xD;&#xD;  var i = 0&#xD;  var mul = 1&#xD;  var sub = 0&#xD;  this[offset] = value &amp; 0xFF&#xD;  while (++i &lt; byteLength &amp;&amp; (mul *= 0x100)) {&#xD;    if (value &lt; 0 &amp;&amp; sub === 0 &amp;&amp; this[offset + i - 1] !== 0) {&#xD;      sub = 1&#xD;    }&#xD;    this[offset + i] = ((value / mul) &gt;&gt; 0) - sub &amp; 0xFF&#xD;  }&#xD;&#xD;  return offset + byteLength&#xD;}&#xD;&#xD;Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) {&#xD;    var limit = Math.pow(2, 8 * byteLength - 1)&#xD;&#xD;    checkInt(this, value, offset, byteLength, limit - 1, -limit)&#xD;  }&#xD;&#xD;  var i = byteLength - 1&#xD;  var mul = 1&#xD;  var sub = 0&#xD;  this[offset + i] = value &amp; 0xFF&#xD;  while (--i &gt;= 0 &amp;&amp; (mul *= 0x100)) {&#xD;    if (value &lt; 0 &amp;&amp; sub === 0 &amp;&amp; this[offset + i + 1] !== 0) {&#xD;      sub = 1&#xD;    }&#xD;    this[offset + i] = ((value / mul) &gt;&gt; 0) - sub &amp; 0xFF&#xD;  }&#xD;&#xD;  return offset + byteLength&#xD;}&#xD;&#xD;Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)&#xD;  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)&#xD;  if (value &lt; 0) value = 0xff + value + 1&#xD;  this[offset] = (value &amp; 0xff)&#xD;  return offset + 1&#xD;}&#xD;&#xD;Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &amp; 0xff)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 8)&#xD;  } else {&#xD;    objectWriteUInt16(this, value, offset, true)&#xD;  }&#xD;  return offset + 2&#xD;}&#xD;&#xD;Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &gt;&gt;&gt; 8)&#xD;    this[offset + 1] = (value &amp; 0xff)&#xD;  } else {&#xD;    objectWriteUInt16(this, value, offset, false)&#xD;  }&#xD;  return offset + 2&#xD;}&#xD;&#xD;Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &amp; 0xff)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 8)&#xD;    this[offset + 2] = (value &gt;&gt;&gt; 16)&#xD;    this[offset + 3] = (value &gt;&gt;&gt; 24)&#xD;  } else {&#xD;    objectWriteUInt32(this, value, offset, true)&#xD;  }&#xD;  return offset + 4&#xD;}&#xD;&#xD;Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {&#xD;  value = +value&#xD;  offset = offset | 0&#xD;  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)&#xD;  if (value &lt; 0) value = 0xffffffff + value + 1&#xD;  if (Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    this[offset] = (value &gt;&gt;&gt; 24)&#xD;    this[offset + 1] = (value &gt;&gt;&gt; 16)&#xD;    this[offset + 2] = (value &gt;&gt;&gt; 8)&#xD;    this[offset + 3] = (value &amp; 0xff)&#xD;  } else {&#xD;    objectWriteUInt32(this, value, offset, false)&#xD;  }&#xD;  return offset + 4&#xD;}&#xD;&#xD;function checkIEEE754 (buf, value, offset, ext, max, min) {&#xD;  if (offset + ext &gt; buf.length) throw new RangeError(&apos;Index out of range&apos;)&#xD;  if (offset &lt; 0) throw new RangeError(&apos;Index out of range&apos;)&#xD;}&#xD;&#xD;function writeFloat (buf, value, offset, littleEndian, noAssert) {&#xD;  if (!noAssert) {&#xD;    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)&#xD;  }&#xD;  ieee754.write(buf, value, offset, littleEndian, 23, 4)&#xD;  return offset + 4&#xD;}&#xD;&#xD;Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {&#xD;  return writeFloat(this, value, offset, true, noAssert)&#xD;}&#xD;&#xD;Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {&#xD;  return writeFloat(this, value, offset, false, noAssert)&#xD;}&#xD;&#xD;function writeDouble (buf, value, offset, littleEndian, noAssert) {&#xD;  if (!noAssert) {&#xD;    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)&#xD;  }&#xD;  ieee754.write(buf, value, offset, littleEndian, 52, 8)&#xD;  return offset + 8&#xD;}&#xD;&#xD;Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {&#xD;  return writeDouble(this, value, offset, true, noAssert)&#xD;}&#xD;&#xD;Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {&#xD;  return writeDouble(this, value, offset, false, noAssert)&#xD;}&#xD;&#xD;// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)&#xD;Buffer.prototype.copy = function copy (target, targetStart, start, end) {&#xD;  if (!start) start = 0&#xD;  if (!end &amp;&amp; end !== 0) end = this.length&#xD;  if (targetStart &gt;= target.length) targetStart = target.length&#xD;  if (!targetStart) targetStart = 0&#xD;  if (end &gt; 0 &amp;&amp; end &lt; start) end = start&#xD;&#xD;  // Copy 0 bytes; we&apos;re done&#xD;  if (end === start) return 0&#xD;  if (target.length === 0 || this.length === 0) return 0&#xD;&#xD;  // Fatal error conditions&#xD;  if (targetStart &lt; 0) {&#xD;    throw new RangeError(&apos;targetStart out of bounds&apos;)&#xD;  }&#xD;  if (start &lt; 0 || start &gt;= this.length) throw new RangeError(&apos;sourceStart out of bounds&apos;)&#xD;  if (end &lt; 0) throw new RangeError(&apos;sourceEnd out of bounds&apos;)&#xD;&#xD;  // Are we oob?&#xD;  if (end &gt; this.length) end = this.length&#xD;  if (target.length - targetStart &lt; end - start) {&#xD;    end = target.length - targetStart + start&#xD;  }&#xD;&#xD;  var len = end - start&#xD;  var i&#xD;&#xD;  if (this === target &amp;&amp; start &lt; targetStart &amp;&amp; targetStart &lt; end) {&#xD;    // descending copy from end&#xD;    for (i = len - 1; i &gt;= 0; --i) {&#xD;      target[i + targetStart] = this[i + start]&#xD;    }&#xD;  } else if (len &lt; 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {&#xD;    // ascending copy from start&#xD;    for (i = 0; i &lt; len; ++i) {&#xD;      target[i + targetStart] = this[i + start]&#xD;    }&#xD;  } else {&#xD;    Uint8Array.prototype.set.call(&#xD;      target,&#xD;      this.subarray(start, start + len),&#xD;      targetStart&#xD;    )&#xD;  }&#xD;&#xD;  return len&#xD;}&#xD;&#xD;// Usage:&#xD;//    buffer.fill(number[, offset[, end]])&#xD;//    buffer.fill(buffer[, offset[, end]])&#xD;//    buffer.fill(string[, offset[, end]][, encoding])&#xD;Buffer.prototype.fill = function fill (val, start, end, encoding) {&#xD;  // Handle string cases:&#xD;  if (typeof val === &apos;string&apos;) {&#xD;    if (typeof start === &apos;string&apos;) {&#xD;      encoding = start&#xD;      start = 0&#xD;      end = this.length&#xD;    } else if (typeof end === &apos;string&apos;) {&#xD;      encoding = end&#xD;      end = this.length&#xD;    }&#xD;    if (val.length === 1) {&#xD;      var code = val.charCodeAt(0)&#xD;      if (code &lt; 256) {&#xD;        val = code&#xD;      }&#xD;    }&#xD;    if (encoding !== undefined &amp;&amp; typeof encoding !== &apos;string&apos;) {&#xD;      throw new TypeError(&apos;encoding must be a string&apos;)&#xD;    }&#xD;    if (typeof encoding === &apos;string&apos; &amp;&amp; !Buffer.isEncoding(encoding)) {&#xD;      throw new TypeError(&apos;Unknown encoding: &apos; + encoding)&#xD;    }&#xD;  } else if (typeof val === &apos;number&apos;) {&#xD;    val = val &amp; 255&#xD;  }&#xD;&#xD;  // Invalid ranges are not set to a default, so can range check early.&#xD;  if (start &lt; 0 || this.length &lt; start || this.length &lt; end) {&#xD;    throw new RangeError(&apos;Out of range index&apos;)&#xD;  }&#xD;&#xD;  if (end &lt;= start) {&#xD;    return this&#xD;  }&#xD;&#xD;  start = start &gt;&gt;&gt; 0&#xD;  end = end === undefined ? this.length : end &gt;&gt;&gt; 0&#xD;&#xD;  if (!val) val = 0&#xD;&#xD;  var i&#xD;  if (typeof val === &apos;number&apos;) {&#xD;    for (i = start; i &lt; end; ++i) {&#xD;      this[i] = val&#xD;    }&#xD;  } else {&#xD;    var bytes = Buffer.isBuffer(val)&#xD;      ? val&#xD;      : utf8ToBytes(new Buffer(val, encoding).toString())&#xD;    var len = bytes.length&#xD;    for (i = 0; i &lt; end - start; ++i) {&#xD;      this[i + start] = bytes[i % len]&#xD;    }&#xD;  }&#xD;&#xD;  return this&#xD;}&#xD;&#xD;// HELPER FUNCTIONS&#xD;// ================&#xD;&#xD;var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g&#xD;&#xD;function base64clean (str) {&#xD;  // Node strips out invalid characters like \n and \t from the string, base64-js does not&#xD;  str = stringtrim(str).replace(INVALID_BASE64_RE, &apos;&apos;)&#xD;  // Node converts strings with length &lt; 2 to &apos;&apos;&#xD;  if (str.length &lt; 2) return &apos;&apos;&#xD;  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not&#xD;  while (str.length % 4 !== 0) {&#xD;    str = str + &apos;=&apos;&#xD;  }&#xD;  return str&#xD;}&#xD;&#xD;function stringtrim (str) {&#xD;  if (str.trim) return str.trim()&#xD;  return str.replace(/^\s+|\s+$/g, &apos;&apos;)&#xD;}&#xD;&#xD;function toHex (n) {&#xD;  if (n &lt; 16) return &apos;0&apos; + n.toString(16)&#xD;  return n.toString(16)&#xD;}&#xD;&#xD;function utf8ToBytes (string, units) {&#xD;  units = units || Infinity&#xD;  var codePoint&#xD;  var length = string.length&#xD;  var leadSurrogate = null&#xD;  var bytes = []&#xD;&#xD;  for (var i = 0; i &lt; length; ++i) {&#xD;    codePoint = string.charCodeAt(i)&#xD;&#xD;    // is surrogate component&#xD;    if (codePoint &gt; 0xD7FF &amp;&amp; codePoint &lt; 0xE000) {&#xD;      // last char was a lead&#xD;      if (!leadSurrogate) {&#xD;        // no lead yet&#xD;        if (codePoint &gt; 0xDBFF) {&#xD;          // unexpected trail&#xD;          if ((units -= 3) &gt; -1) bytes.push(0xEF, 0xBF, 0xBD)&#xD;          continue&#xD;        } else if (i + 1 === length) {&#xD;          // unpaired lead&#xD;          if ((units -= 3) &gt; -1) bytes.push(0xEF, 0xBF, 0xBD)&#xD;          continue&#xD;        }&#xD;&#xD;        // valid lead&#xD;        leadSurrogate = codePoint&#xD;&#xD;        continue&#xD;      }&#xD;&#xD;      // 2 leads in a row&#xD;      if (codePoint &lt; 0xDC00) {&#xD;        if ((units -= 3) &gt; -1) bytes.push(0xEF, 0xBF, 0xBD)&#xD;        leadSurrogate = codePoint&#xD;        continue&#xD;      }&#xD;&#xD;      // valid surrogate pair&#xD;      codePoint = (leadSurrogate - 0xD800 &lt;&lt; 10 | codePoint - 0xDC00) + 0x10000&#xD;    } else if (leadSurrogate) {&#xD;      // valid bmp char, but last char was a lead&#xD;      if ((units -= 3) &gt; -1) bytes.push(0xEF, 0xBF, 0xBD)&#xD;    }&#xD;&#xD;    leadSurrogate = null&#xD;&#xD;    // encode utf8&#xD;    if (codePoint &lt; 0x80) {&#xD;      if ((units -= 1) &lt; 0) break&#xD;      bytes.push(codePoint)&#xD;    } else if (codePoint &lt; 0x800) {&#xD;      if ((units -= 2) &lt; 0) break&#xD;      bytes.push(&#xD;        codePoint &gt;&gt; 0x6 | 0xC0,&#xD;        codePoint &amp; 0x3F | 0x80&#xD;      )&#xD;    } else if (codePoint &lt; 0x10000) {&#xD;      if ((units -= 3) &lt; 0) break&#xD;      bytes.push(&#xD;        codePoint &gt;&gt; 0xC | 0xE0,&#xD;        codePoint &gt;&gt; 0x6 &amp; 0x3F | 0x80,&#xD;        codePoint &amp; 0x3F | 0x80&#xD;      )&#xD;    } else if (codePoint &lt; 0x110000) {&#xD;      if ((units -= 4) &lt; 0) break&#xD;      bytes.push(&#xD;        codePoint &gt;&gt; 0x12 | 0xF0,&#xD;        codePoint &gt;&gt; 0xC &amp; 0x3F | 0x80,&#xD;        codePoint &gt;&gt; 0x6 &amp; 0x3F | 0x80,&#xD;        codePoint &amp; 0x3F | 0x80&#xD;      )&#xD;    } else {&#xD;      throw new Error(&apos;Invalid code point&apos;)&#xD;    }&#xD;  }&#xD;&#xD;  return bytes&#xD;}&#xD;&#xD;function asciiToBytes (str) {&#xD;  var byteArray = []&#xD;  for (var i = 0; i &lt; str.length; ++i) {&#xD;    // Node&apos;s code seems to be doing this and not &amp; 0x7F..&#xD;    byteArray.push(str.charCodeAt(i) &amp; 0xFF)&#xD;  }&#xD;  return byteArray&#xD;}&#xD;&#xD;function utf16leToBytes (str, units) {&#xD;  var c, hi, lo&#xD;  var byteArray = []&#xD;  for (var i = 0; i &lt; str.length; ++i) {&#xD;    if ((units -= 2) &lt; 0) break&#xD;&#xD;    c = str.charCodeAt(i)&#xD;    hi = c &gt;&gt; 8&#xD;    lo = c % 256&#xD;    byteArray.push(lo)&#xD;    byteArray.push(hi)&#xD;  }&#xD;&#xD;  return byteArray&#xD;}&#xD;&#xD;function base64ToBytes (str) {&#xD;  return base64.toByteArray(base64clean(str))&#xD;}&#xD;&#xD;function blitBuffer (src, dst, offset, length) {&#xD;  for (var i = 0; i &lt; length; ++i) {&#xD;    if ((i + offset &gt;= dst.length) || (i &gt;= src.length)) break&#xD;    dst[i + offset] = src[i]&#xD;  }&#xD;  return i&#xD;}&#xD;&#xD;function isnan (val) {&#xD;  return val !== val // eslint-disable-line no-self-compare&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 2 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;if (true) {&#xD;  var REACT_ELEMENT_TYPE = (typeof Symbol === &apos;function&apos; &amp;&amp;&#xD;    Symbol.for &amp;&amp;&#xD;    Symbol.for(&apos;react.element&apos;)) ||&#xD;    0xeac7;&#xD;&#xD;  var isValidElement = function(object) {&#xD;    return typeof object === &apos;object&apos; &amp;&amp;&#xD;      object !== null &amp;&amp;&#xD;      object.$$typeof === REACT_ELEMENT_TYPE;&#xD;  };&#xD;&#xD;  // By explicitly using `prop-types` you are opting into new development behavior.&#xD;  // http://fb.me/prop-types-in-prod&#xD;  var throwOnDirectAccess = true;&#xD;  module.exports = __webpack_require__(148)(isValidElement, throwOnDirectAccess);&#xD;} else {&#xD;  // By explicitly using `prop-types` you are opting into new production behavior.&#xD;  // http://fb.me/prop-types-in-prod&#xD;  module.exports = require(&apos;./factoryWithThrowingShims&apos;)();&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 3 */,&#xD;/* 4 */,&#xD;/* 5 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;if (typeof Object.create === &apos;function&apos;) {&#xD;  // implementation from standard node.js &apos;util&apos; module&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    ctor.prototype = Object.create(superCtor.prototype, {&#xD;      constructor: {&#xD;        value: ctor,&#xD;        enumerable: false,&#xD;        writable: true,&#xD;        configurable: true&#xD;      }&#xD;    });&#xD;  };&#xD;} else {&#xD;  // old school shim for old browsers&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    var TempCtor = function () {}&#xD;    TempCtor.prototype = superCtor.prototype&#xD;    ctor.prototype = new TempCtor()&#xD;    ctor.prototype.constructor = ctor&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 6 */,&#xD;/* 7 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;/*&#xD;	MIT License http://www.opensource.org/licenses/mit-license.php&#xD;	Author Tobias Koppers @sokra&#xD;*/&#xD;// css base code, injected by the css-loader&#xD;module.exports = function(useSourceMap) {&#xD;	var list = [];&#xD;&#xD;	// return the list of modules as css string&#xD;	list.toString = function toString() {&#xD;		return this.map(function (item) {&#xD;			var content = cssWithMappingToString(item, useSourceMap);&#xD;			if(item[2]) {&#xD;				return "@media " + item[2] + "{" + content + "}";&#xD;			} else {&#xD;				return content;&#xD;			}&#xD;		}).join("");&#xD;	};&#xD;&#xD;	// import a list of modules into the list&#xD;	list.i = function(modules, mediaQuery) {&#xD;		if(typeof modules === "string")&#xD;			modules = [[null, modules, ""]];&#xD;		var alreadyImportedModules = {};&#xD;		for(var i = 0; i &lt; this.length; i++) {&#xD;			var id = this[i][0];&#xD;			if(typeof id === "number")&#xD;				alreadyImportedModules[id] = true;&#xD;		}&#xD;		for(i = 0; i &lt; modules.length; i++) {&#xD;			var item = modules[i];&#xD;			// skip already imported module&#xD;			// this implementation is not 100% perfect for weird media query combinations&#xD;			//  when a module is imported multiple times with different media queries.&#xD;			//  I hope this will never occur (Hey this way we have smaller bundles)&#xD;			if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {&#xD;				if(mediaQuery &amp;&amp; !item[2]) {&#xD;					item[2] = mediaQuery;&#xD;				} else if(mediaQuery) {&#xD;					item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";&#xD;				}&#xD;				list.push(item);&#xD;			}&#xD;		}&#xD;	};&#xD;	return list;&#xD;};&#xD;&#xD;function cssWithMappingToString(item, useSourceMap) {&#xD;	var content = item[1] || &apos;&apos;;&#xD;	var cssMapping = item[3];&#xD;	if (!cssMapping) {&#xD;		return content;&#xD;	}&#xD;&#xD;	if (useSourceMap &amp;&amp; typeof btoa === &apos;function&apos;) {&#xD;		var sourceMapping = toComment(cssMapping);&#xD;		var sourceURLs = cssMapping.sources.map(function (source) {&#xD;			return &apos;/*# sourceURL=&apos; + cssMapping.sourceRoot + source + &apos; */&apos;&#xD;		});&#xD;&#xD;		return [content].concat(sourceURLs).concat([sourceMapping]).join(&apos;\n&apos;);&#xD;	}&#xD;&#xD;	return [content].join(&apos;\n&apos;);&#xD;}&#xD;&#xD;// Adapted from convert-source-map (MIT)&#xD;function toComment(sourceMap) {&#xD;	// eslint-disable-next-line no-undef&#xD;	var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));&#xD;	var data = &apos;sourceMappingURL=data:application/json;charset=utf-8;base64,&apos; + base64;&#xD;&#xD;	return &apos;/*# &apos; + data + &apos; */&apos;;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 8 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/*&#xD;	MIT License http://www.opensource.org/licenses/mit-license.php&#xD;	Author Tobias Koppers @sokra&#xD;*/&#xD;var stylesInDom = {},&#xD;	memoize = function(fn) {&#xD;		var memo;&#xD;		return function () {&#xD;			if (typeof memo === "undefined") memo = fn.apply(this, arguments);&#xD;			return memo;&#xD;		};&#xD;	},&#xD;	isOldIE = memoize(function() {&#xD;		// Test for IE &lt;= 9 as proposed by Browserhacks&#xD;		// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805&#xD;		// Tests for existence of standard globals is to allow style-loader &#xD;		// to operate correctly into non-standard environments&#xD;		// @see https://github.com/webpack-contrib/style-loader/issues/177&#xD;		return window &amp;&amp; document &amp;&amp; document.all &amp;&amp; !window.atob;&#xD;	}),&#xD;	getElement = (function(fn) {&#xD;		var memo = {};&#xD;		return function(selector) {&#xD;			if (typeof memo[selector] === "undefined") {&#xD;				memo[selector] = fn.call(this, selector);&#xD;			}&#xD;			return memo[selector]&#xD;		};&#xD;	})(function (styleTarget) {&#xD;		return document.querySelector(styleTarget)&#xD;	}),&#xD;	singletonElement = null,&#xD;	singletonCounter = 0,&#xD;	styleElementsInsertedAtTop = [],&#xD;	fixUrls = __webpack_require__(517);&#xD;&#xD;module.exports = function(list, options) {&#xD;	if(typeof DEBUG !== "undefined" &amp;&amp; DEBUG) {&#xD;		if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");&#xD;	}&#xD;&#xD;	options = options || {};&#xD;	options.attrs = typeof options.attrs === "object" ? options.attrs : {};&#xD;&#xD;	// Force single-tag solution on IE6-9, which has a hard limit on the # of &lt;style&gt;&#xD;	// tags it will allow on a page&#xD;	if (typeof options.singleton === "undefined") options.singleton = isOldIE();&#xD;&#xD;	// By default, add &lt;style&gt; tags to the &lt;head&gt; element&#xD;	if (typeof options.insertInto === "undefined") options.insertInto = "head";&#xD;&#xD;	// By default, add &lt;style&gt; tags to the bottom of the target&#xD;	if (typeof options.insertAt === "undefined") options.insertAt = "bottom";&#xD;&#xD;	var styles = listToStyles(list, options);&#xD;	addStylesToDom(styles, options);&#xD;&#xD;	return function update(newList) {&#xD;		var mayRemove = [];&#xD;		for(var i = 0; i &lt; styles.length; i++) {&#xD;			var item = styles[i];&#xD;			var domStyle = stylesInDom[item.id];&#xD;			domStyle.refs--;&#xD;			mayRemove.push(domStyle);&#xD;		}&#xD;		if(newList) {&#xD;			var newStyles = listToStyles(newList, options);&#xD;			addStylesToDom(newStyles, options);&#xD;		}&#xD;		for(var i = 0; i &lt; mayRemove.length; i++) {&#xD;			var domStyle = mayRemove[i];&#xD;			if(domStyle.refs === 0) {&#xD;				for(var j = 0; j &lt; domStyle.parts.length; j++)&#xD;					domStyle.parts[j]();&#xD;				delete stylesInDom[domStyle.id];&#xD;			}&#xD;		}&#xD;	};&#xD;};&#xD;&#xD;function addStylesToDom(styles, options) {&#xD;	for(var i = 0; i &lt; styles.length; i++) {&#xD;		var item = styles[i];&#xD;		var domStyle = stylesInDom[item.id];&#xD;		if(domStyle) {&#xD;			domStyle.refs++;&#xD;			for(var j = 0; j &lt; domStyle.parts.length; j++) {&#xD;				domStyle.parts[j](item.parts[j]);&#xD;			}&#xD;			for(; j &lt; item.parts.length; j++) {&#xD;				domStyle.parts.push(addStyle(item.parts[j], options));&#xD;			}&#xD;		} else {&#xD;			var parts = [];&#xD;			for(var j = 0; j &lt; item.parts.length; j++) {&#xD;				parts.push(addStyle(item.parts[j], options));&#xD;			}&#xD;			stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};&#xD;		}&#xD;	}&#xD;}&#xD;&#xD;function listToStyles(list, options) {&#xD;	var styles = [];&#xD;	var newStyles = {};&#xD;	for(var i = 0; i &lt; list.length; i++) {&#xD;		var item = list[i];&#xD;		var id = options.base ? item[0] + options.base : item[0];&#xD;		var css = item[1];&#xD;		var media = item[2];&#xD;		var sourceMap = item[3];&#xD;		var part = {css: css, media: media, sourceMap: sourceMap};&#xD;		if(!newStyles[id])&#xD;			styles.push(newStyles[id] = {id: id, parts: [part]});&#xD;		else&#xD;			newStyles[id].parts.push(part);&#xD;	}&#xD;	return styles;&#xD;}&#xD;&#xD;function insertStyleElement(options, styleElement) {&#xD;	var styleTarget = getElement(options.insertInto)&#xD;	if (!styleTarget) {&#xD;		throw new Error("Couldn&apos;t find a style target. This probably means that the value for the &apos;insertInto&apos; parameter is invalid.");&#xD;	}&#xD;	var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];&#xD;	if (options.insertAt === "top") {&#xD;		if(!lastStyleElementInsertedAtTop) {&#xD;			styleTarget.insertBefore(styleElement, styleTarget.firstChild);&#xD;		} else if(lastStyleElementInsertedAtTop.nextSibling) {&#xD;			styleTarget.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);&#xD;		} else {&#xD;			styleTarget.appendChild(styleElement);&#xD;		}&#xD;		styleElementsInsertedAtTop.push(styleElement);&#xD;	} else if (options.insertAt === "bottom") {&#xD;		styleTarget.appendChild(styleElement);&#xD;	} else {&#xD;		throw new Error("Invalid value for parameter &apos;insertAt&apos;. Must be &apos;top&apos; or &apos;bottom&apos;.");&#xD;	}&#xD;}&#xD;&#xD;function removeStyleElement(styleElement) {&#xD;	styleElement.parentNode.removeChild(styleElement);&#xD;	var idx = styleElementsInsertedAtTop.indexOf(styleElement);&#xD;	if(idx &gt;= 0) {&#xD;		styleElementsInsertedAtTop.splice(idx, 1);&#xD;	}&#xD;}&#xD;&#xD;function createStyleElement(options) {&#xD;	var styleElement = document.createElement("style");&#xD;	options.attrs.type = "text/css";&#xD;&#xD;	attachTagAttrs(styleElement, options.attrs);&#xD;	insertStyleElement(options, styleElement);&#xD;	return styleElement;&#xD;}&#xD;&#xD;function createLinkElement(options) {&#xD;	var linkElement = document.createElement("link");&#xD;	options.attrs.type = "text/css";&#xD;	options.attrs.rel = "stylesheet";&#xD;&#xD;	attachTagAttrs(linkElement, options.attrs);&#xD;	insertStyleElement(options, linkElement);&#xD;	return linkElement;&#xD;}&#xD;&#xD;function attachTagAttrs(element, attrs) {&#xD;	Object.keys(attrs).forEach(function (key) {&#xD;		element.setAttribute(key, attrs[key]);&#xD;	});&#xD;}&#xD;&#xD;function addStyle(obj, options) {&#xD;	var styleElement, update, remove, transformResult;&#xD;&#xD;	// If a transform function was defined, run it on the css&#xD;	if (options.transform &amp;&amp; obj.css) {&#xD;	    transformResult = options.transform(obj.css);&#xD;	    &#xD;	    if (transformResult) {&#xD;	    	// If transform returns a value, use that instead of the original css.&#xD;	    	// This allows running runtime transformations on the css.&#xD;	    	obj.css = transformResult;&#xD;	    } else {&#xD;	    	// If the transform function returns a falsy value, don&apos;t add this css. &#xD;	    	// This allows conditional loading of css&#xD;	    	return function() {&#xD;	    		// noop&#xD;	    	};&#xD;	    }&#xD;	}&#xD;&#xD;	if (options.singleton) {&#xD;		var styleIndex = singletonCounter++;&#xD;		styleElement = singletonElement || (singletonElement = createStyleElement(options));&#xD;		update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);&#xD;		remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);&#xD;	} else if(obj.sourceMap &amp;&amp;&#xD;		typeof URL === "function" &amp;&amp;&#xD;		typeof URL.createObjectURL === "function" &amp;&amp;&#xD;		typeof URL.revokeObjectURL === "function" &amp;&amp;&#xD;		typeof Blob === "function" &amp;&amp;&#xD;		typeof btoa === "function") {&#xD;		styleElement = createLinkElement(options);&#xD;		update = updateLink.bind(null, styleElement, options);&#xD;		remove = function() {&#xD;			removeStyleElement(styleElement);&#xD;			if(styleElement.href)&#xD;				URL.revokeObjectURL(styleElement.href);&#xD;		};&#xD;	} else {&#xD;		styleElement = createStyleElement(options);&#xD;		update = applyToTag.bind(null, styleElement);&#xD;		remove = function() {&#xD;			removeStyleElement(styleElement);&#xD;		};&#xD;	}&#xD;&#xD;	update(obj);&#xD;&#xD;	return function updateStyle(newObj) {&#xD;		if(newObj) {&#xD;			if(newObj.css === obj.css &amp;&amp; newObj.media === obj.media &amp;&amp; newObj.sourceMap === obj.sourceMap)&#xD;				return;&#xD;			update(obj = newObj);&#xD;		} else {&#xD;			remove();&#xD;		}&#xD;	};&#xD;}&#xD;&#xD;var replaceText = (function () {&#xD;	var textStore = [];&#xD;&#xD;	return function (index, replacement) {&#xD;		textStore[index] = replacement;&#xD;		return textStore.filter(Boolean).join(&apos;\n&apos;);&#xD;	};&#xD;})();&#xD;&#xD;function applyToSingletonTag(styleElement, index, remove, obj) {&#xD;	var css = remove ? "" : obj.css;&#xD;&#xD;	if (styleElement.styleSheet) {&#xD;		styleElement.styleSheet.cssText = replaceText(index, css);&#xD;	} else {&#xD;		var cssNode = document.createTextNode(css);&#xD;		var childNodes = styleElement.childNodes;&#xD;		if (childNodes[index]) styleElement.removeChild(childNodes[index]);&#xD;		if (childNodes.length) {&#xD;			styleElement.insertBefore(cssNode, childNodes[index]);&#xD;		} else {&#xD;			styleElement.appendChild(cssNode);&#xD;		}&#xD;	}&#xD;}&#xD;&#xD;function applyToTag(styleElement, obj) {&#xD;	var css = obj.css;&#xD;	var media = obj.media;&#xD;&#xD;	if(media) {&#xD;		styleElement.setAttribute("media", media)&#xD;	}&#xD;&#xD;	if(styleElement.styleSheet) {&#xD;		styleElement.styleSheet.cssText = css;&#xD;	} else {&#xD;		while(styleElement.firstChild) {&#xD;			styleElement.removeChild(styleElement.firstChild);&#xD;		}&#xD;		styleElement.appendChild(document.createTextNode(css));&#xD;	}&#xD;}&#xD;&#xD;function updateLink(linkElement, options, obj) {&#xD;	var css = obj.css;&#xD;	var sourceMap = obj.sourceMap;&#xD;&#xD;	/* If convertToAbsoluteUrls isn&apos;t defined, but sourcemaps are enabled&#xD;	and there is no publicPath defined then lets turn convertToAbsoluteUrls&#xD;	on by default.  Otherwise default to the convertToAbsoluteUrls option&#xD;	directly&#xD;	*/&#xD;	var autoFixUrls = options.convertToAbsoluteUrls === undefined &amp;&amp; sourceMap;&#xD;&#xD;	if (options.convertToAbsoluteUrls || autoFixUrls){&#xD;		css = fixUrls(css);&#xD;	}&#xD;&#xD;	if(sourceMap) {&#xD;		// http://stackoverflow.com/a/26603875&#xD;		css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";&#xD;	}&#xD;&#xD;	var blob = new Blob([css], { type: "text/css" });&#xD;&#xD;	var oldSrc = linkElement.href;&#xD;&#xD;	linkElement.href = URL.createObjectURL(blob);&#xD;&#xD;	if(oldSrc)&#xD;		URL.revokeObjectURL(oldSrc);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 9 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {/**&#xD; * lodash (Custom Build) &lt;https://lodash.com/&gt;&#xD; * Build: `lodash modularize exports="npm" -o ./`&#xD; * Copyright jQuery Foundation and other contributors &lt;https://jquery.org/&gt;&#xD; * Released under MIT license &lt;https://lodash.com/license&gt;&#xD; * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;&#xD; * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors&#xD; */&#xD;&#xD;/** Used as the `TypeError` message for "Functions" methods. */&#xD;var FUNC_ERROR_TEXT = &apos;Expected a function&apos;;&#xD;&#xD;/** Used as the internal argument placeholder. */&#xD;var PLACEHOLDER = &apos;__lodash_placeholder__&apos;;&#xD;&#xD;/** Used to compose bitmasks for function metadata. */&#xD;var BIND_FLAG = 1,&#xD;    BIND_KEY_FLAG = 2,&#xD;    CURRY_BOUND_FLAG = 4,&#xD;    CURRY_FLAG = 8,&#xD;    CURRY_RIGHT_FLAG = 16,&#xD;    PARTIAL_FLAG = 32,&#xD;    PARTIAL_RIGHT_FLAG = 64,&#xD;    ARY_FLAG = 128,&#xD;    REARG_FLAG = 256,&#xD;    FLIP_FLAG = 512;&#xD;&#xD;/** Used as references for various `Number` constants. */&#xD;var INFINITY = 1 / 0,&#xD;    MAX_SAFE_INTEGER = 9007199254740991,&#xD;    MAX_INTEGER = 1.7976931348623157e+308,&#xD;    NAN = 0 / 0;&#xD;&#xD;/** Used to associate wrap methods with their bit flags. */&#xD;var wrapFlags = [&#xD;  [&apos;ary&apos;, ARY_FLAG],&#xD;  [&apos;bind&apos;, BIND_FLAG],&#xD;  [&apos;bindKey&apos;, BIND_KEY_FLAG],&#xD;  [&apos;curry&apos;, CURRY_FLAG],&#xD;  [&apos;curryRight&apos;, CURRY_RIGHT_FLAG],&#xD;  [&apos;flip&apos;, FLIP_FLAG],&#xD;  [&apos;partial&apos;, PARTIAL_FLAG],&#xD;  [&apos;partialRight&apos;, PARTIAL_RIGHT_FLAG],&#xD;  [&apos;rearg&apos;, REARG_FLAG]&#xD;];&#xD;&#xD;/** `Object#toString` result references. */&#xD;var argsTag = &apos;[object Arguments]&apos;,&#xD;    funcTag = &apos;[object Function]&apos;,&#xD;    genTag = &apos;[object GeneratorFunction]&apos;,&#xD;    symbolTag = &apos;[object Symbol]&apos;;&#xD;&#xD;/**&#xD; * Used to match `RegExp`&#xD; * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).&#xD; */&#xD;var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;&#xD;&#xD;/** Used to match leading and trailing whitespace. */&#xD;var reTrim = /^\s+|\s+$/g;&#xD;&#xD;/** Used to match wrap detail comments. */&#xD;var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,&#xD;    reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,&#xD;    reSplitDetails = /,? &amp; /;&#xD;&#xD;/** Used to detect bad signed hexadecimal string values. */&#xD;var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;&#xD;&#xD;/** Used to detect binary string values. */&#xD;var reIsBinary = /^0b[01]+$/i;&#xD;&#xD;/** Used to detect host constructors (Safari). */&#xD;var reIsHostCtor = /^\[object .+?Constructor\]$/;&#xD;&#xD;/** Used to detect octal string values. */&#xD;var reIsOctal = /^0o[0-7]+$/i;&#xD;&#xD;/** Used to detect unsigned integer values. */&#xD;var reIsUint = /^(?:0|[1-9]\d*)$/;&#xD;&#xD;/** Built-in method references without a dependency on `root`. */&#xD;var freeParseInt = parseInt;&#xD;&#xD;/** Detect free variable `global` from Node.js. */&#xD;var freeGlobal = typeof global == &apos;object&apos; &amp;&amp; global &amp;&amp; global.Object === Object &amp;&amp; global;&#xD;&#xD;/** Detect free variable `self`. */&#xD;var freeSelf = typeof self == &apos;object&apos; &amp;&amp; self &amp;&amp; self.Object === Object &amp;&amp; self;&#xD;&#xD;/** Used as a reference to the global object. */&#xD;var root = freeGlobal || freeSelf || Function(&apos;return this&apos;)();&#xD;&#xD;/**&#xD; * A faster alternative to `Function#apply`, this function invokes `func`&#xD; * with the `this` binding of `thisArg` and the arguments of `args`.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to invoke.&#xD; * @param {*} thisArg The `this` binding of `func`.&#xD; * @param {Array} args The arguments to invoke `func` with.&#xD; * @returns {*} Returns the result of `func`.&#xD; */&#xD;function apply(func, thisArg, args) {&#xD;  switch (args.length) {&#xD;    case 0: return func.call(thisArg);&#xD;    case 1: return func.call(thisArg, args[0]);&#xD;    case 2: return func.call(thisArg, args[0], args[1]);&#xD;    case 3: return func.call(thisArg, args[0], args[1], args[2]);&#xD;  }&#xD;  return func.apply(thisArg, args);&#xD;}&#xD;&#xD;/**&#xD; * A specialized version of `_.forEach` for arrays without support for&#xD; * iteratee shorthands.&#xD; *&#xD; * @private&#xD; * @param {Array} [array] The array to iterate over.&#xD; * @param {Function} iteratee The function invoked per iteration.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function arrayEach(array, iteratee) {&#xD;  var index = -1,&#xD;      length = array ? array.length : 0;&#xD;&#xD;  while (++index &lt; length) {&#xD;    if (iteratee(array[index], index, array) === false) {&#xD;      break;&#xD;    }&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * A specialized version of `_.includes` for arrays without support for&#xD; * specifying an index to search from.&#xD; *&#xD; * @private&#xD; * @param {Array} [array] The array to inspect.&#xD; * @param {*} target The value to search for.&#xD; * @returns {boolean} Returns `true` if `target` is found, else `false`.&#xD; */&#xD;function arrayIncludes(array, value) {&#xD;  var length = array ? array.length : 0;&#xD;  return !!length &amp;&amp; baseIndexOf(array, value, 0) &gt; -1;&#xD;}&#xD;&#xD;/**&#xD; * Appends the elements of `values` to `array`.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to modify.&#xD; * @param {Array} values The values to append.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function arrayPush(array, values) {&#xD;  var index = -1,&#xD;      length = values.length,&#xD;      offset = array.length;&#xD;&#xD;  while (++index &lt; length) {&#xD;    array[offset + index] = values[index];&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.findIndex` and `_.findLastIndex` without&#xD; * support for iteratee shorthands.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to inspect.&#xD; * @param {Function} predicate The function invoked per iteration.&#xD; * @param {number} fromIndex The index to search from.&#xD; * @param {boolean} [fromRight] Specify iterating from right to left.&#xD; * @returns {number} Returns the index of the matched value, else `-1`.&#xD; */&#xD;function baseFindIndex(array, predicate, fromIndex, fromRight) {&#xD;  var length = array.length,&#xD;      index = fromIndex + (fromRight ? 1 : -1);&#xD;&#xD;  while ((fromRight ? index-- : ++index &lt; length)) {&#xD;    if (predicate(array[index], index, array)) {&#xD;      return index;&#xD;    }&#xD;  }&#xD;  return -1;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.indexOf` without `fromIndex` bounds checks.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to inspect.&#xD; * @param {*} value The value to search for.&#xD; * @param {number} fromIndex The index to search from.&#xD; * @returns {number} Returns the index of the matched value, else `-1`.&#xD; */&#xD;function baseIndexOf(array, value, fromIndex) {&#xD;  if (value !== value) {&#xD;    return baseFindIndex(array, baseIsNaN, fromIndex);&#xD;  }&#xD;  var index = fromIndex - 1,&#xD;      length = array.length;&#xD;&#xD;  while (++index &lt; length) {&#xD;    if (array[index] === value) {&#xD;      return index;&#xD;    }&#xD;  }&#xD;  return -1;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.isNaN` without support for number objects.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.&#xD; */&#xD;function baseIsNaN(value) {&#xD;  return value !== value;&#xD;}&#xD;&#xD;/**&#xD; * Gets the number of `placeholder` occurrences in `array`.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to inspect.&#xD; * @param {*} placeholder The placeholder to search for.&#xD; * @returns {number} Returns the placeholder count.&#xD; */&#xD;function countHolders(array, placeholder) {&#xD;  var length = array.length,&#xD;      result = 0;&#xD;&#xD;  while (length--) {&#xD;    if (array[length] === placeholder) {&#xD;      result++;&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Gets the value at `key` of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} [object] The object to query.&#xD; * @param {string} key The key of the property to get.&#xD; * @returns {*} Returns the property value.&#xD; */&#xD;function getValue(object, key) {&#xD;  return object == null ? undefined : object[key];&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a host object in IE &lt; 9.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a host object, else `false`.&#xD; */&#xD;function isHostObject(value) {&#xD;  // Many host objects are `Object` objects that can coerce to strings&#xD;  // despite having improperly defined `toString` methods.&#xD;  var result = false;&#xD;  if (value != null &amp;&amp; typeof value.toString != &apos;function&apos;) {&#xD;    try {&#xD;      result = !!(value + &apos;&apos;);&#xD;    } catch (e) {}&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Replaces all `placeholder` elements in `array` with an internal placeholder&#xD; * and returns an array of their indexes.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to modify.&#xD; * @param {*} placeholder The placeholder to replace.&#xD; * @returns {Array} Returns the new array of placeholder indexes.&#xD; */&#xD;function replaceHolders(array, placeholder) {&#xD;  var index = -1,&#xD;      length = array.length,&#xD;      resIndex = 0,&#xD;      result = [];&#xD;&#xD;  while (++index &lt; length) {&#xD;    var value = array[index];&#xD;    if (value === placeholder || value === PLACEHOLDER) {&#xD;      array[index] = PLACEHOLDER;&#xD;      result[resIndex++] = index;&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/** Used for built-in method references. */&#xD;var funcProto = Function.prototype,&#xD;    objectProto = Object.prototype;&#xD;&#xD;/** Used to detect overreaching core-js shims. */&#xD;var coreJsData = root[&apos;__core-js_shared__&apos;];&#xD;&#xD;/** Used to detect methods masquerading as native. */&#xD;var maskSrcKey = (function() {&#xD;  var uid = /[^.]+$/.exec(coreJsData &amp;&amp; coreJsData.keys &amp;&amp; coreJsData.keys.IE_PROTO || &apos;&apos;);&#xD;  return uid ? (&apos;Symbol(src)_1.&apos; + uid) : &apos;&apos;;&#xD;}());&#xD;&#xD;/** Used to resolve the decompiled source of functions. */&#xD;var funcToString = funcProto.toString;&#xD;&#xD;/** Used to check objects for own properties. */&#xD;var hasOwnProperty = objectProto.hasOwnProperty;&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var objectToString = objectProto.toString;&#xD;&#xD;/** Used to detect if a method is native. */&#xD;var reIsNative = RegExp(&apos;^&apos; +&#xD;  funcToString.call(hasOwnProperty).replace(reRegExpChar, &apos;\\$&amp;&apos;)&#xD;  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, &apos;$1.*?&apos;) + &apos;$&apos;&#xD;);&#xD;&#xD;/** Built-in value references. */&#xD;var Symbol = root.Symbol,&#xD;    objectCreate = Object.create,&#xD;    propertyIsEnumerable = objectProto.propertyIsEnumerable,&#xD;    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;&#xD;&#xD;/* Built-in method references for those with the same name as other `lodash` methods. */&#xD;var nativeMax = Math.max,&#xD;    nativeMin = Math.min;&#xD;&#xD;/* Used to set `toString` methods. */&#xD;var defineProperty = (function() {&#xD;  var func = getNative(Object, &apos;defineProperty&apos;),&#xD;      name = getNative.name;&#xD;&#xD;  return (name &amp;&amp; name.length &gt; 2) ? func : undefined;&#xD;}());&#xD;&#xD;/**&#xD; * The base implementation of `_.create` without support for assigning&#xD; * properties to the created object.&#xD; *&#xD; * @private&#xD; * @param {Object} prototype The object to inherit from.&#xD; * @returns {Object} Returns the new object.&#xD; */&#xD;function baseCreate(proto) {&#xD;  return isObject(proto) ? objectCreate(proto) : {};&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.flatten` with support for restricting flattening.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to flatten.&#xD; * @param {number} depth The maximum recursion depth.&#xD; * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.&#xD; * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.&#xD; * @param {Array} [result=[]] The initial result value.&#xD; * @returns {Array} Returns the new flattened array.&#xD; */&#xD;function baseFlatten(array, depth, predicate, isStrict, result) {&#xD;  var index = -1,&#xD;      length = array.length;&#xD;&#xD;  predicate || (predicate = isFlattenable);&#xD;  result || (result = []);&#xD;&#xD;  while (++index &lt; length) {&#xD;    var value = array[index];&#xD;    if (depth &gt; 0 &amp;&amp; predicate(value)) {&#xD;      if (depth &gt; 1) {&#xD;        // Recursively flatten arrays (susceptible to call stack limits).&#xD;        baseFlatten(value, depth - 1, predicate, isStrict, result);&#xD;      } else {&#xD;        arrayPush(result, value);&#xD;      }&#xD;    } else if (!isStrict) {&#xD;      result[result.length] = value;&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.isNative` without bad shim checks.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a native function,&#xD; *  else `false`.&#xD; */&#xD;function baseIsNative(value) {&#xD;  if (!isObject(value) || isMasked(value)) {&#xD;    return false;&#xD;  }&#xD;  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;&#xD;  return pattern.test(toSource(value));&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.rest` which doesn&apos;t validate or coerce arguments.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to apply a rest parameter to.&#xD; * @param {number} [start=func.length-1] The start position of the rest parameter.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function baseRest(func, start) {&#xD;  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);&#xD;  return function() {&#xD;    var args = arguments,&#xD;        index = -1,&#xD;        length = nativeMax(args.length - start, 0),&#xD;        array = Array(length);&#xD;&#xD;    while (++index &lt; length) {&#xD;      array[index] = args[start + index];&#xD;    }&#xD;    index = -1;&#xD;    var otherArgs = Array(start + 1);&#xD;    while (++index &lt; start) {&#xD;      otherArgs[index] = args[index];&#xD;    }&#xD;    otherArgs[start] = array;&#xD;    return apply(func, this, otherArgs);&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Creates an array that is the composition of partially applied arguments,&#xD; * placeholders, and provided arguments into a single array of arguments.&#xD; *&#xD; * @private&#xD; * @param {Array} args The provided arguments.&#xD; * @param {Array} partials The arguments to prepend to those provided.&#xD; * @param {Array} holders The `partials` placeholder indexes.&#xD; * @params {boolean} [isCurried] Specify composing for a curried function.&#xD; * @returns {Array} Returns the new array of composed arguments.&#xD; */&#xD;function composeArgs(args, partials, holders, isCurried) {&#xD;  var argsIndex = -1,&#xD;      argsLength = args.length,&#xD;      holdersLength = holders.length,&#xD;      leftIndex = -1,&#xD;      leftLength = partials.length,&#xD;      rangeLength = nativeMax(argsLength - holdersLength, 0),&#xD;      result = Array(leftLength + rangeLength),&#xD;      isUncurried = !isCurried;&#xD;&#xD;  while (++leftIndex &lt; leftLength) {&#xD;    result[leftIndex] = partials[leftIndex];&#xD;  }&#xD;  while (++argsIndex &lt; holdersLength) {&#xD;    if (isUncurried || argsIndex &lt; argsLength) {&#xD;      result[holders[argsIndex]] = args[argsIndex];&#xD;    }&#xD;  }&#xD;  while (rangeLength--) {&#xD;    result[leftIndex++] = args[argsIndex++];&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * This function is like `composeArgs` except that the arguments composition&#xD; * is tailored for `_.partialRight`.&#xD; *&#xD; * @private&#xD; * @param {Array} args The provided arguments.&#xD; * @param {Array} partials The arguments to append to those provided.&#xD; * @param {Array} holders The `partials` placeholder indexes.&#xD; * @params {boolean} [isCurried] Specify composing for a curried function.&#xD; * @returns {Array} Returns the new array of composed arguments.&#xD; */&#xD;function composeArgsRight(args, partials, holders, isCurried) {&#xD;  var argsIndex = -1,&#xD;      argsLength = args.length,&#xD;      holdersIndex = -1,&#xD;      holdersLength = holders.length,&#xD;      rightIndex = -1,&#xD;      rightLength = partials.length,&#xD;      rangeLength = nativeMax(argsLength - holdersLength, 0),&#xD;      result = Array(rangeLength + rightLength),&#xD;      isUncurried = !isCurried;&#xD;&#xD;  while (++argsIndex &lt; rangeLength) {&#xD;    result[argsIndex] = args[argsIndex];&#xD;  }&#xD;  var offset = argsIndex;&#xD;  while (++rightIndex &lt; rightLength) {&#xD;    result[offset + rightIndex] = partials[rightIndex];&#xD;  }&#xD;  while (++holdersIndex &lt; holdersLength) {&#xD;    if (isUncurried || argsIndex &lt; argsLength) {&#xD;      result[offset + holders[holdersIndex]] = args[argsIndex++];&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Copies the values of `source` to `array`.&#xD; *&#xD; * @private&#xD; * @param {Array} source The array to copy values from.&#xD; * @param {Array} [array=[]] The array to copy values to.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function copyArray(source, array) {&#xD;  var index = -1,&#xD;      length = source.length;&#xD;&#xD;  array || (array = Array(length));&#xD;  while (++index &lt; length) {&#xD;    array[index] = source[index];&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that wraps `func` to invoke it with the optional `this`&#xD; * binding of `thisArg`.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @param {*} [thisArg] The `this` binding of `func`.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createBind(func, bitmask, thisArg) {&#xD;  var isBind = bitmask &amp; BIND_FLAG,&#xD;      Ctor = createCtor(func);&#xD;&#xD;  function wrapper() {&#xD;    var fn = (this &amp;&amp; this !== root &amp;&amp; this instanceof wrapper) ? Ctor : func;&#xD;    return fn.apply(isBind ? thisArg : this, arguments);&#xD;  }&#xD;  return wrapper;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that produces an instance of `Ctor` regardless of&#xD; * whether it was invoked as part of a `new` expression or by `call` or `apply`.&#xD; *&#xD; * @private&#xD; * @param {Function} Ctor The constructor to wrap.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createCtor(Ctor) {&#xD;  return function() {&#xD;    // Use a `switch` statement to work with class constructors. See&#xD;    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist&#xD;    // for more details.&#xD;    var args = arguments;&#xD;    switch (args.length) {&#xD;      case 0: return new Ctor;&#xD;      case 1: return new Ctor(args[0]);&#xD;      case 2: return new Ctor(args[0], args[1]);&#xD;      case 3: return new Ctor(args[0], args[1], args[2]);&#xD;      case 4: return new Ctor(args[0], args[1], args[2], args[3]);&#xD;      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);&#xD;      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);&#xD;      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);&#xD;    }&#xD;    var thisBinding = baseCreate(Ctor.prototype),&#xD;        result = Ctor.apply(thisBinding, args);&#xD;&#xD;    // Mimic the constructor&apos;s `return` behavior.&#xD;    // See https://es5.github.io/#x13.2.2 for more details.&#xD;    return isObject(result) ? result : thisBinding;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that wraps `func` to enable currying.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @param {number} arity The arity of `func`.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createCurry(func, bitmask, arity) {&#xD;  var Ctor = createCtor(func);&#xD;&#xD;  function wrapper() {&#xD;    var length = arguments.length,&#xD;        args = Array(length),&#xD;        index = length,&#xD;        placeholder = getHolder(wrapper);&#xD;&#xD;    while (index--) {&#xD;      args[index] = arguments[index];&#xD;    }&#xD;    var holders = (length &lt; 3 &amp;&amp; args[0] !== placeholder &amp;&amp; args[length - 1] !== placeholder)&#xD;      ? []&#xD;      : replaceHolders(args, placeholder);&#xD;&#xD;    length -= holders.length;&#xD;    if (length &lt; arity) {&#xD;      return createRecurry(&#xD;        func, bitmask, createHybrid, wrapper.placeholder, undefined,&#xD;        args, holders, undefined, undefined, arity - length);&#xD;    }&#xD;    var fn = (this &amp;&amp; this !== root &amp;&amp; this instanceof wrapper) ? Ctor : func;&#xD;    return apply(fn, this, args);&#xD;  }&#xD;  return wrapper;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that wraps `func` to invoke it with optional `this`&#xD; * binding of `thisArg`, partial application, and currying.&#xD; *&#xD; * @private&#xD; * @param {Function|string} func The function or method name to wrap.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @param {*} [thisArg] The `this` binding of `func`.&#xD; * @param {Array} [partials] The arguments to prepend to those provided to&#xD; *  the new function.&#xD; * @param {Array} [holders] The `partials` placeholder indexes.&#xD; * @param {Array} [partialsRight] The arguments to append to those provided&#xD; *  to the new function.&#xD; * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.&#xD; * @param {Array} [argPos] The argument positions of the new function.&#xD; * @param {number} [ary] The arity cap of `func`.&#xD; * @param {number} [arity] The arity of `func`.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {&#xD;  var isAry = bitmask &amp; ARY_FLAG,&#xD;      isBind = bitmask &amp; BIND_FLAG,&#xD;      isBindKey = bitmask &amp; BIND_KEY_FLAG,&#xD;      isCurried = bitmask &amp; (CURRY_FLAG | CURRY_RIGHT_FLAG),&#xD;      isFlip = bitmask &amp; FLIP_FLAG,&#xD;      Ctor = isBindKey ? undefined : createCtor(func);&#xD;&#xD;  function wrapper() {&#xD;    var length = arguments.length,&#xD;        args = Array(length),&#xD;        index = length;&#xD;&#xD;    while (index--) {&#xD;      args[index] = arguments[index];&#xD;    }&#xD;    if (isCurried) {&#xD;      var placeholder = getHolder(wrapper),&#xD;          holdersCount = countHolders(args, placeholder);&#xD;    }&#xD;    if (partials) {&#xD;      args = composeArgs(args, partials, holders, isCurried);&#xD;    }&#xD;    if (partialsRight) {&#xD;      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);&#xD;    }&#xD;    length -= holdersCount;&#xD;    if (isCurried &amp;&amp; length &lt; arity) {&#xD;      var newHolders = replaceHolders(args, placeholder);&#xD;      return createRecurry(&#xD;        func, bitmask, createHybrid, wrapper.placeholder, thisArg,&#xD;        args, newHolders, argPos, ary, arity - length&#xD;      );&#xD;    }&#xD;    var thisBinding = isBind ? thisArg : this,&#xD;        fn = isBindKey ? thisBinding[func] : func;&#xD;&#xD;    length = args.length;&#xD;    if (argPos) {&#xD;      args = reorder(args, argPos);&#xD;    } else if (isFlip &amp;&amp; length &gt; 1) {&#xD;      args.reverse();&#xD;    }&#xD;    if (isAry &amp;&amp; ary &lt; length) {&#xD;      args.length = ary;&#xD;    }&#xD;    if (this &amp;&amp; this !== root &amp;&amp; this instanceof wrapper) {&#xD;      fn = Ctor || createCtor(fn);&#xD;    }&#xD;    return fn.apply(thisBinding, args);&#xD;  }&#xD;  return wrapper;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that wraps `func` to invoke it with the `this` binding&#xD; * of `thisArg` and `partials` prepended to the arguments it receives.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @param {*} thisArg The `this` binding of `func`.&#xD; * @param {Array} partials The arguments to prepend to those provided to&#xD; *  the new function.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createPartial(func, bitmask, thisArg, partials) {&#xD;  var isBind = bitmask &amp; BIND_FLAG,&#xD;      Ctor = createCtor(func);&#xD;&#xD;  function wrapper() {&#xD;    var argsIndex = -1,&#xD;        argsLength = arguments.length,&#xD;        leftIndex = -1,&#xD;        leftLength = partials.length,&#xD;        args = Array(leftLength + argsLength),&#xD;        fn = (this &amp;&amp; this !== root &amp;&amp; this instanceof wrapper) ? Ctor : func;&#xD;&#xD;    while (++leftIndex &lt; leftLength) {&#xD;      args[leftIndex] = partials[leftIndex];&#xD;    }&#xD;    while (argsLength--) {&#xD;      args[leftIndex++] = arguments[++argsIndex];&#xD;    }&#xD;    return apply(fn, isBind ? thisArg : this, args);&#xD;  }&#xD;  return wrapper;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that wraps `func` to continue currying.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @param {Function} wrapFunc The function to create the `func` wrapper.&#xD; * @param {*} placeholder The placeholder value.&#xD; * @param {*} [thisArg] The `this` binding of `func`.&#xD; * @param {Array} [partials] The arguments to prepend to those provided to&#xD; *  the new function.&#xD; * @param {Array} [holders] The `partials` placeholder indexes.&#xD; * @param {Array} [argPos] The argument positions of the new function.&#xD; * @param {number} [ary] The arity cap of `func`.&#xD; * @param {number} [arity] The arity of `func`.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {&#xD;  var isCurry = bitmask &amp; CURRY_FLAG,&#xD;      newHolders = isCurry ? holders : undefined,&#xD;      newHoldersRight = isCurry ? undefined : holders,&#xD;      newPartials = isCurry ? partials : undefined,&#xD;      newPartialsRight = isCurry ? undefined : partials;&#xD;&#xD;  bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);&#xD;  bitmask &amp;= &#126;(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);&#xD;&#xD;  if (!(bitmask &amp; CURRY_BOUND_FLAG)) {&#xD;    bitmask &amp;= &#126;(BIND_FLAG | BIND_KEY_FLAG);&#xD;  }&#xD;&#xD;  var result = wrapFunc(func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity);&#xD;  result.placeholder = placeholder;&#xD;  return setWrapToString(result, func, bitmask);&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that either curries or invokes `func` with optional&#xD; * `this` binding and partially applied arguments.&#xD; *&#xD; * @private&#xD; * @param {Function|string} func The function or method name to wrap.&#xD; * @param {number} bitmask The bitmask flags.&#xD; *  The bitmask may be composed of the following flags:&#xD; *     1 - `_.bind`&#xD; *     2 - `_.bindKey`&#xD; *     4 - `_.curry` or `_.curryRight` of a bound function&#xD; *     8 - `_.curry`&#xD; *    16 - `_.curryRight`&#xD; *    32 - `_.partial`&#xD; *    64 - `_.partialRight`&#xD; *   128 - `_.rearg`&#xD; *   256 - `_.ary`&#xD; *   512 - `_.flip`&#xD; * @param {*} [thisArg] The `this` binding of `func`.&#xD; * @param {Array} [partials] The arguments to be partially applied.&#xD; * @param {Array} [holders] The `partials` placeholder indexes.&#xD; * @param {Array} [argPos] The argument positions of the new function.&#xD; * @param {number} [ary] The arity cap of `func`.&#xD; * @param {number} [arity] The arity of `func`.&#xD; * @returns {Function} Returns the new wrapped function.&#xD; */&#xD;function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {&#xD;  var isBindKey = bitmask &amp; BIND_KEY_FLAG;&#xD;  if (!isBindKey &amp;&amp; typeof func != &apos;function&apos;) {&#xD;    throw new TypeError(FUNC_ERROR_TEXT);&#xD;  }&#xD;  var length = partials ? partials.length : 0;&#xD;  if (!length) {&#xD;    bitmask &amp;= &#126;(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);&#xD;    partials = holders = undefined;&#xD;  }&#xD;  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);&#xD;  arity = arity === undefined ? arity : toInteger(arity);&#xD;  length -= holders ? holders.length : 0;&#xD;&#xD;  if (bitmask &amp; PARTIAL_RIGHT_FLAG) {&#xD;    var partialsRight = partials,&#xD;        holdersRight = holders;&#xD;&#xD;    partials = holders = undefined;&#xD;  }&#xD;&#xD;  var newData = [&#xD;    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,&#xD;    argPos, ary, arity&#xD;  ];&#xD;&#xD;  func = newData[0];&#xD;  bitmask = newData[1];&#xD;  thisArg = newData[2];&#xD;  partials = newData[3];&#xD;  holders = newData[4];&#xD;  arity = newData[9] = newData[9] == null&#xD;    ? (isBindKey ? 0 : func.length)&#xD;    : nativeMax(newData[9] - length, 0);&#xD;&#xD;  if (!arity &amp;&amp; bitmask &amp; (CURRY_FLAG | CURRY_RIGHT_FLAG)) {&#xD;    bitmask &amp;= &#126;(CURRY_FLAG | CURRY_RIGHT_FLAG);&#xD;  }&#xD;  if (!bitmask || bitmask == BIND_FLAG) {&#xD;    var result = createBind(func, bitmask, thisArg);&#xD;  } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) {&#xD;    result = createCurry(func, bitmask, arity);&#xD;  } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) &amp;&amp; !holders.length) {&#xD;    result = createPartial(func, bitmask, thisArg, partials);&#xD;  } else {&#xD;    result = createHybrid.apply(undefined, newData);&#xD;  }&#xD;  return setWrapToString(result, func, bitmask);&#xD;}&#xD;&#xD;/**&#xD; * Gets the argument placeholder value for `func`.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to inspect.&#xD; * @returns {*} Returns the placeholder value.&#xD; */&#xD;function getHolder(func) {&#xD;  var object = func;&#xD;  return object.placeholder;&#xD;}&#xD;&#xD;/**&#xD; * Gets the native function at `key` of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @param {string} key The key of the method to get.&#xD; * @returns {*} Returns the function if it&apos;s native, else `undefined`.&#xD; */&#xD;function getNative(object, key) {&#xD;  var value = getValue(object, key);&#xD;  return baseIsNative(value) ? value : undefined;&#xD;}&#xD;&#xD;/**&#xD; * Extracts wrapper details from the `source` body comment.&#xD; *&#xD; * @private&#xD; * @param {string} source The source to inspect.&#xD; * @returns {Array} Returns the wrapper details.&#xD; */&#xD;function getWrapDetails(source) {&#xD;  var match = source.match(reWrapDetails);&#xD;  return match ? match[1].split(reSplitDetails) : [];&#xD;}&#xD;&#xD;/**&#xD; * Inserts wrapper `details` in a comment at the top of the `source` body.&#xD; *&#xD; * @private&#xD; * @param {string} source The source to modify.&#xD; * @returns {Array} details The details to insert.&#xD; * @returns {string} Returns the modified source.&#xD; */&#xD;function insertWrapDetails(source, details) {&#xD;  var length = details.length,&#xD;      lastIndex = length - 1;&#xD;&#xD;  details[lastIndex] = (length &gt; 1 ? &apos;&amp; &apos; : &apos;&apos;) + details[lastIndex];&#xD;  details = details.join(length &gt; 2 ? &apos;, &apos; : &apos; &apos;);&#xD;  return source.replace(reWrapComment, &apos;{\n/* [wrapped with &apos; + details + &apos;] */\n&apos;);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a flattenable `arguments` object or array.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.&#xD; */&#xD;function isFlattenable(value) {&#xD;  return isArray(value) || isArguments(value) ||&#xD;    !!(spreadableSymbol &amp;&amp; value &amp;&amp; value[spreadableSymbol]);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like index.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.&#xD; * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.&#xD; */&#xD;function isIndex(value, length) {&#xD;  length = length == null ? MAX_SAFE_INTEGER : length;&#xD;  return !!length &amp;&amp;&#xD;    (typeof value == &apos;number&apos; || reIsUint.test(value)) &amp;&amp;&#xD;    (value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt; length);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `func` has its source masked.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to check.&#xD; * @returns {boolean} Returns `true` if `func` is masked, else `false`.&#xD; */&#xD;function isMasked(func) {&#xD;  return !!maskSrcKey &amp;&amp; (maskSrcKey in func);&#xD;}&#xD;&#xD;/**&#xD; * Reorder `array` according to the specified indexes where the element at&#xD; * the first index is assigned as the first element, the element at&#xD; * the second index is assigned as the second element, and so on.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to reorder.&#xD; * @param {Array} indexes The arranged array indexes.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function reorder(array, indexes) {&#xD;  var arrLength = array.length,&#xD;      length = nativeMin(indexes.length, arrLength),&#xD;      oldArray = copyArray(array);&#xD;&#xD;  while (length--) {&#xD;    var index = indexes[length];&#xD;    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * Sets the `toString` method of `wrapper` to mimic the source of `reference`&#xD; * with wrapper details in a comment at the top of the source body.&#xD; *&#xD; * @private&#xD; * @param {Function} wrapper The function to modify.&#xD; * @param {Function} reference The reference function.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @returns {Function} Returns `wrapper`.&#xD; */&#xD;var setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) {&#xD;  var source = (reference + &apos;&apos;);&#xD;  return defineProperty(wrapper, &apos;toString&apos;, {&#xD;    &apos;configurable&apos;: true,&#xD;    &apos;enumerable&apos;: false,&#xD;    &apos;value&apos;: constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)))&#xD;  });&#xD;};&#xD;&#xD;/**&#xD; * Converts `value` to a string key if it&apos;s not a string or symbol.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to inspect.&#xD; * @returns {string|symbol} Returns the key.&#xD; */&#xD;function toKey(value) {&#xD;  if (typeof value == &apos;string&apos; || isSymbol(value)) {&#xD;    return value;&#xD;  }&#xD;  var result = (value + &apos;&apos;);&#xD;  return (result == &apos;0&apos; &amp;&amp; (1 / value) == -INFINITY) ? &apos;-0&apos; : result;&#xD;}&#xD;&#xD;/**&#xD; * Converts `func` to its source code.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to process.&#xD; * @returns {string} Returns the source code.&#xD; */&#xD;function toSource(func) {&#xD;  if (func != null) {&#xD;    try {&#xD;      return funcToString.call(func);&#xD;    } catch (e) {}&#xD;    try {&#xD;      return (func + &apos;&apos;);&#xD;    } catch (e) {}&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Updates wrapper `details` based on `bitmask` flags.&#xD; *&#xD; * @private&#xD; * @returns {Array} details The details to modify.&#xD; * @param {number} bitmask The bitmask flags. See `createWrap` for more details.&#xD; * @returns {Array} Returns `details`.&#xD; */&#xD;function updateWrapDetails(details, bitmask) {&#xD;  arrayEach(wrapFlags, function(pair) {&#xD;    var value = &apos;_.&apos; + pair[0];&#xD;    if ((bitmask &amp; pair[1]) &amp;&amp; !arrayIncludes(details, value)) {&#xD;      details.push(value);&#xD;    }&#xD;  });&#xD;  return details.sort();&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that invokes `func` with the `this` binding of `thisArg`&#xD; * and `partials` prepended to the arguments it receives.&#xD; *&#xD; * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,&#xD; * may be used as a placeholder for partially applied arguments.&#xD; *&#xD; * **Note:** Unlike native `Function#bind`, this method doesn&apos;t set the "length"&#xD; * property of bound functions.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Function&#xD; * @param {Function} func The function to bind.&#xD; * @param {*} thisArg The `this` binding of `func`.&#xD; * @param {...*} [partials] The arguments to be partially applied.&#xD; * @returns {Function} Returns the new bound function.&#xD; * @example&#xD; *&#xD; * function greet(greeting, punctuation) {&#xD; *   return greeting + &apos; &apos; + this.user + punctuation;&#xD; * }&#xD; *&#xD; * var object = { &apos;user&apos;: &apos;fred&apos; };&#xD; *&#xD; * var bound = _.bind(greet, object, &apos;hi&apos;);&#xD; * bound(&apos;!&apos;);&#xD; * // =&gt; &apos;hi fred!&apos;&#xD; *&#xD; * // Bound with placeholders.&#xD; * var bound = _.bind(greet, object, _, &apos;!&apos;);&#xD; * bound(&apos;hi&apos;);&#xD; * // =&gt; &apos;hi fred!&apos;&#xD; */&#xD;var bind = baseRest(function(func, thisArg, partials) {&#xD;  var bitmask = BIND_FLAG;&#xD;  if (partials.length) {&#xD;    var holders = replaceHolders(partials, getHolder(bind));&#xD;    bitmask |= PARTIAL_FLAG;&#xD;  }&#xD;  return createWrap(func, bitmask, thisArg, partials, holders);&#xD;});&#xD;&#xD;/**&#xD; * Checks if `value` is likely an `arguments` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an `arguments` object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArguments(function() { return arguments; }());&#xD; * // =&gt; true&#xD; *&#xD; * _.isArguments([1, 2, 3]);&#xD; * // =&gt; false&#xD; */&#xD;function isArguments(value) {&#xD;  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.&#xD;  return isArrayLikeObject(value) &amp;&amp; hasOwnProperty.call(value, &apos;callee&apos;) &amp;&amp;&#xD;    (!propertyIsEnumerable.call(value, &apos;callee&apos;) || objectToString.call(value) == argsTag);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as an `Array` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArray([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArray(document.body.children);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;var isArray = Array.isArray;&#xD;&#xD;/**&#xD; * Checks if `value` is array-like. A value is considered array-like if it&apos;s&#xD; * not a function and has a `value.length` that&apos;s an integer greater than or&#xD; * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is array-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(&apos;abc&apos;);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLike(value) {&#xD;  return value != null &amp;&amp; isLength(value.length) &amp;&amp; !isFunction(value);&#xD;}&#xD;&#xD;/**&#xD; * This method is like `_.isArrayLike` except that it also checks if `value`&#xD; * is an object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array-like object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLikeObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArrayLikeObject(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLikeObject(value) {&#xD;  return isObjectLike(value) &amp;&amp; isArrayLike(value);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a `Function` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a function, else `false`.&#xD; * @example&#xD; *&#xD; * _.isFunction(_);&#xD; * // =&gt; true&#xD; *&#xD; * _.isFunction(/abc/);&#xD; * // =&gt; false&#xD; */&#xD;function isFunction(value) {&#xD;  // The use of `Object#toString` avoids issues with the `typeof` operator&#xD;  // in Safari 8-9 which returns &apos;object&apos; for typed array and other constructors.&#xD;  var tag = isObject(value) ? objectToString.call(value) : &apos;&apos;;&#xD;  return tag == funcTag || tag == genTag;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like length.&#xD; *&#xD; * **Note:** This method is loosely based on&#xD; * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.&#xD; * @example&#xD; *&#xD; * _.isLength(3);&#xD; * // =&gt; true&#xD; *&#xD; * _.isLength(Number.MIN_VALUE);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(Infinity);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(&apos;3&apos;);&#xD; * // =&gt; false&#xD; */&#xD;function isLength(value) {&#xD;  return typeof value == &apos;number&apos; &amp;&amp;&#xD;    value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt;= MAX_SAFE_INTEGER;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is the&#xD; * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)&#xD; * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(&apos;&apos;)`)&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an object, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObject({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(_.noop);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObject(value) {&#xD;  var type = typeof value;&#xD;  return !!value &amp;&amp; (type == &apos;object&apos; || type == &apos;function&apos;);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is object-like. A value is object-like if it&apos;s not `null`&#xD; * and has a `typeof` result of "object".&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is object-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObjectLike({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike(_.noop);&#xD; * // =&gt; false&#xD; *&#xD; * _.isObjectLike(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObjectLike(value) {&#xD;  return !!value &amp;&amp; typeof value == &apos;object&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a `Symbol` primitive or object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.&#xD; * @example&#xD; *&#xD; * _.isSymbol(Symbol.iterator);&#xD; * // =&gt; true&#xD; *&#xD; * _.isSymbol(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; */&#xD;function isSymbol(value) {&#xD;  return typeof value == &apos;symbol&apos; ||&#xD;    (isObjectLike(value) &amp;&amp; objectToString.call(value) == symbolTag);&#xD;}&#xD;&#xD;/**&#xD; * Converts `value` to a finite number.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.12.0&#xD; * @category Lang&#xD; * @param {*} value The value to convert.&#xD; * @returns {number} Returns the converted number.&#xD; * @example&#xD; *&#xD; * _.toFinite(3.2);&#xD; * // =&gt; 3.2&#xD; *&#xD; * _.toFinite(Number.MIN_VALUE);&#xD; * // =&gt; 5e-324&#xD; *&#xD; * _.toFinite(Infinity);&#xD; * // =&gt; 1.7976931348623157e+308&#xD; *&#xD; * _.toFinite(&apos;3.2&apos;);&#xD; * // =&gt; 3.2&#xD; */&#xD;function toFinite(value) {&#xD;  if (!value) {&#xD;    return value === 0 ? value : 0;&#xD;  }&#xD;  value = toNumber(value);&#xD;  if (value === INFINITY || value === -INFINITY) {&#xD;    var sign = (value &lt; 0 ? -1 : 1);&#xD;    return sign * MAX_INTEGER;&#xD;  }&#xD;  return value === value ? value : 0;&#xD;}&#xD;&#xD;/**&#xD; * Converts `value` to an integer.&#xD; *&#xD; * **Note:** This method is loosely based on&#xD; * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to convert.&#xD; * @returns {number} Returns the converted integer.&#xD; * @example&#xD; *&#xD; * _.toInteger(3.2);&#xD; * // =&gt; 3&#xD; *&#xD; * _.toInteger(Number.MIN_VALUE);&#xD; * // =&gt; 0&#xD; *&#xD; * _.toInteger(Infinity);&#xD; * // =&gt; 1.7976931348623157e+308&#xD; *&#xD; * _.toInteger(&apos;3.2&apos;);&#xD; * // =&gt; 3&#xD; */&#xD;function toInteger(value) {&#xD;  var result = toFinite(value),&#xD;      remainder = result % 1;&#xD;&#xD;  return result === result ? (remainder ? result - remainder : result) : 0;&#xD;}&#xD;&#xD;/**&#xD; * Converts `value` to a number.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to process.&#xD; * @returns {number} Returns the number.&#xD; * @example&#xD; *&#xD; * _.toNumber(3.2);&#xD; * // =&gt; 3.2&#xD; *&#xD; * _.toNumber(Number.MIN_VALUE);&#xD; * // =&gt; 5e-324&#xD; *&#xD; * _.toNumber(Infinity);&#xD; * // =&gt; Infinity&#xD; *&#xD; * _.toNumber(&apos;3.2&apos;);&#xD; * // =&gt; 3.2&#xD; */&#xD;function toNumber(value) {&#xD;  if (typeof value == &apos;number&apos;) {&#xD;    return value;&#xD;  }&#xD;  if (isSymbol(value)) {&#xD;    return NAN;&#xD;  }&#xD;  if (isObject(value)) {&#xD;    var other = typeof value.valueOf == &apos;function&apos; ? value.valueOf() : value;&#xD;    value = isObject(other) ? (other + &apos;&apos;) : other;&#xD;  }&#xD;  if (typeof value != &apos;string&apos;) {&#xD;    return value === 0 ? value : +value;&#xD;  }&#xD;  value = value.replace(reTrim, &apos;&apos;);&#xD;  var isBinary = reIsBinary.test(value);&#xD;  return (isBinary || reIsOctal.test(value))&#xD;    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)&#xD;    : (reIsBadHex.test(value) ? NAN : +value);&#xD;}&#xD;&#xD;/**&#xD; * Binds methods of an object to the object itself, overwriting the existing&#xD; * method.&#xD; *&#xD; * **Note:** This method doesn&apos;t set the "length" property of bound functions.&#xD; *&#xD; * @static&#xD; * @since 0.1.0&#xD; * @memberOf _&#xD; * @category Util&#xD; * @param {Object} object The object to bind and assign the bound methods to.&#xD; * @param {...(string|string[])} methodNames The object method names to bind.&#xD; * @returns {Object} Returns `object`.&#xD; * @example&#xD; *&#xD; * var view = {&#xD; *   &apos;label&apos;: &apos;docs&apos;,&#xD; *   &apos;click&apos;: function() {&#xD; *     console.log(&apos;clicked &apos; + this.label);&#xD; *   }&#xD; * };&#xD; *&#xD; * _.bindAll(view, [&apos;click&apos;]);&#xD; * jQuery(element).on(&apos;click&apos;, view.click);&#xD; * // =&gt; Logs &apos;clicked docs&apos; when clicked.&#xD; */&#xD;var bindAll = baseRest(function(object, methodNames) {&#xD;  arrayEach(baseFlatten(methodNames, 1), function(key) {&#xD;    key = toKey(key);&#xD;    object[key] = bind(object[key], object);&#xD;  });&#xD;  return object;&#xD;});&#xD;&#xD;/**&#xD; * Creates a function that returns `value`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 2.4.0&#xD; * @category Util&#xD; * @param {*} value The value to return from the new function.&#xD; * @returns {Function} Returns the new constant function.&#xD; * @example&#xD; *&#xD; * var objects = _.times(2, _.constant({ &apos;a&apos;: 1 }));&#xD; *&#xD; * console.log(objects);&#xD; * // =&gt; [{ &apos;a&apos;: 1 }, { &apos;a&apos;: 1 }]&#xD; *&#xD; * console.log(objects[0] === objects[1]);&#xD; * // =&gt; true&#xD; */&#xD;function constant(value) {&#xD;  return function() {&#xD;    return value;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * This method returns the first argument it receives.&#xD; *&#xD; * @static&#xD; * @since 0.1.0&#xD; * @memberOf _&#xD; * @category Util&#xD; * @param {*} value Any value.&#xD; * @returns {*} Returns `value`.&#xD; * @example&#xD; *&#xD; * var object = { &apos;a&apos;: 1 };&#xD; *&#xD; * console.log(_.identity(object) === object);&#xD; * // =&gt; true&#xD; */&#xD;function identity(value) {&#xD;  return value;&#xD;}&#xD;&#xD;// Assign default placeholders.&#xD;bind.placeholder = {};&#xD;&#xD;module.exports = bindAll;&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 10 */,&#xD;/* 11 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) {&#xD;  &apos;use strict&apos;;&#xD;&#xD;  // Utils&#xD;  function assert (val, msg) {&#xD;    if (!val) throw new Error(msg || &apos;Assertion failed&apos;);&#xD;  }&#xD;&#xD;  // Could use `inherits` module, but don&apos;t want to move from single file&#xD;  // architecture yet.&#xD;  function inherits (ctor, superCtor) {&#xD;    ctor.super_ = superCtor;&#xD;    var TempCtor = function () {};&#xD;    TempCtor.prototype = superCtor.prototype;&#xD;    ctor.prototype = new TempCtor();&#xD;    ctor.prototype.constructor = ctor;&#xD;  }&#xD;&#xD;  // BN&#xD;&#xD;  function BN (number, base, endian) {&#xD;    if (BN.isBN(number)) {&#xD;      return number;&#xD;    }&#xD;&#xD;    this.negative = 0;&#xD;    this.words = null;&#xD;    this.length = 0;&#xD;&#xD;    // Reduction context&#xD;    this.red = null;&#xD;&#xD;    if (number !== null) {&#xD;      if (base === &apos;le&apos; || base === &apos;be&apos;) {&#xD;        endian = base;&#xD;        base = 10;&#xD;      }&#xD;&#xD;      this._init(number || 0, base || 10, endian || &apos;be&apos;);&#xD;    }&#xD;  }&#xD;  if (typeof module === &apos;object&apos;) {&#xD;    module.exports = BN;&#xD;  } else {&#xD;    exports.BN = BN;&#xD;  }&#xD;&#xD;  BN.BN = BN;&#xD;  BN.wordSize = 26;&#xD;&#xD;  var Buffer;&#xD;  try {&#xD;    Buffer = __webpack_require__(1).Buffer;&#xD;  } catch (e) {&#xD;  }&#xD;&#xD;  BN.isBN = function isBN (num) {&#xD;    if (num instanceof BN) {&#xD;      return true;&#xD;    }&#xD;&#xD;    return num !== null &amp;&amp; typeof num === &apos;object&apos; &amp;&amp;&#xD;      num.constructor.wordSize === BN.wordSize &amp;&amp; Array.isArray(num.words);&#xD;  };&#xD;&#xD;  BN.max = function max (left, right) {&#xD;    if (left.cmp(right) &gt; 0) return left;&#xD;    return right;&#xD;  };&#xD;&#xD;  BN.min = function min (left, right) {&#xD;    if (left.cmp(right) &lt; 0) return left;&#xD;    return right;&#xD;  };&#xD;&#xD;  BN.prototype._init = function init (number, base, endian) {&#xD;    if (typeof number === &apos;number&apos;) {&#xD;      return this._initNumber(number, base, endian);&#xD;    }&#xD;&#xD;    if (typeof number === &apos;object&apos;) {&#xD;      return this._initArray(number, base, endian);&#xD;    }&#xD;&#xD;    if (base === &apos;hex&apos;) {&#xD;      base = 16;&#xD;    }&#xD;    assert(base === (base | 0) &amp;&amp; base &gt;= 2 &amp;&amp; base &lt;= 36);&#xD;&#xD;    number = number.toString().replace(/\s+/g, &apos;&apos;);&#xD;    var start = 0;&#xD;    if (number[0] === &apos;-&apos;) {&#xD;      start++;&#xD;    }&#xD;&#xD;    if (base === 16) {&#xD;      this._parseHex(number, start);&#xD;    } else {&#xD;      this._parseBase(number, base, start);&#xD;    }&#xD;&#xD;    if (number[0] === &apos;-&apos;) {&#xD;      this.negative = 1;&#xD;    }&#xD;&#xD;    this.strip();&#xD;&#xD;    if (endian !== &apos;le&apos;) return;&#xD;&#xD;    this._initArray(this.toArray(), base, endian);&#xD;  };&#xD;&#xD;  BN.prototype._initNumber = function _initNumber (number, base, endian) {&#xD;    if (number &lt; 0) {&#xD;      this.negative = 1;&#xD;      number = -number;&#xD;    }&#xD;    if (number &lt; 0x4000000) {&#xD;      this.words = [ number &amp; 0x3ffffff ];&#xD;      this.length = 1;&#xD;    } else if (number &lt; 0x10000000000000) {&#xD;      this.words = [&#xD;        number &amp; 0x3ffffff,&#xD;        (number / 0x4000000) &amp; 0x3ffffff&#xD;      ];&#xD;      this.length = 2;&#xD;    } else {&#xD;      assert(number &lt; 0x20000000000000); // 2 ^ 53 (unsafe)&#xD;      this.words = [&#xD;        number &amp; 0x3ffffff,&#xD;        (number / 0x4000000) &amp; 0x3ffffff,&#xD;        1&#xD;      ];&#xD;      this.length = 3;&#xD;    }&#xD;&#xD;    if (endian !== &apos;le&apos;) return;&#xD;&#xD;    // Reverse the bytes&#xD;    this._initArray(this.toArray(), base, endian);&#xD;  };&#xD;&#xD;  BN.prototype._initArray = function _initArray (number, base, endian) {&#xD;    // Perhaps a Uint8Array&#xD;    assert(typeof number.length === &apos;number&apos;);&#xD;    if (number.length &lt;= 0) {&#xD;      this.words = [ 0 ];&#xD;      this.length = 1;&#xD;      return this;&#xD;    }&#xD;&#xD;    this.length = Math.ceil(number.length / 3);&#xD;    this.words = new Array(this.length);&#xD;    for (var i = 0; i &lt; this.length; i++) {&#xD;      this.words[i] = 0;&#xD;    }&#xD;&#xD;    var j, w;&#xD;    var off = 0;&#xD;    if (endian === &apos;be&apos;) {&#xD;      for (i = number.length - 1, j = 0; i &gt;= 0; i -= 3) {&#xD;        w = number[i] | (number[i - 1] &lt;&lt; 8) | (number[i - 2] &lt;&lt; 16);&#xD;        this.words[j] |= (w &lt;&lt; off) &amp; 0x3ffffff;&#xD;        this.words[j + 1] = (w &gt;&gt;&gt; (26 - off)) &amp; 0x3ffffff;&#xD;        off += 24;&#xD;        if (off &gt;= 26) {&#xD;          off -= 26;&#xD;          j++;&#xD;        }&#xD;      }&#xD;    } else if (endian === &apos;le&apos;) {&#xD;      for (i = 0, j = 0; i &lt; number.length; i += 3) {&#xD;        w = number[i] | (number[i + 1] &lt;&lt; 8) | (number[i + 2] &lt;&lt; 16);&#xD;        this.words[j] |= (w &lt;&lt; off) &amp; 0x3ffffff;&#xD;        this.words[j + 1] = (w &gt;&gt;&gt; (26 - off)) &amp; 0x3ffffff;&#xD;        off += 24;&#xD;        if (off &gt;= 26) {&#xD;          off -= 26;&#xD;          j++;&#xD;        }&#xD;      }&#xD;    }&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  function parseHex (str, start, end) {&#xD;    var r = 0;&#xD;    var len = Math.min(str.length, end);&#xD;    for (var i = start; i &lt; len; i++) {&#xD;      var c = str.charCodeAt(i) - 48;&#xD;&#xD;      r &lt;&lt;= 4;&#xD;&#xD;      // &apos;a&apos; - &apos;f&apos;&#xD;      if (c &gt;= 49 &amp;&amp; c &lt;= 54) {&#xD;        r |= c - 49 + 0xa;&#xD;&#xD;      // &apos;A&apos; - &apos;F&apos;&#xD;      } else if (c &gt;= 17 &amp;&amp; c &lt;= 22) {&#xD;        r |= c - 17 + 0xa;&#xD;&#xD;      // &apos;0&apos; - &apos;9&apos;&#xD;      } else {&#xD;        r |= c &amp; 0xf;&#xD;      }&#xD;    }&#xD;    return r;&#xD;  }&#xD;&#xD;  BN.prototype._parseHex = function _parseHex (number, start) {&#xD;    // Create possibly bigger array to ensure that it fits the number&#xD;    this.length = Math.ceil((number.length - start) / 6);&#xD;    this.words = new Array(this.length);&#xD;    for (var i = 0; i &lt; this.length; i++) {&#xD;      this.words[i] = 0;&#xD;    }&#xD;&#xD;    var j, w;&#xD;    // Scan 24-bit chunks and add them to the number&#xD;    var off = 0;&#xD;    for (i = number.length - 6, j = 0; i &gt;= start; i -= 6) {&#xD;      w = parseHex(number, i, i + 6);&#xD;      this.words[j] |= (w &lt;&lt; off) &amp; 0x3ffffff;&#xD;      // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb&#xD;      this.words[j + 1] |= w &gt;&gt;&gt; (26 - off) &amp; 0x3fffff;&#xD;      off += 24;&#xD;      if (off &gt;= 26) {&#xD;        off -= 26;&#xD;        j++;&#xD;      }&#xD;    }&#xD;    if (i + 6 !== start) {&#xD;      w = parseHex(number, start, i + 6);&#xD;      this.words[j] |= (w &lt;&lt; off) &amp; 0x3ffffff;&#xD;      this.words[j + 1] |= w &gt;&gt;&gt; (26 - off) &amp; 0x3fffff;&#xD;    }&#xD;    this.strip();&#xD;  };&#xD;&#xD;  function parseBase (str, start, end, mul) {&#xD;    var r = 0;&#xD;    var len = Math.min(str.length, end);&#xD;    for (var i = start; i &lt; len; i++) {&#xD;      var c = str.charCodeAt(i) - 48;&#xD;&#xD;      r *= mul;&#xD;&#xD;      // &apos;a&apos;&#xD;      if (c &gt;= 49) {&#xD;        r += c - 49 + 0xa;&#xD;&#xD;      // &apos;A&apos;&#xD;      } else if (c &gt;= 17) {&#xD;        r += c - 17 + 0xa;&#xD;&#xD;      // &apos;0&apos; - &apos;9&apos;&#xD;      } else {&#xD;        r += c;&#xD;      }&#xD;    }&#xD;    return r;&#xD;  }&#xD;&#xD;  BN.prototype._parseBase = function _parseBase (number, base, start) {&#xD;    // Initialize as zero&#xD;    this.words = [ 0 ];&#xD;    this.length = 1;&#xD;&#xD;    // Find length of limb in base&#xD;    for (var limbLen = 0, limbPow = 1; limbPow &lt;= 0x3ffffff; limbPow *= base) {&#xD;      limbLen++;&#xD;    }&#xD;    limbLen--;&#xD;    limbPow = (limbPow / base) | 0;&#xD;&#xD;    var total = number.length - start;&#xD;    var mod = total % limbLen;&#xD;    var end = Math.min(total, total - mod) + start;&#xD;&#xD;    var word = 0;&#xD;    for (var i = start; i &lt; end; i += limbLen) {&#xD;      word = parseBase(number, i, i + limbLen, base);&#xD;&#xD;      this.imuln(limbPow);&#xD;      if (this.words[0] + word &lt; 0x4000000) {&#xD;        this.words[0] += word;&#xD;      } else {&#xD;        this._iaddn(word);&#xD;      }&#xD;    }&#xD;&#xD;    if (mod !== 0) {&#xD;      var pow = 1;&#xD;      word = parseBase(number, i, number.length, base);&#xD;&#xD;      for (i = 0; i &lt; mod; i++) {&#xD;        pow *= base;&#xD;      }&#xD;&#xD;      this.imuln(pow);&#xD;      if (this.words[0] + word &lt; 0x4000000) {&#xD;        this.words[0] += word;&#xD;      } else {&#xD;        this._iaddn(word);&#xD;      }&#xD;    }&#xD;  };&#xD;&#xD;  BN.prototype.copy = function copy (dest) {&#xD;    dest.words = new Array(this.length);&#xD;    for (var i = 0; i &lt; this.length; i++) {&#xD;      dest.words[i] = this.words[i];&#xD;    }&#xD;    dest.length = this.length;&#xD;    dest.negative = this.negative;&#xD;    dest.red = this.red;&#xD;  };&#xD;&#xD;  BN.prototype.clone = function clone () {&#xD;    var r = new BN(null);&#xD;    this.copy(r);&#xD;    return r;&#xD;  };&#xD;&#xD;  BN.prototype._expand = function _expand (size) {&#xD;    while (this.length &lt; size) {&#xD;      this.words[this.length++] = 0;&#xD;    }&#xD;    return this;&#xD;  };&#xD;&#xD;  // Remove leading `0` from `this`&#xD;  BN.prototype.strip = function strip () {&#xD;    while (this.length &gt; 1 &amp;&amp; this.words[this.length - 1] === 0) {&#xD;      this.length--;&#xD;    }&#xD;    return this._normSign();&#xD;  };&#xD;&#xD;  BN.prototype._normSign = function _normSign () {&#xD;    // -0 = 0&#xD;    if (this.length === 1 &amp;&amp; this.words[0] === 0) {&#xD;      this.negative = 0;&#xD;    }&#xD;    return this;&#xD;  };&#xD;&#xD;  BN.prototype.inspect = function inspect () {&#xD;    return (this.red ? &apos;&lt;BN-R: &apos; : &apos;&lt;BN: &apos;) + this.toString(16) + &apos;&gt;&apos;;&#xD;  };&#xD;&#xD;  /*&#xD;&#xD;  var zeros = [];&#xD;  var groupSizes = [];&#xD;  var groupBases = [];&#xD;&#xD;  var s = &apos;&apos;;&#xD;  var i = -1;&#xD;  while (++i &lt; BN.wordSize) {&#xD;    zeros[i] = s;&#xD;    s += &apos;0&apos;;&#xD;  }&#xD;  groupSizes[0] = 0;&#xD;  groupSizes[1] = 0;&#xD;  groupBases[0] = 0;&#xD;  groupBases[1] = 0;&#xD;  var base = 2 - 1;&#xD;  while (++base &lt; 36 + 1) {&#xD;    var groupSize = 0;&#xD;    var groupBase = 1;&#xD;    while (groupBase &lt; (1 &lt;&lt; BN.wordSize) / base) {&#xD;      groupBase *= base;&#xD;      groupSize += 1;&#xD;    }&#xD;    groupSizes[base] = groupSize;&#xD;    groupBases[base] = groupBase;&#xD;  }&#xD;&#xD;  */&#xD;&#xD;  var zeros = [&#xD;    &apos;&apos;,&#xD;    &apos;0&apos;,&#xD;    &apos;00&apos;,&#xD;    &apos;000&apos;,&#xD;    &apos;0000&apos;,&#xD;    &apos;00000&apos;,&#xD;    &apos;000000&apos;,&#xD;    &apos;0000000&apos;,&#xD;    &apos;00000000&apos;,&#xD;    &apos;000000000&apos;,&#xD;    &apos;0000000000&apos;,&#xD;    &apos;00000000000&apos;,&#xD;    &apos;000000000000&apos;,&#xD;    &apos;0000000000000&apos;,&#xD;    &apos;00000000000000&apos;,&#xD;    &apos;000000000000000&apos;,&#xD;    &apos;0000000000000000&apos;,&#xD;    &apos;00000000000000000&apos;,&#xD;    &apos;000000000000000000&apos;,&#xD;    &apos;0000000000000000000&apos;,&#xD;    &apos;00000000000000000000&apos;,&#xD;    &apos;000000000000000000000&apos;,&#xD;    &apos;0000000000000000000000&apos;,&#xD;    &apos;00000000000000000000000&apos;,&#xD;    &apos;000000000000000000000000&apos;,&#xD;    &apos;0000000000000000000000000&apos;&#xD;  ];&#xD;&#xD;  var groupSizes = [&#xD;    0, 0,&#xD;    25, 16, 12, 11, 10, 9, 8,&#xD;    8, 7, 7, 7, 7, 6, 6,&#xD;    6, 6, 6, 6, 6, 5, 5,&#xD;    5, 5, 5, 5, 5, 5, 5,&#xD;    5, 5, 5, 5, 5, 5, 5&#xD;  ];&#xD;&#xD;  var groupBases = [&#xD;    0, 0,&#xD;    33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,&#xD;    43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,&#xD;    16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,&#xD;    6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,&#xD;    24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176&#xD;  ];&#xD;&#xD;  BN.prototype.toString = function toString (base, padding) {&#xD;    base = base || 10;&#xD;    padding = padding | 0 || 1;&#xD;&#xD;    var out;&#xD;    if (base === 16 || base === &apos;hex&apos;) {&#xD;      out = &apos;&apos;;&#xD;      var off = 0;&#xD;      var carry = 0;&#xD;      for (var i = 0; i &lt; this.length; i++) {&#xD;        var w = this.words[i];&#xD;        var word = (((w &lt;&lt; off) | carry) &amp; 0xffffff).toString(16);&#xD;        carry = (w &gt;&gt;&gt; (24 - off)) &amp; 0xffffff;&#xD;        if (carry !== 0 || i !== this.length - 1) {&#xD;          out = zeros[6 - word.length] + word + out;&#xD;        } else {&#xD;          out = word + out;&#xD;        }&#xD;        off += 2;&#xD;        if (off &gt;= 26) {&#xD;          off -= 26;&#xD;          i--;&#xD;        }&#xD;      }&#xD;      if (carry !== 0) {&#xD;        out = carry.toString(16) + out;&#xD;      }&#xD;      while (out.length % padding !== 0) {&#xD;        out = &apos;0&apos; + out;&#xD;      }&#xD;      if (this.negative !== 0) {&#xD;        out = &apos;-&apos; + out;&#xD;      }&#xD;      return out;&#xD;    }&#xD;&#xD;    if (base === (base | 0) &amp;&amp; base &gt;= 2 &amp;&amp; base &lt;= 36) {&#xD;      // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));&#xD;      var groupSize = groupSizes[base];&#xD;      // var groupBase = Math.pow(base, groupSize);&#xD;      var groupBase = groupBases[base];&#xD;      out = &apos;&apos;;&#xD;      var c = this.clone();&#xD;      c.negative = 0;&#xD;      while (!c.isZero()) {&#xD;        var r = c.modn(groupBase).toString(base);&#xD;        c = c.idivn(groupBase);&#xD;&#xD;        if (!c.isZero()) {&#xD;          out = zeros[groupSize - r.length] + r + out;&#xD;        } else {&#xD;          out = r + out;&#xD;        }&#xD;      }&#xD;      if (this.isZero()) {&#xD;        out = &apos;0&apos; + out;&#xD;      }&#xD;      while (out.length % padding !== 0) {&#xD;        out = &apos;0&apos; + out;&#xD;      }&#xD;      if (this.negative !== 0) {&#xD;        out = &apos;-&apos; + out;&#xD;      }&#xD;      return out;&#xD;    }&#xD;&#xD;    assert(false, &apos;Base should be between 2 and 36&apos;);&#xD;  };&#xD;&#xD;  BN.prototype.toNumber = function toNumber () {&#xD;    var ret = this.words[0];&#xD;    if (this.length === 2) {&#xD;      ret += this.words[1] * 0x4000000;&#xD;    } else if (this.length === 3 &amp;&amp; this.words[2] === 0x01) {&#xD;      // NOTE: at this stage it is known that the top bit is set&#xD;      ret += 0x10000000000000 + (this.words[1] * 0x4000000);&#xD;    } else if (this.length &gt; 2) {&#xD;      assert(false, &apos;Number can only safely store up to 53 bits&apos;);&#xD;    }&#xD;    return (this.negative !== 0) ? -ret : ret;&#xD;  };&#xD;&#xD;  BN.prototype.toJSON = function toJSON () {&#xD;    return this.toString(16);&#xD;  };&#xD;&#xD;  BN.prototype.toBuffer = function toBuffer (endian, length) {&#xD;    assert(typeof Buffer !== &apos;undefined&apos;);&#xD;    return this.toArrayLike(Buffer, endian, length);&#xD;  };&#xD;&#xD;  BN.prototype.toArray = function toArray (endian, length) {&#xD;    return this.toArrayLike(Array, endian, length);&#xD;  };&#xD;&#xD;  BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {&#xD;    var byteLength = this.byteLength();&#xD;    var reqLength = length || Math.max(1, byteLength);&#xD;    assert(byteLength &lt;= reqLength, &apos;byte array longer than desired length&apos;);&#xD;    assert(reqLength &gt; 0, &apos;Requested array length &lt;= 0&apos;);&#xD;&#xD;    this.strip();&#xD;    var littleEndian = endian === &apos;le&apos;;&#xD;    var res = new ArrayType(reqLength);&#xD;&#xD;    var b, i;&#xD;    var q = this.clone();&#xD;    if (!littleEndian) {&#xD;      // Assume big-endian&#xD;      for (i = 0; i &lt; reqLength - byteLength; i++) {&#xD;        res[i] = 0;&#xD;      }&#xD;&#xD;      for (i = 0; !q.isZero(); i++) {&#xD;        b = q.andln(0xff);&#xD;        q.iushrn(8);&#xD;&#xD;        res[reqLength - i - 1] = b;&#xD;      }&#xD;    } else {&#xD;      for (i = 0; !q.isZero(); i++) {&#xD;        b = q.andln(0xff);&#xD;        q.iushrn(8);&#xD;&#xD;        res[i] = b;&#xD;      }&#xD;&#xD;      for (; i &lt; reqLength; i++) {&#xD;        res[i] = 0;&#xD;      }&#xD;    }&#xD;&#xD;    return res;&#xD;  };&#xD;&#xD;  if (Math.clz32) {&#xD;    BN.prototype._countBits = function _countBits (w) {&#xD;      return 32 - Math.clz32(w);&#xD;    };&#xD;  } else {&#xD;    BN.prototype._countBits = function _countBits (w) {&#xD;      var t = w;&#xD;      var r = 0;&#xD;      if (t &gt;= 0x1000) {&#xD;        r += 13;&#xD;        t &gt;&gt;&gt;= 13;&#xD;      }&#xD;      if (t &gt;= 0x40) {&#xD;        r += 7;&#xD;        t &gt;&gt;&gt;= 7;&#xD;      }&#xD;      if (t &gt;= 0x8) {&#xD;        r += 4;&#xD;        t &gt;&gt;&gt;= 4;&#xD;      }&#xD;      if (t &gt;= 0x02) {&#xD;        r += 2;&#xD;        t &gt;&gt;&gt;= 2;&#xD;      }&#xD;      return r + t;&#xD;    };&#xD;  }&#xD;&#xD;  BN.prototype._zeroBits = function _zeroBits (w) {&#xD;    // Short-cut&#xD;    if (w === 0) return 26;&#xD;&#xD;    var t = w;&#xD;    var r = 0;&#xD;    if ((t &amp; 0x1fff) === 0) {&#xD;      r += 13;&#xD;      t &gt;&gt;&gt;= 13;&#xD;    }&#xD;    if ((t &amp; 0x7f) === 0) {&#xD;      r += 7;&#xD;      t &gt;&gt;&gt;= 7;&#xD;    }&#xD;    if ((t &amp; 0xf) === 0) {&#xD;      r += 4;&#xD;      t &gt;&gt;&gt;= 4;&#xD;    }&#xD;    if ((t &amp; 0x3) === 0) {&#xD;      r += 2;&#xD;      t &gt;&gt;&gt;= 2;&#xD;    }&#xD;    if ((t &amp; 0x1) === 0) {&#xD;      r++;&#xD;    }&#xD;    return r;&#xD;  };&#xD;&#xD;  // Return number of used bits in a BN&#xD;  BN.prototype.bitLength = function bitLength () {&#xD;    var w = this.words[this.length - 1];&#xD;    var hi = this._countBits(w);&#xD;    return (this.length - 1) * 26 + hi;&#xD;  };&#xD;&#xD;  function toBitArray (num) {&#xD;    var w = new Array(num.bitLength());&#xD;&#xD;    for (var bit = 0; bit &lt; w.length; bit++) {&#xD;      var off = (bit / 26) | 0;&#xD;      var wbit = bit % 26;&#xD;&#xD;      w[bit] = (num.words[off] &amp; (1 &lt;&lt; wbit)) &gt;&gt;&gt; wbit;&#xD;    }&#xD;&#xD;    return w;&#xD;  }&#xD;&#xD;  // Number of trailing zero bits&#xD;  BN.prototype.zeroBits = function zeroBits () {&#xD;    if (this.isZero()) return 0;&#xD;&#xD;    var r = 0;&#xD;    for (var i = 0; i &lt; this.length; i++) {&#xD;      var b = this._zeroBits(this.words[i]);&#xD;      r += b;&#xD;      if (b !== 26) break;&#xD;    }&#xD;    return r;&#xD;  };&#xD;&#xD;  BN.prototype.byteLength = function byteLength () {&#xD;    return Math.ceil(this.bitLength() / 8);&#xD;  };&#xD;&#xD;  BN.prototype.toTwos = function toTwos (width) {&#xD;    if (this.negative !== 0) {&#xD;      return this.abs().inotn(width).iaddn(1);&#xD;    }&#xD;    return this.clone();&#xD;  };&#xD;&#xD;  BN.prototype.fromTwos = function fromTwos (width) {&#xD;    if (this.testn(width - 1)) {&#xD;      return this.notn(width).iaddn(1).ineg();&#xD;    }&#xD;    return this.clone();&#xD;  };&#xD;&#xD;  BN.prototype.isNeg = function isNeg () {&#xD;    return this.negative !== 0;&#xD;  };&#xD;&#xD;  // Return negative clone of `this`&#xD;  BN.prototype.neg = function neg () {&#xD;    return this.clone().ineg();&#xD;  };&#xD;&#xD;  BN.prototype.ineg = function ineg () {&#xD;    if (!this.isZero()) {&#xD;      this.negative ^= 1;&#xD;    }&#xD;&#xD;    return this;&#xD;  };&#xD;&#xD;  // Or `num` with `this` in-place&#xD;  BN.prototype.iuor = function iuor (num) {&#xD;    while (this.length &lt; num.length) {&#xD;      this.words[this.length++] = 0;&#xD;    }&#xD;&#xD;    for (var i = 0; i &lt; num.length; i++) {&#xD;      this.words[i] = this.words[i] | num.words[i];&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.ior = function ior (num) {&#xD;    assert((this.negative | num.negative) === 0);&#xD;    return this.iuor(num);&#xD;  };&#xD;&#xD;  // Or `num` with `this`&#xD;  BN.prototype.or = function or (num) {&#xD;    if (this.length &gt; num.length) return this.clone().ior(num);&#xD;    return num.clone().ior(this);&#xD;  };&#xD;&#xD;  BN.prototype.uor = function uor (num) {&#xD;    if (this.length &gt; num.length) return this.clone().iuor(num);&#xD;    return num.clone().iuor(this);&#xD;  };&#xD;&#xD;  // And `num` with `this` in-place&#xD;  BN.prototype.iuand = function iuand (num) {&#xD;    // b = min-length(num, this)&#xD;    var b;&#xD;    if (this.length &gt; num.length) {&#xD;      b = num;&#xD;    } else {&#xD;      b = this;&#xD;    }&#xD;&#xD;    for (var i = 0; i &lt; b.length; i++) {&#xD;      this.words[i] = this.words[i] &amp; num.words[i];&#xD;    }&#xD;&#xD;    this.length = b.length;&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.iand = function iand (num) {&#xD;    assert((this.negative | num.negative) === 0);&#xD;    return this.iuand(num);&#xD;  };&#xD;&#xD;  // And `num` with `this`&#xD;  BN.prototype.and = function and (num) {&#xD;    if (this.length &gt; num.length) return this.clone().iand(num);&#xD;    return num.clone().iand(this);&#xD;  };&#xD;&#xD;  BN.prototype.uand = function uand (num) {&#xD;    if (this.length &gt; num.length) return this.clone().iuand(num);&#xD;    return num.clone().iuand(this);&#xD;  };&#xD;&#xD;  // Xor `num` with `this` in-place&#xD;  BN.prototype.iuxor = function iuxor (num) {&#xD;    // a.length &gt; b.length&#xD;    var a;&#xD;    var b;&#xD;    if (this.length &gt; num.length) {&#xD;      a = this;&#xD;      b = num;&#xD;    } else {&#xD;      a = num;&#xD;      b = this;&#xD;    }&#xD;&#xD;    for (var i = 0; i &lt; b.length; i++) {&#xD;      this.words[i] = a.words[i] ^ b.words[i];&#xD;    }&#xD;&#xD;    if (this !== a) {&#xD;      for (; i &lt; a.length; i++) {&#xD;        this.words[i] = a.words[i];&#xD;      }&#xD;    }&#xD;&#xD;    this.length = a.length;&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.ixor = function ixor (num) {&#xD;    assert((this.negative | num.negative) === 0);&#xD;    return this.iuxor(num);&#xD;  };&#xD;&#xD;  // Xor `num` with `this`&#xD;  BN.prototype.xor = function xor (num) {&#xD;    if (this.length &gt; num.length) return this.clone().ixor(num);&#xD;    return num.clone().ixor(this);&#xD;  };&#xD;&#xD;  BN.prototype.uxor = function uxor (num) {&#xD;    if (this.length &gt; num.length) return this.clone().iuxor(num);&#xD;    return num.clone().iuxor(this);&#xD;  };&#xD;&#xD;  // Not ``this`` with ``width`` bitwidth&#xD;  BN.prototype.inotn = function inotn (width) {&#xD;    assert(typeof width === &apos;number&apos; &amp;&amp; width &gt;= 0);&#xD;&#xD;    var bytesNeeded = Math.ceil(width / 26) | 0;&#xD;    var bitsLeft = width % 26;&#xD;&#xD;    // Extend the buffer with leading zeroes&#xD;    this._expand(bytesNeeded);&#xD;&#xD;    if (bitsLeft &gt; 0) {&#xD;      bytesNeeded--;&#xD;    }&#xD;&#xD;    // Handle complete words&#xD;    for (var i = 0; i &lt; bytesNeeded; i++) {&#xD;      this.words[i] = &#126;this.words[i] &amp; 0x3ffffff;&#xD;    }&#xD;&#xD;    // Handle the residue&#xD;    if (bitsLeft &gt; 0) {&#xD;      this.words[i] = &#126;this.words[i] &amp; (0x3ffffff &gt;&gt; (26 - bitsLeft));&#xD;    }&#xD;&#xD;    // And remove leading zeroes&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.notn = function notn (width) {&#xD;    return this.clone().inotn(width);&#xD;  };&#xD;&#xD;  // Set `bit` of `this`&#xD;  BN.prototype.setn = function setn (bit, val) {&#xD;    assert(typeof bit === &apos;number&apos; &amp;&amp; bit &gt;= 0);&#xD;&#xD;    var off = (bit / 26) | 0;&#xD;    var wbit = bit % 26;&#xD;&#xD;    this._expand(off + 1);&#xD;&#xD;    if (val) {&#xD;      this.words[off] = this.words[off] | (1 &lt;&lt; wbit);&#xD;    } else {&#xD;      this.words[off] = this.words[off] &amp; &#126;(1 &lt;&lt; wbit);&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  // Add `num` to `this` in-place&#xD;  BN.prototype.iadd = function iadd (num) {&#xD;    var r;&#xD;&#xD;    // negative + positive&#xD;    if (this.negative !== 0 &amp;&amp; num.negative === 0) {&#xD;      this.negative = 0;&#xD;      r = this.isub(num);&#xD;      this.negative ^= 1;&#xD;      return this._normSign();&#xD;&#xD;    // positive + negative&#xD;    } else if (this.negative === 0 &amp;&amp; num.negative !== 0) {&#xD;      num.negative = 0;&#xD;      r = this.isub(num);&#xD;      num.negative = 1;&#xD;      return r._normSign();&#xD;    }&#xD;&#xD;    // a.length &gt; b.length&#xD;    var a, b;&#xD;    if (this.length &gt; num.length) {&#xD;      a = this;&#xD;      b = num;&#xD;    } else {&#xD;      a = num;&#xD;      b = this;&#xD;    }&#xD;&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; b.length; i++) {&#xD;      r = (a.words[i] | 0) + (b.words[i] | 0) + carry;&#xD;      this.words[i] = r &amp; 0x3ffffff;&#xD;      carry = r &gt;&gt;&gt; 26;&#xD;    }&#xD;    for (; carry !== 0 &amp;&amp; i &lt; a.length; i++) {&#xD;      r = (a.words[i] | 0) + carry;&#xD;      this.words[i] = r &amp; 0x3ffffff;&#xD;      carry = r &gt;&gt;&gt; 26;&#xD;    }&#xD;&#xD;    this.length = a.length;&#xD;    if (carry !== 0) {&#xD;      this.words[this.length] = carry;&#xD;      this.length++;&#xD;    // Copy the rest of the words&#xD;    } else if (a !== this) {&#xD;      for (; i &lt; a.length; i++) {&#xD;        this.words[i] = a.words[i];&#xD;      }&#xD;    }&#xD;&#xD;    return this;&#xD;  };&#xD;&#xD;  // Add `num` to `this`&#xD;  BN.prototype.add = function add (num) {&#xD;    var res;&#xD;    if (num.negative !== 0 &amp;&amp; this.negative === 0) {&#xD;      num.negative = 0;&#xD;      res = this.sub(num);&#xD;      num.negative ^= 1;&#xD;      return res;&#xD;    } else if (num.negative === 0 &amp;&amp; this.negative !== 0) {&#xD;      this.negative = 0;&#xD;      res = num.sub(this);&#xD;      this.negative = 1;&#xD;      return res;&#xD;    }&#xD;&#xD;    if (this.length &gt; num.length) return this.clone().iadd(num);&#xD;&#xD;    return num.clone().iadd(this);&#xD;  };&#xD;&#xD;  // Subtract `num` from `this` in-place&#xD;  BN.prototype.isub = function isub (num) {&#xD;    // this - (-num) = this + num&#xD;    if (num.negative !== 0) {&#xD;      num.negative = 0;&#xD;      var r = this.iadd(num);&#xD;      num.negative = 1;&#xD;      return r._normSign();&#xD;&#xD;    // -this - num = -(this + num)&#xD;    } else if (this.negative !== 0) {&#xD;      this.negative = 0;&#xD;      this.iadd(num);&#xD;      this.negative = 1;&#xD;      return this._normSign();&#xD;    }&#xD;&#xD;    // At this point both numbers are positive&#xD;    var cmp = this.cmp(num);&#xD;&#xD;    // Optimization - zeroify&#xD;    if (cmp === 0) {&#xD;      this.negative = 0;&#xD;      this.length = 1;&#xD;      this.words[0] = 0;&#xD;      return this;&#xD;    }&#xD;&#xD;    // a &gt; b&#xD;    var a, b;&#xD;    if (cmp &gt; 0) {&#xD;      a = this;&#xD;      b = num;&#xD;    } else {&#xD;      a = num;&#xD;      b = this;&#xD;    }&#xD;&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; b.length; i++) {&#xD;      r = (a.words[i] | 0) - (b.words[i] | 0) + carry;&#xD;      carry = r &gt;&gt; 26;&#xD;      this.words[i] = r &amp; 0x3ffffff;&#xD;    }&#xD;    for (; carry !== 0 &amp;&amp; i &lt; a.length; i++) {&#xD;      r = (a.words[i] | 0) + carry;&#xD;      carry = r &gt;&gt; 26;&#xD;      this.words[i] = r &amp; 0x3ffffff;&#xD;    }&#xD;&#xD;    // Copy rest of the words&#xD;    if (carry === 0 &amp;&amp; i &lt; a.length &amp;&amp; a !== this) {&#xD;      for (; i &lt; a.length; i++) {&#xD;        this.words[i] = a.words[i];&#xD;      }&#xD;    }&#xD;&#xD;    this.length = Math.max(this.length, i);&#xD;&#xD;    if (a !== this) {&#xD;      this.negative = 1;&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  // Subtract `num` from `this`&#xD;  BN.prototype.sub = function sub (num) {&#xD;    return this.clone().isub(num);&#xD;  };&#xD;&#xD;  function smallMulTo (self, num, out) {&#xD;    out.negative = num.negative ^ self.negative;&#xD;    var len = (self.length + num.length) | 0;&#xD;    out.length = len;&#xD;    len = (len - 1) | 0;&#xD;&#xD;    // Peel one iteration (compiler can&apos;t do it, because of code complexity)&#xD;    var a = self.words[0] | 0;&#xD;    var b = num.words[0] | 0;&#xD;    var r = a * b;&#xD;&#xD;    var lo = r &amp; 0x3ffffff;&#xD;    var carry = (r / 0x4000000) | 0;&#xD;    out.words[0] = lo;&#xD;&#xD;    for (var k = 1; k &lt; len; k++) {&#xD;      // Sum all words with the same `i + j = k` and accumulate `ncarry`,&#xD;      // note that ncarry could be &gt;= 0x3ffffff&#xD;      var ncarry = carry &gt;&gt;&gt; 26;&#xD;      var rword = carry &amp; 0x3ffffff;&#xD;      var maxJ = Math.min(k, num.length - 1);&#xD;      for (var j = Math.max(0, k - self.length + 1); j &lt;= maxJ; j++) {&#xD;        var i = (k - j) | 0;&#xD;        a = self.words[i] | 0;&#xD;        b = num.words[j] | 0;&#xD;        r = a * b + rword;&#xD;        ncarry += (r / 0x4000000) | 0;&#xD;        rword = r &amp; 0x3ffffff;&#xD;      }&#xD;      out.words[k] = rword | 0;&#xD;      carry = ncarry | 0;&#xD;    }&#xD;    if (carry !== 0) {&#xD;      out.words[k] = carry | 0;&#xD;    } else {&#xD;      out.length--;&#xD;    }&#xD;&#xD;    return out.strip();&#xD;  }&#xD;&#xD;  // TODO(indutny): it may be reasonable to omit it for users who don&apos;t need&#xD;  // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit&#xD;  // multiplication (like elliptic secp256k1).&#xD;  var comb10MulTo = function comb10MulTo (self, num, out) {&#xD;    var a = self.words;&#xD;    var b = num.words;&#xD;    var o = out.words;&#xD;    var c = 0;&#xD;    var lo;&#xD;    var mid;&#xD;    var hi;&#xD;    var a0 = a[0] | 0;&#xD;    var al0 = a0 &amp; 0x1fff;&#xD;    var ah0 = a0 &gt;&gt;&gt; 13;&#xD;    var a1 = a[1] | 0;&#xD;    var al1 = a1 &amp; 0x1fff;&#xD;    var ah1 = a1 &gt;&gt;&gt; 13;&#xD;    var a2 = a[2] | 0;&#xD;    var al2 = a2 &amp; 0x1fff;&#xD;    var ah2 = a2 &gt;&gt;&gt; 13;&#xD;    var a3 = a[3] | 0;&#xD;    var al3 = a3 &amp; 0x1fff;&#xD;    var ah3 = a3 &gt;&gt;&gt; 13;&#xD;    var a4 = a[4] | 0;&#xD;    var al4 = a4 &amp; 0x1fff;&#xD;    var ah4 = a4 &gt;&gt;&gt; 13;&#xD;    var a5 = a[5] | 0;&#xD;    var al5 = a5 &amp; 0x1fff;&#xD;    var ah5 = a5 &gt;&gt;&gt; 13;&#xD;    var a6 = a[6] | 0;&#xD;    var al6 = a6 &amp; 0x1fff;&#xD;    var ah6 = a6 &gt;&gt;&gt; 13;&#xD;    var a7 = a[7] | 0;&#xD;    var al7 = a7 &amp; 0x1fff;&#xD;    var ah7 = a7 &gt;&gt;&gt; 13;&#xD;    var a8 = a[8] | 0;&#xD;    var al8 = a8 &amp; 0x1fff;&#xD;    var ah8 = a8 &gt;&gt;&gt; 13;&#xD;    var a9 = a[9] | 0;&#xD;    var al9 = a9 &amp; 0x1fff;&#xD;    var ah9 = a9 &gt;&gt;&gt; 13;&#xD;    var b0 = b[0] | 0;&#xD;    var bl0 = b0 &amp; 0x1fff;&#xD;    var bh0 = b0 &gt;&gt;&gt; 13;&#xD;    var b1 = b[1] | 0;&#xD;    var bl1 = b1 &amp; 0x1fff;&#xD;    var bh1 = b1 &gt;&gt;&gt; 13;&#xD;    var b2 = b[2] | 0;&#xD;    var bl2 = b2 &amp; 0x1fff;&#xD;    var bh2 = b2 &gt;&gt;&gt; 13;&#xD;    var b3 = b[3] | 0;&#xD;    var bl3 = b3 &amp; 0x1fff;&#xD;    var bh3 = b3 &gt;&gt;&gt; 13;&#xD;    var b4 = b[4] | 0;&#xD;    var bl4 = b4 &amp; 0x1fff;&#xD;    var bh4 = b4 &gt;&gt;&gt; 13;&#xD;    var b5 = b[5] | 0;&#xD;    var bl5 = b5 &amp; 0x1fff;&#xD;    var bh5 = b5 &gt;&gt;&gt; 13;&#xD;    var b6 = b[6] | 0;&#xD;    var bl6 = b6 &amp; 0x1fff;&#xD;    var bh6 = b6 &gt;&gt;&gt; 13;&#xD;    var b7 = b[7] | 0;&#xD;    var bl7 = b7 &amp; 0x1fff;&#xD;    var bh7 = b7 &gt;&gt;&gt; 13;&#xD;    var b8 = b[8] | 0;&#xD;    var bl8 = b8 &amp; 0x1fff;&#xD;    var bh8 = b8 &gt;&gt;&gt; 13;&#xD;    var b9 = b[9] | 0;&#xD;    var bl9 = b9 &amp; 0x1fff;&#xD;    var bh9 = b9 &gt;&gt;&gt; 13;&#xD;&#xD;    out.negative = self.negative ^ num.negative;&#xD;    out.length = 19;&#xD;    /* k = 0 */&#xD;    lo = Math.imul(al0, bl0);&#xD;    mid = Math.imul(al0, bh0);&#xD;    mid = (mid + Math.imul(ah0, bl0)) | 0;&#xD;    hi = Math.imul(ah0, bh0);&#xD;    var w0 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w0 &gt;&gt;&gt; 26)) | 0;&#xD;    w0 &amp;= 0x3ffffff;&#xD;    /* k = 1 */&#xD;    lo = Math.imul(al1, bl0);&#xD;    mid = Math.imul(al1, bh0);&#xD;    mid = (mid + Math.imul(ah1, bl0)) | 0;&#xD;    hi = Math.imul(ah1, bh0);&#xD;    lo = (lo + Math.imul(al0, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh1)) | 0;&#xD;    var w1 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w1 &gt;&gt;&gt; 26)) | 0;&#xD;    w1 &amp;= 0x3ffffff;&#xD;    /* k = 2 */&#xD;    lo = Math.imul(al2, bl0);&#xD;    mid = Math.imul(al2, bh0);&#xD;    mid = (mid + Math.imul(ah2, bl0)) | 0;&#xD;    hi = Math.imul(ah2, bh0);&#xD;    lo = (lo + Math.imul(al1, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh2)) | 0;&#xD;    var w2 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w2 &gt;&gt;&gt; 26)) | 0;&#xD;    w2 &amp;= 0x3ffffff;&#xD;    /* k = 3 */&#xD;    lo = Math.imul(al3, bl0);&#xD;    mid = Math.imul(al3, bh0);&#xD;    mid = (mid + Math.imul(ah3, bl0)) | 0;&#xD;    hi = Math.imul(ah3, bh0);&#xD;    lo = (lo + Math.imul(al2, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh3)) | 0;&#xD;    var w3 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w3 &gt;&gt;&gt; 26)) | 0;&#xD;    w3 &amp;= 0x3ffffff;&#xD;    /* k = 4 */&#xD;    lo = Math.imul(al4, bl0);&#xD;    mid = Math.imul(al4, bh0);&#xD;    mid = (mid + Math.imul(ah4, bl0)) | 0;&#xD;    hi = Math.imul(ah4, bh0);&#xD;    lo = (lo + Math.imul(al3, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh4)) | 0;&#xD;    var w4 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w4 &gt;&gt;&gt; 26)) | 0;&#xD;    w4 &amp;= 0x3ffffff;&#xD;    /* k = 5 */&#xD;    lo = Math.imul(al5, bl0);&#xD;    mid = Math.imul(al5, bh0);&#xD;    mid = (mid + Math.imul(ah5, bl0)) | 0;&#xD;    hi = Math.imul(ah5, bh0);&#xD;    lo = (lo + Math.imul(al4, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh5)) | 0;&#xD;    var w5 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w5 &gt;&gt;&gt; 26)) | 0;&#xD;    w5 &amp;= 0x3ffffff;&#xD;    /* k = 6 */&#xD;    lo = Math.imul(al6, bl0);&#xD;    mid = Math.imul(al6, bh0);&#xD;    mid = (mid + Math.imul(ah6, bl0)) | 0;&#xD;    hi = Math.imul(ah6, bh0);&#xD;    lo = (lo + Math.imul(al5, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh6)) | 0;&#xD;    var w6 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w6 &gt;&gt;&gt; 26)) | 0;&#xD;    w6 &amp;= 0x3ffffff;&#xD;    /* k = 7 */&#xD;    lo = Math.imul(al7, bl0);&#xD;    mid = Math.imul(al7, bh0);&#xD;    mid = (mid + Math.imul(ah7, bl0)) | 0;&#xD;    hi = Math.imul(ah7, bh0);&#xD;    lo = (lo + Math.imul(al6, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh7)) | 0;&#xD;    var w7 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w7 &gt;&gt;&gt; 26)) | 0;&#xD;    w7 &amp;= 0x3ffffff;&#xD;    /* k = 8 */&#xD;    lo = Math.imul(al8, bl0);&#xD;    mid = Math.imul(al8, bh0);&#xD;    mid = (mid + Math.imul(ah8, bl0)) | 0;&#xD;    hi = Math.imul(ah8, bh0);&#xD;    lo = (lo + Math.imul(al7, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh8)) | 0;&#xD;    var w8 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w8 &gt;&gt;&gt; 26)) | 0;&#xD;    w8 &amp;= 0x3ffffff;&#xD;    /* k = 9 */&#xD;    lo = Math.imul(al9, bl0);&#xD;    mid = Math.imul(al9, bh0);&#xD;    mid = (mid + Math.imul(ah9, bl0)) | 0;&#xD;    hi = Math.imul(ah9, bh0);&#xD;    lo = (lo + Math.imul(al8, bl1)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh1)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl1)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh1)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al0, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al0, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah0, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah0, bh9)) | 0;&#xD;    var w9 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w9 &gt;&gt;&gt; 26)) | 0;&#xD;    w9 &amp;= 0x3ffffff;&#xD;    /* k = 10 */&#xD;    lo = Math.imul(al9, bl1);&#xD;    mid = Math.imul(al9, bh1);&#xD;    mid = (mid + Math.imul(ah9, bl1)) | 0;&#xD;    hi = Math.imul(ah9, bh1);&#xD;    lo = (lo + Math.imul(al8, bl2)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh2)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl2)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh2)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al1, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al1, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah1, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah1, bh9)) | 0;&#xD;    var w10 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w10 &gt;&gt;&gt; 26)) | 0;&#xD;    w10 &amp;= 0x3ffffff;&#xD;    /* k = 11 */&#xD;    lo = Math.imul(al9, bl2);&#xD;    mid = Math.imul(al9, bh2);&#xD;    mid = (mid + Math.imul(ah9, bl2)) | 0;&#xD;    hi = Math.imul(ah9, bh2);&#xD;    lo = (lo + Math.imul(al8, bl3)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh3)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl3)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh3)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al2, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al2, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah2, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah2, bh9)) | 0;&#xD;    var w11 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w11 &gt;&gt;&gt; 26)) | 0;&#xD;    w11 &amp;= 0x3ffffff;&#xD;    /* k = 12 */&#xD;    lo = Math.imul(al9, bl3);&#xD;    mid = Math.imul(al9, bh3);&#xD;    mid = (mid + Math.imul(ah9, bl3)) | 0;&#xD;    hi = Math.imul(ah9, bh3);&#xD;    lo = (lo + Math.imul(al8, bl4)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh4)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl4)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh4)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al3, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al3, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah3, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah3, bh9)) | 0;&#xD;    var w12 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w12 &gt;&gt;&gt; 26)) | 0;&#xD;    w12 &amp;= 0x3ffffff;&#xD;    /* k = 13 */&#xD;    lo = Math.imul(al9, bl4);&#xD;    mid = Math.imul(al9, bh4);&#xD;    mid = (mid + Math.imul(ah9, bl4)) | 0;&#xD;    hi = Math.imul(ah9, bh4);&#xD;    lo = (lo + Math.imul(al8, bl5)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh5)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl5)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh5)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al4, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al4, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah4, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah4, bh9)) | 0;&#xD;    var w13 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w13 &gt;&gt;&gt; 26)) | 0;&#xD;    w13 &amp;= 0x3ffffff;&#xD;    /* k = 14 */&#xD;    lo = Math.imul(al9, bl5);&#xD;    mid = Math.imul(al9, bh5);&#xD;    mid = (mid + Math.imul(ah9, bl5)) | 0;&#xD;    hi = Math.imul(ah9, bh5);&#xD;    lo = (lo + Math.imul(al8, bl6)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh6)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl6)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh6)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al5, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al5, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah5, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah5, bh9)) | 0;&#xD;    var w14 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w14 &gt;&gt;&gt; 26)) | 0;&#xD;    w14 &amp;= 0x3ffffff;&#xD;    /* k = 15 */&#xD;    lo = Math.imul(al9, bl6);&#xD;    mid = Math.imul(al9, bh6);&#xD;    mid = (mid + Math.imul(ah9, bl6)) | 0;&#xD;    hi = Math.imul(ah9, bh6);&#xD;    lo = (lo + Math.imul(al8, bl7)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh7)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl7)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh7)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al6, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al6, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah6, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah6, bh9)) | 0;&#xD;    var w15 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w15 &gt;&gt;&gt; 26)) | 0;&#xD;    w15 &amp;= 0x3ffffff;&#xD;    /* k = 16 */&#xD;    lo = Math.imul(al9, bl7);&#xD;    mid = Math.imul(al9, bh7);&#xD;    mid = (mid + Math.imul(ah9, bl7)) | 0;&#xD;    hi = Math.imul(ah9, bh7);&#xD;    lo = (lo + Math.imul(al8, bl8)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh8)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl8)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh8)) | 0;&#xD;    lo = (lo + Math.imul(al7, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al7, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah7, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah7, bh9)) | 0;&#xD;    var w16 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w16 &gt;&gt;&gt; 26)) | 0;&#xD;    w16 &amp;= 0x3ffffff;&#xD;    /* k = 17 */&#xD;    lo = Math.imul(al9, bl8);&#xD;    mid = Math.imul(al9, bh8);&#xD;    mid = (mid + Math.imul(ah9, bl8)) | 0;&#xD;    hi = Math.imul(ah9, bh8);&#xD;    lo = (lo + Math.imul(al8, bl9)) | 0;&#xD;    mid = (mid + Math.imul(al8, bh9)) | 0;&#xD;    mid = (mid + Math.imul(ah8, bl9)) | 0;&#xD;    hi = (hi + Math.imul(ah8, bh9)) | 0;&#xD;    var w17 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w17 &gt;&gt;&gt; 26)) | 0;&#xD;    w17 &amp;= 0x3ffffff;&#xD;    /* k = 18 */&#xD;    lo = Math.imul(al9, bl9);&#xD;    mid = Math.imul(al9, bh9);&#xD;    mid = (mid + Math.imul(ah9, bl9)) | 0;&#xD;    hi = Math.imul(ah9, bh9);&#xD;    var w18 = (((c + lo) | 0) + ((mid &amp; 0x1fff) &lt;&lt; 13)) | 0;&#xD;    c = (((hi + (mid &gt;&gt;&gt; 13)) | 0) + (w18 &gt;&gt;&gt; 26)) | 0;&#xD;    w18 &amp;= 0x3ffffff;&#xD;    o[0] = w0;&#xD;    o[1] = w1;&#xD;    o[2] = w2;&#xD;    o[3] = w3;&#xD;    o[4] = w4;&#xD;    o[5] = w5;&#xD;    o[6] = w6;&#xD;    o[7] = w7;&#xD;    o[8] = w8;&#xD;    o[9] = w9;&#xD;    o[10] = w10;&#xD;    o[11] = w11;&#xD;    o[12] = w12;&#xD;    o[13] = w13;&#xD;    o[14] = w14;&#xD;    o[15] = w15;&#xD;    o[16] = w16;&#xD;    o[17] = w17;&#xD;    o[18] = w18;&#xD;    if (c !== 0) {&#xD;      o[19] = c;&#xD;      out.length++;&#xD;    }&#xD;    return out;&#xD;  };&#xD;&#xD;  // Polyfill comb&#xD;  if (!Math.imul) {&#xD;    comb10MulTo = smallMulTo;&#xD;  }&#xD;&#xD;  function bigMulTo (self, num, out) {&#xD;    out.negative = num.negative ^ self.negative;&#xD;    out.length = self.length + num.length;&#xD;&#xD;    var carry = 0;&#xD;    var hncarry = 0;&#xD;    for (var k = 0; k &lt; out.length - 1; k++) {&#xD;      // Sum all words with the same `i + j = k` and accumulate `ncarry`,&#xD;      // note that ncarry could be &gt;= 0x3ffffff&#xD;      var ncarry = hncarry;&#xD;      hncarry = 0;&#xD;      var rword = carry &amp; 0x3ffffff;&#xD;      var maxJ = Math.min(k, num.length - 1);&#xD;      for (var j = Math.max(0, k - self.length + 1); j &lt;= maxJ; j++) {&#xD;        var i = k - j;&#xD;        var a = self.words[i] | 0;&#xD;        var b = num.words[j] | 0;&#xD;        var r = a * b;&#xD;&#xD;        var lo = r &amp; 0x3ffffff;&#xD;        ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;&#xD;        lo = (lo + rword) | 0;&#xD;        rword = lo &amp; 0x3ffffff;&#xD;        ncarry = (ncarry + (lo &gt;&gt;&gt; 26)) | 0;&#xD;&#xD;        hncarry += ncarry &gt;&gt;&gt; 26;&#xD;        ncarry &amp;= 0x3ffffff;&#xD;      }&#xD;      out.words[k] = rword;&#xD;      carry = ncarry;&#xD;      ncarry = hncarry;&#xD;    }&#xD;    if (carry !== 0) {&#xD;      out.words[k] = carry;&#xD;    } else {&#xD;      out.length--;&#xD;    }&#xD;&#xD;    return out.strip();&#xD;  }&#xD;&#xD;  function jumboMulTo (self, num, out) {&#xD;    var fftm = new FFTM();&#xD;    return fftm.mulp(self, num, out);&#xD;  }&#xD;&#xD;  BN.prototype.mulTo = function mulTo (num, out) {&#xD;    var res;&#xD;    var len = this.length + num.length;&#xD;    if (this.length === 10 &amp;&amp; num.length === 10) {&#xD;      res = comb10MulTo(this, num, out);&#xD;    } else if (len &lt; 63) {&#xD;      res = smallMulTo(this, num, out);&#xD;    } else if (len &lt; 1024) {&#xD;      res = bigMulTo(this, num, out);&#xD;    } else {&#xD;      res = jumboMulTo(this, num, out);&#xD;    }&#xD;&#xD;    return res;&#xD;  };&#xD;&#xD;  // Cooley-Tukey algorithm for FFT&#xD;  // slightly revisited to rely on looping instead of recursion&#xD;&#xD;  function FFTM (x, y) {&#xD;    this.x = x;&#xD;    this.y = y;&#xD;  }&#xD;&#xD;  FFTM.prototype.makeRBT = function makeRBT (N) {&#xD;    var t = new Array(N);&#xD;    var l = BN.prototype._countBits(N) - 1;&#xD;    for (var i = 0; i &lt; N; i++) {&#xD;      t[i] = this.revBin(i, l, N);&#xD;    }&#xD;&#xD;    return t;&#xD;  };&#xD;&#xD;  // Returns binary-reversed representation of `x`&#xD;  FFTM.prototype.revBin = function revBin (x, l, N) {&#xD;    if (x === 0 || x === N - 1) return x;&#xD;&#xD;    var rb = 0;&#xD;    for (var i = 0; i &lt; l; i++) {&#xD;      rb |= (x &amp; 1) &lt;&lt; (l - i - 1);&#xD;      x &gt;&gt;= 1;&#xD;    }&#xD;&#xD;    return rb;&#xD;  };&#xD;&#xD;  // Performs "tweedling" phase, therefore &apos;emulating&apos;&#xD;  // behaviour of the recursive algorithm&#xD;  FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {&#xD;    for (var i = 0; i &lt; N; i++) {&#xD;      rtws[i] = rws[rbt[i]];&#xD;      itws[i] = iws[rbt[i]];&#xD;    }&#xD;  };&#xD;&#xD;  FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {&#xD;    this.permute(rbt, rws, iws, rtws, itws, N);&#xD;&#xD;    for (var s = 1; s &lt; N; s &lt;&lt;= 1) {&#xD;      var l = s &lt;&lt; 1;&#xD;&#xD;      var rtwdf = Math.cos(2 * Math.PI / l);&#xD;      var itwdf = Math.sin(2 * Math.PI / l);&#xD;&#xD;      for (var p = 0; p &lt; N; p += l) {&#xD;        var rtwdf_ = rtwdf;&#xD;        var itwdf_ = itwdf;&#xD;&#xD;        for (var j = 0; j &lt; s; j++) {&#xD;          var re = rtws[p + j];&#xD;          var ie = itws[p + j];&#xD;&#xD;          var ro = rtws[p + j + s];&#xD;          var io = itws[p + j + s];&#xD;&#xD;          var rx = rtwdf_ * ro - itwdf_ * io;&#xD;&#xD;          io = rtwdf_ * io + itwdf_ * ro;&#xD;          ro = rx;&#xD;&#xD;          rtws[p + j] = re + ro;&#xD;          itws[p + j] = ie + io;&#xD;&#xD;          rtws[p + j + s] = re - ro;&#xD;          itws[p + j + s] = ie - io;&#xD;&#xD;          /* jshint maxdepth : false */&#xD;          if (j !== l) {&#xD;            rx = rtwdf * rtwdf_ - itwdf * itwdf_;&#xD;&#xD;            itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;&#xD;            rtwdf_ = rx;&#xD;          }&#xD;        }&#xD;      }&#xD;    }&#xD;  };&#xD;&#xD;  FFTM.prototype.guessLen13b = function guessLen13b (n, m) {&#xD;    var N = Math.max(m, n) | 1;&#xD;    var odd = N &amp; 1;&#xD;    var i = 0;&#xD;    for (N = N / 2 | 0; N; N = N &gt;&gt;&gt; 1) {&#xD;      i++;&#xD;    }&#xD;&#xD;    return 1 &lt;&lt; i + 1 + odd;&#xD;  };&#xD;&#xD;  FFTM.prototype.conjugate = function conjugate (rws, iws, N) {&#xD;    if (N &lt;= 1) return;&#xD;&#xD;    for (var i = 0; i &lt; N / 2; i++) {&#xD;      var t = rws[i];&#xD;&#xD;      rws[i] = rws[N - i - 1];&#xD;      rws[N - i - 1] = t;&#xD;&#xD;      t = iws[i];&#xD;&#xD;      iws[i] = -iws[N - i - 1];&#xD;      iws[N - i - 1] = -t;&#xD;    }&#xD;  };&#xD;&#xD;  FFTM.prototype.normalize13b = function normalize13b (ws, N) {&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; N / 2; i++) {&#xD;      var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +&#xD;        Math.round(ws[2 * i] / N) +&#xD;        carry;&#xD;&#xD;      ws[i] = w &amp; 0x3ffffff;&#xD;&#xD;      if (w &lt; 0x4000000) {&#xD;        carry = 0;&#xD;      } else {&#xD;        carry = w / 0x4000000 | 0;&#xD;      }&#xD;    }&#xD;&#xD;    return ws;&#xD;  };&#xD;&#xD;  FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      carry = carry + (ws[i] | 0);&#xD;&#xD;      rws[2 * i] = carry &amp; 0x1fff; carry = carry &gt;&gt;&gt; 13;&#xD;      rws[2 * i + 1] = carry &amp; 0x1fff; carry = carry &gt;&gt;&gt; 13;&#xD;    }&#xD;&#xD;    // Pad with zeroes&#xD;    for (i = 2 * len; i &lt; N; ++i) {&#xD;      rws[i] = 0;&#xD;    }&#xD;&#xD;    assert(carry === 0);&#xD;    assert((carry &amp; &#126;0x1fff) === 0);&#xD;  };&#xD;&#xD;  FFTM.prototype.stub = function stub (N) {&#xD;    var ph = new Array(N);&#xD;    for (var i = 0; i &lt; N; i++) {&#xD;      ph[i] = 0;&#xD;    }&#xD;&#xD;    return ph;&#xD;  };&#xD;&#xD;  FFTM.prototype.mulp = function mulp (x, y, out) {&#xD;    var N = 2 * this.guessLen13b(x.length, y.length);&#xD;&#xD;    var rbt = this.makeRBT(N);&#xD;&#xD;    var _ = this.stub(N);&#xD;&#xD;    var rws = new Array(N);&#xD;    var rwst = new Array(N);&#xD;    var iwst = new Array(N);&#xD;&#xD;    var nrws = new Array(N);&#xD;    var nrwst = new Array(N);&#xD;    var niwst = new Array(N);&#xD;&#xD;    var rmws = out.words;&#xD;    rmws.length = N;&#xD;&#xD;    this.convert13b(x.words, x.length, rws, N);&#xD;    this.convert13b(y.words, y.length, nrws, N);&#xD;&#xD;    this.transform(rws, _, rwst, iwst, N, rbt);&#xD;    this.transform(nrws, _, nrwst, niwst, N, rbt);&#xD;&#xD;    for (var i = 0; i &lt; N; i++) {&#xD;      var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];&#xD;      iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];&#xD;      rwst[i] = rx;&#xD;    }&#xD;&#xD;    this.conjugate(rwst, iwst, N);&#xD;    this.transform(rwst, iwst, rmws, _, N, rbt);&#xD;    this.conjugate(rmws, _, N);&#xD;    this.normalize13b(rmws, N);&#xD;&#xD;    out.negative = x.negative ^ y.negative;&#xD;    out.length = x.length + y.length;&#xD;    return out.strip();&#xD;  };&#xD;&#xD;  // Multiply `this` by `num`&#xD;  BN.prototype.mul = function mul (num) {&#xD;    var out = new BN(null);&#xD;    out.words = new Array(this.length + num.length);&#xD;    return this.mulTo(num, out);&#xD;  };&#xD;&#xD;  // Multiply employing FFT&#xD;  BN.prototype.mulf = function mulf (num) {&#xD;    var out = new BN(null);&#xD;    out.words = new Array(this.length + num.length);&#xD;    return jumboMulTo(this, num, out);&#xD;  };&#xD;&#xD;  // In-place Multiplication&#xD;  BN.prototype.imul = function imul (num) {&#xD;    return this.clone().mulTo(num, this);&#xD;  };&#xD;&#xD;  BN.prototype.imuln = function imuln (num) {&#xD;    assert(typeof num === &apos;number&apos;);&#xD;    assert(num &lt; 0x4000000);&#xD;&#xD;    // Carry&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; this.length; i++) {&#xD;      var w = (this.words[i] | 0) * num;&#xD;      var lo = (w &amp; 0x3ffffff) + (carry &amp; 0x3ffffff);&#xD;      carry &gt;&gt;= 26;&#xD;      carry += (w / 0x4000000) | 0;&#xD;      // NOTE: lo is 27bit maximum&#xD;      carry += lo &gt;&gt;&gt; 26;&#xD;      this.words[i] = lo &amp; 0x3ffffff;&#xD;    }&#xD;&#xD;    if (carry !== 0) {&#xD;      this.words[i] = carry;&#xD;      this.length++;&#xD;    }&#xD;&#xD;    return this;&#xD;  };&#xD;&#xD;  BN.prototype.muln = function muln (num) {&#xD;    return this.clone().imuln(num);&#xD;  };&#xD;&#xD;  // `this` * `this`&#xD;  BN.prototype.sqr = function sqr () {&#xD;    return this.mul(this);&#xD;  };&#xD;&#xD;  // `this` * `this` in-place&#xD;  BN.prototype.isqr = function isqr () {&#xD;    return this.imul(this.clone());&#xD;  };&#xD;&#xD;  // Math.pow(`this`, `num`)&#xD;  BN.prototype.pow = function pow (num) {&#xD;    var w = toBitArray(num);&#xD;    if (w.length === 0) return new BN(1);&#xD;&#xD;    // Skip leading zeroes&#xD;    var res = this;&#xD;    for (var i = 0; i &lt; w.length; i++, res = res.sqr()) {&#xD;      if (w[i] !== 0) break;&#xD;    }&#xD;&#xD;    if (++i &lt; w.length) {&#xD;      for (var q = res.sqr(); i &lt; w.length; i++, q = q.sqr()) {&#xD;        if (w[i] === 0) continue;&#xD;&#xD;        res = res.mul(q);&#xD;      }&#xD;    }&#xD;&#xD;    return res;&#xD;  };&#xD;&#xD;  // Shift-left in-place&#xD;  BN.prototype.iushln = function iushln (bits) {&#xD;    assert(typeof bits === &apos;number&apos; &amp;&amp; bits &gt;= 0);&#xD;    var r = bits % 26;&#xD;    var s = (bits - r) / 26;&#xD;    var carryMask = (0x3ffffff &gt;&gt;&gt; (26 - r)) &lt;&lt; (26 - r);&#xD;    var i;&#xD;&#xD;    if (r !== 0) {&#xD;      var carry = 0;&#xD;&#xD;      for (i = 0; i &lt; this.length; i++) {&#xD;        var newCarry = this.words[i] &amp; carryMask;&#xD;        var c = ((this.words[i] | 0) - newCarry) &lt;&lt; r;&#xD;        this.words[i] = c | carry;&#xD;        carry = newCarry &gt;&gt;&gt; (26 - r);&#xD;      }&#xD;&#xD;      if (carry) {&#xD;        this.words[i] = carry;&#xD;        this.length++;&#xD;      }&#xD;    }&#xD;&#xD;    if (s !== 0) {&#xD;      for (i = this.length - 1; i &gt;= 0; i--) {&#xD;        this.words[i + s] = this.words[i];&#xD;      }&#xD;&#xD;      for (i = 0; i &lt; s; i++) {&#xD;        this.words[i] = 0;&#xD;      }&#xD;&#xD;      this.length += s;&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.ishln = function ishln (bits) {&#xD;    // TODO(indutny): implement me&#xD;    assert(this.negative === 0);&#xD;    return this.iushln(bits);&#xD;  };&#xD;&#xD;  // Shift-right in-place&#xD;  // NOTE: `hint` is a lowest bit before trailing zeroes&#xD;  // NOTE: if `extended` is present - it will be filled with destroyed bits&#xD;  BN.prototype.iushrn = function iushrn (bits, hint, extended) {&#xD;    assert(typeof bits === &apos;number&apos; &amp;&amp; bits &gt;= 0);&#xD;    var h;&#xD;    if (hint) {&#xD;      h = (hint - (hint % 26)) / 26;&#xD;    } else {&#xD;      h = 0;&#xD;    }&#xD;&#xD;    var r = bits % 26;&#xD;    var s = Math.min((bits - r) / 26, this.length);&#xD;    var mask = 0x3ffffff ^ ((0x3ffffff &gt;&gt;&gt; r) &lt;&lt; r);&#xD;    var maskedWords = extended;&#xD;&#xD;    h -= s;&#xD;    h = Math.max(0, h);&#xD;&#xD;    // Extended mode, copy masked part&#xD;    if (maskedWords) {&#xD;      for (var i = 0; i &lt; s; i++) {&#xD;        maskedWords.words[i] = this.words[i];&#xD;      }&#xD;      maskedWords.length = s;&#xD;    }&#xD;&#xD;    if (s === 0) {&#xD;      // No-op, we should not move anything at all&#xD;    } else if (this.length &gt; s) {&#xD;      this.length -= s;&#xD;      for (i = 0; i &lt; this.length; i++) {&#xD;        this.words[i] = this.words[i + s];&#xD;      }&#xD;    } else {&#xD;      this.words[0] = 0;&#xD;      this.length = 1;&#xD;    }&#xD;&#xD;    var carry = 0;&#xD;    for (i = this.length - 1; i &gt;= 0 &amp;&amp; (carry !== 0 || i &gt;= h); i--) {&#xD;      var word = this.words[i] | 0;&#xD;      this.words[i] = (carry &lt;&lt; (26 - r)) | (word &gt;&gt;&gt; r);&#xD;      carry = word &amp; mask;&#xD;    }&#xD;&#xD;    // Push carried bits as a mask&#xD;    if (maskedWords &amp;&amp; carry !== 0) {&#xD;      maskedWords.words[maskedWords.length++] = carry;&#xD;    }&#xD;&#xD;    if (this.length === 0) {&#xD;      this.words[0] = 0;&#xD;      this.length = 1;&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.ishrn = function ishrn (bits, hint, extended) {&#xD;    // TODO(indutny): implement me&#xD;    assert(this.negative === 0);&#xD;    return this.iushrn(bits, hint, extended);&#xD;  };&#xD;&#xD;  // Shift-left&#xD;  BN.prototype.shln = function shln (bits) {&#xD;    return this.clone().ishln(bits);&#xD;  };&#xD;&#xD;  BN.prototype.ushln = function ushln (bits) {&#xD;    return this.clone().iushln(bits);&#xD;  };&#xD;&#xD;  // Shift-right&#xD;  BN.prototype.shrn = function shrn (bits) {&#xD;    return this.clone().ishrn(bits);&#xD;  };&#xD;&#xD;  BN.prototype.ushrn = function ushrn (bits) {&#xD;    return this.clone().iushrn(bits);&#xD;  };&#xD;&#xD;  // Test if n bit is set&#xD;  BN.prototype.testn = function testn (bit) {&#xD;    assert(typeof bit === &apos;number&apos; &amp;&amp; bit &gt;= 0);&#xD;    var r = bit % 26;&#xD;    var s = (bit - r) / 26;&#xD;    var q = 1 &lt;&lt; r;&#xD;&#xD;    // Fast case: bit is much higher than all existing words&#xD;    if (this.length &lt;= s) return false;&#xD;&#xD;    // Check bit and return&#xD;    var w = this.words[s];&#xD;&#xD;    return !!(w &amp; q);&#xD;  };&#xD;&#xD;  // Return only lowers bits of number (in-place)&#xD;  BN.prototype.imaskn = function imaskn (bits) {&#xD;    assert(typeof bits === &apos;number&apos; &amp;&amp; bits &gt;= 0);&#xD;    var r = bits % 26;&#xD;    var s = (bits - r) / 26;&#xD;&#xD;    assert(this.negative === 0, &apos;imaskn works only with positive numbers&apos;);&#xD;&#xD;    if (this.length &lt;= s) {&#xD;      return this;&#xD;    }&#xD;&#xD;    if (r !== 0) {&#xD;      s++;&#xD;    }&#xD;    this.length = Math.min(s, this.length);&#xD;&#xD;    if (r !== 0) {&#xD;      var mask = 0x3ffffff ^ ((0x3ffffff &gt;&gt;&gt; r) &lt;&lt; r);&#xD;      this.words[this.length - 1] &amp;= mask;&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  // Return only lowers bits of number&#xD;  BN.prototype.maskn = function maskn (bits) {&#xD;    return this.clone().imaskn(bits);&#xD;  };&#xD;&#xD;  // Add plain number `num` to `this`&#xD;  BN.prototype.iaddn = function iaddn (num) {&#xD;    assert(typeof num === &apos;number&apos;);&#xD;    assert(num &lt; 0x4000000);&#xD;    if (num &lt; 0) return this.isubn(-num);&#xD;&#xD;    // Possible sign change&#xD;    if (this.negative !== 0) {&#xD;      if (this.length === 1 &amp;&amp; (this.words[0] | 0) &lt; num) {&#xD;        this.words[0] = num - (this.words[0] | 0);&#xD;        this.negative = 0;&#xD;        return this;&#xD;      }&#xD;&#xD;      this.negative = 0;&#xD;      this.isubn(num);&#xD;      this.negative = 1;&#xD;      return this;&#xD;    }&#xD;&#xD;    // Add without checks&#xD;    return this._iaddn(num);&#xD;  };&#xD;&#xD;  BN.prototype._iaddn = function _iaddn (num) {&#xD;    this.words[0] += num;&#xD;&#xD;    // Carry&#xD;    for (var i = 0; i &lt; this.length &amp;&amp; this.words[i] &gt;= 0x4000000; i++) {&#xD;      this.words[i] -= 0x4000000;&#xD;      if (i === this.length - 1) {&#xD;        this.words[i + 1] = 1;&#xD;      } else {&#xD;        this.words[i + 1]++;&#xD;      }&#xD;    }&#xD;    this.length = Math.max(this.length, i + 1);&#xD;&#xD;    return this;&#xD;  };&#xD;&#xD;  // Subtract plain number `num` from `this`&#xD;  BN.prototype.isubn = function isubn (num) {&#xD;    assert(typeof num === &apos;number&apos;);&#xD;    assert(num &lt; 0x4000000);&#xD;    if (num &lt; 0) return this.iaddn(-num);&#xD;&#xD;    if (this.negative !== 0) {&#xD;      this.negative = 0;&#xD;      this.iaddn(num);&#xD;      this.negative = 1;&#xD;      return this;&#xD;    }&#xD;&#xD;    this.words[0] -= num;&#xD;&#xD;    if (this.length === 1 &amp;&amp; this.words[0] &lt; 0) {&#xD;      this.words[0] = -this.words[0];&#xD;      this.negative = 1;&#xD;    } else {&#xD;      // Carry&#xD;      for (var i = 0; i &lt; this.length &amp;&amp; this.words[i] &lt; 0; i++) {&#xD;        this.words[i] += 0x4000000;&#xD;        this.words[i + 1] -= 1;&#xD;      }&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.addn = function addn (num) {&#xD;    return this.clone().iaddn(num);&#xD;  };&#xD;&#xD;  BN.prototype.subn = function subn (num) {&#xD;    return this.clone().isubn(num);&#xD;  };&#xD;&#xD;  BN.prototype.iabs = function iabs () {&#xD;    this.negative = 0;&#xD;&#xD;    return this;&#xD;  };&#xD;&#xD;  BN.prototype.abs = function abs () {&#xD;    return this.clone().iabs();&#xD;  };&#xD;&#xD;  BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {&#xD;    var len = num.length + shift;&#xD;    var i;&#xD;&#xD;    this._expand(len);&#xD;&#xD;    var w;&#xD;    var carry = 0;&#xD;    for (i = 0; i &lt; num.length; i++) {&#xD;      w = (this.words[i + shift] | 0) + carry;&#xD;      var right = (num.words[i] | 0) * mul;&#xD;      w -= right &amp; 0x3ffffff;&#xD;      carry = (w &gt;&gt; 26) - ((right / 0x4000000) | 0);&#xD;      this.words[i + shift] = w &amp; 0x3ffffff;&#xD;    }&#xD;    for (; i &lt; this.length - shift; i++) {&#xD;      w = (this.words[i + shift] | 0) + carry;&#xD;      carry = w &gt;&gt; 26;&#xD;      this.words[i + shift] = w &amp; 0x3ffffff;&#xD;    }&#xD;&#xD;    if (carry === 0) return this.strip();&#xD;&#xD;    // Subtraction overflow&#xD;    assert(carry === -1);&#xD;    carry = 0;&#xD;    for (i = 0; i &lt; this.length; i++) {&#xD;      w = -(this.words[i] | 0) + carry;&#xD;      carry = w &gt;&gt; 26;&#xD;      this.words[i] = w &amp; 0x3ffffff;&#xD;    }&#xD;    this.negative = 1;&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype._wordDiv = function _wordDiv (num, mode) {&#xD;    var shift = this.length - num.length;&#xD;&#xD;    var a = this.clone();&#xD;    var b = num;&#xD;&#xD;    // Normalize&#xD;    var bhi = b.words[b.length - 1] | 0;&#xD;    var bhiBits = this._countBits(bhi);&#xD;    shift = 26 - bhiBits;&#xD;    if (shift !== 0) {&#xD;      b = b.ushln(shift);&#xD;      a.iushln(shift);&#xD;      bhi = b.words[b.length - 1] | 0;&#xD;    }&#xD;&#xD;    // Initialize quotient&#xD;    var m = a.length - b.length;&#xD;    var q;&#xD;&#xD;    if (mode !== &apos;mod&apos;) {&#xD;      q = new BN(null);&#xD;      q.length = m + 1;&#xD;      q.words = new Array(q.length);&#xD;      for (var i = 0; i &lt; q.length; i++) {&#xD;        q.words[i] = 0;&#xD;      }&#xD;    }&#xD;&#xD;    var diff = a.clone()._ishlnsubmul(b, 1, m);&#xD;    if (diff.negative === 0) {&#xD;      a = diff;&#xD;      if (q) {&#xD;        q.words[m] = 1;&#xD;      }&#xD;    }&#xD;&#xD;    for (var j = m - 1; j &gt;= 0; j--) {&#xD;      var qj = (a.words[b.length + j] | 0) * 0x4000000 +&#xD;        (a.words[b.length + j - 1] | 0);&#xD;&#xD;      // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max&#xD;      // (0x7ffffff)&#xD;      qj = Math.min((qj / bhi) | 0, 0x3ffffff);&#xD;&#xD;      a._ishlnsubmul(b, qj, j);&#xD;      while (a.negative !== 0) {&#xD;        qj--;&#xD;        a.negative = 0;&#xD;        a._ishlnsubmul(b, 1, j);&#xD;        if (!a.isZero()) {&#xD;          a.negative ^= 1;&#xD;        }&#xD;      }&#xD;      if (q) {&#xD;        q.words[j] = qj;&#xD;      }&#xD;    }&#xD;    if (q) {&#xD;      q.strip();&#xD;    }&#xD;    a.strip();&#xD;&#xD;    // Denormalize&#xD;    if (mode !== &apos;div&apos; &amp;&amp; shift !== 0) {&#xD;      a.iushrn(shift);&#xD;    }&#xD;&#xD;    return {&#xD;      div: q || null,&#xD;      mod: a&#xD;    };&#xD;  };&#xD;&#xD;  // NOTE: 1) `mode` can be set to `mod` to request mod only,&#xD;  //       to `div` to request div only, or be absent to&#xD;  //       request both div &amp; mod&#xD;  //       2) `positive` is true if unsigned mod is requested&#xD;  BN.prototype.divmod = function divmod (num, mode, positive) {&#xD;    assert(!num.isZero());&#xD;&#xD;    if (this.isZero()) {&#xD;      return {&#xD;        div: new BN(0),&#xD;        mod: new BN(0)&#xD;      };&#xD;    }&#xD;&#xD;    var div, mod, res;&#xD;    if (this.negative !== 0 &amp;&amp; num.negative === 0) {&#xD;      res = this.neg().divmod(num, mode);&#xD;&#xD;      if (mode !== &apos;mod&apos;) {&#xD;        div = res.div.neg();&#xD;      }&#xD;&#xD;      if (mode !== &apos;div&apos;) {&#xD;        mod = res.mod.neg();&#xD;        if (positive &amp;&amp; mod.negative !== 0) {&#xD;          mod.iadd(num);&#xD;        }&#xD;      }&#xD;&#xD;      return {&#xD;        div: div,&#xD;        mod: mod&#xD;      };&#xD;    }&#xD;&#xD;    if (this.negative === 0 &amp;&amp; num.negative !== 0) {&#xD;      res = this.divmod(num.neg(), mode);&#xD;&#xD;      if (mode !== &apos;mod&apos;) {&#xD;        div = res.div.neg();&#xD;      }&#xD;&#xD;      return {&#xD;        div: div,&#xD;        mod: res.mod&#xD;      };&#xD;    }&#xD;&#xD;    if ((this.negative &amp; num.negative) !== 0) {&#xD;      res = this.neg().divmod(num.neg(), mode);&#xD;&#xD;      if (mode !== &apos;div&apos;) {&#xD;        mod = res.mod.neg();&#xD;        if (positive &amp;&amp; mod.negative !== 0) {&#xD;          mod.isub(num);&#xD;        }&#xD;      }&#xD;&#xD;      return {&#xD;        div: res.div,&#xD;        mod: mod&#xD;      };&#xD;    }&#xD;&#xD;    // Both numbers are positive at this point&#xD;&#xD;    // Strip both numbers to approximate shift value&#xD;    if (num.length &gt; this.length || this.cmp(num) &lt; 0) {&#xD;      return {&#xD;        div: new BN(0),&#xD;        mod: this&#xD;      };&#xD;    }&#xD;&#xD;    // Very short reduction&#xD;    if (num.length === 1) {&#xD;      if (mode === &apos;div&apos;) {&#xD;        return {&#xD;          div: this.divn(num.words[0]),&#xD;          mod: null&#xD;        };&#xD;      }&#xD;&#xD;      if (mode === &apos;mod&apos;) {&#xD;        return {&#xD;          div: null,&#xD;          mod: new BN(this.modn(num.words[0]))&#xD;        };&#xD;      }&#xD;&#xD;      return {&#xD;        div: this.divn(num.words[0]),&#xD;        mod: new BN(this.modn(num.words[0]))&#xD;      };&#xD;    }&#xD;&#xD;    return this._wordDiv(num, mode);&#xD;  };&#xD;&#xD;  // Find `this` / `num`&#xD;  BN.prototype.div = function div (num) {&#xD;    return this.divmod(num, &apos;div&apos;, false).div;&#xD;  };&#xD;&#xD;  // Find `this` % `num`&#xD;  BN.prototype.mod = function mod (num) {&#xD;    return this.divmod(num, &apos;mod&apos;, false).mod;&#xD;  };&#xD;&#xD;  BN.prototype.umod = function umod (num) {&#xD;    return this.divmod(num, &apos;mod&apos;, true).mod;&#xD;  };&#xD;&#xD;  // Find Round(`this` / `num`)&#xD;  BN.prototype.divRound = function divRound (num) {&#xD;    var dm = this.divmod(num);&#xD;&#xD;    // Fast case - exact division&#xD;    if (dm.mod.isZero()) return dm.div;&#xD;&#xD;    var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;&#xD;&#xD;    var half = num.ushrn(1);&#xD;    var r2 = num.andln(1);&#xD;    var cmp = mod.cmp(half);&#xD;&#xD;    // Round down&#xD;    if (cmp &lt; 0 || r2 === 1 &amp;&amp; cmp === 0) return dm.div;&#xD;&#xD;    // Round up&#xD;    return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);&#xD;  };&#xD;&#xD;  BN.prototype.modn = function modn (num) {&#xD;    assert(num &lt;= 0x3ffffff);&#xD;    var p = (1 &lt;&lt; 26) % num;&#xD;&#xD;    var acc = 0;&#xD;    for (var i = this.length - 1; i &gt;= 0; i--) {&#xD;      acc = (p * acc + (this.words[i] | 0)) % num;&#xD;    }&#xD;&#xD;    return acc;&#xD;  };&#xD;&#xD;  // In-place division by number&#xD;  BN.prototype.idivn = function idivn (num) {&#xD;    assert(num &lt;= 0x3ffffff);&#xD;&#xD;    var carry = 0;&#xD;    for (var i = this.length - 1; i &gt;= 0; i--) {&#xD;      var w = (this.words[i] | 0) + carry * 0x4000000;&#xD;      this.words[i] = (w / num) | 0;&#xD;      carry = w % num;&#xD;    }&#xD;&#xD;    return this.strip();&#xD;  };&#xD;&#xD;  BN.prototype.divn = function divn (num) {&#xD;    return this.clone().idivn(num);&#xD;  };&#xD;&#xD;  BN.prototype.egcd = function egcd (p) {&#xD;    assert(p.negative === 0);&#xD;    assert(!p.isZero());&#xD;&#xD;    var x = this;&#xD;    var y = p.clone();&#xD;&#xD;    if (x.negative !== 0) {&#xD;      x = x.umod(p);&#xD;    } else {&#xD;      x = x.clone();&#xD;    }&#xD;&#xD;    // A * x + B * y = x&#xD;    var A = new BN(1);&#xD;    var B = new BN(0);&#xD;&#xD;    // C * x + D * y = y&#xD;    var C = new BN(0);&#xD;    var D = new BN(1);&#xD;&#xD;    var g = 0;&#xD;&#xD;    while (x.isEven() &amp;&amp; y.isEven()) {&#xD;      x.iushrn(1);&#xD;      y.iushrn(1);&#xD;      ++g;&#xD;    }&#xD;&#xD;    var yp = y.clone();&#xD;    var xp = x.clone();&#xD;&#xD;    while (!x.isZero()) {&#xD;      for (var i = 0, im = 1; (x.words[0] &amp; im) === 0 &amp;&amp; i &lt; 26; ++i, im &lt;&lt;= 1);&#xD;      if (i &gt; 0) {&#xD;        x.iushrn(i);&#xD;        while (i-- &gt; 0) {&#xD;          if (A.isOdd() || B.isOdd()) {&#xD;            A.iadd(yp);&#xD;            B.isub(xp);&#xD;          }&#xD;&#xD;          A.iushrn(1);&#xD;          B.iushrn(1);&#xD;        }&#xD;      }&#xD;&#xD;      for (var j = 0, jm = 1; (y.words[0] &amp; jm) === 0 &amp;&amp; j &lt; 26; ++j, jm &lt;&lt;= 1);&#xD;      if (j &gt; 0) {&#xD;        y.iushrn(j);&#xD;        while (j-- &gt; 0) {&#xD;          if (C.isOdd() || D.isOdd()) {&#xD;            C.iadd(yp);&#xD;            D.isub(xp);&#xD;          }&#xD;&#xD;          C.iushrn(1);&#xD;          D.iushrn(1);&#xD;        }&#xD;      }&#xD;&#xD;      if (x.cmp(y) &gt;= 0) {&#xD;        x.isub(y);&#xD;        A.isub(C);&#xD;        B.isub(D);&#xD;      } else {&#xD;        y.isub(x);&#xD;        C.isub(A);&#xD;        D.isub(B);&#xD;      }&#xD;    }&#xD;&#xD;    return {&#xD;      a: C,&#xD;      b: D,&#xD;      gcd: y.iushln(g)&#xD;    };&#xD;  };&#xD;&#xD;  // This is reduced incarnation of the binary EEA&#xD;  // above, designated to invert members of the&#xD;  // _prime_ fields F(p) at a maximal speed&#xD;  BN.prototype._invmp = function _invmp (p) {&#xD;    assert(p.negative === 0);&#xD;    assert(!p.isZero());&#xD;&#xD;    var a = this;&#xD;    var b = p.clone();&#xD;&#xD;    if (a.negative !== 0) {&#xD;      a = a.umod(p);&#xD;    } else {&#xD;      a = a.clone();&#xD;    }&#xD;&#xD;    var x1 = new BN(1);&#xD;    var x2 = new BN(0);&#xD;&#xD;    var delta = b.clone();&#xD;&#xD;    while (a.cmpn(1) &gt; 0 &amp;&amp; b.cmpn(1) &gt; 0) {&#xD;      for (var i = 0, im = 1; (a.words[0] &amp; im) === 0 &amp;&amp; i &lt; 26; ++i, im &lt;&lt;= 1);&#xD;      if (i &gt; 0) {&#xD;        a.iushrn(i);&#xD;        while (i-- &gt; 0) {&#xD;          if (x1.isOdd()) {&#xD;            x1.iadd(delta);&#xD;          }&#xD;&#xD;          x1.iushrn(1);&#xD;        }&#xD;      }&#xD;&#xD;      for (var j = 0, jm = 1; (b.words[0] &amp; jm) === 0 &amp;&amp; j &lt; 26; ++j, jm &lt;&lt;= 1);&#xD;      if (j &gt; 0) {&#xD;        b.iushrn(j);&#xD;        while (j-- &gt; 0) {&#xD;          if (x2.isOdd()) {&#xD;            x2.iadd(delta);&#xD;          }&#xD;&#xD;          x2.iushrn(1);&#xD;        }&#xD;      }&#xD;&#xD;      if (a.cmp(b) &gt;= 0) {&#xD;        a.isub(b);&#xD;        x1.isub(x2);&#xD;      } else {&#xD;        b.isub(a);&#xD;        x2.isub(x1);&#xD;      }&#xD;    }&#xD;&#xD;    var res;&#xD;    if (a.cmpn(1) === 0) {&#xD;      res = x1;&#xD;    } else {&#xD;      res = x2;&#xD;    }&#xD;&#xD;    if (res.cmpn(0) &lt; 0) {&#xD;      res.iadd(p);&#xD;    }&#xD;&#xD;    return res;&#xD;  };&#xD;&#xD;  BN.prototype.gcd = function gcd (num) {&#xD;    if (this.isZero()) return num.abs();&#xD;    if (num.isZero()) return this.abs();&#xD;&#xD;    var a = this.clone();&#xD;    var b = num.clone();&#xD;    a.negative = 0;&#xD;    b.negative = 0;&#xD;&#xD;    // Remove common factor of two&#xD;    for (var shift = 0; a.isEven() &amp;&amp; b.isEven(); shift++) {&#xD;      a.iushrn(1);&#xD;      b.iushrn(1);&#xD;    }&#xD;&#xD;    do {&#xD;      while (a.isEven()) {&#xD;        a.iushrn(1);&#xD;      }&#xD;      while (b.isEven()) {&#xD;        b.iushrn(1);&#xD;      }&#xD;&#xD;      var r = a.cmp(b);&#xD;      if (r &lt; 0) {&#xD;        // Swap `a` and `b` to make `a` always bigger than `b`&#xD;        var t = a;&#xD;        a = b;&#xD;        b = t;&#xD;      } else if (r === 0 || b.cmpn(1) === 0) {&#xD;        break;&#xD;      }&#xD;&#xD;      a.isub(b);&#xD;    } while (true);&#xD;&#xD;    return b.iushln(shift);&#xD;  };&#xD;&#xD;  // Invert number in the field F(num)&#xD;  BN.prototype.invm = function invm (num) {&#xD;    return this.egcd(num).a.umod(num);&#xD;  };&#xD;&#xD;  BN.prototype.isEven = function isEven () {&#xD;    return (this.words[0] &amp; 1) === 0;&#xD;  };&#xD;&#xD;  BN.prototype.isOdd = function isOdd () {&#xD;    return (this.words[0] &amp; 1) === 1;&#xD;  };&#xD;&#xD;  // And first word and num&#xD;  BN.prototype.andln = function andln (num) {&#xD;    return this.words[0] &amp; num;&#xD;  };&#xD;&#xD;  // Increment at the bit position in-line&#xD;  BN.prototype.bincn = function bincn (bit) {&#xD;    assert(typeof bit === &apos;number&apos;);&#xD;    var r = bit % 26;&#xD;    var s = (bit - r) / 26;&#xD;    var q = 1 &lt;&lt; r;&#xD;&#xD;    // Fast case: bit is much higher than all existing words&#xD;    if (this.length &lt;= s) {&#xD;      this._expand(s + 1);&#xD;      this.words[s] |= q;&#xD;      return this;&#xD;    }&#xD;&#xD;    // Add bit and propagate, if needed&#xD;    var carry = q;&#xD;    for (var i = s; carry !== 0 &amp;&amp; i &lt; this.length; i++) {&#xD;      var w = this.words[i] | 0;&#xD;      w += carry;&#xD;      carry = w &gt;&gt;&gt; 26;&#xD;      w &amp;= 0x3ffffff;&#xD;      this.words[i] = w;&#xD;    }&#xD;    if (carry !== 0) {&#xD;      this.words[i] = carry;&#xD;      this.length++;&#xD;    }&#xD;    return this;&#xD;  };&#xD;&#xD;  BN.prototype.isZero = function isZero () {&#xD;    return this.length === 1 &amp;&amp; this.words[0] === 0;&#xD;  };&#xD;&#xD;  BN.prototype.cmpn = function cmpn (num) {&#xD;    var negative = num &lt; 0;&#xD;&#xD;    if (this.negative !== 0 &amp;&amp; !negative) return -1;&#xD;    if (this.negative === 0 &amp;&amp; negative) return 1;&#xD;&#xD;    this.strip();&#xD;&#xD;    var res;&#xD;    if (this.length &gt; 1) {&#xD;      res = 1;&#xD;    } else {&#xD;      if (negative) {&#xD;        num = -num;&#xD;      }&#xD;&#xD;      assert(num &lt;= 0x3ffffff, &apos;Number is too big&apos;);&#xD;&#xD;      var w = this.words[0] | 0;&#xD;      res = w === num ? 0 : w &lt; num ? -1 : 1;&#xD;    }&#xD;    if (this.negative !== 0) return -res | 0;&#xD;    return res;&#xD;  };&#xD;&#xD;  // Compare two numbers and return:&#xD;  // 1 - if `this` &gt; `num`&#xD;  // 0 - if `this` == `num`&#xD;  // -1 - if `this` &lt; `num`&#xD;  BN.prototype.cmp = function cmp (num) {&#xD;    if (this.negative !== 0 &amp;&amp; num.negative === 0) return -1;&#xD;    if (this.negative === 0 &amp;&amp; num.negative !== 0) return 1;&#xD;&#xD;    var res = this.ucmp(num);&#xD;    if (this.negative !== 0) return -res | 0;&#xD;    return res;&#xD;  };&#xD;&#xD;  // Unsigned comparison&#xD;  BN.prototype.ucmp = function ucmp (num) {&#xD;    // At this point both numbers have the same sign&#xD;    if (this.length &gt; num.length) return 1;&#xD;    if (this.length &lt; num.length) return -1;&#xD;&#xD;    var res = 0;&#xD;    for (var i = this.length - 1; i &gt;= 0; i--) {&#xD;      var a = this.words[i] | 0;&#xD;      var b = num.words[i] | 0;&#xD;&#xD;      if (a === b) continue;&#xD;      if (a &lt; b) {&#xD;        res = -1;&#xD;      } else if (a &gt; b) {&#xD;        res = 1;&#xD;      }&#xD;      break;&#xD;    }&#xD;    return res;&#xD;  };&#xD;&#xD;  BN.prototype.gtn = function gtn (num) {&#xD;    return this.cmpn(num) === 1;&#xD;  };&#xD;&#xD;  BN.prototype.gt = function gt (num) {&#xD;    return this.cmp(num) === 1;&#xD;  };&#xD;&#xD;  BN.prototype.gten = function gten (num) {&#xD;    return this.cmpn(num) &gt;= 0;&#xD;  };&#xD;&#xD;  BN.prototype.gte = function gte (num) {&#xD;    return this.cmp(num) &gt;= 0;&#xD;  };&#xD;&#xD;  BN.prototype.ltn = function ltn (num) {&#xD;    return this.cmpn(num) === -1;&#xD;  };&#xD;&#xD;  BN.prototype.lt = function lt (num) {&#xD;    return this.cmp(num) === -1;&#xD;  };&#xD;&#xD;  BN.prototype.lten = function lten (num) {&#xD;    return this.cmpn(num) &lt;= 0;&#xD;  };&#xD;&#xD;  BN.prototype.lte = function lte (num) {&#xD;    return this.cmp(num) &lt;= 0;&#xD;  };&#xD;&#xD;  BN.prototype.eqn = function eqn (num) {&#xD;    return this.cmpn(num) === 0;&#xD;  };&#xD;&#xD;  BN.prototype.eq = function eq (num) {&#xD;    return this.cmp(num) === 0;&#xD;  };&#xD;&#xD;  //&#xD;  // A reduce context, could be using montgomery or something better, depending&#xD;  // on the `m` itself.&#xD;  //&#xD;  BN.red = function red (num) {&#xD;    return new Red(num);&#xD;  };&#xD;&#xD;  BN.prototype.toRed = function toRed (ctx) {&#xD;    assert(!this.red, &apos;Already a number in reduction context&apos;);&#xD;    assert(this.negative === 0, &apos;red works only with positives&apos;);&#xD;    return ctx.convertTo(this)._forceRed(ctx);&#xD;  };&#xD;&#xD;  BN.prototype.fromRed = function fromRed () {&#xD;    assert(this.red, &apos;fromRed works only with numbers in reduction context&apos;);&#xD;    return this.red.convertFrom(this);&#xD;  };&#xD;&#xD;  BN.prototype._forceRed = function _forceRed (ctx) {&#xD;    this.red = ctx;&#xD;    return this;&#xD;  };&#xD;&#xD;  BN.prototype.forceRed = function forceRed (ctx) {&#xD;    assert(!this.red, &apos;Already a number in reduction context&apos;);&#xD;    return this._forceRed(ctx);&#xD;  };&#xD;&#xD;  BN.prototype.redAdd = function redAdd (num) {&#xD;    assert(this.red, &apos;redAdd works only with red numbers&apos;);&#xD;    return this.red.add(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redIAdd = function redIAdd (num) {&#xD;    assert(this.red, &apos;redIAdd works only with red numbers&apos;);&#xD;    return this.red.iadd(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redSub = function redSub (num) {&#xD;    assert(this.red, &apos;redSub works only with red numbers&apos;);&#xD;    return this.red.sub(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redISub = function redISub (num) {&#xD;    assert(this.red, &apos;redISub works only with red numbers&apos;);&#xD;    return this.red.isub(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redShl = function redShl (num) {&#xD;    assert(this.red, &apos;redShl works only with red numbers&apos;);&#xD;    return this.red.shl(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redMul = function redMul (num) {&#xD;    assert(this.red, &apos;redMul works only with red numbers&apos;);&#xD;    this.red._verify2(this, num);&#xD;    return this.red.mul(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redIMul = function redIMul (num) {&#xD;    assert(this.red, &apos;redMul works only with red numbers&apos;);&#xD;    this.red._verify2(this, num);&#xD;    return this.red.imul(this, num);&#xD;  };&#xD;&#xD;  BN.prototype.redSqr = function redSqr () {&#xD;    assert(this.red, &apos;redSqr works only with red numbers&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.sqr(this);&#xD;  };&#xD;&#xD;  BN.prototype.redISqr = function redISqr () {&#xD;    assert(this.red, &apos;redISqr works only with red numbers&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.isqr(this);&#xD;  };&#xD;&#xD;  // Square root over p&#xD;  BN.prototype.redSqrt = function redSqrt () {&#xD;    assert(this.red, &apos;redSqrt works only with red numbers&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.sqrt(this);&#xD;  };&#xD;&#xD;  BN.prototype.redInvm = function redInvm () {&#xD;    assert(this.red, &apos;redInvm works only with red numbers&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.invm(this);&#xD;  };&#xD;&#xD;  // Return negative clone of `this` % `red modulo`&#xD;  BN.prototype.redNeg = function redNeg () {&#xD;    assert(this.red, &apos;redNeg works only with red numbers&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.neg(this);&#xD;  };&#xD;&#xD;  BN.prototype.redPow = function redPow (num) {&#xD;    assert(this.red &amp;&amp; !num.red, &apos;redPow(normalNum)&apos;);&#xD;    this.red._verify1(this);&#xD;    return this.red.pow(this, num);&#xD;  };&#xD;&#xD;  // Prime numbers with efficient reduction&#xD;  var primes = {&#xD;    k256: null,&#xD;    p224: null,&#xD;    p192: null,&#xD;    p25519: null&#xD;  };&#xD;&#xD;  // Pseudo-Mersenne prime&#xD;  function MPrime (name, p) {&#xD;    // P = 2 ^ N - K&#xD;    this.name = name;&#xD;    this.p = new BN(p, 16);&#xD;    this.n = this.p.bitLength();&#xD;    this.k = new BN(1).iushln(this.n).isub(this.p);&#xD;&#xD;    this.tmp = this._tmp();&#xD;  }&#xD;&#xD;  MPrime.prototype._tmp = function _tmp () {&#xD;    var tmp = new BN(null);&#xD;    tmp.words = new Array(Math.ceil(this.n / 13));&#xD;    return tmp;&#xD;  };&#xD;&#xD;  MPrime.prototype.ireduce = function ireduce (num) {&#xD;    // Assumes that `num` is less than `P^2`&#xD;    // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)&#xD;    var r = num;&#xD;    var rlen;&#xD;&#xD;    do {&#xD;      this.split(r, this.tmp);&#xD;      r = this.imulK(r);&#xD;      r = r.iadd(this.tmp);&#xD;      rlen = r.bitLength();&#xD;    } while (rlen &gt; this.n);&#xD;&#xD;    var cmp = rlen &lt; this.n ? -1 : r.ucmp(this.p);&#xD;    if (cmp === 0) {&#xD;      r.words[0] = 0;&#xD;      r.length = 1;&#xD;    } else if (cmp &gt; 0) {&#xD;      r.isub(this.p);&#xD;    } else {&#xD;      r.strip();&#xD;    }&#xD;&#xD;    return r;&#xD;  };&#xD;&#xD;  MPrime.prototype.split = function split (input, out) {&#xD;    input.iushrn(this.n, 0, out);&#xD;  };&#xD;&#xD;  MPrime.prototype.imulK = function imulK (num) {&#xD;    return num.imul(this.k);&#xD;  };&#xD;&#xD;  function K256 () {&#xD;    MPrime.call(&#xD;      this,&#xD;      &apos;k256&apos;,&#xD;      &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f&apos;);&#xD;  }&#xD;  inherits(K256, MPrime);&#xD;&#xD;  K256.prototype.split = function split (input, output) {&#xD;    // 256 = 9 * 26 + 22&#xD;    var mask = 0x3fffff;&#xD;&#xD;    var outLen = Math.min(input.length, 9);&#xD;    for (var i = 0; i &lt; outLen; i++) {&#xD;      output.words[i] = input.words[i];&#xD;    }&#xD;    output.length = outLen;&#xD;&#xD;    if (input.length &lt;= 9) {&#xD;      input.words[0] = 0;&#xD;      input.length = 1;&#xD;      return;&#xD;    }&#xD;&#xD;    // Shift by 9 limbs&#xD;    var prev = input.words[9];&#xD;    output.words[output.length++] = prev &amp; mask;&#xD;&#xD;    for (i = 10; i &lt; input.length; i++) {&#xD;      var next = input.words[i] | 0;&#xD;      input.words[i - 10] = ((next &amp; mask) &lt;&lt; 4) | (prev &gt;&gt;&gt; 22);&#xD;      prev = next;&#xD;    }&#xD;    prev &gt;&gt;&gt;= 22;&#xD;    input.words[i - 10] = prev;&#xD;    if (prev === 0 &amp;&amp; input.length &gt; 10) {&#xD;      input.length -= 10;&#xD;    } else {&#xD;      input.length -= 9;&#xD;    }&#xD;  };&#xD;&#xD;  K256.prototype.imulK = function imulK (num) {&#xD;    // K = 0x1000003d1 = [ 0x40, 0x3d1 ]&#xD;    num.words[num.length] = 0;&#xD;    num.words[num.length + 1] = 0;&#xD;    num.length += 2;&#xD;&#xD;    // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390&#xD;    var lo = 0;&#xD;    for (var i = 0; i &lt; num.length; i++) {&#xD;      var w = num.words[i] | 0;&#xD;      lo += w * 0x3d1;&#xD;      num.words[i] = lo &amp; 0x3ffffff;&#xD;      lo = w * 0x40 + ((lo / 0x4000000) | 0);&#xD;    }&#xD;&#xD;    // Fast length reduction&#xD;    if (num.words[num.length - 1] === 0) {&#xD;      num.length--;&#xD;      if (num.words[num.length - 1] === 0) {&#xD;        num.length--;&#xD;      }&#xD;    }&#xD;    return num;&#xD;  };&#xD;&#xD;  function P224 () {&#xD;    MPrime.call(&#xD;      this,&#xD;      &apos;p224&apos;,&#xD;      &apos;ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001&apos;);&#xD;  }&#xD;  inherits(P224, MPrime);&#xD;&#xD;  function P192 () {&#xD;    MPrime.call(&#xD;      this,&#xD;      &apos;p192&apos;,&#xD;      &apos;ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff&apos;);&#xD;  }&#xD;  inherits(P192, MPrime);&#xD;&#xD;  function P25519 () {&#xD;    // 2 ^ 255 - 19&#xD;    MPrime.call(&#xD;      this,&#xD;      &apos;25519&apos;,&#xD;      &apos;7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed&apos;);&#xD;  }&#xD;  inherits(P25519, MPrime);&#xD;&#xD;  P25519.prototype.imulK = function imulK (num) {&#xD;    // K = 0x13&#xD;    var carry = 0;&#xD;    for (var i = 0; i &lt; num.length; i++) {&#xD;      var hi = (num.words[i] | 0) * 0x13 + carry;&#xD;      var lo = hi &amp; 0x3ffffff;&#xD;      hi &gt;&gt;&gt;= 26;&#xD;&#xD;      num.words[i] = lo;&#xD;      carry = hi;&#xD;    }&#xD;    if (carry !== 0) {&#xD;      num.words[num.length++] = carry;&#xD;    }&#xD;    return num;&#xD;  };&#xD;&#xD;  // Exported mostly for testing purposes, use plain name instead&#xD;  BN._prime = function prime (name) {&#xD;    // Cached version of prime&#xD;    if (primes[name]) return primes[name];&#xD;&#xD;    var prime;&#xD;    if (name === &apos;k256&apos;) {&#xD;      prime = new K256();&#xD;    } else if (name === &apos;p224&apos;) {&#xD;      prime = new P224();&#xD;    } else if (name === &apos;p192&apos;) {&#xD;      prime = new P192();&#xD;    } else if (name === &apos;p25519&apos;) {&#xD;      prime = new P25519();&#xD;    } else {&#xD;      throw new Error(&apos;Unknown prime &apos; + name);&#xD;    }&#xD;    primes[name] = prime;&#xD;&#xD;    return prime;&#xD;  };&#xD;&#xD;  //&#xD;  // Base reduction engine&#xD;  //&#xD;  function Red (m) {&#xD;    if (typeof m === &apos;string&apos;) {&#xD;      var prime = BN._prime(m);&#xD;      this.m = prime.p;&#xD;      this.prime = prime;&#xD;    } else {&#xD;      assert(m.gtn(1), &apos;modulus must be greater than 1&apos;);&#xD;      this.m = m;&#xD;      this.prime = null;&#xD;    }&#xD;  }&#xD;&#xD;  Red.prototype._verify1 = function _verify1 (a) {&#xD;    assert(a.negative === 0, &apos;red works only with positives&apos;);&#xD;    assert(a.red, &apos;red works only with red numbers&apos;);&#xD;  };&#xD;&#xD;  Red.prototype._verify2 = function _verify2 (a, b) {&#xD;    assert((a.negative | b.negative) === 0, &apos;red works only with positives&apos;);&#xD;    assert(a.red &amp;&amp; a.red === b.red,&#xD;      &apos;red works only with red numbers&apos;);&#xD;  };&#xD;&#xD;  Red.prototype.imod = function imod (a) {&#xD;    if (this.prime) return this.prime.ireduce(a)._forceRed(this);&#xD;    return a.umod(this.m)._forceRed(this);&#xD;  };&#xD;&#xD;  Red.prototype.neg = function neg (a) {&#xD;    if (a.isZero()) {&#xD;      return a.clone();&#xD;    }&#xD;&#xD;    return this.m.sub(a)._forceRed(this);&#xD;  };&#xD;&#xD;  Red.prototype.add = function add (a, b) {&#xD;    this._verify2(a, b);&#xD;&#xD;    var res = a.add(b);&#xD;    if (res.cmp(this.m) &gt;= 0) {&#xD;      res.isub(this.m);&#xD;    }&#xD;    return res._forceRed(this);&#xD;  };&#xD;&#xD;  Red.prototype.iadd = function iadd (a, b) {&#xD;    this._verify2(a, b);&#xD;&#xD;    var res = a.iadd(b);&#xD;    if (res.cmp(this.m) &gt;= 0) {&#xD;      res.isub(this.m);&#xD;    }&#xD;    return res;&#xD;  };&#xD;&#xD;  Red.prototype.sub = function sub (a, b) {&#xD;    this._verify2(a, b);&#xD;&#xD;    var res = a.sub(b);&#xD;    if (res.cmpn(0) &lt; 0) {&#xD;      res.iadd(this.m);&#xD;    }&#xD;    return res._forceRed(this);&#xD;  };&#xD;&#xD;  Red.prototype.isub = function isub (a, b) {&#xD;    this._verify2(a, b);&#xD;&#xD;    var res = a.isub(b);&#xD;    if (res.cmpn(0) &lt; 0) {&#xD;      res.iadd(this.m);&#xD;    }&#xD;    return res;&#xD;  };&#xD;&#xD;  Red.prototype.shl = function shl (a, num) {&#xD;    this._verify1(a);&#xD;    return this.imod(a.ushln(num));&#xD;  };&#xD;&#xD;  Red.prototype.imul = function imul (a, b) {&#xD;    this._verify2(a, b);&#xD;    return this.imod(a.imul(b));&#xD;  };&#xD;&#xD;  Red.prototype.mul = function mul (a, b) {&#xD;    this._verify2(a, b);&#xD;    return this.imod(a.mul(b));&#xD;  };&#xD;&#xD;  Red.prototype.isqr = function isqr (a) {&#xD;    return this.imul(a, a.clone());&#xD;  };&#xD;&#xD;  Red.prototype.sqr = function sqr (a) {&#xD;    return this.mul(a, a);&#xD;  };&#xD;&#xD;  Red.prototype.sqrt = function sqrt (a) {&#xD;    if (a.isZero()) return a.clone();&#xD;&#xD;    var mod3 = this.m.andln(3);&#xD;    assert(mod3 % 2 === 1);&#xD;&#xD;    // Fast case&#xD;    if (mod3 === 3) {&#xD;      var pow = this.m.add(new BN(1)).iushrn(2);&#xD;      return this.pow(a, pow);&#xD;    }&#xD;&#xD;    // Tonelli-Shanks algorithm (Totally unoptimized and slow)&#xD;    //&#xD;    // Find Q and S, that Q * 2 ^ S = (P - 1)&#xD;    var q = this.m.subn(1);&#xD;    var s = 0;&#xD;    while (!q.isZero() &amp;&amp; q.andln(1) === 0) {&#xD;      s++;&#xD;      q.iushrn(1);&#xD;    }&#xD;    assert(!q.isZero());&#xD;&#xD;    var one = new BN(1).toRed(this);&#xD;    var nOne = one.redNeg();&#xD;&#xD;    // Find quadratic non-residue&#xD;    // NOTE: Max is such because of generalized Riemann hypothesis.&#xD;    var lpow = this.m.subn(1).iushrn(1);&#xD;    var z = this.m.bitLength();&#xD;    z = new BN(2 * z * z).toRed(this);&#xD;&#xD;    while (this.pow(z, lpow).cmp(nOne) !== 0) {&#xD;      z.redIAdd(nOne);&#xD;    }&#xD;&#xD;    var c = this.pow(z, q);&#xD;    var r = this.pow(a, q.addn(1).iushrn(1));&#xD;    var t = this.pow(a, q);&#xD;    var m = s;&#xD;    while (t.cmp(one) !== 0) {&#xD;      var tmp = t;&#xD;      for (var i = 0; tmp.cmp(one) !== 0; i++) {&#xD;        tmp = tmp.redSqr();&#xD;      }&#xD;      assert(i &lt; m);&#xD;      var b = this.pow(c, new BN(1).iushln(m - i - 1));&#xD;&#xD;      r = r.redMul(b);&#xD;      c = b.redSqr();&#xD;      t = t.redMul(c);&#xD;      m = i;&#xD;    }&#xD;&#xD;    return r;&#xD;  };&#xD;&#xD;  Red.prototype.invm = function invm (a) {&#xD;    var inv = a._invmp(this.m);&#xD;    if (inv.negative !== 0) {&#xD;      inv.negative = 0;&#xD;      return this.imod(inv).redNeg();&#xD;    } else {&#xD;      return this.imod(inv);&#xD;    }&#xD;  };&#xD;&#xD;  Red.prototype.pow = function pow (a, num) {&#xD;    if (num.isZero()) return new BN(1);&#xD;    if (num.cmpn(1) === 0) return a.clone();&#xD;&#xD;    var windowSize = 4;&#xD;    var wnd = new Array(1 &lt;&lt; windowSize);&#xD;    wnd[0] = new BN(1).toRed(this);&#xD;    wnd[1] = a;&#xD;    for (var i = 2; i &lt; wnd.length; i++) {&#xD;      wnd[i] = this.mul(wnd[i - 1], a);&#xD;    }&#xD;&#xD;    var res = wnd[0];&#xD;    var current = 0;&#xD;    var currentLen = 0;&#xD;    var start = num.bitLength() % 26;&#xD;    if (start === 0) {&#xD;      start = 26;&#xD;    }&#xD;&#xD;    for (i = num.length - 1; i &gt;= 0; i--) {&#xD;      var word = num.words[i];&#xD;      for (var j = start - 1; j &gt;= 0; j--) {&#xD;        var bit = (word &gt;&gt; j) &amp; 1;&#xD;        if (res !== wnd[0]) {&#xD;          res = this.sqr(res);&#xD;        }&#xD;&#xD;        if (bit === 0 &amp;&amp; current === 0) {&#xD;          currentLen = 0;&#xD;          continue;&#xD;        }&#xD;&#xD;        current &lt;&lt;= 1;&#xD;        current |= bit;&#xD;        currentLen++;&#xD;        if (currentLen !== windowSize &amp;&amp; (i !== 0 || j !== 0)) continue;&#xD;&#xD;        res = this.mul(res, wnd[current]);&#xD;        currentLen = 0;&#xD;        current = 0;&#xD;      }&#xD;      start = 26;&#xD;    }&#xD;&#xD;    return res;&#xD;  };&#xD;&#xD;  Red.prototype.convertTo = function convertTo (num) {&#xD;    var r = num.umod(this.m);&#xD;&#xD;    return r === num ? r.clone() : r;&#xD;  };&#xD;&#xD;  Red.prototype.convertFrom = function convertFrom (num) {&#xD;    var res = num.clone();&#xD;    res.red = null;&#xD;    return res;&#xD;  };&#xD;&#xD;  //&#xD;  // Montgomery method engine&#xD;  //&#xD;&#xD;  BN.mont = function mont (num) {&#xD;    return new Mont(num);&#xD;  };&#xD;&#xD;  function Mont (m) {&#xD;    Red.call(this, m);&#xD;&#xD;    this.shift = this.m.bitLength();&#xD;    if (this.shift % 26 !== 0) {&#xD;      this.shift += 26 - (this.shift % 26);&#xD;    }&#xD;&#xD;    this.r = new BN(1).iushln(this.shift);&#xD;    this.r2 = this.imod(this.r.sqr());&#xD;    this.rinv = this.r._invmp(this.m);&#xD;&#xD;    this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);&#xD;    this.minv = this.minv.umod(this.r);&#xD;    this.minv = this.r.sub(this.minv);&#xD;  }&#xD;  inherits(Mont, Red);&#xD;&#xD;  Mont.prototype.convertTo = function convertTo (num) {&#xD;    return this.imod(num.ushln(this.shift));&#xD;  };&#xD;&#xD;  Mont.prototype.convertFrom = function convertFrom (num) {&#xD;    var r = this.imod(num.mul(this.rinv));&#xD;    r.red = null;&#xD;    return r;&#xD;  };&#xD;&#xD;  Mont.prototype.imul = function imul (a, b) {&#xD;    if (a.isZero() || b.isZero()) {&#xD;      a.words[0] = 0;&#xD;      a.length = 1;&#xD;      return a;&#xD;    }&#xD;&#xD;    var t = a.imul(b);&#xD;    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);&#xD;    var u = t.isub(c).iushrn(this.shift);&#xD;    var res = u;&#xD;&#xD;    if (u.cmp(this.m) &gt;= 0) {&#xD;      res = u.isub(this.m);&#xD;    } else if (u.cmpn(0) &lt; 0) {&#xD;      res = u.iadd(this.m);&#xD;    }&#xD;&#xD;    return res._forceRed(this);&#xD;  };&#xD;&#xD;  Mont.prototype.mul = function mul (a, b) {&#xD;    if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);&#xD;&#xD;    var t = a.mul(b);&#xD;    var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);&#xD;    var u = t.isub(c).iushrn(this.shift);&#xD;    var res = u;&#xD;    if (u.cmp(this.m) &gt;= 0) {&#xD;      res = u.isub(this.m);&#xD;    } else if (u.cmpn(0) &lt; 0) {&#xD;      res = u.iadd(this.m);&#xD;    }&#xD;&#xD;    return res._forceRed(this);&#xD;  };&#xD;&#xD;  Mont.prototype.invm = function invm (a) {&#xD;    // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R&#xD;    var res = this.imod(a._invmp(this.m).mul(this.r2));&#xD;    return res._forceRed(this);&#xD;  };&#xD;})(typeof module === &apos;undefined&apos; || module, this);&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(75)(module)))&#xD;&#xD;/***/ }),&#xD;/* 12 */,&#xD;/* 13 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var g;&#xD;&#xD;// This works in non-strict mode&#xD;g = (function() {&#xD;	return this;&#xD;})();&#xD;&#xD;try {&#xD;	// This works if eval is allowed (see CSP)&#xD;	g = g || Function("return this")() || (1,eval)("this");&#xD;} catch(e) {&#xD;	// This works if the window reference is available&#xD;	if(typeof window === "object")&#xD;		g = window;&#xD;}&#xD;&#xD;// g can still be undefined, but nothing to do about it...&#xD;// We return undefined, instead of nothing here, so it&apos;s&#xD;// easier to handle this case. if(!global) { ...}&#xD;&#xD;module.exports = g;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 14 */,&#xD;/* 15 */,&#xD;/* 16 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var stylePropType = __webpack_require__(481);&#xD;var styles = __webpack_require__(522);&#xD;&#xD;var getRandomColor = function () {&#xD;    // In "DEBUG" mode this is used to output a random background color for each&#xD;    // box. The function gives the same "random" set for each seed, allowing re-&#xD;    // renders of the same content to give the same random display.&#xD;    var random = function (seed) {&#xD;        var mW = seed;&#xD;        var mZ = 987654321;&#xD;        var mask = 0xffffffff;&#xD;        return function () {&#xD;            mZ = 36969 * (mZ &amp; 65535) + (mZ &gt;&gt; 16) &amp; mask;&#xD;            mW = 18000 * (mW &amp; 65535) + (mW &gt;&gt; 16) &amp; mask;&#xD;            var result = (mZ &lt;&lt; 16) + mW &amp; mask;&#xD;            result /= 4294967296;&#xD;            return result + 1;&#xD;        };&#xD;    }(601);&#xD;    return function () {&#xD;        var r = Math.max(parseInt(random() * 100, 10) % 256, 1);&#xD;        var g = Math.max(parseInt(random() * 100, 10) % 256, 1);&#xD;        var b = Math.max(parseInt(random() * 100, 10) % 256, 1);&#xD;        return &apos;rgb(&apos; + r + &apos;,&apos; + g + &apos;,&apos; + b + &apos;)&apos;;&#xD;    };&#xD;}();&#xD;&#xD;var Box = function Box(props) {&#xD;    var alignContent = props.alignContent,&#xD;        alignItems = props.alignItems,&#xD;        alignSelf = props.alignSelf,&#xD;        basis = props.basis,&#xD;        children = props.children,&#xD;        className = props.className,&#xD;        componentRef = props.componentRef,&#xD;        direction = props.direction,&#xD;        element = props.element,&#xD;        grow = props.grow,&#xD;        height = props.height,&#xD;        justifyContent = props.justifyContent,&#xD;        width = props.width,&#xD;        wrap = props.wrap,&#xD;        shrink = props.shrink,&#xD;        style = props.style,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;alignContent&apos;, &apos;alignItems&apos;, &apos;alignSelf&apos;, &apos;basis&apos;, &apos;children&apos;, &apos;className&apos;, &apos;componentRef&apos;, &apos;direction&apos;, &apos;element&apos;, &apos;grow&apos;, &apos;height&apos;, &apos;justifyContent&apos;, &apos;width&apos;, &apos;wrap&apos;, &apos;shrink&apos;, &apos;style&apos;]);&#xD;&#xD;    return React.createElement(element, _extends({&#xD;        className: classNames(className, styles.box),&#xD;        ref: componentRef,&#xD;        style: Object.assign({&#xD;            alignContent: alignContent,&#xD;            alignItems: alignItems,&#xD;            alignSelf: alignSelf,&#xD;            flexBasis: basis,&#xD;            flexDirection: direction,&#xD;            flexGrow: grow,&#xD;            flexShrink: shrink,&#xD;            flexWrap: wrap,&#xD;            justifyContent: justifyContent,&#xD;            width: width,&#xD;            height: height&#xD;        },  false ? {&#xD;            backgroundColor: getRandomColor(),&#xD;            outline: &apos;1px solid black&apos;&#xD;        } : {}, style)&#xD;    }, componentProps), children);&#xD;};&#xD;Box.propTypes = {&#xD;    alignContent: PropTypes.oneOf([&apos;flex-start&apos;, &apos;flex-end&apos;, &apos;center&apos;, &apos;space-between&apos;, &apos;space-around&apos;, &apos;stretch&apos;]),&#xD;    alignItems: PropTypes.oneOf([&apos;flex-start&apos;, &apos;flex-end&apos;, &apos;center&apos;, &apos;baseline&apos;, &apos;stretch&apos;]),&#xD;    alignSelf: PropTypes.oneOf([&apos;auto&apos;, &apos;flex-start&apos;, &apos;flex-end&apos;, &apos;center&apos;, &apos;baseline&apos;, &apos;stretch&apos;]),&#xD;    basis: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf([&apos;auto&apos;])]),&#xD;    children: PropTypes.node,&#xD;    className: PropTypes.string,&#xD;    componentRef: PropTypes.func,&#xD;    direction: PropTypes.oneOf([&apos;row&apos;, &apos;row-reverse&apos;, &apos;column&apos;, &apos;column-reverse&apos;]),&#xD;    element: PropTypes.string,&#xD;    grow: PropTypes.number,&#xD;    height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),&#xD;    justifyContent: PropTypes.oneOf([&apos;flex-start&apos;, &apos;flex-end&apos;, &apos;center&apos;, &apos;space-between&apos;, &apos;space-around&apos;]),&#xD;    shrink: PropTypes.number,&#xD;    style: stylePropType,&#xD;    width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),&#xD;    wrap: PropTypes.oneOf([&apos;nowrap&apos;, &apos;wrap&apos;, &apos;wrap-reverse&apos;])&#xD;};&#xD;Box.defaultProps = {&#xD;    element: &apos;div&apos;,&#xD;    style: {}&#xD;};&#xD;module.exports = Box;&#xD;&#xD;/***/ }),&#xD;/* 17 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!&#xD;  Copyright (c) 2016 Jed Watson.&#xD;  Licensed under the MIT License (MIT), see&#xD;  http://jedwatson.github.io/classnames&#xD;*/&#xD;/* global define */&#xD;&#xD;(function () {&#xD;	&apos;use strict&apos;;&#xD;&#xD;	var hasOwn = {}.hasOwnProperty;&#xD;&#xD;	function classNames () {&#xD;		var classes = [];&#xD;&#xD;		for (var i = 0; i &lt; arguments.length; i++) {&#xD;			var arg = arguments[i];&#xD;			if (!arg) continue;&#xD;&#xD;			var argType = typeof arg;&#xD;&#xD;			if (argType === &apos;string&apos; || argType === &apos;number&apos;) {&#xD;				classes.push(arg);&#xD;			} else if (Array.isArray(arg)) {&#xD;				classes.push(classNames.apply(null, arg));&#xD;			} else if (argType === &apos;object&apos;) {&#xD;				for (var key in arg) {&#xD;					if (hasOwn.call(arg, key) &amp;&amp; arg[key]) {&#xD;						classes.push(key);&#xD;					}&#xD;				}&#xD;			}&#xD;		}&#xD;&#xD;		return classes.join(&apos; &apos;);&#xD;	}&#xD;&#xD;	if (typeof module !== &apos;undefined&apos; &amp;&amp; module.exports) {&#xD;		module.exports = classNames;&#xD;	} else if (true) {&#xD;		// register as &apos;classnames&apos;, consistent with npm package name&#xD;		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;			return classNames;&#xD;		}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),&#xD;				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;	} else {&#xD;		window.classNames = classNames;&#xD;	}&#xD;}());&#xD;&#xD;&#xD;/***/ }),&#xD;/* 18 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer, global, process, setImmediate) {module.exports =&#xD;/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;/******/&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;/******/&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId]) {&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;/******/ 		}&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			i: moduleId,&#xD;/******/ 			l: false,&#xD;/******/ 			exports: {}&#xD;/******/ 		};&#xD;/******/&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;/******/&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.l = true;&#xD;/******/&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;/******/&#xD;/******/&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;/******/&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;/******/&#xD;/******/ 	// identity function for calling harmony imports with the correct context&#xD;/******/ 	__webpack_require__.i = function(value) { return value; };&#xD;/******/&#xD;/******/ 	// define getter function for harmony exports&#xD;/******/ 	__webpack_require__.d = function(exports, name, getter) {&#xD;/******/ 		if(!__webpack_require__.o(exports, name)) {&#xD;/******/ 			Object.defineProperty(exports, name, {&#xD;/******/ 				configurable: false,&#xD;/******/ 				enumerable: true,&#xD;/******/ 				get: getter&#xD;/******/ 			});&#xD;/******/ 		}&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// getDefaultExport function for compatibility with non-harmony modules&#xD;/******/ 	__webpack_require__.n = function(module) {&#xD;/******/ 		var getter = module &amp;&amp; module.__esModule ?&#xD;/******/ 			function getDefault() { return module[&apos;default&apos;]; } :&#xD;/******/ 			function getModuleExports() { return module; };&#xD;/******/ 		__webpack_require__.d(getter, &apos;a&apos;, getter);&#xD;/******/ 		return getter;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// Object.prototype.hasOwnProperty.call&#xD;/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };&#xD;/******/&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;/******/&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(__webpack_require__.s = 60);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var microee = __webpack_require__(90);&#xD;&#xD;// Implements a subset of Node&apos;s stream.Transform - in a cross-platform manner.&#xD;function Transform() {}&#xD;&#xD;microee.mixin(Transform);&#xD;&#xD;// The write() signature is different from Node&apos;s&#xD;// --&gt; makes it much easier to work with objects in logs.&#xD;// One of the lessons from v1 was that it&apos;s better to target&#xD;// a good browser rather than the lowest common denominator&#xD;// internally.&#xD;// If you want to use external streams, pipe() to ./stringify.js first.&#xD;Transform.prototype.write = function(name, level, args) {&#xD;  this.emit(&apos;item&apos;, name, level, args);&#xD;};&#xD;&#xD;Transform.prototype.end = function() {&#xD;  this.emit(&apos;end&apos;);&#xD;  this.removeAllListeners();&#xD;};&#xD;&#xD;Transform.prototype.pipe = function(dest) {&#xD;  var s = this;&#xD;  // prevent double piping&#xD;  s.emit(&apos;unpipe&apos;, dest);&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, s);&#xD;&#xD;  function onItem() {&#xD;    dest.write.apply(dest, Array.prototype.slice.call(arguments));&#xD;  }&#xD;  function onEnd() { !dest._isStdio &amp;&amp; dest.end(); }&#xD;&#xD;  s.on(&apos;item&apos;, onItem);&#xD;  s.on(&apos;end&apos;, onEnd);&#xD;&#xD;  s.when(&apos;unpipe&apos;, function(from) {&#xD;    var match = (from === dest) || typeof from == &apos;undefined&apos;;&#xD;    if(match) {&#xD;      s.removeListener(&apos;item&apos;, onItem);&#xD;      s.removeListener(&apos;end&apos;, onEnd);&#xD;      dest.emit(&apos;unpipe&apos;);&#xD;    }&#xD;    return match;&#xD;  });&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;Transform.prototype.unpipe = function(from) {&#xD;  this.emit(&apos;unpipe&apos;, from);&#xD;  return this;&#xD;};&#xD;&#xD;Transform.prototype.format = function(dest) {&#xD;  throw new Error([&#xD;    &apos;Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:&apos;,&#xD;    &apos;var Minilog = require(\&apos;minilog\&apos;);&apos;,&#xD;    &apos;Minilog&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console.formatClean)&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console);&apos;].join(&apos;\n&apos;));&#xD;};&#xD;&#xD;Transform.mixin = function(dest) {&#xD;  var o = Transform.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Transform;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 1 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Color = __webpack_require__(23);&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Utilities for casting and comparing Scratch data-types.&#xD; * Scratch behaves slightly differently from JavaScript in many respects,&#xD; * and these differences should be encapsulated below.&#xD; * For example, in Scratch, add(1, join("hello", world")) -&gt; 1.&#xD; * This is because "hello world" is cast to 0.&#xD; * In JavaScript, 1 + Number("hello" + "world") would give you NaN.&#xD; * Use when coercing a value before computation.&#xD; */&#xD;&#xD;var Cast = function () {&#xD;    function Cast() {&#xD;        _classCallCheck(this, Cast);&#xD;    }&#xD;&#xD;    _createClass(Cast, null, [{&#xD;        key: &apos;toNumber&apos;,&#xD;&#xD;        /**&#xD;         * Scratch cast to number.&#xD;         * Treats NaN as 0.&#xD;         * In Scratch 2.0, this is captured by `interp.numArg.`&#xD;         * @param {*} value Value to cast to number.&#xD;         * @return {number} The Scratch-casted number value.&#xD;         */&#xD;        value: function toNumber(value) {&#xD;            var n = Number(value);&#xD;            if (isNaN(n)) {&#xD;                // Scratch treats NaN as 0, when needed as a number.&#xD;                // E.g., 0 + NaN -&gt; 0.&#xD;                return 0;&#xD;            }&#xD;            return n;&#xD;        }&#xD;&#xD;        /**&#xD;         * Scratch cast to boolean.&#xD;         * In Scratch 2.0, this is captured by `interp.boolArg.`&#xD;         * Treats some string values differently from JavaScript.&#xD;         * @param {*} value Value to cast to boolean.&#xD;         * @return {boolean} The Scratch-casted boolean value.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toBoolean&apos;,&#xD;        value: function toBoolean(value) {&#xD;            // Already a boolean?&#xD;            if (typeof value === &apos;boolean&apos;) {&#xD;                return value;&#xD;            }&#xD;            if (typeof value === &apos;string&apos;) {&#xD;                // These specific strings are treated as false in Scratch.&#xD;                if (value === &apos;&apos; || value === &apos;0&apos; || value.toLowerCase() === &apos;false&apos;) {&#xD;                    return false;&#xD;                }&#xD;                // All other strings treated as true.&#xD;                return true;&#xD;            }&#xD;            // Coerce other values and numbers.&#xD;            return Boolean(value);&#xD;        }&#xD;&#xD;        /**&#xD;         * Scratch cast to string.&#xD;         * @param {*} value Value to cast to string.&#xD;         * @return {string} The Scratch-casted string value.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toString&apos;,&#xD;        value: function toString(value) {&#xD;            return String(value);&#xD;        }&#xD;&#xD;        /**&#xD;         * Cast any Scratch argument to an RGB color array to be used for the renderer.&#xD;         * @param {*} value Value to convert to RGB color array.&#xD;         * @return {Array.&lt;number&gt;} [r,g,b], values between 0-255.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toRgbColorList&apos;,&#xD;        value: function toRgbColorList(value) {&#xD;            var color = Cast.toRgbColorObject(value);&#xD;            return [color.r, color.g, color.b];&#xD;        }&#xD;&#xD;        /**&#xD;         * Cast any Scratch argument to an RGB color object to be used for the renderer.&#xD;         * @param {*} value Value to convert to RGB color object.&#xD;         * @return {RGBOject} [r,g,b], values between 0-255.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toRgbColorObject&apos;,&#xD;        value: function toRgbColorObject(value) {&#xD;            var color = void 0;&#xD;            if (typeof value === &apos;string&apos; &amp;&amp; value.substring(0, 1) === &apos;#&apos;) {&#xD;                color = Color.hexToRgb(value);&#xD;            } else {&#xD;                color = Color.decimalToRgb(Cast.toNumber(value));&#xD;            }&#xD;            return color;&#xD;        }&#xD;&#xD;        /**&#xD;         * Determine if a Scratch argument is a white space string (or null / empty).&#xD;         * @param {*} val value to check.&#xD;         * @return {boolean} True if the argument is all white spaces or null / empty.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isWhiteSpace&apos;,&#xD;        value: function isWhiteSpace(val) {&#xD;            return val === null || typeof val === &apos;string&apos; &amp;&amp; val.trim().length === 0;&#xD;        }&#xD;&#xD;        /**&#xD;         * Compare two values, using Scratch cast, case-insensitive string compare, etc.&#xD;         * In Scratch 2.0, this is captured by `interp.compare.`&#xD;         * @param {*} v1 First value to compare.&#xD;         * @param {*} v2 Second value to compare.&#xD;         * @returns {number} Negative number if v1 &lt; v2; 0 if equal; positive otherwise.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;compare&apos;,&#xD;        value: function compare(v1, v2) {&#xD;            var n1 = Number(v1);&#xD;            var n2 = Number(v2);&#xD;            if (n1 === 0 &amp;&amp; Cast.isWhiteSpace(v1)) {&#xD;                n1 = NaN;&#xD;            } else if (n2 === 0 &amp;&amp; Cast.isWhiteSpace(v2)) {&#xD;                n2 = NaN;&#xD;            }&#xD;            if (isNaN(n1) || isNaN(n2)) {&#xD;                // At least one argument can&apos;t be converted to a number.&#xD;                // Scratch compares strings as case insensitive.&#xD;                var s1 = String(v1).toLowerCase();&#xD;                var s2 = String(v2).toLowerCase();&#xD;                return s1.localeCompare(s2);&#xD;            }&#xD;            // Compare as numbers.&#xD;            return n1 - n2;&#xD;        }&#xD;&#xD;        /**&#xD;         * Determine if a Scratch argument number represents a round integer.&#xD;         * @param {*} val Value to check.&#xD;         * @return {boolean} True if number looks like an integer.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isInt&apos;,&#xD;        value: function isInt(val) {&#xD;            // Values that are already numbers.&#xD;            if (typeof val === &apos;number&apos;) {&#xD;                if (isNaN(val)) {&#xD;                    // NaN is considered an integer.&#xD;                    return true;&#xD;                }&#xD;                // True if it&apos;s "round" (e.g., 2.0 and 2).&#xD;                return val === parseInt(val, 10);&#xD;            } else if (typeof val === &apos;boolean&apos;) {&#xD;                // `True` and `false` always represent integer after Scratch cast.&#xD;                return true;&#xD;            } else if (typeof val === &apos;string&apos;) {&#xD;                // If it contains a decimal point, don&apos;t consider it an int.&#xD;                return val.indexOf(&apos;.&apos;) &lt; 0;&#xD;            }&#xD;            return false;&#xD;        }&#xD;    }, {&#xD;        key: &apos;toListIndex&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Compute a 1-based index into a list, based on a Scratch argument.&#xD;         * Two special cases may be returned:&#xD;         * LIST_ALL: if the block is referring to all of the items in the list.&#xD;         * LIST_INVALID: if the index was invalid in any way.&#xD;         * @param {*} index Scratch arg, including 1-based numbers or special cases.&#xD;         * @param {number} length Length of the list.&#xD;         * @return {(number|string)} 1-based index for list, LIST_ALL, or LIST_INVALID.&#xD;         */&#xD;        value: function toListIndex(index, length) {&#xD;            if (typeof index !== &apos;number&apos;) {&#xD;                if (index === &apos;all&apos;) {&#xD;                    return Cast.LIST_ALL;&#xD;                }&#xD;                if (index === &apos;last&apos;) {&#xD;                    if (length &gt; 0) {&#xD;                        return length;&#xD;                    }&#xD;                    return Cast.LIST_INVALID;&#xD;                } else if (index === &apos;random&apos; || index === &apos;any&apos;) {&#xD;                    if (length &gt; 0) {&#xD;                        return 1 + Math.floor(Math.random() * length);&#xD;                    }&#xD;                    return Cast.LIST_INVALID;&#xD;                }&#xD;            }&#xD;            index = Math.floor(Cast.toNumber(index));&#xD;            if (index &lt; 1 || index &gt; length) {&#xD;                return Cast.LIST_INVALID;&#xD;            }&#xD;            return index;&#xD;        }&#xD;    }, {&#xD;        key: &apos;LIST_INVALID&apos;,&#xD;        get: function get() {&#xD;            return &apos;INVALID&apos;;&#xD;        }&#xD;    }, {&#xD;        key: &apos;LIST_ALL&apos;,&#xD;        get: function get() {&#xD;            return &apos;ALL&apos;;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Cast;&#xD;}();&#xD;&#xD;module.exports = Cast;&#xD;&#xD;/***/ }),&#xD;/* 2 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;try {&#xD;  var util = __webpack_require__(13);&#xD;  if (typeof util.inherits !== &apos;function&apos;) throw &apos;&apos;;&#xD;  module.exports = util.inherits;&#xD;} catch (e) {&#xD;  module.exports = __webpack_require__(88);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 3 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var minilog = __webpack_require__(92);&#xD;minilog.enable();&#xD;&#xD;module.exports = minilog(&apos;vm&apos;);&#xD;&#xD;/***/ }),&#xD;/* 4 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var MathUtil = function () {&#xD;    function MathUtil() {&#xD;        _classCallCheck(this, MathUtil);&#xD;    }&#xD;&#xD;    _createClass(MathUtil, null, [{&#xD;        key: "degToRad",&#xD;&#xD;        /**&#xD;         * Convert a value from degrees to radians.&#xD;         * @param {!number} deg Value in degrees.&#xD;         * @return {!number} Equivalent value in radians.&#xD;         */&#xD;        value: function degToRad(deg) {&#xD;            return deg * Math.PI / 180;&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a value from radians to degrees.&#xD;         * @param {!number} rad Value in radians.&#xD;         * @return {!number} Equivalent value in degrees.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "radToDeg",&#xD;        value: function radToDeg(rad) {&#xD;            return rad * 180 / Math.PI;&#xD;        }&#xD;&#xD;        /**&#xD;         * Clamp a number between two limits.&#xD;         * If n &lt; min, return min. If n &gt; max, return max. Else, return n.&#xD;         * @param {!number} n Number to clamp.&#xD;         * @param {!number} min Minimum limit.&#xD;         * @param {!number} max Maximum limit.&#xD;         * @return {!number} Value of n clamped to min and max.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "clamp",&#xD;        value: function clamp(n, min, max) {&#xD;            return Math.min(Math.max(n, min), max);&#xD;        }&#xD;&#xD;        /**&#xD;         * Keep a number between two limits, wrapping "extra" into the range.&#xD;         * e.g., wrapClamp(7, 1, 5) == 2&#xD;         * wrapClamp(0, 1, 5) == 5&#xD;         * wrapClamp(-11, -10, 6) == 6, etc.&#xD;         * @param {!number} n Number to wrap.&#xD;         * @param {!number} min Minimum limit.&#xD;         * @param {!number} max Maximum limit.&#xD;         * @return {!number} Value of n wrapped between min and max.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "wrapClamp",&#xD;        value: function wrapClamp(n, min, max) {&#xD;            var range = max - min + 1;&#xD;            return n - Math.floor((n - min) / range) * range;&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a value from tan function in degrees.&#xD;         * @param {!number} angle in degrees&#xD;         * @return {!number} Correct tan value&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "tan",&#xD;        value: function tan(angle) {&#xD;            angle = angle % 360;&#xD;            switch (angle) {&#xD;                case -270:&#xD;                case 90:&#xD;                    return Infinity;&#xD;                case -90:&#xD;                case 270:&#xD;                    return -Infinity;&#xD;                default:&#xD;                    return parseFloat(Math.tan(Math.PI * angle / 180).toFixed(10));&#xD;            }&#xD;        }&#xD;    }]);&#xD;&#xD;    return MathUtil;&#xD;}();&#xD;&#xD;module.exports = MathUtil;&#xD;&#xD;/***/ }),&#xD;/* 5 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Parser = __webpack_require__(34),&#xD;    DomHandler = __webpack_require__(71);&#xD;&#xD;function defineProp(name, value){&#xD;	delete module.exports[name];&#xD;	module.exports[name] = value;&#xD;	return value;&#xD;}&#xD;&#xD;module.exports = {&#xD;	Parser: Parser,&#xD;	Tokenizer: __webpack_require__(35),&#xD;	ElementType: __webpack_require__(11),&#xD;	DomHandler: DomHandler,&#xD;	get FeedHandler(){&#xD;		return defineProp("FeedHandler", __webpack_require__(85));&#xD;	},&#xD;	get Stream(){&#xD;		return defineProp("Stream", __webpack_require__(87));&#xD;	},&#xD;	get WritableStream(){&#xD;		return defineProp("WritableStream", __webpack_require__(36));&#xD;	},&#xD;	get ProxyHandler(){&#xD;		return defineProp("ProxyHandler", __webpack_require__(86));&#xD;	},&#xD;	get DomUtils(){&#xD;		return defineProp("DomUtils", __webpack_require__(73));&#xD;	},&#xD;	get CollectingHandler(){&#xD;		return defineProp("CollectingHandler", __webpack_require__(84));&#xD;	},&#xD;	// For legacy support&#xD;	DefaultHandler: DomHandler,&#xD;	get RssHandler(){&#xD;		return defineProp("RssHandler", this.FeedHandler);&#xD;	},&#xD;	//helper methods&#xD;	parseDOM: function(data, options){&#xD;		var handler = new DomHandler(options);&#xD;		new Parser(handler, options).end(data);&#xD;		return handler.dom;&#xD;	},&#xD;	parseFeed: function(feed, options){&#xD;		var handler = new module.exports.FeedHandler(options);&#xD;		new Parser(handler, options).end(feed);&#xD;		return handler.dom;&#xD;	},&#xD;	createDomStream: function(cb, options, elementCb){&#xD;		var handler = new DomHandler(cb, options, elementCb);&#xD;		return new Parser(handler, options);&#xD;	},&#xD;	// List of all events that the parser emits&#xD;	EVENTS: { /* Format: eventname: number of arguments */&#xD;		attribute: 2,&#xD;		cdatastart: 0,&#xD;		cdataend: 0,&#xD;		text: 1,&#xD;		processinginstruction: 2,&#xD;		comment: 1,&#xD;		commentend: 0,&#xD;		closetag: 1,&#xD;		opentag: 2,&#xD;		opentagname: 1,&#xD;		error: 1,&#xD;		end: 0&#xD;	}&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 6 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var styles = {&#xD;    //styles&#xD;    &apos;bold&apos;      : [&apos;\033[1m&apos;,  &apos;\033[22m&apos;],&#xD;    &apos;italic&apos;    : [&apos;\033[3m&apos;,  &apos;\033[23m&apos;],&#xD;    &apos;underline&apos; : [&apos;\033[4m&apos;,  &apos;\033[24m&apos;],&#xD;    &apos;inverse&apos;   : [&apos;\033[7m&apos;,  &apos;\033[27m&apos;],&#xD;    //grayscale&#xD;    &apos;white&apos;     : [&apos;\033[37m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;grey&apos;      : [&apos;\033[90m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;black&apos;     : [&apos;\033[30m&apos;, &apos;\033[39m&apos;],&#xD;    //colors&#xD;    &apos;blue&apos;      : [&apos;\033[34m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;cyan&apos;      : [&apos;\033[36m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;green&apos;     : [&apos;\033[32m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;magenta&apos;   : [&apos;\033[35m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;red&apos;       : [&apos;\033[31m&apos;, &apos;\033[39m&apos;],&#xD;    &apos;yellow&apos;    : [&apos;\033[33m&apos;, &apos;\033[39m&apos;]&#xD;  };&#xD;&#xD;exports.levelMap = { debug: 1, info: 2, warn: 3, error: 4 };&#xD;&#xD;exports.style = function(str, style) {&#xD;  return styles[style][0] + str + styles[style][1];&#xD;}&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 7 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a duplex stream is just a stream that is both readable and writable.&#xD;// Since JS doesn&apos;t have multiple prototypal inheritance, this class&#xD;// prototypally inherits from Readable, and then parasitically from&#xD;// Writable.&#xD;&#xD;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;&#xD;var objectKeys = Object.keys || function (obj) {&#xD;  var keys = [];&#xD;  for (var key in obj) {&#xD;    keys.push(key);&#xD;  }return keys;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = Duplex;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(26);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(10);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Readable = __webpack_require__(39);&#xD;var Writable = __webpack_require__(41);&#xD;&#xD;util.inherits(Duplex, Readable);&#xD;&#xD;var keys = objectKeys(Writable.prototype);&#xD;for (var v = 0; v &lt; keys.length; v++) {&#xD;  var method = keys[v];&#xD;  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];&#xD;}&#xD;&#xD;function Duplex(options) {&#xD;  if (!(this instanceof Duplex)) return new Duplex(options);&#xD;&#xD;  Readable.call(this, options);&#xD;  Writable.call(this, options);&#xD;&#xD;  if (options &amp;&amp; options.readable === false) this.readable = false;&#xD;&#xD;  if (options &amp;&amp; options.writable === false) this.writable = false;&#xD;&#xD;  this.allowHalfOpen = true;&#xD;  if (options &amp;&amp; options.allowHalfOpen === false) this.allowHalfOpen = false;&#xD;&#xD;  this.once(&apos;end&apos;, onend);&#xD;}&#xD;&#xD;// the no-half-open enforcer&#xD;function onend() {&#xD;  // if we allow half-open state, or if the writable side ended,&#xD;  // then we&apos;re ok.&#xD;  if (this.allowHalfOpen || this._writableState.ended) return;&#xD;&#xD;  // no more data can be written.&#xD;  // But allow more writes to happen in this tick.&#xD;  processNextTick(onEndNT, this);&#xD;}&#xD;&#xD;function onEndNT(self) {&#xD;  self.end();&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 8 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(1);&#xD;&#xD;/***/ }),&#xD;/* 9 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var adapter = __webpack_require__(55);&#xD;var mutationAdapter = __webpack_require__(27);&#xD;var xmlEscape = __webpack_require__(68);&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Store and mutate the VM block representation,&#xD; * and handle updates from Scratch Blocks events.&#xD; */&#xD;&#xD;var Blocks = function () {&#xD;    function Blocks() {&#xD;        _classCallCheck(this, Blocks);&#xD;&#xD;        /**&#xD;         * All blocks in the workspace.&#xD;         * Keys are block IDs, values are metadata about the block.&#xD;         * @type {Object.&lt;string, Object&gt;}&#xD;         */&#xD;        this._blocks = {};&#xD;&#xD;        /**&#xD;         * All top-level scripts in the workspace.&#xD;         * A list of block IDs that represent scripts (i.e., first block in script).&#xD;         * @type {Array.&lt;String&gt;}&#xD;         */&#xD;        this._scripts = [];&#xD;    }&#xD;&#xD;    /**&#xD;     * Blockly inputs that represent statements/branch.&#xD;     * are prefixed with this string.&#xD;     * @const{string}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Blocks, [{&#xD;        key: &apos;getBlock&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Provide an object with metadata for the requested block ID.&#xD;         * @param {!string} blockId ID of block we have stored.&#xD;         * @return {?object} Metadata about the block, if it exists.&#xD;         */&#xD;        value: function getBlock(blockId) {&#xD;            return this._blocks[blockId];&#xD;        }&#xD;&#xD;        /**&#xD;         * Get all known top-level blocks that start scripts.&#xD;         * @return {Array.&lt;string&gt;} List of block IDs.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getScripts&apos;,&#xD;        value: function getScripts() {&#xD;            return this._scripts;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the next block for a particular block&#xD;         * @param {?string} id ID of block to get the next block for&#xD;         * @return {?string} ID of next block in the sequence&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getNextBlock&apos;,&#xD;        value: function getNextBlock(id) {&#xD;            var block = this._blocks[id];&#xD;            return typeof block === &apos;undefined&apos; ? null : block.next;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the branch for a particular C-shaped block.&#xD;         * @param {?string} id ID for block to get the branch for.&#xD;         * @param {?number} branchNum Which branch to select (e.g. for if-else).&#xD;         * @return {?string} ID of block in the branch.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getBranch&apos;,&#xD;        value: function getBranch(id, branchNum) {&#xD;            var block = this._blocks[id];&#xD;            if (typeof block === &apos;undefined&apos;) return null;&#xD;            if (!branchNum) branchNum = 1;&#xD;&#xD;            var inputName = Blocks.BRANCH_INPUT_PREFIX;&#xD;            if (branchNum &gt; 1) {&#xD;                inputName += branchNum;&#xD;            }&#xD;&#xD;            // Empty C-block?&#xD;            var input = block.inputs[inputName];&#xD;            return typeof input === &apos;undefined&apos; ? null : input.block;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the opcode for a particular block&#xD;         * @param {?object} block The block to query&#xD;         * @return {?string} the opcode corresponding to that block&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getOpcode&apos;,&#xD;        value: function getOpcode(block) {&#xD;            return typeof block === &apos;undefined&apos; ? null : block.opcode;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get all fields and their values for a block.&#xD;         * @param {?object} block The block to query.&#xD;         * @return {?object} All fields and their values.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getFields&apos;,&#xD;        value: function getFields(block) {&#xD;            return typeof block === &apos;undefined&apos; ? null : block.fields;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get all non-branch inputs for a block.&#xD;         * @param {?object} block the block to query.&#xD;         * @return {!object} All non-branch inputs and their associated blocks.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getInputs&apos;,&#xD;        value: function getInputs(block) {&#xD;            if (typeof block === &apos;undefined&apos;) return null;&#xD;            var inputs = {};&#xD;            for (var input in block.inputs) {&#xD;                // Ignore blocks prefixed with branch prefix.&#xD;                if (input.substring(0, Blocks.BRANCH_INPUT_PREFIX.length) !== Blocks.BRANCH_INPUT_PREFIX) {&#xD;                    inputs[input] = block.inputs[input];&#xD;                }&#xD;            }&#xD;            return inputs;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get mutation data for a block.&#xD;         * @param {?object} block The block to query.&#xD;         * @return {?object} Mutation for the block.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getMutation&apos;,&#xD;        value: function getMutation(block) {&#xD;            return typeof block === &apos;undefined&apos; ? null : block.mutation;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the top-level script for a given block.&#xD;         * @param {?string} id ID of block to query.&#xD;         * @return {?string} ID of top-level script block.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTopLevelScript&apos;,&#xD;        value: function getTopLevelScript(id) {&#xD;            var block = this._blocks[id];&#xD;            if (typeof block === &apos;undefined&apos;) return null;&#xD;            while (block.parent !== null) {&#xD;                block = this._blocks[block.parent];&#xD;            }&#xD;            return block.id;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the procedure definition for a given name.&#xD;         * @param {?string} name Name of procedure to query.&#xD;         * @return {?string} ID of procedure definition.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getProcedureDefinition&apos;,&#xD;        value: function getProcedureDefinition(name) {&#xD;            for (var id in this._blocks) {&#xD;                if (!this._blocks.hasOwnProperty(id)) continue;&#xD;                var block = this._blocks[id];&#xD;                if ((block.opcode === &apos;procedures_defnoreturn&apos; || block.opcode === &apos;procedures_defreturn&apos;) &amp;&amp; block.mutation.proccode === name) {&#xD;                    return id;&#xD;                }&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the procedure definition for a given name.&#xD;         * @param {?string} name Name of procedure to query.&#xD;         * @return {?string} ID of procedure definition.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getProcedureParamNames&apos;,&#xD;        value: function getProcedureParamNames(name) {&#xD;            for (var id in this._blocks) {&#xD;                if (!this._blocks.hasOwnProperty(id)) continue;&#xD;                var block = this._blocks[id];&#xD;                if ((block.opcode === &apos;procedures_defnoreturn&apos; || block.opcode === &apos;procedures_defreturn&apos;) &amp;&amp; block.mutation.proccode === name) {&#xD;                    return JSON.parse(block.mutation.argumentnames);&#xD;                }&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        // ---------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Create event listener for blocks. Handles validation and serves as a generic&#xD;         * adapter between the blocks and the runtime interface.&#xD;         * @param {Object} e Blockly "block" event&#xD;         * @param {?Runtime} optRuntime Optional runtime to forward click events to.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;blocklyListen&apos;,&#xD;        value: function blocklyListen(e, optRuntime) {&#xD;            // Validate event&#xD;            if ((typeof e === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(e)) !== &apos;object&apos;) return;&#xD;            if (typeof e.blockId !== &apos;string&apos;) return;&#xD;&#xD;            // UI event: clicked scripts toggle in the runtime.&#xD;            if (e.element === &apos;stackclick&apos;) {&#xD;                if (optRuntime) {&#xD;                    optRuntime.toggleScript(e.blockId, { showVisualReport: true });&#xD;                }&#xD;                return;&#xD;            }&#xD;&#xD;            // Block create/update/destroy&#xD;            switch (e.type) {&#xD;                case &apos;create&apos;:&#xD;                    {&#xD;                        var newBlocks = adapter(e);&#xD;                        // A create event can create many blocks. Add them all.&#xD;                        for (var i = 0; i &lt; newBlocks.length; i++) {&#xD;                            this.createBlock(newBlocks[i]);&#xD;                        }&#xD;                        break;&#xD;                    }&#xD;                case &apos;change&apos;:&#xD;                    this.changeBlock({&#xD;                        id: e.blockId,&#xD;                        element: e.element,&#xD;                        name: e.name,&#xD;                        value: e.newValue&#xD;                    }, optRuntime);&#xD;                    break;&#xD;                case &apos;move&apos;:&#xD;                    this.moveBlock({&#xD;                        id: e.blockId,&#xD;                        oldParent: e.oldParentId,&#xD;                        oldInput: e.oldInputName,&#xD;                        newParent: e.newParentId,&#xD;                        newInput: e.newInputName,&#xD;                        newCoordinate: e.newCoordinate&#xD;                    });&#xD;                    break;&#xD;                case &apos;delete&apos;:&#xD;                    // Don&apos;t accept delete events for missing blocks,&#xD;                    // or shadow blocks being obscured.&#xD;                    if (!this._blocks.hasOwnProperty(e.blockId) || this._blocks[e.blockId].shadow) {&#xD;                        return;&#xD;                    }&#xD;                    // Inform any runtime to forget about glows on this script.&#xD;                    if (optRuntime &amp;&amp; this._blocks[e.blockId].topLevel) {&#xD;                        optRuntime.quietGlow(e.blockId);&#xD;                    }&#xD;                    this.deleteBlock({&#xD;                        id: e.blockId&#xD;                    });&#xD;                    break;&#xD;            }&#xD;        }&#xD;&#xD;        // ---------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Block management: create blocks and scripts from a `create` event&#xD;         * @param {!object} block Blockly create event to be processed&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createBlock&apos;,&#xD;        value: function createBlock(block) {&#xD;            // Does the block already exist?&#xD;            // Could happen, e.g., for an unobscured shadow.&#xD;            if (this._blocks.hasOwnProperty(block.id)) {&#xD;                return;&#xD;            }&#xD;            // Create new block.&#xD;            this._blocks[block.id] = block;&#xD;            // Push block id to scripts array.&#xD;            // Blocks are added as a top-level stack if they are marked as a top-block&#xD;            // (if they were top-level XML in the event).&#xD;            if (block.topLevel) {&#xD;                this._addScript(block.id);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Block management: change block field values&#xD;         * @param {!object} args Blockly change event to be processed&#xD;         * @param {?Runtime} optRuntime Optional runtime to allow changeBlock to change VM state.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBlock&apos;,&#xD;        value: function changeBlock(args, optRuntime) {&#xD;            // Validate&#xD;            if ([&apos;field&apos;, &apos;mutation&apos;, &apos;checkbox&apos;].indexOf(args.element) === -1) return;&#xD;            var block = this._blocks[args.id];&#xD;            if (typeof block === &apos;undefined&apos;) return;&#xD;&#xD;            var wasMonitored = block.isMonitored;&#xD;            switch (args.element) {&#xD;                case &apos;field&apos;:&#xD;                    // Update block value&#xD;                    if (!block.fields[args.name]) return;&#xD;                    block.fields[args.name].value = args.value;&#xD;                    break;&#xD;                case &apos;mutation&apos;:&#xD;                    block.mutation = mutationAdapter(args.value);&#xD;                    break;&#xD;                case &apos;checkbox&apos;:&#xD;                    block.isMonitored = args.value;&#xD;                    if (optRuntime &amp;&amp; wasMonitored &amp;&amp; !block.isMonitored) {&#xD;                        optRuntime.requestRemoveMonitor(block.id);&#xD;                    } else if (optRuntime &amp;&amp; !wasMonitored &amp;&amp; block.isMonitored) {&#xD;                        optRuntime.requestAddMonitor(&#xD;                        // Ensure that value is not undefined, since React requires it&#xD;                        {&#xD;                            // @todo(vm#564) this will collide if multiple sprites use same block&#xD;                            id: block.id,&#xD;                            category: &apos;data&apos;,&#xD;                            // @todo(vm#565) how to handle translation here?&#xD;                            label: block.opcode,&#xD;                            // @todo(vm#565) for numerical values with decimals, some countries use comma&#xD;                            value: &apos;&apos;,&#xD;                            x: 0,&#xD;                            // @todo(vm#566) Don&apos;t require sending x and y when instantiating a&#xD;                            // monitor. If it&apos;s not preset the GUI should decide.&#xD;                            y: 0&#xD;                        });&#xD;                    }&#xD;                    break;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Block management: move blocks from parent to parent&#xD;         * @param {!object} e Blockly move event to be processed&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;moveBlock&apos;,&#xD;        value: function moveBlock(e) {&#xD;            if (!this._blocks.hasOwnProperty(e.id)) {&#xD;                return;&#xD;            }&#xD;&#xD;            // Move coordinate changes.&#xD;            if (e.newCoordinate) {&#xD;                this._blocks[e.id].x = e.newCoordinate.x;&#xD;                this._blocks[e.id].y = e.newCoordinate.y;&#xD;            }&#xD;&#xD;            // Remove from any old parent.&#xD;            if (typeof e.oldParent !== &apos;undefined&apos;) {&#xD;                var oldParent = this._blocks[e.oldParent];&#xD;                if (typeof e.oldInput !== &apos;undefined&apos; &amp;&amp; oldParent.inputs[e.oldInput].block === e.id) {&#xD;                    // This block was connected to the old parent&apos;s input.&#xD;                    oldParent.inputs[e.oldInput].block = null;&#xD;                } else if (oldParent.next === e.id) {&#xD;                    // This block was connected to the old parent&apos;s next connection.&#xD;                    oldParent.next = null;&#xD;                }&#xD;                this._blocks[e.id].parent = null;&#xD;            }&#xD;&#xD;            // Has the block become a top-level block?&#xD;            if (typeof e.newParent === &apos;undefined&apos;) {&#xD;                this._addScript(e.id);&#xD;            } else {&#xD;                // Remove script, if one exists.&#xD;                this._deleteScript(e.id);&#xD;                // Otherwise, try to connect it in its new place.&#xD;                if (typeof e.newInput === &apos;undefined&apos;) {&#xD;                    // Moved to the new parent&apos;s next connection.&#xD;                    this._blocks[e.newParent].next = e.id;&#xD;                } else {&#xD;                    // Moved to the new parent&apos;s input.&#xD;                    // Don&apos;t obscure the shadow block.&#xD;                    var oldShadow = null;&#xD;                    if (this._blocks[e.newParent].inputs.hasOwnProperty(e.newInput)) {&#xD;                        oldShadow = this._blocks[e.newParent].inputs[e.newInput].shadow;&#xD;                    }&#xD;                    this._blocks[e.newParent].inputs[e.newInput] = {&#xD;                        name: e.newInput,&#xD;                        block: e.id,&#xD;                        shadow: oldShadow&#xD;                    };&#xD;                }&#xD;                this._blocks[e.id].parent = e.newParent;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Block management: run all blocks.&#xD;         * @param {!object} runtime Runtime to run all blocks in.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;runAllMonitored&apos;,&#xD;        value: function runAllMonitored(runtime) {&#xD;            var _this = this;&#xD;&#xD;            Object.keys(this._blocks).forEach(function (blockId) {&#xD;                if (_this.getBlock(blockId).isMonitored) {&#xD;                    // @todo handle specific targets (e.g. apple x position)&#xD;                    runtime.toggleScript(blockId, { updateMonitor: true });&#xD;                }&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Block management: delete blocks and their associated scripts.&#xD;         * @param {!object} e Blockly delete event to be processed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteBlock&apos;,&#xD;        value: function deleteBlock(e) {&#xD;            // @todo In runtime, stop threads running on this script.&#xD;&#xD;            // Get block&#xD;            var block = this._blocks[e.id];&#xD;&#xD;            // Delete children&#xD;            if (block.next !== null) {&#xD;                this.deleteBlock({ id: block.next });&#xD;            }&#xD;&#xD;            // Delete inputs (including branches)&#xD;            for (var input in block.inputs) {&#xD;                // If it&apos;s null, the block in this input moved away.&#xD;                if (block.inputs[input].block !== null) {&#xD;                    this.deleteBlock({ id: block.inputs[input].block });&#xD;                }&#xD;                // Delete obscured shadow blocks.&#xD;                if (block.inputs[input].shadow !== null &amp;&amp; block.inputs[input].shadow !== block.inputs[input].block) {&#xD;                    this.deleteBlock({ id: block.inputs[input].shadow });&#xD;                }&#xD;            }&#xD;&#xD;            // Delete any script starting with this block.&#xD;            this._deleteScript(e.id);&#xD;&#xD;            // Delete block itself.&#xD;            delete this._blocks[e.id];&#xD;        }&#xD;&#xD;        // ---------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Encode all of `this._blocks` as an XML string usable&#xD;         * by a Blockly/scratch-blocks workspace.&#xD;         * @return {string} String of XML representing this object&apos;s blocks.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toXML&apos;,&#xD;        value: function toXML() {&#xD;            var xmlString = &apos;&lt;xml xmlns="http://www.w3.org/1999/xhtml"&gt;&apos;;&#xD;            for (var i = 0; i &lt; this._scripts.length; i++) {&#xD;                xmlString += this.blockToXML(this._scripts[i]);&#xD;            }&#xD;            return xmlString + &apos;&lt;/xml&gt;&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Recursively encode an individual block and its children&#xD;         * into a Blockly/scratch-blocks XML string.&#xD;         * @param {!string} blockId ID of block to encode.&#xD;         * @return {string} String of XML representing this block and any children.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;blockToXML&apos;,&#xD;        value: function blockToXML(blockId) {&#xD;            var block = this._blocks[blockId];&#xD;            // Encode properties of this block.&#xD;            var tagName = block.shadow ? &apos;shadow&apos; : &apos;block&apos;;&#xD;            var xmlString = &apos;&lt;&apos; + tagName + &apos;\n                id="&apos; + block.id + &apos;"\n                type="&apos; + block.opcode + &apos;"\n                &apos; + (block.topLevel ? &apos;x="&apos; + block.x + &apos;" y="&apos; + block.y + &apos;"&apos; : &apos;&apos;) + &apos;\n            &gt;&apos;;&#xD;            // Add any mutation. Must come before inputs.&#xD;            if (block.mutation) {&#xD;                xmlString += this.mutationToXML(block.mutation);&#xD;            }&#xD;            // Add any inputs on this block.&#xD;            for (var input in block.inputs) {&#xD;                if (!block.inputs.hasOwnProperty(input)) continue;&#xD;                var blockInput = block.inputs[input];&#xD;                // Only encode a value tag if the value input is occupied.&#xD;                if (blockInput.block || blockInput.shadow) {&#xD;                    xmlString += &apos;&lt;value name="&apos; + blockInput.name + &apos;"&gt;&apos;;&#xD;                    if (blockInput.block) {&#xD;                        xmlString += this.blockToXML(blockInput.block);&#xD;                    }&#xD;                    if (blockInput.shadow &amp;&amp; blockInput.shadow !== blockInput.block) {&#xD;                        // Obscured shadow.&#xD;                        xmlString += this.blockToXML(blockInput.shadow);&#xD;                    }&#xD;                    xmlString += &apos;&lt;/value&gt;&apos;;&#xD;                }&#xD;            }&#xD;            // Add any fields on this block.&#xD;            for (var field in block.fields) {&#xD;                if (!block.fields.hasOwnProperty(field)) continue;&#xD;                var blockField = block.fields[field];&#xD;                var value = blockField.value;&#xD;                if (typeof value === &apos;string&apos;) {&#xD;                    value = xmlEscape(blockField.value);&#xD;                }&#xD;                xmlString += &apos;&lt;field name="&apos; + blockField.name + &apos;"&gt;&apos; + value + &apos;&lt;/field&gt;&apos;;&#xD;            }&#xD;            // Add blocks connected to the next connection.&#xD;            if (block.next) {&#xD;                xmlString += &apos;&lt;next&gt;&apos; + this.blockToXML(block.next) + &apos;&lt;/next&gt;&apos;;&#xD;            }&#xD;            xmlString += &apos;&lt;/&apos; + tagName + &apos;&gt;&apos;;&#xD;            return xmlString;&#xD;        }&#xD;&#xD;        /**&#xD;         * Recursively encode a mutation object to XML.&#xD;         * @param {!object} mutation Object representing a mutation.&#xD;         * @return {string} XML string representing a mutation.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;mutationToXML&apos;,&#xD;        value: function mutationToXML(mutation) {&#xD;            var mutationString = &apos;&lt;&apos; + mutation.tagName;&#xD;            for (var prop in mutation) {&#xD;                if (prop === &apos;children&apos; || prop === &apos;tagName&apos;) continue;&#xD;                var mutationValue = typeof mutation[prop] === &apos;string&apos; ? xmlEscape(mutation[prop]) : mutation[prop];&#xD;                mutationString += &apos; &apos; + prop + &apos;="&apos; + mutationValue + &apos;"&apos;;&#xD;            }&#xD;            mutationString += &apos;&gt;&apos;;&#xD;            for (var i = 0; i &lt; mutation.children.length; i++) {&#xD;                mutationString += this.mutationToXML(mutation.children[i]);&#xD;            }&#xD;            mutationString += &apos;&lt;/&apos; + mutation.tagName + &apos;&gt;&apos;;&#xD;            return mutationString;&#xD;        }&#xD;&#xD;        // ---------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Helper to add a stack to `this._scripts`.&#xD;         * @param {?string} topBlockId ID of block that starts the script.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_addScript&apos;,&#xD;        value: function _addScript(topBlockId) {&#xD;            var i = this._scripts.indexOf(topBlockId);&#xD;            if (i &gt; -1) return; // Already in scripts.&#xD;            this._scripts.push(topBlockId);&#xD;            // Update `topLevel` property on the top block.&#xD;            this._blocks[topBlockId].topLevel = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Helper to remove a script from `this._scripts`.&#xD;         * @param {?string} topBlockId ID of block that starts the script.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_deleteScript&apos;,&#xD;        value: function _deleteScript(topBlockId) {&#xD;            var i = this._scripts.indexOf(topBlockId);&#xD;            if (i &gt; -1) this._scripts.splice(i, 1);&#xD;            // Update `topLevel` property on the top block.&#xD;            if (this._blocks[topBlockId]) this._blocks[topBlockId].topLevel = false;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;BRANCH_INPUT_PREFIX&apos;,&#xD;        get: function get() {&#xD;            return &apos;SUBSTACK&apos;;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Blocks;&#xD;}();&#xD;&#xD;module.exports = Blocks;&#xD;&#xD;/***/ }),&#xD;/* 10 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;// NOTE: These type checking functions intentionally don&apos;t use `instanceof`&#xD;// because it is fragile and can be easily faked with `Object.create()`.&#xD;&#xD;function isArray(arg) {&#xD;  if (Array.isArray) {&#xD;    return Array.isArray(arg);&#xD;  }&#xD;  return objectToString(arg) === &apos;[object Array]&apos;;&#xD;}&#xD;exports.isArray = isArray;&#xD;&#xD;function isBoolean(arg) {&#xD;  return typeof arg === &apos;boolean&apos;;&#xD;}&#xD;exports.isBoolean = isBoolean;&#xD;&#xD;function isNull(arg) {&#xD;  return arg === null;&#xD;}&#xD;exports.isNull = isNull;&#xD;&#xD;function isNullOrUndefined(arg) {&#xD;  return arg == null;&#xD;}&#xD;exports.isNullOrUndefined = isNullOrUndefined;&#xD;&#xD;function isNumber(arg) {&#xD;  return typeof arg === &apos;number&apos;;&#xD;}&#xD;exports.isNumber = isNumber;&#xD;&#xD;function isString(arg) {&#xD;  return typeof arg === &apos;string&apos;;&#xD;}&#xD;exports.isString = isString;&#xD;&#xD;function isSymbol(arg) {&#xD;  return typeof arg === &apos;symbol&apos;;&#xD;}&#xD;exports.isSymbol = isSymbol;&#xD;&#xD;function isUndefined(arg) {&#xD;  return arg === void 0;&#xD;}&#xD;exports.isUndefined = isUndefined;&#xD;&#xD;function isRegExp(re) {&#xD;  return objectToString(re) === &apos;[object RegExp]&apos;;&#xD;}&#xD;exports.isRegExp = isRegExp;&#xD;&#xD;function isObject(arg) {&#xD;  return typeof arg === &apos;object&apos; &amp;&amp; arg !== null;&#xD;}&#xD;exports.isObject = isObject;&#xD;&#xD;function isDate(d) {&#xD;  return objectToString(d) === &apos;[object Date]&apos;;&#xD;}&#xD;exports.isDate = isDate;&#xD;&#xD;function isError(e) {&#xD;  return (objectToString(e) === &apos;[object Error]&apos; || e instanceof Error);&#xD;}&#xD;exports.isError = isError;&#xD;&#xD;function isFunction(arg) {&#xD;  return typeof arg === &apos;function&apos;;&#xD;}&#xD;exports.isFunction = isFunction;&#xD;&#xD;function isPrimitive(arg) {&#xD;  return arg === null ||&#xD;         typeof arg === &apos;boolean&apos; ||&#xD;         typeof arg === &apos;number&apos; ||&#xD;         typeof arg === &apos;string&apos; ||&#xD;         typeof arg === &apos;symbol&apos; ||  // ES6 symbol&#xD;         typeof arg === &apos;undefined&apos;;&#xD;}&#xD;exports.isPrimitive = isPrimitive;&#xD;&#xD;exports.isBuffer = Buffer.isBuffer;&#xD;&#xD;function objectToString(o) {&#xD;  return Object.prototype.toString.call(o);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 11 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;//Types of elements found in the DOM&#xD;module.exports = {&#xD;	Text: "text", //Text&#xD;	Directive: "directive", //&lt;? ... ?&gt;&#xD;	Comment: "comment", //&lt;!-- ... --&gt;&#xD;	Script: "script", //&lt;script&gt; tags&#xD;	Style: "style", //&lt;style&gt; tags&#xD;	Tag: "tag", //Any tag&#xD;	CDATA: "cdata", //&lt;![CDATA[ ... ]]&gt;&#xD;	Doctype: "doctype",&#xD;&#xD;	isTag: function(elem){&#xD;		return elem.type === "tag" || elem.type === "script" || elem.type === "style";&#xD;	}&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 12 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(30);&#xD;&#xD;/***/ }),&#xD;/* 13 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(74);&#xD;&#xD;/***/ }),&#xD;/* 14 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * A utility for accurately measuring time.&#xD; * To use:&#xD; * ---&#xD; * var timer = new Timer();&#xD; * timer.start();&#xD; * ... pass some time ...&#xD; * var timeDifference = timer.timeElapsed();&#xD; * ---&#xD; * Or, you can use the `time` and `relativeTime`&#xD; * to do some measurement yourself.&#xD; */&#xD;&#xD;var Timer = function () {&#xD;    function Timer() {&#xD;        _classCallCheck(this, Timer);&#xD;&#xD;        /**&#xD;         * Used to store the start time of a timer action.&#xD;         * Updated when calling `timer.start`.&#xD;         */&#xD;        this.startTime = 0;&#xD;    }&#xD;&#xD;    /**&#xD;     * Disable use of self.performance for now as it results in lower performance&#xD;     * However, instancing it like below (caching the self.performance to a local variable) negates most of the issues.&#xD;     * @type {boolean}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Timer, [{&#xD;        key: &apos;time&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Return the currently known absolute time, in ms precision.&#xD;         * @returns {number} ms elapsed since 1 January 1970 00:00:00 UTC.&#xD;         */&#xD;        value: function time() {&#xD;            return Timer.nowObj.now();&#xD;        }&#xD;&#xD;        /**&#xD;         * Returns a time accurate relative to other times produced by this function.&#xD;         * If possible, will use sub-millisecond precision.&#xD;         * If not, will use millisecond precision.&#xD;         * Not guaranteed to produce the same absolute values per-system.&#xD;         * @returns {number} ms-scale accurate time relative to other relative times.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;relativeTime&apos;,&#xD;        value: function relativeTime() {&#xD;            return Timer.nowObj.now();&#xD;        }&#xD;&#xD;        /**&#xD;         * Start a timer for measuring elapsed time,&#xD;         * at the most accurate precision possible.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;start&apos;,&#xD;        value: function start() {&#xD;            this.startTime = Timer.nowObj.now();&#xD;        }&#xD;    }, {&#xD;        key: &apos;timeElapsed&apos;,&#xD;        value: function timeElapsed() {&#xD;            return Timer.nowObj.now() - this.startTime;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;USE_PERFORMANCE&apos;,&#xD;        get: function get() {&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Legacy object to allow for us to call now to get the old style date time (for backwards compatibility)&#xD;         * @deprecated This is only called via the nowObj.now() if no other means is possible...&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;legacyDateCode&apos;,&#xD;        get: function get() {&#xD;            return {&#xD;                now: function now() {&#xD;                    return new Date().getTime();&#xD;                }&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * Use this object to route all time functions through single access points.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;nowObj&apos;,&#xD;        get: function get() {&#xD;            if (Timer.USE_PERFORMANCE &amp;&amp; typeof self !== &apos;undefined&apos; &amp;&amp; self.performance &amp;&amp; &apos;now&apos; in self.performance) {&#xD;                return self.performance;&#xD;            } else if (Date.now) {&#xD;                return Date;&#xD;            }&#xD;            return Timer.legacyDateCode;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Timer;&#xD;}();&#xD;&#xD;module.exports = Timer;&#xD;&#xD;/***/ }),&#xD;/* 15 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var buffer = __webpack_require__(8);&#xD;var Buffer = buffer.Buffer;&#xD;var SlowBuffer = buffer.SlowBuffer;&#xD;var MAX_LEN = buffer.kMaxLength || 2147483647;&#xD;exports.alloc = function alloc(size, fill, encoding) {&#xD;  if (typeof Buffer.alloc === &apos;function&apos;) {&#xD;    return Buffer.alloc(size, fill, encoding);&#xD;  }&#xD;  if (typeof encoding === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;encoding must not be number&apos;);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  var enc = encoding;&#xD;  var _fill = fill;&#xD;  if (_fill === undefined) {&#xD;    enc = undefined;&#xD;    _fill = 0;&#xD;  }&#xD;  var buf = new Buffer(size);&#xD;  if (typeof _fill === &apos;string&apos;) {&#xD;    var fillBuf = new Buffer(_fill, enc);&#xD;    var flen = fillBuf.length;&#xD;    var i = -1;&#xD;    while (++i &lt; size) {&#xD;      buf[i] = fillBuf[i % flen];&#xD;    }&#xD;  } else {&#xD;    buf.fill(_fill);&#xD;  }&#xD;  return buf;&#xD;}&#xD;exports.allocUnsafe = function allocUnsafe(size) {&#xD;  if (typeof Buffer.allocUnsafe === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafe(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new Buffer(size);&#xD;}&#xD;exports.from = function from(value, encodingOrOffset, length) {&#xD;  if (typeof Buffer.from === &apos;function&apos; &amp;&amp; (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {&#xD;    return Buffer.from(value, encodingOrOffset, length);&#xD;  }&#xD;  if (typeof value === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;"value" argument must not be a number&apos;);&#xD;  }&#xD;  if (typeof value === &apos;string&apos;) {&#xD;    return new Buffer(value, encodingOrOffset);&#xD;  }&#xD;  if (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value instanceof ArrayBuffer) {&#xD;    var offset = encodingOrOffset;&#xD;    if (arguments.length === 1) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (typeof offset === &apos;undefined&apos;) {&#xD;      offset = 0;&#xD;    }&#xD;    var len = length;&#xD;    if (typeof len === &apos;undefined&apos;) {&#xD;      len = value.byteLength - offset;&#xD;    }&#xD;    if (offset &gt;= value.byteLength) {&#xD;      throw new RangeError(&apos;\&apos;offset\&apos; is out of bounds&apos;);&#xD;    }&#xD;    if (len &gt; value.byteLength - offset) {&#xD;      throw new RangeError(&apos;\&apos;length\&apos; is out of bounds&apos;);&#xD;    }&#xD;    return new Buffer(value.slice(offset, offset + len));&#xD;  }&#xD;  if (Buffer.isBuffer(value)) {&#xD;    var out = new Buffer(value.length);&#xD;    value.copy(out, 0, 0, value.length);&#xD;    return out;&#xD;  }&#xD;  if (value) {&#xD;    if (Array.isArray(value) || (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value.buffer instanceof ArrayBuffer) || &apos;length&apos; in value) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (value.type === &apos;Buffer&apos; &amp;&amp; Array.isArray(value.data)) {&#xD;      return new Buffer(value.data);&#xD;    }&#xD;  }&#xD;&#xD;  throw new TypeError(&apos;First argument must be a string, Buffer, &apos; + &apos;ArrayBuffer, Array, or array-like object.&apos;);&#xD;}&#xD;exports.allocUnsafeSlow = function allocUnsafeSlow(size) {&#xD;  if (typeof Buffer.allocUnsafeSlow === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafeSlow(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt;= MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new SlowBuffer(size);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 16 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(29);&#xD;&#xD;/***/ }),&#xD;/* 17 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Object representing a Scratch list.&#xD; */&#xD;&#xD;/**&#xD; * @param {!string} name Name of the list.&#xD; * @param {Array} contents Contents of the list, as an array.&#xD; * @constructor&#xD; */&#xD;var List = function List(name, contents) {&#xD;    _classCallCheck(this, List);&#xD;&#xD;    this.name = name;&#xD;    this.contents = contents;&#xD;};&#xD;&#xD;module.exports = List;&#xD;&#xD;/***/ }),&#xD;/* 18 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * A thread is a running stack context and all the metadata needed.&#xD; * @param {?string} firstBlock First block to execute in the thread.&#xD; * @constructor&#xD; */&#xD;var Thread = function () {&#xD;    function Thread(firstBlock) {&#xD;        _classCallCheck(this, Thread);&#xD;&#xD;        /**&#xD;         * ID of top block of the thread&#xD;         * @type {!string}&#xD;         */&#xD;        this.topBlock = firstBlock;&#xD;&#xD;        /**&#xD;         * Stack for the thread. When the sequencer enters a control structure,&#xD;         * the block is pushed onto the stack so we know where to exit.&#xD;         * @type {Array.&lt;string&gt;}&#xD;         */&#xD;        this.stack = [];&#xD;&#xD;        /**&#xD;         * Stack frames for the thread. Store metadata for the executing blocks.&#xD;         * @type {Array.&lt;Object&gt;}&#xD;         */&#xD;        this.stackFrames = [];&#xD;&#xD;        /**&#xD;         * Status of the thread, one of three states (below)&#xD;         * @type {number}&#xD;         */&#xD;        this.status = 0; /* Thread.STATUS_RUNNING */&#xD;&#xD;        /**&#xD;         * Target of this thread.&#xD;         * @type {?Target}&#xD;         */&#xD;        this.target = null;&#xD;&#xD;        /**&#xD;         * Whether the thread requests its script to glow during this frame.&#xD;         * @type {boolean}&#xD;         */&#xD;        this.requestScriptGlowInFrame = false;&#xD;&#xD;        /**&#xD;         * Which block ID should glow during this frame, if any.&#xD;         * @type {?string}&#xD;         */&#xD;        this.blockGlowInFrame = null;&#xD;&#xD;        /**&#xD;         * A timer for when the thread enters warp mode.&#xD;         * Substitutes the sequencer&apos;s count toward WORK_TIME on a per-thread basis.&#xD;         * @type {?Timer}&#xD;         */&#xD;        this.warpTimer = null;&#xD;    }&#xD;&#xD;    /**&#xD;     * Thread status for initialized or running thread.&#xD;     * This is the default state for a thread - execution should run normally,&#xD;     * stepping from block to block.&#xD;     * @const&#xD;     */&#xD;&#xD;&#xD;    _createClass(Thread, [{&#xD;        key: &apos;pushStack&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Push stack and update stack frames appropriately.&#xD;         * @param {string} blockId Block ID to push to stack.&#xD;         */&#xD;        value: function pushStack(blockId) {&#xD;            this.stack.push(blockId);&#xD;            // Push an empty stack frame, if we need one.&#xD;            // Might not, if we just popped the stack.&#xD;            if (this.stack.length &gt; this.stackFrames.length) {&#xD;                // Copy warp mode from any higher level.&#xD;                var warpMode = false;&#xD;                if (this.stackFrames.length &gt; 0 &amp;&amp; this.stackFrames[this.stackFrames.length - 1]) {&#xD;                    warpMode = this.stackFrames[this.stackFrames.length - 1].warpMode;&#xD;                }&#xD;                this.stackFrames.push({&#xD;                    isLoop: false, // Whether this level of the stack is a loop.&#xD;                    warpMode: warpMode, // Whether this level is in warp mode.&#xD;                    reported: {}, // Collects reported input values.&#xD;                    waitingReporter: null, // Name of waiting reporter.&#xD;                    params: {}, // Procedure parameters.&#xD;                    executionContext: {} // A context passed to block implementations.&#xD;                });&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Reset the stack frame for use by the next block.&#xD;         * (avoids popping and re-pushing a new stack frame - keeps the warpmode the same&#xD;         * @param {string} blockId Block ID to push to stack.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;reuseStackForNextBlock&apos;,&#xD;        value: function reuseStackForNextBlock(blockId) {&#xD;            this.stack[this.stack.length - 1] = blockId;&#xD;            var frame = this.stackFrames[this.stackFrames.length - 1];&#xD;            frame.isLoop = false;&#xD;            // frame.warpMode = warpMode;   // warp mode stays the same when reusing the stack frame.&#xD;            frame.reported = {};&#xD;            frame.waitingReporter = null;&#xD;            frame.params = {};&#xD;            frame.executionContext = {};&#xD;        }&#xD;&#xD;        /**&#xD;         * Pop last block on the stack and its stack frame.&#xD;         * @return {string} Block ID popped from the stack.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;popStack&apos;,&#xD;        value: function popStack() {&#xD;            this.stackFrames.pop();&#xD;            return this.stack.pop();&#xD;        }&#xD;&#xD;        /**&#xD;         * Pop back down the stack frame until we hit a procedure call or the stack frame is emptied&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopThisScript&apos;,&#xD;        value: function stopThisScript() {&#xD;            var blockID = this.peekStack();&#xD;            while (blockID !== null) {&#xD;                var block = this.target.blocks.getBlock(blockID);&#xD;                if (typeof block !== &apos;undefined&apos; &amp;&amp; block.opcode === &apos;procedures_callnoreturn&apos;) {&#xD;                    break;&#xD;                }&#xD;                this.popStack();&#xD;                blockID = this.peekStack();&#xD;            }&#xD;&#xD;            if (this.stack.length === 0) {&#xD;                // Clean up!&#xD;                this.requestScriptGlowInFrame = false;&#xD;                this.status = Thread.STATUS_DONE;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get top stack item.&#xD;         * @return {?string} Block ID on top of stack.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;peekStack&apos;,&#xD;        value: function peekStack() {&#xD;            return this.stack.length &gt; 0 ? this.stack[this.stack.length - 1] : null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get top stack frame.&#xD;         * @return {?object} Last stack frame stored on this thread.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;peekStackFrame&apos;,&#xD;        value: function peekStackFrame() {&#xD;            return this.stackFrames.length &gt; 0 ? this.stackFrames[this.stackFrames.length - 1] : null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get stack frame above the current top.&#xD;         * @return {?object} Second to last stack frame stored on this thread.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;peekParentStackFrame&apos;,&#xD;        value: function peekParentStackFrame() {&#xD;            return this.stackFrames.length &gt; 1 ? this.stackFrames[this.stackFrames.length - 2] : null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Push a reported value to the parent of the current stack frame.&#xD;         * @param {*} value Reported value to push.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;pushReportedValue&apos;,&#xD;        value: function pushReportedValue(value) {&#xD;            var parentStackFrame = this.peekParentStackFrame();&#xD;            if (parentStackFrame) {&#xD;                var waitingReporter = parentStackFrame.waitingReporter;&#xD;                parentStackFrame.reported[waitingReporter] = value;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a parameter to the stack frame.&#xD;         * Use when calling a procedure with parameter values.&#xD;         * @param {!string} paramName Name of parameter.&#xD;         * @param {*} value Value to set for parameter.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;pushParam&apos;,&#xD;        value: function pushParam(paramName, value) {&#xD;            var stackFrame = this.peekStackFrame();&#xD;            stackFrame.params[paramName] = value;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a parameter at the lowest possible level of the stack.&#xD;         * @param {!string} paramName Name of parameter.&#xD;         * @return {*} value Value for parameter.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getParam&apos;,&#xD;        value: function getParam(paramName) {&#xD;            for (var i = this.stackFrames.length - 1; i &gt;= 0; i--) {&#xD;                var frame = this.stackFrames[i];&#xD;                if (frame.params.hasOwnProperty(paramName)) {&#xD;                    return frame.params[paramName];&#xD;                }&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Whether the current execution of a thread is at the top of the stack.&#xD;         * @return {boolean} True if execution is at top of the stack.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;atStackTop&apos;,&#xD;        value: function atStackTop() {&#xD;            return this.peekStack() === this.topBlock;&#xD;        }&#xD;&#xD;        /**&#xD;         * Switch the thread to the next block at the current level of the stack.&#xD;         * For example, this is used in a standard sequence of blocks,&#xD;         * where execution proceeds from one block to the next.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;goToNextBlock&apos;,&#xD;        value: function goToNextBlock() {&#xD;            var nextBlockId = this.target.blocks.getNextBlock(this.peekStack());&#xD;            this.reuseStackForNextBlock(nextBlockId);&#xD;        }&#xD;&#xD;        /**&#xD;         * Attempt to determine whether a procedure call is recursive,&#xD;         * by examining the stack.&#xD;         * @param {!string} procedureCode Procedure code of procedure being called.&#xD;         * @return {boolean} True if the call appears recursive.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isRecursiveCall&apos;,&#xD;        value: function isRecursiveCall(procedureCode) {&#xD;            var callCount = 5; // Max number of enclosing procedure calls to examine.&#xD;            var sp = this.stack.length - 1;&#xD;            for (var i = sp - 1; i &gt;= 0; i--) {&#xD;                var block = this.target.blocks.getBlock(this.stack[i]);&#xD;                if (block.opcode === &apos;procedures_callnoreturn&apos; &amp;&amp; block.mutation.proccode === procedureCode) {&#xD;                    return true;&#xD;                }&#xD;                if (--callCount &lt; 0) return false;&#xD;            }&#xD;            return false;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;STATUS_RUNNING&apos;,&#xD;        get: function get() {&#xD;            return 0;&#xD;        }&#xD;&#xD;        /**&#xD;         * Threads are in this state when a primitive is waiting on a promise;&#xD;         * execution is paused until the promise changes thread status.&#xD;         * @const&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STATUS_PROMISE_WAIT&apos;,&#xD;        get: function get() {&#xD;            return 1;&#xD;        }&#xD;&#xD;        /**&#xD;         * Thread status for yield.&#xD;         * @const&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STATUS_YIELD&apos;,&#xD;        get: function get() {&#xD;            return 2;&#xD;        }&#xD;&#xD;        /**&#xD;         * Thread status for a single-tick yield. This will be cleared when the&#xD;         * thread is resumed.&#xD;         * @const&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STATUS_YIELD_TICK&apos;,&#xD;        get: function get() {&#xD;            return 3;&#xD;        }&#xD;&#xD;        /**&#xD;         * Thread status for a finished/done thread.&#xD;         * Thread is in this state when there are no more blocks to execute.&#xD;         * @const&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STATUS_DONE&apos;,&#xD;        get: function get() {&#xD;            return 4;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Thread;&#xD;}();&#xD;&#xD;module.exports = Thread;&#xD;&#xD;/***/ }),&#xD;/* 19 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Object representing a Scratch variable.&#xD; */&#xD;&#xD;var Variable =&#xD;/**&#xD; * @param {!string} name Name of the variable.&#xD; * @param {(string|number)} value Value of the variable.&#xD; * @param {boolean} isCloud Whether the variable is stored in the cloud.&#xD; * @constructor&#xD; */&#xD;function Variable(name, value, isCloud) {&#xD;  _classCallCheck(this, Variable);&#xD;&#xD;  this.name = name;&#xD;  this.value = value;&#xD;  this.isCloud = isCloud;&#xD;};&#xD;&#xD;module.exports = Variable;&#xD;&#xD;/***/ }),&#xD;/* 20 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var log = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Load a costume&apos;s asset into memory asynchronously.&#xD; * Do not call this unless there is a renderer attached.&#xD; * @param {string} md5ext - the MD5 and extension of the costume to be loaded.&#xD; * @param {!object} costume - the Scratch costume object.&#xD; * @property {int} skinId - the ID of the costume&apos;s render skin, once installed.&#xD; * @property {number} rotationCenterX - the X component of the costume&apos;s origin.&#xD; * @property {number} rotationCenterY - the Y component of the costume&apos;s origin.&#xD; * @property {number} [bitmapResolution] - the resolution scale for a bitmap costume.&#xD; * @param {!Runtime} runtime - Scratch runtime, used to access the storage module.&#xD; * @returns {?Promise} - a promise which will resolve after skinId is set, or null on error.&#xD; */&#xD;var loadCostume = function loadCostume(md5ext, costume, runtime) {&#xD;    if (!runtime.storage) {&#xD;        log.error(&apos;No storage module present; cannot load costume asset: &apos;, md5ext);&#xD;        return Promise.resolve(costume);&#xD;    }&#xD;&#xD;    var AssetType = runtime.storage.AssetType;&#xD;    var idParts = md5ext.split(&apos;.&apos;);&#xD;    var md5 = idParts[0];&#xD;    var ext = idParts[1].toUpperCase();&#xD;    var assetType = ext === &apos;SVG&apos; ? AssetType.ImageVector : AssetType.ImageBitmap;&#xD;&#xD;    var rotationCenter = [costume.rotationCenterX / costume.bitmapResolution, costume.rotationCenterY / costume.bitmapResolution];&#xD;&#xD;    var promise = runtime.storage.load(assetType, md5).then(function (costumeAsset) {&#xD;        costume.assetId = costumeAsset.assetId;&#xD;        costume.assetType = assetType;&#xD;        return costumeAsset;&#xD;    });&#xD;&#xD;    if (!runtime.renderer) {&#xD;        log.error(&apos;No rendering module present; cannot load costume asset: &apos;, md5ext);&#xD;        return promise.then(function () {&#xD;            return costume;&#xD;        });&#xD;    }&#xD;&#xD;    if (assetType === AssetType.ImageVector) {&#xD;        promise = promise.then(function (costumeAsset) {&#xD;            costume.skinId = runtime.renderer.createSVGSkin(costumeAsset.decodeText(), rotationCenter);&#xD;            return costume;&#xD;        });&#xD;    } else {&#xD;        promise = promise.then(function (costumeAsset) {&#xD;            return new Promise(function (resolve, reject) {&#xD;                var imageElement = new Image();&#xD;                var onError = function onError() {&#xD;                    // eslint-disable-next-line no-use-before-define&#xD;                    removeEventListeners();&#xD;                    reject();&#xD;                };&#xD;                var onLoad = function onLoad() {&#xD;                    // eslint-disable-next-line no-use-before-define&#xD;                    removeEventListeners();&#xD;                    resolve(imageElement);&#xD;                };&#xD;                var removeEventListeners = function removeEventListeners() {&#xD;                    imageElement.removeEventListener(&apos;error&apos;, onError);&#xD;                    imageElement.removeEventListener(&apos;load&apos;, onLoad);&#xD;                };&#xD;                imageElement.addEventListener(&apos;error&apos;, onError);&#xD;                imageElement.addEventListener(&apos;load&apos;, onLoad);&#xD;                imageElement.src = costumeAsset.encodeDataURI();&#xD;            });&#xD;        }).then(function (imageElement) {&#xD;            costume.skinId = runtime.renderer.createBitmapSkin(imageElement, costume.bitmapResolution, rotationCenter);&#xD;            return costume;&#xD;        });&#xD;    }&#xD;    return promise;&#xD;};&#xD;&#xD;module.exports = loadCostume;&#xD;&#xD;/***/ }),&#xD;/* 21 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var log = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Load a sound&apos;s asset into memory asynchronously.&#xD; * @param {!object} sound - the Scratch sound object.&#xD; * @property {string} md5 - the MD5 and extension of the sound to be loaded.&#xD; * @property {Buffer} data - sound data will be written here once loaded.&#xD; * @param {!Runtime} runtime - Scratch runtime, used to access the storage module.&#xD; * @returns {!Promise} - a promise which will resolve to the sound when ready.&#xD; */&#xD;var loadSound = function loadSound(sound, runtime) {&#xD;    if (!runtime.storage) {&#xD;        log.error(&apos;No storage module present; cannot load sound asset: &apos;, sound.md5);&#xD;        return Promise.resolve(sound);&#xD;    }&#xD;    if (!runtime.audioEngine) {&#xD;        log.error(&apos;No audio engine present; cannot load sound asset: &apos;, sound.md5);&#xD;        return Promise.resolve(sound);&#xD;    }&#xD;    var idParts = sound.md5.split(&apos;.&apos;);&#xD;    var md5 = idParts[0];&#xD;    return runtime.storage.load(runtime.storage.AssetType.Sound, md5).then(function (soundAsset) {&#xD;        sound.assetId = soundAsset.assetId;&#xD;        sound.assetType = runtime.storage.AssetType.Sound;&#xD;        return runtime.audioEngine.decodeSound(Object.assign({}, sound, { data: soundAsset.data }));&#xD;    }).then(function () {&#xD;        return sound;&#xD;    });&#xD;};&#xD;&#xD;module.exports = loadSound;&#xD;&#xD;/***/ }),&#xD;/* 22 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var log = __webpack_require__(3);&#xD;var MathUtil = __webpack_require__(4);&#xD;var Target = __webpack_require__(59);&#xD;&#xD;/**&#xD; * Rendered target: instance of a sprite (clone), or the stage.&#xD; * @param {!Sprite} sprite Reference to the parent sprite.&#xD; * @param {Runtime} runtime Reference to the runtime.&#xD; * @constructor&#xD; */&#xD;&#xD;var RenderedTarget = function (_Target) {&#xD;    _inherits(RenderedTarget, _Target);&#xD;&#xD;    function RenderedTarget(sprite, runtime) {&#xD;        _classCallCheck(this, RenderedTarget);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (RenderedTarget.__proto__ || Object.getPrototypeOf(RenderedTarget)).call(this, sprite.blocks));&#xD;&#xD;        _this.runtime = runtime;&#xD;        /**&#xD;         * Reference to the sprite that this is a render of.&#xD;         * @type {!Sprite}&#xD;         */&#xD;        _this.sprite = sprite;&#xD;        /**&#xD;         * Reference to the global renderer for this VM, if one exists.&#xD;         * @type {?RenderWebGLWorker}&#xD;         */&#xD;        _this.renderer = null;&#xD;        if (_this.runtime) {&#xD;            _this.renderer = _this.runtime.renderer;&#xD;        }&#xD;        /**&#xD;         * ID of the drawable for this rendered target,&#xD;         * returned by the renderer, if rendered.&#xD;         * @type {?Number}&#xD;         */&#xD;        _this.drawableID = null;&#xD;&#xD;        /**&#xD;         * Drag state of this rendered target. If true, x/y position can&apos;t be&#xD;         * changed by blocks.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.dragging = false;&#xD;&#xD;        /**&#xD;         * Map of current graphic effect values.&#xD;         * @type {!Object.&lt;string, number&gt;}&#xD;         */&#xD;        _this.effects = {&#xD;            color: 0,&#xD;            fisheye: 0,&#xD;            whirl: 0,&#xD;            pixelate: 0,&#xD;            mosaic: 0,&#xD;            brightness: 0,&#xD;            ghost: 0&#xD;        };&#xD;&#xD;        /**&#xD;         * Whether this represents an "original" non-clone rendered-target for a sprite,&#xD;         * i.e., created by the editor and not clone blocks.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.isOriginal = true;&#xD;&#xD;        /**&#xD;         * Whether this rendered target represents the Scratch stage.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.isStage = false;&#xD;&#xD;        /**&#xD;         * Scratch X coordinate. Currently should range from -240 to 240.&#xD;         * @type {Number}&#xD;         */&#xD;        _this.x = 0;&#xD;&#xD;        /**&#xD;         * Scratch Y coordinate. Currently should range from -180 to 180.&#xD;         * @type {number}&#xD;         */&#xD;        _this.y = 0;&#xD;&#xD;        /**&#xD;         * Scratch direction. Currently should range from -179 to 180.&#xD;         * @type {number}&#xD;         */&#xD;        _this.direction = 90;&#xD;&#xD;        /**&#xD;         * Whether the rendered target is draggable on the stage&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.draggable = false;&#xD;&#xD;        /**&#xD;         * Whether the rendered target is currently visible.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.visible = true;&#xD;&#xD;        /**&#xD;         * Size of rendered target as a percent of costume size.&#xD;         * @type {number}&#xD;         */&#xD;        _this.size = 100;&#xD;&#xD;        /**&#xD;         * Currently selected costume index.&#xD;         * @type {number}&#xD;         */&#xD;        _this.currentCostume = 0;&#xD;&#xD;        /**&#xD;         * Current rotation style.&#xD;         * @type {!string}&#xD;         */&#xD;        _this.rotationStyle = RenderedTarget.ROTATION_STYLE_ALL_AROUND;&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Create a drawable with the this.renderer.&#xD;     */&#xD;&#xD;&#xD;    _createClass(RenderedTarget, [{&#xD;        key: &apos;initDrawable&apos;,&#xD;        value: function initDrawable() {&#xD;            if (this.renderer) {&#xD;                this.drawableID = this.renderer.createDrawable();&#xD;            }&#xD;            // If we&apos;re a clone, start the hats.&#xD;            if (!this.isOriginal) {&#xD;                this.runtime.startHats(&apos;control_start_as_clone&apos;, null, this);&#xD;            }&#xD;&#xD;            /**&#xD;            * Audio player&#xD;            */&#xD;            this.audioPlayer = null;&#xD;            if (this.runtime &amp;&amp; this.runtime.audioEngine) {&#xD;                this.audioPlayer = this.runtime.audioEngine.createPlayer();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Event which fires when a target moves.&#xD;         * @type {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setXY&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Set the X and Y coordinates.&#xD;         * @param {!number} x New X coordinate, in Scratch coordinates.&#xD;         * @param {!number} y New Y coordinate, in Scratch coordinates.&#xD;         * @param {?boolean} force Force setting X/Y, in case of dragging&#xD;         */&#xD;        value: function setXY(x, y, force) {&#xD;            if (this.isStage) return;&#xD;            if (this.dragging &amp;&amp; !force) return;&#xD;            var oldX = this.x;&#xD;            var oldY = this.y;&#xD;            if (this.renderer) {&#xD;                var position = this.renderer.getFencedPositionOfDrawable(this.drawableID, [x, y]);&#xD;                this.x = position[0];&#xD;                this.y = position[1];&#xD;&#xD;                this.renderer.updateDrawableProperties(this.drawableID, {&#xD;                    position: position&#xD;                });&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            } else {&#xD;                this.x = x;&#xD;                this.y = y;&#xD;            }&#xD;            this.emit(RenderedTarget.EVENT_TARGET_MOVED, this, oldX, oldY);&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the rendered direction and scale, after applying rotation style.&#xD;         * @return {object&lt;string, number&gt;} Direction and scale to render.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_getRenderedDirectionAndScale&apos;,&#xD;        value: function _getRenderedDirectionAndScale() {&#xD;            // Default: no changes to `this.direction` or `this.scale`.&#xD;            var finalDirection = this.direction;&#xD;            var finalScale = [this.size, this.size];&#xD;            if (this.rotationStyle === RenderedTarget.ROTATION_STYLE_NONE) {&#xD;                // Force rendered direction to be 90.&#xD;                finalDirection = 90;&#xD;            } else if (this.rotationStyle === RenderedTarget.ROTATION_STYLE_LEFT_RIGHT) {&#xD;                // Force rendered direction to be 90, and flip drawable if needed.&#xD;                finalDirection = 90;&#xD;                var scaleFlip = this.direction &lt; 0 ? -1 : 1;&#xD;                finalScale = [scaleFlip * this.size, this.size];&#xD;            }&#xD;            return { direction: finalDirection, scale: finalScale };&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the direction.&#xD;         * @param {!number} direction New direction.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setDirection&apos;,&#xD;        value: function setDirection(direction) {&#xD;            if (this.isStage) {&#xD;                return;&#xD;            }&#xD;            // Keep direction between -179 and +180.&#xD;            this.direction = MathUtil.wrapClamp(direction, -179, 180);&#xD;            if (this.renderer) {&#xD;                var renderedDirectionScale = this._getRenderedDirectionAndScale();&#xD;                this.renderer.updateDrawableProperties(this.drawableID, {&#xD;                    direction: renderedDirectionScale.direction,&#xD;                    scale: renderedDirectionScale.scale&#xD;                });&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set draggability; i.e., whether it&apos;s able to be dragged in the player&#xD;         * @param {!boolean} draggable True if should be draggable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setDraggable&apos;,&#xD;        value: function setDraggable(draggable) {&#xD;            if (this.isStage) return;&#xD;            this.draggable = !!draggable;&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set a say bubble.&#xD;         * @param {?string} type Type of say bubble: "say", "think", or null.&#xD;         * @param {?string} message Message to put in say bubble.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setSay&apos;,&#xD;        value: function setSay(type, message) {&#xD;            if (this.isStage) {&#xD;                return;&#xD;            }&#xD;            // @todo: Render to stage.&#xD;            if (!type || !message) {&#xD;                log.info(&apos;Clearing say bubble&apos;);&#xD;                return;&#xD;            }&#xD;            log.info(&apos;Setting say bubble:&apos;, type, message);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set visibility; i.e., whether it&apos;s shown or hidden.&#xD;         * @param {!boolean} visible True if should be shown.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setVisible&apos;,&#xD;        value: function setVisible(visible) {&#xD;            if (this.isStage) {&#xD;                return;&#xD;            }&#xD;            this.visible = !!visible;&#xD;            if (this.renderer) {&#xD;                this.renderer.updateDrawableProperties(this.drawableID, {&#xD;                    visible: this.visible&#xD;                });&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set size, as a percentage of the costume size.&#xD;         * @param {!number} size Size of rendered target, as % of costume size.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setSize&apos;,&#xD;        value: function setSize(size) {&#xD;            if (this.isStage) {&#xD;                return;&#xD;            }&#xD;            if (this.renderer) {&#xD;                // Clamp to scales relative to costume and stage size.&#xD;                // See original ScratchSprite.as:setSize.&#xD;                var costumeSize = this.renderer.getSkinSize(this.drawableID);&#xD;                var origW = costumeSize[0];&#xD;                var origH = costumeSize[1];&#xD;                var minScale = Math.min(1, Math.max(5 / origW, 5 / origH));&#xD;                var maxScale = Math.min(1.5 * this.runtime.constructor.STAGE_WIDTH / origW, 1.5 * this.runtime.constructor.STAGE_HEIGHT / origH);&#xD;                this.size = MathUtil.clamp(size / 100, minScale, maxScale) * 100;&#xD;                var renderedDirectionScale = this._getRenderedDirectionAndScale();&#xD;                this.renderer.updateDrawableProperties(this.drawableID, {&#xD;                    direction: renderedDirectionScale.direction,&#xD;                    scale: renderedDirectionScale.scale&#xD;                });&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set a particular graphic effect value.&#xD;         * @param {!string} effectName Name of effect (see `RenderedTarget.prototype.effects`).&#xD;         * @param {!number} value Numerical magnitude of effect.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setEffect&apos;,&#xD;        value: function setEffect(effectName, value) {&#xD;            if (!this.effects.hasOwnProperty(effectName)) return;&#xD;            this.effects[effectName] = value;&#xD;            if (this.renderer) {&#xD;                var props = {};&#xD;                props[effectName] = this.effects[effectName];&#xD;                this.renderer.updateDrawableProperties(this.drawableID, props);&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear all graphic effects on this rendered target.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clearEffects&apos;,&#xD;        value: function clearEffects() {&#xD;            for (var effectName in this.effects) {&#xD;                if (!this.effects.hasOwnProperty(effectName)) continue;&#xD;                this.effects[effectName] = 0;&#xD;            }&#xD;            if (this.renderer) {&#xD;                this.renderer.updateDrawableProperties(this.drawableID, this.effects);&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the current costume.&#xD;         * @param {number} index New index of costume.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setCostume&apos;,&#xD;        value: function setCostume(index) {&#xD;            // Keep the costume index within possible values.&#xD;            index = Math.round(index);&#xD;            this.currentCostume = MathUtil.wrapClamp(index, 0, this.sprite.costumes.length - 1);&#xD;            if (this.renderer) {&#xD;                var costume = this.sprite.costumes[this.currentCostume];&#xD;                var drawableProperties = {&#xD;                    skinId: costume.skinId,&#xD;                    costumeResolution: costume.bitmapResolution&#xD;                };&#xD;                if (typeof costume.rotationCenterX !== &apos;undefined&apos; &amp;&amp; typeof costume.rotationCenterY !== &apos;undefined&apos;) {&#xD;                    var scale = costume.bitmapResolution || 1;&#xD;                    drawableProperties.rotationCenter = [costume.rotationCenterX / scale, costume.rotationCenterY / scale];&#xD;                }&#xD;                this.renderer.updateDrawableProperties(this.drawableID, drawableProperties);&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Delete a costume by index.&#xD;         * @param {number} index Costume index to be deleted&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteCostume&apos;,&#xD;        value: function deleteCostume(index) {&#xD;            var originalCostumeCount = this.sprite.costumes.length;&#xD;            if (originalCostumeCount === 1) return;&#xD;&#xD;            this.sprite.costumes = this.sprite.costumes.slice(0, index).concat(this.sprite.costumes.slice(index + 1));&#xD;&#xD;            if (index === this.currentCostume &amp;&amp; index === originalCostumeCount - 1) {&#xD;                this.setCostume(index - 1);&#xD;            } else if (index &lt; this.currentCostume) {&#xD;                this.setCostume(this.currentCostume - 1);&#xD;            } else {&#xD;                this.setCostume(this.currentCostume);&#xD;            }&#xD;&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Delete a sound by index.&#xD;         * @param {number} index Sound index to be deleted&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteSound&apos;,&#xD;        value: function deleteSound(index) {&#xD;            this.sprite.sounds = this.sprite.sounds.slice(0, index).concat(this.sprite.sounds.slice(index + 1));&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the rotation style.&#xD;         * @param {!string} rotationStyle New rotation style.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setRotationStyle&apos;,&#xD;        value: function setRotationStyle(rotationStyle) {&#xD;            if (rotationStyle === RenderedTarget.ROTATION_STYLE_NONE) {&#xD;                this.rotationStyle = RenderedTarget.ROTATION_STYLE_NONE;&#xD;            } else if (rotationStyle === RenderedTarget.ROTATION_STYLE_ALL_AROUND) {&#xD;                this.rotationStyle = RenderedTarget.ROTATION_STYLE_ALL_AROUND;&#xD;            } else if (rotationStyle === RenderedTarget.ROTATION_STYLE_LEFT_RIGHT) {&#xD;                this.rotationStyle = RenderedTarget.ROTATION_STYLE_LEFT_RIGHT;&#xD;            }&#xD;            if (this.renderer) {&#xD;                var renderedDirectionScale = this._getRenderedDirectionAndScale();&#xD;                this.renderer.updateDrawableProperties(this.drawableID, {&#xD;                    direction: renderedDirectionScale.direction,&#xD;                    scale: renderedDirectionScale.scale&#xD;                });&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a costume index of this rendered target, by name of the costume.&#xD;         * @param {?string} costumeName Name of a costume.&#xD;         * @return {number} Index of the named costume, or -1 if not present.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getCostumeIndexByName&apos;,&#xD;        value: function getCostumeIndexByName(costumeName) {&#xD;            for (var i = 0; i &lt; this.sprite.costumes.length; i++) {&#xD;                if (this.sprite.costumes[i].name === costumeName) {&#xD;                    return i;&#xD;                }&#xD;            }&#xD;            return -1;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a costume of this rendered target by id.&#xD;         * @return {object} current costume&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getCurrentCostume&apos;,&#xD;        value: function getCurrentCostume() {&#xD;            return this.sprite.costumes[this.currentCostume];&#xD;        }&#xD;&#xD;        /**&#xD;         * Get full costume list&#xD;         * @return {object[]} list of costumes&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getCostumes&apos;,&#xD;        value: function getCostumes() {&#xD;            return this.sprite.costumes;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get full sound list&#xD;         * @return {object[]} list of sounds&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getSounds&apos;,&#xD;        value: function getSounds() {&#xD;            return this.sprite.sounds;&#xD;        }&#xD;&#xD;        /**&#xD;         * Update all drawable properties for this rendered target.&#xD;         * Use when a batch has changed, e.g., when the drawable is first created.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;updateAllDrawableProperties&apos;,&#xD;        value: function updateAllDrawableProperties() {&#xD;            if (this.renderer) {&#xD;                var renderedDirectionScale = this._getRenderedDirectionAndScale();&#xD;                var costume = this.sprite.costumes[this.currentCostume];&#xD;                var bitmapResolution = costume.bitmapResolution || 1;&#xD;                var props = {&#xD;                    position: [this.x, this.y],&#xD;                    direction: renderedDirectionScale.direction,&#xD;                    draggable: this.draggable,&#xD;                    scale: renderedDirectionScale.scale,&#xD;                    visible: this.visible,&#xD;                    skinId: costume.skinId,&#xD;                    costumeResolution: bitmapResolution,&#xD;                    rotationCenter: [costume.rotationCenterX / bitmapResolution, costume.rotationCenterY / bitmapResolution]&#xD;                };&#xD;                for (var effectName in this.effects) {&#xD;                    if (!this.effects.hasOwnProperty(effectName)) continue;&#xD;                    props[effectName] = this.effects[effectName];&#xD;                }&#xD;                this.renderer.updateDrawableProperties(this.drawableID, props);&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;            this.runtime.requestTargetsUpdate(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Return the human-readable name for this rendered target, e.g., the sprite&apos;s name.&#xD;         * @override&#xD;         * @returns {string} Human-readable name.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getName&apos;,&#xD;        value: function getName() {&#xD;            return this.sprite.name;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether this rendered target is a sprite (not a clone, not the stage).&#xD;         * @return {boolean} True if not a clone and not the stage.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isSprite&apos;,&#xD;        value: function isSprite() {&#xD;            return !this.isStage &amp;&amp; this.isOriginal;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return the rendered target&apos;s tight bounding box.&#xD;         * Includes top, left, bottom, right attributes in Scratch coordinates.&#xD;         * @return {?object} Tight bounding box, or null.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getBounds&apos;,&#xD;        value: function getBounds() {&#xD;            if (this.renderer) {&#xD;                return this.runtime.renderer.getBounds(this.drawableID);&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether touching a point.&#xD;         * @param {number} x X coordinate of test point.&#xD;         * @param {number} y Y coordinate of test point.&#xD;         * @return {boolean} True iff the rendered target is touching the point.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingPoint&apos;,&#xD;        value: function isTouchingPoint(x, y) {&#xD;            if (this.renderer) {&#xD;                // @todo: Update once pick is in Scratch coordinates.&#xD;                // Limits test to this Drawable, so this will return true&#xD;                // even if the clone is obscured by another Drawable.&#xD;                var pickResult = this.runtime.renderer.pick(x + this.runtime.constructor.STAGE_WIDTH / 2, -y + this.runtime.constructor.STAGE_HEIGHT / 2, null, null, [this.drawableID]);&#xD;                return pickResult === this.drawableID;&#xD;            }&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether touching a stage edge.&#xD;         * @return {boolean} True iff the rendered target is touching the stage edge.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingEdge&apos;,&#xD;        value: function isTouchingEdge() {&#xD;            if (this.renderer) {&#xD;                var stageWidth = this.runtime.constructor.STAGE_WIDTH;&#xD;                var stageHeight = this.runtime.constructor.STAGE_HEIGHT;&#xD;                var bounds = this.getBounds();&#xD;                if (bounds.left &lt; -stageWidth / 2 || bounds.right &gt; stageWidth / 2 || bounds.top &gt; stageHeight / 2 || bounds.bottom &lt; -stageHeight / 2) {&#xD;                    return true;&#xD;                }&#xD;            }&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether touching any of a named sprite&apos;s clones.&#xD;         * @param {string} spriteName Name of the sprite.&#xD;         * @return {boolean} True iff touching a clone of the sprite.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingSprite&apos;,&#xD;        value: function isTouchingSprite(spriteName) {&#xD;            var firstClone = this.runtime.getSpriteTargetByName(spriteName);&#xD;            if (!firstClone || !this.renderer) {&#xD;                return false;&#xD;            }&#xD;            var drawableCandidates = firstClone.sprite.clones.map(function (clone) {&#xD;                return clone.drawableID;&#xD;            });&#xD;            return this.renderer.isTouchingDrawables(this.drawableID, drawableCandidates);&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether touching a color.&#xD;         * @param {Array.&lt;number&gt;} rgb [r,g,b], values between 0-255.&#xD;         * @return {Promise.&lt;boolean&gt;} True iff the rendered target is touching the color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingColor&apos;,&#xD;        value: function isTouchingColor(rgb) {&#xD;            if (this.renderer) {&#xD;                return this.renderer.isTouchingColor(this.drawableID, rgb);&#xD;            }&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether rendered target&apos;s color is touching a color.&#xD;         * @param {object} targetRgb {Array.&lt;number&gt;} [r,g,b], values between 0-255.&#xD;         * @param {object} maskRgb {Array.&lt;number&gt;} [r,g,b], values between 0-255.&#xD;         * @return {Promise.&lt;boolean&gt;} True iff the color is touching the color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;colorIsTouchingColor&apos;,&#xD;        value: function colorIsTouchingColor(targetRgb, maskRgb) {&#xD;            if (this.renderer) {&#xD;                return this.renderer.isTouchingColor(this.drawableID, targetRgb, maskRgb);&#xD;            }&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Move to the front layer.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;goToFront&apos;,&#xD;        value: function goToFront() {&#xD;            if (this.renderer) {&#xD;                this.renderer.setDrawableOrder(this.drawableID, Infinity);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Move back a number of layers.&#xD;         * @param {number} nLayers How many layers to go back.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;goBackLayers&apos;,&#xD;        value: function goBackLayers(nLayers) {&#xD;            if (this.renderer) {&#xD;                this.renderer.setDrawableOrder(this.drawableID, -nLayers, true, 1);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Move behind some other rendered target.&#xD;         * @param {!RenderedTarget} other Other rendered target to move behind.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;goBehindOther&apos;,&#xD;        value: function goBehindOther(other) {&#xD;            if (this.renderer) {&#xD;                var otherLayer = this.renderer.setDrawableOrder(other.drawableID, 0, true);&#xD;                this.renderer.setDrawableOrder(this.drawableID, otherLayer);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Keep a desired position within a fence.&#xD;         * @param {number} newX New desired X position.&#xD;         * @param {number} newY New desired Y position.&#xD;         * @param {object=} optFence Optional fence with left, right, top bottom.&#xD;         * @return {Array.&lt;number&gt;} Fenced X and Y coordinates.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;keepInFence&apos;,&#xD;        value: function keepInFence(newX, newY, optFence) {&#xD;            var fence = optFence;&#xD;            if (!fence) {&#xD;                fence = {&#xD;                    left: -this.runtime.constructor.STAGE_WIDTH / 2,&#xD;                    right: this.runtime.constructor.STAGE_WIDTH / 2,&#xD;                    top: this.runtime.constructor.STAGE_HEIGHT / 2,&#xD;                    bottom: -this.runtime.constructor.STAGE_HEIGHT / 2&#xD;                };&#xD;            }&#xD;            var bounds = this.getBounds();&#xD;            if (!bounds) return;&#xD;            // Adjust the known bounds to the target position.&#xD;            bounds.left += newX - this.x;&#xD;            bounds.right += newX - this.x;&#xD;            bounds.top += newY - this.y;&#xD;            bounds.bottom += newY - this.y;&#xD;            // Find how far we need to move the target position.&#xD;            var dx = 0;&#xD;            var dy = 0;&#xD;            if (bounds.left &lt; fence.left) {&#xD;                dx += fence.left - bounds.left;&#xD;            }&#xD;            if (bounds.right &gt; fence.right) {&#xD;                dx += fence.right - bounds.right;&#xD;            }&#xD;            if (bounds.top &gt; fence.top) {&#xD;                dy += fence.top - bounds.top;&#xD;            }&#xD;            if (bounds.bottom &lt; fence.bottom) {&#xD;                dy += fence.bottom - bounds.bottom;&#xD;            }&#xD;            return [newX + dx, newY + dy];&#xD;        }&#xD;&#xD;        /**&#xD;         * Make a clone, copying any run-time properties.&#xD;         * If we&apos;ve hit the global clone limit, returns null.&#xD;         * @return {RenderedTarget} New clone.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;makeClone&apos;,&#xD;        value: function makeClone() {&#xD;            if (!this.runtime.clonesAvailable() || this.isStage) {&#xD;                return null; // Hit max clone limit, or this is the stage.&#xD;            }&#xD;            this.runtime.changeCloneCounter(1);&#xD;            var newClone = this.sprite.createClone();&#xD;            // Copy all properties.&#xD;            newClone.x = this.x;&#xD;            newClone.y = this.y;&#xD;            newClone.direction = this.direction;&#xD;            newClone.draggable = this.draggable;&#xD;            newClone.visible = this.visible;&#xD;            newClone.size = this.size;&#xD;            newClone.currentCostume = this.currentCostume;&#xD;            newClone.rotationStyle = this.rotationStyle;&#xD;            newClone.effects = JSON.parse(JSON.stringify(this.effects));&#xD;            newClone.variables = JSON.parse(JSON.stringify(this.variables));&#xD;            newClone.lists = JSON.parse(JSON.stringify(this.lists));&#xD;            newClone._customState = JSON.parse(JSON.stringify(this._customState));&#xD;            newClone.initDrawable();&#xD;            newClone.updateAllDrawableProperties();&#xD;            // Place behind the current target.&#xD;            newClone.goBehindOther(this);&#xD;            return newClone;&#xD;        }&#xD;&#xD;        /**&#xD;         * Called when the project receives a "green flag."&#xD;         * For a rendered target, this clears graphic effects.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;onGreenFlag&apos;,&#xD;        value: function onGreenFlag() {&#xD;            this.clearEffects();&#xD;        }&#xD;&#xD;        /**&#xD;         * Called when the project receives a "stop all"&#xD;         * Stop all sounds and clear graphic effects.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;onStopAll&apos;,&#xD;        value: function onStopAll() {&#xD;            this.clearEffects();&#xD;            if (this.audioPlayer) {&#xD;                this.audioPlayer.stopAllSounds();&#xD;                this.audioPlayer.clearEffects();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Post/edit sprite info.&#xD;         * @param {object} data An object with sprite info data to set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;postSpriteInfo&apos;,&#xD;        value: function postSpriteInfo(data) {&#xD;            var force = data.hasOwnProperty(&apos;force&apos;) ? data.force : null;&#xD;            if (data.hasOwnProperty(&apos;x&apos;)) {&#xD;                this.setXY(data.x, this.y, force);&#xD;            }&#xD;            if (data.hasOwnProperty(&apos;y&apos;)) {&#xD;                this.setXY(this.x, data.y, force);&#xD;            }&#xD;            if (data.hasOwnProperty(&apos;direction&apos;)) {&#xD;                this.setDirection(data.direction);&#xD;            }&#xD;            if (data.hasOwnProperty(&apos;draggable&apos;)) {&#xD;                this.setDraggable(data.draggable);&#xD;            }&#xD;            if (data.hasOwnProperty(&apos;rotationStyle&apos;)) {&#xD;                this.setRotationStyle(data.rotationStyle);&#xD;            }&#xD;            if (data.hasOwnProperty(&apos;visible&apos;)) {&#xD;                this.setVisible(data.visible);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Put the sprite into the drag state. While in effect, setXY must be forced&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;startDrag&apos;,&#xD;        value: function startDrag() {&#xD;            this.dragging = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Remove the sprite from the drag state.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopDrag&apos;,&#xD;        value: function stopDrag() {&#xD;            this.dragging = false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Serialize sprite info, used when emitting events about the sprite&#xD;         * @returns {object} Sprite data as a simple object&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toJSON&apos;,&#xD;        value: function toJSON() {&#xD;            var costumes = this.getCostumes();&#xD;            return {&#xD;                id: this.id,&#xD;                name: this.getName(),&#xD;                isStage: this.isStage,&#xD;                x: this.x,&#xD;                y: this.y,&#xD;                size: this.size,&#xD;                direction: this.direction,&#xD;                draggable: this.draggable,&#xD;                currentCostume: this.currentCostume,&#xD;                costume: costumes[this.currentCostume],&#xD;                costumeCount: costumes.length,&#xD;                visible: this.visible,&#xD;                rotationStyle: this.rotationStyle,&#xD;                blocks: this.blocks._blocks,&#xD;                variables: this.variables,&#xD;                lists: this.lists,&#xD;                costumes: costumes,&#xD;                sounds: this.getSounds()&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * Dispose, destroying any run-time properties.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            this.runtime.changeCloneCounter(-1);&#xD;            if (this.renderer &amp;&amp; this.drawableID !== null) {&#xD;                this.renderer.destroyDrawable(this.drawableID);&#xD;                if (this.visible) {&#xD;                    this.runtime.requestRedraw();&#xD;                }&#xD;            }&#xD;        }&#xD;    }], [{&#xD;        key: &apos;EVENT_TARGET_MOVED&apos;,&#xD;        get: function get() {&#xD;            return &apos;TARGET_MOVED&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Rotation style for "all around"/spinning.&#xD;         * @type {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;ROTATION_STYLE_ALL_AROUND&apos;,&#xD;        get: function get() {&#xD;            return &apos;all around&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Rotation style for "left-right"/flipping.&#xD;         * @type {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;ROTATION_STYLE_LEFT_RIGHT&apos;,&#xD;        get: function get() {&#xD;            return &apos;left-right&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Rotation style for "no rotation."&#xD;         * @type {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;ROTATION_STYLE_NONE&apos;,&#xD;        get: function get() {&#xD;            return "don&apos;t rotate";&#xD;        }&#xD;    }]);&#xD;&#xD;    return RenderedTarget;&#xD;}(Target);&#xD;&#xD;module.exports = RenderedTarget;&#xD;&#xD;/***/ }),&#xD;/* 23 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Color = function () {&#xD;    function Color() {&#xD;        _classCallCheck(this, Color);&#xD;    }&#xD;&#xD;    _createClass(Color, null, [{&#xD;        key: &apos;decimalToHex&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Convert a Scratch decimal color to a hex string, #RRGGBB.&#xD;         * @param {number} decimal RGB color as a decimal.&#xD;         * @return {string} RGB color as #RRGGBB hex string.&#xD;         */&#xD;        value: function decimalToHex(decimal) {&#xD;            if (decimal &lt; 0) {&#xD;                decimal += 0xFFFFFF + 1;&#xD;            }&#xD;            var hex = Number(decimal).toString(16);&#xD;            hex = &apos;#&apos; + &apos;000000&apos;.substr(0, 6 - hex.length) + hex;&#xD;            return hex;&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a Scratch decimal color to an RGB color object.&#xD;         * @param {number} decimal RGB color as decimal.&#xD;         * @return {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;decimalToRgb&apos;,&#xD;        value: function decimalToRgb(decimal) {&#xD;            var a = decimal &gt;&gt; 24 &amp; 0xFF;&#xD;            var r = decimal &gt;&gt; 16 &amp; 0xFF;&#xD;            var g = decimal &gt;&gt; 8 &amp; 0xFF;&#xD;            var b = decimal &amp; 0xFF;&#xD;            return { r: r, g: g, b: b, a: a &gt; 0 ? a : 255 };&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a hex color (e.g., F00, #03F, #0033FF) to an RGB color object.&#xD;         * CC-BY-SA Tim Down:&#xD;         * https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb&#xD;         * @param {!string} hex Hex representation of the color.&#xD;         * @return {RGBObject} null on failure, or rgb: {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;hexToRgb&apos;,&#xD;        value: function hexToRgb(hex) {&#xD;            var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;&#xD;            hex = hex.replace(shorthandRegex, function (m, r, g, b) {&#xD;                return r + r + g + g + b + b;&#xD;            });&#xD;            var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);&#xD;            return result ? {&#xD;                r: parseInt(result[1], 16),&#xD;                g: parseInt(result[2], 16),&#xD;                b: parseInt(result[3], 16)&#xD;            } : null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert an RGB color object to a hex color.&#xD;         * @param {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         * @return {!string} Hex representation of the color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;rgbToHex&apos;,&#xD;        value: function rgbToHex(rgb) {&#xD;            return Color.decimalToHex(Color.rgbToDecimal(rgb));&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert an RGB color object to a Scratch decimal color.&#xD;         * @param {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         * @return {!number} Number representing the color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;rgbToDecimal&apos;,&#xD;        value: function rgbToDecimal(rgb) {&#xD;            return (rgb.r &lt;&lt; 16) + (rgb.g &lt;&lt; 8) + rgb.b;&#xD;        }&#xD;&#xD;        /**&#xD;        * Convert a hex color (e.g., F00, #03F, #0033FF) to a decimal color number.&#xD;        * @param {!string} hex Hex representation of the color.&#xD;        * @return {!number} Number representing the color.&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;hexToDecimal&apos;,&#xD;        value: function hexToDecimal(hex) {&#xD;            return Color.rgbToDecimal(Color.hexToRgb(hex));&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert an HSV color to RGB format.&#xD;         * @param {HSVObject} hsv - {h: hue [0,360), s: saturation [0,1], v: value [0,1]}&#xD;         * @return {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;hsvToRgb&apos;,&#xD;        value: function hsvToRgb(hsv) {&#xD;            var h = hsv.h % 360;&#xD;            if (h &lt; 0) h += 360;&#xD;            var s = Math.max(0, Math.min(hsv.s, 1));&#xD;            var v = Math.max(0, Math.min(hsv.v, 1));&#xD;&#xD;            var i = Math.floor(h / 60);&#xD;            var f = h / 60 - i;&#xD;            var p = v * (1 - s);&#xD;            var q = v * (1 - s * f);&#xD;            var t = v * (1 - s * (1 - f));&#xD;&#xD;            var r = void 0;&#xD;            var g = void 0;&#xD;            var b = void 0;&#xD;&#xD;            switch (i) {&#xD;                default:&#xD;                case 0:&#xD;                    r = v;&#xD;                    g = t;&#xD;                    b = p;&#xD;                    break;&#xD;                case 1:&#xD;                    r = q;&#xD;                    g = v;&#xD;                    b = p;&#xD;                    break;&#xD;                case 2:&#xD;                    r = p;&#xD;                    g = v;&#xD;                    b = t;&#xD;                    break;&#xD;                case 3:&#xD;                    r = p;&#xD;                    g = q;&#xD;                    b = v;&#xD;                    break;&#xD;                case 4:&#xD;                    r = t;&#xD;                    g = p;&#xD;                    b = v;&#xD;                    break;&#xD;                case 5:&#xD;                    r = v;&#xD;                    g = p;&#xD;                    b = q;&#xD;                    break;&#xD;            }&#xD;&#xD;            return {&#xD;                r: Math.floor(r * 255),&#xD;                g: Math.floor(g * 255),&#xD;                b: Math.floor(b * 255)&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert an RGB color to HSV format.&#xD;         * @param {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.&#xD;         * @return {HSVObject} hsv - {h: hue [0,360), s: saturation [0,1], v: value [0,1]}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;rgbToHsv&apos;,&#xD;        value: function rgbToHsv(rgb) {&#xD;            var r = rgb.r / 255;&#xD;            var g = rgb.g / 255;&#xD;            var b = rgb.b / 255;&#xD;            var x = Math.min(Math.min(r, g), b);&#xD;            var v = Math.max(Math.max(r, g), b);&#xD;&#xD;            // For grays, hue will be arbitrarily reported as zero. Otherwise, calculate&#xD;            var h = 0;&#xD;            var s = 0;&#xD;            if (x !== v) {&#xD;                var f = r === x ? g - b : g === x ? b - r : r - g;&#xD;                var i = r === x ? 3 : g === x ? 5 : 1;&#xD;                h = (i - f / (v - x)) * 60 % 360;&#xD;                s = (v - x) / v;&#xD;            }&#xD;&#xD;            return { h: h, s: s, v: v };&#xD;        }&#xD;&#xD;        /**&#xD;         * Linear interpolation between rgb0 and rgb1.&#xD;         * @param {RGBObject} rgb0 - the color corresponding to fraction1 &lt;= 0.&#xD;         * @param {RGBObject} rgb1 - the color corresponding to fraction1 &gt;= 1.&#xD;         * @param {number} fraction1 - the interpolation parameter. If this is 0.5, for example, mix the two colors equally.&#xD;         * @return {RGBObject} the interpolated color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;mixRgb&apos;,&#xD;        value: function mixRgb(rgb0, rgb1, fraction1) {&#xD;            if (fraction1 &lt;= 0) return rgb0;&#xD;            if (fraction1 &gt;= 1) return rgb1;&#xD;            var fraction0 = 1 - fraction1;&#xD;            return {&#xD;                r: fraction0 * rgb0.r + fraction1 * rgb1.r,&#xD;                g: fraction0 * rgb0.g + fraction1 * rgb1.g,&#xD;                b: fraction0 * rgb0.b + fraction1 * rgb1.b&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;RGB_BLACK&apos;,&#xD;&#xD;        /**&#xD;         * @typedef {object} RGBObject - An object representing a color in RGB format.&#xD;         * @property {number} r - the red component, in the range [0, 255].&#xD;         * @property {number} g - the green component, in the range [0, 255].&#xD;         * @property {number} b - the blue component, in the range [0, 255].&#xD;         */&#xD;&#xD;        /**&#xD;         * @typedef {object} HSVObject - An object representing a color in HSV format.&#xD;         * @property {number} h - hue, in the range [0-359).&#xD;         * @property {number} s - saturation, in the range [0,1].&#xD;         * @property {number} v - value, in the range [0,1].&#xD;         */&#xD;&#xD;        /** @type {RGBObject} */&#xD;        get: function get() {&#xD;            return { r: 0, g: 0, b: 0 };&#xD;        }&#xD;&#xD;        /** @type {RGBObject} */&#xD;&#xD;    }, {&#xD;        key: &apos;RGB_WHITE&apos;,&#xD;        get: function get() {&#xD;            return { r: 255, g: 255, b: 255 };&#xD;        }&#xD;    }]);&#xD;&#xD;    return Color;&#xD;}();&#xD;&#xD;module.exports = Color;&#xD;&#xD;/***/ }),&#xD;/* 24 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"Aacute": "Á",&#xD;	"aacute": "á",&#xD;	"Abreve": "Ă",&#xD;	"abreve": "ă",&#xD;	"ac": "∾",&#xD;	"acd": "∿",&#xD;	"acE": "∾̳",&#xD;	"Acirc": "Â",&#xD;	"acirc": "â",&#xD;	"acute": "´",&#xD;	"Acy": "А",&#xD;	"acy": "а",&#xD;	"AElig": "Æ",&#xD;	"aelig": "æ",&#xD;	"af": "⁡",&#xD;	"Afr": "𝔄",&#xD;	"afr": "𝔞",&#xD;	"Agrave": "À",&#xD;	"agrave": "à",&#xD;	"alefsym": "ℵ",&#xD;	"aleph": "ℵ",&#xD;	"Alpha": "Α",&#xD;	"alpha": "α",&#xD;	"Amacr": "Ā",&#xD;	"amacr": "ā",&#xD;	"amalg": "⨿",&#xD;	"amp": "&amp;",&#xD;	"AMP": "&amp;",&#xD;	"andand": "⩕",&#xD;	"And": "⩓",&#xD;	"and": "∧",&#xD;	"andd": "⩜",&#xD;	"andslope": "⩘",&#xD;	"andv": "⩚",&#xD;	"ang": "∠",&#xD;	"ange": "⦤",&#xD;	"angle": "∠",&#xD;	"angmsdaa": "⦨",&#xD;	"angmsdab": "⦩",&#xD;	"angmsdac": "⦪",&#xD;	"angmsdad": "⦫",&#xD;	"angmsdae": "⦬",&#xD;	"angmsdaf": "⦭",&#xD;	"angmsdag": "⦮",&#xD;	"angmsdah": "⦯",&#xD;	"angmsd": "∡",&#xD;	"angrt": "∟",&#xD;	"angrtvb": "⊾",&#xD;	"angrtvbd": "⦝",&#xD;	"angsph": "∢",&#xD;	"angst": "Å",&#xD;	"angzarr": "⍼",&#xD;	"Aogon": "Ą",&#xD;	"aogon": "ą",&#xD;	"Aopf": "𝔸",&#xD;	"aopf": "𝕒",&#xD;	"apacir": "⩯",&#xD;	"ap": "≈",&#xD;	"apE": "⩰",&#xD;	"ape": "≊",&#xD;	"apid": "≋",&#xD;	"apos": "&apos;",&#xD;	"ApplyFunction": "⁡",&#xD;	"approx": "≈",&#xD;	"approxeq": "≊",&#xD;	"Aring": "Å",&#xD;	"aring": "å",&#xD;	"Ascr": "𝒜",&#xD;	"ascr": "𝒶",&#xD;	"Assign": "≔",&#xD;	"ast": "*",&#xD;	"asymp": "≈",&#xD;	"asympeq": "≍",&#xD;	"Atilde": "Ã",&#xD;	"atilde": "ã",&#xD;	"Auml": "Ä",&#xD;	"auml": "ä",&#xD;	"awconint": "∳",&#xD;	"awint": "⨑",&#xD;	"backcong": "≌",&#xD;	"backepsilon": "϶",&#xD;	"backprime": "‵",&#xD;	"backsim": "∽",&#xD;	"backsimeq": "⋍",&#xD;	"Backslash": "∖",&#xD;	"Barv": "⫧",&#xD;	"barvee": "⊽",&#xD;	"barwed": "⌅",&#xD;	"Barwed": "⌆",&#xD;	"barwedge": "⌅",&#xD;	"bbrk": "⎵",&#xD;	"bbrktbrk": "⎶",&#xD;	"bcong": "≌",&#xD;	"Bcy": "Б",&#xD;	"bcy": "б",&#xD;	"bdquo": "„",&#xD;	"becaus": "∵",&#xD;	"because": "∵",&#xD;	"Because": "∵",&#xD;	"bemptyv": "⦰",&#xD;	"bepsi": "϶",&#xD;	"bernou": "ℬ",&#xD;	"Bernoullis": "ℬ",&#xD;	"Beta": "Β",&#xD;	"beta": "β",&#xD;	"beth": "ℶ",&#xD;	"between": "≬",&#xD;	"Bfr": "𝔅",&#xD;	"bfr": "𝔟",&#xD;	"bigcap": "⋂",&#xD;	"bigcirc": "◯",&#xD;	"bigcup": "⋃",&#xD;	"bigodot": "⨀",&#xD;	"bigoplus": "⨁",&#xD;	"bigotimes": "⨂",&#xD;	"bigsqcup": "⨆",&#xD;	"bigstar": "★",&#xD;	"bigtriangledown": "▽",&#xD;	"bigtriangleup": "△",&#xD;	"biguplus": "⨄",&#xD;	"bigvee": "⋁",&#xD;	"bigwedge": "⋀",&#xD;	"bkarow": "⤍",&#xD;	"blacklozenge": "⧫",&#xD;	"blacksquare": "▪",&#xD;	"blacktriangle": "▴",&#xD;	"blacktriangledown": "▾",&#xD;	"blacktriangleleft": "◂",&#xD;	"blacktriangleright": "▸",&#xD;	"blank": "␣",&#xD;	"blk12": "▒",&#xD;	"blk14": "░",&#xD;	"blk34": "▓",&#xD;	"block": "█",&#xD;	"bne": "=⃥",&#xD;	"bnequiv": "≡⃥",&#xD;	"bNot": "⫭",&#xD;	"bnot": "⌐",&#xD;	"Bopf": "𝔹",&#xD;	"bopf": "𝕓",&#xD;	"bot": "⊥",&#xD;	"bottom": "⊥",&#xD;	"bowtie": "⋈",&#xD;	"boxbox": "⧉",&#xD;	"boxdl": "┐",&#xD;	"boxdL": "╕",&#xD;	"boxDl": "╖",&#xD;	"boxDL": "╗",&#xD;	"boxdr": "┌",&#xD;	"boxdR": "╒",&#xD;	"boxDr": "╓",&#xD;	"boxDR": "╔",&#xD;	"boxh": "─",&#xD;	"boxH": "═",&#xD;	"boxhd": "┬",&#xD;	"boxHd": "╤",&#xD;	"boxhD": "╥",&#xD;	"boxHD": "╦",&#xD;	"boxhu": "┴",&#xD;	"boxHu": "╧",&#xD;	"boxhU": "╨",&#xD;	"boxHU": "╩",&#xD;	"boxminus": "⊟",&#xD;	"boxplus": "⊞",&#xD;	"boxtimes": "⊠",&#xD;	"boxul": "┘",&#xD;	"boxuL": "╛",&#xD;	"boxUl": "╜",&#xD;	"boxUL": "╝",&#xD;	"boxur": "└",&#xD;	"boxuR": "╘",&#xD;	"boxUr": "╙",&#xD;	"boxUR": "╚",&#xD;	"boxv": "│",&#xD;	"boxV": "║",&#xD;	"boxvh": "┼",&#xD;	"boxvH": "╪",&#xD;	"boxVh": "╫",&#xD;	"boxVH": "╬",&#xD;	"boxvl": "┤",&#xD;	"boxvL": "╡",&#xD;	"boxVl": "╢",&#xD;	"boxVL": "╣",&#xD;	"boxvr": "├",&#xD;	"boxvR": "╞",&#xD;	"boxVr": "╟",&#xD;	"boxVR": "╠",&#xD;	"bprime": "‵",&#xD;	"breve": "˘",&#xD;	"Breve": "˘",&#xD;	"brvbar": "¦",&#xD;	"bscr": "𝒷",&#xD;	"Bscr": "ℬ",&#xD;	"bsemi": "⁏",&#xD;	"bsim": "∽",&#xD;	"bsime": "⋍",&#xD;	"bsolb": "⧅",&#xD;	"bsol": "\\",&#xD;	"bsolhsub": "⟈",&#xD;	"bull": "•",&#xD;	"bullet": "•",&#xD;	"bump": "≎",&#xD;	"bumpE": "⪮",&#xD;	"bumpe": "≏",&#xD;	"Bumpeq": "≎",&#xD;	"bumpeq": "≏",&#xD;	"Cacute": "Ć",&#xD;	"cacute": "ć",&#xD;	"capand": "⩄",&#xD;	"capbrcup": "⩉",&#xD;	"capcap": "⩋",&#xD;	"cap": "∩",&#xD;	"Cap": "⋒",&#xD;	"capcup": "⩇",&#xD;	"capdot": "⩀",&#xD;	"CapitalDifferentialD": "ⅅ",&#xD;	"caps": "∩︀",&#xD;	"caret": "⁁",&#xD;	"caron": "ˇ",&#xD;	"Cayleys": "ℭ",&#xD;	"ccaps": "⩍",&#xD;	"Ccaron": "Č",&#xD;	"ccaron": "č",&#xD;	"Ccedil": "Ç",&#xD;	"ccedil": "ç",&#xD;	"Ccirc": "Ĉ",&#xD;	"ccirc": "ĉ",&#xD;	"Cconint": "∰",&#xD;	"ccups": "⩌",&#xD;	"ccupssm": "⩐",&#xD;	"Cdot": "Ċ",&#xD;	"cdot": "ċ",&#xD;	"cedil": "¸",&#xD;	"Cedilla": "¸",&#xD;	"cemptyv": "⦲",&#xD;	"cent": "¢",&#xD;	"centerdot": "·",&#xD;	"CenterDot": "·",&#xD;	"cfr": "𝔠",&#xD;	"Cfr": "ℭ",&#xD;	"CHcy": "Ч",&#xD;	"chcy": "ч",&#xD;	"check": "✓",&#xD;	"checkmark": "✓",&#xD;	"Chi": "Χ",&#xD;	"chi": "χ",&#xD;	"circ": "ˆ",&#xD;	"circeq": "≗",&#xD;	"circlearrowleft": "↺",&#xD;	"circlearrowright": "↻",&#xD;	"circledast": "⊛",&#xD;	"circledcirc": "⊚",&#xD;	"circleddash": "⊝",&#xD;	"CircleDot": "⊙",&#xD;	"circledR": "®",&#xD;	"circledS": "Ⓢ",&#xD;	"CircleMinus": "⊖",&#xD;	"CirclePlus": "⊕",&#xD;	"CircleTimes": "⊗",&#xD;	"cir": "○",&#xD;	"cirE": "⧃",&#xD;	"cire": "≗",&#xD;	"cirfnint": "⨐",&#xD;	"cirmid": "⫯",&#xD;	"cirscir": "⧂",&#xD;	"ClockwiseContourIntegral": "∲",&#xD;	"CloseCurlyDoubleQuote": "”",&#xD;	"CloseCurlyQuote": "’",&#xD;	"clubs": "♣",&#xD;	"clubsuit": "♣",&#xD;	"colon": ":",&#xD;	"Colon": "∷",&#xD;	"Colone": "⩴",&#xD;	"colone": "≔",&#xD;	"coloneq": "≔",&#xD;	"comma": ",",&#xD;	"commat": "@",&#xD;	"comp": "∁",&#xD;	"compfn": "∘",&#xD;	"complement": "∁",&#xD;	"complexes": "ℂ",&#xD;	"cong": "≅",&#xD;	"congdot": "⩭",&#xD;	"Congruent": "≡",&#xD;	"conint": "∮",&#xD;	"Conint": "∯",&#xD;	"ContourIntegral": "∮",&#xD;	"copf": "𝕔",&#xD;	"Copf": "ℂ",&#xD;	"coprod": "∐",&#xD;	"Coproduct": "∐",&#xD;	"copy": "©",&#xD;	"COPY": "©",&#xD;	"copysr": "℗",&#xD;	"CounterClockwiseContourIntegral": "∳",&#xD;	"crarr": "↵",&#xD;	"cross": "✗",&#xD;	"Cross": "⨯",&#xD;	"Cscr": "𝒞",&#xD;	"cscr": "𝒸",&#xD;	"csub": "⫏",&#xD;	"csube": "⫑",&#xD;	"csup": "⫐",&#xD;	"csupe": "⫒",&#xD;	"ctdot": "⋯",&#xD;	"cudarrl": "⤸",&#xD;	"cudarrr": "⤵",&#xD;	"cuepr": "⋞",&#xD;	"cuesc": "⋟",&#xD;	"cularr": "↶",&#xD;	"cularrp": "⤽",&#xD;	"cupbrcap": "⩈",&#xD;	"cupcap": "⩆",&#xD;	"CupCap": "≍",&#xD;	"cup": "∪",&#xD;	"Cup": "⋓",&#xD;	"cupcup": "⩊",&#xD;	"cupdot": "⊍",&#xD;	"cupor": "⩅",&#xD;	"cups": "∪︀",&#xD;	"curarr": "↷",&#xD;	"curarrm": "⤼",&#xD;	"curlyeqprec": "⋞",&#xD;	"curlyeqsucc": "⋟",&#xD;	"curlyvee": "⋎",&#xD;	"curlywedge": "⋏",&#xD;	"curren": "¤",&#xD;	"curvearrowleft": "↶",&#xD;	"curvearrowright": "↷",&#xD;	"cuvee": "⋎",&#xD;	"cuwed": "⋏",&#xD;	"cwconint": "∲",&#xD;	"cwint": "∱",&#xD;	"cylcty": "⌭",&#xD;	"dagger": "†",&#xD;	"Dagger": "‡",&#xD;	"daleth": "ℸ",&#xD;	"darr": "↓",&#xD;	"Darr": "↡",&#xD;	"dArr": "⇓",&#xD;	"dash": "‐",&#xD;	"Dashv": "⫤",&#xD;	"dashv": "⊣",&#xD;	"dbkarow": "⤏",&#xD;	"dblac": "˝",&#xD;	"Dcaron": "Ď",&#xD;	"dcaron": "ď",&#xD;	"Dcy": "Д",&#xD;	"dcy": "д",&#xD;	"ddagger": "‡",&#xD;	"ddarr": "⇊",&#xD;	"DD": "ⅅ",&#xD;	"dd": "ⅆ",&#xD;	"DDotrahd": "⤑",&#xD;	"ddotseq": "⩷",&#xD;	"deg": "°",&#xD;	"Del": "∇",&#xD;	"Delta": "Δ",&#xD;	"delta": "δ",&#xD;	"demptyv": "⦱",&#xD;	"dfisht": "⥿",&#xD;	"Dfr": "𝔇",&#xD;	"dfr": "𝔡",&#xD;	"dHar": "⥥",&#xD;	"dharl": "⇃",&#xD;	"dharr": "⇂",&#xD;	"DiacriticalAcute": "´",&#xD;	"DiacriticalDot": "˙",&#xD;	"DiacriticalDoubleAcute": "˝",&#xD;	"DiacriticalGrave": "`",&#xD;	"DiacriticalTilde": "˜",&#xD;	"diam": "⋄",&#xD;	"diamond": "⋄",&#xD;	"Diamond": "⋄",&#xD;	"diamondsuit": "♦",&#xD;	"diams": "♦",&#xD;	"die": "¨",&#xD;	"DifferentialD": "ⅆ",&#xD;	"digamma": "ϝ",&#xD;	"disin": "⋲",&#xD;	"div": "÷",&#xD;	"divide": "÷",&#xD;	"divideontimes": "⋇",&#xD;	"divonx": "⋇",&#xD;	"DJcy": "Ђ",&#xD;	"djcy": "ђ",&#xD;	"dlcorn": "⌞",&#xD;	"dlcrop": "⌍",&#xD;	"dollar": "$",&#xD;	"Dopf": "𝔻",&#xD;	"dopf": "𝕕",&#xD;	"Dot": "¨",&#xD;	"dot": "˙",&#xD;	"DotDot": "⃜",&#xD;	"doteq": "≐",&#xD;	"doteqdot": "≑",&#xD;	"DotEqual": "≐",&#xD;	"dotminus": "∸",&#xD;	"dotplus": "∔",&#xD;	"dotsquare": "⊡",&#xD;	"doublebarwedge": "⌆",&#xD;	"DoubleContourIntegral": "∯",&#xD;	"DoubleDot": "¨",&#xD;	"DoubleDownArrow": "⇓",&#xD;	"DoubleLeftArrow": "⇐",&#xD;	"DoubleLeftRightArrow": "⇔",&#xD;	"DoubleLeftTee": "⫤",&#xD;	"DoubleLongLeftArrow": "⟸",&#xD;	"DoubleLongLeftRightArrow": "⟺",&#xD;	"DoubleLongRightArrow": "⟹",&#xD;	"DoubleRightArrow": "⇒",&#xD;	"DoubleRightTee": "⊨",&#xD;	"DoubleUpArrow": "⇑",&#xD;	"DoubleUpDownArrow": "⇕",&#xD;	"DoubleVerticalBar": "∥",&#xD;	"DownArrowBar": "⤓",&#xD;	"downarrow": "↓",&#xD;	"DownArrow": "↓",&#xD;	"Downarrow": "⇓",&#xD;	"DownArrowUpArrow": "⇵",&#xD;	"DownBreve": "̑",&#xD;	"downdownarrows": "⇊",&#xD;	"downharpoonleft": "⇃",&#xD;	"downharpoonright": "⇂",&#xD;	"DownLeftRightVector": "⥐",&#xD;	"DownLeftTeeVector": "⥞",&#xD;	"DownLeftVectorBar": "⥖",&#xD;	"DownLeftVector": "↽",&#xD;	"DownRightTeeVector": "⥟",&#xD;	"DownRightVectorBar": "⥗",&#xD;	"DownRightVector": "⇁",&#xD;	"DownTeeArrow": "↧",&#xD;	"DownTee": "⊤",&#xD;	"drbkarow": "⤐",&#xD;	"drcorn": "⌟",&#xD;	"drcrop": "⌌",&#xD;	"Dscr": "𝒟",&#xD;	"dscr": "𝒹",&#xD;	"DScy": "Ѕ",&#xD;	"dscy": "ѕ",&#xD;	"dsol": "⧶",&#xD;	"Dstrok": "Đ",&#xD;	"dstrok": "đ",&#xD;	"dtdot": "⋱",&#xD;	"dtri": "▿",&#xD;	"dtrif": "▾",&#xD;	"duarr": "⇵",&#xD;	"duhar": "⥯",&#xD;	"dwangle": "⦦",&#xD;	"DZcy": "Џ",&#xD;	"dzcy": "џ",&#xD;	"dzigrarr": "⟿",&#xD;	"Eacute": "É",&#xD;	"eacute": "é",&#xD;	"easter": "⩮",&#xD;	"Ecaron": "Ě",&#xD;	"ecaron": "ě",&#xD;	"Ecirc": "Ê",&#xD;	"ecirc": "ê",&#xD;	"ecir": "≖",&#xD;	"ecolon": "≕",&#xD;	"Ecy": "Э",&#xD;	"ecy": "э",&#xD;	"eDDot": "⩷",&#xD;	"Edot": "Ė",&#xD;	"edot": "ė",&#xD;	"eDot": "≑",&#xD;	"ee": "ⅇ",&#xD;	"efDot": "≒",&#xD;	"Efr": "𝔈",&#xD;	"efr": "𝔢",&#xD;	"eg": "⪚",&#xD;	"Egrave": "È",&#xD;	"egrave": "è",&#xD;	"egs": "⪖",&#xD;	"egsdot": "⪘",&#xD;	"el": "⪙",&#xD;	"Element": "∈",&#xD;	"elinters": "⏧",&#xD;	"ell": "ℓ",&#xD;	"els": "⪕",&#xD;	"elsdot": "⪗",&#xD;	"Emacr": "Ē",&#xD;	"emacr": "ē",&#xD;	"empty": "∅",&#xD;	"emptyset": "∅",&#xD;	"EmptySmallSquare": "◻",&#xD;	"emptyv": "∅",&#xD;	"EmptyVerySmallSquare": "▫",&#xD;	"emsp13": " ",&#xD;	"emsp14": " ",&#xD;	"emsp": " ",&#xD;	"ENG": "Ŋ",&#xD;	"eng": "ŋ",&#xD;	"ensp": " ",&#xD;	"Eogon": "Ę",&#xD;	"eogon": "ę",&#xD;	"Eopf": "𝔼",&#xD;	"eopf": "𝕖",&#xD;	"epar": "⋕",&#xD;	"eparsl": "⧣",&#xD;	"eplus": "⩱",&#xD;	"epsi": "ε",&#xD;	"Epsilon": "Ε",&#xD;	"epsilon": "ε",&#xD;	"epsiv": "ϵ",&#xD;	"eqcirc": "≖",&#xD;	"eqcolon": "≕",&#xD;	"eqsim": "≂",&#xD;	"eqslantgtr": "⪖",&#xD;	"eqslantless": "⪕",&#xD;	"Equal": "⩵",&#xD;	"equals": "=",&#xD;	"EqualTilde": "≂",&#xD;	"equest": "≟",&#xD;	"Equilibrium": "⇌",&#xD;	"equiv": "≡",&#xD;	"equivDD": "⩸",&#xD;	"eqvparsl": "⧥",&#xD;	"erarr": "⥱",&#xD;	"erDot": "≓",&#xD;	"escr": "ℯ",&#xD;	"Escr": "ℰ",&#xD;	"esdot": "≐",&#xD;	"Esim": "⩳",&#xD;	"esim": "≂",&#xD;	"Eta": "Η",&#xD;	"eta": "η",&#xD;	"ETH": "Ð",&#xD;	"eth": "ð",&#xD;	"Euml": "Ë",&#xD;	"euml": "ë",&#xD;	"euro": "€",&#xD;	"excl": "!",&#xD;	"exist": "∃",&#xD;	"Exists": "∃",&#xD;	"expectation": "ℰ",&#xD;	"exponentiale": "ⅇ",&#xD;	"ExponentialE": "ⅇ",&#xD;	"fallingdotseq": "≒",&#xD;	"Fcy": "Ф",&#xD;	"fcy": "ф",&#xD;	"female": "♀",&#xD;	"ffilig": "ﬃ",&#xD;	"fflig": "ﬀ",&#xD;	"ffllig": "ﬄ",&#xD;	"Ffr": "𝔉",&#xD;	"ffr": "𝔣",&#xD;	"filig": "ﬁ",&#xD;	"FilledSmallSquare": "◼",&#xD;	"FilledVerySmallSquare": "▪",&#xD;	"fjlig": "fj",&#xD;	"flat": "♭",&#xD;	"fllig": "ﬂ",&#xD;	"fltns": "▱",&#xD;	"fnof": "ƒ",&#xD;	"Fopf": "𝔽",&#xD;	"fopf": "𝕗",&#xD;	"forall": "∀",&#xD;	"ForAll": "∀",&#xD;	"fork": "⋔",&#xD;	"forkv": "⫙",&#xD;	"Fouriertrf": "ℱ",&#xD;	"fpartint": "⨍",&#xD;	"frac12": "½",&#xD;	"frac13": "⅓",&#xD;	"frac14": "¼",&#xD;	"frac15": "⅕",&#xD;	"frac16": "⅙",&#xD;	"frac18": "⅛",&#xD;	"frac23": "⅔",&#xD;	"frac25": "⅖",&#xD;	"frac34": "¾",&#xD;	"frac35": "⅗",&#xD;	"frac38": "⅜",&#xD;	"frac45": "⅘",&#xD;	"frac56": "⅚",&#xD;	"frac58": "⅝",&#xD;	"frac78": "⅞",&#xD;	"frasl": "⁄",&#xD;	"frown": "⌢",&#xD;	"fscr": "𝒻",&#xD;	"Fscr": "ℱ",&#xD;	"gacute": "ǵ",&#xD;	"Gamma": "Γ",&#xD;	"gamma": "γ",&#xD;	"Gammad": "Ϝ",&#xD;	"gammad": "ϝ",&#xD;	"gap": "⪆",&#xD;	"Gbreve": "Ğ",&#xD;	"gbreve": "ğ",&#xD;	"Gcedil": "Ģ",&#xD;	"Gcirc": "Ĝ",&#xD;	"gcirc": "ĝ",&#xD;	"Gcy": "Г",&#xD;	"gcy": "г",&#xD;	"Gdot": "Ġ",&#xD;	"gdot": "ġ",&#xD;	"ge": "≥",&#xD;	"gE": "≧",&#xD;	"gEl": "⪌",&#xD;	"gel": "⋛",&#xD;	"geq": "≥",&#xD;	"geqq": "≧",&#xD;	"geqslant": "⩾",&#xD;	"gescc": "⪩",&#xD;	"ges": "⩾",&#xD;	"gesdot": "⪀",&#xD;	"gesdoto": "⪂",&#xD;	"gesdotol": "⪄",&#xD;	"gesl": "⋛︀",&#xD;	"gesles": "⪔",&#xD;	"Gfr": "𝔊",&#xD;	"gfr": "𝔤",&#xD;	"gg": "≫",&#xD;	"Gg": "⋙",&#xD;	"ggg": "⋙",&#xD;	"gimel": "ℷ",&#xD;	"GJcy": "Ѓ",&#xD;	"gjcy": "ѓ",&#xD;	"gla": "⪥",&#xD;	"gl": "≷",&#xD;	"glE": "⪒",&#xD;	"glj": "⪤",&#xD;	"gnap": "⪊",&#xD;	"gnapprox": "⪊",&#xD;	"gne": "⪈",&#xD;	"gnE": "≩",&#xD;	"gneq": "⪈",&#xD;	"gneqq": "≩",&#xD;	"gnsim": "⋧",&#xD;	"Gopf": "𝔾",&#xD;	"gopf": "𝕘",&#xD;	"grave": "`",&#xD;	"GreaterEqual": "≥",&#xD;	"GreaterEqualLess": "⋛",&#xD;	"GreaterFullEqual": "≧",&#xD;	"GreaterGreater": "⪢",&#xD;	"GreaterLess": "≷",&#xD;	"GreaterSlantEqual": "⩾",&#xD;	"GreaterTilde": "≳",&#xD;	"Gscr": "𝒢",&#xD;	"gscr": "ℊ",&#xD;	"gsim": "≳",&#xD;	"gsime": "⪎",&#xD;	"gsiml": "⪐",&#xD;	"gtcc": "⪧",&#xD;	"gtcir": "⩺",&#xD;	"gt": "&gt;",&#xD;	"GT": "&gt;",&#xD;	"Gt": "≫",&#xD;	"gtdot": "⋗",&#xD;	"gtlPar": "⦕",&#xD;	"gtquest": "⩼",&#xD;	"gtrapprox": "⪆",&#xD;	"gtrarr": "⥸",&#xD;	"gtrdot": "⋗",&#xD;	"gtreqless": "⋛",&#xD;	"gtreqqless": "⪌",&#xD;	"gtrless": "≷",&#xD;	"gtrsim": "≳",&#xD;	"gvertneqq": "≩︀",&#xD;	"gvnE": "≩︀",&#xD;	"Hacek": "ˇ",&#xD;	"hairsp": " ",&#xD;	"half": "½",&#xD;	"hamilt": "ℋ",&#xD;	"HARDcy": "Ъ",&#xD;	"hardcy": "ъ",&#xD;	"harrcir": "⥈",&#xD;	"harr": "↔",&#xD;	"hArr": "⇔",&#xD;	"harrw": "↭",&#xD;	"Hat": "^",&#xD;	"hbar": "ℏ",&#xD;	"Hcirc": "Ĥ",&#xD;	"hcirc": "ĥ",&#xD;	"hearts": "♥",&#xD;	"heartsuit": "♥",&#xD;	"hellip": "…",&#xD;	"hercon": "⊹",&#xD;	"hfr": "𝔥",&#xD;	"Hfr": "ℌ",&#xD;	"HilbertSpace": "ℋ",&#xD;	"hksearow": "⤥",&#xD;	"hkswarow": "⤦",&#xD;	"hoarr": "⇿",&#xD;	"homtht": "∻",&#xD;	"hookleftarrow": "↩",&#xD;	"hookrightarrow": "↪",&#xD;	"hopf": "𝕙",&#xD;	"Hopf": "ℍ",&#xD;	"horbar": "―",&#xD;	"HorizontalLine": "─",&#xD;	"hscr": "𝒽",&#xD;	"Hscr": "ℋ",&#xD;	"hslash": "ℏ",&#xD;	"Hstrok": "Ħ",&#xD;	"hstrok": "ħ",&#xD;	"HumpDownHump": "≎",&#xD;	"HumpEqual": "≏",&#xD;	"hybull": "⁃",&#xD;	"hyphen": "‐",&#xD;	"Iacute": "Í",&#xD;	"iacute": "í",&#xD;	"ic": "⁣",&#xD;	"Icirc": "Î",&#xD;	"icirc": "î",&#xD;	"Icy": "И",&#xD;	"icy": "и",&#xD;	"Idot": "İ",&#xD;	"IEcy": "Е",&#xD;	"iecy": "е",&#xD;	"iexcl": "¡",&#xD;	"iff": "⇔",&#xD;	"ifr": "𝔦",&#xD;	"Ifr": "ℑ",&#xD;	"Igrave": "Ì",&#xD;	"igrave": "ì",&#xD;	"ii": "ⅈ",&#xD;	"iiiint": "⨌",&#xD;	"iiint": "∭",&#xD;	"iinfin": "⧜",&#xD;	"iiota": "℩",&#xD;	"IJlig": "Ĳ",&#xD;	"ijlig": "ĳ",&#xD;	"Imacr": "Ī",&#xD;	"imacr": "ī",&#xD;	"image": "ℑ",&#xD;	"ImaginaryI": "ⅈ",&#xD;	"imagline": "ℐ",&#xD;	"imagpart": "ℑ",&#xD;	"imath": "ı",&#xD;	"Im": "ℑ",&#xD;	"imof": "⊷",&#xD;	"imped": "Ƶ",&#xD;	"Implies": "⇒",&#xD;	"incare": "℅",&#xD;	"in": "∈",&#xD;	"infin": "∞",&#xD;	"infintie": "⧝",&#xD;	"inodot": "ı",&#xD;	"intcal": "⊺",&#xD;	"int": "∫",&#xD;	"Int": "∬",&#xD;	"integers": "ℤ",&#xD;	"Integral": "∫",&#xD;	"intercal": "⊺",&#xD;	"Intersection": "⋂",&#xD;	"intlarhk": "⨗",&#xD;	"intprod": "⨼",&#xD;	"InvisibleComma": "⁣",&#xD;	"InvisibleTimes": "⁢",&#xD;	"IOcy": "Ё",&#xD;	"iocy": "ё",&#xD;	"Iogon": "Į",&#xD;	"iogon": "į",&#xD;	"Iopf": "𝕀",&#xD;	"iopf": "𝕚",&#xD;	"Iota": "Ι",&#xD;	"iota": "ι",&#xD;	"iprod": "⨼",&#xD;	"iquest": "¿",&#xD;	"iscr": "𝒾",&#xD;	"Iscr": "ℐ",&#xD;	"isin": "∈",&#xD;	"isindot": "⋵",&#xD;	"isinE": "⋹",&#xD;	"isins": "⋴",&#xD;	"isinsv": "⋳",&#xD;	"isinv": "∈",&#xD;	"it": "⁢",&#xD;	"Itilde": "Ĩ",&#xD;	"itilde": "ĩ",&#xD;	"Iukcy": "І",&#xD;	"iukcy": "і",&#xD;	"Iuml": "Ï",&#xD;	"iuml": "ï",&#xD;	"Jcirc": "Ĵ",&#xD;	"jcirc": "ĵ",&#xD;	"Jcy": "Й",&#xD;	"jcy": "й",&#xD;	"Jfr": "𝔍",&#xD;	"jfr": "𝔧",&#xD;	"jmath": "ȷ",&#xD;	"Jopf": "𝕁",&#xD;	"jopf": "𝕛",&#xD;	"Jscr": "𝒥",&#xD;	"jscr": "𝒿",&#xD;	"Jsercy": "Ј",&#xD;	"jsercy": "ј",&#xD;	"Jukcy": "Є",&#xD;	"jukcy": "є",&#xD;	"Kappa": "Κ",&#xD;	"kappa": "κ",&#xD;	"kappav": "ϰ",&#xD;	"Kcedil": "Ķ",&#xD;	"kcedil": "ķ",&#xD;	"Kcy": "К",&#xD;	"kcy": "к",&#xD;	"Kfr": "𝔎",&#xD;	"kfr": "𝔨",&#xD;	"kgreen": "ĸ",&#xD;	"KHcy": "Х",&#xD;	"khcy": "х",&#xD;	"KJcy": "Ќ",&#xD;	"kjcy": "ќ",&#xD;	"Kopf": "𝕂",&#xD;	"kopf": "𝕜",&#xD;	"Kscr": "𝒦",&#xD;	"kscr": "𝓀",&#xD;	"lAarr": "⇚",&#xD;	"Lacute": "Ĺ",&#xD;	"lacute": "ĺ",&#xD;	"laemptyv": "⦴",&#xD;	"lagran": "ℒ",&#xD;	"Lambda": "Λ",&#xD;	"lambda": "λ",&#xD;	"lang": "⟨",&#xD;	"Lang": "⟪",&#xD;	"langd": "⦑",&#xD;	"langle": "⟨",&#xD;	"lap": "⪅",&#xD;	"Laplacetrf": "ℒ",&#xD;	"laquo": "«",&#xD;	"larrb": "⇤",&#xD;	"larrbfs": "⤟",&#xD;	"larr": "←",&#xD;	"Larr": "↞",&#xD;	"lArr": "⇐",&#xD;	"larrfs": "⤝",&#xD;	"larrhk": "↩",&#xD;	"larrlp": "↫",&#xD;	"larrpl": "⤹",&#xD;	"larrsim": "⥳",&#xD;	"larrtl": "↢",&#xD;	"latail": "⤙",&#xD;	"lAtail": "⤛",&#xD;	"lat": "⪫",&#xD;	"late": "⪭",&#xD;	"lates": "⪭︀",&#xD;	"lbarr": "⤌",&#xD;	"lBarr": "⤎",&#xD;	"lbbrk": "❲",&#xD;	"lbrace": "{",&#xD;	"lbrack": "[",&#xD;	"lbrke": "⦋",&#xD;	"lbrksld": "⦏",&#xD;	"lbrkslu": "⦍",&#xD;	"Lcaron": "Ľ",&#xD;	"lcaron": "ľ",&#xD;	"Lcedil": "Ļ",&#xD;	"lcedil": "ļ",&#xD;	"lceil": "⌈",&#xD;	"lcub": "{",&#xD;	"Lcy": "Л",&#xD;	"lcy": "л",&#xD;	"ldca": "⤶",&#xD;	"ldquo": "“",&#xD;	"ldquor": "„",&#xD;	"ldrdhar": "⥧",&#xD;	"ldrushar": "⥋",&#xD;	"ldsh": "↲",&#xD;	"le": "≤",&#xD;	"lE": "≦",&#xD;	"LeftAngleBracket": "⟨",&#xD;	"LeftArrowBar": "⇤",&#xD;	"leftarrow": "←",&#xD;	"LeftArrow": "←",&#xD;	"Leftarrow": "⇐",&#xD;	"LeftArrowRightArrow": "⇆",&#xD;	"leftarrowtail": "↢",&#xD;	"LeftCeiling": "⌈",&#xD;	"LeftDoubleBracket": "⟦",&#xD;	"LeftDownTeeVector": "⥡",&#xD;	"LeftDownVectorBar": "⥙",&#xD;	"LeftDownVector": "⇃",&#xD;	"LeftFloor": "⌊",&#xD;	"leftharpoondown": "↽",&#xD;	"leftharpoonup": "↼",&#xD;	"leftleftarrows": "⇇",&#xD;	"leftrightarrow": "↔",&#xD;	"LeftRightArrow": "↔",&#xD;	"Leftrightarrow": "⇔",&#xD;	"leftrightarrows": "⇆",&#xD;	"leftrightharpoons": "⇋",&#xD;	"leftrightsquigarrow": "↭",&#xD;	"LeftRightVector": "⥎",&#xD;	"LeftTeeArrow": "↤",&#xD;	"LeftTee": "⊣",&#xD;	"LeftTeeVector": "⥚",&#xD;	"leftthreetimes": "⋋",&#xD;	"LeftTriangleBar": "⧏",&#xD;	"LeftTriangle": "⊲",&#xD;	"LeftTriangleEqual": "⊴",&#xD;	"LeftUpDownVector": "⥑",&#xD;	"LeftUpTeeVector": "⥠",&#xD;	"LeftUpVectorBar": "⥘",&#xD;	"LeftUpVector": "↿",&#xD;	"LeftVectorBar": "⥒",&#xD;	"LeftVector": "↼",&#xD;	"lEg": "⪋",&#xD;	"leg": "⋚",&#xD;	"leq": "≤",&#xD;	"leqq": "≦",&#xD;	"leqslant": "⩽",&#xD;	"lescc": "⪨",&#xD;	"les": "⩽",&#xD;	"lesdot": "⩿",&#xD;	"lesdoto": "⪁",&#xD;	"lesdotor": "⪃",&#xD;	"lesg": "⋚︀",&#xD;	"lesges": "⪓",&#xD;	"lessapprox": "⪅",&#xD;	"lessdot": "⋖",&#xD;	"lesseqgtr": "⋚",&#xD;	"lesseqqgtr": "⪋",&#xD;	"LessEqualGreater": "⋚",&#xD;	"LessFullEqual": "≦",&#xD;	"LessGreater": "≶",&#xD;	"lessgtr": "≶",&#xD;	"LessLess": "⪡",&#xD;	"lesssim": "≲",&#xD;	"LessSlantEqual": "⩽",&#xD;	"LessTilde": "≲",&#xD;	"lfisht": "⥼",&#xD;	"lfloor": "⌊",&#xD;	"Lfr": "𝔏",&#xD;	"lfr": "𝔩",&#xD;	"lg": "≶",&#xD;	"lgE": "⪑",&#xD;	"lHar": "⥢",&#xD;	"lhard": "↽",&#xD;	"lharu": "↼",&#xD;	"lharul": "⥪",&#xD;	"lhblk": "▄",&#xD;	"LJcy": "Љ",&#xD;	"ljcy": "љ",&#xD;	"llarr": "⇇",&#xD;	"ll": "≪",&#xD;	"Ll": "⋘",&#xD;	"llcorner": "⌞",&#xD;	"Lleftarrow": "⇚",&#xD;	"llhard": "⥫",&#xD;	"lltri": "◺",&#xD;	"Lmidot": "Ŀ",&#xD;	"lmidot": "ŀ",&#xD;	"lmoustache": "⎰",&#xD;	"lmoust": "⎰",&#xD;	"lnap": "⪉",&#xD;	"lnapprox": "⪉",&#xD;	"lne": "⪇",&#xD;	"lnE": "≨",&#xD;	"lneq": "⪇",&#xD;	"lneqq": "≨",&#xD;	"lnsim": "⋦",&#xD;	"loang": "⟬",&#xD;	"loarr": "⇽",&#xD;	"lobrk": "⟦",&#xD;	"longleftarrow": "⟵",&#xD;	"LongLeftArrow": "⟵",&#xD;	"Longleftarrow": "⟸",&#xD;	"longleftrightarrow": "⟷",&#xD;	"LongLeftRightArrow": "⟷",&#xD;	"Longleftrightarrow": "⟺",&#xD;	"longmapsto": "⟼",&#xD;	"longrightarrow": "⟶",&#xD;	"LongRightArrow": "⟶",&#xD;	"Longrightarrow": "⟹",&#xD;	"looparrowleft": "↫",&#xD;	"looparrowright": "↬",&#xD;	"lopar": "⦅",&#xD;	"Lopf": "𝕃",&#xD;	"lopf": "𝕝",&#xD;	"loplus": "⨭",&#xD;	"lotimes": "⨴",&#xD;	"lowast": "∗",&#xD;	"lowbar": "_",&#xD;	"LowerLeftArrow": "↙",&#xD;	"LowerRightArrow": "↘",&#xD;	"loz": "◊",&#xD;	"lozenge": "◊",&#xD;	"lozf": "⧫",&#xD;	"lpar": "(",&#xD;	"lparlt": "⦓",&#xD;	"lrarr": "⇆",&#xD;	"lrcorner": "⌟",&#xD;	"lrhar": "⇋",&#xD;	"lrhard": "⥭",&#xD;	"lrm": "‎",&#xD;	"lrtri": "⊿",&#xD;	"lsaquo": "‹",&#xD;	"lscr": "𝓁",&#xD;	"Lscr": "ℒ",&#xD;	"lsh": "↰",&#xD;	"Lsh": "↰",&#xD;	"lsim": "≲",&#xD;	"lsime": "⪍",&#xD;	"lsimg": "⪏",&#xD;	"lsqb": "[",&#xD;	"lsquo": "‘",&#xD;	"lsquor": "‚",&#xD;	"Lstrok": "Ł",&#xD;	"lstrok": "ł",&#xD;	"ltcc": "⪦",&#xD;	"ltcir": "⩹",&#xD;	"lt": "&lt;",&#xD;	"LT": "&lt;",&#xD;	"Lt": "≪",&#xD;	"ltdot": "⋖",&#xD;	"lthree": "⋋",&#xD;	"ltimes": "⋉",&#xD;	"ltlarr": "⥶",&#xD;	"ltquest": "⩻",&#xD;	"ltri": "◃",&#xD;	"ltrie": "⊴",&#xD;	"ltrif": "◂",&#xD;	"ltrPar": "⦖",&#xD;	"lurdshar": "⥊",&#xD;	"luruhar": "⥦",&#xD;	"lvertneqq": "≨︀",&#xD;	"lvnE": "≨︀",&#xD;	"macr": "¯",&#xD;	"male": "♂",&#xD;	"malt": "✠",&#xD;	"maltese": "✠",&#xD;	"Map": "⤅",&#xD;	"map": "↦",&#xD;	"mapsto": "↦",&#xD;	"mapstodown": "↧",&#xD;	"mapstoleft": "↤",&#xD;	"mapstoup": "↥",&#xD;	"marker": "▮",&#xD;	"mcomma": "⨩",&#xD;	"Mcy": "М",&#xD;	"mcy": "м",&#xD;	"mdash": "—",&#xD;	"mDDot": "∺",&#xD;	"measuredangle": "∡",&#xD;	"MediumSpace": " ",&#xD;	"Mellintrf": "ℳ",&#xD;	"Mfr": "𝔐",&#xD;	"mfr": "𝔪",&#xD;	"mho": "℧",&#xD;	"micro": "µ",&#xD;	"midast": "*",&#xD;	"midcir": "⫰",&#xD;	"mid": "∣",&#xD;	"middot": "·",&#xD;	"minusb": "⊟",&#xD;	"minus": "−",&#xD;	"minusd": "∸",&#xD;	"minusdu": "⨪",&#xD;	"MinusPlus": "∓",&#xD;	"mlcp": "⫛",&#xD;	"mldr": "…",&#xD;	"mnplus": "∓",&#xD;	"models": "⊧",&#xD;	"Mopf": "𝕄",&#xD;	"mopf": "𝕞",&#xD;	"mp": "∓",&#xD;	"mscr": "𝓂",&#xD;	"Mscr": "ℳ",&#xD;	"mstpos": "∾",&#xD;	"Mu": "Μ",&#xD;	"mu": "μ",&#xD;	"multimap": "⊸",&#xD;	"mumap": "⊸",&#xD;	"nabla": "∇",&#xD;	"Nacute": "Ń",&#xD;	"nacute": "ń",&#xD;	"nang": "∠⃒",&#xD;	"nap": "≉",&#xD;	"napE": "⩰̸",&#xD;	"napid": "≋̸",&#xD;	"napos": "ŉ",&#xD;	"napprox": "≉",&#xD;	"natural": "♮",&#xD;	"naturals": "ℕ",&#xD;	"natur": "♮",&#xD;	"nbsp": " ",&#xD;	"nbump": "≎̸",&#xD;	"nbumpe": "≏̸",&#xD;	"ncap": "⩃",&#xD;	"Ncaron": "Ň",&#xD;	"ncaron": "ň",&#xD;	"Ncedil": "Ņ",&#xD;	"ncedil": "ņ",&#xD;	"ncong": "≇",&#xD;	"ncongdot": "⩭̸",&#xD;	"ncup": "⩂",&#xD;	"Ncy": "Н",&#xD;	"ncy": "н",&#xD;	"ndash": "–",&#xD;	"nearhk": "⤤",&#xD;	"nearr": "↗",&#xD;	"neArr": "⇗",&#xD;	"nearrow": "↗",&#xD;	"ne": "≠",&#xD;	"nedot": "≐̸",&#xD;	"NegativeMediumSpace": "​",&#xD;	"NegativeThickSpace": "​",&#xD;	"NegativeThinSpace": "​",&#xD;	"NegativeVeryThinSpace": "​",&#xD;	"nequiv": "≢",&#xD;	"nesear": "⤨",&#xD;	"nesim": "≂̸",&#xD;	"NestedGreaterGreater": "≫",&#xD;	"NestedLessLess": "≪",&#xD;	"NewLine": "\n",&#xD;	"nexist": "∄",&#xD;	"nexists": "∄",&#xD;	"Nfr": "𝔑",&#xD;	"nfr": "𝔫",&#xD;	"ngE": "≧̸",&#xD;	"nge": "≱",&#xD;	"ngeq": "≱",&#xD;	"ngeqq": "≧̸",&#xD;	"ngeqslant": "⩾̸",&#xD;	"nges": "⩾̸",&#xD;	"nGg": "⋙̸",&#xD;	"ngsim": "≵",&#xD;	"nGt": "≫⃒",&#xD;	"ngt": "≯",&#xD;	"ngtr": "≯",&#xD;	"nGtv": "≫̸",&#xD;	"nharr": "↮",&#xD;	"nhArr": "⇎",&#xD;	"nhpar": "⫲",&#xD;	"ni": "∋",&#xD;	"nis": "⋼",&#xD;	"nisd": "⋺",&#xD;	"niv": "∋",&#xD;	"NJcy": "Њ",&#xD;	"njcy": "њ",&#xD;	"nlarr": "↚",&#xD;	"nlArr": "⇍",&#xD;	"nldr": "‥",&#xD;	"nlE": "≦̸",&#xD;	"nle": "≰",&#xD;	"nleftarrow": "↚",&#xD;	"nLeftarrow": "⇍",&#xD;	"nleftrightarrow": "↮",&#xD;	"nLeftrightarrow": "⇎",&#xD;	"nleq": "≰",&#xD;	"nleqq": "≦̸",&#xD;	"nleqslant": "⩽̸",&#xD;	"nles": "⩽̸",&#xD;	"nless": "≮",&#xD;	"nLl": "⋘̸",&#xD;	"nlsim": "≴",&#xD;	"nLt": "≪⃒",&#xD;	"nlt": "≮",&#xD;	"nltri": "⋪",&#xD;	"nltrie": "⋬",&#xD;	"nLtv": "≪̸",&#xD;	"nmid": "∤",&#xD;	"NoBreak": "⁠",&#xD;	"NonBreakingSpace": " ",&#xD;	"nopf": "𝕟",&#xD;	"Nopf": "ℕ",&#xD;	"Not": "⫬",&#xD;	"not": "¬",&#xD;	"NotCongruent": "≢",&#xD;	"NotCupCap": "≭",&#xD;	"NotDoubleVerticalBar": "∦",&#xD;	"NotElement": "∉",&#xD;	"NotEqual": "≠",&#xD;	"NotEqualTilde": "≂̸",&#xD;	"NotExists": "∄",&#xD;	"NotGreater": "≯",&#xD;	"NotGreaterEqual": "≱",&#xD;	"NotGreaterFullEqual": "≧̸",&#xD;	"NotGreaterGreater": "≫̸",&#xD;	"NotGreaterLess": "≹",&#xD;	"NotGreaterSlantEqual": "⩾̸",&#xD;	"NotGreaterTilde": "≵",&#xD;	"NotHumpDownHump": "≎̸",&#xD;	"NotHumpEqual": "≏̸",&#xD;	"notin": "∉",&#xD;	"notindot": "⋵̸",&#xD;	"notinE": "⋹̸",&#xD;	"notinva": "∉",&#xD;	"notinvb": "⋷",&#xD;	"notinvc": "⋶",&#xD;	"NotLeftTriangleBar": "⧏̸",&#xD;	"NotLeftTriangle": "⋪",&#xD;	"NotLeftTriangleEqual": "⋬",&#xD;	"NotLess": "≮",&#xD;	"NotLessEqual": "≰",&#xD;	"NotLessGreater": "≸",&#xD;	"NotLessLess": "≪̸",&#xD;	"NotLessSlantEqual": "⩽̸",&#xD;	"NotLessTilde": "≴",&#xD;	"NotNestedGreaterGreater": "⪢̸",&#xD;	"NotNestedLessLess": "⪡̸",&#xD;	"notni": "∌",&#xD;	"notniva": "∌",&#xD;	"notnivb": "⋾",&#xD;	"notnivc": "⋽",&#xD;	"NotPrecedes": "⊀",&#xD;	"NotPrecedesEqual": "⪯̸",&#xD;	"NotPrecedesSlantEqual": "⋠",&#xD;	"NotReverseElement": "∌",&#xD;	"NotRightTriangleBar": "⧐̸",&#xD;	"NotRightTriangle": "⋫",&#xD;	"NotRightTriangleEqual": "⋭",&#xD;	"NotSquareSubset": "⊏̸",&#xD;	"NotSquareSubsetEqual": "⋢",&#xD;	"NotSquareSuperset": "⊐̸",&#xD;	"NotSquareSupersetEqual": "⋣",&#xD;	"NotSubset": "⊂⃒",&#xD;	"NotSubsetEqual": "⊈",&#xD;	"NotSucceeds": "⊁",&#xD;	"NotSucceedsEqual": "⪰̸",&#xD;	"NotSucceedsSlantEqual": "⋡",&#xD;	"NotSucceedsTilde": "≿̸",&#xD;	"NotSuperset": "⊃⃒",&#xD;	"NotSupersetEqual": "⊉",&#xD;	"NotTilde": "≁",&#xD;	"NotTildeEqual": "≄",&#xD;	"NotTildeFullEqual": "≇",&#xD;	"NotTildeTilde": "≉",&#xD;	"NotVerticalBar": "∤",&#xD;	"nparallel": "∦",&#xD;	"npar": "∦",&#xD;	"nparsl": "⫽⃥",&#xD;	"npart": "∂̸",&#xD;	"npolint": "⨔",&#xD;	"npr": "⊀",&#xD;	"nprcue": "⋠",&#xD;	"nprec": "⊀",&#xD;	"npreceq": "⪯̸",&#xD;	"npre": "⪯̸",&#xD;	"nrarrc": "⤳̸",&#xD;	"nrarr": "↛",&#xD;	"nrArr": "⇏",&#xD;	"nrarrw": "↝̸",&#xD;	"nrightarrow": "↛",&#xD;	"nRightarrow": "⇏",&#xD;	"nrtri": "⋫",&#xD;	"nrtrie": "⋭",&#xD;	"nsc": "⊁",&#xD;	"nsccue": "⋡",&#xD;	"nsce": "⪰̸",&#xD;	"Nscr": "𝒩",&#xD;	"nscr": "𝓃",&#xD;	"nshortmid": "∤",&#xD;	"nshortparallel": "∦",&#xD;	"nsim": "≁",&#xD;	"nsime": "≄",&#xD;	"nsimeq": "≄",&#xD;	"nsmid": "∤",&#xD;	"nspar": "∦",&#xD;	"nsqsube": "⋢",&#xD;	"nsqsupe": "⋣",&#xD;	"nsub": "⊄",&#xD;	"nsubE": "⫅̸",&#xD;	"nsube": "⊈",&#xD;	"nsubset": "⊂⃒",&#xD;	"nsubseteq": "⊈",&#xD;	"nsubseteqq": "⫅̸",&#xD;	"nsucc": "⊁",&#xD;	"nsucceq": "⪰̸",&#xD;	"nsup": "⊅",&#xD;	"nsupE": "⫆̸",&#xD;	"nsupe": "⊉",&#xD;	"nsupset": "⊃⃒",&#xD;	"nsupseteq": "⊉",&#xD;	"nsupseteqq": "⫆̸",&#xD;	"ntgl": "≹",&#xD;	"Ntilde": "Ñ",&#xD;	"ntilde": "ñ",&#xD;	"ntlg": "≸",&#xD;	"ntriangleleft": "⋪",&#xD;	"ntrianglelefteq": "⋬",&#xD;	"ntriangleright": "⋫",&#xD;	"ntrianglerighteq": "⋭",&#xD;	"Nu": "Ν",&#xD;	"nu": "ν",&#xD;	"num": "#",&#xD;	"numero": "№",&#xD;	"numsp": " ",&#xD;	"nvap": "≍⃒",&#xD;	"nvdash": "⊬",&#xD;	"nvDash": "⊭",&#xD;	"nVdash": "⊮",&#xD;	"nVDash": "⊯",&#xD;	"nvge": "≥⃒",&#xD;	"nvgt": "&gt;⃒",&#xD;	"nvHarr": "⤄",&#xD;	"nvinfin": "⧞",&#xD;	"nvlArr": "⤂",&#xD;	"nvle": "≤⃒",&#xD;	"nvlt": "&lt;⃒",&#xD;	"nvltrie": "⊴⃒",&#xD;	"nvrArr": "⤃",&#xD;	"nvrtrie": "⊵⃒",&#xD;	"nvsim": "∼⃒",&#xD;	"nwarhk": "⤣",&#xD;	"nwarr": "↖",&#xD;	"nwArr": "⇖",&#xD;	"nwarrow": "↖",&#xD;	"nwnear": "⤧",&#xD;	"Oacute": "Ó",&#xD;	"oacute": "ó",&#xD;	"oast": "⊛",&#xD;	"Ocirc": "Ô",&#xD;	"ocirc": "ô",&#xD;	"ocir": "⊚",&#xD;	"Ocy": "О",&#xD;	"ocy": "о",&#xD;	"odash": "⊝",&#xD;	"Odblac": "Ő",&#xD;	"odblac": "ő",&#xD;	"odiv": "⨸",&#xD;	"odot": "⊙",&#xD;	"odsold": "⦼",&#xD;	"OElig": "Œ",&#xD;	"oelig": "œ",&#xD;	"ofcir": "⦿",&#xD;	"Ofr": "𝔒",&#xD;	"ofr": "𝔬",&#xD;	"ogon": "˛",&#xD;	"Ograve": "Ò",&#xD;	"ograve": "ò",&#xD;	"ogt": "⧁",&#xD;	"ohbar": "⦵",&#xD;	"ohm": "Ω",&#xD;	"oint": "∮",&#xD;	"olarr": "↺",&#xD;	"olcir": "⦾",&#xD;	"olcross": "⦻",&#xD;	"oline": "‾",&#xD;	"olt": "⧀",&#xD;	"Omacr": "Ō",&#xD;	"omacr": "ō",&#xD;	"Omega": "Ω",&#xD;	"omega": "ω",&#xD;	"Omicron": "Ο",&#xD;	"omicron": "ο",&#xD;	"omid": "⦶",&#xD;	"ominus": "⊖",&#xD;	"Oopf": "𝕆",&#xD;	"oopf": "𝕠",&#xD;	"opar": "⦷",&#xD;	"OpenCurlyDoubleQuote": "“",&#xD;	"OpenCurlyQuote": "‘",&#xD;	"operp": "⦹",&#xD;	"oplus": "⊕",&#xD;	"orarr": "↻",&#xD;	"Or": "⩔",&#xD;	"or": "∨",&#xD;	"ord": "⩝",&#xD;	"order": "ℴ",&#xD;	"orderof": "ℴ",&#xD;	"ordf": "ª",&#xD;	"ordm": "º",&#xD;	"origof": "⊶",&#xD;	"oror": "⩖",&#xD;	"orslope": "⩗",&#xD;	"orv": "⩛",&#xD;	"oS": "Ⓢ",&#xD;	"Oscr": "𝒪",&#xD;	"oscr": "ℴ",&#xD;	"Oslash": "Ø",&#xD;	"oslash": "ø",&#xD;	"osol": "⊘",&#xD;	"Otilde": "Õ",&#xD;	"otilde": "õ",&#xD;	"otimesas": "⨶",&#xD;	"Otimes": "⨷",&#xD;	"otimes": "⊗",&#xD;	"Ouml": "Ö",&#xD;	"ouml": "ö",&#xD;	"ovbar": "⌽",&#xD;	"OverBar": "‾",&#xD;	"OverBrace": "⏞",&#xD;	"OverBracket": "⎴",&#xD;	"OverParenthesis": "⏜",&#xD;	"para": "¶",&#xD;	"parallel": "∥",&#xD;	"par": "∥",&#xD;	"parsim": "⫳",&#xD;	"parsl": "⫽",&#xD;	"part": "∂",&#xD;	"PartialD": "∂",&#xD;	"Pcy": "П",&#xD;	"pcy": "п",&#xD;	"percnt": "%",&#xD;	"period": ".",&#xD;	"permil": "‰",&#xD;	"perp": "⊥",&#xD;	"pertenk": "‱",&#xD;	"Pfr": "𝔓",&#xD;	"pfr": "𝔭",&#xD;	"Phi": "Φ",&#xD;	"phi": "φ",&#xD;	"phiv": "ϕ",&#xD;	"phmmat": "ℳ",&#xD;	"phone": "☎",&#xD;	"Pi": "Π",&#xD;	"pi": "π",&#xD;	"pitchfork": "⋔",&#xD;	"piv": "ϖ",&#xD;	"planck": "ℏ",&#xD;	"planckh": "ℎ",&#xD;	"plankv": "ℏ",&#xD;	"plusacir": "⨣",&#xD;	"plusb": "⊞",&#xD;	"pluscir": "⨢",&#xD;	"plus": "+",&#xD;	"plusdo": "∔",&#xD;	"plusdu": "⨥",&#xD;	"pluse": "⩲",&#xD;	"PlusMinus": "±",&#xD;	"plusmn": "±",&#xD;	"plussim": "⨦",&#xD;	"plustwo": "⨧",&#xD;	"pm": "±",&#xD;	"Poincareplane": "ℌ",&#xD;	"pointint": "⨕",&#xD;	"popf": "𝕡",&#xD;	"Popf": "ℙ",&#xD;	"pound": "£",&#xD;	"prap": "⪷",&#xD;	"Pr": "⪻",&#xD;	"pr": "≺",&#xD;	"prcue": "≼",&#xD;	"precapprox": "⪷",&#xD;	"prec": "≺",&#xD;	"preccurlyeq": "≼",&#xD;	"Precedes": "≺",&#xD;	"PrecedesEqual": "⪯",&#xD;	"PrecedesSlantEqual": "≼",&#xD;	"PrecedesTilde": "≾",&#xD;	"preceq": "⪯",&#xD;	"precnapprox": "⪹",&#xD;	"precneqq": "⪵",&#xD;	"precnsim": "⋨",&#xD;	"pre": "⪯",&#xD;	"prE": "⪳",&#xD;	"precsim": "≾",&#xD;	"prime": "′",&#xD;	"Prime": "″",&#xD;	"primes": "ℙ",&#xD;	"prnap": "⪹",&#xD;	"prnE": "⪵",&#xD;	"prnsim": "⋨",&#xD;	"prod": "∏",&#xD;	"Product": "∏",&#xD;	"profalar": "⌮",&#xD;	"profline": "⌒",&#xD;	"profsurf": "⌓",&#xD;	"prop": "∝",&#xD;	"Proportional": "∝",&#xD;	"Proportion": "∷",&#xD;	"propto": "∝",&#xD;	"prsim": "≾",&#xD;	"prurel": "⊰",&#xD;	"Pscr": "𝒫",&#xD;	"pscr": "𝓅",&#xD;	"Psi": "Ψ",&#xD;	"psi": "ψ",&#xD;	"puncsp": " ",&#xD;	"Qfr": "𝔔",&#xD;	"qfr": "𝔮",&#xD;	"qint": "⨌",&#xD;	"qopf": "𝕢",&#xD;	"Qopf": "ℚ",&#xD;	"qprime": "⁗",&#xD;	"Qscr": "𝒬",&#xD;	"qscr": "𝓆",&#xD;	"quaternions": "ℍ",&#xD;	"quatint": "⨖",&#xD;	"quest": "?",&#xD;	"questeq": "≟",&#xD;	"quot": "\"",&#xD;	"QUOT": "\"",&#xD;	"rAarr": "⇛",&#xD;	"race": "∽̱",&#xD;	"Racute": "Ŕ",&#xD;	"racute": "ŕ",&#xD;	"radic": "√",&#xD;	"raemptyv": "⦳",&#xD;	"rang": "⟩",&#xD;	"Rang": "⟫",&#xD;	"rangd": "⦒",&#xD;	"range": "⦥",&#xD;	"rangle": "⟩",&#xD;	"raquo": "»",&#xD;	"rarrap": "⥵",&#xD;	"rarrb": "⇥",&#xD;	"rarrbfs": "⤠",&#xD;	"rarrc": "⤳",&#xD;	"rarr": "→",&#xD;	"Rarr": "↠",&#xD;	"rArr": "⇒",&#xD;	"rarrfs": "⤞",&#xD;	"rarrhk": "↪",&#xD;	"rarrlp": "↬",&#xD;	"rarrpl": "⥅",&#xD;	"rarrsim": "⥴",&#xD;	"Rarrtl": "⤖",&#xD;	"rarrtl": "↣",&#xD;	"rarrw": "↝",&#xD;	"ratail": "⤚",&#xD;	"rAtail": "⤜",&#xD;	"ratio": "∶",&#xD;	"rationals": "ℚ",&#xD;	"rbarr": "⤍",&#xD;	"rBarr": "⤏",&#xD;	"RBarr": "⤐",&#xD;	"rbbrk": "❳",&#xD;	"rbrace": "}",&#xD;	"rbrack": "]",&#xD;	"rbrke": "⦌",&#xD;	"rbrksld": "⦎",&#xD;	"rbrkslu": "⦐",&#xD;	"Rcaron": "Ř",&#xD;	"rcaron": "ř",&#xD;	"Rcedil": "Ŗ",&#xD;	"rcedil": "ŗ",&#xD;	"rceil": "⌉",&#xD;	"rcub": "}",&#xD;	"Rcy": "Р",&#xD;	"rcy": "р",&#xD;	"rdca": "⤷",&#xD;	"rdldhar": "⥩",&#xD;	"rdquo": "”",&#xD;	"rdquor": "”",&#xD;	"rdsh": "↳",&#xD;	"real": "ℜ",&#xD;	"realine": "ℛ",&#xD;	"realpart": "ℜ",&#xD;	"reals": "ℝ",&#xD;	"Re": "ℜ",&#xD;	"rect": "▭",&#xD;	"reg": "®",&#xD;	"REG": "®",&#xD;	"ReverseElement": "∋",&#xD;	"ReverseEquilibrium": "⇋",&#xD;	"ReverseUpEquilibrium": "⥯",&#xD;	"rfisht": "⥽",&#xD;	"rfloor": "⌋",&#xD;	"rfr": "𝔯",&#xD;	"Rfr": "ℜ",&#xD;	"rHar": "⥤",&#xD;	"rhard": "⇁",&#xD;	"rharu": "⇀",&#xD;	"rharul": "⥬",&#xD;	"Rho": "Ρ",&#xD;	"rho": "ρ",&#xD;	"rhov": "ϱ",&#xD;	"RightAngleBracket": "⟩",&#xD;	"RightArrowBar": "⇥",&#xD;	"rightarrow": "→",&#xD;	"RightArrow": "→",&#xD;	"Rightarrow": "⇒",&#xD;	"RightArrowLeftArrow": "⇄",&#xD;	"rightarrowtail": "↣",&#xD;	"RightCeiling": "⌉",&#xD;	"RightDoubleBracket": "⟧",&#xD;	"RightDownTeeVector": "⥝",&#xD;	"RightDownVectorBar": "⥕",&#xD;	"RightDownVector": "⇂",&#xD;	"RightFloor": "⌋",&#xD;	"rightharpoondown": "⇁",&#xD;	"rightharpoonup": "⇀",&#xD;	"rightleftarrows": "⇄",&#xD;	"rightleftharpoons": "⇌",&#xD;	"rightrightarrows": "⇉",&#xD;	"rightsquigarrow": "↝",&#xD;	"RightTeeArrow": "↦",&#xD;	"RightTee": "⊢",&#xD;	"RightTeeVector": "⥛",&#xD;	"rightthreetimes": "⋌",&#xD;	"RightTriangleBar": "⧐",&#xD;	"RightTriangle": "⊳",&#xD;	"RightTriangleEqual": "⊵",&#xD;	"RightUpDownVector": "⥏",&#xD;	"RightUpTeeVector": "⥜",&#xD;	"RightUpVectorBar": "⥔",&#xD;	"RightUpVector": "↾",&#xD;	"RightVectorBar": "⥓",&#xD;	"RightVector": "⇀",&#xD;	"ring": "˚",&#xD;	"risingdotseq": "≓",&#xD;	"rlarr": "⇄",&#xD;	"rlhar": "⇌",&#xD;	"rlm": "‏",&#xD;	"rmoustache": "⎱",&#xD;	"rmoust": "⎱",&#xD;	"rnmid": "⫮",&#xD;	"roang": "⟭",&#xD;	"roarr": "⇾",&#xD;	"robrk": "⟧",&#xD;	"ropar": "⦆",&#xD;	"ropf": "𝕣",&#xD;	"Ropf": "ℝ",&#xD;	"roplus": "⨮",&#xD;	"rotimes": "⨵",&#xD;	"RoundImplies": "⥰",&#xD;	"rpar": ")",&#xD;	"rpargt": "⦔",&#xD;	"rppolint": "⨒",&#xD;	"rrarr": "⇉",&#xD;	"Rrightarrow": "⇛",&#xD;	"rsaquo": "›",&#xD;	"rscr": "𝓇",&#xD;	"Rscr": "ℛ",&#xD;	"rsh": "↱",&#xD;	"Rsh": "↱",&#xD;	"rsqb": "]",&#xD;	"rsquo": "’",&#xD;	"rsquor": "’",&#xD;	"rthree": "⋌",&#xD;	"rtimes": "⋊",&#xD;	"rtri": "▹",&#xD;	"rtrie": "⊵",&#xD;	"rtrif": "▸",&#xD;	"rtriltri": "⧎",&#xD;	"RuleDelayed": "⧴",&#xD;	"ruluhar": "⥨",&#xD;	"rx": "℞",&#xD;	"Sacute": "Ś",&#xD;	"sacute": "ś",&#xD;	"sbquo": "‚",&#xD;	"scap": "⪸",&#xD;	"Scaron": "Š",&#xD;	"scaron": "š",&#xD;	"Sc": "⪼",&#xD;	"sc": "≻",&#xD;	"sccue": "≽",&#xD;	"sce": "⪰",&#xD;	"scE": "⪴",&#xD;	"Scedil": "Ş",&#xD;	"scedil": "ş",&#xD;	"Scirc": "Ŝ",&#xD;	"scirc": "ŝ",&#xD;	"scnap": "⪺",&#xD;	"scnE": "⪶",&#xD;	"scnsim": "⋩",&#xD;	"scpolint": "⨓",&#xD;	"scsim": "≿",&#xD;	"Scy": "С",&#xD;	"scy": "с",&#xD;	"sdotb": "⊡",&#xD;	"sdot": "⋅",&#xD;	"sdote": "⩦",&#xD;	"searhk": "⤥",&#xD;	"searr": "↘",&#xD;	"seArr": "⇘",&#xD;	"searrow": "↘",&#xD;	"sect": "§",&#xD;	"semi": ";",&#xD;	"seswar": "⤩",&#xD;	"setminus": "∖",&#xD;	"setmn": "∖",&#xD;	"sext": "✶",&#xD;	"Sfr": "𝔖",&#xD;	"sfr": "𝔰",&#xD;	"sfrown": "⌢",&#xD;	"sharp": "♯",&#xD;	"SHCHcy": "Щ",&#xD;	"shchcy": "щ",&#xD;	"SHcy": "Ш",&#xD;	"shcy": "ш",&#xD;	"ShortDownArrow": "↓",&#xD;	"ShortLeftArrow": "←",&#xD;	"shortmid": "∣",&#xD;	"shortparallel": "∥",&#xD;	"ShortRightArrow": "→",&#xD;	"ShortUpArrow": "↑",&#xD;	"shy": "­",&#xD;	"Sigma": "Σ",&#xD;	"sigma": "σ",&#xD;	"sigmaf": "ς",&#xD;	"sigmav": "ς",&#xD;	"sim": "∼",&#xD;	"simdot": "⩪",&#xD;	"sime": "≃",&#xD;	"simeq": "≃",&#xD;	"simg": "⪞",&#xD;	"simgE": "⪠",&#xD;	"siml": "⪝",&#xD;	"simlE": "⪟",&#xD;	"simne": "≆",&#xD;	"simplus": "⨤",&#xD;	"simrarr": "⥲",&#xD;	"slarr": "←",&#xD;	"SmallCircle": "∘",&#xD;	"smallsetminus": "∖",&#xD;	"smashp": "⨳",&#xD;	"smeparsl": "⧤",&#xD;	"smid": "∣",&#xD;	"smile": "⌣",&#xD;	"smt": "⪪",&#xD;	"smte": "⪬",&#xD;	"smtes": "⪬︀",&#xD;	"SOFTcy": "Ь",&#xD;	"softcy": "ь",&#xD;	"solbar": "⌿",&#xD;	"solb": "⧄",&#xD;	"sol": "/",&#xD;	"Sopf": "𝕊",&#xD;	"sopf": "𝕤",&#xD;	"spades": "♠",&#xD;	"spadesuit": "♠",&#xD;	"spar": "∥",&#xD;	"sqcap": "⊓",&#xD;	"sqcaps": "⊓︀",&#xD;	"sqcup": "⊔",&#xD;	"sqcups": "⊔︀",&#xD;	"Sqrt": "√",&#xD;	"sqsub": "⊏",&#xD;	"sqsube": "⊑",&#xD;	"sqsubset": "⊏",&#xD;	"sqsubseteq": "⊑",&#xD;	"sqsup": "⊐",&#xD;	"sqsupe": "⊒",&#xD;	"sqsupset": "⊐",&#xD;	"sqsupseteq": "⊒",&#xD;	"square": "□",&#xD;	"Square": "□",&#xD;	"SquareIntersection": "⊓",&#xD;	"SquareSubset": "⊏",&#xD;	"SquareSubsetEqual": "⊑",&#xD;	"SquareSuperset": "⊐",&#xD;	"SquareSupersetEqual": "⊒",&#xD;	"SquareUnion": "⊔",&#xD;	"squarf": "▪",&#xD;	"squ": "□",&#xD;	"squf": "▪",&#xD;	"srarr": "→",&#xD;	"Sscr": "𝒮",&#xD;	"sscr": "𝓈",&#xD;	"ssetmn": "∖",&#xD;	"ssmile": "⌣",&#xD;	"sstarf": "⋆",&#xD;	"Star": "⋆",&#xD;	"star": "☆",&#xD;	"starf": "★",&#xD;	"straightepsilon": "ϵ",&#xD;	"straightphi": "ϕ",&#xD;	"strns": "¯",&#xD;	"sub": "⊂",&#xD;	"Sub": "⋐",&#xD;	"subdot": "⪽",&#xD;	"subE": "⫅",&#xD;	"sube": "⊆",&#xD;	"subedot": "⫃",&#xD;	"submult": "⫁",&#xD;	"subnE": "⫋",&#xD;	"subne": "⊊",&#xD;	"subplus": "⪿",&#xD;	"subrarr": "⥹",&#xD;	"subset": "⊂",&#xD;	"Subset": "⋐",&#xD;	"subseteq": "⊆",&#xD;	"subseteqq": "⫅",&#xD;	"SubsetEqual": "⊆",&#xD;	"subsetneq": "⊊",&#xD;	"subsetneqq": "⫋",&#xD;	"subsim": "⫇",&#xD;	"subsub": "⫕",&#xD;	"subsup": "⫓",&#xD;	"succapprox": "⪸",&#xD;	"succ": "≻",&#xD;	"succcurlyeq": "≽",&#xD;	"Succeeds": "≻",&#xD;	"SucceedsEqual": "⪰",&#xD;	"SucceedsSlantEqual": "≽",&#xD;	"SucceedsTilde": "≿",&#xD;	"succeq": "⪰",&#xD;	"succnapprox": "⪺",&#xD;	"succneqq": "⪶",&#xD;	"succnsim": "⋩",&#xD;	"succsim": "≿",&#xD;	"SuchThat": "∋",&#xD;	"sum": "∑",&#xD;	"Sum": "∑",&#xD;	"sung": "♪",&#xD;	"sup1": "¹",&#xD;	"sup2": "²",&#xD;	"sup3": "³",&#xD;	"sup": "⊃",&#xD;	"Sup": "⋑",&#xD;	"supdot": "⪾",&#xD;	"supdsub": "⫘",&#xD;	"supE": "⫆",&#xD;	"supe": "⊇",&#xD;	"supedot": "⫄",&#xD;	"Superset": "⊃",&#xD;	"SupersetEqual": "⊇",&#xD;	"suphsol": "⟉",&#xD;	"suphsub": "⫗",&#xD;	"suplarr": "⥻",&#xD;	"supmult": "⫂",&#xD;	"supnE": "⫌",&#xD;	"supne": "⊋",&#xD;	"supplus": "⫀",&#xD;	"supset": "⊃",&#xD;	"Supset": "⋑",&#xD;	"supseteq": "⊇",&#xD;	"supseteqq": "⫆",&#xD;	"supsetneq": "⊋",&#xD;	"supsetneqq": "⫌",&#xD;	"supsim": "⫈",&#xD;	"supsub": "⫔",&#xD;	"supsup": "⫖",&#xD;	"swarhk": "⤦",&#xD;	"swarr": "↙",&#xD;	"swArr": "⇙",&#xD;	"swarrow": "↙",&#xD;	"swnwar": "⤪",&#xD;	"szlig": "ß",&#xD;	"Tab": "\t",&#xD;	"target": "⌖",&#xD;	"Tau": "Τ",&#xD;	"tau": "τ",&#xD;	"tbrk": "⎴",&#xD;	"Tcaron": "Ť",&#xD;	"tcaron": "ť",&#xD;	"Tcedil": "Ţ",&#xD;	"tcedil": "ţ",&#xD;	"Tcy": "Т",&#xD;	"tcy": "т",&#xD;	"tdot": "⃛",&#xD;	"telrec": "⌕",&#xD;	"Tfr": "𝔗",&#xD;	"tfr": "𝔱",&#xD;	"there4": "∴",&#xD;	"therefore": "∴",&#xD;	"Therefore": "∴",&#xD;	"Theta": "Θ",&#xD;	"theta": "θ",&#xD;	"thetasym": "ϑ",&#xD;	"thetav": "ϑ",&#xD;	"thickapprox": "≈",&#xD;	"thicksim": "∼",&#xD;	"ThickSpace": "  ",&#xD;	"ThinSpace": " ",&#xD;	"thinsp": " ",&#xD;	"thkap": "≈",&#xD;	"thksim": "∼",&#xD;	"THORN": "Þ",&#xD;	"thorn": "þ",&#xD;	"tilde": "˜",&#xD;	"Tilde": "∼",&#xD;	"TildeEqual": "≃",&#xD;	"TildeFullEqual": "≅",&#xD;	"TildeTilde": "≈",&#xD;	"timesbar": "⨱",&#xD;	"timesb": "⊠",&#xD;	"times": "×",&#xD;	"timesd": "⨰",&#xD;	"tint": "∭",&#xD;	"toea": "⤨",&#xD;	"topbot": "⌶",&#xD;	"topcir": "⫱",&#xD;	"top": "⊤",&#xD;	"Topf": "𝕋",&#xD;	"topf": "𝕥",&#xD;	"topfork": "⫚",&#xD;	"tosa": "⤩",&#xD;	"tprime": "‴",&#xD;	"trade": "™",&#xD;	"TRADE": "™",&#xD;	"triangle": "▵",&#xD;	"triangledown": "▿",&#xD;	"triangleleft": "◃",&#xD;	"trianglelefteq": "⊴",&#xD;	"triangleq": "≜",&#xD;	"triangleright": "▹",&#xD;	"trianglerighteq": "⊵",&#xD;	"tridot": "◬",&#xD;	"trie": "≜",&#xD;	"triminus": "⨺",&#xD;	"TripleDot": "⃛",&#xD;	"triplus": "⨹",&#xD;	"trisb": "⧍",&#xD;	"tritime": "⨻",&#xD;	"trpezium": "⏢",&#xD;	"Tscr": "𝒯",&#xD;	"tscr": "𝓉",&#xD;	"TScy": "Ц",&#xD;	"tscy": "ц",&#xD;	"TSHcy": "Ћ",&#xD;	"tshcy": "ћ",&#xD;	"Tstrok": "Ŧ",&#xD;	"tstrok": "ŧ",&#xD;	"twixt": "≬",&#xD;	"twoheadleftarrow": "↞",&#xD;	"twoheadrightarrow": "↠",&#xD;	"Uacute": "Ú",&#xD;	"uacute": "ú",&#xD;	"uarr": "↑",&#xD;	"Uarr": "↟",&#xD;	"uArr": "⇑",&#xD;	"Uarrocir": "⥉",&#xD;	"Ubrcy": "Ў",&#xD;	"ubrcy": "ў",&#xD;	"Ubreve": "Ŭ",&#xD;	"ubreve": "ŭ",&#xD;	"Ucirc": "Û",&#xD;	"ucirc": "û",&#xD;	"Ucy": "У",&#xD;	"ucy": "у",&#xD;	"udarr": "⇅",&#xD;	"Udblac": "Ű",&#xD;	"udblac": "ű",&#xD;	"udhar": "⥮",&#xD;	"ufisht": "⥾",&#xD;	"Ufr": "𝔘",&#xD;	"ufr": "𝔲",&#xD;	"Ugrave": "Ù",&#xD;	"ugrave": "ù",&#xD;	"uHar": "⥣",&#xD;	"uharl": "↿",&#xD;	"uharr": "↾",&#xD;	"uhblk": "▀",&#xD;	"ulcorn": "⌜",&#xD;	"ulcorner": "⌜",&#xD;	"ulcrop": "⌏",&#xD;	"ultri": "◸",&#xD;	"Umacr": "Ū",&#xD;	"umacr": "ū",&#xD;	"uml": "¨",&#xD;	"UnderBar": "_",&#xD;	"UnderBrace": "⏟",&#xD;	"UnderBracket": "⎵",&#xD;	"UnderParenthesis": "⏝",&#xD;	"Union": "⋃",&#xD;	"UnionPlus": "⊎",&#xD;	"Uogon": "Ų",&#xD;	"uogon": "ų",&#xD;	"Uopf": "𝕌",&#xD;	"uopf": "𝕦",&#xD;	"UpArrowBar": "⤒",&#xD;	"uparrow": "↑",&#xD;	"UpArrow": "↑",&#xD;	"Uparrow": "⇑",&#xD;	"UpArrowDownArrow": "⇅",&#xD;	"updownarrow": "↕",&#xD;	"UpDownArrow": "↕",&#xD;	"Updownarrow": "⇕",&#xD;	"UpEquilibrium": "⥮",&#xD;	"upharpoonleft": "↿",&#xD;	"upharpoonright": "↾",&#xD;	"uplus": "⊎",&#xD;	"UpperLeftArrow": "↖",&#xD;	"UpperRightArrow": "↗",&#xD;	"upsi": "υ",&#xD;	"Upsi": "ϒ",&#xD;	"upsih": "ϒ",&#xD;	"Upsilon": "Υ",&#xD;	"upsilon": "υ",&#xD;	"UpTeeArrow": "↥",&#xD;	"UpTee": "⊥",&#xD;	"upuparrows": "⇈",&#xD;	"urcorn": "⌝",&#xD;	"urcorner": "⌝",&#xD;	"urcrop": "⌎",&#xD;	"Uring": "Ů",&#xD;	"uring": "ů",&#xD;	"urtri": "◹",&#xD;	"Uscr": "𝒰",&#xD;	"uscr": "𝓊",&#xD;	"utdot": "⋰",&#xD;	"Utilde": "Ũ",&#xD;	"utilde": "ũ",&#xD;	"utri": "▵",&#xD;	"utrif": "▴",&#xD;	"uuarr": "⇈",&#xD;	"Uuml": "Ü",&#xD;	"uuml": "ü",&#xD;	"uwangle": "⦧",&#xD;	"vangrt": "⦜",&#xD;	"varepsilon": "ϵ",&#xD;	"varkappa": "ϰ",&#xD;	"varnothing": "∅",&#xD;	"varphi": "ϕ",&#xD;	"varpi": "ϖ",&#xD;	"varpropto": "∝",&#xD;	"varr": "↕",&#xD;	"vArr": "⇕",&#xD;	"varrho": "ϱ",&#xD;	"varsigma": "ς",&#xD;	"varsubsetneq": "⊊︀",&#xD;	"varsubsetneqq": "⫋︀",&#xD;	"varsupsetneq": "⊋︀",&#xD;	"varsupsetneqq": "⫌︀",&#xD;	"vartheta": "ϑ",&#xD;	"vartriangleleft": "⊲",&#xD;	"vartriangleright": "⊳",&#xD;	"vBar": "⫨",&#xD;	"Vbar": "⫫",&#xD;	"vBarv": "⫩",&#xD;	"Vcy": "В",&#xD;	"vcy": "в",&#xD;	"vdash": "⊢",&#xD;	"vDash": "⊨",&#xD;	"Vdash": "⊩",&#xD;	"VDash": "⊫",&#xD;	"Vdashl": "⫦",&#xD;	"veebar": "⊻",&#xD;	"vee": "∨",&#xD;	"Vee": "⋁",&#xD;	"veeeq": "≚",&#xD;	"vellip": "⋮",&#xD;	"verbar": "|",&#xD;	"Verbar": "‖",&#xD;	"vert": "|",&#xD;	"Vert": "‖",&#xD;	"VerticalBar": "∣",&#xD;	"VerticalLine": "|",&#xD;	"VerticalSeparator": "❘",&#xD;	"VerticalTilde": "≀",&#xD;	"VeryThinSpace": " ",&#xD;	"Vfr": "𝔙",&#xD;	"vfr": "𝔳",&#xD;	"vltri": "⊲",&#xD;	"vnsub": "⊂⃒",&#xD;	"vnsup": "⊃⃒",&#xD;	"Vopf": "𝕍",&#xD;	"vopf": "𝕧",&#xD;	"vprop": "∝",&#xD;	"vrtri": "⊳",&#xD;	"Vscr": "𝒱",&#xD;	"vscr": "𝓋",&#xD;	"vsubnE": "⫋︀",&#xD;	"vsubne": "⊊︀",&#xD;	"vsupnE": "⫌︀",&#xD;	"vsupne": "⊋︀",&#xD;	"Vvdash": "⊪",&#xD;	"vzigzag": "⦚",&#xD;	"Wcirc": "Ŵ",&#xD;	"wcirc": "ŵ",&#xD;	"wedbar": "⩟",&#xD;	"wedge": "∧",&#xD;	"Wedge": "⋀",&#xD;	"wedgeq": "≙",&#xD;	"weierp": "℘",&#xD;	"Wfr": "𝔚",&#xD;	"wfr": "𝔴",&#xD;	"Wopf": "𝕎",&#xD;	"wopf": "𝕨",&#xD;	"wp": "℘",&#xD;	"wr": "≀",&#xD;	"wreath": "≀",&#xD;	"Wscr": "𝒲",&#xD;	"wscr": "𝓌",&#xD;	"xcap": "⋂",&#xD;	"xcirc": "◯",&#xD;	"xcup": "⋃",&#xD;	"xdtri": "▽",&#xD;	"Xfr": "𝔛",&#xD;	"xfr": "𝔵",&#xD;	"xharr": "⟷",&#xD;	"xhArr": "⟺",&#xD;	"Xi": "Ξ",&#xD;	"xi": "ξ",&#xD;	"xlarr": "⟵",&#xD;	"xlArr": "⟸",&#xD;	"xmap": "⟼",&#xD;	"xnis": "⋻",&#xD;	"xodot": "⨀",&#xD;	"Xopf": "𝕏",&#xD;	"xopf": "𝕩",&#xD;	"xoplus": "⨁",&#xD;	"xotime": "⨂",&#xD;	"xrarr": "⟶",&#xD;	"xrArr": "⟹",&#xD;	"Xscr": "𝒳",&#xD;	"xscr": "𝓍",&#xD;	"xsqcup": "⨆",&#xD;	"xuplus": "⨄",&#xD;	"xutri": "△",&#xD;	"xvee": "⋁",&#xD;	"xwedge": "⋀",&#xD;	"Yacute": "Ý",&#xD;	"yacute": "ý",&#xD;	"YAcy": "Я",&#xD;	"yacy": "я",&#xD;	"Ycirc": "Ŷ",&#xD;	"ycirc": "ŷ",&#xD;	"Ycy": "Ы",&#xD;	"ycy": "ы",&#xD;	"yen": "¥",&#xD;	"Yfr": "𝔜",&#xD;	"yfr": "𝔶",&#xD;	"YIcy": "Ї",&#xD;	"yicy": "ї",&#xD;	"Yopf": "𝕐",&#xD;	"yopf": "𝕪",&#xD;	"Yscr": "𝒴",&#xD;	"yscr": "𝓎",&#xD;	"YUcy": "Ю",&#xD;	"yucy": "ю",&#xD;	"yuml": "ÿ",&#xD;	"Yuml": "Ÿ",&#xD;	"Zacute": "Ź",&#xD;	"zacute": "ź",&#xD;	"Zcaron": "Ž",&#xD;	"zcaron": "ž",&#xD;	"Zcy": "З",&#xD;	"zcy": "з",&#xD;	"Zdot": "Ż",&#xD;	"zdot": "ż",&#xD;	"zeetrf": "ℨ",&#xD;	"ZeroWidthSpace": "​",&#xD;	"Zeta": "Ζ",&#xD;	"zeta": "ζ",&#xD;	"zfr": "𝔷",&#xD;	"Zfr": "ℨ",&#xD;	"ZHcy": "Ж",&#xD;	"zhcy": "ж",&#xD;	"zigrarr": "⇝",&#xD;	"zopf": "𝕫",&#xD;	"Zopf": "ℤ",&#xD;	"Zscr": "𝒵",&#xD;	"zscr": "𝓏",&#xD;	"zwj": "‍",&#xD;	"zwnj": "‌"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 25 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"amp": "&amp;",&#xD;	"apos": "&apos;",&#xD;	"gt": "&gt;",&#xD;	"lt": "&lt;",&#xD;	"quot": "\""&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 26 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;if (!process.version ||&#xD;    process.version.indexOf(&apos;v0.&apos;) === 0 ||&#xD;    process.version.indexOf(&apos;v1.&apos;) === 0 &amp;&amp; process.version.indexOf(&apos;v1.8.&apos;) !== 0) {&#xD;  module.exports = nextTick;&#xD;} else {&#xD;  module.exports = process.nextTick;&#xD;}&#xD;&#xD;function nextTick(fn, arg1, arg2, arg3) {&#xD;  if (typeof fn !== &apos;function&apos;) {&#xD;    throw new TypeError(&apos;"callback" argument must be a function&apos;);&#xD;  }&#xD;  var len = arguments.length;&#xD;  var args, i;&#xD;  switch (len) {&#xD;  case 0:&#xD;  case 1:&#xD;    return process.nextTick(fn);&#xD;  case 2:&#xD;    return process.nextTick(function afterTickOne() {&#xD;      fn.call(null, arg1);&#xD;    });&#xD;  case 3:&#xD;    return process.nextTick(function afterTickTwo() {&#xD;      fn.call(null, arg1, arg2);&#xD;    });&#xD;  case 4:&#xD;    return process.nextTick(function afterTickThree() {&#xD;      fn.call(null, arg1, arg2, arg3);&#xD;    });&#xD;  default:&#xD;    args = new Array(len - 1);&#xD;    i = 0;&#xD;    while (i &lt; args.length) {&#xD;      args[i++] = arguments[i];&#xD;    }&#xD;    return process.nextTick(function afterTick() {&#xD;      fn.apply(null, args);&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 27 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;var html = __webpack_require__(5);&#xD;&#xD;/**&#xD; * Convert a part of a mutation DOM to a mutation VM object, recursively.&#xD; * @param {object} dom DOM object for mutation tag.&#xD; * @return {object} Object representing useful parts of this mutation.&#xD; */&#xD;var mutatorTagToObject = function mutatorTagToObject(dom) {&#xD;    var obj = Object.create(null);&#xD;    obj.tagName = dom.name;&#xD;    obj.children = [];&#xD;    for (var prop in dom.attribs) {&#xD;        if (prop === &apos;xmlns&apos;) continue;&#xD;        obj[prop] = dom.attribs[prop];&#xD;    }&#xD;    for (var i = 0; i &lt; dom.children.length; i++) {&#xD;        obj.children.push(mutatorTagToObject(dom.children[i]));&#xD;    }&#xD;    return obj;&#xD;};&#xD;&#xD;/**&#xD; * Adapter between mutator XML or DOM and block representation which can be&#xD; * used by the Scratch runtime.&#xD; * @param {(object|string)} mutation Mutation XML string or DOM.&#xD; * @return {object} Object representing the mutation.&#xD; */&#xD;var mutationAdpater = function mutationAdpater(mutation) {&#xD;    var mutationParsed = void 0;&#xD;    // Check if the mutation is already parsed; if not, parse it.&#xD;    if ((typeof mutation === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(mutation)) === &apos;object&apos;) {&#xD;        mutationParsed = mutation;&#xD;    } else {&#xD;        mutationParsed = html.parseDOM(mutation)[0];&#xD;    }&#xD;    return mutatorTagToObject(mutationParsed);&#xD;};&#xD;&#xD;module.exports = mutationAdpater;&#xD;&#xD;/***/ }),&#xD;/* 28 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var RenderedTarget = __webpack_require__(22);&#xD;var Blocks = __webpack_require__(9);&#xD;&#xD;var Sprite = function () {&#xD;  /**&#xD;   * Sprite to be used on the Scratch stage.&#xD;   * All clones of a sprite have shared blocks, shared costumes, shared variables.&#xD;   * @param {?Blocks} blocks Shared blocks object for all clones of sprite.&#xD;   * @param {Runtime} runtime Reference to the runtime.&#xD;   * @constructor&#xD;   */&#xD;  function Sprite(blocks, runtime) {&#xD;    _classCallCheck(this, Sprite);&#xD;&#xD;    this.runtime = runtime;&#xD;    if (!blocks) {&#xD;      // Shared set of blocks for all clones.&#xD;      blocks = new Blocks();&#xD;    }&#xD;    this.blocks = blocks;&#xD;    /**&#xD;     * Human-readable name for this sprite (and all clones).&#xD;     * @type {string}&#xD;     */&#xD;    this.name = &apos;&apos;;&#xD;    /**&#xD;     * List of costumes for this sprite.&#xD;     * Each entry is an object, e.g.,&#xD;     * {&#xD;     *      skinId: 1,&#xD;     *      name: "Costume Name",&#xD;     *      bitmapResolution: 2,&#xD;     *      rotationCenterX: 0,&#xD;     *      rotationCenterY: 0&#xD;     * }&#xD;     * @type {Array.&lt;!Object&gt;}&#xD;     */&#xD;    this.costumes = [];&#xD;    /**&#xD;     * List of sounds for this sprite.&#xD;    */&#xD;    this.sounds = [];&#xD;    /**&#xD;     * List of clones for this sprite, including the original.&#xD;     * @type {Array.&lt;!RenderedTarget&gt;}&#xD;     */&#xD;    this.clones = [];&#xD;  }&#xD;&#xD;  /**&#xD;   * Create a clone of this sprite.&#xD;   * @returns {!RenderedTarget} Newly created clone.&#xD;   */&#xD;&#xD;&#xD;  _createClass(Sprite, [{&#xD;    key: &apos;createClone&apos;,&#xD;    value: function createClone() {&#xD;      var newClone = new RenderedTarget(this, this.runtime);&#xD;      newClone.isOriginal = this.clones.length === 0;&#xD;      this.clones.push(newClone);&#xD;      if (newClone.isOriginal) {&#xD;        newClone.initDrawable();&#xD;      }&#xD;      return newClone;&#xD;    }&#xD;  }]);&#xD;&#xD;  return Sprite;&#xD;}();&#xD;&#xD;module.exports = Sprite;&#xD;&#xD;/***/ }),&#xD;/* 29 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * Methods for cloning JavaScript objects.&#xD; * @type {object}&#xD; */&#xD;var Clone = function () {&#xD;  function Clone() {&#xD;    _classCallCheck(this, Clone);&#xD;  }&#xD;&#xD;  _createClass(Clone, null, [{&#xD;    key: "simple",&#xD;&#xD;    /**&#xD;     * Deep-clone a "simple" object: one which can be fully expressed with JSON.&#xD;     * Non-JSON values, such as functions, will be stripped from the clone.&#xD;     * @param {object} original - the object to be cloned.&#xD;     * @returns {object} a deep clone of the original object.&#xD;     */&#xD;    value: function simple(original) {&#xD;      return JSON.parse(JSON.stringify(original));&#xD;    }&#xD;  }]);&#xD;&#xD;  return Clone;&#xD;}();&#xD;&#xD;module.exports = Clone;&#xD;&#xD;/***/ }),&#xD;/* 30 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * @fileoverview UID generator, from Blockly.&#xD; */&#xD;&#xD;/**&#xD; * Legal characters for the unique ID.&#xD; * Should be all on a US keyboard.  No XML special characters or control codes.&#xD; * Removed $ due to issue 251.&#xD; * @private&#xD; */&#xD;var soup_ = &apos;!#%()*+,-./:;=?@[]^_`{|}&#126;&apos; + &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&apos;;&#xD;&#xD;/**&#xD; * Generate a unique ID, from Blockly.  This should be globally unique.&#xD; * 87 characters ^ 20 length &gt; 128 bits (better than a UUID).&#xD; * @return {string} A globally unique ID string.&#xD; */&#xD;var uid = function uid() {&#xD;  var length = 20;&#xD;  var soupLength = soup_.length;&#xD;  var id = [];&#xD;  for (var i = 0; i &lt; length; i++) {&#xD;    id[i] = soup_.charAt(Math.random() * soupLength);&#xD;  }&#xD;  return id.join(&apos;&apos;);&#xD;};&#xD;&#xD;module.exports = uid;&#xD;&#xD;/***/ }),&#xD;/* 31 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// This object will be used as the prototype for Nodes when creating a&#xD;// DOM-Level-1-compliant structure.&#xD;var NodePrototype = module.exports = {&#xD;	get firstChild() {&#xD;		var children = this.children;&#xD;		return children &amp;&amp; children[0] || null;&#xD;	},&#xD;	get lastChild() {&#xD;		var children = this.children;&#xD;		return children &amp;&amp; children[children.length - 1] || null;&#xD;	},&#xD;	get nodeType() {&#xD;		return nodeTypes[this.type] || nodeTypes.element;&#xD;	}&#xD;};&#xD;&#xD;var domLvl1 = {&#xD;	tagName: "name",&#xD;	childNodes: "children",&#xD;	parentNode: "parent",&#xD;	previousSibling: "prev",&#xD;	nextSibling: "next",&#xD;	nodeValue: "data"&#xD;};&#xD;&#xD;var nodeTypes = {&#xD;	element: 1,&#xD;	text: 3,&#xD;	cdata: 4,&#xD;	comment: 8&#xD;};&#xD;&#xD;Object.keys(domLvl1).forEach(function(key) {&#xD;	var shorthand = domLvl1[key];&#xD;	Object.defineProperty(NodePrototype, key, {&#xD;		get: function() {&#xD;			return this[shorthand] || null;&#xD;		},&#xD;		set: function(val) {&#xD;			this[shorthand] = val;&#xD;			return val;&#xD;		}&#xD;	});&#xD;});&#xD;&#xD;&#xD;/***/ }),&#xD;/* 32 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var decodeMap = __webpack_require__(83);&#xD;&#xD;module.exports = decodeCodePoint;&#xD;&#xD;// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119&#xD;function decodeCodePoint(codePoint){&#xD;&#xD;	if((codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDFFF) || codePoint &gt; 0x10FFFF){&#xD;		return "\uFFFD";&#xD;	}&#xD;&#xD;	if(codePoint in decodeMap){&#xD;		codePoint = decodeMap[codePoint];&#xD;	}&#xD;&#xD;	var output = "";&#xD;&#xD;	if(codePoint &gt; 0xFFFF){&#xD;		codePoint -= 0x10000;&#xD;		output += String.fromCharCode(codePoint &gt;&gt;&gt; 10 &amp; 0x3FF | 0xD800);&#xD;		codePoint = 0xDC00 | codePoint &amp; 0x3FF;&#xD;	}&#xD;&#xD;	output += String.fromCharCode(codePoint);&#xD;	return output;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 33 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"Aacute": "Á",&#xD;	"aacute": "á",&#xD;	"Acirc": "Â",&#xD;	"acirc": "â",&#xD;	"acute": "´",&#xD;	"AElig": "Æ",&#xD;	"aelig": "æ",&#xD;	"Agrave": "À",&#xD;	"agrave": "à",&#xD;	"amp": "&amp;",&#xD;	"AMP": "&amp;",&#xD;	"Aring": "Å",&#xD;	"aring": "å",&#xD;	"Atilde": "Ã",&#xD;	"atilde": "ã",&#xD;	"Auml": "Ä",&#xD;	"auml": "ä",&#xD;	"brvbar": "¦",&#xD;	"Ccedil": "Ç",&#xD;	"ccedil": "ç",&#xD;	"cedil": "¸",&#xD;	"cent": "¢",&#xD;	"copy": "©",&#xD;	"COPY": "©",&#xD;	"curren": "¤",&#xD;	"deg": "°",&#xD;	"divide": "÷",&#xD;	"Eacute": "É",&#xD;	"eacute": "é",&#xD;	"Ecirc": "Ê",&#xD;	"ecirc": "ê",&#xD;	"Egrave": "È",&#xD;	"egrave": "è",&#xD;	"ETH": "Ð",&#xD;	"eth": "ð",&#xD;	"Euml": "Ë",&#xD;	"euml": "ë",&#xD;	"frac12": "½",&#xD;	"frac14": "¼",&#xD;	"frac34": "¾",&#xD;	"gt": "&gt;",&#xD;	"GT": "&gt;",&#xD;	"Iacute": "Í",&#xD;	"iacute": "í",&#xD;	"Icirc": "Î",&#xD;	"icirc": "î",&#xD;	"iexcl": "¡",&#xD;	"Igrave": "Ì",&#xD;	"igrave": "ì",&#xD;	"iquest": "¿",&#xD;	"Iuml": "Ï",&#xD;	"iuml": "ï",&#xD;	"laquo": "«",&#xD;	"lt": "&lt;",&#xD;	"LT": "&lt;",&#xD;	"macr": "¯",&#xD;	"micro": "µ",&#xD;	"middot": "·",&#xD;	"nbsp": " ",&#xD;	"not": "¬",&#xD;	"Ntilde": "Ñ",&#xD;	"ntilde": "ñ",&#xD;	"Oacute": "Ó",&#xD;	"oacute": "ó",&#xD;	"Ocirc": "Ô",&#xD;	"ocirc": "ô",&#xD;	"Ograve": "Ò",&#xD;	"ograve": "ò",&#xD;	"ordf": "ª",&#xD;	"ordm": "º",&#xD;	"Oslash": "Ø",&#xD;	"oslash": "ø",&#xD;	"Otilde": "Õ",&#xD;	"otilde": "õ",&#xD;	"Ouml": "Ö",&#xD;	"ouml": "ö",&#xD;	"para": "¶",&#xD;	"plusmn": "±",&#xD;	"pound": "£",&#xD;	"quot": "\"",&#xD;	"QUOT": "\"",&#xD;	"raquo": "»",&#xD;	"reg": "®",&#xD;	"REG": "®",&#xD;	"sect": "§",&#xD;	"shy": "­",&#xD;	"sup1": "¹",&#xD;	"sup2": "²",&#xD;	"sup3": "³",&#xD;	"szlig": "ß",&#xD;	"THORN": "Þ",&#xD;	"thorn": "þ",&#xD;	"times": "×",&#xD;	"Uacute": "Ú",&#xD;	"uacute": "ú",&#xD;	"Ucirc": "Û",&#xD;	"ucirc": "û",&#xD;	"Ugrave": "Ù",&#xD;	"ugrave": "ù",&#xD;	"uml": "¨",&#xD;	"Uuml": "Ü",&#xD;	"uuml": "ü",&#xD;	"Yacute": "Ý",&#xD;	"yacute": "ý",&#xD;	"yen": "¥",&#xD;	"yuml": "ÿ"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 34 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Tokenizer = __webpack_require__(35);&#xD;&#xD;/*&#xD;	Options:&#xD;&#xD;	xmlMode: Disables the special behavior for script/style tags (false by default)&#xD;	lowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)&#xD;	lowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)&#xD;*/&#xD;&#xD;/*&#xD;	Callbacks:&#xD;&#xD;	oncdataend,&#xD;	oncdatastart,&#xD;	onclosetag,&#xD;	oncomment,&#xD;	oncommentend,&#xD;	onerror,&#xD;	onopentag,&#xD;	onprocessinginstruction,&#xD;	onreset,&#xD;	ontext&#xD;*/&#xD;&#xD;var formTags = {&#xD;	input: true,&#xD;	option: true,&#xD;	optgroup: true,&#xD;	select: true,&#xD;	button: true,&#xD;	datalist: true,&#xD;	textarea: true&#xD;};&#xD;&#xD;var openImpliesClose = {&#xD;	tr      : { tr:true, th:true, td:true },&#xD;	th      : { th:true },&#xD;	td      : { thead:true, th:true, td:true },&#xD;	body    : { head:true, link:true, script:true },&#xD;	li      : { li:true },&#xD;	p       : { p:true },&#xD;	h1      : { p:true },&#xD;	h2      : { p:true },&#xD;	h3      : { p:true },&#xD;	h4      : { p:true },&#xD;	h5      : { p:true },&#xD;	h6      : { p:true },&#xD;	select  : formTags,&#xD;	input   : formTags,&#xD;	output  : formTags,&#xD;	button  : formTags,&#xD;	datalist: formTags,&#xD;	textarea: formTags,&#xD;	option  : { option:true },&#xD;	optgroup: { optgroup:true }&#xD;};&#xD;&#xD;var voidElements = {&#xD;	__proto__: null,&#xD;	area: true,&#xD;	base: true,&#xD;	basefont: true,&#xD;	br: true,&#xD;	col: true,&#xD;	command: true,&#xD;	embed: true,&#xD;	frame: true,&#xD;	hr: true,&#xD;	img: true,&#xD;	input: true,&#xD;	isindex: true,&#xD;	keygen: true,&#xD;	link: true,&#xD;	meta: true,&#xD;	param: true,&#xD;	source: true,&#xD;	track: true,&#xD;	wbr: true,&#xD;&#xD;	//common self closing svg elements&#xD;	path: true,&#xD;	circle: true,&#xD;	ellipse: true,&#xD;	line: true,&#xD;	rect: true,&#xD;	use: true,&#xD;	stop: true,&#xD;	polyline: true,&#xD;	polygon: true&#xD;};&#xD;&#xD;var re_nameEnd = /\s|\//;&#xD;&#xD;function Parser(cbs, options){&#xD;	this._options = options || {};&#xD;	this._cbs = cbs || {};&#xD;&#xD;	this._tagname = "";&#xD;	this._attribname = "";&#xD;	this._attribvalue = "";&#xD;	this._attribs = null;&#xD;	this._stack = [];&#xD;&#xD;	this.startIndex = 0;&#xD;	this.endIndex = null;&#xD;&#xD;	this._lowerCaseTagNames = "lowerCaseTags" in this._options ?&#xD;									!!this._options.lowerCaseTags :&#xD;									!this._options.xmlMode;&#xD;	this._lowerCaseAttributeNames = "lowerCaseAttributeNames" in this._options ?&#xD;									!!this._options.lowerCaseAttributeNames :&#xD;									!this._options.xmlMode;&#xD;&#xD;	if(this._options.Tokenizer) {&#xD;		Tokenizer = this._options.Tokenizer;&#xD;	}&#xD;	this._tokenizer = new Tokenizer(this._options, this);&#xD;&#xD;	if(this._cbs.onparserinit) this._cbs.onparserinit(this);&#xD;}&#xD;&#xD;__webpack_require__(2)(Parser, __webpack_require__(12).EventEmitter);&#xD;&#xD;Parser.prototype._updatePosition = function(initialOffset){&#xD;	if(this.endIndex === null){&#xD;		if(this._tokenizer._sectionStart &lt;= initialOffset){&#xD;			this.startIndex = 0;&#xD;		} else {&#xD;			this.startIndex = this._tokenizer._sectionStart - initialOffset;&#xD;		}&#xD;	}&#xD;	else this.startIndex = this.endIndex + 1;&#xD;	this.endIndex = this._tokenizer.getAbsoluteIndex();&#xD;};&#xD;&#xD;//Tokenizer event handlers&#xD;Parser.prototype.ontext = function(data){&#xD;	this._updatePosition(1);&#xD;	this.endIndex--;&#xD;&#xD;	if(this._cbs.ontext) this._cbs.ontext(data);&#xD;};&#xD;&#xD;Parser.prototype.onopentagname = function(name){&#xD;	if(this._lowerCaseTagNames){&#xD;		name = name.toLowerCase();&#xD;	}&#xD;&#xD;	this._tagname = name;&#xD;&#xD;	if(!this._options.xmlMode &amp;&amp; name in openImpliesClose) {&#xD;		for(&#xD;			var el;&#xD;			(el = this._stack[this._stack.length - 1]) in openImpliesClose[name];&#xD;			this.onclosetag(el)&#xD;		);&#xD;	}&#xD;&#xD;	if(this._options.xmlMode || !(name in voidElements)){&#xD;		this._stack.push(name);&#xD;	}&#xD;&#xD;	if(this._cbs.onopentagname) this._cbs.onopentagname(name);&#xD;	if(this._cbs.onopentag) this._attribs = {};&#xD;};&#xD;&#xD;Parser.prototype.onopentagend = function(){&#xD;	this._updatePosition(1);&#xD;&#xD;	if(this._attribs){&#xD;		if(this._cbs.onopentag) this._cbs.onopentag(this._tagname, this._attribs);&#xD;		this._attribs = null;&#xD;	}&#xD;&#xD;	if(!this._options.xmlMode &amp;&amp; this._cbs.onclosetag &amp;&amp; this._tagname in voidElements){&#xD;		this._cbs.onclosetag(this._tagname);&#xD;	}&#xD;&#xD;	this._tagname = "";&#xD;};&#xD;&#xD;Parser.prototype.onclosetag = function(name){&#xD;	this._updatePosition(1);&#xD;&#xD;	if(this._lowerCaseTagNames){&#xD;		name = name.toLowerCase();&#xD;	}&#xD;&#xD;	if(this._stack.length &amp;&amp; (!(name in voidElements) || this._options.xmlMode)){&#xD;		var pos = this._stack.lastIndexOf(name);&#xD;		if(pos !== -1){&#xD;			if(this._cbs.onclosetag){&#xD;				pos = this._stack.length - pos;&#xD;				while(pos--) this._cbs.onclosetag(this._stack.pop());&#xD;			}&#xD;			else this._stack.length = pos;&#xD;		} else if(name === "p" &amp;&amp; !this._options.xmlMode){&#xD;			this.onopentagname(name);&#xD;			this._closeCurrentTag();&#xD;		}&#xD;	} else if(!this._options.xmlMode &amp;&amp; (name === "br" || name === "p")){&#xD;		this.onopentagname(name);&#xD;		this._closeCurrentTag();&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype.onselfclosingtag = function(){&#xD;	if(this._options.xmlMode || this._options.recognizeSelfClosing){&#xD;		this._closeCurrentTag();&#xD;	} else {&#xD;		this.onopentagend();&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype._closeCurrentTag = function(){&#xD;	var name = this._tagname;&#xD;&#xD;	this.onopentagend();&#xD;&#xD;	//self-closing tags will be on the top of the stack&#xD;	//(cheaper check than in onclosetag)&#xD;	if(this._stack[this._stack.length - 1] === name){&#xD;		if(this._cbs.onclosetag){&#xD;			this._cbs.onclosetag(name);&#xD;		}&#xD;		this._stack.pop();&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype.onattribname = function(name){&#xD;	if(this._lowerCaseAttributeNames){&#xD;		name = name.toLowerCase();&#xD;	}&#xD;	this._attribname = name;&#xD;};&#xD;&#xD;Parser.prototype.onattribdata = function(value){&#xD;	this._attribvalue += value;&#xD;};&#xD;&#xD;Parser.prototype.onattribend = function(){&#xD;	if(this._cbs.onattribute) this._cbs.onattribute(this._attribname, this._attribvalue);&#xD;	if(&#xD;		this._attribs &amp;&amp;&#xD;		!Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)&#xD;	){&#xD;		this._attribs[this._attribname] = this._attribvalue;&#xD;	}&#xD;	this._attribname = "";&#xD;	this._attribvalue = "";&#xD;};&#xD;&#xD;Parser.prototype._getInstructionName = function(value){&#xD;	var idx = value.search(re_nameEnd),&#xD;	    name = idx &lt; 0 ? value : value.substr(0, idx);&#xD;&#xD;	if(this._lowerCaseTagNames){&#xD;		name = name.toLowerCase();&#xD;	}&#xD;&#xD;	return name;&#xD;};&#xD;&#xD;Parser.prototype.ondeclaration = function(value){&#xD;	if(this._cbs.onprocessinginstruction){&#xD;		var name = this._getInstructionName(value);&#xD;		this._cbs.onprocessinginstruction("!" + name, "!" + value);&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype.onprocessinginstruction = function(value){&#xD;	if(this._cbs.onprocessinginstruction){&#xD;		var name = this._getInstructionName(value);&#xD;		this._cbs.onprocessinginstruction("?" + name, "?" + value);&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype.oncomment = function(value){&#xD;	this._updatePosition(4);&#xD;&#xD;	if(this._cbs.oncomment) this._cbs.oncomment(value);&#xD;	if(this._cbs.oncommentend) this._cbs.oncommentend();&#xD;};&#xD;&#xD;Parser.prototype.oncdata = function(value){&#xD;	this._updatePosition(1);&#xD;&#xD;	if(this._options.xmlMode || this._options.recognizeCDATA){&#xD;		if(this._cbs.oncdatastart) this._cbs.oncdatastart();&#xD;		if(this._cbs.ontext) this._cbs.ontext(value);&#xD;		if(this._cbs.oncdataend) this._cbs.oncdataend();&#xD;	} else {&#xD;		this.oncomment("[CDATA[" + value + "]]");&#xD;	}&#xD;};&#xD;&#xD;Parser.prototype.onerror = function(err){&#xD;	if(this._cbs.onerror) this._cbs.onerror(err);&#xD;};&#xD;&#xD;Parser.prototype.onend = function(){&#xD;	if(this._cbs.onclosetag){&#xD;		for(&#xD;			var i = this._stack.length;&#xD;			i &gt; 0;&#xD;			this._cbs.onclosetag(this._stack[--i])&#xD;		);&#xD;	}&#xD;	if(this._cbs.onend) this._cbs.onend();&#xD;};&#xD;&#xD;&#xD;//Resets the parser to a blank state, ready to parse a new HTML document&#xD;Parser.prototype.reset = function(){&#xD;	if(this._cbs.onreset) this._cbs.onreset();&#xD;	this._tokenizer.reset();&#xD;&#xD;	this._tagname = "";&#xD;	this._attribname = "";&#xD;	this._attribs = null;&#xD;	this._stack = [];&#xD;&#xD;	if(this._cbs.onparserinit) this._cbs.onparserinit(this);&#xD;};&#xD;&#xD;//Parses a complete HTML document and pushes it to the handler&#xD;Parser.prototype.parseComplete = function(data){&#xD;	this.reset();&#xD;	this.end(data);&#xD;};&#xD;&#xD;Parser.prototype.write = function(chunk){&#xD;	this._tokenizer.write(chunk);&#xD;};&#xD;&#xD;Parser.prototype.end = function(chunk){&#xD;	this._tokenizer.end(chunk);&#xD;};&#xD;&#xD;Parser.prototype.pause = function(){&#xD;	this._tokenizer.pause();&#xD;};&#xD;&#xD;Parser.prototype.resume = function(){&#xD;	this._tokenizer.resume();&#xD;};&#xD;&#xD;//alias for backwards compat&#xD;Parser.prototype.parseChunk = Parser.prototype.write;&#xD;Parser.prototype.done = Parser.prototype.end;&#xD;&#xD;module.exports = Parser;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 35 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = Tokenizer;&#xD;&#xD;var decodeCodePoint = __webpack_require__(32),&#xD;    entityMap = __webpack_require__(24),&#xD;    legacyMap = __webpack_require__(33),&#xD;    xmlMap    = __webpack_require__(25),&#xD;&#xD;    i = 0,&#xD;&#xD;    TEXT                      = i++,&#xD;    BEFORE_TAG_NAME           = i++, //after &lt;&#xD;    IN_TAG_NAME               = i++,&#xD;    IN_SELF_CLOSING_TAG       = i++,&#xD;    BEFORE_CLOSING_TAG_NAME   = i++,&#xD;    IN_CLOSING_TAG_NAME       = i++,&#xD;    AFTER_CLOSING_TAG_NAME    = i++,&#xD;&#xD;    //attributes&#xD;    BEFORE_ATTRIBUTE_NAME     = i++,&#xD;    IN_ATTRIBUTE_NAME         = i++,&#xD;    AFTER_ATTRIBUTE_NAME      = i++,&#xD;    BEFORE_ATTRIBUTE_VALUE    = i++,&#xD;    IN_ATTRIBUTE_VALUE_DQ     = i++, // "&#xD;    IN_ATTRIBUTE_VALUE_SQ     = i++, // &apos;&#xD;    IN_ATTRIBUTE_VALUE_NQ     = i++,&#xD;&#xD;    //declarations&#xD;    BEFORE_DECLARATION        = i++, // !&#xD;    IN_DECLARATION            = i++,&#xD;&#xD;    //processing instructions&#xD;    IN_PROCESSING_INSTRUCTION = i++, // ?&#xD;&#xD;    //comments&#xD;    BEFORE_COMMENT            = i++,&#xD;    IN_COMMENT                = i++,&#xD;    AFTER_COMMENT_1           = i++,&#xD;    AFTER_COMMENT_2           = i++,&#xD;&#xD;    //cdata&#xD;    BEFORE_CDATA_1            = i++, // [&#xD;    BEFORE_CDATA_2            = i++, // C&#xD;    BEFORE_CDATA_3            = i++, // D&#xD;    BEFORE_CDATA_4            = i++, // A&#xD;    BEFORE_CDATA_5            = i++, // T&#xD;    BEFORE_CDATA_6            = i++, // A&#xD;    IN_CDATA                  = i++, // [&#xD;    AFTER_CDATA_1             = i++, // ]&#xD;    AFTER_CDATA_2             = i++, // ]&#xD;&#xD;    //special tags&#xD;    BEFORE_SPECIAL            = i++, //S&#xD;    BEFORE_SPECIAL_END        = i++,   //S&#xD;&#xD;    BEFORE_SCRIPT_1           = i++, //C&#xD;    BEFORE_SCRIPT_2           = i++, //R&#xD;    BEFORE_SCRIPT_3           = i++, //I&#xD;    BEFORE_SCRIPT_4           = i++, //P&#xD;    BEFORE_SCRIPT_5           = i++, //T&#xD;    AFTER_SCRIPT_1            = i++, //C&#xD;    AFTER_SCRIPT_2            = i++, //R&#xD;    AFTER_SCRIPT_3            = i++, //I&#xD;    AFTER_SCRIPT_4            = i++, //P&#xD;    AFTER_SCRIPT_5            = i++, //T&#xD;&#xD;    BEFORE_STYLE_1            = i++, //T&#xD;    BEFORE_STYLE_2            = i++, //Y&#xD;    BEFORE_STYLE_3            = i++, //L&#xD;    BEFORE_STYLE_4            = i++, //E&#xD;    AFTER_STYLE_1             = i++, //T&#xD;    AFTER_STYLE_2             = i++, //Y&#xD;    AFTER_STYLE_3             = i++, //L&#xD;    AFTER_STYLE_4             = i++, //E&#xD;&#xD;    BEFORE_ENTITY             = i++, //&amp;&#xD;    BEFORE_NUMERIC_ENTITY     = i++, //#&#xD;    IN_NAMED_ENTITY           = i++,&#xD;    IN_NUMERIC_ENTITY         = i++,&#xD;    IN_HEX_ENTITY             = i++, //X&#xD;&#xD;    j = 0,&#xD;&#xD;    SPECIAL_NONE              = j++,&#xD;    SPECIAL_SCRIPT            = j++,&#xD;    SPECIAL_STYLE             = j++;&#xD;&#xD;function whitespace(c){&#xD;	return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";&#xD;}&#xD;&#xD;function characterState(char, SUCCESS){&#xD;	return function(c){&#xD;		if(c === char) this._state = SUCCESS;&#xD;	};&#xD;}&#xD;&#xD;function ifElseState(upper, SUCCESS, FAILURE){&#xD;	var lower = upper.toLowerCase();&#xD;&#xD;	if(upper === lower){&#xD;		return function(c){&#xD;			if(c === lower){&#xD;				this._state = SUCCESS;&#xD;			} else {&#xD;				this._state = FAILURE;&#xD;				this._index--;&#xD;			}&#xD;		};&#xD;	} else {&#xD;		return function(c){&#xD;			if(c === lower || c === upper){&#xD;				this._state = SUCCESS;&#xD;			} else {&#xD;				this._state = FAILURE;&#xD;				this._index--;&#xD;			}&#xD;		};&#xD;	}&#xD;}&#xD;&#xD;function consumeSpecialNameChar(upper, NEXT_STATE){&#xD;	var lower = upper.toLowerCase();&#xD;&#xD;	return function(c){&#xD;		if(c === lower || c === upper){&#xD;			this._state = NEXT_STATE;&#xD;		} else {&#xD;			this._state = IN_TAG_NAME;&#xD;			this._index--; //consume the token again&#xD;		}&#xD;	};&#xD;}&#xD;&#xD;function Tokenizer(options, cbs){&#xD;	this._state = TEXT;&#xD;	this._buffer = "";&#xD;	this._sectionStart = 0;&#xD;	this._index = 0;&#xD;	this._bufferOffset = 0; //chars removed from _buffer&#xD;	this._baseState = TEXT;&#xD;	this._special = SPECIAL_NONE;&#xD;	this._cbs = cbs;&#xD;	this._running = true;&#xD;	this._ended = false;&#xD;	this._xmlMode = !!(options &amp;&amp; options.xmlMode);&#xD;	this._decodeEntities = !!(options &amp;&amp; options.decodeEntities);&#xD;}&#xD;&#xD;Tokenizer.prototype._stateText = function(c){&#xD;	if(c === "&lt;"){&#xD;		if(this._index &gt; this._sectionStart){&#xD;			this._cbs.ontext(this._getSection());&#xD;		}&#xD;		this._state = BEFORE_TAG_NAME;&#xD;		this._sectionStart = this._index;&#xD;	} else if(this._decodeEntities &amp;&amp; this._special === SPECIAL_NONE &amp;&amp; c === "&amp;"){&#xD;		if(this._index &gt; this._sectionStart){&#xD;			this._cbs.ontext(this._getSection());&#xD;		}&#xD;		this._baseState = TEXT;&#xD;		this._state = BEFORE_ENTITY;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeTagName = function(c){&#xD;	if(c === "/"){&#xD;		this._state = BEFORE_CLOSING_TAG_NAME;&#xD;	} else if(c === "&lt;"){&#xD;		this._cbs.ontext(this._getSection());&#xD;		this._sectionStart = this._index;&#xD;	} else if(c === "&gt;" || this._special !== SPECIAL_NONE || whitespace(c)) {&#xD;		this._state = TEXT;&#xD;	} else if(c === "!"){&#xD;		this._state = BEFORE_DECLARATION;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(c === "?"){&#xD;		this._state = IN_PROCESSING_INSTRUCTION;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else {&#xD;		this._state = (!this._xmlMode &amp;&amp; (c === "s" || c === "S")) ?&#xD;						BEFORE_SPECIAL : IN_TAG_NAME;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInTagName = function(c){&#xD;	if(c === "/" || c === "&gt;" || whitespace(c)){&#xD;		this._emitToken("onopentagname");&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeCloseingTagName = function(c){&#xD;	if(whitespace(c));&#xD;	else if(c === "&gt;"){&#xD;		this._state = TEXT;&#xD;	} else if(this._special !== SPECIAL_NONE){&#xD;		if(c === "s" || c === "S"){&#xD;			this._state = BEFORE_SPECIAL_END;&#xD;		} else {&#xD;			this._state = TEXT;&#xD;			this._index--;&#xD;		}&#xD;	} else {&#xD;		this._state = IN_CLOSING_TAG_NAME;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInCloseingTagName = function(c){&#xD;	if(c === "&gt;" || whitespace(c)){&#xD;		this._emitToken("onclosetag");&#xD;		this._state = AFTER_CLOSING_TAG_NAME;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterCloseingTagName = function(c){&#xD;	//skip everything until "&gt;"&#xD;	if(c === "&gt;"){&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeAttributeName = function(c){&#xD;	if(c === "&gt;"){&#xD;		this._cbs.onopentagend();&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(c === "/"){&#xD;		this._state = IN_SELF_CLOSING_TAG;&#xD;	} else if(!whitespace(c)){&#xD;		this._state = IN_ATTRIBUTE_NAME;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInSelfClosingTag = function(c){&#xD;	if(c === "&gt;"){&#xD;		this._cbs.onselfclosingtag();&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(!whitespace(c)){&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInAttributeName = function(c){&#xD;	if(c === "=" || c === "/" || c === "&gt;" || whitespace(c)){&#xD;		this._cbs.onattribname(this._getSection());&#xD;		this._sectionStart = -1;&#xD;		this._state = AFTER_ATTRIBUTE_NAME;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterAttributeName = function(c){&#xD;	if(c === "="){&#xD;		this._state = BEFORE_ATTRIBUTE_VALUE;&#xD;	} else if(c === "/" || c === "&gt;"){&#xD;		this._cbs.onattribend();&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;		this._index--;&#xD;	} else if(!whitespace(c)){&#xD;		this._cbs.onattribend();&#xD;		this._state = IN_ATTRIBUTE_NAME;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeAttributeValue = function(c){&#xD;	if(c === "\""){&#xD;		this._state = IN_ATTRIBUTE_VALUE_DQ;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(c === "&apos;"){&#xD;		this._state = IN_ATTRIBUTE_VALUE_SQ;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(!whitespace(c)){&#xD;		this._state = IN_ATTRIBUTE_VALUE_NQ;&#xD;		this._sectionStart = this._index;&#xD;		this._index--; //reconsume token&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c){&#xD;	if(c === "\""){&#xD;		this._emitToken("onattribdata");&#xD;		this._cbs.onattribend();&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;	} else if(this._decodeEntities &amp;&amp; c === "&amp;"){&#xD;		this._emitToken("onattribdata");&#xD;		this._baseState = this._state;&#xD;		this._state = BEFORE_ENTITY;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInAttributeValueSingleQuotes = function(c){&#xD;	if(c === "&apos;"){&#xD;		this._emitToken("onattribdata");&#xD;		this._cbs.onattribend();&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;	} else if(this._decodeEntities &amp;&amp; c === "&amp;"){&#xD;		this._emitToken("onattribdata");&#xD;		this._baseState = this._state;&#xD;		this._state = BEFORE_ENTITY;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInAttributeValueNoQuotes = function(c){&#xD;	if(whitespace(c) || c === "&gt;"){&#xD;		this._emitToken("onattribdata");&#xD;		this._cbs.onattribend();&#xD;		this._state = BEFORE_ATTRIBUTE_NAME;&#xD;		this._index--;&#xD;	} else if(this._decodeEntities &amp;&amp; c === "&amp;"){&#xD;		this._emitToken("onattribdata");&#xD;		this._baseState = this._state;&#xD;		this._state = BEFORE_ENTITY;&#xD;		this._sectionStart = this._index;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeDeclaration = function(c){&#xD;	this._state = c === "[" ? BEFORE_CDATA_1 :&#xD;					c === "-" ? BEFORE_COMMENT :&#xD;						IN_DECLARATION;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInDeclaration = function(c){&#xD;	if(c === "&gt;"){&#xD;		this._cbs.ondeclaration(this._getSection());&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInProcessingInstruction = function(c){&#xD;	if(c === "&gt;"){&#xD;		this._cbs.onprocessinginstruction(this._getSection());&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeComment = function(c){&#xD;	if(c === "-"){&#xD;		this._state = IN_COMMENT;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else {&#xD;		this._state = IN_DECLARATION;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInComment = function(c){&#xD;	if(c === "-") this._state = AFTER_COMMENT_1;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterComment1 = function(c){&#xD;	if(c === "-"){&#xD;		this._state = AFTER_COMMENT_2;&#xD;	} else {&#xD;		this._state = IN_COMMENT;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterComment2 = function(c){&#xD;	if(c === "&gt;"){&#xD;		//remove 2 trailing chars&#xD;		this._cbs.oncomment(this._buffer.substring(this._sectionStart, this._index - 2));&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(c !== "-"){&#xD;		this._state = IN_COMMENT;&#xD;	}&#xD;	// else: stay in AFTER_COMMENT_2 (`---&gt;`)&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeCdata1 = ifElseState("C", BEFORE_CDATA_2, IN_DECLARATION);&#xD;Tokenizer.prototype._stateBeforeCdata2 = ifElseState("D", BEFORE_CDATA_3, IN_DECLARATION);&#xD;Tokenizer.prototype._stateBeforeCdata3 = ifElseState("A", BEFORE_CDATA_4, IN_DECLARATION);&#xD;Tokenizer.prototype._stateBeforeCdata4 = ifElseState("T", BEFORE_CDATA_5, IN_DECLARATION);&#xD;Tokenizer.prototype._stateBeforeCdata5 = ifElseState("A", BEFORE_CDATA_6, IN_DECLARATION);&#xD;&#xD;Tokenizer.prototype._stateBeforeCdata6 = function(c){&#xD;	if(c === "["){&#xD;		this._state = IN_CDATA;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else {&#xD;		this._state = IN_DECLARATION;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInCdata = function(c){&#xD;	if(c === "]") this._state = AFTER_CDATA_1;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterCdata1 = characterState("]", AFTER_CDATA_2);&#xD;&#xD;Tokenizer.prototype._stateAfterCdata2 = function(c){&#xD;	if(c === "&gt;"){&#xD;		//remove 2 trailing chars&#xD;		this._cbs.oncdata(this._buffer.substring(this._sectionStart, this._index - 2));&#xD;		this._state = TEXT;&#xD;		this._sectionStart = this._index + 1;&#xD;	} else if(c !== "]") {&#xD;		this._state = IN_CDATA;&#xD;	}&#xD;	//else: stay in AFTER_CDATA_2 (`]]]&gt;`)&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeSpecial = function(c){&#xD;	if(c === "c" || c === "C"){&#xD;		this._state = BEFORE_SCRIPT_1;&#xD;	} else if(c === "t" || c === "T"){&#xD;		this._state = BEFORE_STYLE_1;&#xD;	} else {&#xD;		this._state = IN_TAG_NAME;&#xD;		this._index--; //consume the token again&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeSpecialEnd = function(c){&#xD;	if(this._special === SPECIAL_SCRIPT &amp;&amp; (c === "c" || c === "C")){&#xD;		this._state = AFTER_SCRIPT_1;&#xD;	} else if(this._special === SPECIAL_STYLE &amp;&amp; (c === "t" || c === "T")){&#xD;		this._state = AFTER_STYLE_1;&#xD;	}&#xD;	else this._state = TEXT;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar("R", BEFORE_SCRIPT_2);&#xD;Tokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar("I", BEFORE_SCRIPT_3);&#xD;Tokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar("P", BEFORE_SCRIPT_4);&#xD;Tokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar("T", BEFORE_SCRIPT_5);&#xD;&#xD;Tokenizer.prototype._stateBeforeScript5 = function(c){&#xD;	if(c === "/" || c === "&gt;" || whitespace(c)){&#xD;		this._special = SPECIAL_SCRIPT;&#xD;	}&#xD;	this._state = IN_TAG_NAME;&#xD;	this._index--; //consume the token again&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterScript1 = ifElseState("R", AFTER_SCRIPT_2, TEXT);&#xD;Tokenizer.prototype._stateAfterScript2 = ifElseState("I", AFTER_SCRIPT_3, TEXT);&#xD;Tokenizer.prototype._stateAfterScript3 = ifElseState("P", AFTER_SCRIPT_4, TEXT);&#xD;Tokenizer.prototype._stateAfterScript4 = ifElseState("T", AFTER_SCRIPT_5, TEXT);&#xD;&#xD;Tokenizer.prototype._stateAfterScript5 = function(c){&#xD;	if(c === "&gt;" || whitespace(c)){&#xD;		this._special = SPECIAL_NONE;&#xD;		this._state = IN_CLOSING_TAG_NAME;&#xD;		this._sectionStart = this._index - 6;&#xD;		this._index--; //reconsume the token&#xD;	}&#xD;	else this._state = TEXT;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar("Y", BEFORE_STYLE_2);&#xD;Tokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar("L", BEFORE_STYLE_3);&#xD;Tokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar("E", BEFORE_STYLE_4);&#xD;&#xD;Tokenizer.prototype._stateBeforeStyle4 = function(c){&#xD;	if(c === "/" || c === "&gt;" || whitespace(c)){&#xD;		this._special = SPECIAL_STYLE;&#xD;	}&#xD;	this._state = IN_TAG_NAME;&#xD;	this._index--; //consume the token again&#xD;};&#xD;&#xD;Tokenizer.prototype._stateAfterStyle1 = ifElseState("Y", AFTER_STYLE_2, TEXT);&#xD;Tokenizer.prototype._stateAfterStyle2 = ifElseState("L", AFTER_STYLE_3, TEXT);&#xD;Tokenizer.prototype._stateAfterStyle3 = ifElseState("E", AFTER_STYLE_4, TEXT);&#xD;&#xD;Tokenizer.prototype._stateAfterStyle4 = function(c){&#xD;	if(c === "&gt;" || whitespace(c)){&#xD;		this._special = SPECIAL_NONE;&#xD;		this._state = IN_CLOSING_TAG_NAME;&#xD;		this._sectionStart = this._index - 5;&#xD;		this._index--; //reconsume the token&#xD;	}&#xD;	else this._state = TEXT;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateBeforeEntity = ifElseState("#", BEFORE_NUMERIC_ENTITY, IN_NAMED_ENTITY);&#xD;Tokenizer.prototype._stateBeforeNumericEntity = ifElseState("X", IN_HEX_ENTITY, IN_NUMERIC_ENTITY);&#xD;&#xD;//for entities terminated with a semicolon&#xD;Tokenizer.prototype._parseNamedEntityStrict = function(){&#xD;	//offset = 1&#xD;	if(this._sectionStart + 1 &lt; this._index){&#xD;		var entity = this._buffer.substring(this._sectionStart + 1, this._index),&#xD;		    map = this._xmlMode ? xmlMap : entityMap;&#xD;&#xD;		if(map.hasOwnProperty(entity)){&#xD;			this._emitPartial(map[entity]);&#xD;			this._sectionStart = this._index + 1;&#xD;		}&#xD;	}&#xD;};&#xD;&#xD;&#xD;//parses legacy entities (without trailing semicolon)&#xD;Tokenizer.prototype._parseLegacyEntity = function(){&#xD;	var start = this._sectionStart + 1,&#xD;	    limit = this._index - start;&#xD;&#xD;	if(limit &gt; 6) limit = 6; //the max length of legacy entities is 6&#xD;&#xD;	while(limit &gt;= 2){ //the min length of legacy entities is 2&#xD;		var entity = this._buffer.substr(start, limit);&#xD;&#xD;		if(legacyMap.hasOwnProperty(entity)){&#xD;			this._emitPartial(legacyMap[entity]);&#xD;			this._sectionStart += limit + 1;&#xD;			return;&#xD;		} else {&#xD;			limit--;&#xD;		}&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInNamedEntity = function(c){&#xD;	if(c === ";"){&#xD;		this._parseNamedEntityStrict();&#xD;		if(this._sectionStart + 1 &lt; this._index &amp;&amp; !this._xmlMode){&#xD;			this._parseLegacyEntity();&#xD;		}&#xD;		this._state = this._baseState;&#xD;	} else if((c &lt; "a" || c &gt; "z") &amp;&amp; (c &lt; "A" || c &gt; "Z") &amp;&amp; (c &lt; "0" || c &gt; "9")){&#xD;		if(this._xmlMode);&#xD;		else if(this._sectionStart + 1 === this._index);&#xD;		else if(this._baseState !== TEXT){&#xD;			if(c !== "="){&#xD;				this._parseNamedEntityStrict();&#xD;			}&#xD;		} else {&#xD;			this._parseLegacyEntity();&#xD;		}&#xD;&#xD;		this._state = this._baseState;&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._decodeNumericEntity = function(offset, base){&#xD;	var sectionStart = this._sectionStart + offset;&#xD;&#xD;	if(sectionStart !== this._index){&#xD;		//parse entity&#xD;		var entity = this._buffer.substring(sectionStart, this._index);&#xD;		var parsed = parseInt(entity, base);&#xD;&#xD;		this._emitPartial(decodeCodePoint(parsed));&#xD;		this._sectionStart = this._index;&#xD;	} else {&#xD;		this._sectionStart--;&#xD;	}&#xD;&#xD;	this._state = this._baseState;&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInNumericEntity = function(c){&#xD;	if(c === ";"){&#xD;		this._decodeNumericEntity(2, 10);&#xD;		this._sectionStart++;&#xD;	} else if(c &lt; "0" || c &gt; "9"){&#xD;		if(!this._xmlMode){&#xD;			this._decodeNumericEntity(2, 10);&#xD;		} else {&#xD;			this._state = this._baseState;&#xD;		}&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._stateInHexEntity = function(c){&#xD;	if(c === ";"){&#xD;		this._decodeNumericEntity(3, 16);&#xD;		this._sectionStart++;&#xD;	} else if((c &lt; "a" || c &gt; "f") &amp;&amp; (c &lt; "A" || c &gt; "F") &amp;&amp; (c &lt; "0" || c &gt; "9")){&#xD;		if(!this._xmlMode){&#xD;			this._decodeNumericEntity(3, 16);&#xD;		} else {&#xD;			this._state = this._baseState;&#xD;		}&#xD;		this._index--;&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype._cleanup = function (){&#xD;	if(this._sectionStart &lt; 0){&#xD;		this._buffer = "";&#xD;		this._bufferOffset += this._index;&#xD;		this._index = 0;&#xD;	} else if(this._running){&#xD;		if(this._state === TEXT){&#xD;			if(this._sectionStart !== this._index){&#xD;				this._cbs.ontext(this._buffer.substr(this._sectionStart));&#xD;			}&#xD;			this._buffer = "";&#xD;			this._bufferOffset += this._index;&#xD;			this._index = 0;&#xD;		} else if(this._sectionStart === this._index){&#xD;			//the section just started&#xD;			this._buffer = "";&#xD;			this._bufferOffset += this._index;&#xD;			this._index = 0;&#xD;		} else {&#xD;			//remove everything unnecessary&#xD;			this._buffer = this._buffer.substr(this._sectionStart);&#xD;			this._index -= this._sectionStart;&#xD;			this._bufferOffset += this._sectionStart;&#xD;		}&#xD;&#xD;		this._sectionStart = 0;&#xD;	}&#xD;};&#xD;&#xD;//TODO make events conditional&#xD;Tokenizer.prototype.write = function(chunk){&#xD;	if(this._ended) this._cbs.onerror(Error(".write() after done!"));&#xD;&#xD;	this._buffer += chunk;&#xD;	this._parse();&#xD;};&#xD;&#xD;Tokenizer.prototype._parse = function(){&#xD;	while(this._index &lt; this._buffer.length &amp;&amp; this._running){&#xD;		var c = this._buffer.charAt(this._index);&#xD;		if(this._state === TEXT) {&#xD;			this._stateText(c);&#xD;		} else if(this._state === BEFORE_TAG_NAME){&#xD;			this._stateBeforeTagName(c);&#xD;		} else if(this._state === IN_TAG_NAME) {&#xD;			this._stateInTagName(c);&#xD;		} else if(this._state === BEFORE_CLOSING_TAG_NAME){&#xD;			this._stateBeforeCloseingTagName(c);&#xD;		} else if(this._state === IN_CLOSING_TAG_NAME){&#xD;			this._stateInCloseingTagName(c);&#xD;		} else if(this._state === AFTER_CLOSING_TAG_NAME){&#xD;			this._stateAfterCloseingTagName(c);&#xD;		} else if(this._state === IN_SELF_CLOSING_TAG){&#xD;			this._stateInSelfClosingTag(c);&#xD;		}&#xD;&#xD;		/*&#xD;		*	attributes&#xD;		*/&#xD;		else if(this._state === BEFORE_ATTRIBUTE_NAME){&#xD;			this._stateBeforeAttributeName(c);&#xD;		} else if(this._state === IN_ATTRIBUTE_NAME){&#xD;			this._stateInAttributeName(c);&#xD;		} else if(this._state === AFTER_ATTRIBUTE_NAME){&#xD;			this._stateAfterAttributeName(c);&#xD;		} else if(this._state === BEFORE_ATTRIBUTE_VALUE){&#xD;			this._stateBeforeAttributeValue(c);&#xD;		} else if(this._state === IN_ATTRIBUTE_VALUE_DQ){&#xD;			this._stateInAttributeValueDoubleQuotes(c);&#xD;		} else if(this._state === IN_ATTRIBUTE_VALUE_SQ){&#xD;			this._stateInAttributeValueSingleQuotes(c);&#xD;		} else if(this._state === IN_ATTRIBUTE_VALUE_NQ){&#xD;			this._stateInAttributeValueNoQuotes(c);&#xD;		}&#xD;&#xD;		/*&#xD;		*	declarations&#xD;		*/&#xD;		else if(this._state === BEFORE_DECLARATION){&#xD;			this._stateBeforeDeclaration(c);&#xD;		} else if(this._state === IN_DECLARATION){&#xD;			this._stateInDeclaration(c);&#xD;		}&#xD;&#xD;		/*&#xD;		*	processing instructions&#xD;		*/&#xD;		else if(this._state === IN_PROCESSING_INSTRUCTION){&#xD;			this._stateInProcessingInstruction(c);&#xD;		}&#xD;&#xD;		/*&#xD;		*	comments&#xD;		*/&#xD;		else if(this._state === BEFORE_COMMENT){&#xD;			this._stateBeforeComment(c);&#xD;		} else if(this._state === IN_COMMENT){&#xD;			this._stateInComment(c);&#xD;		} else if(this._state === AFTER_COMMENT_1){&#xD;			this._stateAfterComment1(c);&#xD;		} else if(this._state === AFTER_COMMENT_2){&#xD;			this._stateAfterComment2(c);&#xD;		}&#xD;&#xD;		/*&#xD;		*	cdata&#xD;		*/&#xD;		else if(this._state === BEFORE_CDATA_1){&#xD;			this._stateBeforeCdata1(c);&#xD;		} else if(this._state === BEFORE_CDATA_2){&#xD;			this._stateBeforeCdata2(c);&#xD;		} else if(this._state === BEFORE_CDATA_3){&#xD;			this._stateBeforeCdata3(c);&#xD;		} else if(this._state === BEFORE_CDATA_4){&#xD;			this._stateBeforeCdata4(c);&#xD;		} else if(this._state === BEFORE_CDATA_5){&#xD;			this._stateBeforeCdata5(c);&#xD;		} else if(this._state === BEFORE_CDATA_6){&#xD;			this._stateBeforeCdata6(c);&#xD;		} else if(this._state === IN_CDATA){&#xD;			this._stateInCdata(c);&#xD;		} else if(this._state === AFTER_CDATA_1){&#xD;			this._stateAfterCdata1(c);&#xD;		} else if(this._state === AFTER_CDATA_2){&#xD;			this._stateAfterCdata2(c);&#xD;		}&#xD;&#xD;		/*&#xD;		* special tags&#xD;		*/&#xD;		else if(this._state === BEFORE_SPECIAL){&#xD;			this._stateBeforeSpecial(c);&#xD;		} else if(this._state === BEFORE_SPECIAL_END){&#xD;			this._stateBeforeSpecialEnd(c);&#xD;		}&#xD;&#xD;		/*&#xD;		* script&#xD;		*/&#xD;		else if(this._state === BEFORE_SCRIPT_1){&#xD;			this._stateBeforeScript1(c);&#xD;		} else if(this._state === BEFORE_SCRIPT_2){&#xD;			this._stateBeforeScript2(c);&#xD;		} else if(this._state === BEFORE_SCRIPT_3){&#xD;			this._stateBeforeScript3(c);&#xD;		} else if(this._state === BEFORE_SCRIPT_4){&#xD;			this._stateBeforeScript4(c);&#xD;		} else if(this._state === BEFORE_SCRIPT_5){&#xD;			this._stateBeforeScript5(c);&#xD;		}&#xD;&#xD;		else if(this._state === AFTER_SCRIPT_1){&#xD;			this._stateAfterScript1(c);&#xD;		} else if(this._state === AFTER_SCRIPT_2){&#xD;			this._stateAfterScript2(c);&#xD;		} else if(this._state === AFTER_SCRIPT_3){&#xD;			this._stateAfterScript3(c);&#xD;		} else if(this._state === AFTER_SCRIPT_4){&#xD;			this._stateAfterScript4(c);&#xD;		} else if(this._state === AFTER_SCRIPT_5){&#xD;			this._stateAfterScript5(c);&#xD;		}&#xD;&#xD;		/*&#xD;		* style&#xD;		*/&#xD;		else if(this._state === BEFORE_STYLE_1){&#xD;			this._stateBeforeStyle1(c);&#xD;		} else if(this._state === BEFORE_STYLE_2){&#xD;			this._stateBeforeStyle2(c);&#xD;		} else if(this._state === BEFORE_STYLE_3){&#xD;			this._stateBeforeStyle3(c);&#xD;		} else if(this._state === BEFORE_STYLE_4){&#xD;			this._stateBeforeStyle4(c);&#xD;		}&#xD;&#xD;		else if(this._state === AFTER_STYLE_1){&#xD;			this._stateAfterStyle1(c);&#xD;		} else if(this._state === AFTER_STYLE_2){&#xD;			this._stateAfterStyle2(c);&#xD;		} else if(this._state === AFTER_STYLE_3){&#xD;			this._stateAfterStyle3(c);&#xD;		} else if(this._state === AFTER_STYLE_4){&#xD;			this._stateAfterStyle4(c);&#xD;		}&#xD;&#xD;		/*&#xD;		* entities&#xD;		*/&#xD;		else if(this._state === BEFORE_ENTITY){&#xD;			this._stateBeforeEntity(c);&#xD;		} else if(this._state === BEFORE_NUMERIC_ENTITY){&#xD;			this._stateBeforeNumericEntity(c);&#xD;		} else if(this._state === IN_NAMED_ENTITY){&#xD;			this._stateInNamedEntity(c);&#xD;		} else if(this._state === IN_NUMERIC_ENTITY){&#xD;			this._stateInNumericEntity(c);&#xD;		} else if(this._state === IN_HEX_ENTITY){&#xD;			this._stateInHexEntity(c);&#xD;		}&#xD;&#xD;		else {&#xD;			this._cbs.onerror(Error("unknown _state"), this._state);&#xD;		}&#xD;&#xD;		this._index++;&#xD;	}&#xD;&#xD;	this._cleanup();&#xD;};&#xD;&#xD;Tokenizer.prototype.pause = function(){&#xD;	this._running = false;&#xD;};&#xD;Tokenizer.prototype.resume = function(){&#xD;	this._running = true;&#xD;&#xD;	if(this._index &lt; this._buffer.length){&#xD;		this._parse();&#xD;	}&#xD;	if(this._ended){&#xD;		this._finish();&#xD;	}&#xD;};&#xD;&#xD;Tokenizer.prototype.end = function(chunk){&#xD;	if(this._ended) this._cbs.onerror(Error(".end() after done!"));&#xD;	if(chunk) this.write(chunk);&#xD;&#xD;	this._ended = true;&#xD;&#xD;	if(this._running) this._finish();&#xD;};&#xD;&#xD;Tokenizer.prototype._finish = function(){&#xD;	//if there is remaining data, emit it in a reasonable way&#xD;	if(this._sectionStart &lt; this._index){&#xD;		this._handleTrailingData();&#xD;	}&#xD;&#xD;	this._cbs.onend();&#xD;};&#xD;&#xD;Tokenizer.prototype._handleTrailingData = function(){&#xD;	var data = this._buffer.substr(this._sectionStart);&#xD;&#xD;	if(this._state === IN_CDATA || this._state === AFTER_CDATA_1 || this._state === AFTER_CDATA_2){&#xD;		this._cbs.oncdata(data);&#xD;	} else if(this._state === IN_COMMENT || this._state === AFTER_COMMENT_1 || this._state === AFTER_COMMENT_2){&#xD;		this._cbs.oncomment(data);&#xD;	} else if(this._state === IN_NAMED_ENTITY &amp;&amp; !this._xmlMode){&#xD;		this._parseLegacyEntity();&#xD;		if(this._sectionStart &lt; this._index){&#xD;			this._state = this._baseState;&#xD;			this._handleTrailingData();&#xD;		}&#xD;	} else if(this._state === IN_NUMERIC_ENTITY &amp;&amp; !this._xmlMode){&#xD;		this._decodeNumericEntity(2, 10);&#xD;		if(this._sectionStart &lt; this._index){&#xD;			this._state = this._baseState;&#xD;			this._handleTrailingData();&#xD;		}&#xD;	} else if(this._state === IN_HEX_ENTITY &amp;&amp; !this._xmlMode){&#xD;		this._decodeNumericEntity(3, 16);&#xD;		if(this._sectionStart &lt; this._index){&#xD;			this._state = this._baseState;&#xD;			this._handleTrailingData();&#xD;		}&#xD;	} else if(&#xD;		this._state !== IN_TAG_NAME &amp;&amp;&#xD;		this._state !== BEFORE_ATTRIBUTE_NAME &amp;&amp;&#xD;		this._state !== BEFORE_ATTRIBUTE_VALUE &amp;&amp;&#xD;		this._state !== AFTER_ATTRIBUTE_NAME &amp;&amp;&#xD;		this._state !== IN_ATTRIBUTE_NAME &amp;&amp;&#xD;		this._state !== IN_ATTRIBUTE_VALUE_SQ &amp;&amp;&#xD;		this._state !== IN_ATTRIBUTE_VALUE_DQ &amp;&amp;&#xD;		this._state !== IN_ATTRIBUTE_VALUE_NQ &amp;&amp;&#xD;		this._state !== IN_CLOSING_TAG_NAME&#xD;	){&#xD;		this._cbs.ontext(data);&#xD;	}&#xD;	//else, ignore remaining data&#xD;	//TODO add a way to remove current tag&#xD;};&#xD;&#xD;Tokenizer.prototype.reset = function(){&#xD;	Tokenizer.call(this, {xmlMode: this._xmlMode, decodeEntities: this._decodeEntities}, this._cbs);&#xD;};&#xD;&#xD;Tokenizer.prototype.getAbsoluteIndex = function(){&#xD;	return this._bufferOffset + this._index;&#xD;};&#xD;&#xD;Tokenizer.prototype._getSection = function(){&#xD;	return this._buffer.substring(this._sectionStart, this._index);&#xD;};&#xD;&#xD;Tokenizer.prototype._emitToken = function(name){&#xD;	this._cbs[name](this._getSection());&#xD;	this._sectionStart = -1;&#xD;};&#xD;&#xD;Tokenizer.prototype._emitPartial = function(value){&#xD;	if(this._baseState !== TEXT){&#xD;		this._cbs.onattribdata(value); //TODO implement the new event&#xD;	} else {&#xD;		this._cbs.ontext(value);&#xD;	}&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 36 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = Stream;&#xD;&#xD;var Parser = __webpack_require__(34),&#xD;    WritableStream = __webpack_require__(16).Writable || __webpack_require__(108).Writable,&#xD;    StringDecoder = __webpack_require__(111).StringDecoder,&#xD;    Buffer = __webpack_require__(8).Buffer;&#xD;&#xD;function Stream(cbs, options){&#xD;	var parser = this._parser = new Parser(cbs, options);&#xD;	var decoder = this._decoder = new StringDecoder();&#xD;&#xD;	WritableStream.call(this, {decodeStrings: false});&#xD;&#xD;	this.once("finish", function(){&#xD;		parser.end(decoder.end());&#xD;	});&#xD;}&#xD;&#xD;__webpack_require__(2)(Stream, WritableStream);&#xD;&#xD;WritableStream.prototype._write = function(chunk, encoding, cb){&#xD;	if(chunk instanceof Buffer) chunk = this._decoder.write(chunk);&#xD;	this._parser.write(chunk);&#xD;	cb();&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 37 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    Filter = __webpack_require__(91);&#xD;&#xD;var log = new Transform(),&#xD;    slice = Array.prototype.slice;&#xD;&#xD;exports = module.exports = function create(name) {&#xD;  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };&#xD;  o.debug = function() { log.write(name, &apos;debug&apos;, slice.call(arguments)); return o; };&#xD;  o.info  = function() { log.write(name, &apos;info&apos;,  slice.call(arguments)); return o; };&#xD;  o.warn  = function() { log.write(name, &apos;warn&apos;,  slice.call(arguments)); return o; };&#xD;  o.error = function() { log.write(name, &apos;error&apos;, slice.call(arguments)); return o; };&#xD;  o.log   = o.debug; // for interface compliance with Node and browser consoles&#xD;  o.suggest = exports.suggest;&#xD;  o.format = log.format;&#xD;  return o;&#xD;};&#xD;&#xD;// filled in separately&#xD;exports.defaultBackend = exports.defaultFormatter = null;&#xD;&#xD;exports.pipe = function(dest) {&#xD;  return log.pipe(dest);&#xD;};&#xD;&#xD;exports.end = exports.unpipe = exports.disable = function(from) {&#xD;  return log.unpipe(from);&#xD;};&#xD;&#xD;exports.Transform = Transform;&#xD;exports.Filter = Filter;&#xD;// this is the default filter that&apos;s applied when .enable() is called normally&#xD;// you can bypass it completely and set up your own pipes&#xD;exports.suggest = new Filter();&#xD;&#xD;exports.enable = function() {&#xD;  if(exports.defaultFormatter) {&#xD;    return log.pipe(exports.suggest) // filter&#xD;              .pipe(exports.defaultFormatter) // formatter&#xD;              .pipe(exports.defaultBackend); // backend&#xD;  }&#xD;  return log.pipe(exports.suggest) // filter&#xD;            .pipe(exports.defaultBackend); // formatter&#xD;};&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 38 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var hex = {&#xD;  black: &apos;#000&apos;,&#xD;  red: &apos;#c23621&apos;,&#xD;  green: &apos;#25bc26&apos;,&#xD;  yellow: &apos;#bbbb00&apos;,&#xD;  blue:  &apos;#492ee1&apos;,&#xD;  magenta: &apos;#d338d3&apos;,&#xD;  cyan: &apos;#33bbc8&apos;,&#xD;  gray: &apos;#808080&apos;,&#xD;  purple: &apos;#708&apos;&#xD;};&#xD;function color(fg, isInverse) {&#xD;  if(isInverse) {&#xD;    return &apos;color: #fff; background: &apos;+hex[fg]+&apos;;&apos;;&#xD;  } else {&#xD;    return &apos;color: &apos;+hex[fg]+&apos;;&apos;;&#xD;  }&#xD;}&#xD;&#xD;module.exports = color;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 39 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = Readable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(26);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var isArray = __webpack_require__(89);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Readable.ReadableState = ReadableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var EE = __webpack_require__(12).EventEmitter;&#xD;&#xD;var EElistenerCount = function (emitter, type) {&#xD;  return emitter.listeners(type).length;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream = __webpack_require__(42);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(8).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(15);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(10);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var debugUtil = __webpack_require__(13);&#xD;var debug = void 0;&#xD;if (debugUtil &amp;&amp; debugUtil.debuglog) {&#xD;  debug = debugUtil.debuglog(&apos;stream&apos;);&#xD;} else {&#xD;  debug = function () {};&#xD;}&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var BufferList = __webpack_require__(107);&#xD;var StringDecoder;&#xD;&#xD;util.inherits(Readable, Stream);&#xD;&#xD;var kProxyEvents = [&apos;error&apos;, &apos;close&apos;, &apos;destroy&apos;, &apos;pause&apos;, &apos;resume&apos;];&#xD;&#xD;function prependListener(emitter, event, fn) {&#xD;  // Sadly this is not cacheable as some libraries bundle their own&#xD;  // event emitter implementation with them.&#xD;  if (typeof emitter.prependListener === &apos;function&apos;) {&#xD;    return emitter.prependListener(event, fn);&#xD;  } else {&#xD;    // This is a hack to make sure that our error handler is attached before any&#xD;    // userland ones.  NEVER DO THIS. This is here only because this code needs&#xD;    // to continue to work with older versions of Node.js that do not include&#xD;    // the prependListener() method. The goal is to eventually remove this hack.&#xD;    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];&#xD;  }&#xD;}&#xD;&#xD;function ReadableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(7);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag. Used to make read(n) ignore n and to&#xD;  // make all the buffer merging and length checks go away&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;&#xD;&#xD;  // the point at which it stops calling _read() to fill the buffer&#xD;  // Note: 0 is a valid value, means "don&apos;t call _read preemptively ever"&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126;&#126;this.highWaterMark;&#xD;&#xD;  // A linked list is used to store data chunks instead of an array because the&#xD;  // linked list can remove elements from the beginning faster than&#xD;  // array.shift()&#xD;  this.buffer = new BufferList();&#xD;  this.length = 0;&#xD;  this.pipes = null;&#xD;  this.pipesCount = 0;&#xD;  this.flowing = null;&#xD;  this.ended = false;&#xD;  this.endEmitted = false;&#xD;  this.reading = false;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // whenever we return null, then we set a flag to say&#xD;  // that we&apos;re awaiting a &apos;readable&apos; event emission.&#xD;  this.needReadable = false;&#xD;  this.emittedReadable = false;&#xD;  this.readableListening = false;&#xD;  this.resumeScheduled = false;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // when piping, we only care about &apos;readable&apos; events that happen&#xD;  // after read()ing all the bytes and not getting any pushback.&#xD;  this.ranOut = false;&#xD;&#xD;  // the number of writers that are awaiting a drain event in .pipe()s&#xD;  this.awaitDrain = 0;&#xD;&#xD;  // if true, a maybeReadMore has been scheduled&#xD;  this.readingMore = false;&#xD;&#xD;  this.decoder = null;&#xD;  this.encoding = null;&#xD;  if (options.encoding) {&#xD;    if (!StringDecoder) StringDecoder = __webpack_require__(43).StringDecoder;&#xD;    this.decoder = new StringDecoder(options.encoding);&#xD;    this.encoding = options.encoding;&#xD;  }&#xD;}&#xD;&#xD;function Readable(options) {&#xD;  Duplex = Duplex || __webpack_require__(7);&#xD;&#xD;  if (!(this instanceof Readable)) return new Readable(options);&#xD;&#xD;  this._readableState = new ReadableState(options, this);&#xD;&#xD;  // legacy&#xD;  this.readable = true;&#xD;&#xD;  if (options &amp;&amp; typeof options.read === &apos;function&apos;) this._read = options.read;&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Manually shove something into the read() buffer.&#xD;// This returns true if the highWaterMark has not been hit yet,&#xD;// similar to how Writable.write() returns true if you should&#xD;// write() some more.&#xD;Readable.prototype.push = function (chunk, encoding) {&#xD;  var state = this._readableState;&#xD;&#xD;  if (!state.objectMode &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    encoding = encoding || state.defaultEncoding;&#xD;    if (encoding !== state.encoding) {&#xD;      chunk = bufferShim.from(chunk, encoding);&#xD;      encoding = &apos;&apos;;&#xD;    }&#xD;  }&#xD;&#xD;  return readableAddChunk(this, state, chunk, encoding, false);&#xD;};&#xD;&#xD;// Unshift should *always* be something directly out of read()&#xD;Readable.prototype.unshift = function (chunk) {&#xD;  var state = this._readableState;&#xD;  return readableAddChunk(this, state, chunk, &apos;&apos;, true);&#xD;};&#xD;&#xD;Readable.prototype.isPaused = function () {&#xD;  return this._readableState.flowing === false;&#xD;};&#xD;&#xD;function readableAddChunk(stream, state, chunk, encoding, addToFront) {&#xD;  var er = chunkInvalid(state, chunk);&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;  } else if (chunk === null) {&#xD;    state.reading = false;&#xD;    onEofChunk(stream, state);&#xD;  } else if (state.objectMode || chunk &amp;&amp; chunk.length &gt; 0) {&#xD;    if (state.ended &amp;&amp; !addToFront) {&#xD;      var e = new Error(&apos;stream.push() after EOF&apos;);&#xD;      stream.emit(&apos;error&apos;, e);&#xD;    } else if (state.endEmitted &amp;&amp; addToFront) {&#xD;      var _e = new Error(&apos;stream.unshift() after end event&apos;);&#xD;      stream.emit(&apos;error&apos;, _e);&#xD;    } else {&#xD;      var skipAdd;&#xD;      if (state.decoder &amp;&amp; !addToFront &amp;&amp; !encoding) {&#xD;        chunk = state.decoder.write(chunk);&#xD;        skipAdd = !state.objectMode &amp;&amp; chunk.length === 0;&#xD;      }&#xD;&#xD;      if (!addToFront) state.reading = false;&#xD;&#xD;      // Don&apos;t add to the buffer if we&apos;ve decoded to an empty string chunk and&#xD;      // we&apos;re not in object mode&#xD;      if (!skipAdd) {&#xD;        // if we want the data now, just emit it.&#xD;        if (state.flowing &amp;&amp; state.length === 0 &amp;&amp; !state.sync) {&#xD;          stream.emit(&apos;data&apos;, chunk);&#xD;          stream.read(0);&#xD;        } else {&#xD;          // update the buffer info.&#xD;          state.length += state.objectMode ? 1 : chunk.length;&#xD;          if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);&#xD;&#xD;          if (state.needReadable) emitReadable(stream);&#xD;        }&#xD;      }&#xD;&#xD;      maybeReadMore(stream, state);&#xD;    }&#xD;  } else if (!addToFront) {&#xD;    state.reading = false;&#xD;  }&#xD;&#xD;  return needMoreData(state);&#xD;}&#xD;&#xD;// if it&apos;s past the high water mark, we can push in some more.&#xD;// Also, if we have no data yet, we can stand some&#xD;// more bytes.  This is to work around cases where hwm=0,&#xD;// such as the repl.  Also, if the push() triggered a&#xD;// readable event, and the user called read(largeNumber) such that&#xD;// needReadable was set, then we ought to push more, so that another&#xD;// &apos;readable&apos; event will be triggered.&#xD;function needMoreData(state) {&#xD;  return !state.ended &amp;&amp; (state.needReadable || state.length &lt; state.highWaterMark || state.length === 0);&#xD;}&#xD;&#xD;// backwards compatibility.&#xD;Readable.prototype.setEncoding = function (enc) {&#xD;  if (!StringDecoder) StringDecoder = __webpack_require__(43).StringDecoder;&#xD;  this._readableState.decoder = new StringDecoder(enc);&#xD;  this._readableState.encoding = enc;&#xD;  return this;&#xD;};&#xD;&#xD;// Don&apos;t raise the hwm &gt; 8MB&#xD;var MAX_HWM = 0x800000;&#xD;function computeNewHighWaterMark(n) {&#xD;  if (n &gt;= MAX_HWM) {&#xD;    n = MAX_HWM;&#xD;  } else {&#xD;    // Get the next highest power of 2 to prevent increasing hwm excessively in&#xD;    // tiny amounts&#xD;    n--;&#xD;    n |= n &gt;&gt;&gt; 1;&#xD;    n |= n &gt;&gt;&gt; 2;&#xD;    n |= n &gt;&gt;&gt; 4;&#xD;    n |= n &gt;&gt;&gt; 8;&#xD;    n |= n &gt;&gt;&gt; 16;&#xD;    n++;&#xD;  }&#xD;  return n;&#xD;}&#xD;&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function howMuchToRead(n, state) {&#xD;  if (n &lt;= 0 || state.length === 0 &amp;&amp; state.ended) return 0;&#xD;  if (state.objectMode) return 1;&#xD;  if (n !== n) {&#xD;    // Only flow one buffer at a time&#xD;    if (state.flowing &amp;&amp; state.length) return state.buffer.head.data.length;else return state.length;&#xD;  }&#xD;  // If we&apos;re asking for more than the current hwm, then raise the hwm.&#xD;  if (n &gt; state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);&#xD;  if (n &lt;= state.length) return n;&#xD;  // Don&apos;t have enough&#xD;  if (!state.ended) {&#xD;    state.needReadable = true;&#xD;    return 0;&#xD;  }&#xD;  return state.length;&#xD;}&#xD;&#xD;// you can override either this method, or the async _read(n) below.&#xD;Readable.prototype.read = function (n) {&#xD;  debug(&apos;read&apos;, n);&#xD;  n = parseInt(n, 10);&#xD;  var state = this._readableState;&#xD;  var nOrig = n;&#xD;&#xD;  if (n !== 0) state.emittedReadable = false;&#xD;&#xD;  // if we&apos;re doing read(0) to trigger a readable event, but we&#xD;  // already have a bunch of data in the buffer, then just trigger&#xD;  // the &apos;readable&apos; event and move on.&#xD;  if (n === 0 &amp;&amp; state.needReadable &amp;&amp; (state.length &gt;= state.highWaterMark || state.ended)) {&#xD;    debug(&apos;read: emitReadable&apos;, state.length, state.ended);&#xD;    if (state.length === 0 &amp;&amp; state.ended) endReadable(this);else emitReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  n = howMuchToRead(n, state);&#xD;&#xD;  // if we&apos;ve ended, and we&apos;re now clear, then finish it up.&#xD;  if (n === 0 &amp;&amp; state.ended) {&#xD;    if (state.length === 0) endReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  // All the actual chunk generation logic needs to be&#xD;  // *below* the call to _read.  The reason is that in certain&#xD;  // synthetic stream cases, such as passthrough streams, _read&#xD;  // may be a completely synchronous operation which may change&#xD;  // the state of the read buffer, providing enough data when&#xD;  // before there was *not* enough.&#xD;  //&#xD;  // So, the steps are:&#xD;  // 1. Figure out what the state of things will be after we do&#xD;  // a read from the buffer.&#xD;  //&#xD;  // 2. If that resulting state will trigger a _read, then call _read.&#xD;  // Note that this may be asynchronous, or synchronous.  Yes, it is&#xD;  // deeply ugly to write APIs this way, but that still doesn&apos;t mean&#xD;  // that the Readable class should behave improperly, as streams are&#xD;  // designed to be sync/async agnostic.&#xD;  // Take note if the _read call is sync or async (ie, if the read call&#xD;  // has returned yet), so that we know whether or not it&apos;s safe to emit&#xD;  // &apos;readable&apos; etc.&#xD;  //&#xD;  // 3. Actually pull the requested chunks out of the buffer and return.&#xD;&#xD;  // if we need a readable event, then we need to do some reading.&#xD;  var doRead = state.needReadable;&#xD;  debug(&apos;need readable&apos;, doRead);&#xD;&#xD;  // if we currently have less than the highWaterMark, then also read some&#xD;  if (state.length === 0 || state.length - n &lt; state.highWaterMark) {&#xD;    doRead = true;&#xD;    debug(&apos;length less than watermark&apos;, doRead);&#xD;  }&#xD;&#xD;  // however, if we&apos;ve ended, then there&apos;s no point, and if we&apos;re already&#xD;  // reading, then it&apos;s unnecessary.&#xD;  if (state.ended || state.reading) {&#xD;    doRead = false;&#xD;    debug(&apos;reading or ended&apos;, doRead);&#xD;  } else if (doRead) {&#xD;    debug(&apos;do read&apos;);&#xD;    state.reading = true;&#xD;    state.sync = true;&#xD;    // if the length is currently zero, then we *need* a readable event.&#xD;    if (state.length === 0) state.needReadable = true;&#xD;    // call internal read method&#xD;    this._read(state.highWaterMark);&#xD;    state.sync = false;&#xD;    // If _read pushed data synchronously, then `reading` will be false,&#xD;    // and we need to re-evaluate how much data we can return to the user.&#xD;    if (!state.reading) n = howMuchToRead(nOrig, state);&#xD;  }&#xD;&#xD;  var ret;&#xD;  if (n &gt; 0) ret = fromList(n, state);else ret = null;&#xD;&#xD;  if (ret === null) {&#xD;    state.needReadable = true;&#xD;    n = 0;&#xD;  } else {&#xD;    state.length -= n;&#xD;  }&#xD;&#xD;  if (state.length === 0) {&#xD;    // If we have nothing in the buffer, then we want to know&#xD;    // as soon as we *do* get something into the buffer.&#xD;    if (!state.ended) state.needReadable = true;&#xD;&#xD;    // If we tried to read() past the EOF, then emit end on the next tick.&#xD;    if (nOrig !== n &amp;&amp; state.ended) endReadable(this);&#xD;  }&#xD;&#xD;  if (ret !== null) this.emit(&apos;data&apos;, ret);&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;function chunkInvalid(state, chunk) {&#xD;  var er = null;&#xD;  if (!Buffer.isBuffer(chunk) &amp;&amp; typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== null &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  return er;&#xD;}&#xD;&#xD;function onEofChunk(stream, state) {&#xD;  if (state.ended) return;&#xD;  if (state.decoder) {&#xD;    var chunk = state.decoder.end();&#xD;    if (chunk &amp;&amp; chunk.length) {&#xD;      state.buffer.push(chunk);&#xD;      state.length += state.objectMode ? 1 : chunk.length;&#xD;    }&#xD;  }&#xD;  state.ended = true;&#xD;&#xD;  // emit &apos;readable&apos; now to make sure it gets picked up.&#xD;  emitReadable(stream);&#xD;}&#xD;&#xD;// Don&apos;t emit readable right away in sync mode, because this can trigger&#xD;// another read() call =&gt; stack overflow.  This way, it might trigger&#xD;// a nextTick recursion warning, but that&apos;s not so bad.&#xD;function emitReadable(stream) {&#xD;  var state = stream._readableState;&#xD;  state.needReadable = false;&#xD;  if (!state.emittedReadable) {&#xD;    debug(&apos;emitReadable&apos;, state.flowing);&#xD;    state.emittedReadable = true;&#xD;    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);&#xD;  }&#xD;}&#xD;&#xD;function emitReadable_(stream) {&#xD;  debug(&apos;emit readable&apos;);&#xD;  stream.emit(&apos;readable&apos;);&#xD;  flow(stream);&#xD;}&#xD;&#xD;// at this point, the user has presumably seen the &apos;readable&apos; event,&#xD;// and called read() to consume some data.  that may have triggered&#xD;// in turn another _read(n) call, in which case reading = true if&#xD;// it&apos;s in progress.&#xD;// However, if we&apos;re not ended, or reading, and the length &lt; hwm,&#xD;// then go ahead and try to read some more preemptively.&#xD;function maybeReadMore(stream, state) {&#xD;  if (!state.readingMore) {&#xD;    state.readingMore = true;&#xD;    processNextTick(maybeReadMore_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function maybeReadMore_(stream, state) {&#xD;  var len = state.length;&#xD;  while (!state.reading &amp;&amp; !state.flowing &amp;&amp; !state.ended &amp;&amp; state.length &lt; state.highWaterMark) {&#xD;    debug(&apos;maybeReadMore read 0&apos;);&#xD;    stream.read(0);&#xD;    if (len === state.length)&#xD;      // didn&apos;t get any data, stop spinning.&#xD;      break;else len = state.length;&#xD;  }&#xD;  state.readingMore = false;&#xD;}&#xD;&#xD;// abstract method.  to be overridden in specific implementation classes.&#xD;// call cb(er, data) where data is &lt;= n in length.&#xD;// for virtual (non-string, non-buffer) streams, "length" is somewhat&#xD;// arbitrary, and perhaps not very meaningful.&#xD;Readable.prototype._read = function (n) {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;_read() is not implemented&apos;));&#xD;};&#xD;&#xD;Readable.prototype.pipe = function (dest, pipeOpts) {&#xD;  var src = this;&#xD;  var state = this._readableState;&#xD;&#xD;  switch (state.pipesCount) {&#xD;    case 0:&#xD;      state.pipes = dest;&#xD;      break;&#xD;    case 1:&#xD;      state.pipes = [state.pipes, dest];&#xD;      break;&#xD;    default:&#xD;      state.pipes.push(dest);&#xD;      break;&#xD;  }&#xD;  state.pipesCount += 1;&#xD;  debug(&apos;pipe count=%d opts=%j&apos;, state.pipesCount, pipeOpts);&#xD;&#xD;  var doEnd = (!pipeOpts || pipeOpts.end !== false) &amp;&amp; dest !== process.stdout &amp;&amp; dest !== process.stderr;&#xD;&#xD;  var endFn = doEnd ? onend : cleanup;&#xD;  if (state.endEmitted) processNextTick(endFn);else src.once(&apos;end&apos;, endFn);&#xD;&#xD;  dest.on(&apos;unpipe&apos;, onunpipe);&#xD;  function onunpipe(readable) {&#xD;    debug(&apos;onunpipe&apos;);&#xD;    if (readable === src) {&#xD;      cleanup();&#xD;    }&#xD;  }&#xD;&#xD;  function onend() {&#xD;    debug(&apos;onend&apos;);&#xD;    dest.end();&#xD;  }&#xD;&#xD;  // when the dest drains, it reduces the awaitDrain counter&#xD;  // on the source.  This would be more elegant with a .once()&#xD;  // handler in flow(), but adding and removing repeatedly is&#xD;  // too slow.&#xD;  var ondrain = pipeOnDrain(src);&#xD;  dest.on(&apos;drain&apos;, ondrain);&#xD;&#xD;  var cleanedUp = false;&#xD;  function cleanup() {&#xD;    debug(&apos;cleanup&apos;);&#xD;    // cleanup event handlers once the pipe is broken&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    dest.removeListener(&apos;drain&apos;, ondrain);&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    dest.removeListener(&apos;unpipe&apos;, onunpipe);&#xD;    src.removeListener(&apos;end&apos;, onend);&#xD;    src.removeListener(&apos;end&apos;, cleanup);&#xD;    src.removeListener(&apos;data&apos;, ondata);&#xD;&#xD;    cleanedUp = true;&#xD;&#xD;    // if the reader is waiting for a drain event from this&#xD;    // specific writer, then it would cause it to never start&#xD;    // flowing again.&#xD;    // So, if this is awaiting a drain, then we just call it now.&#xD;    // If we don&apos;t know, then assume that we are waiting for one.&#xD;    if (state.awaitDrain &amp;&amp; (!dest._writableState || dest._writableState.needDrain)) ondrain();&#xD;  }&#xD;&#xD;  // If the user pushes more data while we&apos;re writing to dest then we&apos;ll end up&#xD;  // in ondata again. However, we only want to increase awaitDrain once because&#xD;  // dest will only emit one &apos;drain&apos; event for the multiple writes.&#xD;  // =&gt; Introduce a guard on increasing awaitDrain.&#xD;  var increasedAwaitDrain = false;&#xD;  src.on(&apos;data&apos;, ondata);&#xD;  function ondata(chunk) {&#xD;    debug(&apos;ondata&apos;);&#xD;    increasedAwaitDrain = false;&#xD;    var ret = dest.write(chunk);&#xD;    if (false === ret &amp;&amp; !increasedAwaitDrain) {&#xD;      // If the user unpiped during `dest.write()`, it is possible&#xD;      // to get stuck in a permanently paused state if that write&#xD;      // also returned false.&#xD;      // =&gt; Check whether `dest` is still a piping destination.&#xD;      if ((state.pipesCount === 1 &amp;&amp; state.pipes === dest || state.pipesCount &gt; 1 &amp;&amp; indexOf(state.pipes, dest) !== -1) &amp;&amp; !cleanedUp) {&#xD;        debug(&apos;false write response, pause&apos;, src._readableState.awaitDrain);&#xD;        src._readableState.awaitDrain++;&#xD;        increasedAwaitDrain = true;&#xD;      }&#xD;      src.pause();&#xD;    }&#xD;  }&#xD;&#xD;  // if the dest has an error, then stop piping into it.&#xD;  // however, don&apos;t suppress the throwing behavior for this.&#xD;  function onerror(er) {&#xD;    debug(&apos;onerror&apos;, er);&#xD;    unpipe();&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    if (EElistenerCount(dest, &apos;error&apos;) === 0) dest.emit(&apos;error&apos;, er);&#xD;  }&#xD;&#xD;  // Make sure our error handler is attached before userland ones.&#xD;  prependListener(dest, &apos;error&apos;, onerror);&#xD;&#xD;  // Both close and finish should trigger unpipe, but only once.&#xD;  function onclose() {&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;close&apos;, onclose);&#xD;  function onfinish() {&#xD;    debug(&apos;onfinish&apos;);&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;finish&apos;, onfinish);&#xD;&#xD;  function unpipe() {&#xD;    debug(&apos;unpipe&apos;);&#xD;    src.unpipe(dest);&#xD;  }&#xD;&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, src);&#xD;&#xD;  // start the flow if it hasn&apos;t been started already.&#xD;  if (!state.flowing) {&#xD;    debug(&apos;pipe resume&apos;);&#xD;    src.resume();&#xD;  }&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;function pipeOnDrain(src) {&#xD;  return function () {&#xD;    var state = src._readableState;&#xD;    debug(&apos;pipeOnDrain&apos;, state.awaitDrain);&#xD;    if (state.awaitDrain) state.awaitDrain--;&#xD;    if (state.awaitDrain === 0 &amp;&amp; EElistenerCount(src, &apos;data&apos;)) {&#xD;      state.flowing = true;&#xD;      flow(src);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;Readable.prototype.unpipe = function (dest) {&#xD;  var state = this._readableState;&#xD;&#xD;  // if we&apos;re not piping anywhere, then do nothing.&#xD;  if (state.pipesCount === 0) return this;&#xD;&#xD;  // just one destination.  most common case.&#xD;  if (state.pipesCount === 1) {&#xD;    // passed in one, but it&apos;s not the right one.&#xD;    if (dest &amp;&amp; dest !== state.pipes) return this;&#xD;&#xD;    if (!dest) dest = state.pipes;&#xD;&#xD;    // got a match.&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;    if (dest) dest.emit(&apos;unpipe&apos;, this);&#xD;    return this;&#xD;  }&#xD;&#xD;  // slow case. multiple pipe destinations.&#xD;&#xD;  if (!dest) {&#xD;    // remove all.&#xD;    var dests = state.pipes;&#xD;    var len = state.pipesCount;&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      dests[i].emit(&apos;unpipe&apos;, this);&#xD;    }return this;&#xD;  }&#xD;&#xD;  // try to find the right one.&#xD;  var index = indexOf(state.pipes, dest);&#xD;  if (index === -1) return this;&#xD;&#xD;  state.pipes.splice(index, 1);&#xD;  state.pipesCount -= 1;&#xD;  if (state.pipesCount === 1) state.pipes = state.pipes[0];&#xD;&#xD;  dest.emit(&apos;unpipe&apos;, this);&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;// set up data events if they are asked for&#xD;// Ensure readable listeners eventually get something&#xD;Readable.prototype.on = function (ev, fn) {&#xD;  var res = Stream.prototype.on.call(this, ev, fn);&#xD;&#xD;  if (ev === &apos;data&apos;) {&#xD;    // Start flowing on next tick if stream isn&apos;t explicitly paused&#xD;    if (this._readableState.flowing !== false) this.resume();&#xD;  } else if (ev === &apos;readable&apos;) {&#xD;    var state = this._readableState;&#xD;    if (!state.endEmitted &amp;&amp; !state.readableListening) {&#xD;      state.readableListening = state.needReadable = true;&#xD;      state.emittedReadable = false;&#xD;      if (!state.reading) {&#xD;        processNextTick(nReadingNextTick, this);&#xD;      } else if (state.length) {&#xD;        emitReadable(this, state);&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  return res;&#xD;};&#xD;Readable.prototype.addListener = Readable.prototype.on;&#xD;&#xD;function nReadingNextTick(self) {&#xD;  debug(&apos;readable nexttick read 0&apos;);&#xD;  self.read(0);&#xD;}&#xD;&#xD;// pause() and resume() are remnants of the legacy readable stream API&#xD;// If the user uses them, then switch into old mode.&#xD;Readable.prototype.resume = function () {&#xD;  var state = this._readableState;&#xD;  if (!state.flowing) {&#xD;    debug(&apos;resume&apos;);&#xD;    state.flowing = true;&#xD;    resume(this, state);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function resume(stream, state) {&#xD;  if (!state.resumeScheduled) {&#xD;    state.resumeScheduled = true;&#xD;    processNextTick(resume_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function resume_(stream, state) {&#xD;  if (!state.reading) {&#xD;    debug(&apos;resume read 0&apos;);&#xD;    stream.read(0);&#xD;  }&#xD;&#xD;  state.resumeScheduled = false;&#xD;  state.awaitDrain = 0;&#xD;  stream.emit(&apos;resume&apos;);&#xD;  flow(stream);&#xD;  if (state.flowing &amp;&amp; !state.reading) stream.read(0);&#xD;}&#xD;&#xD;Readable.prototype.pause = function () {&#xD;  debug(&apos;call pause flowing=%j&apos;, this._readableState.flowing);&#xD;  if (false !== this._readableState.flowing) {&#xD;    debug(&apos;pause&apos;);&#xD;    this._readableState.flowing = false;&#xD;    this.emit(&apos;pause&apos;);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function flow(stream) {&#xD;  var state = stream._readableState;&#xD;  debug(&apos;flow&apos;, state.flowing);&#xD;  while (state.flowing &amp;&amp; stream.read() !== null) {}&#xD;}&#xD;&#xD;// wrap an old-style stream as the async data source.&#xD;// This is *not* part of the readable stream interface.&#xD;// It is an ugly unfortunate mess of history.&#xD;Readable.prototype.wrap = function (stream) {&#xD;  var state = this._readableState;&#xD;  var paused = false;&#xD;&#xD;  var self = this;&#xD;  stream.on(&apos;end&apos;, function () {&#xD;    debug(&apos;wrapped end&apos;);&#xD;    if (state.decoder &amp;&amp; !state.ended) {&#xD;      var chunk = state.decoder.end();&#xD;      if (chunk &amp;&amp; chunk.length) self.push(chunk);&#xD;    }&#xD;&#xD;    self.push(null);&#xD;  });&#xD;&#xD;  stream.on(&apos;data&apos;, function (chunk) {&#xD;    debug(&apos;wrapped data&apos;);&#xD;    if (state.decoder) chunk = state.decoder.write(chunk);&#xD;&#xD;    // don&apos;t skip over falsy values in objectMode&#xD;    if (state.objectMode &amp;&amp; (chunk === null || chunk === undefined)) return;else if (!state.objectMode &amp;&amp; (!chunk || !chunk.length)) return;&#xD;&#xD;    var ret = self.push(chunk);&#xD;    if (!ret) {&#xD;      paused = true;&#xD;      stream.pause();&#xD;    }&#xD;  });&#xD;&#xD;  // proxy all the other methods.&#xD;  // important when wrapping filters and duplexes.&#xD;  for (var i in stream) {&#xD;    if (this[i] === undefined &amp;&amp; typeof stream[i] === &apos;function&apos;) {&#xD;      this[i] = function (method) {&#xD;        return function () {&#xD;          return stream[method].apply(stream, arguments);&#xD;        };&#xD;      }(i);&#xD;    }&#xD;  }&#xD;&#xD;  // proxy certain important events.&#xD;  for (var n = 0; n &lt; kProxyEvents.length; n++) {&#xD;    stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));&#xD;  }&#xD;&#xD;  // when we try to consume some more bytes, simply unpause the&#xD;  // underlying stream.&#xD;  self._read = function (n) {&#xD;    debug(&apos;wrapped _read&apos;, n);&#xD;    if (paused) {&#xD;      paused = false;&#xD;      stream.resume();&#xD;    }&#xD;  };&#xD;&#xD;  return self;&#xD;};&#xD;&#xD;// exposed for testing purposes only.&#xD;Readable._fromList = fromList;&#xD;&#xD;// Pluck off n bytes from an array of buffers.&#xD;// Length is the combined lengths of all the buffers in the list.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromList(n, state) {&#xD;  // nothing buffered&#xD;  if (state.length === 0) return null;&#xD;&#xD;  var ret;&#xD;  if (state.objectMode) ret = state.buffer.shift();else if (!n || n &gt;= state.length) {&#xD;    // read it all, truncate the list&#xD;    if (state.decoder) ret = state.buffer.join(&apos;&apos;);else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);&#xD;    state.buffer.clear();&#xD;  } else {&#xD;    // read part of list&#xD;    ret = fromListPartial(n, state.buffer, state.decoder);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;// Extracts only enough buffered data to satisfy the amount requested.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromListPartial(n, list, hasStrings) {&#xD;  var ret;&#xD;  if (n &lt; list.head.data.length) {&#xD;    // slice is the same for buffers and strings&#xD;    ret = list.head.data.slice(0, n);&#xD;    list.head.data = list.head.data.slice(n);&#xD;  } else if (n === list.head.data.length) {&#xD;    // first chunk is a perfect match&#xD;    ret = list.shift();&#xD;  } else {&#xD;    // result spans more than one buffer&#xD;    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of characters from the list of buffered data&#xD;// chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBufferString(n, list) {&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  var ret = p.data;&#xD;  n -= ret.length;&#xD;  while (p = p.next) {&#xD;    var str = p.data;&#xD;    var nb = n &gt; str.length ? str.length : n;&#xD;    if (nb === str.length) ret += str;else ret += str.slice(0, n);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === str.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = str.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of bytes from the list of buffered data chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBuffer(n, list) {&#xD;  var ret = bufferShim.allocUnsafe(n);&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  p.data.copy(ret);&#xD;  n -= p.data.length;&#xD;  while (p = p.next) {&#xD;    var buf = p.data;&#xD;    var nb = n &gt; buf.length ? buf.length : n;&#xD;    buf.copy(ret, ret.length - n, 0, nb);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === buf.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = buf.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;function endReadable(stream) {&#xD;  var state = stream._readableState;&#xD;&#xD;  // If we get here before consuming all the bytes, then that is a&#xD;  // bug in node.  Should never happen.&#xD;  if (state.length &gt; 0) throw new Error(&apos;"endReadable()" called on non-empty stream&apos;);&#xD;&#xD;  if (!state.endEmitted) {&#xD;    state.ended = true;&#xD;    processNextTick(endReadableNT, state, stream);&#xD;  }&#xD;}&#xD;&#xD;function endReadableNT(state, stream) {&#xD;  // Check that we didn&apos;t get one last unshift.&#xD;  if (!state.endEmitted &amp;&amp; state.length === 0) {&#xD;    state.endEmitted = true;&#xD;    stream.readable = false;&#xD;    stream.emit(&apos;end&apos;);&#xD;  }&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;function indexOf(xs, x) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    if (xs[i] === x) return i;&#xD;  }&#xD;  return -1;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 40 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a transform stream is a readable/writable stream where you do&#xD;// something with the data.  Sometimes it&apos;s called a "filter",&#xD;// but that&apos;s not a great name for it, since that implies a thing where&#xD;// some bits pass through, and others are simply ignored.  (That would&#xD;// be a valid example of a transform, of course.)&#xD;//&#xD;// While the output is causally related to the input, it&apos;s not a&#xD;// necessarily symmetric or synchronous transformation.  For example,&#xD;// a zlib stream might take multiple plain-text writes(), and then&#xD;// emit a single compressed chunk some time in the future.&#xD;//&#xD;// Here&apos;s how this works:&#xD;//&#xD;// The Transform stream has all the aspects of the readable and writable&#xD;// stream classes.  When you write(chunk), that calls _write(chunk,cb)&#xD;// internally, and returns false if there&apos;s a lot of pending writes&#xD;// buffered up.  When you call read(), that calls _read(n) until&#xD;// there&apos;s enough pending readable data buffered up.&#xD;//&#xD;// In a transform stream, the written data is placed in a buffer.  When&#xD;// _read(n) is called, it transforms the queued up data, calling the&#xD;// buffered _write cb&apos;s as it consumes chunks.  If consuming a single&#xD;// written chunk would result in multiple output chunks, then the first&#xD;// outputted bit calls the readcb, and subsequent chunks just go into&#xD;// the read buffer, and will cause it to emit &apos;readable&apos; if necessary.&#xD;//&#xD;// This way, back-pressure is actually determined by the reading side,&#xD;// since _read has to be called to start processing a new chunk.  However,&#xD;// a pathological inflate type of transform can cause excessive buffering&#xD;// here.  For example, imagine a stream where every byte of input is&#xD;// interpreted as an integer from 0-255, and then results in that many&#xD;// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in&#xD;// 1kb of data being output.  In this case, you could write a very small&#xD;// amount of input, and end up with a very large amount of output.  In&#xD;// such a pathological inflating mechanism, there&apos;d be no way to tell&#xD;// the system to stop doing the transform.  A single 4MB write could&#xD;// cause the system to run out of memory.&#xD;//&#xD;// However, even in such a pathological case, only a single written chunk&#xD;// would be consumed, and then the rest would wait (un-transformed) until&#xD;// the results of the previous transformed chunk were consumed.&#xD;&#xD;&#xD;&#xD;module.exports = Transform;&#xD;&#xD;var Duplex = __webpack_require__(7);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(10);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Transform, Duplex);&#xD;&#xD;function TransformState(stream) {&#xD;  this.afterTransform = function (er, data) {&#xD;    return afterTransform(stream, er, data);&#xD;  };&#xD;&#xD;  this.needTransform = false;&#xD;  this.transforming = false;&#xD;  this.writecb = null;&#xD;  this.writechunk = null;&#xD;  this.writeencoding = null;&#xD;}&#xD;&#xD;function afterTransform(stream, er, data) {&#xD;  var ts = stream._transformState;&#xD;  ts.transforming = false;&#xD;&#xD;  var cb = ts.writecb;&#xD;&#xD;  if (!cb) return stream.emit(&apos;error&apos;, new Error(&apos;no writecb in Transform class&apos;));&#xD;&#xD;  ts.writechunk = null;&#xD;  ts.writecb = null;&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  cb(er);&#xD;&#xD;  var rs = stream._readableState;&#xD;  rs.reading = false;&#xD;  if (rs.needReadable || rs.length &lt; rs.highWaterMark) {&#xD;    stream._read(rs.highWaterMark);&#xD;  }&#xD;}&#xD;&#xD;function Transform(options) {&#xD;  if (!(this instanceof Transform)) return new Transform(options);&#xD;&#xD;  Duplex.call(this, options);&#xD;&#xD;  this._transformState = new TransformState(this);&#xD;&#xD;  var stream = this;&#xD;&#xD;  // start out asking for a readable event once data is transformed.&#xD;  this._readableState.needReadable = true;&#xD;&#xD;  // we have implemented the _read method, and done the other things&#xD;  // that Readable wants before the first _read call, so unset the&#xD;  // sync guard flag.&#xD;  this._readableState.sync = false;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.transform === &apos;function&apos;) this._transform = options.transform;&#xD;&#xD;    if (typeof options.flush === &apos;function&apos;) this._flush = options.flush;&#xD;  }&#xD;&#xD;  // When the writable side finishes, then flush out anything remaining.&#xD;  this.once(&apos;prefinish&apos;, function () {&#xD;    if (typeof this._flush === &apos;function&apos;) this._flush(function (er, data) {&#xD;      done(stream, er, data);&#xD;    });else done(stream);&#xD;  });&#xD;}&#xD;&#xD;Transform.prototype.push = function (chunk, encoding) {&#xD;  this._transformState.needTransform = false;&#xD;  return Duplex.prototype.push.call(this, chunk, encoding);&#xD;};&#xD;&#xD;// This is the part where you do stuff!&#xD;// override this function in implementation classes.&#xD;// &apos;chunk&apos; is an input chunk.&#xD;//&#xD;// Call `push(newChunk)` to pass along transformed output&#xD;// to the readable side.  You may call &apos;push&apos; zero or more times.&#xD;//&#xD;// Call `cb(err)` when you are done with this chunk.  If you pass&#xD;// an error, then that&apos;ll put the hurt on the whole operation.  If you&#xD;// never call cb(), then you&apos;ll never get another chunk.&#xD;Transform.prototype._transform = function (chunk, encoding, cb) {&#xD;  throw new Error(&apos;_transform() is not implemented&apos;);&#xD;};&#xD;&#xD;Transform.prototype._write = function (chunk, encoding, cb) {&#xD;  var ts = this._transformState;&#xD;  ts.writecb = cb;&#xD;  ts.writechunk = chunk;&#xD;  ts.writeencoding = encoding;&#xD;  if (!ts.transforming) {&#xD;    var rs = this._readableState;&#xD;    if (ts.needTransform || rs.needReadable || rs.length &lt; rs.highWaterMark) this._read(rs.highWaterMark);&#xD;  }&#xD;};&#xD;&#xD;// Doesn&apos;t matter what the args are here.&#xD;// _transform does all the work.&#xD;// That we got here means that the readable side wants more data.&#xD;Transform.prototype._read = function (n) {&#xD;  var ts = this._transformState;&#xD;&#xD;  if (ts.writechunk !== null &amp;&amp; ts.writecb &amp;&amp; !ts.transforming) {&#xD;    ts.transforming = true;&#xD;    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);&#xD;  } else {&#xD;    // mark that we need a transform, so that any data that comes in&#xD;    // will get processed, now that we&apos;ve asked for it.&#xD;    ts.needTransform = true;&#xD;  }&#xD;};&#xD;&#xD;function done(stream, er, data) {&#xD;  if (er) return stream.emit(&apos;error&apos;, er);&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  // if there&apos;s nothing in the write buffer, then that means&#xD;  // that nothing more will ever be provided&#xD;  var ws = stream._writableState;&#xD;  var ts = stream._transformState;&#xD;&#xD;  if (ws.length) throw new Error(&apos;Calling transform done when ws.length != 0&apos;);&#xD;&#xD;  if (ts.transforming) throw new Error(&apos;Calling transform done when still transforming&apos;);&#xD;&#xD;  return stream.push(null);&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 41 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// A bit simpler than readable streams.&#xD;// Implement an async ._write(chunk, encoding, cb), and it&apos;ll handle all&#xD;// the drain event emission and buffering.&#xD;&#xD;&#xD;&#xD;module.exports = Writable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(26);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var asyncWrite = !process.browser &amp;&amp; [&apos;v0.10&apos;, &apos;v0.9.&apos;].indexOf(process.version.slice(0, 5)) &gt; -1 ? setImmediate : processNextTick;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Writable.WritableState = WritableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(10);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var internalUtil = {&#xD;  deprecate: __webpack_require__(109)&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream = __webpack_require__(42);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(8).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(15);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Writable, Stream);&#xD;&#xD;function nop() {}&#xD;&#xD;function WriteReq(chunk, encoding, cb) {&#xD;  this.chunk = chunk;&#xD;  this.encoding = encoding;&#xD;  this.callback = cb;&#xD;  this.next = null;&#xD;}&#xD;&#xD;function WritableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(7);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag to indicate whether or not this stream&#xD;  // contains buffers or objects.&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;&#xD;&#xD;  // the point at which write() starts returning false&#xD;  // Note: 0 is a valid value, means that we always return false if&#xD;  // the entire buffer is not flushed immediately on write()&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126;&#126;this.highWaterMark;&#xD;&#xD;  // drain event flag.&#xD;  this.needDrain = false;&#xD;  // at the start of calling end()&#xD;  this.ending = false;&#xD;  // when end() has been called, and returned&#xD;  this.ended = false;&#xD;  // when &apos;finish&apos; is emitted&#xD;  this.finished = false;&#xD;&#xD;  // should we decode strings into buffers before passing to _write?&#xD;  // this is here so that some node-core streams can optimize string&#xD;  // handling at a lower level.&#xD;  var noDecode = options.decodeStrings === false;&#xD;  this.decodeStrings = !noDecode;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // not an actual buffer we keep track of, but a measurement&#xD;  // of how much we&apos;re waiting to get pushed to some underlying&#xD;  // socket or file.&#xD;  this.length = 0;&#xD;&#xD;  // a flag to see when we&apos;re in the middle of a write.&#xD;  this.writing = false;&#xD;&#xD;  // when true all writes will be buffered until .uncork() call&#xD;  this.corked = 0;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // a flag to know if we&apos;re processing previously buffered items, which&#xD;  // may call the _write() callback in the same tick, so that we don&apos;t&#xD;  // end up in an overlapped onwrite situation.&#xD;  this.bufferProcessing = false;&#xD;&#xD;  // the callback that&apos;s passed to _write(chunk,cb)&#xD;  this.onwrite = function (er) {&#xD;    onwrite(stream, er);&#xD;  };&#xD;&#xD;  // the callback that the user supplies to write(chunk,encoding,cb)&#xD;  this.writecb = null;&#xD;&#xD;  // the amount that is being written when _write is called.&#xD;  this.writelen = 0;&#xD;&#xD;  this.bufferedRequest = null;&#xD;  this.lastBufferedRequest = null;&#xD;&#xD;  // number of pending user-supplied write callbacks&#xD;  // this must be 0 before &apos;finish&apos; can be emitted&#xD;  this.pendingcb = 0;&#xD;&#xD;  // emit prefinish if the only thing we&apos;re waiting for is _write cbs&#xD;  // This is relevant for synchronous Transform streams&#xD;  this.prefinished = false;&#xD;&#xD;  // True if the error was already emitted and should not be thrown again&#xD;  this.errorEmitted = false;&#xD;&#xD;  // count buffered requests&#xD;  this.bufferedRequestCount = 0;&#xD;&#xD;  // allocate the first CorkedRequest, there is always&#xD;  // one allocated and free to use, and we maintain at most two&#xD;  this.corkedRequestsFree = new CorkedRequest(this);&#xD;}&#xD;&#xD;WritableState.prototype.getBuffer = function getBuffer() {&#xD;  var current = this.bufferedRequest;&#xD;  var out = [];&#xD;  while (current) {&#xD;    out.push(current);&#xD;    current = current.next;&#xD;  }&#xD;  return out;&#xD;};&#xD;&#xD;(function () {&#xD;  try {&#xD;    Object.defineProperty(WritableState.prototype, &apos;buffer&apos;, {&#xD;      get: internalUtil.deprecate(function () {&#xD;        return this.getBuffer();&#xD;      }, &apos;_writableState.buffer is deprecated. Use _writableState.getBuffer &apos; + &apos;instead.&apos;)&#xD;    });&#xD;  } catch (_) {}&#xD;})();&#xD;&#xD;// Test _writableState for inheritance to account for Duplex streams,&#xD;// whose prototype chain only points to Readable.&#xD;var realHasInstance;&#xD;if (typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.hasInstance &amp;&amp; typeof Function.prototype[Symbol.hasInstance] === &apos;function&apos;) {&#xD;  realHasInstance = Function.prototype[Symbol.hasInstance];&#xD;  Object.defineProperty(Writable, Symbol.hasInstance, {&#xD;    value: function (object) {&#xD;      if (realHasInstance.call(this, object)) return true;&#xD;&#xD;      return object &amp;&amp; object._writableState instanceof WritableState;&#xD;    }&#xD;  });&#xD;} else {&#xD;  realHasInstance = function (object) {&#xD;    return object instanceof this;&#xD;  };&#xD;}&#xD;&#xD;function Writable(options) {&#xD;  Duplex = Duplex || __webpack_require__(7);&#xD;&#xD;  // Writable ctor is applied to Duplexes, too.&#xD;  // `realHasInstance` is necessary because using plain `instanceof`&#xD;  // would return false, as no `_writableState` property is attached.&#xD;&#xD;  // Trying to use the custom `instanceof` for Writable here will also break the&#xD;  // Node.js LazyTransform implementation, which has a non-trivial getter for&#xD;  // `_writableState` that would lead to infinite recursion.&#xD;  if (!realHasInstance.call(Writable, this) &amp;&amp; !(this instanceof Duplex)) {&#xD;    return new Writable(options);&#xD;  }&#xD;&#xD;  this._writableState = new WritableState(options, this);&#xD;&#xD;  // legacy.&#xD;  this.writable = true;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.write === &apos;function&apos;) this._write = options.write;&#xD;&#xD;    if (typeof options.writev === &apos;function&apos;) this._writev = options.writev;&#xD;  }&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Otherwise people can pipe Writable streams, which is just wrong.&#xD;Writable.prototype.pipe = function () {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;Cannot pipe, not readable&apos;));&#xD;};&#xD;&#xD;function writeAfterEnd(stream, cb) {&#xD;  var er = new Error(&apos;write after end&apos;);&#xD;  // TODO: defer error events consistently everywhere, not just the cb&#xD;  stream.emit(&apos;error&apos;, er);&#xD;  processNextTick(cb, er);&#xD;}&#xD;&#xD;// Checks that a user-supplied chunk is valid, especially for the particular&#xD;// mode the stream is in. Currently this means that `null` is never accepted&#xD;// and undefined/non-string values are only allowed in object mode.&#xD;function validChunk(stream, state, chunk, cb) {&#xD;  var valid = true;&#xD;  var er = false;&#xD;&#xD;  if (chunk === null) {&#xD;    er = new TypeError(&apos;May not write null values to stream&apos;);&#xD;  } else if (typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;    processNextTick(cb, er);&#xD;    valid = false;&#xD;  }&#xD;  return valid;&#xD;}&#xD;&#xD;Writable.prototype.write = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;  var ret = false;&#xD;  var isBuf = Buffer.isBuffer(chunk);&#xD;&#xD;  if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (isBuf) encoding = &apos;buffer&apos;;else if (!encoding) encoding = state.defaultEncoding;&#xD;&#xD;  if (typeof cb !== &apos;function&apos;) cb = nop;&#xD;&#xD;  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {&#xD;    state.pendingcb++;&#xD;    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;Writable.prototype.cork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  state.corked++;&#xD;};&#xD;&#xD;Writable.prototype.uncork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  if (state.corked) {&#xD;    state.corked--;&#xD;&#xD;    if (!state.writing &amp;&amp; !state.corked &amp;&amp; !state.finished &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) clearBuffer(this, state);&#xD;  }&#xD;};&#xD;&#xD;Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {&#xD;  // node::ParseEncoding() requires lower case.&#xD;  if (typeof encoding === &apos;string&apos;) encoding = encoding.toLowerCase();&#xD;  if (!([&apos;hex&apos;, &apos;utf8&apos;, &apos;utf-8&apos;, &apos;ascii&apos;, &apos;binary&apos;, &apos;base64&apos;, &apos;ucs2&apos;, &apos;ucs-2&apos;, &apos;utf16le&apos;, &apos;utf-16le&apos;, &apos;raw&apos;].indexOf((encoding + &apos;&apos;).toLowerCase()) &gt; -1)) throw new TypeError(&apos;Unknown encoding: &apos; + encoding);&#xD;  this._writableState.defaultEncoding = encoding;&#xD;  return this;&#xD;};&#xD;&#xD;function decodeChunk(state, chunk, encoding) {&#xD;  if (!state.objectMode &amp;&amp; state.decodeStrings !== false &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    chunk = bufferShim.from(chunk, encoding);&#xD;  }&#xD;  return chunk;&#xD;}&#xD;&#xD;// if we&apos;re already writing something, then just put this&#xD;// in the queue, and wait our turn.  Otherwise, call _write&#xD;// If we return false, then we need a drain event, so set that flag.&#xD;function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {&#xD;  if (!isBuf) {&#xD;    chunk = decodeChunk(state, chunk, encoding);&#xD;    if (Buffer.isBuffer(chunk)) encoding = &apos;buffer&apos;;&#xD;  }&#xD;  var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;  state.length += len;&#xD;&#xD;  var ret = state.length &lt; state.highWaterMark;&#xD;  // we must ensure that previous needDrain will not be reset to false.&#xD;  if (!ret) state.needDrain = true;&#xD;&#xD;  if (state.writing || state.corked) {&#xD;    var last = state.lastBufferedRequest;&#xD;    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);&#xD;    if (last) {&#xD;      last.next = state.lastBufferedRequest;&#xD;    } else {&#xD;      state.bufferedRequest = state.lastBufferedRequest;&#xD;    }&#xD;    state.bufferedRequestCount += 1;&#xD;  } else {&#xD;    doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;function doWrite(stream, state, writev, len, chunk, encoding, cb) {&#xD;  state.writelen = len;&#xD;  state.writecb = cb;&#xD;  state.writing = true;&#xD;  state.sync = true;&#xD;  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);&#xD;  state.sync = false;&#xD;}&#xD;&#xD;function onwriteError(stream, state, sync, er, cb) {&#xD;  --state.pendingcb;&#xD;  if (sync) processNextTick(cb, er);else cb(er);&#xD;&#xD;  stream._writableState.errorEmitted = true;&#xD;  stream.emit(&apos;error&apos;, er);&#xD;}&#xD;&#xD;function onwriteStateUpdate(state) {&#xD;  state.writing = false;&#xD;  state.writecb = null;&#xD;  state.length -= state.writelen;&#xD;  state.writelen = 0;&#xD;}&#xD;&#xD;function onwrite(stream, er) {&#xD;  var state = stream._writableState;&#xD;  var sync = state.sync;&#xD;  var cb = state.writecb;&#xD;&#xD;  onwriteStateUpdate(state);&#xD;&#xD;  if (er) onwriteError(stream, state, sync, er, cb);else {&#xD;    // Check if we&apos;re actually ready to finish, but don&apos;t emit yet&#xD;    var finished = needFinish(state);&#xD;&#xD;    if (!finished &amp;&amp; !state.corked &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) {&#xD;      clearBuffer(stream, state);&#xD;    }&#xD;&#xD;    if (sync) {&#xD;      /*&lt;replacement&gt;*/&#xD;      asyncWrite(afterWrite, stream, state, finished, cb);&#xD;      /*&lt;/replacement&gt;*/&#xD;    } else {&#xD;      afterWrite(stream, state, finished, cb);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function afterWrite(stream, state, finished, cb) {&#xD;  if (!finished) onwriteDrain(stream, state);&#xD;  state.pendingcb--;&#xD;  cb();&#xD;  finishMaybe(stream, state);&#xD;}&#xD;&#xD;// Must force callback to be called on nextTick, so that we don&apos;t&#xD;// emit &apos;drain&apos; before the write() consumer gets the &apos;false&apos; return&#xD;// value, and has a chance to attach a &apos;drain&apos; listener.&#xD;function onwriteDrain(stream, state) {&#xD;  if (state.length === 0 &amp;&amp; state.needDrain) {&#xD;    state.needDrain = false;&#xD;    stream.emit(&apos;drain&apos;);&#xD;  }&#xD;}&#xD;&#xD;// if there&apos;s something in the buffer waiting, then process it&#xD;function clearBuffer(stream, state) {&#xD;  state.bufferProcessing = true;&#xD;  var entry = state.bufferedRequest;&#xD;&#xD;  if (stream._writev &amp;&amp; entry &amp;&amp; entry.next) {&#xD;    // Fast case, write everything using _writev()&#xD;    var l = state.bufferedRequestCount;&#xD;    var buffer = new Array(l);&#xD;    var holder = state.corkedRequestsFree;&#xD;    holder.entry = entry;&#xD;&#xD;    var count = 0;&#xD;    while (entry) {&#xD;      buffer[count] = entry;&#xD;      entry = entry.next;&#xD;      count += 1;&#xD;    }&#xD;&#xD;    doWrite(stream, state, true, state.length, buffer, &apos;&apos;, holder.finish);&#xD;&#xD;    // doWrite is almost always async, defer these to save a bit of time&#xD;    // as the hot path ends with doWrite&#xD;    state.pendingcb++;&#xD;    state.lastBufferedRequest = null;&#xD;    if (holder.next) {&#xD;      state.corkedRequestsFree = holder.next;&#xD;      holder.next = null;&#xD;    } else {&#xD;      state.corkedRequestsFree = new CorkedRequest(state);&#xD;    }&#xD;  } else {&#xD;    // Slow case, write chunks one-by-one&#xD;    while (entry) {&#xD;      var chunk = entry.chunk;&#xD;      var encoding = entry.encoding;&#xD;      var cb = entry.callback;&#xD;      var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;      doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;      entry = entry.next;&#xD;      // if we didn&apos;t call the onwrite immediately, then&#xD;      // it means that we need to wait until it does.&#xD;      // also, that means that the chunk and cb are currently&#xD;      // being processed, so move the buffer counter past them.&#xD;      if (state.writing) {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    if (entry === null) state.lastBufferedRequest = null;&#xD;  }&#xD;&#xD;  state.bufferedRequestCount = 0;&#xD;  state.bufferedRequest = entry;&#xD;  state.bufferProcessing = false;&#xD;}&#xD;&#xD;Writable.prototype._write = function (chunk, encoding, cb) {&#xD;  cb(new Error(&apos;_write() is not implemented&apos;));&#xD;};&#xD;&#xD;Writable.prototype._writev = null;&#xD;&#xD;Writable.prototype.end = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;&#xD;  if (typeof chunk === &apos;function&apos;) {&#xD;    cb = chunk;&#xD;    chunk = null;&#xD;    encoding = null;&#xD;  } else if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (chunk !== null &amp;&amp; chunk !== undefined) this.write(chunk, encoding);&#xD;&#xD;  // .end() fully uncorks&#xD;  if (state.corked) {&#xD;    state.corked = 1;&#xD;    this.uncork();&#xD;  }&#xD;&#xD;  // ignore unnecessary end() calls.&#xD;  if (!state.ending &amp;&amp; !state.finished) endWritable(this, state, cb);&#xD;};&#xD;&#xD;function needFinish(state) {&#xD;  return state.ending &amp;&amp; state.length === 0 &amp;&amp; state.bufferedRequest === null &amp;&amp; !state.finished &amp;&amp; !state.writing;&#xD;}&#xD;&#xD;function prefinish(stream, state) {&#xD;  if (!state.prefinished) {&#xD;    state.prefinished = true;&#xD;    stream.emit(&apos;prefinish&apos;);&#xD;  }&#xD;}&#xD;&#xD;function finishMaybe(stream, state) {&#xD;  var need = needFinish(state);&#xD;  if (need) {&#xD;    if (state.pendingcb === 0) {&#xD;      prefinish(stream, state);&#xD;      state.finished = true;&#xD;      stream.emit(&apos;finish&apos;);&#xD;    } else {&#xD;      prefinish(stream, state);&#xD;    }&#xD;  }&#xD;  return need;&#xD;}&#xD;&#xD;function endWritable(stream, state, cb) {&#xD;  state.ending = true;&#xD;  finishMaybe(stream, state);&#xD;  if (cb) {&#xD;    if (state.finished) processNextTick(cb);else stream.once(&apos;finish&apos;, cb);&#xD;  }&#xD;  state.ended = true;&#xD;  stream.writable = false;&#xD;}&#xD;&#xD;// It seems a linked list but it is not&#xD;// there will be only 2 of these for each stream&#xD;function CorkedRequest(state) {&#xD;  var _this = this;&#xD;&#xD;  this.next = null;&#xD;  this.entry = null;&#xD;  this.finish = function (err) {&#xD;    var entry = _this.entry;&#xD;    _this.entry = null;&#xD;    while (entry) {&#xD;      var cb = entry.callback;&#xD;      state.pendingcb--;&#xD;      cb(err);&#xD;      entry = entry.next;&#xD;    }&#xD;    if (state.corkedRequestsFree) {&#xD;      state.corkedRequestsFree.next = _this;&#xD;    } else {&#xD;      state.corkedRequestsFree = _this;&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 42 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(16);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 43 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Buffer = __webpack_require__(8).Buffer;&#xD;var bufferShim = __webpack_require__(15);&#xD;&#xD;var isEncoding = Buffer.isEncoding || function (encoding) {&#xD;  encoding = &apos;&apos; + encoding;&#xD;  switch (encoding &amp;&amp; encoding.toLowerCase()) {&#xD;    case &apos;hex&apos;:case &apos;utf8&apos;:case &apos;utf-8&apos;:case &apos;ascii&apos;:case &apos;binary&apos;:case &apos;base64&apos;:case &apos;ucs2&apos;:case &apos;ucs-2&apos;:case &apos;utf16le&apos;:case &apos;utf-16le&apos;:case &apos;raw&apos;:&#xD;      return true;&#xD;    default:&#xD;      return false;&#xD;  }&#xD;};&#xD;&#xD;function _normalizeEncoding(enc) {&#xD;  if (!enc) return &apos;utf8&apos;;&#xD;  var retried;&#xD;  while (true) {&#xD;    switch (enc) {&#xD;      case &apos;utf8&apos;:&#xD;      case &apos;utf-8&apos;:&#xD;        return &apos;utf8&apos;;&#xD;      case &apos;ucs2&apos;:&#xD;      case &apos;ucs-2&apos;:&#xD;      case &apos;utf16le&apos;:&#xD;      case &apos;utf-16le&apos;:&#xD;        return &apos;utf16le&apos;;&#xD;      case &apos;latin1&apos;:&#xD;      case &apos;binary&apos;:&#xD;        return &apos;latin1&apos;;&#xD;      case &apos;base64&apos;:&#xD;      case &apos;ascii&apos;:&#xD;      case &apos;hex&apos;:&#xD;        return enc;&#xD;      default:&#xD;        if (retried) return; // undefined&#xD;        enc = (&apos;&apos; + enc).toLowerCase();&#xD;        retried = true;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;// Do not cache `Buffer.isEncoding` when checking encoding names as some&#xD;// modules monkey-patch it to support additional encodings&#xD;function normalizeEncoding(enc) {&#xD;  var nenc = _normalizeEncoding(enc);&#xD;  if (typeof nenc !== &apos;string&apos; &amp;&amp; (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error(&apos;Unknown encoding: &apos; + enc);&#xD;  return nenc || enc;&#xD;}&#xD;&#xD;// StringDecoder provides an interface for efficiently splitting a series of&#xD;// buffers into a series of JS strings without breaking apart multi-byte&#xD;// characters.&#xD;exports.StringDecoder = StringDecoder;&#xD;function StringDecoder(encoding) {&#xD;  this.encoding = normalizeEncoding(encoding);&#xD;  var nb;&#xD;  switch (this.encoding) {&#xD;    case &apos;utf16le&apos;:&#xD;      this.text = utf16Text;&#xD;      this.end = utf16End;&#xD;      nb = 4;&#xD;      break;&#xD;    case &apos;utf8&apos;:&#xD;      this.fillLast = utf8FillLast;&#xD;      nb = 4;&#xD;      break;&#xD;    case &apos;base64&apos;:&#xD;      this.text = base64Text;&#xD;      this.end = base64End;&#xD;      nb = 3;&#xD;      break;&#xD;    default:&#xD;      this.write = simpleWrite;&#xD;      this.end = simpleEnd;&#xD;      return;&#xD;  }&#xD;  this.lastNeed = 0;&#xD;  this.lastTotal = 0;&#xD;  this.lastChar = bufferShim.allocUnsafe(nb);&#xD;}&#xD;&#xD;StringDecoder.prototype.write = function (buf) {&#xD;  if (buf.length === 0) return &apos;&apos;;&#xD;  var r;&#xD;  var i;&#xD;  if (this.lastNeed) {&#xD;    r = this.fillLast(buf);&#xD;    if (r === undefined) return &apos;&apos;;&#xD;    i = this.lastNeed;&#xD;    this.lastNeed = 0;&#xD;  } else {&#xD;    i = 0;&#xD;  }&#xD;  if (i &lt; buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);&#xD;  return r || &apos;&apos;;&#xD;};&#xD;&#xD;StringDecoder.prototype.end = utf8End;&#xD;&#xD;// Returns only complete characters in a Buffer&#xD;StringDecoder.prototype.text = utf8Text;&#xD;&#xD;// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer&#xD;StringDecoder.prototype.fillLast = function (buf) {&#xD;  if (this.lastNeed &lt;= buf.length) {&#xD;    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);&#xD;    return this.lastChar.toString(this.encoding, 0, this.lastTotal);&#xD;  }&#xD;  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);&#xD;  this.lastNeed -= buf.length;&#xD;};&#xD;&#xD;// Checks the type of a UTF-8 byte, whether it&apos;s ASCII, a leading byte, or a&#xD;// continuation byte.&#xD;function utf8CheckByte(byte) {&#xD;  if (byte &lt;= 0x7F) return 0;else if (byte &gt;&gt; 5 === 0x06) return 2;else if (byte &gt;&gt; 4 === 0x0E) return 3;else if (byte &gt;&gt; 3 === 0x1E) return 4;&#xD;  return -1;&#xD;}&#xD;&#xD;// Checks at most 3 bytes at the end of a Buffer in order to detect an&#xD;// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)&#xD;// needed to complete the UTF-8 character (if applicable) are returned.&#xD;function utf8CheckIncomplete(self, buf, i) {&#xD;  var j = buf.length - 1;&#xD;  if (j &lt; i) return 0;&#xD;  var nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) self.lastNeed = nb - 1;&#xD;    return nb;&#xD;  }&#xD;  if (--j &lt; i) return 0;&#xD;  nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) self.lastNeed = nb - 2;&#xD;    return nb;&#xD;  }&#xD;  if (--j &lt; i) return 0;&#xD;  nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) {&#xD;      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;&#xD;    }&#xD;    return nb;&#xD;  }&#xD;  return 0;&#xD;}&#xD;&#xD;// Validates as many continuation bytes for a multi-byte UTF-8 character as&#xD;// needed or are available. If we see a non-continuation byte where we expect&#xD;// one, we "replace" the validated continuation bytes we&apos;ve seen so far with&#xD;// UTF-8 replacement characters (&apos;\ufffd&apos;), to match v8&apos;s UTF-8 decoding&#xD;// behavior. The continuation byte check is included three times in the case&#xD;// where all of the continuation bytes for a character exist in the same buffer.&#xD;// It is also done this way as a slight performance increase instead of using a&#xD;// loop.&#xD;function utf8CheckExtraBytes(self, buf, p) {&#xD;  if ((buf[0] &amp; 0xC0) !== 0x80) {&#xD;    self.lastNeed = 0;&#xD;    return &apos;\ufffd&apos;.repeat(p);&#xD;  }&#xD;  if (self.lastNeed &gt; 1 &amp;&amp; buf.length &gt; 1) {&#xD;    if ((buf[1] &amp; 0xC0) !== 0x80) {&#xD;      self.lastNeed = 1;&#xD;      return &apos;\ufffd&apos;.repeat(p + 1);&#xD;    }&#xD;    if (self.lastNeed &gt; 2 &amp;&amp; buf.length &gt; 2) {&#xD;      if ((buf[2] &amp; 0xC0) !== 0x80) {&#xD;        self.lastNeed = 2;&#xD;        return &apos;\ufffd&apos;.repeat(p + 2);&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.&#xD;function utf8FillLast(buf) {&#xD;  var p = this.lastTotal - this.lastNeed;&#xD;  var r = utf8CheckExtraBytes(this, buf, p);&#xD;  if (r !== undefined) return r;&#xD;  if (this.lastNeed &lt;= buf.length) {&#xD;    buf.copy(this.lastChar, p, 0, this.lastNeed);&#xD;    return this.lastChar.toString(this.encoding, 0, this.lastTotal);&#xD;  }&#xD;  buf.copy(this.lastChar, p, 0, buf.length);&#xD;  this.lastNeed -= buf.length;&#xD;}&#xD;&#xD;// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a&#xD;// partial character, the character&apos;s bytes are buffered until the required&#xD;// number of bytes are available.&#xD;function utf8Text(buf, i) {&#xD;  var total = utf8CheckIncomplete(this, buf, i);&#xD;  if (!this.lastNeed) return buf.toString(&apos;utf8&apos;, i);&#xD;  this.lastTotal = total;&#xD;  var end = buf.length - (total - this.lastNeed);&#xD;  buf.copy(this.lastChar, 0, end);&#xD;  return buf.toString(&apos;utf8&apos;, i, end);&#xD;}&#xD;&#xD;// For UTF-8, a replacement character for each buffered byte of a (partial)&#xD;// character needs to be added to the output.&#xD;function utf8End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) return r + &apos;\ufffd&apos;.repeat(this.lastTotal - this.lastNeed);&#xD;  return r;&#xD;}&#xD;&#xD;// UTF-16LE typically needs two bytes per character, but even if we have an even&#xD;// number of bytes available, we need to check if we end on a leading/high&#xD;// surrogate. In that case, we need to wait for the next two bytes in order to&#xD;// decode the last character properly.&#xD;function utf16Text(buf, i) {&#xD;  if ((buf.length - i) % 2 === 0) {&#xD;    var r = buf.toString(&apos;utf16le&apos;, i);&#xD;    if (r) {&#xD;      var c = r.charCodeAt(r.length - 1);&#xD;      if (c &gt;= 0xD800 &amp;&amp; c &lt;= 0xDBFF) {&#xD;        this.lastNeed = 2;&#xD;        this.lastTotal = 4;&#xD;        this.lastChar[0] = buf[buf.length - 2];&#xD;        this.lastChar[1] = buf[buf.length - 1];&#xD;        return r.slice(0, -1);&#xD;      }&#xD;    }&#xD;    return r;&#xD;  }&#xD;  this.lastNeed = 1;&#xD;  this.lastTotal = 2;&#xD;  this.lastChar[0] = buf[buf.length - 1];&#xD;  return buf.toString(&apos;utf16le&apos;, i, buf.length - 1);&#xD;}&#xD;&#xD;// For UTF-16LE we do not explicitly append special replacement characters if we&#xD;// end on a partial character, we simply let v8 handle that.&#xD;function utf16End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) {&#xD;    var end = this.lastTotal - this.lastNeed;&#xD;    return r + this.lastChar.toString(&apos;utf16le&apos;, 0, end);&#xD;  }&#xD;  return r;&#xD;}&#xD;&#xD;function base64Text(buf, i) {&#xD;  var n = (buf.length - i) % 3;&#xD;  if (n === 0) return buf.toString(&apos;base64&apos;, i);&#xD;  this.lastNeed = 3 - n;&#xD;  this.lastTotal = 3;&#xD;  if (n === 1) {&#xD;    this.lastChar[0] = buf[buf.length - 1];&#xD;  } else {&#xD;    this.lastChar[0] = buf[buf.length - 2];&#xD;    this.lastChar[1] = buf[buf.length - 1];&#xD;  }&#xD;  return buf.toString(&apos;base64&apos;, i, buf.length - n);&#xD;}&#xD;&#xD;function base64End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) return r + this.lastChar.toString(&apos;base64&apos;, 0, 3 - this.lastNeed);&#xD;  return r;&#xD;}&#xD;&#xD;// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)&#xD;function simpleWrite(buf) {&#xD;  return buf.toString(this.encoding);&#xD;}&#xD;&#xD;function simpleEnd(buf) {&#xD;  return buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 44 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var EventEmitter = __webpack_require__(12);&#xD;&#xD;var log = __webpack_require__(3);&#xD;var Runtime = __webpack_require__(57);&#xD;var sb2 = __webpack_require__(64);&#xD;var sb3 = __webpack_require__(66);&#xD;var StringUtil = __webpack_require__(67);&#xD;&#xD;var loadCostume = __webpack_require__(20);&#xD;var loadSound = __webpack_require__(21);&#xD;&#xD;var RESERVED_NAMES = [&apos;_mouse_&apos;, &apos;_stage_&apos;, &apos;_edge_&apos;, &apos;_myself_&apos;, &apos;_random_&apos;];&#xD;&#xD;/**&#xD; * Handles connections between blocks, stage, and extensions.&#xD; * @constructor&#xD; */&#xD;&#xD;var VirtualMachine = function (_EventEmitter) {&#xD;    _inherits(VirtualMachine, _EventEmitter);&#xD;&#xD;    function VirtualMachine() {&#xD;        _classCallCheck(this, VirtualMachine);&#xD;&#xD;        /**&#xD;         * VM runtime, to store blocks, I/O devices, sprites/targets, etc.&#xD;         * @type {!Runtime}&#xD;         */&#xD;        var _this = _possibleConstructorReturn(this, (VirtualMachine.__proto__ || Object.getPrototypeOf(VirtualMachine)).call(this));&#xD;&#xD;        _this.runtime = new Runtime();&#xD;        /**&#xD;         * The "currently editing"/selected target ID for the VM.&#xD;         * Block events from any Blockly workspace are routed to this target.&#xD;         * @type {!string}&#xD;         */&#xD;        _this.editingTarget = null;&#xD;        // Runtime emits are passed along as VM emits.&#xD;        _this.runtime.on(Runtime.SCRIPT_GLOW_ON, function (glowData) {&#xD;            _this.emit(Runtime.SCRIPT_GLOW_ON, glowData);&#xD;        });&#xD;        _this.runtime.on(Runtime.SCRIPT_GLOW_OFF, function (glowData) {&#xD;            _this.emit(Runtime.SCRIPT_GLOW_OFF, glowData);&#xD;        });&#xD;        _this.runtime.on(Runtime.BLOCK_GLOW_ON, function (glowData) {&#xD;            _this.emit(Runtime.BLOCK_GLOW_ON, glowData);&#xD;        });&#xD;        _this.runtime.on(Runtime.BLOCK_GLOW_OFF, function (glowData) {&#xD;            _this.emit(Runtime.BLOCK_GLOW_OFF, glowData);&#xD;        });&#xD;        _this.runtime.on(Runtime.PROJECT_RUN_START, function () {&#xD;            _this.emit(Runtime.PROJECT_RUN_START);&#xD;        });&#xD;        _this.runtime.on(Runtime.PROJECT_RUN_STOP, function () {&#xD;            _this.emit(Runtime.PROJECT_RUN_STOP);&#xD;        });&#xD;        _this.runtime.on(Runtime.VISUAL_REPORT, function (visualReport) {&#xD;            _this.emit(Runtime.VISUAL_REPORT, visualReport);&#xD;        });&#xD;        _this.runtime.on(Runtime.TARGETS_UPDATE, function () {&#xD;            _this.emitTargetsUpdate();&#xD;        });&#xD;        _this.runtime.on(Runtime.MONITORS_UPDATE, function (monitorList) {&#xD;            _this.emit(Runtime.MONITORS_UPDATE, monitorList);&#xD;        });&#xD;&#xD;        _this.blockListener = _this.blockListener.bind(_this);&#xD;        _this.flyoutBlockListener = _this.flyoutBlockListener.bind(_this);&#xD;        _this.monitorBlockListener = _this.monitorBlockListener.bind(_this);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Start running the VM - do this before anything else.&#xD;     */&#xD;&#xD;&#xD;    _createClass(VirtualMachine, [{&#xD;        key: &apos;start&apos;,&#xD;        value: function start() {&#xD;            this.runtime.start();&#xD;        }&#xD;&#xD;        /**&#xD;         * "Green flag" handler - start all threads starting with a green flag.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;greenFlag&apos;,&#xD;        value: function greenFlag() {&#xD;            this.runtime.greenFlag();&#xD;        }&#xD;&#xD;        /**&#xD;         * Set whether the VM is in "turbo mode."&#xD;         * When true, loops don&apos;t yield to redraw.&#xD;         * @param {boolean} turboModeOn Whether turbo mode should be set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setTurboMode&apos;,&#xD;        value: function setTurboMode(turboModeOn) {&#xD;            this.runtime.turboMode = !!turboModeOn;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set whether the VM is in 2.0 "compatibility mode."&#xD;         * When true, ticks go at 2.0 speed (30 TPS).&#xD;         * @param {boolean} compatibilityModeOn Whether compatibility mode is set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setCompatibilityMode&apos;,&#xD;        value: function setCompatibilityMode(compatibilityModeOn) {&#xD;            this.runtime.setCompatibilityMode(!!compatibilityModeOn);&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop all threads and running activities.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopAll&apos;,&#xD;        value: function stopAll() {&#xD;            this.runtime.stopAll();&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear out current running project data.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clear&apos;,&#xD;        value: function clear() {&#xD;            this.runtime.dispose();&#xD;            this.editingTarget = null;&#xD;            this.emitTargetsUpdate();&#xD;        }&#xD;&#xD;        /**&#xD;         * Get data for playground. Data comes back in an emitted event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getPlaygroundData&apos;,&#xD;        value: function getPlaygroundData() {&#xD;            var instance = this;&#xD;            // Only send back thread data for the current editingTarget.&#xD;            var threadData = this.runtime.threads.filter(function (thread) {&#xD;                return thread.target === instance.editingTarget;&#xD;            });&#xD;            // Remove the target key, since it&apos;s a circular reference.&#xD;            var filteredThreadData = JSON.stringify(threadData, function (key, value) {&#xD;                if (key === &apos;target&apos;) return;&#xD;                return value;&#xD;            }, 2);&#xD;            this.emit(&apos;playgroundData&apos;, {&#xD;                blocks: this.editingTarget.blocks,&#xD;                threads: filteredThreadData&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Post I/O data to the virtual devices.&#xD;         * @param {?string} device Name of virtual I/O device.&#xD;         * @param {object} data Any data object to post to the I/O device.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;postIOData&apos;,&#xD;        value: function postIOData(device, data) {&#xD;            if (this.runtime.ioDevices[device]) {&#xD;                this.runtime.ioDevices[device].postData(data);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Load a project from a Scratch 2.0 JSON representation.&#xD;         * @param {?string} json JSON string representing the project.&#xD;         * @return {!Promise} Promise that resolves after targets are installed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;loadProject&apos;,&#xD;        value: function loadProject(json) {&#xD;            // @todo: Handle other formats, e.g., Scratch 1.4, Scratch 3.0.&#xD;            return this.fromJSON(json);&#xD;        }&#xD;&#xD;        /**&#xD;         * Load a project from the Scratch web site, by ID.&#xD;         * @param {string} id - the ID of the project to download, as a string.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;downloadProjectId&apos;,&#xD;        value: function downloadProjectId(id) {&#xD;            var storage = this.runtime.storage;&#xD;            if (!storage) {&#xD;                log.error(&apos;No storage module present; cannot load project: &apos;, id);&#xD;                return;&#xD;            }&#xD;            var vm = this;&#xD;            var promise = storage.load(storage.AssetType.Project, id);&#xD;            promise.then(function (projectAsset) {&#xD;                vm.loadProject(projectAsset.decodeText());&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {string} Project in a Scratch 3.0 JSON representation.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;saveProjectSb3&apos;,&#xD;        value: function saveProjectSb3() {&#xD;            // @todo: Handle other formats, e.g., Scratch 1.4, Scratch 2.0.&#xD;            return this.toJSON();&#xD;        }&#xD;&#xD;        /**&#xD;         * Export project as a Scratch 3.0 JSON representation.&#xD;         * @return {string} Serialized state of the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toJSON&apos;,&#xD;        value: function toJSON() {&#xD;            return JSON.stringify(sb3.serialize(this.runtime));&#xD;        }&#xD;&#xD;        /**&#xD;         * Load a project from a Scratch JSON representation.&#xD;         * @param {string} json JSON string representing a project.&#xD;         * @returns {Promise} Promise that resolves after the project has loaded&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;fromJSON&apos;,&#xD;        value: function fromJSON(json) {&#xD;            var _this2 = this;&#xD;&#xD;            // Clear the current runtime&#xD;            this.clear();&#xD;&#xD;            // Validate &amp; parse&#xD;            if (typeof json !== &apos;string&apos;) {&#xD;                log.error(&apos;Failed to parse project. Non-string supplied to fromJSON.&apos;);&#xD;                return;&#xD;            }&#xD;            json = JSON.parse(json);&#xD;            if ((typeof json === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(json)) !== &apos;object&apos;) {&#xD;                log.error(&apos;Failed to parse project. JSON supplied to fromJSON is not an object.&apos;);&#xD;                return;&#xD;            }&#xD;&#xD;            // Establish version, deserialize, and load into runtime&#xD;            // @todo Support Scratch 1.4&#xD;            // @todo This is an extremely naïve / dangerous way of determining version.&#xD;            //       See `scratch-parser` for a more sophisticated validation&#xD;            //       methodology that should be adapted for use here&#xD;            var deserializer = void 0;&#xD;            if (typeof json.meta !== &apos;undefined&apos; &amp;&amp; typeof json.meta.semver !== &apos;undefined&apos;) {&#xD;                deserializer = sb3;&#xD;            } else {&#xD;                deserializer = sb2;&#xD;            }&#xD;&#xD;            return deserializer.deserialize(json, this.runtime).then(function (targets) {&#xD;                _this2.clear();&#xD;                for (var n = 0; n &lt; targets.length; n++) {&#xD;                    if (targets[n] !== null) {&#xD;                        _this2.runtime.targets.push(targets[n]);&#xD;                        targets[n].updateAllDrawableProperties();&#xD;                    }&#xD;                }&#xD;                // Select the first target for editing, e.g., the first sprite.&#xD;                if (_this2.runtime.targets.length &gt; 1) {&#xD;                    _this2.editingTarget = _this2.runtime.targets[1];&#xD;                } else {&#xD;                    _this2.editingTarget = _this2.runtime.targets[0];&#xD;                }&#xD;&#xD;                // Update the VM user&apos;s knowledge of targets and blocks on the workspace.&#xD;                _this2.emitTargetsUpdate();&#xD;                _this2.emitWorkspaceUpdate();&#xD;                _this2.runtime.setEditingTarget(_this2.editingTarget);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a single sprite from the "Sprite2" (i.e., SB2 sprite) format.&#xD;         * @param {string} json JSON string representing the sprite.&#xD;         * @returns {Promise} Promise that resolves after the sprite is added&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;addSprite2&apos;,&#xD;        value: function addSprite2(json) {&#xD;            var _this3 = this;&#xD;&#xD;            // Validate &amp; parse&#xD;            if (typeof json !== &apos;string&apos;) {&#xD;                log.error(&apos;Failed to parse sprite. Non-string supplied to addSprite2.&apos;);&#xD;                return;&#xD;            }&#xD;            json = JSON.parse(json);&#xD;            if ((typeof json === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(json)) !== &apos;object&apos;) {&#xD;                log.error(&apos;Failed to parse sprite. JSON supplied to addSprite2 is not an object.&apos;);&#xD;                return;&#xD;            }&#xD;&#xD;            // Select new sprite.&#xD;            return sb2.deserialize(json, this.runtime, true).then(function (targets) {&#xD;                _this3.runtime.targets.push(targets[0]);&#xD;                _this3.editingTarget = targets[0];&#xD;                _this3.editingTarget.updateAllDrawableProperties();&#xD;&#xD;                // Update the VM user&apos;s knowledge of targets and blocks on the workspace.&#xD;                _this3.emitTargetsUpdate();&#xD;                _this3.emitWorkspaceUpdate();&#xD;                _this3.runtime.setEditingTarget(_this3.editingTarget);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a costume to the current editing target.&#xD;         * @param {string} md5ext - the MD5 and extension of the costume to be loaded.&#xD;         * @param {!object} costumeObject Object representing the costume.&#xD;         * @property {int} skinId - the ID of the costume&apos;s render skin, once installed.&#xD;         * @property {number} rotationCenterX - the X component of the costume&apos;s origin.&#xD;         * @property {number} rotationCenterY - the Y component of the costume&apos;s origin.&#xD;         * @property {number} [bitmapResolution] - the resolution scale for a bitmap costume.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;addCostume&apos;,&#xD;        value: function addCostume(md5ext, costumeObject) {&#xD;            var _this4 = this;&#xD;&#xD;            loadCostume(md5ext, costumeObject, this.runtime).then(function () {&#xD;                _this4.editingTarget.sprite.costumes.push(costumeObject);&#xD;                _this4.editingTarget.setCostume(_this4.editingTarget.sprite.costumes.length - 1);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Delete a costume from the current editing target.&#xD;         * @param {int} costumeIndex - the index of the costume to be removed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteCostume&apos;,&#xD;        value: function deleteCostume(costumeIndex) {&#xD;            this.editingTarget.deleteCostume(costumeIndex);&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a sound to the current editing target.&#xD;         * @param {!object} soundObject Object representing the costume.&#xD;         * @returns {?Promise} - a promise that resolves when the sound has been decoded and added&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;addSound&apos;,&#xD;        value: function addSound(soundObject) {&#xD;            var _this5 = this;&#xD;&#xD;            return loadSound(soundObject, this.runtime).then(function () {&#xD;                _this5.editingTarget.sprite.sounds.push(soundObject);&#xD;                _this5.emitTargetsUpdate();&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Delete a sound from the current editing target.&#xD;         * @param {int} soundIndex - the index of the sound to be removed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteSound&apos;,&#xD;        value: function deleteSound(soundIndex) {&#xD;            this.editingTarget.deleteSound(soundIndex);&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a backdrop to the stage.&#xD;         * @param {string} md5ext - the MD5 and extension of the backdrop to be loaded.&#xD;         * @param {!object} backdropObject Object representing the backdrop.&#xD;         * @property {int} skinId - the ID of the backdrop&apos;s render skin, once installed.&#xD;         * @property {number} rotationCenterX - the X component of the backdrop&apos;s origin.&#xD;         * @property {number} rotationCenterY - the Y component of the backdrop&apos;s origin.&#xD;         * @property {number} [bitmapResolution] - the resolution scale for a bitmap backdrop.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;addBackdrop&apos;,&#xD;        value: function addBackdrop(md5ext, backdropObject) {&#xD;            var _this6 = this;&#xD;&#xD;            loadCostume(md5ext, backdropObject, this.runtime).then(function () {&#xD;                var stage = _this6.runtime.getTargetForStage();&#xD;                stage.sprite.costumes.push(backdropObject);&#xD;                stage.setCostume(stage.sprite.costumes.length - 1);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Rename a sprite.&#xD;         * @param {string} targetId ID of a target whose sprite to rename.&#xD;         * @param {string} newName New name of the sprite.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;renameSprite&apos;,&#xD;        value: function renameSprite(targetId, newName) {&#xD;            var target = this.runtime.getTargetById(targetId);&#xD;            if (target) {&#xD;                if (!target.isSprite()) {&#xD;                    throw new Error(&apos;Cannot rename non-sprite targets.&apos;);&#xD;                }&#xD;                var sprite = target.sprite;&#xD;                if (!sprite) {&#xD;                    throw new Error(&apos;No sprite associated with this target.&apos;);&#xD;                }&#xD;                if (newName &amp;&amp; RESERVED_NAMES.indexOf(newName) === -1) {&#xD;                    var names = this.runtime.targets.filter(function (runtimeTarget) {&#xD;                        return runtimeTarget.isSprite() &amp;&amp; runtimeTarget.id !== target.id;&#xD;                    }).map(function (runtimeTarget) {&#xD;                        return runtimeTarget.sprite.name;&#xD;                    });&#xD;                    sprite.name = StringUtil.unusedName(newName, names);&#xD;                }&#xD;                this.emitTargetsUpdate();&#xD;            } else {&#xD;                throw new Error(&apos;No target with the provided id.&apos;);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Delete a sprite and all its clones.&#xD;         * @param {string} targetId ID of a target whose sprite to delete.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;deleteSprite&apos;,&#xD;        value: function deleteSprite(targetId) {&#xD;            var target = this.runtime.getTargetById(targetId);&#xD;            if (target) {&#xD;                if (!target.isSprite()) {&#xD;                    throw new Error(&apos;Cannot delete non-sprite targets.&apos;);&#xD;                }&#xD;                var sprite = target.sprite;&#xD;                if (!sprite) {&#xD;                    throw new Error(&apos;No sprite associated with this target.&apos;);&#xD;                }&#xD;                var currentEditingTarget = this.editingTarget;&#xD;                for (var i = 0; i &lt; sprite.clones.length; i++) {&#xD;                    var clone = sprite.clones[i];&#xD;                    this.runtime.stopForTarget(sprite.clones[i]);&#xD;                    this.runtime.disposeTarget(sprite.clones[i]);&#xD;                    // Ensure editing target is switched if we are deleting it.&#xD;                    if (clone === currentEditingTarget) {&#xD;                        this.setEditingTarget(this.runtime.targets[0].id);&#xD;                    }&#xD;                }&#xD;                // Sprite object should be deleted by GC.&#xD;                this.emitTargetsUpdate();&#xD;            } else {&#xD;                throw new Error(&apos;No target with the provided id.&apos;);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the audio engine for the VM/runtime&#xD;         * @param {!AudioEngine} audioEngine The audio engine to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachAudioEngine&apos;,&#xD;        value: function attachAudioEngine(audioEngine) {&#xD;            this.runtime.attachAudioEngine(audioEngine);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the renderer for the VM/runtime&#xD;         * @param {!RenderWebGL} renderer The renderer to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachRenderer&apos;,&#xD;        value: function attachRenderer(renderer) {&#xD;            this.runtime.attachRenderer(renderer);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the storage module for the VM/runtime&#xD;         * @param {!ScratchStorage} storage The storage module to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachStorage&apos;,&#xD;        value: function attachStorage(storage) {&#xD;            this.runtime.attachStorage(storage);&#xD;        }&#xD;&#xD;        /**&#xD;         * Handle a Blockly event for the current editing target.&#xD;         * @param {!Blockly.Event} e Any Blockly event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;blockListener&apos;,&#xD;        value: function blockListener(e) {&#xD;            if (this.editingTarget) {&#xD;                this.editingTarget.blocks.blocklyListen(e, this.runtime);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Handle a Blockly event for the flyout.&#xD;         * @param {!Blockly.Event} e Any Blockly event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;flyoutBlockListener&apos;,&#xD;        value: function flyoutBlockListener(e) {&#xD;            this.runtime.flyoutBlocks.blocklyListen(e, this.runtime);&#xD;        }&#xD;&#xD;        /**&#xD;         * Handle a Blockly event for the flyout to be passed to the monitor container.&#xD;         * @param {!Blockly.Event} e Any Blockly event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;monitorBlockListener&apos;,&#xD;        value: function monitorBlockListener(e) {&#xD;            // Filter events by type, since monitor blocks only need to listen to these events.&#xD;            // Monitor blocks shouldn&apos;t be destroyed when flyout blocks are deleted.&#xD;            if ([&apos;create&apos;, &apos;change&apos;].indexOf(e.type) !== -1) {&#xD;                this.runtime.monitorBlocks.blocklyListen(e, this.runtime);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set an editing target. An editor UI can use this function to switch&#xD;         * between editing different targets, sprites, etc.&#xD;         * After switching the editing target, the VM may emit updates&#xD;         * to the list of targets and any attached workspace blocks&#xD;         * (see `emitTargetsUpdate` and `emitWorkspaceUpdate`).&#xD;         * @param {string} targetId Id of target to set as editing.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setEditingTarget&apos;,&#xD;        value: function setEditingTarget(targetId) {&#xD;            // Has the target id changed? If not, exit.&#xD;            if (targetId === this.editingTarget.id) {&#xD;                return;&#xD;            }&#xD;            var target = this.runtime.getTargetById(targetId);&#xD;            if (target) {&#xD;                this.editingTarget = target;&#xD;                // Emit appropriate UI updates.&#xD;                this.emitTargetsUpdate();&#xD;                this.emitWorkspaceUpdate();&#xD;                this.runtime.setEditingTarget(target);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit metadata about available targets.&#xD;         * An editor UI could use this to display a list of targets and show&#xD;         * the currently editing one.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;emitTargetsUpdate&apos;,&#xD;        value: function emitTargetsUpdate() {&#xD;            this.emit(&apos;targetsUpdate&apos;, {&#xD;                // [[target id, human readable target name], ...].&#xD;                targetList: this.runtime.targets.filter(&#xD;                // Don&apos;t report clones.&#xD;                function (target) {&#xD;                    return !target.hasOwnProperty(&apos;isOriginal&apos;) || target.isOriginal;&#xD;                }).map(function (target) {&#xD;                    return target.toJSON();&#xD;                }),&#xD;                // Currently editing target id.&#xD;                editingTarget: this.editingTarget ? this.editingTarget.id : null&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit an Blockly/scratch-blocks compatible XML representation&#xD;         * of the current editing target&apos;s blocks.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;emitWorkspaceUpdate&apos;,&#xD;        value: function emitWorkspaceUpdate() {&#xD;            this.emit(&apos;workspaceUpdate&apos;, {&#xD;                xml: this.editingTarget.blocks.toXML()&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a target id for a drawable id. Useful for interacting with the renderer&#xD;         * @param {int} drawableId The drawable id to request the target id for&#xD;         * @returns {?string} The target id, if found. Will also be null if the target found is the stage.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTargetIdForDrawableId&apos;,&#xD;        value: function getTargetIdForDrawableId(drawableId) {&#xD;            var target = this.runtime.getTargetByDrawableId(drawableId);&#xD;            if (target &amp;&amp; target.hasOwnProperty(&apos;id&apos;) &amp;&amp; target.hasOwnProperty(&apos;isStage&apos;) &amp;&amp; !target.isStage) {&#xD;                return target.id;&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Put a target into a "drag" state, during which its X/Y positions will be unaffected&#xD;         * by blocks.&#xD;         * @param {string} targetId The id for the target to put into a drag state&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;startDrag&apos;,&#xD;        value: function startDrag(targetId) {&#xD;            var target = this.runtime.getTargetById(targetId);&#xD;            if (target) {&#xD;                target.startDrag();&#xD;                this.setEditingTarget(target.id);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Remove a target from a drag state, so blocks may begin affecting X/Y position again&#xD;         * @param {string} targetId The id for the target to remove from the drag state&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopDrag&apos;,&#xD;        value: function stopDrag(targetId) {&#xD;            var target = this.runtime.getTargetById(targetId);&#xD;            if (target) target.stopDrag();&#xD;        }&#xD;&#xD;        /**&#xD;         * Post/edit sprite info for the current editing target.&#xD;         * @param {object} data An object with sprite info data to set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;postSpriteInfo&apos;,&#xD;        value: function postSpriteInfo(data) {&#xD;            this.editingTarget.postSpriteInfo(data);&#xD;        }&#xD;    }]);&#xD;&#xD;    return VirtualMachine;&#xD;}(EventEmitter);&#xD;&#xD;module.exports = VirtualMachine;&#xD;&#xD;/***/ }),&#xD;/* 45 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;var Timer = __webpack_require__(14);&#xD;&#xD;var Scratch3ControlBlocks = function () {&#xD;    function Scratch3ControlBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3ControlBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3ControlBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                control_repeat: this.repeat,&#xD;                control_repeat_until: this.repeatUntil,&#xD;                control_forever: this.forever,&#xD;                control_wait: this.wait,&#xD;                control_wait_until: this.waitUntil,&#xD;                control_if: this.if,&#xD;                control_if_else: this.ifElse,&#xD;                control_stop: this.stop,&#xD;                control_create_clone_of: this.createClone,&#xD;                control_delete_this_clone: this.deleteClone,&#xD;					 control_when: this.when&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;getHats&apos;,&#xD;        value: function getHats() {&#xD;            return {&#xD;                control_start_as_clone: {&#xD;                    restartExistingThreads: false&#xD;                },&#xD;                control_when: {&#xD;                    restartExistingThreads: false,&#xD;						  edgeActivated: true&#xD;                },&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;repeat&apos;,&#xD;        value: function repeat(args, util) {&#xD;            var times = Math.floor(Cast.toNumber(args.TIMES));&#xD;            // Initialize loop&#xD;            if (typeof util.stackFrame.loopCounter === &apos;undefined&apos;) {&#xD;                util.stackFrame.loopCounter = times;&#xD;            }&#xD;            // Only execute once per frame.&#xD;            // When the branch finishes, `repeat` will be executed again and&#xD;            // the second branch will be taken, yielding for the rest of the frame.&#xD;            // Decrease counter&#xD;            util.stackFrame.loopCounter--;&#xD;            // If we still have some left, start the branch.&#xD;            if (util.stackFrame.loopCounter &gt;= 0) {&#xD;                util.startBranch(1, true);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;repeatUntil&apos;,&#xD;        value: function repeatUntil(args, util) {&#xD;            var condition = Cast.toBoolean(args.CONDITION);&#xD;            // If the condition is true, start the branch.&#xD;            if (!condition) {&#xD;                util.startBranch(1, true);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;waitUntil&apos;,&#xD;        value: function waitUntil(args, util) {&#xD;            var condition = Cast.toBoolean(args.CONDITION);&#xD;            if (!condition) {&#xD;                util.yield();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;forever&apos;,&#xD;        value: function forever(args, util) {&#xD;            util.startBranch(1, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;wait&apos;,&#xD;        value: function wait(args, util) {&#xD;            if (!util.stackFrame.timer) {&#xD;                util.stackFrame.timer = new Timer();&#xD;                util.stackFrame.timer.start();&#xD;                util.yield();&#xD;                this.runtime.requestRedraw();&#xD;            } else {&#xD;                var duration = Math.max(0, 1000 * Cast.toNumber(args.DURATION));&#xD;                if (util.stackFrame.timer.timeElapsed() &lt; duration) {&#xD;                    util.yield();&#xD;                }&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;if&apos;,&#xD;        value: function _if(args, util) {&#xD;            var condition = Cast.toBoolean(args.CONDITION);&#xD;            if (condition) {&#xD;                util.startBranch(1, false);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;ifElse&apos;,&#xD;        value: function ifElse(args, util) {&#xD;            var condition = Cast.toBoolean(args.CONDITION);&#xD;            if (condition) {&#xD;                util.startBranch(1, false);&#xD;            } else {&#xD;                util.startBranch(2, false);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;stop&apos;,&#xD;        value: function stop(args, util) {&#xD;            var option = args.STOP_OPTION;&#xD;            if (option === &apos;all&apos;) {&#xD;                util.stopAll();&#xD;            } else if (option === &apos;other scripts in sprite&apos; || option === &apos;other scripts in stage&apos;) {&#xD;                util.stopOtherTargetThreads();&#xD;            } else if (option === &apos;this script&apos;) {&#xD;                util.stopThisScript();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;createClone&apos;,&#xD;        value: function createClone(args, util) {&#xD;            var cloneTarget = void 0;&#xD;            if (args.CLONE_OPTION === &apos;_myself_&apos;) {&#xD;                cloneTarget = util.target;&#xD;            } else {&#xD;                cloneTarget = this.runtime.getSpriteTargetByName(args.CLONE_OPTION);&#xD;            }&#xD;            if (!cloneTarget) {&#xD;                return;&#xD;            }&#xD;            var newClone = cloneTarget.makeClone();&#xD;            if (newClone) {&#xD;                this.runtime.targets.push(newClone);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;deleteClone&apos;,&#xD;        value: function deleteClone(args, util) {&#xD;            if (util.target.isOriginal) return;&#xD;            this.runtime.disposeTarget(util.target);&#xD;            this.runtime.stopForTarget(util.target);&#xD;        }&#xD;	 }, {&#xD;        key: &apos;when&apos;,&#xD;        value: function when(args, util) {&#xD;            var condition = Cast.toBoolean(args.CONDITION);&#xD;            if (condition === true) {&#xD;                return true;&#xD;            }&#xD;            return false;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3ControlBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3ControlBlocks;&#xD;&#xD;/***/ }),&#xD;/* 46 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;&#xD;var Scratch3DataBlocks = function () {&#xD;    function Scratch3DataBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3DataBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3DataBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                data_variable: this.getVariable,&#xD;                data_setvariableto: this.setVariableTo,&#xD;                data_changevariableby: this.changeVariableBy,&#xD;                data_listcontents: this.getListContents,&#xD;                data_addtolist: this.addToList,&#xD;                data_deleteoflist: this.deleteOfList,&#xD;                data_insertatlist: this.insertAtList,&#xD;                data_replaceitemoflist: this.replaceItemOfList,&#xD;                data_itemoflist: this.getItemOfList,&#xD;                data_lengthoflist: this.lengthOfList,&#xD;                data_listcontainsitem: this.listContainsItem&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;getVariable&apos;,&#xD;        value: function getVariable(args, util) {&#xD;            var variable = util.target.lookupOrCreateVariable(args.VARIABLE);&#xD;            return variable.value;&#xD;        }&#xD;    }, {&#xD;        key: &apos;setVariableTo&apos;,&#xD;        value: function setVariableTo(args, util) {&#xD;            var variable = util.target.lookupOrCreateVariable(args.VARIABLE);&#xD;            variable.value = args.VALUE;&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeVariableBy&apos;,&#xD;        value: function changeVariableBy(args, util) {&#xD;            var variable = util.target.lookupOrCreateVariable(args.VARIABLE);&#xD;            var castedValue = Cast.toNumber(variable.value);&#xD;            var dValue = Cast.toNumber(args.VALUE);&#xD;            variable.value = castedValue + dValue;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getListContents&apos;,&#xD;        value: function getListContents(args, util) {&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            // Determine if the list is all single letters.&#xD;            // If it is, report contents joined together with no separator.&#xD;            // If it&apos;s not, report contents joined together with a space.&#xD;            var allSingleLetters = true;&#xD;            for (var i = 0; i &lt; list.contents.length; i++) {&#xD;                var listItem = list.contents[i];&#xD;                if (!(typeof listItem === &apos;string&apos; &amp;&amp; listItem.length === 1)) {&#xD;                    allSingleLetters = false;&#xD;                    break;&#xD;                }&#xD;            }&#xD;            if (allSingleLetters) {&#xD;                return list.contents.join(&apos;&apos;);&#xD;            }&#xD;            return list.contents.join(&apos; &apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;addToList&apos;,&#xD;        value: function addToList(args, util) {&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            list.contents.push(args.ITEM);&#xD;        }&#xD;    }, {&#xD;        key: &apos;deleteOfList&apos;,&#xD;        value: function deleteOfList(args, util) {&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            var index = Cast.toListIndex(args.INDEX, list.contents.length);&#xD;            if (index === Cast.LIST_INVALID) {&#xD;                return;&#xD;            } else if (index === Cast.LIST_ALL) {&#xD;                list.contents = [];&#xD;                return;&#xD;            }&#xD;            list.contents.splice(index - 1, 1);&#xD;        }&#xD;    }, {&#xD;        key: &apos;insertAtList&apos;,&#xD;        value: function insertAtList(args, util) {&#xD;            var item = args.ITEM;&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            var index = Cast.toListIndex(args.INDEX, list.contents.length + 1);&#xD;            if (index === Cast.LIST_INVALID) {&#xD;                return;&#xD;            }&#xD;            list.contents.splice(index - 1, 0, item);&#xD;        }&#xD;    }, {&#xD;        key: &apos;replaceItemOfList&apos;,&#xD;        value: function replaceItemOfList(args, util) {&#xD;            var item = args.ITEM;&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            var index = Cast.toListIndex(args.INDEX, list.contents.length);&#xD;            if (index === Cast.LIST_INVALID) {&#xD;                return;&#xD;            }&#xD;            list.contents.splice(index - 1, 1, item);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getItemOfList&apos;,&#xD;        value: function getItemOfList(args, util) {&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            var index = Cast.toListIndex(args.INDEX, list.contents.length);&#xD;            if (index === Cast.LIST_INVALID) {&#xD;                return &apos;&apos;;&#xD;            }&#xD;            return list.contents[index - 1];&#xD;        }&#xD;    }, {&#xD;        key: &apos;lengthOfList&apos;,&#xD;        value: function lengthOfList(args, util) {&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            return list.contents.length;&#xD;        }&#xD;    }, {&#xD;        key: &apos;listContainsItem&apos;,&#xD;        value: function listContainsItem(args, util) {&#xD;            var item = args.ITEM;&#xD;            var list = util.target.lookupOrCreateList(args.LIST);&#xD;            if (list.contents.indexOf(item) &gt;= 0) {&#xD;                return true;&#xD;            }&#xD;            // Try using Scratch comparison operator on each item.&#xD;            // (Scratch considers the string &apos;123&apos; equal to the number 123).&#xD;            for (var i = 0; i &lt; list.contents.length; i++) {&#xD;                if (Cast.compare(list.contents[i], item) === 0) {&#xD;                    return true;&#xD;                }&#xD;            }&#xD;            return false;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3DataBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3DataBlocks;&#xD;&#xD;/***/ }),&#xD;/* 47 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;&#xD;var Scratch3EventBlocks = function () {&#xD;    function Scratch3EventBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3EventBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3EventBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                event_broadcast: this.broadcast,&#xD;                event_broadcastandwait: this.broadcastAndWait,&#xD;                event_whengreaterthan: this.hatGreaterThanPredicate&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;getHats&apos;,&#xD;        value: function getHats() {&#xD;            return {&#xD;                event_whenflagclicked: {&#xD;                    restartExistingThreads: true&#xD;                },&#xD;                event_whenkeypressed: {&#xD;                    restartExistingThreads: false&#xD;                },&#xD;                event_whenthisspriteclicked: {&#xD;                    restartExistingThreads: true&#xD;                },&#xD;                event_whenbackdropswitchesto: {&#xD;                    restartExistingThreads: true&#xD;                },&#xD;                event_whengreaterthan: {&#xD;                    restartExistingThreads: false,&#xD;                    edgeActivated: true&#xD;                },&#xD;                event_whenbroadcastreceived: {&#xD;                    restartExistingThreads: true&#xD;                }&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;hatGreaterThanPredicate&apos;,&#xD;        value: function hatGreaterThanPredicate(args, util) {&#xD;            var option = Cast.toString(args.WHENGREATERTHANMENU).toLowerCase();&#xD;            var value = Cast.toNumber(args.VALUE);&#xD;            // @todo: Other cases :)&#xD;            if (option === &apos;timer&apos;) {&#xD;                return util.ioQuery(&apos;clock&apos;, &apos;projectTimer&apos;) &gt; value;&#xD;            }&#xD;            return false;&#xD;        }&#xD;    }, {&#xD;        key: &apos;broadcast&apos;,&#xD;        value: function broadcast(args, util) {&#xD;            var broadcastOption = Cast.toString(args.BROADCAST_OPTION);&#xD;            util.startHats(&apos;event_whenbroadcastreceived&apos;, {&#xD;                BROADCAST_OPTION: broadcastOption&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;broadcastAndWait&apos;,&#xD;        value: function broadcastAndWait(args, util) {&#xD;            var broadcastOption = Cast.toString(args.BROADCAST_OPTION);&#xD;            // Have we run before, starting threads?&#xD;            if (!util.stackFrame.startedThreads) {&#xD;                // No - start hats for this broadcast.&#xD;                util.stackFrame.startedThreads = util.startHats(&apos;event_whenbroadcastreceived&apos;, {&#xD;                    BROADCAST_OPTION: broadcastOption&#xD;                });&#xD;                if (util.stackFrame.startedThreads.length === 0) {&#xD;                    // Nothing was started.&#xD;                    return;&#xD;                }&#xD;            }&#xD;            // We&apos;ve run before; check if the wait is still going on.&#xD;            var instance = this;&#xD;            var waiting = util.stackFrame.startedThreads.some(function (thread) {&#xD;                return instance.runtime.isActiveThread(thread);&#xD;            });&#xD;            if (waiting) {&#xD;                util.yield();&#xD;            }&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3EventBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3EventBlocks;&#xD;&#xD;/***/ }),&#xD;/* 48 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;&#xD;var Scratch3LooksBlocks = function () {&#xD;    function Scratch3LooksBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3LooksBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3LooksBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                looks_say: this.say,&#xD;                looks_sayforsecs: this.sayforsecs,&#xD;                looks_think: this.think,&#xD;                looks_thinkforsecs: this.sayforsecs,&#xD;                looks_show: this.show,&#xD;                looks_hide: this.hide,&#xD;                looks_switchcostumeto: this.switchCostume,&#xD;                looks_switchbackdropto: this.switchBackdrop,&#xD;                looks_switchbackdroptoandwait: this.switchBackdropAndWait,&#xD;                looks_nextcostume: this.nextCostume,&#xD;                looks_nextbackdrop: this.nextBackdrop,&#xD;                looks_changeeffectby: this.changeEffect,&#xD;                looks_seteffectto: this.setEffect,&#xD;                looks_cleargraphiceffects: this.clearEffects,&#xD;                looks_changesizeby: this.changeSize,&#xD;                looks_setsizeto: this.setSize,&#xD;                looks_gotofront: this.goToFront,&#xD;                looks_gobacklayers: this.goBackLayers,&#xD;                looks_size: this.getSize,&#xD;                looks_costumeorder: this.getCostumeIndex,&#xD;                looks_backdroporder: this.getBackdropIndex,&#xD;                looks_backdropname: this.getBackdropName&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;say&apos;,&#xD;        value: function say(args, util) {&#xD;            util.target.setSay(&apos;say&apos;, args.MESSAGE);&#xD;        }&#xD;    }, {&#xD;        key: &apos;sayforsecs&apos;,&#xD;        value: function sayforsecs(args, util) {&#xD;            util.target.setSay(&apos;say&apos;, args.MESSAGE);&#xD;            return new Promise(function (resolve) {&#xD;                setTimeout(function () {&#xD;                    // Clear say bubble and proceed.&#xD;                    util.target.setSay();&#xD;                    resolve();&#xD;                }, 1000 * args.SECS);&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;think&apos;,&#xD;        value: function think(args, util) {&#xD;            util.target.setSay(&apos;think&apos;, args.MESSAGE);&#xD;        }&#xD;    }, {&#xD;        key: &apos;thinkforsecs&apos;,&#xD;        value: function thinkforsecs(args, util) {&#xD;            util.target.setSay(&apos;think&apos;, args.MESSAGE);&#xD;            return new Promise(function (resolve) {&#xD;                setTimeout(function () {&#xD;                    // Clear say bubble and proceed.&#xD;                    util.target.setSay();&#xD;                    resolve();&#xD;                }, 1000 * args.SECS);&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;show&apos;,&#xD;        value: function show(args, util) {&#xD;            util.target.setVisible(true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;hide&apos;,&#xD;        value: function hide(args, util) {&#xD;            util.target.setVisible(false);&#xD;        }&#xD;&#xD;        /**&#xD;         * Utility function to set the costume or backdrop of a target.&#xD;         * Matches the behavior of Scratch 2.0 for different types of arguments.&#xD;         * @param {!Target} target Target to set costume/backdrop to.&#xD;         * @param {Any} requestedCostume Costume requested, e.g., 0, &apos;name&apos;, etc.&#xD;         * @param {boolean=} optZeroIndex Set to zero-index the requestedCostume.&#xD;         * @return {Array.&lt;!Thread&gt;} Any threads started by this switch.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_setCostumeOrBackdrop&apos;,&#xD;        value: function _setCostumeOrBackdrop(target, requestedCostume, optZeroIndex) {&#xD;            if (typeof requestedCostume === &apos;number&apos;) {&#xD;                target.setCostume(optZeroIndex ? requestedCostume : requestedCostume - 1);&#xD;            } else {&#xD;                var costumeIndex = target.getCostumeIndexByName(requestedCostume);&#xD;                if (costumeIndex &gt; -1) {&#xD;                    target.setCostume(costumeIndex);&#xD;                } else if (requestedCostume === &apos;previous costume&apos; || requestedCostume === &apos;previous backdrop&apos;) {&#xD;                    target.setCostume(target.currentCostume - 1);&#xD;                } else if (requestedCostume === &apos;next costume&apos; || requestedCostume === &apos;next backdrop&apos;) {&#xD;                    target.setCostume(target.currentCostume + 1);&#xD;                } else {&#xD;                    var forcedNumber = Number(requestedCostume);&#xD;                    if (!isNaN(forcedNumber)) {&#xD;                        target.setCostume(optZeroIndex ? forcedNumber : forcedNumber - 1);&#xD;                    }&#xD;                }&#xD;            }&#xD;            if (target === this.runtime.getTargetForStage()) {&#xD;                // Target is the stage - start hats.&#xD;                var newName = target.sprite.costumes[target.currentCostume].name;&#xD;                return this.runtime.startHats(&apos;event_whenbackdropswitchesto&apos;, {&#xD;                    BACKDROP: newName&#xD;                });&#xD;            }&#xD;            return [];&#xD;        }&#xD;    }, {&#xD;        key: &apos;switchCostume&apos;,&#xD;        value: function switchCostume(args, util) {&#xD;            this._setCostumeOrBackdrop(util.target, args.COSTUME);&#xD;        }&#xD;    }, {&#xD;        key: &apos;nextCostume&apos;,&#xD;        value: function nextCostume(args, util) {&#xD;            this._setCostumeOrBackdrop(util.target, util.target.currentCostume + 1, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;switchBackdrop&apos;,&#xD;        value: function switchBackdrop(args) {&#xD;            this._setCostumeOrBackdrop(this.runtime.getTargetForStage(), args.BACKDROP);&#xD;        }&#xD;    }, {&#xD;        key: &apos;switchBackdropAndWait&apos;,&#xD;        value: function switchBackdropAndWait(args, util) {&#xD;            // Have we run before, starting threads?&#xD;            if (!util.stackFrame.startedThreads) {&#xD;                // No - switch the backdrop.&#xD;                util.stackFrame.startedThreads = this._setCostumeOrBackdrop(this.runtime.getTargetForStage(), args.BACKDROP);&#xD;                if (util.stackFrame.startedThreads.length === 0) {&#xD;                    // Nothing was started.&#xD;                    return;&#xD;                }&#xD;            }&#xD;            // We&apos;ve run before; check if the wait is still going on.&#xD;            var instance = this;&#xD;            var waiting = util.stackFrame.startedThreads.some(function (thread) {&#xD;                return instance.runtime.isActiveThread(thread);&#xD;            });&#xD;            if (waiting) {&#xD;                util.yield();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;nextBackdrop&apos;,&#xD;        value: function nextBackdrop() {&#xD;            var stage = this.runtime.getTargetForStage();&#xD;            this._setCostumeOrBackdrop(stage, stage.currentCostume + 1, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeEffect&apos;,&#xD;        value: function changeEffect(args, util) {&#xD;            var effect = Cast.toString(args.EFFECT).toLowerCase();&#xD;            var change = Cast.toNumber(args.CHANGE);&#xD;            if (!util.target.effects.hasOwnProperty(effect)) return;&#xD;            var newValue = change + util.target.effects[effect];&#xD;            util.target.setEffect(effect, newValue);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setEffect&apos;,&#xD;        value: function setEffect(args, util) {&#xD;            var effect = Cast.toString(args.EFFECT).toLowerCase();&#xD;            var value = Cast.toNumber(args.VALUE);&#xD;            util.target.setEffect(effect, value);&#xD;        }&#xD;    }, {&#xD;        key: &apos;clearEffects&apos;,&#xD;        value: function clearEffects(args, util) {&#xD;            util.target.clearEffects();&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeSize&apos;,&#xD;        value: function changeSize(args, util) {&#xD;            var change = Cast.toNumber(args.CHANGE);&#xD;            util.target.setSize(util.target.size + change);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setSize&apos;,&#xD;        value: function setSize(args, util) {&#xD;            var size = Cast.toNumber(args.SIZE);&#xD;            util.target.setSize(size);&#xD;        }&#xD;    }, {&#xD;        key: &apos;goToFront&apos;,&#xD;        value: function goToFront(args, util) {&#xD;            util.target.goToFront();&#xD;        }&#xD;    }, {&#xD;        key: &apos;goBackLayers&apos;,&#xD;        value: function goBackLayers(args, util) {&#xD;            util.target.goBackLayers(args.NUM);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getSize&apos;,&#xD;        value: function getSize(args, util) {&#xD;            return Math.round(util.target.size);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getBackdropIndex&apos;,&#xD;        value: function getBackdropIndex() {&#xD;            var stage = this.runtime.getTargetForStage();&#xD;            return stage.currentCostume + 1;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getBackdropName&apos;,&#xD;        value: function getBackdropName() {&#xD;            var stage = this.runtime.getTargetForStage();&#xD;            return stage.sprite.costumes[stage.currentCostume].name;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getCostumeIndex&apos;,&#xD;        value: function getCostumeIndex(args, util) {&#xD;            return util.target.currentCostume + 1;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3LooksBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3LooksBlocks;&#xD;&#xD;/***/ }),&#xD;/* 49 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;var MathUtil = __webpack_require__(4);&#xD;var Timer = __webpack_require__(14);&#xD;&#xD;var Scratch3MotionBlocks = function () {&#xD;    function Scratch3MotionBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3MotionBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3MotionBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                motion_movesteps: this.moveSteps,&#xD;                motion_gotoxy: this.goToXY,&#xD;                motion_goto: this.goTo,&#xD;                motion_turnright: this.turnRight,&#xD;                motion_turnleft: this.turnLeft,&#xD;                motion_pointindirection: this.pointInDirection,&#xD;                motion_pointtowards: this.pointTowards,&#xD;                motion_glidesecstoxy: this.glide,&#xD;                motion_ifonedgebounce: this.ifOnEdgeBounce,&#xD;                motion_setrotationstyle: this.setRotationStyle,&#xD;                motion_changexby: this.changeX,&#xD;                motion_setx: this.setX,&#xD;                motion_changeyby: this.changeY,&#xD;                motion_sety: this.setY,&#xD;                motion_position: this.getXY,&#xD;                motion_xposition: this.getX,&#xD;                motion_yposition: this.getY,&#xD;                motion_direction: this.getDirection&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;moveSteps&apos;,&#xD;        value: function moveSteps(args, util) {&#xD;            var steps = Cast.toNumber(args.STEPS);&#xD;            var radians = MathUtil.degToRad(90 - util.target.direction);&#xD;            var dx = steps * Math.cos(radians);&#xD;            var dy = steps * Math.sin(radians);&#xD;            util.target.setXY(util.target.x + dx, util.target.y + dy);&#xD;        }&#xD;    }, {&#xD;        key: &apos;goToXY&apos;,&#xD;        value: function goToXY(args, util) {&#xD;            var x = Cast.toNumber(args.X);&#xD;            var y = Cast.toNumber(args.Y);&#xD;            util.target.setXY(x, y);&#xD;        }&#xD;    }, {&#xD;        key: &apos;goTo&apos;,&#xD;        value: function goTo(args, util) {&#xD;            var targetX = 0;&#xD;            var targetY = 0;&#xD;            if (args.TO === &apos;_mouse_&apos;) {&#xD;                targetX = util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;);&#xD;                targetY = util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;            } else if (args.TO === &apos;_random_&apos;) {&#xD;                var stageWidth = this.runtime.constructor.STAGE_WIDTH;&#xD;                var stageHeight = this.runtime.constructor.STAGE_HEIGHT;&#xD;                targetX = Math.round(stageWidth * (Math.random() - 0.5));&#xD;                targetY = Math.round(stageHeight * (Math.random() - 0.5));&#xD;            } else {&#xD;                var goToTarget = this.runtime.getSpriteTargetByName(args.TO);&#xD;                if (!goToTarget) return;&#xD;                targetX = goToTarget.x;&#xD;                targetY = goToTarget.y;&#xD;            }&#xD;            util.target.setXY(targetX, targetY);&#xD;        }&#xD;    }, {&#xD;        key: &apos;turnRight&apos;,&#xD;        value: function turnRight(args, util) {&#xD;            var degrees = Cast.toNumber(args.DEGREES);&#xD;            util.target.setDirection(util.target.direction + degrees);&#xD;        }&#xD;    }, {&#xD;        key: &apos;turnLeft&apos;,&#xD;        value: function turnLeft(args, util) {&#xD;            var degrees = Cast.toNumber(args.DEGREES);&#xD;            util.target.setDirection(util.target.direction - degrees);&#xD;        }&#xD;    }, {&#xD;        key: &apos;pointInDirection&apos;,&#xD;        value: function pointInDirection(args, util) {&#xD;            var direction = Cast.toNumber(args.DIRECTION);&#xD;            util.target.setDirection(direction);&#xD;        }&#xD;    }, {&#xD;        key: &apos;pointTowards&apos;,&#xD;        value: function pointTowards(args, util) {&#xD;            var targetX = 0;&#xD;            var targetY = 0;&#xD;            if (args.TOWARDS === &apos;_mouse_&apos;) {&#xD;                targetX = util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;);&#xD;                targetY = util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;            } else {&#xD;                var pointTarget = this.runtime.getSpriteTargetByName(args.TOWARDS);&#xD;                if (!pointTarget) return;&#xD;                targetX = pointTarget.x;&#xD;                targetY = pointTarget.y;&#xD;            }&#xD;&#xD;            var dx = targetX - util.target.x;&#xD;            var dy = targetY - util.target.y;&#xD;            var direction = 90 - MathUtil.radToDeg(Math.atan2(dy, dx));&#xD;            util.target.setDirection(direction);&#xD;        }&#xD;    }, {&#xD;        key: &apos;glide&apos;,&#xD;        value: function glide(args, util) {&#xD;            if (!util.stackFrame.timer) {&#xD;                // First time: save data for future use.&#xD;                util.stackFrame.timer = new Timer();&#xD;                util.stackFrame.timer.start();&#xD;                util.stackFrame.duration = Cast.toNumber(args.SECS);&#xD;                util.stackFrame.startX = util.target.x;&#xD;                util.stackFrame.startY = util.target.y;&#xD;                util.stackFrame.endX = Cast.toNumber(args.X);&#xD;                util.stackFrame.endY = Cast.toNumber(args.Y);&#xD;                if (util.stackFrame.duration &lt;= 0) {&#xD;                    // Duration too short to glide.&#xD;                    util.target.setXY(util.stackFrame.endX, util.stackFrame.endY);&#xD;                    return;&#xD;                }&#xD;                util.yield();&#xD;            } else {&#xD;                var timeElapsed = util.stackFrame.timer.timeElapsed();&#xD;                if (timeElapsed &lt; util.stackFrame.duration * 1000) {&#xD;                    // In progress: move to intermediate position.&#xD;                    var frac = timeElapsed / (util.stackFrame.duration * 1000);&#xD;                    var dx = frac * (util.stackFrame.endX - util.stackFrame.startX);&#xD;                    var dy = frac * (util.stackFrame.endY - util.stackFrame.startY);&#xD;                    util.target.setXY(util.stackFrame.startX + dx, util.stackFrame.startY + dy);&#xD;                    util.yield();&#xD;                } else {&#xD;                    // Finished: move to final position.&#xD;                    util.target.setXY(util.stackFrame.endX, util.stackFrame.endY);&#xD;                }&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;ifOnEdgeBounce&apos;,&#xD;        value: function ifOnEdgeBounce(args, util) {&#xD;            var bounds = util.target.getBounds();&#xD;            if (!bounds) {&#xD;                return;&#xD;            }&#xD;            // Measure distance to edges.&#xD;            // Values are positive when the sprite is far away,&#xD;            // and clamped to zero when the sprite is beyond.&#xD;            var stageWidth = this.runtime.constructor.STAGE_WIDTH;&#xD;            var stageHeight = this.runtime.constructor.STAGE_HEIGHT;&#xD;            var distLeft = Math.max(0, stageWidth / 2 + bounds.left);&#xD;            var distTop = Math.max(0, stageHeight / 2 - bounds.top);&#xD;            var distRight = Math.max(0, stageWidth / 2 - bounds.right);&#xD;            var distBottom = Math.max(0, stageHeight / 2 + bounds.bottom);&#xD;            // Find the nearest edge.&#xD;            var nearestEdge = &apos;&apos;;&#xD;            var minDist = Infinity;&#xD;            if (distLeft &lt; minDist) {&#xD;                minDist = distLeft;&#xD;                nearestEdge = &apos;left&apos;;&#xD;            }&#xD;            if (distTop &lt; minDist) {&#xD;                minDist = distTop;&#xD;                nearestEdge = &apos;top&apos;;&#xD;            }&#xD;            if (distRight &lt; minDist) {&#xD;                minDist = distRight;&#xD;                nearestEdge = &apos;right&apos;;&#xD;            }&#xD;            if (distBottom &lt; minDist) {&#xD;                minDist = distBottom;&#xD;                nearestEdge = &apos;bottom&apos;;&#xD;            }&#xD;            if (minDist &gt; 0) {&#xD;                return; // Not touching any edge.&#xD;            }&#xD;            // Point away from the nearest edge.&#xD;            var radians = MathUtil.degToRad(90 - util.target.direction);&#xD;            var dx = Math.cos(radians);&#xD;            var dy = -Math.sin(radians);&#xD;            if (nearestEdge === &apos;left&apos;) {&#xD;                dx = Math.max(0.2, Math.abs(dx));&#xD;            } else if (nearestEdge === &apos;top&apos;) {&#xD;                dy = Math.max(0.2, Math.abs(dy));&#xD;            } else if (nearestEdge === &apos;right&apos;) {&#xD;                dx = 0 - Math.max(0.2, Math.abs(dx));&#xD;            } else if (nearestEdge === &apos;bottom&apos;) {&#xD;                dy = 0 - Math.max(0.2, Math.abs(dy));&#xD;            }&#xD;            var newDirection = MathUtil.radToDeg(Math.atan2(dy, dx)) + 90;&#xD;            util.target.setDirection(newDirection);&#xD;            // Keep within the stage.&#xD;            var fencedPosition = util.target.keepInFence(util.target.x, util.target.y);&#xD;            util.target.setXY(fencedPosition[0], fencedPosition[1]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setRotationStyle&apos;,&#xD;        value: function setRotationStyle(args, util) {&#xD;            util.target.setRotationStyle(args.STYLE);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeX&apos;,&#xD;        value: function changeX(args, util) {&#xD;            var dx = Cast.toNumber(args.DX);&#xD;            util.target.setXY(util.target.x + dx, util.target.y);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setX&apos;,&#xD;        value: function setX(args, util) {&#xD;            var x = Cast.toNumber(args.X);&#xD;            util.target.setXY(x, util.target.y);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeY&apos;,&#xD;        value: function changeY(args, util) {&#xD;            var dy = Cast.toNumber(args.DY);&#xD;            util.target.setXY(util.target.x, util.target.y + dy);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setY&apos;,&#xD;        value: function setY(args, util) {&#xD;            var y = Cast.toNumber(args.Y);&#xD;            util.target.setXY(util.target.x, y);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getXY&apos;,&#xD;        value: function getXY(args, util) {&#xD;            return util.target.x + &apos;,&apos; + util.target.y;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getX&apos;,&#xD;        value: function getX(args, util) {&#xD;            return util.target.x;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getY&apos;,&#xD;        value: function getY(args, util) {&#xD;            return util.target.y;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getDirection&apos;,&#xD;        value: function getDirection(args, util) {&#xD;            return util.target.direction;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3MotionBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3MotionBlocks;&#xD;&#xD;/***/ }),&#xD;/* 50 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;var MathUtil = __webpack_require__(4);&#xD;&#xD;var Scratch3OperatorsBlocks = function () {&#xD;    function Scratch3OperatorsBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3OperatorsBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3OperatorsBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                operator_reify: this.cmdRing,&#xD;					 operator_reify_bool: this.boolRing,&#xD;					 operator_reify_rep: this.repRing,&#xD;					 operator_add: this.add,&#xD;                operator_subtract: this.subtract,&#xD;                operator_multiply: this.multiply,&#xD;                operator_divide: this.divide,&#xD;                operator_raise: this.raise,&#xD;                operator_lt: this.lt,&#xD;                operator_equals: this.equals,&#xD;                operator_gt: this.gt,&#xD;                operator_and: this.and,&#xD;                operator_or: this.or,&#xD;                operator_not: this.not,&#xD;                operator_random: this.random,&#xD;                operator_join: this.join,&#xD;                operator_letter_of: this.letterOf,&#xD;                operator_length: this.length,&#xD;                operator_mod: this.mod,&#xD;                operator_round: this.round,&#xD;                operator_mathop: this.mathop&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;cmdRing&apos;,&#xD;        value: function add(args) {&#xD;            return util.startBranch(1, false);&#xD;        }&#xD;    }, {&#xD;        key: &apos;boolRing&apos;,&#xD;        value: function add(args) {&#xD;            return args.OPERAND;&#xD;        }&#xD;    }, {&#xD;        key: &apos;repRing&apos;,&#xD;        value: function add(args) {&#xD;            return args.OPERAND;&#xD;        }&#xD;    }, {&#xD;        key: &apos;add&apos;,&#xD;        value: function add(args) {&#xD;            return Cast.toNumber(args.NUM1) + Cast.toNumber(args.NUM2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;subtract&apos;,&#xD;        value: function subtract(args) {&#xD;            return Cast.toNumber(args.NUM1) - Cast.toNumber(args.NUM2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;multiply&apos;,&#xD;        value: function multiply(args) {&#xD;            return Cast.toNumber(args.NUM1) * Cast.toNumber(args.NUM2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;divide&apos;,&#xD;        value: function divide(args) {&#xD;            return Cast.toNumber(args.NUM1) / Cast.toNumber(args.NUM2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;raise&apos;,&#xD;        value: function raise(args) {&#xD;            return Cast.toNumber(args.NUM1) ** Cast.toNumber(args.NUM2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;lt&apos;,&#xD;        value: function lt(args) {&#xD;            return Cast.compare(args.OPERAND1, args.OPERAND2) &lt; 0;&#xD;        }&#xD;    }, {&#xD;        key: &apos;equals&apos;,&#xD;        value: function equals(args) {&#xD;            return Cast.compare(args.OPERAND1, args.OPERAND2) === 0;&#xD;        }&#xD;    }, {&#xD;        key: &apos;gt&apos;,&#xD;        value: function gt(args) {&#xD;            return Cast.compare(args.OPERAND1, args.OPERAND2) &gt; 0;&#xD;        }&#xD;    }, {&#xD;        key: &apos;and&apos;,&#xD;        value: function and(args) {&#xD;            return Cast.toBoolean(args.OPERAND1) &amp;&amp; Cast.toBoolean(args.OPERAND2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;or&apos;,&#xD;        value: function or(args) {&#xD;            return Cast.toBoolean(args.OPERAND1) || Cast.toBoolean(args.OPERAND2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;not&apos;,&#xD;        value: function not(args) {&#xD;            return !Cast.toBoolean(args.OPERAND);&#xD;        }&#xD;    }, {&#xD;        key: &apos;random&apos;,&#xD;        value: function random(args) {&#xD;            var nFrom = Cast.toNumber(args.FROM);&#xD;            var nTo = Cast.toNumber(args.TO);&#xD;            var low = nFrom &lt;= nTo ? nFrom : nTo;&#xD;            var high = nFrom &lt;= nTo ? nTo : nFrom;&#xD;            if (low === high) return low;&#xD;            // If both arguments are ints, truncate the result to an int.&#xD;            if (Cast.isInt(args.FROM) &amp;&amp; Cast.isInt(args.TO)) {&#xD;                return low + parseInt(Math.random() * (high + 1 - low), 10);&#xD;            }&#xD;            return Math.random() * (high - low) + low;&#xD;        }&#xD;    }, {&#xD;        key: &apos;join&apos;,&#xD;        value: function join(args) {&#xD;            return Cast.toString(args.STRING1) + Cast.toString(args.STRING2);&#xD;        }&#xD;    }, {&#xD;        key: &apos;letterOf&apos;,&#xD;        value: function letterOf(args) {&#xD;            var index = Cast.toNumber(args.LETTER) - 1;&#xD;            var str = Cast.toString(args.STRING);&#xD;            // Out of bounds?&#xD;            if (index &lt; 0 || index &gt;= str.length) {&#xD;                return &apos;&apos;;&#xD;            }&#xD;            return str.charAt(index);&#xD;        }&#xD;    }, {&#xD;        key: &apos;length&apos;,&#xD;        value: function length(args) {&#xD;            return Cast.toString(args.STRING).length;&#xD;        }&#xD;    }, {&#xD;        key: &apos;mod&apos;,&#xD;        value: function mod(args) {&#xD;            var n = Cast.toNumber(args.NUM1);&#xD;            var modulus = Cast.toNumber(args.NUM2);&#xD;            var result = n % modulus;&#xD;            // Scratch mod is kept positive.&#xD;            if (result / modulus &lt; 0) result += modulus;&#xD;            return result;&#xD;        }&#xD;    }, {&#xD;        key: &apos;round&apos;,&#xD;        value: function round(args) {&#xD;            return Math.round(Cast.toNumber(args.NUM));&#xD;        }&#xD;    }, {&#xD;        key: &apos;mathop&apos;,&#xD;        value: function mathop(args) {&#xD;            var operator = Cast.toString(args.OPERATOR).toLowerCase();&#xD;            var n = Cast.toNumber(args.NUM);&#xD;            switch (operator) {&#xD;                case &apos;abs&apos;:&#xD;                    return Math.abs(n);&#xD;                case &apos;floor&apos;:&#xD;                    return Math.floor(n);&#xD;                case &apos;ceiling&apos;:&#xD;                    return Math.ceil(n);&#xD;                case &apos;sqrt&apos;:&#xD;                    return Math.sqrt(n);&#xD;                case &apos;sin&apos;:&#xD;                    return parseFloat(Math.sin(Math.PI * n / 180).toFixed(10));&#xD;                case &apos;cos&apos;:&#xD;                    return parseFloat(Math.cos(Math.PI * n / 180).toFixed(10));&#xD;                case &apos;tan&apos;:&#xD;                    return MathUtil.tan(n);&#xD;                case &apos;asin&apos;:&#xD;                    return Math.asin(n) * 180 / Math.PI;&#xD;                case &apos;acos&apos;:&#xD;                    return Math.acos(n) * 180 / Math.PI;&#xD;                case &apos;atan&apos;:&#xD;                    return Math.atan(n) * 180 / Math.PI;&#xD;                case &apos;ln&apos;:&#xD;                    return Math.log(n);&#xD;                case &apos;log&apos;:&#xD;                    return Math.log(n) / Math.LN10;&#xD;                case &apos;e ^&apos;:&#xD;                    return Math.exp(n);&#xD;                case &apos;10 ^&apos;:&#xD;                    return Math.pow(10, n);&#xD;					 case &apos;2 ^&apos;:&#xD;                    return Math.pow(2, n);&#xD;					 case &apos;id&apos;:&#xD;                    return Math.identity(n);&#xD;            }&#xD;            return 0;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3OperatorsBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3OperatorsBlocks;&#xD;&#xD;/***/ }),&#xD;/* 51 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;var Clone = __webpack_require__(29);&#xD;var Color = __webpack_require__(23);&#xD;var MathUtil = __webpack_require__(4);&#xD;var RenderedTarget = __webpack_require__(22);&#xD;&#xD;/**&#xD; * @typedef {object} PenState - the pen state associated with a particular target.&#xD; * @property {Boolean} penDown - tracks whether the pen should draw for this target.&#xD; * @property {number} hue - the current hue of the pen.&#xD; * @property {number} shade - the current shade of the pen.&#xD; * @property {PenAttributes} penAttributes - cached pen attributes for the renderer. This is the authoritative value for&#xD; *   diameter but not for pen color.&#xD; */&#xD;&#xD;/**&#xD; * Host for the Pen-related blocks in Scratch 3.0&#xD; * @param {Runtime} runtime - the runtime instantiating this block package.&#xD; * @constructor&#xD; */&#xD;&#xD;var Scratch3PenBlocks = function () {&#xD;    function Scratch3PenBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3PenBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;&#xD;        /**&#xD;         * The ID of the renderer Drawable corresponding to the pen layer.&#xD;         * @type {int}&#xD;         * @private&#xD;         */&#xD;        this._penDrawableId = -1;&#xD;&#xD;        /**&#xD;         * The ID of the renderer Skin corresponding to the pen layer.&#xD;         * @type {int}&#xD;         * @private&#xD;         */&#xD;        this._penSkinId = -1;&#xD;&#xD;        this._onTargetMoved = this._onTargetMoved.bind(this);&#xD;    }&#xD;&#xD;    /**&#xD;     * The default pen state, to be used when a target has no existing pen state.&#xD;     * @type {PenState}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3PenBlocks, [{&#xD;        key: &apos;_clampPenSize&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Clamp a pen size value to the range allowed by the pen.&#xD;         * @param {number} requestedSize - the requested pen size.&#xD;         * @returns {number} the clamped size.&#xD;         * @private&#xD;         */&#xD;        value: function _clampPenSize(requestedSize) {&#xD;            return MathUtil.clamp(requestedSize, Scratch3PenBlocks.PEN_SIZE_RANGE.min, Scratch3PenBlocks.PEN_SIZE_RANGE.max);&#xD;        }&#xD;&#xD;        /**&#xD;         * Retrieve the ID of the renderer "Skin" corresponding to the pen layer. If&#xD;         * the pen Skin doesn&apos;t yet exist, create it.&#xD;         * @returns {int} the Skin ID of the pen layer, or -1 on failure.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_getPenLayerID&apos;,&#xD;        value: function _getPenLayerID() {&#xD;            if (this._penSkinId &lt; 0 &amp;&amp; this.runtime.renderer) {&#xD;                this._penSkinId = this.runtime.renderer.createPenSkin();&#xD;                this._penDrawableId = this.runtime.renderer.createDrawable();&#xD;                this.runtime.renderer.setDrawableOrder(this._penDrawableId, Scratch3PenBlocks.PEN_ORDER);&#xD;                this.runtime.renderer.updateDrawableProperties(this._penDrawableId, { skinId: this._penSkinId });&#xD;            }&#xD;            return this._penSkinId;&#xD;        }&#xD;&#xD;        /**&#xD;         * @param {Target} target - collect pen state for this target. Probably, but not necessarily, a RenderedTarget.&#xD;         * @returns {PenState} the mutable pen state associated with that target. This will be created if necessary.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_getPenState&apos;,&#xD;        value: function _getPenState(target) {&#xD;            var penState = target.getCustomState(Scratch3PenBlocks.STATE_KEY);&#xD;            if (!penState) {&#xD;                penState = Clone.simple(Scratch3PenBlocks.DEFAULT_PEN_STATE);&#xD;                target.setCustomState(Scratch3PenBlocks.STATE_KEY, penState);&#xD;            }&#xD;            return penState;&#xD;        }&#xD;&#xD;        /**&#xD;         * Handle a target which has moved. This only fires when the pen is down.&#xD;         * @param {RenderedTarget} target - the target which has moved.&#xD;         * @param {number} oldX - the previous X position.&#xD;         * @param {number} oldY - the previous Y position.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_onTargetMoved&apos;,&#xD;        value: function _onTargetMoved(target, oldX, oldY) {&#xD;            var penSkinId = this._getPenLayerID();&#xD;            if (penSkinId &gt;= 0) {&#xD;                var penState = this._getPenState(target);&#xD;                this.runtime.renderer.penLine(penSkinId, penState.penAttributes, oldX, oldY, target.x, target.y);&#xD;                this.runtime.requestRedraw();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the cached RGB color from the hue &amp; shade values in the provided PenState object.&#xD;         * @param {PenState} penState - the pen state to update.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_updatePenColor&apos;,&#xD;        value: function _updatePenColor(penState) {&#xD;            var rgb = Color.hsvToRgb({ h: penState.hue * 180 / 100, s: 1, v: 1 });&#xD;            var shade = penState.shade &gt; 100 ? 200 - penState.shade : penState.shade;&#xD;            if (shade &lt; 50) {&#xD;                rgb = Color.mixRgb(Color.RGB_BLACK, rgb, (10 + shade) / 60);&#xD;            } else {&#xD;                rgb = Color.mixRgb(rgb, Color.RGB_WHITE, (shade - 50) / 60);&#xD;            }&#xD;            penState.penAttributes.color4f[0] = rgb.r / 255.0;&#xD;            penState.penAttributes.color4f[1] = rgb.g / 255.0;&#xD;            penState.penAttributes.color4f[2] = rgb.b / 255.0;&#xD;            penState.penAttributes.color4f[3] = 1;&#xD;        }&#xD;&#xD;        /**&#xD;         * Wrap a pen hue or shade values to the range [0,200).&#xD;         * @param {number} value - the pen hue or shade value to the proper range.&#xD;         * @returns {number} the wrapped value.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_wrapHueOrShade&apos;,&#xD;        value: function _wrapHueOrShade(value) {&#xD;            value = value % 200;&#xD;            if (value &lt; 0) value += 200;&#xD;            return value;&#xD;        }&#xD;&#xD;        /**&#xD;         * Retrieve the block primitives implemented by this package.&#xD;         * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                pen_clear: this.clear,&#xD;                pen_stamp: this.stamp,&#xD;                pen_pendown: this.penDown,&#xD;                pen_penup: this.penUp,&#xD;                pen_setpencolortocolor: this.setPenColorToColor,&#xD;                pen_changepencolorby: this.changePenHueBy,&#xD;                pen_setpencolortonum: this.setPenHueToNumber,&#xD;                pen_changepenshadeby: this.changePenShadeBy,&#xD;                pen_setpenshadeto: this.setPenShadeToNumber,&#xD;                pen_changepensizeby: this.changePenSizeBy,&#xD;                pen_setpensizeto: this.setPenSizeTo&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "clear" block clears the pen layer&apos;s contents.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clear&apos;,&#xD;        value: function clear() {&#xD;            var penSkinId = this._getPenLayerID();&#xD;            if (penSkinId &gt;= 0) {&#xD;                this.runtime.renderer.penClear(penSkinId);&#xD;                this.runtime.requestRedraw();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "stamp" block stamps the current drawable&apos;s image onto the pen layer.&#xD;         * @param {object} args - the block arguments.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stamp&apos;,&#xD;        value: function stamp(args, util) {&#xD;            var penSkinId = this._getPenLayerID();&#xD;            if (penSkinId &gt;= 0) {&#xD;                var target = util.target;&#xD;                this.runtime.renderer.penStamp(penSkinId, target.drawableID);&#xD;                this.runtime.requestRedraw();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "pen down" block causes the target to leave pen trails on future motion.&#xD;         * @param {object} args - the block arguments.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penDown&apos;,&#xD;        value: function penDown(args, util) {&#xD;            var target = util.target;&#xD;            var penState = this._getPenState(target);&#xD;&#xD;            if (!penState.penDown) {&#xD;                penState.penDown = true;&#xD;                target.addListener(RenderedTarget.EVENT_TARGET_MOVED, this._onTargetMoved);&#xD;            }&#xD;&#xD;            var penSkinId = this._getPenLayerID();&#xD;            if (penSkinId &gt;= 0) {&#xD;                this.runtime.renderer.penPoint(penSkinId, penState.penAttributes, target.x, target.y);&#xD;                this.runtime.requestRedraw();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "pen up" block stops the target from leaving pen trails.&#xD;         * @param {object} args - the block arguments.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penUp&apos;,&#xD;        value: function penUp(args, util) {&#xD;            var target = util.target;&#xD;            var penState = this._getPenState(target);&#xD;&#xD;            if (penState.penDown) {&#xD;                penState.penDown = false;&#xD;                target.removeListener(RenderedTarget.EVENT_TARGET_MOVED, this._onTargetMoved);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "set pen color to {color}" block sets the pen to a particular RGB color.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {int} COLOR - the color to set, expressed as a 24-bit RGB value (0xRRGGBB).&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setPenColorToColor&apos;,&#xD;        value: function setPenColorToColor(args, util) {&#xD;            var penState = this._getPenState(util.target);&#xD;            var rgb = Cast.toRgbColorObject(args.COLOR);&#xD;            var hsv = Color.rgbToHsv(rgb);&#xD;&#xD;            penState.hue = 200 * hsv.h / 360;&#xD;            penState.shade = 50 * hsv.v;&#xD;            penState.penAttributes.color4f[0] = rgb.r / 255.0;&#xD;            penState.penAttributes.color4f[1] = rgb.g / 255.0;&#xD;            penState.penAttributes.color4f[2] = rgb.b / 255.0;&#xD;            if (rgb.hasOwnProperty(&apos;a&apos;)) {&#xD;                // Will there always be an &apos;a&apos;?&#xD;                penState.penAttributes.color4f[3] = rgb.a / 255.0;&#xD;            } else {&#xD;                penState.penAttributes.color4f[3] = 1;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "change pen color by {number}" block rotates the hue of the pen by the given amount.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} COLOR - the amount of desired hue rotation.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changePenHueBy&apos;,&#xD;        value: function changePenHueBy(args, util) {&#xD;            var penState = this._getPenState(util.target);&#xD;            penState.hue = this._wrapHueOrShade(penState.hue + Cast.toNumber(args.COLOR));&#xD;            this._updatePenColor(penState);&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "set pen color to {number}" block sets the hue of the pen.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} COLOR - the desired hue.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setPenHueToNumber&apos;,&#xD;        value: function setPenHueToNumber(args, util) {&#xD;            var penState = this._getPenState(util.target);&#xD;            penState.hue = this._wrapHueOrShade(Cast.toNumber(args.COLOR));&#xD;            this._updatePenColor(penState);&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "change pen shade by {number}" block changes the "shade" of the pen, related to the HSV value.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} SHADE - the amount of desired shade change.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changePenShadeBy&apos;,&#xD;        value: function changePenShadeBy(args, util) {&#xD;            var penState = this._getPenState(util.target);&#xD;            penState.shade = this._wrapHueOrShade(penState.shade + Cast.toNumber(args.SHADE));&#xD;            this._updatePenColor(penState);&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "set pen shade to {number}" block sets the "shade" of the pen, related to the HSV value.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} SHADE - the amount of desired shade change.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setPenShadeToNumber&apos;,&#xD;        value: function setPenShadeToNumber(args, util) {&#xD;            var penState = this._getPenState(util.target);&#xD;            penState.shade = this._wrapHueOrShade(Cast.toNumber(args.SHADE));&#xD;            this._updatePenColor(penState);&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "change pen size by {number}" block changes the pen size by the given amount.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} SIZE - the amount of desired size change.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changePenSizeBy&apos;,&#xD;        value: function changePenSizeBy(args, util) {&#xD;            var penAttributes = this._getPenState(util.target).penAttributes;&#xD;            penAttributes.diameter = this._clampPenSize(penAttributes.diameter + Cast.toNumber(args.SIZE));&#xD;        }&#xD;&#xD;        /**&#xD;         * The pen "set pen size to {number}" block sets the pen size to the given amount.&#xD;         * @param {object} args - the block arguments.&#xD;         *  @property {number} SIZE - the amount of desired size change.&#xD;         * @param {object} util - utility object provided by the runtime.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setPenSizeTo&apos;,&#xD;        value: function setPenSizeTo(args, util) {&#xD;            var penAttributes = this._getPenState(util.target).penAttributes;&#xD;            penAttributes.diameter = this._clampPenSize(Cast.toNumber(args.SIZE));&#xD;        }&#xD;    }], [{&#xD;        key: &apos;DEFAULT_PEN_STATE&apos;,&#xD;        get: function get() {&#xD;            return {&#xD;                penDown: false,&#xD;                hue: 120,&#xD;                shade: 50,&#xD;                penAttributes: {&#xD;                    color4f: [0, 0, 1, 1],&#xD;                    diameter: 1&#xD;                }&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * Place the pen layer in front of the backdrop but behind everything else.&#xD;         * We should probably handle this somewhere else... somewhere central that knows about pen, backdrop, video, etc.&#xD;         * Maybe it should be in the GUI?&#xD;         * @type {int}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;PEN_ORDER&apos;,&#xD;        get: function get() {&#xD;            return 1;&#xD;        }&#xD;&#xD;        /**&#xD;         * The minimum and maximum allowed pen size.&#xD;         * @type {{min: number, max: number}}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;PEN_SIZE_RANGE&apos;,&#xD;        get: function get() {&#xD;            return { min: 1, max: 255 };&#xD;        }&#xD;&#xD;        /**&#xD;         * The key to load &amp; store a target&apos;s pen-related state.&#xD;         * @type {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STATE_KEY&apos;,&#xD;        get: function get() {&#xD;            return &apos;Scratch.pen&apos;;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3PenBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3PenBlocks;&#xD;&#xD;/***/ }),&#xD;/* 52 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Scratch3ProcedureBlocks = function () {&#xD;    function Scratch3ProcedureBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3ProcedureBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3ProcedureBlocks, [{&#xD;        key: "getPrimitives",&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                procedures_defnoreturn: this.defNoReturn,&#xD;                procedures_callnoreturn: this.callNoReturn,&#xD;                procedures_param: this.param&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: "defNoReturn",&#xD;        value: function defNoReturn() {&#xD;            // No-op: execute the blocks.&#xD;        }&#xD;    }, {&#xD;        key: "callNoReturn",&#xD;        value: function callNoReturn(args, util) {&#xD;            if (!util.stackFrame.executed) {&#xD;                var procedureCode = args.mutation.proccode;&#xD;                var paramNames = util.getProcedureParamNames(procedureCode);&#xD;                for (var i = 0; i &lt; paramNames.length; i++) {&#xD;                    if (args.hasOwnProperty("input" + i)) {&#xD;                        util.pushParam(paramNames[i], args["input" + i]);&#xD;                    }&#xD;                }&#xD;                util.stackFrame.executed = true;&#xD;                util.startProcedure(procedureCode);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: "param",&#xD;        value: function param(args, util) {&#xD;            var value = util.getParam(args.mutation.paramname);&#xD;            return value;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3ProcedureBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3ProcedureBlocks;&#xD;&#xD;/***/ }),&#xD;/* 53 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;&#xD;var Scratch3SensingBlocks = function () {&#xD;    function Scratch3SensingBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3SensingBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Retrieve the block primitives implemented by this package.&#xD;     * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3SensingBlocks, [{&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                sensing_touchingobject: this.touchingObject,&#xD;                sensing_touchingcolor: this.touchingColor,&#xD;                sensing_coloristouchingcolor: this.colorTouchingColor,&#xD;                sensing_distanceto: this.distanceTo,&#xD;                sensing_timer: this.getTimer,&#xD;                sensing_resettimer: this.resetTimer,&#xD;                sensing_of: this.getAttributeOf,&#xD;					 sensing_mouse: this.getMousePosition,&#xD;                sensing_mousex: this.getMouseX,&#xD;                sensing_mousey: this.getMouseY,&#xD;                sensing_mousedown: this.getMouseDown,&#xD;                sensing_keypressed: this.getKeyPressed,&#xD;                sensing_current: this.current,&#xD;                sensing_dayssince2000: this.daysSince2000,&#xD;                sensing_loudness: this.getLoudness&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;touchingObject&apos;,&#xD;        value: function touchingObject(args, util) {&#xD;            var requestedObject = args.TOUCHINGOBJECTMENU;&#xD;            if (requestedObject === &apos;_mouse_&apos;) {&#xD;                var mouseX = util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;);&#xD;                var mouseY = util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;                return util.target.isTouchingPoint(mouseX, mouseY);&#xD;            } else if (requestedObject === &apos;_edge_&apos;) {&#xD;                return util.target.isTouchingEdge();&#xD;            }&#xD;            return util.target.isTouchingSprite(requestedObject);&#xD;        }&#xD;    }, {&#xD;        key: &apos;touchingColor&apos;,&#xD;        value: function touchingColor(args, util) {&#xD;            var color = Cast.toRgbColorList(args.COLOR);&#xD;            return util.target.isTouchingColor(color);&#xD;        }&#xD;    }, {&#xD;        key: &apos;colorTouchingColor&apos;,&#xD;        value: function colorTouchingColor(args, util) {&#xD;            var maskColor = Cast.toRgbColorList(args.COLOR);&#xD;            var targetColor = Cast.toRgbColorList(args.COLOR2);&#xD;            return util.target.colorIsTouchingColor(targetColor, maskColor);&#xD;        }&#xD;    }, {&#xD;        key: &apos;distanceTo&apos;,&#xD;        value: function distanceTo(args, util) {&#xD;            if (util.target.isStage) return 10000;&#xD;&#xD;            var targetX = 0;&#xD;            var targetY = 0;&#xD;            if (args.DISTANCETOMENU === &apos;_mouse_&apos;) {&#xD;                targetX = util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;);&#xD;                targetY = util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;            } else {&#xD;                var distTarget = this.runtime.getSpriteTargetByName(args.DISTANCETOMENU);&#xD;                if (!distTarget) return 10000;&#xD;                targetX = distTarget.x;&#xD;                targetY = distTarget.y;&#xD;            }&#xD;&#xD;            var dx = util.target.x - targetX;&#xD;            var dy = util.target.y - targetY;&#xD;            return Math.sqrt(dx * dx + dy * dy);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getTimer&apos;,&#xD;        value: function getTimer(args, util) {&#xD;            return util.ioQuery(&apos;clock&apos;, &apos;projectTimer&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;resetTimer&apos;,&#xD;        value: function resetTimer(args, util) {&#xD;            util.ioQuery(&apos;clock&apos;, &apos;resetProjectTimer&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getMousePosition&apos;,&#xD;        value: function getMouseX(args, util) {&#xD;            return util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;) + &apos; &apos; + util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getMouseX&apos;,&#xD;        value: function getMouseX(args, util) {&#xD;            return util.ioQuery(&apos;mouse&apos;, &apos;getX&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getMouseY&apos;,&#xD;        value: function getMouseY(args, util) {&#xD;            return util.ioQuery(&apos;mouse&apos;, &apos;getY&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getMouseDown&apos;,&#xD;        value: function getMouseDown(args, util) {&#xD;            return util.ioQuery(&apos;mouse&apos;, &apos;getIsDown&apos;);&#xD;        }&#xD;    }, {&#xD;        key: &apos;current&apos;,&#xD;        value: function current(args) {&#xD;            var menuOption = Cast.toString(args.CURRENTMENU).toLowerCase();&#xD;            var date = new Date();&#xD;            switch (menuOption) {&#xD;                case &apos;year&apos;:&#xD;                    return date.getFullYear();&#xD;                case &apos;month&apos;:&#xD;                    return date.getMonth() + 1; // getMonth is zero-based&#xD;                case &apos;date&apos;:&#xD;                    return date.getDate();&#xD;                case &apos;dayofweek&apos;:&#xD;                    return date.getDay() + 1; // getDay is zero-based, Sun=0&#xD;                case &apos;hour&apos;:&#xD;                    return date.getHours();&#xD;                case &apos;minute&apos;:&#xD;                    return date.getMinutes();&#xD;                case &apos;second&apos;:&#xD;                    return date.getSeconds();&#xD;            }&#xD;            return 0;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getKeyPressed&apos;,&#xD;        value: function getKeyPressed(args, util) {&#xD;            return util.ioQuery(&apos;keyboard&apos;, &apos;getKeyIsDown&apos;, args.KEY_OPTION);&#xD;        }&#xD;    }, {&#xD;        key: &apos;daysSince2000&apos;,&#xD;        value: function daysSince2000() {&#xD;            var msPerDay = 24 * 60 * 60 * 1000;&#xD;            var start = new Date(2000, 0, 1); // Months are 0-indexed.&#xD;            var today = new Date();&#xD;            var dstAdjust = today.getTimezoneOffset() - start.getTimezoneOffset();&#xD;            var mSecsSinceStart = today.valueOf() - start.valueOf();&#xD;            mSecsSinceStart += (today.getTimezoneOffset() - dstAdjust) * 60 * 1000;&#xD;            return mSecsSinceStart / msPerDay;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getLoudness&apos;,&#xD;        value: function getLoudness() {&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return -1;&#xD;            return this.runtime.audioEngine.getLoudness();&#xD;        }&#xD;    }, {&#xD;        key: &apos;getAttributeOf&apos;,&#xD;        value: function getAttributeOf(args) {&#xD;            var attrTarget = void 0;&#xD;&#xD;            if (args.OBJECT === &apos;_stage_&apos;) {&#xD;                attrTarget = this.runtime.getTargetForStage();&#xD;            } else {&#xD;                attrTarget = this.runtime.getSpriteTargetByName(args.OBJECT);&#xD;            }&#xD;&#xD;            // Generic attributes&#xD;            if (attrTarget.isStage) {&#xD;                switch (args.PROPERTY) {&#xD;                    // Scratch 1.4 support&#xD;                    case &apos;background #&apos;:&#xD;                        return attrTarget.currentCostume + 1;&#xD;&#xD;                    case &apos;backdrop #&apos;:&#xD;                        return attrTarget.currentCostume + 1;&#xD;                    case &apos;backdrop name&apos;:&#xD;                        return attrTarget.sprite.costumes[attrTarget.currentCostume].name;&#xD;                    case &apos;volume&apos;:&#xD;                        return; // @todo: Keep this in mind for sound blocks!&#xD;                }&#xD;            } else {&#xD;                switch (args.PROPERTY) {&#xD;                    case &apos;x position&apos;:&#xD;                        return attrTarget.x;&#xD;                    case &apos;y position&apos;:&#xD;                        return attrTarget.y;&#xD;                    case &apos;direction&apos;:&#xD;                        return attrTarget.direction;&#xD;                    case &apos;costume #&apos;:&#xD;                        return attrTarget.currentCostume + 1;&#xD;                    case &apos;costume name&apos;:&#xD;                        return attrTarget.sprite.costumes[attrTarget.currentCostume].name;&#xD;                    case &apos;size&apos;:&#xD;                        return attrTarget.size;&#xD;                    case &apos;volume&apos;:&#xD;                        return; // @todo: above, keep in mind for sound blocks..&#xD;                }&#xD;            }&#xD;&#xD;            // Variables&#xD;            var varName = args.PROPERTY;&#xD;            if (attrTarget.variables.hasOwnProperty(varName)) {&#xD;                return attrTarget.variables[varName].value;&#xD;            }&#xD;&#xD;            // Otherwise, 0&#xD;            return 0;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3SensingBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3SensingBlocks;&#xD;&#xD;/***/ }),&#xD;/* 54 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var MathUtil = __webpack_require__(4);&#xD;var Cast = __webpack_require__(1);&#xD;var Clone = __webpack_require__(29);&#xD;&#xD;var Scratch3SoundBlocks = function () {&#xD;    function Scratch3SoundBlocks(runtime) {&#xD;        _classCallCheck(this, Scratch3SoundBlocks);&#xD;&#xD;        /**&#xD;         * The runtime instantiating this block package.&#xD;         * @type {Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * The key to load &amp; store a target&apos;s sound-related state.&#xD;     * @type {string}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Scratch3SoundBlocks, [{&#xD;        key: &apos;_getSoundState&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * @param {Target} target - collect sound state for this target.&#xD;         * @returns {SoundState} the mutable sound state associated with that target. This will be created if necessary.&#xD;         * @private&#xD;         */&#xD;        value: function _getSoundState(target) {&#xD;            var soundState = target.getCustomState(Scratch3SoundBlocks.STATE_KEY);&#xD;            if (!soundState) {&#xD;                soundState = Clone.simple(Scratch3SoundBlocks.DEFAULT_SOUND_STATE);&#xD;                target.setCustomState(Scratch3SoundBlocks.STATE_KEY, soundState);&#xD;            }&#xD;            return soundState;&#xD;        }&#xD;&#xD;        /**&#xD;         * Retrieve the block primitives implemented by this package.&#xD;         * @return {object.&lt;string, Function&gt;} Mapping of opcode to Function.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getPrimitives&apos;,&#xD;        value: function getPrimitives() {&#xD;            return {&#xD;                sound_play: this.playSound,&#xD;                sound_playuntildone: this.playSoundAndWait,&#xD;                sound_stopallsounds: this.stopAllSounds,&#xD;                sound_playnoteforbeats: this.playNoteForBeats,&#xD;                sound_playdrumforbeats: this.playDrumForBeats,&#xD;                sound_restforbeats: this.restForBeats,&#xD;                sound_setinstrumentto: this.setInstrument,&#xD;                sound_seteffectto: this.setEffect,&#xD;                sound_changeeffectby: this.changeEffect,&#xD;                sound_cleareffects: this.clearEffects,&#xD;                sound_sounds_menu: this.soundsMenu,&#xD;                sound_beats_menu: this.beatsMenu,&#xD;                sound_effects_menu: this.effectsMenu,&#xD;                sound_setvolumeto: this.setVolume,&#xD;                sound_changevolumeby: this.changeVolume,&#xD;                sound_volume: this.getVolume,&#xD;                sound_settempotobpm: this.setTempo,&#xD;                sound_changetempoby: this.changeTempo,&#xD;                sound_tempo: this.getTempo&#xD;            };&#xD;        }&#xD;    }, {&#xD;        key: &apos;playSound&apos;,&#xD;        value: function playSound(args, util) {&#xD;            var index = this._getSoundIndex(args.SOUND_MENU, util);&#xD;            if (index &gt;= 0) {&#xD;                var md5 = util.target.sprite.sounds[index].md5;&#xD;                if (util.target.audioPlayer === null) return;&#xD;                util.target.audioPlayer.playSound(md5);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;playSoundAndWait&apos;,&#xD;        value: function playSoundAndWait(args, util) {&#xD;            var index = this._getSoundIndex(args.SOUND_MENU, util);&#xD;            if (index &gt;= 0) {&#xD;                var md5 = util.target.sprite.sounds[index].md5;&#xD;                if (util.target.audioPlayer === null) return;&#xD;                return util.target.audioPlayer.playSound(md5);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;_getSoundIndex&apos;,&#xD;        value: function _getSoundIndex(soundName, util) {&#xD;            // if the sprite has no sounds, return -1&#xD;            var len = util.target.sprite.sounds.length;&#xD;            if (len === 0) {&#xD;                return -1;&#xD;            }&#xD;&#xD;            var index = void 0;&#xD;&#xD;            // try to convert to a number and use that as an index&#xD;            var num = parseInt(soundName, 10);&#xD;            if (!isNaN(num)) {&#xD;                index = MathUtil.wrapClamp(num, 0, len - 1);&#xD;                return index;&#xD;            }&#xD;&#xD;            // return the index for the sound of that name&#xD;            index = this.getSoundIndexByName(soundName, util);&#xD;            return index;&#xD;        }&#xD;    }, {&#xD;        key: &apos;getSoundIndexByName&apos;,&#xD;        value: function getSoundIndexByName(soundName, util) {&#xD;            var sounds = util.target.sprite.sounds;&#xD;            for (var i = 0; i &lt; sounds.length; i++) {&#xD;                if (sounds[i].name === soundName) {&#xD;                    return i;&#xD;                }&#xD;            }&#xD;            // if there is no sound by that name, return -1&#xD;            return -1;&#xD;        }&#xD;    }, {&#xD;        key: &apos;stopAllSounds&apos;,&#xD;        value: function stopAllSounds(args, util) {&#xD;            if (util.target.audioPlayer === null) return;&#xD;            util.target.audioPlayer.stopAllSounds();&#xD;        }&#xD;    }, {&#xD;        key: &apos;playNoteForBeats&apos;,&#xD;        value: function playNoteForBeats(args, util) {&#xD;            var note = Cast.toNumber(args.NOTE);&#xD;            note = MathUtil.clamp(note, Scratch3SoundBlocks.MIDI_NOTE_RANGE.min, Scratch3SoundBlocks.MIDI_NOTE_RANGE.max);&#xD;            var beats = Cast.toNumber(args.BEATS);&#xD;            beats = this._clampBeats(beats);&#xD;            var soundState = this._getSoundState(util.target);&#xD;            var inst = soundState.currentInstrument;&#xD;            var vol = soundState.volume;&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            return this.runtime.audioEngine.playNoteForBeatsWithInstAndVol(note, beats, inst, vol);&#xD;        }&#xD;    }, {&#xD;        key: &apos;playDrumForBeats&apos;,&#xD;        value: function playDrumForBeats(args, util) {&#xD;            var drum = Cast.toNumber(args.DRUM);&#xD;            drum -= 1; // drums are one-indexed&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            drum = MathUtil.wrapClamp(drum, 0, this.runtime.audioEngine.numDrums);&#xD;            var beats = Cast.toNumber(args.BEATS);&#xD;            beats = this._clampBeats(beats);&#xD;            if (util.target.audioPlayer === null) return;&#xD;            return util.target.audioPlayer.playDrumForBeats(drum, beats);&#xD;        }&#xD;    }, {&#xD;        key: &apos;restForBeats&apos;,&#xD;        value: function restForBeats(args) {&#xD;            var beats = Cast.toNumber(args.BEATS);&#xD;            beats = this._clampBeats(beats);&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            return this.runtime.audioEngine.waitForBeats(beats);&#xD;        }&#xD;    }, {&#xD;        key: &apos;_clampBeats&apos;,&#xD;        value: function _clampBeats(beats) {&#xD;            return MathUtil.clamp(beats, Scratch3SoundBlocks.BEAT_RANGE.min, Scratch3SoundBlocks.BEAT_RANGE.max);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setInstrument&apos;,&#xD;        value: function setInstrument(args, util) {&#xD;            var soundState = this._getSoundState(util.target);&#xD;            var instNum = Cast.toNumber(args.INSTRUMENT);&#xD;            instNum -= 1; // instruments are one-indexed&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            instNum = MathUtil.wrapClamp(instNum, 0, this.runtime.audioEngine.numInstruments);&#xD;            soundState.currentInstrument = instNum;&#xD;            return this.runtime.audioEngine.instrumentPlayer.loadInstrument(soundState.currentInstrument);&#xD;        }&#xD;    }, {&#xD;        key: &apos;setEffect&apos;,&#xD;        value: function setEffect(args, util) {&#xD;            this._updateEffect(args, util, false);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeEffect&apos;,&#xD;        value: function changeEffect(args, util) {&#xD;            this._updateEffect(args, util, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;_updateEffect&apos;,&#xD;        value: function _updateEffect(args, util, change) {&#xD;            var effect = Cast.toString(args.EFFECT).toLowerCase();&#xD;            var value = Cast.toNumber(args.VALUE);&#xD;&#xD;            var soundState = this._getSoundState(util.target);&#xD;            if (!soundState.effects.hasOwnProperty(effect)) return;&#xD;&#xD;            if (change) {&#xD;                soundState.effects[effect] += value;&#xD;            } else {&#xD;                soundState.effects[effect] = value;&#xD;            }&#xD;&#xD;            var effectRange = Scratch3SoundBlocks.EFFECT_RANGE[effect];&#xD;            soundState.effects[effect] = MathUtil.clamp(soundState.effects[effect], effectRange.min, effectRange.max);&#xD;&#xD;            if (util.target.audioPlayer === null) return;&#xD;            util.target.audioPlayer.setEffect(effect, soundState.effects[effect]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;clearEffects&apos;,&#xD;        value: function clearEffects(args, util) {&#xD;            var soundState = this._getSoundState(util.target);&#xD;            for (var effect in soundState.effects) {&#xD;                if (!soundState.effects.hasOwnProperty(effect)) continue;&#xD;                soundState.effects[effect] = 0;&#xD;            }&#xD;            if (util.target.audioPlayer === null) return;&#xD;            util.target.audioPlayer.clearEffects();&#xD;        }&#xD;    }, {&#xD;        key: &apos;setVolume&apos;,&#xD;        value: function setVolume(args, util) {&#xD;            var volume = Cast.toNumber(args.VOLUME);&#xD;            this._updateVolume(volume, util);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeVolume&apos;,&#xD;        value: function changeVolume(args, util) {&#xD;            var soundState = this._getSoundState(util.target);&#xD;            var volume = Cast.toNumber(args.VOLUME) + soundState.volume;&#xD;            this._updateVolume(volume, util);&#xD;        }&#xD;    }, {&#xD;        key: &apos;_updateVolume&apos;,&#xD;        value: function _updateVolume(volume, util) {&#xD;            var soundState = this._getSoundState(util.target);&#xD;            volume = MathUtil.clamp(volume, 0, 100);&#xD;            soundState.volume = volume;&#xD;            if (util.target.audioPlayer === null) return;&#xD;            util.target.audioPlayer.setVolume(soundState.volume);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getVolume&apos;,&#xD;        value: function getVolume(args, util) {&#xD;            var soundState = this._getSoundState(util.target);&#xD;            return soundState.volume;&#xD;        }&#xD;    }, {&#xD;        key: &apos;setTempo&apos;,&#xD;        value: function setTempo(args) {&#xD;            var tempo = Cast.toNumber(args.TEMPO);&#xD;            this._updateTempo(tempo);&#xD;        }&#xD;    }, {&#xD;        key: &apos;changeTempo&apos;,&#xD;        value: function changeTempo(args) {&#xD;            var change = Cast.toNumber(args.TEMPO);&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            var tempo = change + this.runtime.audioEngine.currentTempo;&#xD;            this._updateTempo(tempo);&#xD;        }&#xD;    }, {&#xD;        key: &apos;_updateTempo&apos;,&#xD;        value: function _updateTempo(tempo) {&#xD;            tempo = MathUtil.clamp(tempo, Scratch3SoundBlocks.TEMPO_RANGE.min, Scratch3SoundBlocks.TEMPO_RANGE.max);&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            this.runtime.audioEngine.setTempo(tempo);&#xD;        }&#xD;    }, {&#xD;        key: &apos;getTempo&apos;,&#xD;        value: function getTempo() {&#xD;            if (typeof this.runtime.audioEngine === &apos;undefined&apos;) return;&#xD;            return this.runtime.audioEngine.currentTempo;&#xD;        }&#xD;    }, {&#xD;        key: &apos;soundsMenu&apos;,&#xD;        value: function soundsMenu(args) {&#xD;            return args.SOUND_MENU;&#xD;        }&#xD;    }, {&#xD;        key: &apos;beatsMenu&apos;,&#xD;        value: function beatsMenu(args) {&#xD;            return args.BEATS;&#xD;        }&#xD;    }, {&#xD;        key: &apos;effectsMenu&apos;,&#xD;        value: function effectsMenu(args) {&#xD;            return args.EFFECT;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;STATE_KEY&apos;,&#xD;        get: function get() {&#xD;            return &apos;Scratch.sound&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * The default sound-related state, to be used when a target has no existing sound state.&#xD;         * @type {SoundState}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;DEFAULT_SOUND_STATE&apos;,&#xD;        get: function get() {&#xD;            return {&#xD;                volume: 100,&#xD;                currentInstrument: 0,&#xD;                effects: {&#xD;                    pitch: 0,&#xD;                    pan: 0,&#xD;                    echo: 0,&#xD;                    reverb: 0,&#xD;                    fuzz: 0,&#xD;                    robot: 0&#xD;                }&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * The minimum and maximum MIDI note numbers, for clamping the input to play note.&#xD;         * @type {{min: number, max: number}}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;MIDI_NOTE_RANGE&apos;,&#xD;        get: function get() {&#xD;            return { min: 36, max: 96 }; // C2 to C7&#xD;        }&#xD;&#xD;        /**&#xD;         * The minimum and maximum beat values, for clamping the duration of play note, play drum and rest.&#xD;         * 100 beats at the default tempo of 60bpm is 100 seconds.&#xD;         * @type {{min: number, max: number}}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;BEAT_RANGE&apos;,&#xD;        get: function get() {&#xD;            return { min: 0, max: 100 };&#xD;        }&#xD;&#xD;        /** The minimum and maximum tempo values, in bpm.&#xD;        * @type {{min: number, max: number}}&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;TEMPO_RANGE&apos;,&#xD;        get: function get() {&#xD;            return { min: 20, max: 500 };&#xD;        }&#xD;&#xD;        /** The minimum and maximum values for each sound effect.&#xD;        * @type {{effect:{min: number, max: number}}}&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;EFFECT_RANGE&apos;,&#xD;        get: function get() {&#xD;            return {&#xD;                pitch: { min: -600, max: 600 }, // -5 to 5 octaves&#xD;                pan: { min: -100, max: 100 }, // 100% left to 100% right&#xD;                echo: { min: 0, max: 100 }, // 0 to max (75%) feedback&#xD;                reverb: { min: 0, max: 100 }, // wet/dry: 0 to 100% wet&#xD;                fuzz: { min: 0, max: 100 }, // wed/dry: 0 to 100% wet&#xD;                robot: { min: 0, max: 600 } // 0 to 5 octaves&#xD;            };&#xD;        }&#xD;    }]);&#xD;&#xD;    return Scratch3SoundBlocks;&#xD;}();&#xD;&#xD;module.exports = Scratch3SoundBlocks;&#xD;&#xD;/***/ }),&#xD;/* 55 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;var mutationAdapter = __webpack_require__(27);&#xD;var html = __webpack_require__(5);&#xD;&#xD;/**&#xD; * Convert and an individual block DOM to the representation tree.&#xD; * Based on Blockly&apos;s `domToBlockHeadless_`.&#xD; * @param {Element} blockDOM DOM tree for an individual block.&#xD; * @param {object} blocks Collection of blocks to add to.&#xD; * @param {boolean} isTopBlock Whether blocks at this level are "top blocks."&#xD; * @param {?string} parent Parent block ID.&#xD; * @return {undefined}&#xD; */&#xD;var domToBlock = function domToBlock(blockDOM, blocks, isTopBlock, parent) {&#xD;    // Block skeleton.&#xD;    var block = {&#xD;        id: blockDOM.attribs.id, // Block ID&#xD;        opcode: blockDOM.attribs.type, // For execution, "event_whengreenflag".&#xD;        inputs: {}, // Inputs to this block and the blocks they point to.&#xD;        fields: {}, // Fields on this block and their values.&#xD;        next: null, // Next block in the stack, if one exists.&#xD;        topLevel: isTopBlock, // If this block starts a stack.&#xD;        parent: parent, // Parent block ID, if available.&#xD;        shadow: blockDOM.name === &apos;shadow&apos;, // If this represents a shadow/slot.&#xD;        x: blockDOM.attribs.x, // X position of script, if top-level.&#xD;        y: blockDOM.attribs.y // Y position of script, if top-level.&#xD;    };&#xD;&#xD;    // Add the block to the representation tree.&#xD;    blocks[block.id] = block;&#xD;&#xD;    // Process XML children and find enclosed blocks, fields, etc.&#xD;    for (var i = 0; i &lt; blockDOM.children.length; i++) {&#xD;        var xmlChild = blockDOM.children[i];&#xD;        // Enclosed blocks and shadows&#xD;        var childBlockNode = null;&#xD;        var childShadowNode = null;&#xD;        for (var j = 0; j &lt; xmlChild.children.length; j++) {&#xD;            var grandChildNode = xmlChild.children[j];&#xD;            if (!grandChildNode.name) {&#xD;                // Non-XML tag node.&#xD;                continue;&#xD;            }&#xD;            var grandChildNodeName = grandChildNode.name.toLowerCase();&#xD;            if (grandChildNodeName === &apos;block&apos;) {&#xD;                childBlockNode = grandChildNode;&#xD;            } else if (grandChildNodeName === &apos;shadow&apos;) {&#xD;                childShadowNode = grandChildNode;&#xD;            }&#xD;        }&#xD;&#xD;        // Use shadow block only if there&apos;s no real block node.&#xD;        if (!childBlockNode &amp;&amp; childShadowNode) {&#xD;            childBlockNode = childShadowNode;&#xD;        }&#xD;&#xD;        // Not all Blockly-type blocks are handled here,&#xD;        // as we won&apos;t be using all of them for Scratch.&#xD;        switch (xmlChild.name.toLowerCase()) {&#xD;            case &apos;field&apos;:&#xD;                {&#xD;                    // Add the field to this block.&#xD;                    var fieldName = xmlChild.attribs.name;&#xD;                    var fieldData = &apos;&apos;;&#xD;                    if (xmlChild.children.length &gt; 0 &amp;&amp; xmlChild.children[0].data) {&#xD;                        fieldData = xmlChild.children[0].data;&#xD;                    } else {&#xD;                        // If the child of the field with a data property&#xD;                        // doesn&apos;t exist, set the data to an empty string.&#xD;                        fieldData = &apos;&apos;;&#xD;                    }&#xD;                    block.fields[fieldName] = {&#xD;                        name: fieldName,&#xD;                        value: fieldData&#xD;                    };&#xD;                    break;&#xD;                }&#xD;            case &apos;value&apos;:&#xD;            case &apos;statement&apos;:&#xD;                {&#xD;                    // Recursively generate block structure for input block.&#xD;                    domToBlock(childBlockNode, blocks, false, block.id);&#xD;                    if (childShadowNode &amp;&amp; childBlockNode !== childShadowNode) {&#xD;                        // Also generate the shadow block.&#xD;                        domToBlock(childShadowNode, blocks, false, block.id);&#xD;                    }&#xD;                    // Link this block&apos;s input to the child block.&#xD;                    var inputName = xmlChild.attribs.name;&#xD;                    block.inputs[inputName] = {&#xD;                        name: inputName,&#xD;                        block: childBlockNode.attribs.id,&#xD;                        shadow: childShadowNode ? childShadowNode.attribs.id : null&#xD;                    };&#xD;                    break;&#xD;                }&#xD;            case &apos;next&apos;:&#xD;                {&#xD;                    if (!childBlockNode || !childBlockNode.attribs) {&#xD;                        // Invalid child block.&#xD;                        continue;&#xD;                    }&#xD;                    // Recursively generate block structure for next block.&#xD;                    domToBlock(childBlockNode, blocks, false, block.id);&#xD;                    // Link next block to this block.&#xD;                    block.next = childBlockNode.attribs.id;&#xD;                    break;&#xD;                }&#xD;            case &apos;mutation&apos;:&#xD;                {&#xD;                    block.mutation = mutationAdapter(xmlChild);&#xD;                    break;&#xD;                }&#xD;        }&#xD;    }&#xD;};&#xD;&#xD;/**&#xD; * Convert outer blocks DOM from a Blockly CREATE event&#xD; * to a usable form for the Scratch runtime.&#xD; * This structure is based on Blockly xml.js:`domToWorkspace` and `domToBlock`.&#xD; * @param {Element} blocksDOM DOM tree for this event.&#xD; * @return {Array.&lt;object&gt;} Usable list of blocks from this CREATE event.&#xD; */&#xD;var domToBlocks = function domToBlocks(blocksDOM) {&#xD;    // At this level, there could be multiple blocks adjacent in the DOM tree.&#xD;    var blocks = {};&#xD;    for (var i = 0; i &lt; blocksDOM.length; i++) {&#xD;        var block = blocksDOM[i];&#xD;        if (!block.name || !block.attribs) {&#xD;            continue;&#xD;        }&#xD;        var tagName = block.name.toLowerCase();&#xD;        if (tagName === &apos;block&apos; || tagName === &apos;shadow&apos;) {&#xD;            domToBlock(block, blocks, true, null);&#xD;        }&#xD;    }&#xD;    // Flatten blocks object into a list.&#xD;    var blocksList = [];&#xD;    for (var b in blocks) {&#xD;        if (!blocks.hasOwnProperty(b)) continue;&#xD;        blocksList.push(blocks[b]);&#xD;    }&#xD;    return blocksList;&#xD;};&#xD;&#xD;/**&#xD; * Adapter between block creation events and block representation which can be&#xD; * used by the Scratch runtime.&#xD; * @param {object} e `Blockly.events.create`&#xD; * @return {Array.&lt;object&gt;} List of blocks from this CREATE event.&#xD; */&#xD;var adapter = function adapter(e) {&#xD;    // Validate input&#xD;    if ((typeof e === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(e)) !== &apos;object&apos;) return;&#xD;    if (_typeof(e.xml) !== &apos;object&apos;) return;&#xD;&#xD;    return domToBlocks(html.parseDOM(e.xml.outerHTML));&#xD;};&#xD;&#xD;module.exports = adapter;&#xD;&#xD;/***/ }),&#xD;/* 56 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var log = __webpack_require__(3);&#xD;var Thread = __webpack_require__(18);&#xD;&#xD;/**&#xD; * Utility function to determine if a value is a Promise.&#xD; * @param {*} value Value to check for a Promise.&#xD; * @return {boolean} True if the value appears to be a Promise.&#xD; */&#xD;var isPromise = function isPromise(value) {&#xD;    return value &amp;&amp; value.then &amp;&amp; typeof value.then === &apos;function&apos;;&#xD;};&#xD;&#xD;/**&#xD; * Execute a block.&#xD; * @param {!Sequencer} sequencer Which sequencer is executing.&#xD; * @param {!Thread} thread Thread which to read and execute.&#xD; */&#xD;var execute = function execute(sequencer, thread) {&#xD;    var runtime = sequencer.runtime;&#xD;    var target = thread.target;&#xD;&#xD;    // Stop if block or target no longer exists.&#xD;    if (target === null) {&#xD;        // No block found: stop the thread; script no longer exists.&#xD;        sequencer.retireThread(thread);&#xD;        return;&#xD;    }&#xD;&#xD;    // Current block to execute is the one on the top of the stack.&#xD;    var currentBlockId = thread.peekStack();&#xD;    var currentStackFrame = thread.peekStackFrame();&#xD;&#xD;    var blockContainer = void 0;&#xD;    if (thread.updateMonitor) {&#xD;        blockContainer = runtime.monitorBlocks;&#xD;    } else {&#xD;        blockContainer = target.blocks;&#xD;    }&#xD;    var block = blockContainer.getBlock(currentBlockId);&#xD;    if (typeof block === &apos;undefined&apos;) {&#xD;        blockContainer = runtime.flyoutBlocks;&#xD;        block = blockContainer.getBlock(currentBlockId);&#xD;        // Stop if block or target no longer exists.&#xD;        if (typeof block === &apos;undefined&apos;) {&#xD;            // No block found: stop the thread; script no longer exists.&#xD;            sequencer.retireThread(thread);&#xD;            return;&#xD;        }&#xD;    }&#xD;&#xD;    var opcode = blockContainer.getOpcode(block);&#xD;    var fields = blockContainer.getFields(block);&#xD;    var inputs = blockContainer.getInputs(block);&#xD;    var blockFunction = runtime.getOpcodeFunction(opcode);&#xD;    var isHat = runtime.getIsHat(opcode);&#xD;&#xD;    if (!opcode) {&#xD;        log.warn(&apos;Could not get opcode for block: &apos; + currentBlockId);&#xD;        return;&#xD;    }&#xD;&#xD;    /**&#xD;     * Handle any reported value from the primitive, either directly returned&#xD;     * or after a promise resolves.&#xD;     * @param {*} resolvedValue Value eventually returned from the primitive.&#xD;     */&#xD;    // @todo move this to callback attached to the thread when we have performance&#xD;    // metrics (dd)&#xD;    var handleReport = function handleReport(resolvedValue) {&#xD;        thread.pushReportedValue(resolvedValue);&#xD;        if (isHat) {&#xD;            // Hat predicate was evaluated.&#xD;            if (runtime.getIsEdgeActivatedHat(opcode)) {&#xD;                // If this is an edge-activated hat, only proceed if&#xD;                // the value is true and used to be false.&#xD;                var oldEdgeValue = runtime.updateEdgeActivatedValue(currentBlockId, resolvedValue);&#xD;                var edgeWasActivated = !oldEdgeValue &amp;&amp; resolvedValue;&#xD;                if (!edgeWasActivated) {&#xD;                    sequencer.retireThread(thread);&#xD;                }&#xD;            } else {&#xD;                // Not an edge-activated hat: retire the thread&#xD;                // if predicate was false.&#xD;                if (!resolvedValue) {&#xD;                    sequencer.retireThread(thread);&#xD;                }&#xD;            }&#xD;        } else {&#xD;            // In a non-hat, report the value visually if necessary if&#xD;            // at the top of the thread stack.&#xD;            if (typeof resolvedValue !== &apos;undefined&apos; &amp;&amp; thread.atStackTop()) {&#xD;                if (thread.showVisualReport) {&#xD;                    runtime.visualReport(currentBlockId, resolvedValue);&#xD;                }&#xD;                if (thread.updateMonitor) {&#xD;                    runtime.requestUpdateMonitor({&#xD;                        id: currentBlockId,&#xD;                        value: String(resolvedValue)&#xD;                    });&#xD;                }&#xD;            }&#xD;            // Finished any yields.&#xD;            thread.status = Thread.STATUS_RUNNING;&#xD;        }&#xD;    };&#xD;&#xD;    // Hats and single-field shadows are implemented slightly differently&#xD;    // from regular blocks.&#xD;    // For hats: if they have an associated block function,&#xD;    // it&apos;s treated as a predicate; if not, execution will proceed as a no-op.&#xD;    // For single-field shadows: If the block has a single field, and no inputs,&#xD;    // immediately return the value of the field.&#xD;    if (typeof blockFunction === &apos;undefined&apos;) {&#xD;        if (isHat) {&#xD;            // Skip through the block (hat with no predicate).&#xD;            return;&#xD;        }&#xD;        var keys = Object.keys(fields);&#xD;        if (keys.length === 1 &amp;&amp; Object.keys(inputs).length === 0) {&#xD;            // One field and no inputs - treat as arg.&#xD;            handleReport(fields[keys[0]].value);&#xD;        } else {&#xD;            log.warn(&apos;Could not get implementation for opcode: &apos; + opcode);&#xD;        }&#xD;        thread.requestScriptGlowInFrame = true;&#xD;        return;&#xD;    }&#xD;&#xD;    // Generate values for arguments (inputs).&#xD;    var argValues = {};&#xD;&#xD;    // Add all fields on this block to the argValues.&#xD;    for (var fieldName in fields) {&#xD;        if (!fields.hasOwnProperty(fieldName)) continue;&#xD;        argValues[fieldName] = fields[fieldName].value;&#xD;    }&#xD;&#xD;    // Recursively evaluate input blocks.&#xD;    for (var inputName in inputs) {&#xD;        if (!inputs.hasOwnProperty(inputName)) continue;&#xD;        var input = inputs[inputName];&#xD;        var inputBlockId = input.block;&#xD;        // Is there no value for this input waiting in the stack frame?&#xD;        if (inputBlockId !== null &amp;&amp; typeof currentStackFrame.reported[inputName] === &apos;undefined&apos;) {&#xD;            // If there&apos;s not, we need to evaluate the block.&#xD;            // Push to the stack to evaluate the reporter block.&#xD;            thread.pushStack(inputBlockId);&#xD;            // Save name of input for `Thread.pushReportedValue`.&#xD;            currentStackFrame.waitingReporter = inputName;&#xD;            // Actually execute the block.&#xD;            execute(sequencer, thread);&#xD;            if (thread.status === Thread.STATUS_PROMISE_WAIT) {&#xD;                return;&#xD;            }&#xD;&#xD;            // Execution returned immediately,&#xD;            // and presumably a value was reported, so pop the stack.&#xD;            currentStackFrame.waitingReporter = null;&#xD;            thread.popStack();&#xD;        }&#xD;        argValues[inputName] = currentStackFrame.reported[inputName];&#xD;    }&#xD;&#xD;    // Add any mutation to args (e.g., for procedures).&#xD;    var mutation = blockContainer.getMutation(block);&#xD;    if (mutation !== null) {&#xD;        argValues.mutation = mutation;&#xD;    }&#xD;&#xD;    // If we&apos;ve gotten this far, all of the input blocks are evaluated,&#xD;    // and `argValues` is fully populated. So, execute the block primitive.&#xD;    // First, clear `currentStackFrame.reported`, so any subsequent execution&#xD;    // (e.g., on return from a branch) gets fresh inputs.&#xD;    currentStackFrame.reported = {};&#xD;&#xD;    var primitiveReportedValue = null;&#xD;    primitiveReportedValue = blockFunction(argValues, {&#xD;        stackFrame: currentStackFrame.executionContext,&#xD;        target: target,&#xD;        yield: function _yield() {&#xD;            thread.status = Thread.STATUS_YIELD;&#xD;        },&#xD;        startBranch: function startBranch(branchNum, isLoop) {&#xD;            sequencer.stepToBranch(thread, branchNum, isLoop);&#xD;        },&#xD;        stopAll: function stopAll() {&#xD;            runtime.stopAll();&#xD;        },&#xD;        stopOtherTargetThreads: function stopOtherTargetThreads() {&#xD;            runtime.stopForTarget(target, thread);&#xD;        },&#xD;        stopThisScript: function stopThisScript() {&#xD;            thread.stopThisScript();&#xD;        },&#xD;        startProcedure: function startProcedure(procedureCode) {&#xD;            sequencer.stepToProcedure(thread, procedureCode);&#xD;        },&#xD;        getProcedureParamNames: function getProcedureParamNames(procedureCode) {&#xD;            return blockContainer.getProcedureParamNames(procedureCode);&#xD;        },&#xD;        pushParam: function pushParam(paramName, paramValue) {&#xD;            thread.pushParam(paramName, paramValue);&#xD;        },&#xD;        getParam: function getParam(paramName) {&#xD;            return thread.getParam(paramName);&#xD;        },&#xD;        startHats: function startHats(requestedHat, optMatchFields, optTarget) {&#xD;            return runtime.startHats(requestedHat, optMatchFields, optTarget);&#xD;        },&#xD;        ioQuery: function ioQuery(device, func, args) {&#xD;            // Find the I/O device and execute the query/function call.&#xD;            if (runtime.ioDevices[device] &amp;&amp; runtime.ioDevices[device][func]) {&#xD;                var devObject = runtime.ioDevices[device];&#xD;                // @todo Figure out why eslint complains about no-useless-call&#xD;                // no-useless-call can&apos;t tell if the call is useless for dynamic&#xD;                // expressions... or something. Not exactly sure why it&#xD;                // complains here.&#xD;                // eslint-disable-next-line no-useless-call&#xD;                return devObject[func].call(devObject, args);&#xD;            }&#xD;        }&#xD;    });&#xD;&#xD;    if (typeof primitiveReportedValue === &apos;undefined&apos;) {&#xD;        // No value reported - potentially a command block.&#xD;        // Edge-activated hats don&apos;t request a glow; all commands do.&#xD;        thread.requestScriptGlowInFrame = true;&#xD;    }&#xD;&#xD;    // If it&apos;s a promise, wait until promise resolves.&#xD;    if (isPromise(primitiveReportedValue)) {&#xD;        if (thread.status === Thread.STATUS_RUNNING) {&#xD;            // Primitive returned a promise; automatically yield thread.&#xD;            thread.status = Thread.STATUS_PROMISE_WAIT;&#xD;        }&#xD;        // Promise handlers&#xD;        primitiveReportedValue.then(function (resolvedValue) {&#xD;            handleReport(resolvedValue);&#xD;            if (typeof resolvedValue === &apos;undefined&apos;) {&#xD;                var stackFrame = void 0;&#xD;                var nextBlockId = void 0;&#xD;                do {&#xD;                    // In the case that the promise is the last block in the current thread stack&#xD;                    // We need to pop out repeatedly until we find the next block.&#xD;                    var popped = thread.popStack();&#xD;                    if (popped === null) {&#xD;                        return;&#xD;                    }&#xD;                    nextBlockId = thread.target.blocks.getNextBlock(popped);&#xD;                    if (nextBlockId !== null) {&#xD;                        // A next block exists so break out this loop&#xD;                        break;&#xD;                    }&#xD;                    // Investigate the next block and if not in a loop,&#xD;                    // then repeat and pop the next item off the stack frame&#xD;                    stackFrame = thread.peekStackFrame();&#xD;                } while (stackFrame !== null &amp;&amp; !stackFrame.isLoop);&#xD;&#xD;                thread.pushStack(nextBlockId);&#xD;            } else {&#xD;                thread.popStack();&#xD;            }&#xD;        }, function (rejectionReason) {&#xD;            // Promise rejected: the primitive had some error.&#xD;            // Log it and proceed.&#xD;            log.warn(&apos;Primitive rejected promise: &apos;, rejectionReason);&#xD;            thread.status = Thread.STATUS_RUNNING;&#xD;            thread.popStack();&#xD;        });&#xD;    } else if (thread.status === Thread.STATUS_RUNNING) {&#xD;        handleReport(primitiveReportedValue);&#xD;    }&#xD;};&#xD;&#xD;module.exports = execute;&#xD;&#xD;/***/ }),&#xD;/* 57 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i &lt; arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var EventEmitter = __webpack_require__(12);&#xD;var Sequencer = __webpack_require__(58);&#xD;var Blocks = __webpack_require__(9);&#xD;var Thread = __webpack_require__(18);&#xD;&#xD;// Virtual I/O devices.&#xD;var Clock = __webpack_require__(61);&#xD;var Keyboard = __webpack_require__(62);&#xD;var Mouse = __webpack_require__(63);&#xD;&#xD;var defaultBlockPackages = {&#xD;    scratch3_control: __webpack_require__(45),&#xD;    scratch3_event: __webpack_require__(47),&#xD;    scratch3_looks: __webpack_require__(48),&#xD;    scratch3_motion: __webpack_require__(49),&#xD;    scratch3_operators: __webpack_require__(50),&#xD;    scratch3_pen: __webpack_require__(51),&#xD;    scratch3_sound: __webpack_require__(54),&#xD;    scratch3_sensing: __webpack_require__(53),&#xD;    scratch3_data: __webpack_require__(46),&#xD;    scratch3_procedures: __webpack_require__(52)&#xD;};&#xD;&#xD;/**&#xD; * Manages targets, scripts, and the sequencer.&#xD; * @constructor&#xD; */&#xD;&#xD;var Runtime = function (_EventEmitter) {&#xD;    _inherits(Runtime, _EventEmitter);&#xD;&#xD;    function Runtime() {&#xD;        _classCallCheck(this, Runtime);&#xD;&#xD;        /**&#xD;         * Target management and storage.&#xD;         * @type {Array.&lt;!Target&gt;}&#xD;         */&#xD;        var _this = _possibleConstructorReturn(this, (Runtime.__proto__ || Object.getPrototypeOf(Runtime)).call(this));&#xD;&#xD;        _this.targets = [];&#xD;&#xD;        /**&#xD;         * A list of threads that are currently running in the VM.&#xD;         * Threads are added when execution starts and pruned when execution ends.&#xD;         * @type {Array.&lt;Thread&gt;}&#xD;         */&#xD;        _this.threads = [];&#xD;&#xD;        /** @type {!Sequencer} */&#xD;        _this.sequencer = new Sequencer(_this);&#xD;&#xD;        /**&#xD;         * Storage container for flyout blocks.&#xD;         * These will execute on `_editingTarget.`&#xD;         * @type {!Blocks}&#xD;         */&#xD;        _this.flyoutBlocks = new Blocks();&#xD;&#xD;        /**&#xD;         * Storage container for monitor blocks.&#xD;         * These will execute on a target maybe&#xD;         * @type {!Blocks}&#xD;         */&#xD;        _this.monitorBlocks = new Blocks();&#xD;&#xD;        /**&#xD;         * Currently known editing target for the VM.&#xD;         * @type {?Target}&#xD;         */&#xD;        _this._editingTarget = null;&#xD;&#xD;        /**&#xD;         * Map to look up a block primitive&apos;s implementation function by its opcode.&#xD;         * This is a two-step lookup: package name first, then primitive name.&#xD;         * @type {Object.&lt;string, Function&gt;}&#xD;         */&#xD;        _this._primitives = {};&#xD;&#xD;        /**&#xD;         * Map to look up hat blocks&apos; metadata.&#xD;         * Keys are opcode for hat, values are metadata objects.&#xD;         * @type {Object.&lt;string, Object&gt;}&#xD;         */&#xD;        _this._hats = {};&#xD;&#xD;        /**&#xD;         * Currently known values for edge-activated hats.&#xD;         * Keys are block ID for the hat; values are the currently known values.&#xD;         * @type {Object.&lt;string, *&gt;}&#xD;         */&#xD;        _this._edgeActivatedHatValues = {};&#xD;&#xD;        /**&#xD;         * A list of script block IDs that were glowing during the previous frame.&#xD;         * @type {!Array.&lt;!string&gt;}&#xD;         */&#xD;        _this._scriptGlowsPreviousFrame = [];&#xD;&#xD;        /**&#xD;         * Number of non-monitor threads running during the previous frame.&#xD;         * @type {number}&#xD;         */&#xD;        _this._nonMonitorThreadCount = 0;&#xD;&#xD;        /**&#xD;         * Currently known number of clones, used to enforce clone limit.&#xD;         * @type {number}&#xD;         */&#xD;        _this._cloneCounter = 0;&#xD;&#xD;        /**&#xD;         * Flag to emit a targets update at the end of a step. When target data&#xD;         * changes, this flag is set to true.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this._refreshTargets = false;&#xD;&#xD;        /**&#xD;         * List of all monitors.&#xD;         */&#xD;        _this._monitorState = {};&#xD;&#xD;        /**&#xD;         * Whether the project is in "turbo mode."&#xD;         * @type {Boolean}&#xD;         */&#xD;        _this.turboMode = false;&#xD;&#xD;        /**&#xD;         * Whether the project is in "compatibility mode" (30 TPS).&#xD;         * @type {Boolean}&#xD;         */&#xD;        _this.compatibilityMode = false;&#xD;&#xD;        /**&#xD;         * A reference to the current runtime stepping interval, set&#xD;         * by a `setInterval`.&#xD;         * @type {!number}&#xD;         */&#xD;        _this._steppingInterval = null;&#xD;&#xD;        /**&#xD;         * Current length of a step.&#xD;         * Changes as mode switches, and used by the sequencer to calculate&#xD;         * WORK_TIME.&#xD;         * @type {!number}&#xD;         */&#xD;        _this.currentStepTime = null;&#xD;&#xD;        /**&#xD;         * Whether any primitive has requested a redraw.&#xD;         * Affects whether `Sequencer.stepThreads` will yield&#xD;         * after stepping each thread.&#xD;         * Reset on every frame.&#xD;         * @type {boolean}&#xD;         */&#xD;        _this.redrawRequested = false;&#xD;&#xD;        // Register all given block packages.&#xD;        _this._registerBlockPackages();&#xD;&#xD;        // Register and initialize "IO devices", containers for processing&#xD;        // I/O related data.&#xD;        /** @type {Object.&lt;string, Object&gt;} */&#xD;        _this.ioDevices = {&#xD;            clock: new Clock(),&#xD;            keyboard: new Keyboard(_this),&#xD;            mouse: new Mouse(_this)&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Width of the stage, in pixels.&#xD;     * @const {number}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Runtime, [{&#xD;        key: &apos;_registerBlockPackages&apos;,&#xD;&#xD;&#xD;        // -----------------------------------------------------------------------------&#xD;        // -----------------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Register default block packages with this runtime.&#xD;         * @todo Prefix opcodes with package name.&#xD;         * @private&#xD;         */&#xD;        value: function _registerBlockPackages() {&#xD;            for (var packageName in defaultBlockPackages) {&#xD;                if (defaultBlockPackages.hasOwnProperty(packageName)) {&#xD;                    // @todo pass a different runtime depending on package privilege?&#xD;                    var packageObject = new defaultBlockPackages[packageName](this);&#xD;                    // Collect primitives from package.&#xD;                    if (packageObject.getPrimitives) {&#xD;                        var packagePrimitives = packageObject.getPrimitives();&#xD;                        for (var op in packagePrimitives) {&#xD;                            if (packagePrimitives.hasOwnProperty(op)) {&#xD;                                this._primitives[op] = packagePrimitives[op].bind(packageObject);&#xD;                            }&#xD;                        }&#xD;                    }&#xD;                    // Collect hat metadata from package.&#xD;                    if (packageObject.getHats) {&#xD;                        var packageHats = packageObject.getHats();&#xD;                        for (var hatName in packageHats) {&#xD;                            if (packageHats.hasOwnProperty(hatName)) {&#xD;                                this._hats[hatName] = packageHats[hatName];&#xD;                            }&#xD;                        }&#xD;                    }&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Retrieve the function associated with the given opcode.&#xD;         * @param {!string} opcode The opcode to look up.&#xD;         * @return {Function} The function which implements the opcode.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getOpcodeFunction&apos;,&#xD;        value: function getOpcodeFunction(opcode) {&#xD;            return this._primitives[opcode];&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether an opcode represents a hat block.&#xD;         * @param {!string} opcode The opcode to look up.&#xD;         * @return {boolean} True if the op is known to be a hat.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getIsHat&apos;,&#xD;        value: function getIsHat(opcode) {&#xD;            return this._hats.hasOwnProperty(opcode);&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether an opcode represents an edge-activated hat block.&#xD;         * @param {!string} opcode The opcode to look up.&#xD;         * @return {boolean} True if the op is known to be a edge-activated hat.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getIsEdgeActivatedHat&apos;,&#xD;        value: function getIsEdgeActivatedHat(opcode) {&#xD;            return this._hats.hasOwnProperty(opcode) &amp;&amp; this._hats[opcode].edgeActivated;&#xD;        }&#xD;&#xD;        /**&#xD;         * Update an edge-activated hat block value.&#xD;         * @param {!string} blockId ID of hat to store value for.&#xD;         * @param {*} newValue Value to store for edge-activated hat.&#xD;         * @return {*} The old value for the edge-activated hat.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;updateEdgeActivatedValue&apos;,&#xD;        value: function updateEdgeActivatedValue(blockId, newValue) {&#xD;            var oldValue = this._edgeActivatedHatValues[blockId];&#xD;            this._edgeActivatedHatValues[blockId] = newValue;&#xD;            return oldValue;&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear all edge-activaed hat values.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clearEdgeActivatedValues&apos;,&#xD;        value: function clearEdgeActivatedValues() {&#xD;            this._edgeActivatedHatValues = {};&#xD;        }&#xD;&#xD;        /**&#xD;         * Attach the audio engine&#xD;         * @param {!AudioEngine} audioEngine The audio engine to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachAudioEngine&apos;,&#xD;        value: function attachAudioEngine(audioEngine) {&#xD;            this.audioEngine = audioEngine;&#xD;        }&#xD;&#xD;        /**&#xD;         * Attach the renderer&#xD;         * @param {!RenderWebGL} renderer The renderer to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachRenderer&apos;,&#xD;        value: function attachRenderer(renderer) {&#xD;            this.renderer = renderer;&#xD;        }&#xD;&#xD;        /**&#xD;         * Attach the storage module&#xD;         * @param {!ScratchStorage} storage The storage module to attach&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;attachStorage&apos;,&#xD;        value: function attachStorage(storage) {&#xD;            this.storage = storage;&#xD;        }&#xD;&#xD;        // -----------------------------------------------------------------------------&#xD;        // -----------------------------------------------------------------------------&#xD;&#xD;        /**&#xD;         * Create a thread and push it to the list of threads.&#xD;         * @param {!string} id ID of block that starts the stack.&#xD;         * @param {!Target} target Target to run thread on.&#xD;         * @param {?object} opts optional arguments&#xD;         * @param {?boolean} opts.showVisualReport true if the script should show speech bubble for its value&#xD;         * @param {?boolean} opts.updateMonitor true if the script should update a monitor value&#xD;         * @return {!Thread} The newly created thread.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_pushThread&apos;,&#xD;        value: function _pushThread(id, target, opts) {&#xD;            opts = Object.assign({&#xD;                showVisualReport: false,&#xD;                updateMonitor: false&#xD;            }, opts);&#xD;&#xD;            var thread = new Thread(id);&#xD;            thread.target = target;&#xD;            thread.showVisualReport = opts.showVisualReport;&#xD;            thread.updateMonitor = opts.updateMonitor;&#xD;&#xD;            thread.pushStack(id);&#xD;            this.threads.push(thread);&#xD;            return thread;&#xD;        }&#xD;&#xD;        /**&#xD;         * Remove a thread from the list of threads.&#xD;         * @param {?Thread} thread Thread object to remove from actives&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_removeThread&apos;,&#xD;        value: function _removeThread(thread) {&#xD;            // Inform sequencer to stop executing that thread.&#xD;            this.sequencer.retireThread(thread);&#xD;            // Remove from the list.&#xD;            var i = this.threads.indexOf(thread);&#xD;            if (i &gt; -1) {&#xD;                this.threads.splice(i, 1);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Restart a thread in place, maintaining its position in the list of threads.&#xD;         * This is used by `startHats` to and is necessary to ensure 2.0-like execution order.&#xD;         * Test project: https://scratch.mit.edu/projects/130183108/&#xD;         * @param {!Thread} thread Thread object to restart.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_restartThread&apos;,&#xD;        value: function _restartThread(thread) {&#xD;            var newThread = new Thread(thread.topBlock);&#xD;            newThread.target = thread.target;&#xD;            newThread.showVisualReport = thread.showVisualReport;&#xD;            newThread.updateMonitor = thread.updateMonitor;&#xD;            newThread.pushStack(thread.topBlock);&#xD;            var i = this.threads.indexOf(thread);&#xD;            if (i &gt; -1) {&#xD;                this.threads[i] = newThread;&#xD;            } else {&#xD;                this.threads.push(thread);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether a thread is currently active/running.&#xD;         * @param {?Thread} thread Thread object to check.&#xD;         * @return {boolean} True if the thread is active/running.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isActiveThread&apos;,&#xD;        value: function isActiveThread(thread) {&#xD;            return this.threads.indexOf(thread) &gt; -1;&#xD;        }&#xD;&#xD;        /**&#xD;         * Toggle a script.&#xD;         * @param {!string} topBlockId ID of block that starts the script.&#xD;         * @param {?object} opts optional arguments to toggle script&#xD;         * @param {?string} opts.target target ID for target to run script on. If not supplied, uses editing target.&#xD;         * @param {?boolean} opts.showVisualReport true if the speech bubble should pop up on the block, false if not.&#xD;         * @param {?boolean} opts.updateMonitor true if the monitor for this block should get updated.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;toggleScript&apos;,&#xD;        value: function toggleScript(topBlockId, opts) {&#xD;            opts = Object.assign({&#xD;                target: this._editingTarget,&#xD;                showVisualReport: false,&#xD;                updateMonitor: false&#xD;            }, opts);&#xD;            // Remove any existing thread.&#xD;            for (var i = 0; i &lt; this.threads.length; i++) {&#xD;                if (this.threads[i].topBlock === topBlockId) {&#xD;                    this._removeThread(this.threads[i]);&#xD;                    return;&#xD;                }&#xD;            }&#xD;            // Otherwise add it.&#xD;            this._pushThread(topBlockId, opts.target, opts);&#xD;        }&#xD;&#xD;        /**&#xD;         * Run a function `f` for all scripts in a workspace.&#xD;         * `f` will be called with two parameters:&#xD;         *  - the top block ID of the script.&#xD;         *  - the target that owns the script.&#xD;         * @param {!Function} f Function to call for each script.&#xD;         * @param {Target=} optTarget Optionally, a target to restrict to.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;allScriptsDo&apos;,&#xD;        value: function allScriptsDo(f, optTarget) {&#xD;            var targets = this.targets;&#xD;            if (optTarget) {&#xD;                targets = [optTarget];&#xD;            }&#xD;            for (var t = targets.length - 1; t &gt;= 0; t--) {&#xD;                var target = targets[t];&#xD;                var scripts = target.blocks.getScripts();&#xD;                for (var j = 0; j &lt; scripts.length; j++) {&#xD;                    var topBlockId = scripts[j];&#xD;                    f(topBlockId, target);&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Start all relevant hats.&#xD;         * @param {!string} requestedHatOpcode Opcode of hats to start.&#xD;         * @param {object=} optMatchFields Optionally, fields to match on the hat.&#xD;         * @param {Target=} optTarget Optionally, a target to restrict to.&#xD;         * @return {Array.&lt;Thread&gt;} List of threads started by this function.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;startHats&apos;,&#xD;        value: function startHats(requestedHatOpcode, optMatchFields, optTarget) {&#xD;            if (!this._hats.hasOwnProperty(requestedHatOpcode)) {&#xD;                // No known hat with this opcode.&#xD;                return;&#xD;            }&#xD;            var instance = this;&#xD;            var newThreads = [];&#xD;&#xD;            for (var opts in optMatchFields) {&#xD;                if (!optMatchFields.hasOwnProperty(opts)) continue;&#xD;                optMatchFields[opts] = optMatchFields[opts].toUpperCase();&#xD;            }&#xD;&#xD;            // Consider all scripts, looking for hats with opcode `requestedHatOpcode`.&#xD;            this.allScriptsDo(function (topBlockId, target) {&#xD;                var blocks = target.blocks;&#xD;                var block = blocks.getBlock(topBlockId);&#xD;                var potentialHatOpcode = block.opcode;&#xD;                if (potentialHatOpcode !== requestedHatOpcode) {&#xD;                    // Not the right hat.&#xD;                    return;&#xD;                }&#xD;&#xD;                // Match any requested fields.&#xD;                // For example: ensures that broadcasts match.&#xD;                // This needs to happen before the block is evaluated&#xD;                // (i.e., before the predicate can be run) because "broadcast and wait"&#xD;                // needs to have a precise collection of started threads.&#xD;                var hatFields = blocks.getFields(block);&#xD;&#xD;                // If no fields are present, check inputs (horizontal blocks)&#xD;                if (Object.keys(hatFields).length === 0) {&#xD;                    var hatInputs = blocks.getInputs(block);&#xD;                    for (var input in hatInputs) {&#xD;                        if (!hatInputs.hasOwnProperty(input)) continue;&#xD;                        var id = hatInputs[input].block;&#xD;                        var inpBlock = blocks.getBlock(id);&#xD;                        var fields = blocks.getFields(inpBlock);&#xD;                        hatFields = Object.assign(fields, hatFields);&#xD;                    }&#xD;                }&#xD;&#xD;                if (optMatchFields) {&#xD;                    for (var matchField in optMatchFields) {&#xD;                        if (hatFields[matchField].value.toUpperCase() !== optMatchFields[matchField]) {&#xD;                            // Field mismatch.&#xD;                            return;&#xD;                        }&#xD;                    }&#xD;                }&#xD;&#xD;                // Look up metadata for the relevant hat.&#xD;                var hatMeta = instance._hats[requestedHatOpcode];&#xD;                if (hatMeta.restartExistingThreads) {&#xD;                    // If `restartExistingThreads` is true, we should stop&#xD;                    // any existing threads starting with the top block.&#xD;                    for (var i = 0; i &lt; instance.threads.length; i++) {&#xD;                        if (instance.threads[i].topBlock === topBlockId &amp;&amp; instance.threads[i].target === target) {&#xD;                            instance._restartThread(instance.threads[i]);&#xD;                            return;&#xD;                        }&#xD;                    }&#xD;                } else {&#xD;                    // If `restartExistingThreads` is false, we should&#xD;                    // give up if any threads with the top block are running.&#xD;                    for (var j = 0; j &lt; instance.threads.length; j++) {&#xD;                        if (instance.threads[j].topBlock === topBlockId &amp;&amp; instance.threads[j].target === target) {&#xD;                            // Some thread is already running.&#xD;                            return;&#xD;                        }&#xD;                    }&#xD;                }&#xD;                // Start the thread with this top block.&#xD;                newThreads.push(instance._pushThread(topBlockId, target));&#xD;            }, optTarget);&#xD;            return newThreads;&#xD;        }&#xD;&#xD;        /**&#xD;         * Dispose all targets. Return to clean state.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            this.stopAll();&#xD;            this.targets.map(this.disposeTarget, this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Dispose of a target.&#xD;         * @param {!Target} disposingTarget Target to dispose of.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;disposeTarget&apos;,&#xD;        value: function disposeTarget(disposingTarget) {&#xD;            this.targets = this.targets.filter(function (target) {&#xD;                if (disposingTarget !== target) return true;&#xD;                // Allow target to do dispose actions.&#xD;                target.dispose();&#xD;                // Remove from list of targets.&#xD;                return false;&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop any threads acting on the target.&#xD;         * @param {!Target} target Target to stop threads for.&#xD;         * @param {Thread=} optThreadException Optional thread to skip.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopForTarget&apos;,&#xD;        value: function stopForTarget(target, optThreadException) {&#xD;            // Stop any threads on the target.&#xD;            for (var i = 0; i &lt; this.threads.length; i++) {&#xD;                if (this.threads[i] === optThreadException) {&#xD;                    continue;&#xD;                }&#xD;                if (this.threads[i].target === target) {&#xD;                    this._removeThread(this.threads[i]);&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Start all threads that start with the green flag.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;greenFlag&apos;,&#xD;        value: function greenFlag() {&#xD;            this.stopAll();&#xD;            this.ioDevices.clock.resetProjectTimer();&#xD;            this.clearEdgeActivatedValues();&#xD;            // Inform all targets of the green flag.&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                this.targets[i].onGreenFlag();&#xD;            }&#xD;            this.startHats(&apos;event_whenflagclicked&apos;);&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop "everything."&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopAll&apos;,&#xD;        value: function stopAll() {&#xD;            // Dispose all clones.&#xD;            var newTargets = [];&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                this.targets[i].onStopAll();&#xD;                if (this.targets[i].hasOwnProperty(&apos;isOriginal&apos;) &amp;&amp; !this.targets[i].isOriginal) {&#xD;                    this.targets[i].dispose();&#xD;                } else {&#xD;                    newTargets.push(this.targets[i]);&#xD;                }&#xD;            }&#xD;            this.targets = newTargets;&#xD;            // Dispose all threads.&#xD;            var threadsCopy = this.threads.slice();&#xD;            while (threadsCopy.length &gt; 0) {&#xD;                var poppedThread = threadsCopy.pop();&#xD;                this._removeThread(poppedThread);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Repeatedly run `sequencer.stepThreads` and filter out&#xD;         * inactive threads after each iteration.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_step&apos;,&#xD;        value: function _step() {&#xD;            var _this2 = this;&#xD;&#xD;            // Find all edge-activated hats, and add them to threads to be evaluated.&#xD;            for (var hatType in this._hats) {&#xD;                if (!this._hats.hasOwnProperty(hatType)) continue;&#xD;                var hat = this._hats[hatType];&#xD;                if (hat.edgeActivated) {&#xD;                    this.startHats(hatType);&#xD;                }&#xD;            }&#xD;            this.redrawRequested = false;&#xD;            this._pushMonitors();&#xD;            var doneThreads = this.sequencer.stepThreads();&#xD;            this._updateGlows(doneThreads);&#xD;            // Add done threads so that even if a thread finishes within 1 frame, the green&#xD;            // flag will still indicate that a script ran.&#xD;            this._emitProjectRunStatus(this.threads.length + doneThreads.length - this._getMonitorThreadCount([].concat(_toConsumableArray(this.threads), _toConsumableArray(doneThreads))));&#xD;            if (this.renderer) {&#xD;                // @todo: Only render when this.redrawRequested or clones rendered.&#xD;                this.renderer.draw();&#xD;            }&#xD;&#xD;            if (this._refreshTargets) {&#xD;                this.emit(Runtime.TARGETS_UPDATE);&#xD;                this._refreshTargets = false;&#xD;            }&#xD;&#xD;            // @todo(vm#570) only emit if monitors has changed since last time.&#xD;            this.emit(Runtime.MONITORS_UPDATE, Object.keys(this._monitorState).map(function (key) {&#xD;                return _this2._monitorState[key];&#xD;            }));&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the number of threads in the given array that are monitor threads (threads&#xD;         * that update monitor values, and don&apos;t count as running a script).&#xD;         * @param {!Array.&lt;Thread&gt;} threads The set of threads to look through.&#xD;         * @return {number} The number of monitor threads in threads.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_getMonitorThreadCount&apos;,&#xD;        value: function _getMonitorThreadCount(threads) {&#xD;            var count = 0;&#xD;            threads.forEach(function (thread) {&#xD;                if (thread.updateMonitor) count++;&#xD;            });&#xD;            return count;&#xD;        }&#xD;&#xD;        /**&#xD;         * Queue monitor blocks to sequencer to be run.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_pushMonitors&apos;,&#xD;        value: function _pushMonitors() {&#xD;            this.monitorBlocks.runAllMonitored(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the current editing target known by the runtime.&#xD;         * @param {!Target} editingTarget New editing target.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setEditingTarget&apos;,&#xD;        value: function setEditingTarget(editingTarget) {&#xD;            this._editingTarget = editingTarget;&#xD;            // Script glows must be cleared.&#xD;            this._scriptGlowsPreviousFrame = [];&#xD;            this._updateGlows();&#xD;            this.requestTargetsUpdate(editingTarget);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set whether we are in 30 TPS compatibility mode.&#xD;         * @param {boolean} compatibilityModeOn True iff in compatibility mode.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setCompatibilityMode&apos;,&#xD;        value: function setCompatibilityMode(compatibilityModeOn) {&#xD;            this.compatibilityMode = compatibilityModeOn;&#xD;            if (this._steppingInterval) {&#xD;                clearInterval(this._steppingInterval);&#xD;                this.start();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit glows/glow clears for scripts after a single tick.&#xD;         * Looks at `this.threads` and notices which have turned on/off new glows.&#xD;         * @param {Array.&lt;Thread&gt;=} optExtraThreads Optional list of inactive threads.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_updateGlows&apos;,&#xD;        value: function _updateGlows(optExtraThreads) {&#xD;            var searchThreads = [];&#xD;            searchThreads.push.apply(searchThreads, this.threads);&#xD;            if (optExtraThreads) {&#xD;                searchThreads.push.apply(searchThreads, optExtraThreads);&#xD;            }&#xD;            // Set of scripts that request a glow this frame.&#xD;            var requestedGlowsThisFrame = [];&#xD;            // Final set of scripts glowing during this frame.&#xD;            var finalScriptGlows = [];&#xD;            // Find all scripts that should be glowing.&#xD;            for (var i = 0; i &lt; searchThreads.length; i++) {&#xD;                var thread = searchThreads[i];&#xD;                var target = thread.target;&#xD;                if (target === this._editingTarget) {&#xD;                    var blockForThread = thread.blockGlowInFrame;&#xD;                    if (thread.requestScriptGlowInFrame) {&#xD;                        var script = target.blocks.getTopLevelScript(blockForThread);&#xD;                        if (!script) {&#xD;                            // Attempt to find in flyout blocks.&#xD;                            script = this.flyoutBlocks.getTopLevelScript(blockForThread);&#xD;                        }&#xD;                        if (script) {&#xD;                            requestedGlowsThisFrame.push(script);&#xD;                        }&#xD;                    }&#xD;                }&#xD;            }&#xD;            // Compare to previous frame.&#xD;            for (var j = 0; j &lt; this._scriptGlowsPreviousFrame.length; j++) {&#xD;                var previousFrameGlow = this._scriptGlowsPreviousFrame[j];&#xD;                if (requestedGlowsThisFrame.indexOf(previousFrameGlow) &lt; 0) {&#xD;                    // Glow turned off.&#xD;                    this.glowScript(previousFrameGlow, false);&#xD;                } else {&#xD;                    // Still glowing.&#xD;                    finalScriptGlows.push(previousFrameGlow);&#xD;                }&#xD;            }&#xD;            for (var k = 0; k &lt; requestedGlowsThisFrame.length; k++) {&#xD;                var currentFrameGlow = requestedGlowsThisFrame[k];&#xD;                if (this._scriptGlowsPreviousFrame.indexOf(currentFrameGlow) &lt; 0) {&#xD;                    // Glow turned on.&#xD;                    this.glowScript(currentFrameGlow, true);&#xD;                    finalScriptGlows.push(currentFrameGlow);&#xD;                }&#xD;            }&#xD;            this._scriptGlowsPreviousFrame = finalScriptGlows;&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit run start/stop after each tick. Emits when `this.threads.length` goes&#xD;         * between non-zero and zero&#xD;         *&#xD;         * @param {number} nonMonitorThreadCount The new nonMonitorThreadCount&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_emitProjectRunStatus&apos;,&#xD;        value: function _emitProjectRunStatus(nonMonitorThreadCount) {&#xD;            if (this._nonMonitorThreadCount === 0 &amp;&amp; nonMonitorThreadCount &gt; 0) {&#xD;                this.emit(Runtime.PROJECT_RUN_START);&#xD;            }&#xD;            if (this._nonMonitorThreadCount &gt; 0 &amp;&amp; nonMonitorThreadCount === 0) {&#xD;                this.emit(Runtime.PROJECT_RUN_STOP);&#xD;            }&#xD;            this._nonMonitorThreadCount = nonMonitorThreadCount;&#xD;        }&#xD;&#xD;        /**&#xD;         * "Quiet" a script&apos;s glow: stop the VM from generating glow/unglow events&#xD;         * about that script. Use when a script has just been deleted, but we may&#xD;         * still be tracking glow data about it.&#xD;         * @param {!string} scriptBlockId Id of top-level block in script to quiet.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;quietGlow&apos;,&#xD;        value: function quietGlow(scriptBlockId) {&#xD;            var index = this._scriptGlowsPreviousFrame.indexOf(scriptBlockId);&#xD;            if (index &gt; -1) {&#xD;                this._scriptGlowsPreviousFrame.splice(index, 1);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit feedback for block glowing (used in the sequencer).&#xD;         * @param {?string} blockId ID for the block to update glow&#xD;         * @param {boolean} isGlowing True to turn on glow; false to turn off.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;glowBlock&apos;,&#xD;        value: function glowBlock(blockId, isGlowing) {&#xD;            if (isGlowing) {&#xD;                this.emit(Runtime.BLOCK_GLOW_ON, { id: blockId });&#xD;            } else {&#xD;                this.emit(Runtime.BLOCK_GLOW_OFF, { id: blockId });&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit feedback for script glowing.&#xD;         * @param {?string} topBlockId ID for the top block to update glow&#xD;         * @param {boolean} isGlowing True to turn on glow; false to turn off.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;glowScript&apos;,&#xD;        value: function glowScript(topBlockId, isGlowing) {&#xD;            if (isGlowing) {&#xD;                this.emit(Runtime.SCRIPT_GLOW_ON, { id: topBlockId });&#xD;            } else {&#xD;                this.emit(Runtime.SCRIPT_GLOW_OFF, { id: topBlockId });&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit value for reporter to show in the blocks.&#xD;         * @param {string} blockId ID for the block.&#xD;         * @param {string} value Value to show associated with the block.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;visualReport&apos;,&#xD;        value: function visualReport(blockId, value) {&#xD;            this.emit(Runtime.VISUAL_REPORT, { id: blockId, value: String(value) });&#xD;        }&#xD;&#xD;        /**&#xD;         * Add a monitor to the state. If the monitor already exists in the state,&#xD;         * overwrites it.&#xD;         * @param {!object} monitor Monitor to add.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;requestAddMonitor&apos;,&#xD;        value: function requestAddMonitor(monitor) {&#xD;            this._monitorState[monitor.id] = monitor;&#xD;        }&#xD;&#xD;        /**&#xD;         * Update a monitor in the state. Does nothing if the monitor does not already&#xD;         * exist in the state.&#xD;         * @param {!object} monitor Monitor to update.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;requestUpdateMonitor&apos;,&#xD;        value: function requestUpdateMonitor(monitor) {&#xD;            if (this._monitorState.hasOwnProperty(monitor.id)) {&#xD;                this._monitorState[monitor.id] = Object.assign({}, this._monitorState[monitor.id], monitor);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Removes a monitor from the state. Does nothing if the monitor already does&#xD;         * not exist in the state.&#xD;         * @param {!object} monitorId ID of the monitor to remove.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;requestRemoveMonitor&apos;,&#xD;        value: function requestRemoveMonitor(monitorId) {&#xD;            delete this._monitorState[monitorId];&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a target by its id.&#xD;         * @param {string} targetId Id of target to find.&#xD;         * @return {?Target} The target, if found.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTargetById&apos;,&#xD;        value: function getTargetById(targetId) {&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                var target = this.targets[i];&#xD;                if (target.id === targetId) {&#xD;                    return target;&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the first original (non-clone-block-created) sprite given a name.&#xD;         * @param {string} spriteName Name of sprite to look for.&#xD;         * @return {?Target} Target representing a sprite of the given name.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getSpriteTargetByName&apos;,&#xD;        value: function getSpriteTargetByName(spriteName) {&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                var target = this.targets[i];&#xD;                if (target.sprite &amp;&amp; target.sprite.name === spriteName) {&#xD;                    return target;&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a target by its drawable id.&#xD;         * @param {number} drawableID drawable id of target to find&#xD;         * @return {?Target} The target, if found&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTargetByDrawableId&apos;,&#xD;        value: function getTargetByDrawableId(drawableID) {&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                var target = this.targets[i];&#xD;                if (target.drawableID === drawableID) return target;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the clone counter to track how many clones are created.&#xD;         * @param {number} changeAmount How many clones have been created/destroyed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changeCloneCounter&apos;,&#xD;        value: function changeCloneCounter(changeAmount) {&#xD;            this._cloneCounter += changeAmount;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return whether there are clones available.&#xD;         * @return {boolean} True until the number of clones hits Runtime.MAX_CLONES.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clonesAvailable&apos;,&#xD;        value: function clonesAvailable() {&#xD;            return this._cloneCounter &lt; Runtime.MAX_CLONES;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get a target representing the Scratch stage, if one exists.&#xD;         * @return {?Target} The target, if found.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTargetForStage&apos;,&#xD;        value: function getTargetForStage() {&#xD;            for (var i = 0; i &lt; this.targets.length; i++) {&#xD;                var target = this.targets[i];&#xD;                if (target.isStage) {&#xD;                    return target;&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Tell the runtime to request a redraw.&#xD;         * Use after a clone/sprite has completed some visible operation on the stage.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;requestRedraw&apos;,&#xD;        value: function requestRedraw() {&#xD;            this.redrawRequested = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Emit a targets update at the end of the step if the provided target is&#xD;         * the original sprite&#xD;         * @param {!Target} target Target requesting the targets update&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;requestTargetsUpdate&apos;,&#xD;        value: function requestTargetsUpdate(target) {&#xD;            if (!target.isOriginal) return;&#xD;            this._refreshTargets = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set up timers to repeatedly step in a browser.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;start&apos;,&#xD;        value: function start() {&#xD;            var _this3 = this;&#xD;&#xD;            var interval = Runtime.THREAD_STEP_INTERVAL;&#xD;            if (this.compatibilityMode) {&#xD;                interval = Runtime.THREAD_STEP_INTERVAL_COMPATIBILITY;&#xD;            }&#xD;            this.currentStepTime = interval;&#xD;            this._steppingInterval = setInterval(function () {&#xD;                _this3._step();&#xD;            }, interval);&#xD;        }&#xD;    }], [{&#xD;        key: &apos;STAGE_WIDTH&apos;,&#xD;        get: function get() {&#xD;            return 480;&#xD;        }&#xD;&#xD;        /**&#xD;         * Height of the stage, in pixels.&#xD;         * @const {number}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;STAGE_HEIGHT&apos;,&#xD;        get: function get() {&#xD;            return 360;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for glowing a script.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;SCRIPT_GLOW_ON&apos;,&#xD;        get: function get() {&#xD;            return &apos;SCRIPT_GLOW_ON&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for unglowing a script.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;SCRIPT_GLOW_OFF&apos;,&#xD;        get: function get() {&#xD;            return &apos;SCRIPT_GLOW_OFF&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for glowing a block.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;BLOCK_GLOW_ON&apos;,&#xD;        get: function get() {&#xD;            return &apos;BLOCK_GLOW_ON&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for unglowing a block.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;BLOCK_GLOW_OFF&apos;,&#xD;        get: function get() {&#xD;            return &apos;BLOCK_GLOW_OFF&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for glowing the green flag&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;PROJECT_RUN_START&apos;,&#xD;        get: function get() {&#xD;            return &apos;PROJECT_RUN_START&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for unglowing the green flag&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;PROJECT_RUN_STOP&apos;,&#xD;        get: function get() {&#xD;            return &apos;PROJECT_RUN_STOP&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for visual value report.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;VISUAL_REPORT&apos;,&#xD;        get: function get() {&#xD;            return &apos;VISUAL_REPORT&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for targets update report.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;TARGETS_UPDATE&apos;,&#xD;        get: function get() {&#xD;            return &apos;TARGETS_UPDATE&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Event name for monitors update.&#xD;         * @const {string}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;MONITORS_UPDATE&apos;,&#xD;        get: function get() {&#xD;            return &apos;MONITORS_UPDATE&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * How rapidly we try to step threads by default, in ms.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;THREAD_STEP_INTERVAL&apos;,&#xD;        get: function get() {&#xD;            return 1000 / 60;&#xD;        }&#xD;&#xD;        /**&#xD;         * In compatibility mode, how rapidly we try to step threads, in ms.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;THREAD_STEP_INTERVAL_COMPATIBILITY&apos;,&#xD;        get: function get() {&#xD;            return 1000 / 30;&#xD;        }&#xD;&#xD;        /**&#xD;         * How many clones can be created at a time.&#xD;         * @const {number}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;MAX_CLONES&apos;,&#xD;        get: function get() {&#xD;            return 300;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Runtime;&#xD;}(EventEmitter);&#xD;&#xD;module.exports = Runtime;&#xD;&#xD;/***/ }),&#xD;/* 58 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Timer = __webpack_require__(14);&#xD;var Thread = __webpack_require__(18);&#xD;var execute = __webpack_require__(56);&#xD;&#xD;var Sequencer = function () {&#xD;    function Sequencer(runtime) {&#xD;        _classCallCheck(this, Sequencer);&#xD;&#xD;        /**&#xD;         * A utility timer for timing thread sequencing.&#xD;         * @type {!Timer}&#xD;         */&#xD;        this.timer = new Timer();&#xD;&#xD;        /**&#xD;         * Reference to the runtime owning this sequencer.&#xD;         * @type {!Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Time to run a warp-mode thread, in ms.&#xD;     * @type {number}&#xD;     */&#xD;&#xD;&#xD;    _createClass(Sequencer, [{&#xD;        key: &apos;stepThreads&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Step through all threads in `this.runtime.threads`, running them in order.&#xD;         * @return {Array.&lt;!Thread&gt;} List of inactive threads after stepping.&#xD;         */&#xD;        value: function stepThreads() {&#xD;            // Work time is 75% of the thread stepping interval.&#xD;            var WORK_TIME = 0.75 * this.runtime.currentStepTime;&#xD;            // Start counting toward WORK_TIME.&#xD;            this.timer.start();&#xD;            // Count of active threads.&#xD;            var numActiveThreads = Infinity;&#xD;            // Whether `stepThreads` has run through a full single tick.&#xD;            var ranFirstTick = false;&#xD;            var doneThreads = [];&#xD;            // Conditions for continuing to stepping threads:&#xD;            // 1. We must have threads in the list, and some must be active.&#xD;            // 2. Time elapsed must be less than WORK_TIME.&#xD;            // 3. Either turbo mode, or no redraw has been requested by a primitive.&#xD;            while (this.runtime.threads.length &gt; 0 &amp;&amp; numActiveThreads &gt; 0 &amp;&amp; this.timer.timeElapsed() &lt; WORK_TIME &amp;&amp; (this.runtime.turboMode || !this.runtime.redrawRequested)) {&#xD;                numActiveThreads = 0;&#xD;                // Attempt to run each thread one time.&#xD;                for (var i = 0; i &lt; this.runtime.threads.length; i++) {&#xD;                    var activeThread = this.runtime.threads[i];&#xD;                    if (activeThread.stack.length === 0 || activeThread.status === Thread.STATUS_DONE) {&#xD;                        // Finished with this thread.&#xD;                        if (doneThreads.indexOf(activeThread) &lt; 0) {&#xD;                            doneThreads.push(activeThread);&#xD;                        }&#xD;                        continue;&#xD;                    }&#xD;                    if (activeThread.status === Thread.STATUS_YIELD_TICK &amp;&amp; !ranFirstTick) {&#xD;                        // Clear single-tick yield from the last call of `stepThreads`.&#xD;                        activeThread.status = Thread.STATUS_RUNNING;&#xD;                    }&#xD;                    if (activeThread.status === Thread.STATUS_RUNNING || activeThread.status === Thread.STATUS_YIELD) {&#xD;                        // Normal-mode thread: step.&#xD;                        this.stepThread(activeThread);&#xD;                        activeThread.warpTimer = null;&#xD;                    }&#xD;                    if (activeThread.status === Thread.STATUS_RUNNING) {&#xD;                        numActiveThreads++;&#xD;                    }&#xD;                }&#xD;                // We successfully ticked once. Prevents running STATUS_YIELD_TICK&#xD;                // threads on the next tick.&#xD;                ranFirstTick = true;&#xD;            }&#xD;            // Filter inactive threads from `this.runtime.threads`.&#xD;            this.runtime.threads = this.runtime.threads.filter(function (thread) {&#xD;                if (doneThreads.indexOf(thread) &gt; -1) {&#xD;                    return false;&#xD;                }&#xD;                return true;&#xD;            });&#xD;            return doneThreads;&#xD;        }&#xD;&#xD;        /**&#xD;         * Step the requested thread for as long as necessary.&#xD;         * @param {!Thread} thread Thread object to step.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stepThread&apos;,&#xD;        value: function stepThread(thread) {&#xD;            var currentBlockId = thread.peekStack();&#xD;            if (!currentBlockId) {&#xD;                // A "null block" - empty branch.&#xD;                thread.popStack();&#xD;            }&#xD;            while (thread.peekStack()) {&#xD;                var isWarpMode = thread.peekStackFrame().warpMode;&#xD;                if (isWarpMode &amp;&amp; !thread.warpTimer) {&#xD;                    // Initialize warp-mode timer if it hasn&apos;t been already.&#xD;                    // This will start counting the thread toward `Sequencer.WARP_TIME`.&#xD;                    thread.warpTimer = new Timer();&#xD;                    thread.warpTimer.start();&#xD;                }&#xD;                // Execute the current block.&#xD;                // Save the current block ID to notice if we did control flow.&#xD;                currentBlockId = thread.peekStack();&#xD;                execute(this, thread);&#xD;                thread.blockGlowInFrame = currentBlockId;&#xD;                // If the thread has yielded or is waiting, yield to other threads.&#xD;                if (thread.status === Thread.STATUS_YIELD) {&#xD;                    // Mark as running for next iteration.&#xD;                    thread.status = Thread.STATUS_RUNNING;&#xD;                    // In warp mode, yielded blocks are re-executed immediately.&#xD;                    if (isWarpMode &amp;&amp; thread.warpTimer.timeElapsed() &lt;= Sequencer.WARP_TIME) {&#xD;                        continue;&#xD;                    }&#xD;                    return;&#xD;                } else if (thread.status === Thread.STATUS_PROMISE_WAIT) {&#xD;                    // A promise was returned by the primitive. Yield the thread&#xD;                    // until the promise resolves. Promise resolution should reset&#xD;                    // thread.status to Thread.STATUS_RUNNING.&#xD;                    return;&#xD;                }&#xD;                // If no control flow has happened, switch to next block.&#xD;                if (thread.peekStack() === currentBlockId) {&#xD;                    thread.goToNextBlock();&#xD;                }&#xD;                // If no next block has been found at this point, look on the stack.&#xD;                while (!thread.peekStack()) {&#xD;                    thread.popStack();&#xD;&#xD;                    if (thread.stack.length === 0) {&#xD;                        // No more stack to run!&#xD;                        thread.status = Thread.STATUS_DONE;&#xD;                        return;&#xD;                    }&#xD;&#xD;                    var stackFrame = thread.peekStackFrame();&#xD;                    isWarpMode = stackFrame.warpMode;&#xD;&#xD;                    if (stackFrame.isLoop) {&#xD;                        // The current level of the stack is marked as a loop.&#xD;                        // Return to yield for the frame/tick in general.&#xD;                        // Unless we&apos;re in warp mode - then only return if the&#xD;                        // warp timer is up.&#xD;                        if (!isWarpMode || thread.warpTimer.timeElapsed() &gt; Sequencer.WARP_TIME) {&#xD;                            // Don&apos;t do anything to the stack, since loops need&#xD;                            // to be re-executed.&#xD;                            return;&#xD;                        }&#xD;                        // Don&apos;t go to the next block for this level of the stack,&#xD;                        // since loops need to be re-executed.&#xD;                        continue;&#xD;                    } else if (stackFrame.waitingReporter) {&#xD;                        // This level of the stack was waiting for a value.&#xD;                        // This means a reporter has just returned - so don&apos;t go&#xD;                        // to the next block for this level of the stack.&#xD;                        return;&#xD;                    }&#xD;                    // Get next block of existing block on the stack.&#xD;                    thread.goToNextBlock();&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Step a thread into a block&apos;s branch.&#xD;         * @param {!Thread} thread Thread object to step to branch.&#xD;         * @param {number} branchNum Which branch to step to (i.e., 1, 2).&#xD;         * @param {boolean} isLoop Whether this block is a loop.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stepToBranch&apos;,&#xD;        value: function stepToBranch(thread, branchNum, isLoop) {&#xD;            if (!branchNum) {&#xD;                branchNum = 1;&#xD;            }&#xD;            var currentBlockId = thread.peekStack();&#xD;            var branchId = thread.target.blocks.getBranch(currentBlockId, branchNum);&#xD;            thread.peekStackFrame().isLoop = isLoop;&#xD;            if (branchId) {&#xD;                // Push branch ID to the thread&apos;s stack.&#xD;                thread.pushStack(branchId);&#xD;            } else {&#xD;                thread.pushStack(null);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Step a procedure.&#xD;         * @param {!Thread} thread Thread object to step to procedure.&#xD;         * @param {!string} procedureCode Procedure code of procedure to step to.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stepToProcedure&apos;,&#xD;        value: function stepToProcedure(thread, procedureCode) {&#xD;            var definition = thread.target.blocks.getProcedureDefinition(procedureCode);&#xD;            if (!definition) {&#xD;                return;&#xD;            }&#xD;            // Check if the call is recursive.&#xD;            // If so, set the thread to yield after pushing.&#xD;            var isRecursive = thread.isRecursiveCall(procedureCode);&#xD;            // To step to a procedure, we put its definition on the stack.&#xD;            // Execution for the thread will proceed through the definition hat&#xD;            // and on to the main definition of the procedure.&#xD;            // When that set of blocks finishes executing, it will be popped&#xD;            // from the stack by the sequencer, returning control to the caller.&#xD;            thread.pushStack(definition);&#xD;            // In known warp-mode threads, only yield when time is up.&#xD;            if (thread.peekStackFrame().warpMode &amp;&amp; thread.warpTimer.timeElapsed() &gt; Sequencer.WARP_TIME) {&#xD;                thread.status = Thread.STATUS_YIELD;&#xD;            } else {&#xD;                // Look for warp-mode flag on definition, and set the thread&#xD;                // to warp-mode if needed.&#xD;                var definitionBlock = thread.target.blocks.getBlock(definition);&#xD;                var doWarp = definitionBlock.mutation.warp;&#xD;                if (doWarp) {&#xD;                    thread.peekStackFrame().warpMode = true;&#xD;                } else {&#xD;                    // In normal-mode threads, yield any time we have a recursive call.&#xD;                    if (isRecursive) {&#xD;                        thread.status = Thread.STATUS_YIELD;&#xD;                    }&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Retire a thread in the middle, without considering further blocks.&#xD;         * @param {!Thread} thread Thread object to retire.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;retireThread&apos;,&#xD;        value: function retireThread(thread) {&#xD;            thread.stack = [];&#xD;            thread.stackFrame = [];&#xD;            thread.requestScriptGlowInFrame = false;&#xD;            thread.status = Thread.STATUS_DONE;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;WARP_TIME&apos;,&#xD;        get: function get() {&#xD;            return 500;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Sequencer;&#xD;}();&#xD;&#xD;module.exports = Sequencer;&#xD;&#xD;/***/ }),&#xD;/* 59 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var EventEmitter = __webpack_require__(12);&#xD;&#xD;var Blocks = __webpack_require__(9);&#xD;var Variable = __webpack_require__(19);&#xD;var List = __webpack_require__(17);&#xD;var uid = __webpack_require__(30);&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * A Target is an abstract "code-running" object for the Scratch VM.&#xD; * Examples include sprites/clones or potentially physical-world devices.&#xD; */&#xD;&#xD;/**&#xD; * @param {?Blocks} blocks Blocks instance for the blocks owned by this target.&#xD; * @constructor&#xD; */&#xD;&#xD;var Target = function (_EventEmitter) {&#xD;  _inherits(Target, _EventEmitter);&#xD;&#xD;  function Target(blocks) {&#xD;    _classCallCheck(this, Target);&#xD;&#xD;    var _this = _possibleConstructorReturn(this, (Target.__proto__ || Object.getPrototypeOf(Target)).call(this));&#xD;&#xD;    if (!blocks) {&#xD;      blocks = new Blocks();&#xD;    }&#xD;    /**&#xD;     * A unique ID for this target.&#xD;     * @type {string}&#xD;     */&#xD;    _this.id = uid();&#xD;    /**&#xD;     * Blocks run as code for this target.&#xD;     * @type {!Blocks}&#xD;     */&#xD;    _this.blocks = blocks;&#xD;    /**&#xD;     * Dictionary of variables and their values for this target.&#xD;     * Key is the variable name.&#xD;     * @type {Object.&lt;string,*&gt;}&#xD;     */&#xD;    _this.variables = {};&#xD;    /**&#xD;     * Dictionary of lists and their contents for this target.&#xD;     * Key is the list name.&#xD;     * @type {Object.&lt;string,*&gt;}&#xD;     */&#xD;    _this.lists = {};&#xD;    /**&#xD;     * Dictionary of custom state for this target.&#xD;     * This can be used to store target-specific custom state for blocks which need it.&#xD;     * TODO: do we want to persist this in SB3 files?&#xD;     * @type {Object.&lt;string,*&gt;}&#xD;     */&#xD;    _this._customState = {};&#xD;    return _this;&#xD;  }&#xD;&#xD;  /**&#xD;   * Called when the project receives a "green flag."&#xD;   * @abstract&#xD;   */&#xD;&#xD;&#xD;  _createClass(Target, [{&#xD;    key: &apos;onGreenFlag&apos;,&#xD;    value: function onGreenFlag() {}&#xD;&#xD;    /**&#xD;     * Return a human-readable name for this target.&#xD;     * Target implementations should override this.&#xD;     * @abstract&#xD;     * @returns {string} Human-readable name for the target.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;getName&apos;,&#xD;    value: function getName() {&#xD;      return this.id;&#xD;    }&#xD;&#xD;    /**&#xD;     * Look up a variable object, and create it if one doesn&apos;t exist.&#xD;     * Search begins for local variables; then look for globals.&#xD;     * @param {!string} name Name of the variable.&#xD;     * @return {!Variable} Variable object.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;lookupOrCreateVariable&apos;,&#xD;    value: function lookupOrCreateVariable(name) {&#xD;      // If we have a local copy, return it.&#xD;      if (this.variables.hasOwnProperty(name)) {&#xD;        return this.variables[name];&#xD;      }&#xD;      // If the stage has a global copy, return it.&#xD;      if (this.runtime &amp;&amp; !this.isStage) {&#xD;        var stage = this.runtime.getTargetForStage();&#xD;        if (stage.variables.hasOwnProperty(name)) {&#xD;          return stage.variables[name];&#xD;        }&#xD;      }&#xD;      // No variable with this name exists - create it locally.&#xD;      var newVariable = new Variable(name, 0, false);&#xD;      this.variables[name] = newVariable;&#xD;      return newVariable;&#xD;    }&#xD;&#xD;    /**&#xD;    * Look up a list object for this target, and create it if one doesn&apos;t exist.&#xD;    * Search begins for local lists; then look for globals.&#xD;    * @param {!string} name Name of the list.&#xD;    * @return {!List} List object.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;lookupOrCreateList&apos;,&#xD;    value: function lookupOrCreateList(name) {&#xD;      // If we have a local copy, return it.&#xD;      if (this.lists.hasOwnProperty(name)) {&#xD;        return this.lists[name];&#xD;      }&#xD;      // If the stage has a global copy, return it.&#xD;      if (this.runtime &amp;&amp; !this.isStage) {&#xD;        var stage = this.runtime.getTargetForStage();&#xD;        if (stage.lists.hasOwnProperty(name)) {&#xD;          return stage.lists[name];&#xD;        }&#xD;      }&#xD;      // No list with this name exists - create it locally.&#xD;      var newList = new List(name, []);&#xD;      this.lists[name] = newList;&#xD;      return newList;&#xD;    }&#xD;&#xD;    /**&#xD;     * Post/edit sprite info.&#xD;     * @param {object} data An object with sprite info data to set.&#xD;     * @abstract&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;postSpriteInfo&apos;,&#xD;    value: function postSpriteInfo() {}&#xD;&#xD;    /**&#xD;     * Retrieve custom state associated with this target and the provided state ID.&#xD;     * @param {string} stateId - specify which piece of state to retrieve.&#xD;     * @returns {*} the associated state, if any was found.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;getCustomState&apos;,&#xD;    value: function getCustomState(stateId) {&#xD;      return this._customState[stateId];&#xD;    }&#xD;&#xD;    /**&#xD;     * Store custom state associated with this target and the provided state ID.&#xD;     * @param {string} stateId - specify which piece of state to store on this target.&#xD;     * @param {*} newValue - the state value to store.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;setCustomState&apos;,&#xD;    value: function setCustomState(stateId, newValue) {&#xD;      this._customState[stateId] = newValue;&#xD;    }&#xD;&#xD;    /**&#xD;     * Call to destroy a target.&#xD;     * @abstract&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;dispose&apos;,&#xD;    value: function dispose() {&#xD;      this._customState = {};&#xD;    }&#xD;  }]);&#xD;&#xD;  return Target;&#xD;}(EventEmitter);&#xD;&#xD;module.exports = Target;&#xD;&#xD;/***/ }),&#xD;/* 60 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var VirtualMachine = __webpack_require__(44);&#xD;&#xD;module.exports = VirtualMachine;&#xD;&#xD;/***/ }),&#xD;/* 61 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Timer = __webpack_require__(14);&#xD;&#xD;var Clock = function () {&#xD;    function Clock(runtime) {&#xD;        _classCallCheck(this, Clock);&#xD;&#xD;        this._projectTimer = new Timer();&#xD;        this._projectTimer.start();&#xD;        this._pausedTime = null;&#xD;        this._paused = false;&#xD;        /**&#xD;         * Reference to the owning Runtime.&#xD;         * @type{!Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    _createClass(Clock, [{&#xD;        key: &apos;projectTimer&apos;,&#xD;        value: function projectTimer() {&#xD;            if (this._paused) {&#xD;                return this._pausedTime / 1000;&#xD;            }&#xD;            return this._projectTimer.timeElapsed() / 1000;&#xD;        }&#xD;    }, {&#xD;        key: &apos;pause&apos;,&#xD;        value: function pause() {&#xD;            this._paused = true;&#xD;            this._pausedTime = this._projectTimer.timeElapsed();&#xD;        }&#xD;    }, {&#xD;        key: &apos;resume&apos;,&#xD;        value: function resume() {&#xD;            this._paused = false;&#xD;            var dt = this._projectTimer.timeElapsed() - this._pausedTime;&#xD;            this._projectTimer.startTime += dt;&#xD;        }&#xD;    }, {&#xD;        key: &apos;resetProjectTimer&apos;,&#xD;        value: function resetProjectTimer() {&#xD;            this._projectTimer.start();&#xD;        }&#xD;    }]);&#xD;&#xD;    return Clock;&#xD;}();&#xD;&#xD;module.exports = Clock;&#xD;&#xD;/***/ }),&#xD;/* 62 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Cast = __webpack_require__(1);&#xD;&#xD;var Keyboard = function () {&#xD;    function Keyboard(runtime) {&#xD;        _classCallCheck(this, Keyboard);&#xD;&#xD;        /**&#xD;         * List of currently pressed keys.&#xD;         * @type{Array.&lt;number&gt;}&#xD;         */&#xD;        this._keysPressed = [];&#xD;        /**&#xD;         * Reference to the owning Runtime.&#xD;         * Can be used, for example, to activate hats.&#xD;         * @type{!Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Convert a Scratch key name to a DOM keyCode.&#xD;     * @param {Any} keyName Scratch key argument.&#xD;     * @return {number} Key code corresponding to a DOM event.&#xD;     * @private&#xD;     */&#xD;&#xD;&#xD;    _createClass(Keyboard, [{&#xD;        key: &apos;_scratchKeyToKeyCode&apos;,&#xD;        value: function _scratchKeyToKeyCode(keyName) {&#xD;            if (typeof keyName === &apos;number&apos;) {&#xD;                // Key codes placed in with number blocks.&#xD;                return keyName;&#xD;            }&#xD;            var keyString = Cast.toString(keyName);&#xD;            switch (keyString) {&#xD;                case &apos;space&apos;:&#xD;                    return 32;&#xD;                case &apos;left arrow&apos;:&#xD;                    return 37;&#xD;                case &apos;up arrow&apos;:&#xD;                    return 38;&#xD;                case &apos;right arrow&apos;:&#xD;                    return 39;&#xD;                case &apos;down arrow&apos;:&#xD;                    return 40;&#xD;                // @todo: Consider adding other special keys here.&#xD;            }&#xD;            // Keys reported by DOM keyCode are upper case.&#xD;            return keyString.toUpperCase().charCodeAt(0);&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a DOM keyCode into a Scratch key name.&#xD;         * @param  {number} keyCode Key code from DOM event.&#xD;         * @return {Any} Scratch key argument.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_keyCodeToScratchKey&apos;,&#xD;        value: function _keyCodeToScratchKey(keyCode) {&#xD;            if (keyCode &gt;= 48 &amp;&amp; keyCode &lt;= 90) {&#xD;                // Standard letter.&#xD;                return String.fromCharCode(keyCode).toLowerCase();&#xD;            }&#xD;            switch (keyCode) {&#xD;                case 32:&#xD;                    return &apos;space&apos;;&#xD;                case 37:&#xD;                    return &apos;left arrow&apos;;&#xD;                case 38:&#xD;                    return &apos;up arrow&apos;;&#xD;                case 39:&#xD;                    return &apos;right arrow&apos;;&#xD;                case 40:&#xD;                    return &apos;down arrow&apos;;&#xD;            }&#xD;            return &apos;&apos;;&#xD;        }&#xD;&#xD;        /**&#xD;         * Keyboard DOM event handler.&#xD;         * @param  {object} data Data from DOM event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;postData&apos;,&#xD;        value: function postData(data) {&#xD;            if (data.keyCode) {&#xD;                var index = this._keysPressed.indexOf(data.keyCode);&#xD;                if (data.isDown) {&#xD;                    // If not already present, add to the list.&#xD;                    if (index &lt; 0) {&#xD;                        this._keysPressed.push(data.keyCode);&#xD;                    }&#xD;                    // Always trigger hats, even if it was already pressed.&#xD;                    this.runtime.startHats(&apos;event_whenkeypressed&apos;, {&#xD;                        KEY_OPTION: this._keyCodeToScratchKey(data.keyCode)&#xD;                    });&#xD;                    this.runtime.startHats(&apos;event_whenkeypressed&apos;, {&#xD;                        KEY_OPTION: &apos;any&apos;&#xD;                    });&#xD;                } else if (index &gt; -1) {&#xD;                    // If already present, remove from the list.&#xD;                    this._keysPressed.splice(index, 1);&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get key down state for a specified Scratch key name.&#xD;         * @param  {Any} key Scratch key argument.&#xD;         * @return {boolean} Is the specified key down?&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getKeyIsDown&apos;,&#xD;        value: function getKeyIsDown(key) {&#xD;            if (key === &apos;any&apos;) {&#xD;                return this._keysPressed.length &gt; 0;&#xD;            }&#xD;            var keyCode = this._scratchKeyToKeyCode(key);&#xD;            return this._keysPressed.indexOf(keyCode) &gt; -1;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Keyboard;&#xD;}();&#xD;&#xD;module.exports = Keyboard;&#xD;&#xD;/***/ }),&#xD;/* 63 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var MathUtil = __webpack_require__(4);&#xD;&#xD;var Mouse = function () {&#xD;    function Mouse(runtime) {&#xD;        _classCallCheck(this, Mouse);&#xD;&#xD;        this._x = 0;&#xD;        this._y = 0;&#xD;        this._isDown = false;&#xD;        /**&#xD;         * Reference to the owning Runtime.&#xD;         * Can be used, for example, to activate hats.&#xD;         * @type{!Runtime}&#xD;         */&#xD;        this.runtime = runtime;&#xD;    }&#xD;&#xD;    /**&#xD;     * Activate "event_whenthisspriteclicked" hats if needed.&#xD;     * @param  {number} x X position to be sent to the renderer.&#xD;     * @param  {number} y Y position to be sent to the renderer.&#xD;     * @private&#xD;     */&#xD;&#xD;&#xD;    _createClass(Mouse, [{&#xD;        key: &apos;_activateClickHats&apos;,&#xD;        value: function _activateClickHats(x, y) {&#xD;            if (this.runtime.renderer) {&#xD;                var drawableID = this.runtime.renderer.pick(x, y);&#xD;                for (var i = 0; i &lt; this.runtime.targets.length; i++) {&#xD;                    var target = this.runtime.targets[i];&#xD;                    if (target.hasOwnProperty(&apos;drawableID&apos;) &amp;&amp; target.drawableID === drawableID) {&#xD;                        this.runtime.startHats(&apos;event_whenthisspriteclicked&apos;, null, target);&#xD;                        return;&#xD;                    }&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Mouse DOM event handler.&#xD;         * @param  {object} data Data from DOM event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;postData&apos;,&#xD;        value: function postData(data) {&#xD;            if (data.x) {&#xD;                this._x = data.x - data.canvasWidth / 2;&#xD;            }&#xD;            if (data.y) {&#xD;                this._y = data.y - data.canvasHeight / 2;&#xD;            }&#xD;            if (typeof data.isDown !== &apos;undefined&apos;) {&#xD;                this._isDown = data.isDown;&#xD;                if (!this._isDown) {&#xD;                    this._activateClickHats(data.x, data.y);&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the X position of the mouse.&#xD;         * @return {number} Clamped X position of the mouse cursor.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getX&apos;,&#xD;        value: function getX() {&#xD;            return MathUtil.clamp(this._x, -240, 240);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the Y position of the mouse.&#xD;         * @return {number} Clamped Y position of the mouse cursor.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getY&apos;,&#xD;        value: function getY() {&#xD;            return MathUtil.clamp(-this._y, -180, 180);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the down state of the mouse.&#xD;         * @return {boolean} Is the mouse down?&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getIsDown&apos;,&#xD;        value: function getIsDown() {&#xD;            return this._isDown;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Mouse;&#xD;}();&#xD;&#xD;module.exports = Mouse;&#xD;&#xD;/***/ }),&#xD;/* 64 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Partial implementation of an SB2 JSON importer.&#xD; * Parses provided JSON and then generates all needed&#xD; * scratch-vm runtime structures.&#xD; */&#xD;&#xD;var Blocks = __webpack_require__(9);&#xD;var RenderedTarget = __webpack_require__(22);&#xD;var Sprite = __webpack_require__(28);&#xD;var Color = __webpack_require__(23);&#xD;var log = __webpack_require__(3);&#xD;var uid = __webpack_require__(30);&#xD;var specMap = __webpack_require__(65);&#xD;var Variable = __webpack_require__(19);&#xD;var List = __webpack_require__(17);&#xD;&#xD;var loadCostume = __webpack_require__(20);&#xD;var loadSound = __webpack_require__(21);&#xD;&#xD;/**&#xD; * Convert a Scratch 2.0 procedure string (e.g., "my_procedure %s %b %n")&#xD; * into an argument map. This allows us to provide the expected inputs&#xD; * to a mutated procedure call.&#xD; * @param {string} procCode Scratch 2.0 procedure string.&#xD; * @return {object} Argument map compatible with those in sb2specmap.&#xD; */&#xD;var parseProcedureArgMap = function parseProcedureArgMap(procCode) {&#xD;    var argMap = [{} // First item in list is op string.&#xD;    ];&#xD;    var INPUT_PREFIX = &apos;input&apos;;&#xD;    var inputCount = 0;&#xD;    // Split by %n, %b, %s.&#xD;    var parts = procCode.split(/(?=[^\\]%[nbs])/);&#xD;    for (var i = 0; i &lt; parts.length; i++) {&#xD;        var part = parts[i].trim();&#xD;        if (part.substring(0, 1) === &apos;%&apos;) {&#xD;            var argType = part.substring(1, 2);&#xD;            var arg = {&#xD;                type: &apos;input&apos;,&#xD;                inputName: INPUT_PREFIX + inputCount++&#xD;            };&#xD;            if (argType === &apos;n&apos;) {&#xD;                arg.inputOp = &apos;math_number&apos;;&#xD;            } else if (argType === &apos;s&apos;) {&#xD;                arg.inputOp = &apos;text&apos;;&#xD;            }&#xD;            argMap.push(arg);&#xD;        }&#xD;    }&#xD;    return argMap;&#xD;};&#xD;&#xD;/**&#xD; * Flatten a block tree into a block list.&#xD; * Children are temporarily stored on the `block.children` property.&#xD; * @param {Array.&lt;object&gt;} blocks list generated by `parseBlockList`.&#xD; * @return {Array.&lt;object&gt;} Flattened list to be passed to `blocks.createBlock`.&#xD; */&#xD;var flatten = function flatten(blocks) {&#xD;    var finalBlocks = [];&#xD;    for (var i = 0; i &lt; blocks.length; i++) {&#xD;        var block = blocks[i];&#xD;        finalBlocks.push(block);&#xD;        if (block.children) {&#xD;            finalBlocks = finalBlocks.concat(flatten(block.children));&#xD;        }&#xD;        delete block.children;&#xD;    }&#xD;    return finalBlocks;&#xD;};&#xD;&#xD;/**&#xD; * Parse any list of blocks from SB2 JSON into a list of VM-format blocks.&#xD; * Could be used to parse a top-level script,&#xD; * a list of blocks in a branch (e.g., in forever),&#xD; * or a list of blocks in an argument (e.g., move [pick random...]).&#xD; * @param {Array.&lt;object&gt;} blockList SB2 JSON-format block list.&#xD; * @return {Array.&lt;object&gt;} Scratch VM-format block list.&#xD; */&#xD;var parseBlockList = function parseBlockList(blockList) {&#xD;    var resultingList = [];&#xD;    var previousBlock = null; // For setting next.&#xD;    for (var i = 0; i &lt; blockList.length; i++) {&#xD;        var block = blockList[i];&#xD;        // eslint-disable-next-line no-use-before-define&#xD;        var parsedBlock = parseBlock(block);&#xD;        if (typeof parsedBlock === &apos;undefined&apos;) continue;&#xD;        if (previousBlock) {&#xD;            parsedBlock.parent = previousBlock.id;&#xD;            previousBlock.next = parsedBlock.id;&#xD;        }&#xD;        previousBlock = parsedBlock;&#xD;        resultingList.push(parsedBlock);&#xD;    }&#xD;    return resultingList;&#xD;};&#xD;&#xD;/**&#xD; * Parse a Scratch object&apos;s scripts into VM blocks.&#xD; * This should only handle top-level scripts that include X, Y coordinates.&#xD; * @param {!object} scripts Scripts object from SB2 JSON.&#xD; * @param {!Blocks} blocks Blocks object to load parsed blocks into.&#xD; */&#xD;var parseScripts = function parseScripts(scripts, blocks) {&#xD;    for (var i = 0; i &lt; scripts.length; i++) {&#xD;        var script = scripts[i];&#xD;        var scriptX = script[0];&#xD;        var scriptY = script[1];&#xD;        var blockList = script[2];&#xD;        var parsedBlockList = parseBlockList(blockList);&#xD;        if (parsedBlockList[0]) {&#xD;            // Adjust script coordinates to account for&#xD;            // larger block size in scratch-blocks.&#xD;            // @todo: Determine more precisely the right formulas here.&#xD;            parsedBlockList[0].x = scriptX * 1.5;&#xD;            parsedBlockList[0].y = scriptY * 2.2;&#xD;            parsedBlockList[0].topLevel = true;&#xD;            parsedBlockList[0].parent = null;&#xD;        }&#xD;        // Flatten children and create add the blocks.&#xD;        var convertedBlocks = flatten(parsedBlockList);&#xD;        for (var j = 0; j &lt; convertedBlocks.length; j++) {&#xD;            blocks.createBlock(convertedBlocks[j]);&#xD;        }&#xD;    }&#xD;};&#xD;&#xD;/**&#xD; * Parse a single "Scratch object" and create all its in-memory VM objects.&#xD; * @param {!object} object From-JSON "Scratch object:" sprite, stage, watcher.&#xD; * @param {!Runtime} runtime Runtime object to load all structures into.&#xD; * @param {boolean} topLevel Whether this is the top-level object (stage).&#xD; * @return {?Promise} Promise that resolves to the loaded targets when ready.&#xD; */&#xD;var parseScratchObject = function parseScratchObject(object, runtime, topLevel) {&#xD;    if (!object.hasOwnProperty(&apos;objName&apos;)) {&#xD;        // Watcher/monitor - skip this object until those are implemented in VM.&#xD;        // @todo&#xD;        return Promise.resolve(null);&#xD;    }&#xD;    // Blocks container for this object.&#xD;    var blocks = new Blocks();&#xD;    // @todo: For now, load all Scratch objects (stage/sprites) as a Sprite.&#xD;    var sprite = new Sprite(blocks, runtime);&#xD;    // Sprite/stage name from JSON.&#xD;    if (object.hasOwnProperty(&apos;objName&apos;)) {&#xD;        sprite.name = object.objName;&#xD;    }&#xD;    // Costumes from JSON.&#xD;    var costumePromises = [];&#xD;    if (object.hasOwnProperty(&apos;costumes&apos;)) {&#xD;        for (var i = 0; i &lt; object.costumes.length; i++) {&#xD;            var costumeSource = object.costumes[i];&#xD;            var costume = {&#xD;                name: costumeSource.costumeName,&#xD;                bitmapResolution: costumeSource.bitmapResolution || 1,&#xD;                rotationCenterX: costumeSource.rotationCenterX,&#xD;                rotationCenterY: costumeSource.rotationCenterY,&#xD;                skinId: null&#xD;            };&#xD;            costumePromises.push(loadCostume(costumeSource.baseLayerMD5, costume, runtime));&#xD;        }&#xD;    }&#xD;    // Sounds from JSON&#xD;    var soundPromises = [];&#xD;    if (object.hasOwnProperty(&apos;sounds&apos;)) {&#xD;        for (var s = 0; s &lt; object.sounds.length; s++) {&#xD;            var soundSource = object.sounds[s];&#xD;            var sound = {&#xD;                name: soundSource.soundName,&#xD;                format: soundSource.format,&#xD;                rate: soundSource.rate,&#xD;                sampleCount: soundSource.sampleCount,&#xD;                soundID: soundSource.soundID,&#xD;                md5: soundSource.md5,&#xD;                data: null&#xD;            };&#xD;            soundPromises.push(loadSound(sound, runtime));&#xD;        }&#xD;    }&#xD;    // If included, parse any and all scripts/blocks on the object.&#xD;    if (object.hasOwnProperty(&apos;scripts&apos;)) {&#xD;        parseScripts(object.scripts, blocks);&#xD;    }&#xD;    // Create the first clone, and load its run-state from JSON.&#xD;    var target = sprite.createClone();&#xD;&#xD;    // Load target properties from JSON.&#xD;    if (object.hasOwnProperty(&apos;variables&apos;)) {&#xD;        for (var j = 0; j &lt; object.variables.length; j++) {&#xD;            var variable = object.variables[j];&#xD;            target.variables[variable.name] = new Variable(variable.name, variable.value, variable.isPersistent);&#xD;        }&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;lists&apos;)) {&#xD;        for (var k = 0; k &lt; object.lists.length; k++) {&#xD;            var list = object.lists[k];&#xD;            // @todo: monitor properties.&#xD;            target.lists[list.listName] = new List(list.listName, list.contents);&#xD;        }&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;scratchX&apos;)) {&#xD;        target.x = object.scratchX;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;scratchY&apos;)) {&#xD;        target.y = object.scratchY;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;direction&apos;)) {&#xD;        target.direction = object.direction;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;isDraggable&apos;)) {&#xD;        target.draggable = object.isDraggable;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;scale&apos;)) {&#xD;        // SB2 stores as 1.0 = 100%; we use % in the VM.&#xD;        target.size = object.scale * 100;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;visible&apos;)) {&#xD;        target.visible = object.visible;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;currentCostumeIndex&apos;)) {&#xD;        target.currentCostume = Math.round(object.currentCostumeIndex);&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;rotationStyle&apos;)) {&#xD;        if (object.rotationStyle === &apos;none&apos;) {&#xD;            target.rotationStyle = RenderedTarget.ROTATION_STYLE_NONE;&#xD;        } else if (object.rotationStyle === &apos;leftRight&apos;) {&#xD;            target.rotationStyle = RenderedTarget.ROTATION_STYLE_LEFT_RIGHT;&#xD;        } else if (object.rotationStyle === &apos;normal&apos;) {&#xD;            target.rotationStyle = RenderedTarget.ROTATION_STYLE_ALL_AROUND;&#xD;        }&#xD;    }&#xD;&#xD;    target.isStage = topLevel;&#xD;&#xD;    Promise.all(costumePromises).then(function (costumes) {&#xD;        sprite.costumes = costumes;&#xD;    });&#xD;&#xD;    Promise.all(soundPromises).then(function (sounds) {&#xD;        sprite.sounds = sounds;&#xD;    });&#xD;&#xD;    // The stage will have child objects; recursively process them.&#xD;    var childrenPromises = [];&#xD;    if (object.children) {&#xD;        for (var m = 0; m &lt; object.children.length; m++) {&#xD;            childrenPromises.push(parseScratchObject(object.children[m], runtime, false));&#xD;        }&#xD;    }&#xD;&#xD;    return Promise.all(costumePromises.concat(soundPromises)).then(function () {&#xD;        return Promise.all(childrenPromises).then(function (children) {&#xD;            var targets = [target];&#xD;            for (var n = 0; n &lt; children.length; n++) {&#xD;                targets = targets.concat(children[n]);&#xD;            }&#xD;            return targets;&#xD;        });&#xD;    });&#xD;};&#xD;&#xD;/**&#xD; * Top-level handler. Parse provided JSON,&#xD; * and process the top-level object (the stage object).&#xD; * @param {!object} json SB2-format JSON to load.&#xD; * @param {!Runtime} runtime Runtime object to load all structures into.&#xD; * @param {boolean=} optForceSprite If set, treat as sprite (Sprite2).&#xD; * @return {?Promise} Promise that resolves to the loaded targets when ready.&#xD; */&#xD;var sb2import = function sb2import(json, runtime, optForceSprite) {&#xD;    return parseScratchObject(json, runtime, !optForceSprite);&#xD;};&#xD;&#xD;/**&#xD; * Parse a single SB2 JSON-formatted block and its children.&#xD; * @param {!object} sb2block SB2 JSON-formatted block.&#xD; * @return {object} Scratch VM format block.&#xD; */&#xD;var parseBlock = function parseBlock(sb2block) {&#xD;    // First item in block object is the old opcode (e.g., &apos;forward:&apos;).&#xD;    var oldOpcode = sb2block[0];&#xD;    // Convert the block using the specMap. See sb2specmap.js.&#xD;    if (!oldOpcode || !specMap[oldOpcode]) {&#xD;        log.warn(&apos;Couldn\&apos;t find SB2 block: &apos;, oldOpcode);&#xD;        return;&#xD;    }&#xD;    var blockMetadata = specMap[oldOpcode];&#xD;    // Block skeleton.&#xD;    var activeBlock = {&#xD;        id: uid(), // Generate a new block unique ID.&#xD;        opcode: blockMetadata.opcode, // Converted, e.g. "motion_movesteps".&#xD;        inputs: {}, // Inputs to this block and the blocks they point to.&#xD;        fields: {}, // Fields on this block and their values.&#xD;        next: null, // Next block.&#xD;        shadow: false, // No shadow blocks in an SB2 by default.&#xD;        children: [] // Store any generated children, flattened in `flatten`.&#xD;    };&#xD;    // For a procedure call, generate argument map from proc string.&#xD;    if (oldOpcode === &apos;call&apos;) {&#xD;        blockMetadata.argMap = parseProcedureArgMap(sb2block[1]);&#xD;    }&#xD;    // Look at the expected arguments in `blockMetadata.argMap.`&#xD;    // The basic problem here is to turn positional SB2 arguments into&#xD;    // non-positional named Scratch VM arguments.&#xD;    for (var i = 0; i &lt; blockMetadata.argMap.length; i++) {&#xD;        var expectedArg = blockMetadata.argMap[i];&#xD;        var providedArg = sb2block[i + 1]; // (i = 0 is opcode)&#xD;        // Whether the input is obscuring a shadow.&#xD;        var shadowObscured = false;&#xD;        // Positional argument is an input.&#xD;        if (expectedArg.type === &apos;input&apos;) {&#xD;            // Create a new block and input metadata.&#xD;            var inputUid = uid();&#xD;            activeBlock.inputs[expectedArg.inputName] = {&#xD;                name: expectedArg.inputName,&#xD;                block: null,&#xD;                shadow: null&#xD;            };&#xD;            if ((typeof providedArg === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(providedArg)) === &apos;object&apos; &amp;&amp; providedArg) {&#xD;                // Block or block list occupies the input.&#xD;                var innerBlocks = void 0;&#xD;                if (_typeof(providedArg[0]) === &apos;object&apos; &amp;&amp; providedArg[0]) {&#xD;                    // Block list occupies the input.&#xD;                    innerBlocks = parseBlockList(providedArg);&#xD;                } else {&#xD;                    // Single block occupies the input.&#xD;                    innerBlocks = [parseBlock(providedArg)];&#xD;                }&#xD;                var previousBlock = null;&#xD;                for (var j = 0; j &lt; innerBlocks.length; j++) {&#xD;                    if (j === 0) {&#xD;                        innerBlocks[j].parent = activeBlock.id;&#xD;                    } else {&#xD;                        innerBlocks[j].parent = previousBlock;&#xD;                    }&#xD;                    previousBlock = innerBlocks[j].id;&#xD;                }&#xD;                // Obscures any shadow.&#xD;                shadowObscured = true;&#xD;                activeBlock.inputs[expectedArg.inputName].block = innerBlocks[0].id;&#xD;                activeBlock.children = activeBlock.children.concat(innerBlocks);&#xD;            }&#xD;            // Generate a shadow block to occupy the input.&#xD;            if (!expectedArg.inputOp) {&#xD;                // No editable shadow input; e.g., for a boolean.&#xD;                continue;&#xD;            }&#xD;            // Each shadow has a field generated for it automatically.&#xD;            // Value to be filled in the field.&#xD;            var fieldValue = providedArg;&#xD;            // Shadows&apos; field names match the input name, except for these:&#xD;            var fieldName = expectedArg.inputName;&#xD;            if (expectedArg.inputOp === &apos;math_number&apos; || expectedArg.inputOp === &apos;math_whole_number&apos; || expectedArg.inputOp === &apos;math_positive_number&apos; || expectedArg.inputOp === &apos;math_integer&apos; || expectedArg.inputOp === &apos;math_angle&apos;) {&#xD;                fieldName = &apos;NUM&apos;;&#xD;                // Fields are given Scratch 2.0 default values if obscured.&#xD;                if (shadowObscured) {&#xD;                    fieldValue = 10;&#xD;                }&#xD;            } else if (expectedArg.inputOp === &apos;text&apos;) {&#xD;                fieldName = &apos;TEXT&apos;;&#xD;                if (shadowObscured) {&#xD;                    fieldValue = &apos;&apos;;&#xD;                }&#xD;            } else if (expectedArg.inputOp === &apos;colour_picker&apos;) {&#xD;                // Convert SB2 color to hex.&#xD;                fieldValue = Color.decimalToHex(providedArg);&#xD;                fieldName = &apos;COLOUR&apos;;&#xD;                if (shadowObscured) {&#xD;                    fieldValue = &apos;#990000&apos;;&#xD;                }&#xD;            } else if (shadowObscured) {&#xD;                // Filled drop-down menu.&#xD;                fieldValue = &apos;&apos;;&#xD;            }&#xD;            var fields = {};&#xD;            fields[fieldName] = {&#xD;                name: fieldName,&#xD;                value: fieldValue&#xD;            };&#xD;            activeBlock.children.push({&#xD;                id: inputUid,&#xD;                opcode: expectedArg.inputOp,&#xD;                inputs: {},&#xD;                fields: fields,&#xD;                next: null,&#xD;                topLevel: false,&#xD;                parent: activeBlock.id,&#xD;                shadow: true&#xD;            });&#xD;            activeBlock.inputs[expectedArg.inputName].shadow = inputUid;&#xD;            // If no block occupying the input, alias to the shadow.&#xD;            if (!activeBlock.inputs[expectedArg.inputName].block) {&#xD;                activeBlock.inputs[expectedArg.inputName].block = inputUid;&#xD;            }&#xD;        } else if (expectedArg.type === &apos;field&apos;) {&#xD;            // Add as a field on this block.&#xD;            activeBlock.fields[expectedArg.fieldName] = {&#xD;                name: expectedArg.fieldName,&#xD;                value: providedArg&#xD;            };&#xD;        }&#xD;    }&#xD;    // Special cases to generate mutations.&#xD;    if (oldOpcode === &apos;stopScripts&apos;) {&#xD;        // Mutation for stop block: if the argument is &apos;other scripts&apos;,&#xD;        // the block needs a next connection.&#xD;        if (sb2block[1] === &apos;other scripts in sprite&apos; || sb2block[1] === &apos;other scripts in stage&apos;) {&#xD;            activeBlock.mutation = {&#xD;                tagName: &apos;mutation&apos;,&#xD;                hasnext: &apos;true&apos;,&#xD;                children: []&#xD;            };&#xD;        }&#xD;    } else if (oldOpcode === &apos;procDef&apos;) {&#xD;        // Mutation for procedure definition:&#xD;        // store all 2.0 proc data.&#xD;        var procData = sb2block.slice(1);&#xD;        activeBlock.mutation = {&#xD;            tagName: &apos;mutation&apos;,&#xD;            proccode: procData[0], // e.g., "abc %n %b %s"&#xD;            argumentnames: JSON.stringify(procData[1]), // e.g. [&apos;arg1&apos;, &apos;arg2&apos;]&#xD;            argumentdefaults: JSON.stringify(procData[2]), // e.g., [1, &apos;abc&apos;]&#xD;            warp: procData[3], // Warp mode, e.g., true/false.&#xD;            children: []&#xD;        };&#xD;    } else if (oldOpcode === &apos;call&apos;) {&#xD;        // Mutation for procedure call:&#xD;        // string for proc code (e.g., "abc %n %b %s").&#xD;        activeBlock.mutation = {&#xD;            tagName: &apos;mutation&apos;,&#xD;            children: [],&#xD;            proccode: sb2block[1]&#xD;        };&#xD;    } else if (oldOpcode === &apos;getParam&apos;) {&#xD;        // Mutation for procedure parameter.&#xD;        activeBlock.mutation = {&#xD;            tagName: &apos;mutation&apos;,&#xD;            children: [],&#xD;            paramname: sb2block[1], // Name of parameter.&#xD;            shape: sb2block[2] // Shape - in 2.0, &apos;r&apos; or &apos;b&apos;.&#xD;        };&#xD;    }&#xD;    return activeBlock;&#xD;};&#xD;&#xD;module.exports = {&#xD;    deserialize: sb2import&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 65 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * The specMap below handles a few pieces of "translation" work between&#xD; * the SB2 JSON format and the data we need to run a project&#xD; * in the Scratch 3.0 VM.&#xD; * Notably:&#xD; *  - Map 2.0 and 1.4 opcodes (forward:) into 3.0-format (motion_movesteps).&#xD; *  - Map ordered, unnamed args to unordered, named inputs and fields.&#xD; * Keep this up-to-date as 3.0 blocks are renamed, changed, etc.&#xD; * Originally this was generated largely by a hand-guided scripting process.&#xD; * The relevant data lives here:&#xD; * https://github.com/LLK/scratch-flash/blob/master/src/Specs.as&#xD; * (for the old opcode and argument order).&#xD; * and here:&#xD; * https://github.com/LLK/scratch-blocks/tree/develop/blocks_vertical&#xD; * (for the new opcodes and argument names).&#xD; * and here:&#xD; * https://github.com/LLK/scratch-blocks/blob/develop/tests/&#xD; * (for the shadow blocks created for each block).&#xD; * I started with the `commands` array in Specs.as, and discarded irrelevant&#xD; * properties. By hand, I matched the opcode name to the 3.0 opcode.&#xD; * Finally, I filled in the expected arguments as below.&#xD; */&#xD;var specMap = {&#xD;    &apos;forward:&apos;: {&#xD;        opcode: &apos;motion_movesteps&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;STEPS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;turnRight:&apos;: {&#xD;        opcode: &apos;motion_turnright&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;DEGREES&apos;&#xD;        }]&#xD;    },&#xD;    &apos;turnLeft:&apos;: {&#xD;        opcode: &apos;motion_turnleft&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;DEGREES&apos;&#xD;        }]&#xD;    },&#xD;    &apos;heading:&apos;: {&#xD;        opcode: &apos;motion_pointindirection&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_angle&apos;,&#xD;            inputName: &apos;DIRECTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;pointTowards:&apos;: {&#xD;        opcode: &apos;motion_pointtowards&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;motion_pointtowards_menu&apos;,&#xD;            inputName: &apos;TOWARDS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;gotoX:y:&apos;: {&#xD;        opcode: &apos;motion_gotoxy&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;X&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;Y&apos;&#xD;        }]&#xD;    },&#xD;    &apos;gotoSpriteOrMouse:&apos;: {&#xD;        opcode: &apos;motion_goto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;motion_goto_menu&apos;,&#xD;            inputName: &apos;TO&apos;&#xD;        }]&#xD;    },&#xD;    &apos;glideSecs:toX:y:elapsed:from:&apos;: {&#xD;        opcode: &apos;motion_glidesecstoxy&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SECS&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;X&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;Y&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changeXposBy:&apos;: {&#xD;        opcode: &apos;motion_changexby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;DX&apos;&#xD;        }]&#xD;    },&#xD;    &apos;xpos:&apos;: {&#xD;        opcode: &apos;motion_setx&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;X&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changeYposBy:&apos;: {&#xD;        opcode: &apos;motion_changeyby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;DY&apos;&#xD;        }]&#xD;    },&#xD;    &apos;ypos:&apos;: {&#xD;        opcode: &apos;motion_sety&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;Y&apos;&#xD;        }]&#xD;    },&#xD;    &apos;bounceOffEdge&apos;: {&#xD;        opcode: &apos;motion_ifonedgebounce&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;setRotationStyle&apos;: {&#xD;        opcode: &apos;motion_setrotationstyle&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;STYLE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;xpos&apos;: {&#xD;        opcode: &apos;motion_xposition&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;ypos&apos;: {&#xD;        opcode: &apos;motion_yposition&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;heading&apos;: {&#xD;        opcode: &apos;motion_direction&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;say:duration:elapsed:from:&apos;: {&#xD;        opcode: &apos;looks_sayforsecs&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;MESSAGE&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SECS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;say:&apos;: {&#xD;        opcode: &apos;looks_say&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;MESSAGE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;think:duration:elapsed:from:&apos;: {&#xD;        opcode: &apos;looks_thinkforsecs&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;MESSAGE&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SECS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;think:&apos;: {&#xD;        opcode: &apos;looks_think&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;MESSAGE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;show&apos;: {&#xD;        opcode: &apos;looks_show&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;hide&apos;: {&#xD;        opcode: &apos;looks_hide&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;lookLike:&apos;: {&#xD;        opcode: &apos;looks_switchcostumeto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;looks_costume&apos;,&#xD;            inputName: &apos;COSTUME&apos;&#xD;        }]&#xD;    },&#xD;    &apos;nextCostume&apos;: {&#xD;        opcode: &apos;looks_nextcostume&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;startScene&apos;: {&#xD;        opcode: &apos;looks_switchbackdropto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;looks_backdrops&apos;,&#xD;            inputName: &apos;BACKDROP&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changeGraphicEffect:by:&apos;: {&#xD;        opcode: &apos;looks_changeeffectby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;EFFECT&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;CHANGE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setGraphicEffect:to:&apos;: {&#xD;        opcode: &apos;looks_seteffectto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;EFFECT&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;VALUE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;filterReset&apos;: {&#xD;        opcode: &apos;looks_cleargraphiceffects&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;changeSizeBy:&apos;: {&#xD;        opcode: &apos;looks_changesizeby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;CHANGE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setSizeTo:&apos;: {&#xD;        opcode: &apos;looks_setsizeto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SIZE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;comeToFront&apos;: {&#xD;        opcode: &apos;looks_gotofront&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;goBackByLayers:&apos;: {&#xD;        opcode: &apos;looks_gobacklayers&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_integer&apos;,&#xD;            inputName: &apos;NUM&apos;&#xD;        }]&#xD;    },&#xD;    &apos;costumeIndex&apos;: {&#xD;        opcode: &apos;looks_costumeorder&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;sceneName&apos;: {&#xD;        opcode: &apos;looks_backdropname&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;scale&apos;: {&#xD;        opcode: &apos;looks_size&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;startSceneAndWait&apos;: {&#xD;        opcode: &apos;looks_switchbackdroptoandwait&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;looks_backdrops&apos;,&#xD;            inputName: &apos;BACKDROP&apos;&#xD;        }]&#xD;    },&#xD;    &apos;nextScene&apos;: {&#xD;        opcode: &apos;looks_nextbackdrop&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;backgroundIndex&apos;: {&#xD;        opcode: &apos;looks_backdroporder&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;playSound:&apos;: {&#xD;        opcode: &apos;sound_play&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sound_sounds_menu&apos;,&#xD;            inputName: &apos;SOUND_MENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doPlaySoundAndWait&apos;: {&#xD;        opcode: &apos;sound_playuntildone&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sound_sounds_menu&apos;,&#xD;            inputName: &apos;SOUND_MENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;stopAllSounds&apos;: {&#xD;        opcode: &apos;sound_stopallsounds&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;playDrum&apos;: {&#xD;        opcode: &apos;sound_playdrumforbeats&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;DRUM&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;BEATS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;rest:elapsed:from:&apos;: {&#xD;        opcode: &apos;sound_restforbeats&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;BEATS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;noteOn:duration:elapsed:from:&apos;: {&#xD;        opcode: &apos;sound_playnoteforbeats&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NOTE&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;BEATS&apos;&#xD;        }]&#xD;    },&#xD;    &apos;instrument:&apos;: {&#xD;        opcode: &apos;sound_setinstrumentto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;INSTRUMENT&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changeVolumeBy:&apos;: {&#xD;        opcode: &apos;sound_changevolumeby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;VOLUME&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setVolumeTo:&apos;: {&#xD;        opcode: &apos;sound_setvolumeto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;VOLUME&apos;&#xD;        }]&#xD;    },&#xD;    &apos;volume&apos;: {&#xD;        opcode: &apos;sound_volume&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;changeTempoBy:&apos;: {&#xD;        opcode: &apos;sound_changetempoby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;TEMPO&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setTempoTo:&apos;: {&#xD;        opcode: &apos;sound_settempotobpm&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;TEMPO&apos;&#xD;        }]&#xD;    },&#xD;    &apos;tempo&apos;: {&#xD;        opcode: &apos;sound_tempo&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;clearPenTrails&apos;: {&#xD;        opcode: &apos;pen_clear&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;stampCostume&apos;: {&#xD;        opcode: &apos;pen_stamp&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;putPenDown&apos;: {&#xD;        opcode: &apos;pen_pendown&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;putPenUp&apos;: {&#xD;        opcode: &apos;pen_penup&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;penColor:&apos;: {&#xD;        opcode: &apos;pen_setpencolortocolor&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;colour_picker&apos;,&#xD;            inputName: &apos;COLOR&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changePenHueBy:&apos;: {&#xD;        opcode: &apos;pen_changepencolorby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;COLOR&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setPenHueTo:&apos;: {&#xD;        opcode: &apos;pen_setpencolortonum&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;COLOR&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changePenShadeBy:&apos;: {&#xD;        opcode: &apos;pen_changepenshadeby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SHADE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setPenShadeTo:&apos;: {&#xD;        opcode: &apos;pen_setpenshadeto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SHADE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changePenSizeBy:&apos;: {&#xD;        opcode: &apos;pen_changepensizeby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SIZE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;penSize:&apos;: {&#xD;        opcode: &apos;pen_setpensizeto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;SIZE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;whenGreenFlag&apos;: {&#xD;        opcode: &apos;event_whenflagclicked&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;whenKeyPressed&apos;: {&#xD;        opcode: &apos;event_whenkeypressed&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;KEY_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;whenClicked&apos;: {&#xD;        opcode: &apos;event_whenthisspriteclicked&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;whenSceneStarts&apos;: {&#xD;        opcode: &apos;event_whenbackdropswitchesto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;BACKDROP&apos;&#xD;        }]&#xD;    },&#xD;    &apos;whenSensorGreaterThan&apos;: {&#xD;        opcode: &apos;event_whengreaterthan&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;WHENGREATERTHANMENU&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;VALUE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;whenIReceive&apos;: {&#xD;        opcode: &apos;event_whenbroadcastreceived&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;BROADCAST_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;broadcast:&apos;: {&#xD;        opcode: &apos;event_broadcast&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;event_broadcast_menu&apos;,&#xD;            inputName: &apos;BROADCAST_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doBroadcastAndWait&apos;: {&#xD;        opcode: &apos;event_broadcastandwait&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;event_broadcast_menu&apos;,&#xD;            inputName: &apos;BROADCAST_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;wait:elapsed:from:&apos;: {&#xD;        opcode: &apos;control_wait&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_positive_number&apos;,&#xD;            inputName: &apos;DURATION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doRepeat&apos;: {&#xD;        opcode: &apos;control_repeat&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_whole_number&apos;,&#xD;            inputName: &apos;TIMES&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doForever&apos;: {&#xD;        opcode: &apos;control_forever&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doWarp&apos;: {&#xD;        opcode: &apos;control_warp&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doIf&apos;: {&#xD;        opcode: &apos;control_if&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;CONDITION&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doIfElse&apos;: {&#xD;        opcode: &apos;control_if_else&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;CONDITION&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doWaitUntil&apos;: {&#xD;        opcode: &apos;control_wait_until&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;CONDITION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doUntil&apos;: {&#xD;        opcode: &apos;control_repeat_until&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;CONDITION&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;SUBSTACK&apos;&#xD;        }]&#xD;    },&#xD;    &apos;stopScripts&apos;: {&#xD;        opcode: &apos;control_stop&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;STOP_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;whenCloned&apos;: {&#xD;        opcode: &apos;control_start_as_clone&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;createCloneOf&apos;: {&#xD;        opcode: &apos;control_create_clone_of&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;control_create_clone_of_menu&apos;,&#xD;            inputName: &apos;CLONE_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;deleteClone&apos;: {&#xD;        opcode: &apos;control_delete_this_clone&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;touching:&apos;: {&#xD;        opcode: &apos;sensing_touchingobject&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_touchingobjectmenu&apos;,&#xD;            inputName: &apos;TOUCHINGOBJECTMENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;touchingColor:&apos;: {&#xD;        opcode: &apos;sensing_touchingcolor&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;colour_picker&apos;,&#xD;            inputName: &apos;COLOR&apos;&#xD;        }]&#xD;    },&#xD;    &apos;color:sees:&apos;: {&#xD;        opcode: &apos;sensing_coloristouchingcolor&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;colour_picker&apos;,&#xD;            inputName: &apos;COLOR&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;colour_picker&apos;,&#xD;            inputName: &apos;COLOR2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;distanceTo:&apos;: {&#xD;        opcode: &apos;sensing_distanceto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_distancetomenu&apos;,&#xD;            inputName: &apos;DISTANCETOMENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;doAsk&apos;: {&#xD;        opcode: &apos;sensing_askandwait&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;QUESTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;answer&apos;: {&#xD;        opcode: &apos;sensing_answer&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;keyPressed:&apos;: {&#xD;        opcode: &apos;sensing_keypressed&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_keyoptions&apos;,&#xD;            inputName: &apos;KEY_OPTION&apos;&#xD;        }]&#xD;    },&#xD;    &apos;mousePressed&apos;: {&#xD;        opcode: &apos;sensing_mousedown&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;mouseX&apos;: {&#xD;        opcode: &apos;sensing_mousex&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;mouseY&apos;: {&#xD;        opcode: &apos;sensing_mousey&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;soundLevel&apos;: {&#xD;        opcode: &apos;sensing_loudness&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;senseVideoMotion&apos;: {&#xD;        opcode: &apos;sensing_videoon&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_videoonmenuone&apos;,&#xD;            inputName: &apos;VIDEOONMENU1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_videoonmenutwo&apos;,&#xD;            inputName: &apos;VIDEOONMENU2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setVideoState&apos;: {&#xD;        opcode: &apos;sensing_videotoggle&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_videotogglemenu&apos;,&#xD;            inputName: &apos;VIDEOTOGGLEMENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setVideoTransparency&apos;: {&#xD;        opcode: &apos;sensing_setvideotransparency&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;TRANSPARENCY&apos;&#xD;        }]&#xD;    },&#xD;    &apos;timer&apos;: {&#xD;        opcode: &apos;sensing_timer&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;timerReset&apos;: {&#xD;        opcode: &apos;sensing_resettimer&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;getAttribute:of:&apos;: {&#xD;        opcode: &apos;sensing_of&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_of_property_menu&apos;,&#xD;            inputName: &apos;PROPERTY&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_of_object_menu&apos;,&#xD;            inputName: &apos;OBJECT&apos;&#xD;        }]&#xD;    },&#xD;    &apos;timeAndDate&apos;: {&#xD;        opcode: &apos;sensing_current&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;sensing_currentmenu&apos;,&#xD;            inputName: &apos;CURRENTMENU&apos;&#xD;        }]&#xD;    },&#xD;    &apos;timestamp&apos;: {&#xD;        opcode: &apos;sensing_dayssince2000&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;getUserName&apos;: {&#xD;        opcode: &apos;sensing_username&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;+&apos;: {&#xD;        opcode: &apos;operator_add&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;-&apos;: {&#xD;        opcode: &apos;operator_subtract&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;*&apos;: {&#xD;        opcode: &apos;operator_multiply&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;/&apos;: {&#xD;        opcode: &apos;operator_divide&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;randomFrom:to:&apos;: {&#xD;        opcode: &apos;operator_random&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;FROM&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;TO&apos;&#xD;        }]&#xD;    },&#xD;    &apos;&lt;&apos;: {&#xD;        opcode: &apos;operator_lt&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;=&apos;: {&#xD;        opcode: &apos;operator_equals&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;&gt;&apos;: {&#xD;        opcode: &apos;operator_gt&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;OPERAND2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;&amp;&apos;: {&#xD;        opcode: &apos;operator_and&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;OPERAND1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;OPERAND2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;|&apos;: {&#xD;        opcode: &apos;operator_or&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;OPERAND1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;OPERAND2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;not&apos;: {&#xD;        opcode: &apos;operator_not&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputName: &apos;OPERAND&apos;&#xD;        }]&#xD;    },&#xD;    &apos;concatenate:with:&apos;: {&#xD;        opcode: &apos;operator_join&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;STRING1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;STRING2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;letter:of:&apos;: {&#xD;        opcode: &apos;operator_letter_of&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_whole_number&apos;,&#xD;            inputName: &apos;LETTER&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;STRING&apos;&#xD;        }]&#xD;    },&#xD;    &apos;stringLength:&apos;: {&#xD;        opcode: &apos;operator_length&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;STRING&apos;&#xD;        }]&#xD;    },&#xD;    &apos;%&apos;: {&#xD;        opcode: &apos;operator_mod&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM1&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM2&apos;&#xD;        }]&#xD;    },&#xD;    &apos;rounded&apos;: {&#xD;        opcode: &apos;operator_round&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM&apos;&#xD;        }]&#xD;    },&#xD;    &apos;computeFunction:of:&apos;: {&#xD;        opcode: &apos;operator_mathop&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;OPERATOR&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;NUM&apos;&#xD;        }]&#xD;    },&#xD;    &apos;readVariable&apos;: {&#xD;        opcode: &apos;data_variable&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;VARIABLE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setVar:to:&apos;: {&#xD;        opcode: &apos;data_setvariableto&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;data_variablemenu&apos;,&#xD;            inputName: &apos;VARIABLE&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;VALUE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;changeVar:by:&apos;: {&#xD;        opcode: &apos;data_changevariableby&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;data_variablemenu&apos;,&#xD;            inputName: &apos;VARIABLE&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_number&apos;,&#xD;            inputName: &apos;VALUE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;showVariable:&apos;: {&#xD;        opcode: &apos;data_showvariable&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;data_variablemenu&apos;,&#xD;            inputName: &apos;VARIABLE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;hideVariable:&apos;: {&#xD;        opcode: &apos;data_hidevariable&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;data_variablemenu&apos;,&#xD;            inputName: &apos;VARIABLE&apos;&#xD;        }]&#xD;    },&#xD;    &apos;contentsOfList:&apos;: {&#xD;        opcode: &apos;data_list&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;append:toList:&apos;: {&#xD;        opcode: &apos;data_addtolist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;ITEM&apos;&#xD;        }, {&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;deleteLine:ofList:&apos;: {&#xD;        opcode: &apos;data_deleteoflist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_integer&apos;,&#xD;            inputName: &apos;INDEX&apos;&#xD;        }, {&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;insert:at:ofList:&apos;: {&#xD;        opcode: &apos;data_insertatlist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;ITEM&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_integer&apos;,&#xD;            inputName: &apos;INDEX&apos;&#xD;        }, {&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;setLine:ofList:to:&apos;: {&#xD;        opcode: &apos;data_replaceitemoflist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_integer&apos;,&#xD;            inputName: &apos;INDEX&apos;&#xD;        }, {&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;ITEM&apos;&#xD;        }]&#xD;    },&#xD;    &apos;getLine:ofList:&apos;: {&#xD;        opcode: &apos;data_itemoflist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;math_integer&apos;,&#xD;            inputName: &apos;INDEX&apos;&#xD;        }, {&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;lineCountOfList:&apos;: {&#xD;        opcode: &apos;data_lengthoflist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;list:contains:&apos;: {&#xD;        opcode: &apos;data_listcontainsitem&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }, {&#xD;            type: &apos;input&apos;,&#xD;            inputOp: &apos;text&apos;,&#xD;            inputName: &apos;ITEM&apos;&#xD;        }]&#xD;    },&#xD;    &apos;showList:&apos;: {&#xD;        opcode: &apos;data_showlist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;hideList:&apos;: {&#xD;        opcode: &apos;data_hidelist&apos;,&#xD;        argMap: [{&#xD;            type: &apos;field&apos;,&#xD;            fieldName: &apos;LIST&apos;&#xD;        }]&#xD;    },&#xD;    &apos;procDef&apos;: {&#xD;        opcode: &apos;procedures_defnoreturn&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;getParam&apos;: {&#xD;        opcode: &apos;procedures_param&apos;,&#xD;        argMap: []&#xD;    },&#xD;    &apos;call&apos;: {&#xD;        opcode: &apos;procedures_callnoreturn&apos;,&#xD;        argMap: []&#xD;    }&#xD;};&#xD;module.exports = specMap;&#xD;&#xD;/***/ }),&#xD;/* 66 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * Partial implementation of a SB3 serializer and deserializer. Parses provided&#xD; * JSON and then generates all needed scratch-vm runtime structures.&#xD; */&#xD;&#xD;var vmPackage = __webpack_require__(110);&#xD;var Blocks = __webpack_require__(9);&#xD;var Sprite = __webpack_require__(28);&#xD;var Variable = __webpack_require__(19);&#xD;var List = __webpack_require__(17);&#xD;&#xD;var loadCostume = __webpack_require__(20);&#xD;var loadSound = __webpack_require__(21);&#xD;&#xD;/**&#xD; * Serializes the specified VM runtime.&#xD; * @param  {!Runtime} runtime VM runtime instance to be serialized.&#xD; * @return {object}    Serialized runtime instance.&#xD; */&#xD;var serialize = function serialize(runtime) {&#xD;    // Fetch targets&#xD;    var obj = Object.create(null);&#xD;    obj.targets = runtime.targets;&#xD;&#xD;    // Assemble metadata&#xD;    var meta = Object.create(null);&#xD;    meta.semver = &apos;3.0.0&apos;;&#xD;    meta.vm = vmPackage.version;&#xD;&#xD;    // Attach full user agent string to metadata if available&#xD;    meta.agent = null;&#xD;    if (typeof navigator !== &apos;undefined&apos;) meta.agent = navigator.userAgent;&#xD;&#xD;    // Assemble payload and return&#xD;    obj.meta = meta;&#xD;    return obj;&#xD;};&#xD;&#xD;/**&#xD; * Parse a single "Scratch object" and create all its in-memory VM objects.&#xD; * @param {!object} object From-JSON "Scratch object:" sprite, stage, watcher.&#xD; * @param {!Runtime} runtime Runtime object to load all structures into.&#xD; * @return {?Target} Target created (stage or sprite).&#xD; */&#xD;var parseScratchObject = function parseScratchObject(object, runtime) {&#xD;    if (!object.hasOwnProperty(&apos;name&apos;)) {&#xD;        // Watcher/monitor - skip this object until those are implemented in VM.&#xD;        // @todo&#xD;        return;&#xD;    }&#xD;    // Blocks container for this object.&#xD;    var blocks = new Blocks();&#xD;&#xD;    // @todo: For now, load all Scratch objects (stage/sprites) as a Sprite.&#xD;    var sprite = new Sprite(blocks, runtime);&#xD;&#xD;    // Sprite/stage name from JSON.&#xD;    if (object.hasOwnProperty(&apos;name&apos;)) {&#xD;        sprite.name = object.name;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;blocks&apos;)) {&#xD;        for (var blockId in object.blocks) {&#xD;            blocks.createBlock(object.blocks[blockId]);&#xD;        }&#xD;        // console.log(blocks);&#xD;    }&#xD;    // Costumes from JSON.&#xD;    var costumePromises = (object.costumes || []).map(function (costumeSource) {&#xD;        // @todo: Make sure all the relevant metadata is being pulled out.&#xD;        var costume = {&#xD;            skinId: null,&#xD;            name: costumeSource.name,&#xD;            bitmapResolution: costumeSource.bitmapResolution,&#xD;            rotationCenterX: costumeSource.rotationCenterX,&#xD;            rotationCenterY: costumeSource.rotationCenterY&#xD;        };&#xD;        var costumeMd5 = costumeSource.assetId + &apos;.&apos; + costumeSource.assetType.runtimeFormat;&#xD;        return loadCostume(costumeMd5, costume, runtime);&#xD;    });&#xD;    // Sounds from JSON&#xD;    var soundPromises = (object.sounds || []).map(function (soundSource) {&#xD;        var sound = {&#xD;            format: soundSource.format,&#xD;            fileUrl: soundSource.fileUrl,&#xD;            rate: soundSource.rate,&#xD;            sampleCount: soundSource.sampleCount,&#xD;            soundID: soundSource.soundID,&#xD;            name: soundSource.name,&#xD;            md5: soundSource.md5,&#xD;            data: null&#xD;        };&#xD;        return loadSound(sound, runtime);&#xD;    });&#xD;    // Create the first clone, and load its run-state from JSON.&#xD;    var target = sprite.createClone();&#xD;    // Load target properties from JSON.&#xD;    if (object.hasOwnProperty(&apos;variables&apos;)) {&#xD;        for (var j = 0; j &lt; object.variables.length; j++) {&#xD;            var variable = object.variables[j];&#xD;            target.variables[variable.name] = new Variable(variable.name, variable.value, variable.isPersistent);&#xD;        }&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;lists&apos;)) {&#xD;        for (var k = 0; k &lt; object.lists.length; k++) {&#xD;            var list = object.lists[k];&#xD;            // @todo: monitor properties.&#xD;            target.lists[list.listName] = new List(list.listName, list.contents);&#xD;        }&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;x&apos;)) {&#xD;        target.x = object.x;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;y&apos;)) {&#xD;        target.y = object.y;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;direction&apos;)) {&#xD;        target.direction = object.direction;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;size&apos;)) {&#xD;        target.size = object.size;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;visible&apos;)) {&#xD;        target.visible = object.visible;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;currentCostume&apos;)) {&#xD;        target.currentCostume = object.currentCostume;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;rotationStyle&apos;)) {&#xD;        target.rotationStyle = object.rotationStyle;&#xD;    }&#xD;    if (object.hasOwnProperty(&apos;isStage&apos;)) {&#xD;        target.isStage = object.isStage;&#xD;    }&#xD;    Promise.all(costumePromises).then(function (costumes) {&#xD;        sprite.costumes = costumes;&#xD;    });&#xD;    Promise.all(soundPromises).then(function (sounds) {&#xD;        sprite.sounds = sounds;&#xD;    });&#xD;    return Promise.all(costumePromises.concat(soundPromises)).then(function () {&#xD;        return target;&#xD;    });&#xD;};&#xD;&#xD;/**&#xD; * Deserializes the specified representation of a VM runtime and loads it into&#xD; * the provided runtime instance.&#xD; * @param  {object}  json    JSON representation of a VM runtime.&#xD; * @param  {Runtime} runtime Runtime instance&#xD; * @returns {Promise} Promise that resolves to the list of targets after the project is deserialized&#xD; */&#xD;var deserialize = function deserialize(json, runtime) {&#xD;    return Promise.all((json.targets || []).map(function (target) {&#xD;        return parseScratchObject(target, runtime);&#xD;    }));&#xD;};&#xD;&#xD;module.exports = {&#xD;    serialize: serialize,&#xD;    deserialize: deserialize&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 67 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var StringUtil = function () {&#xD;    function StringUtil() {&#xD;        _classCallCheck(this, StringUtil);&#xD;    }&#xD;&#xD;    _createClass(StringUtil, null, [{&#xD;        key: &apos;withoutTrailingDigits&apos;,&#xD;        value: function withoutTrailingDigits(s) {&#xD;            var i = s.length - 1;&#xD;            while (i &gt;= 0 &amp;&amp; &apos;0123456789&apos;.indexOf(s.charAt(i)) &gt; -1) {&#xD;                i--;&#xD;            }return s.slice(0, i + 1);&#xD;        }&#xD;    }, {&#xD;        key: &apos;unusedName&apos;,&#xD;        value: function unusedName(name, existingNames) {&#xD;            if (existingNames.indexOf(name) &lt; 0) return name;&#xD;            name = StringUtil.withoutTrailingDigits(name);&#xD;            var i = 2;&#xD;            while (existingNames.indexOf(name + i) &gt;= 0) {&#xD;                i++;&#xD;            }return name + i;&#xD;        }&#xD;    }]);&#xD;&#xD;    return StringUtil;&#xD;}();&#xD;&#xD;module.exports = StringUtil;&#xD;&#xD;/***/ }),&#xD;/* 68 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Escape a string to be safe to use in XML content.&#xD; * CC-BY-SA: hgoebl&#xD; * https://stackoverflow.com/questions/7918868/&#xD; * how-to-escape-xml-entities-in-javascript&#xD; * @param {!string} unsafe Unsafe string.&#xD; * @return {string} XML-escaped string, for use within an XML tag.&#xD; */&#xD;var xmlEscape = function xmlEscape(unsafe) {&#xD;    return unsafe.replace(/[&lt;&gt;&amp;&apos;"]/g, function (c) {&#xD;        switch (c) {&#xD;            case &apos;&lt;&apos;:&#xD;                return &apos;&amp;lt;&apos;;&#xD;            case &apos;&gt;&apos;:&#xD;                return &apos;&amp;gt;&apos;;&#xD;            case &apos;&amp;&apos;:&#xD;                return &apos;&amp;amp;&apos;;&#xD;            case &apos;\&apos;&apos;:&#xD;                return &apos;&amp;apos;&apos;;&#xD;            case &apos;"&apos;:&#xD;                return &apos;&amp;quot;&apos;;&#xD;        }&#xD;    });&#xD;};&#xD;&#xD;module.exports = xmlEscape;&#xD;&#xD;/***/ }),&#xD;/* 69 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/*&#xD;  Module dependencies&#xD;*/&#xD;var ElementType = __webpack_require__(70);&#xD;var entities = __webpack_require__(80);&#xD;&#xD;/*&#xD;  Boolean Attributes&#xD;*/&#xD;var booleanAttributes = {&#xD;  __proto__: null,&#xD;  allowfullscreen: true,&#xD;  async: true,&#xD;  autofocus: true,&#xD;  autoplay: true,&#xD;  checked: true,&#xD;  controls: true,&#xD;  default: true,&#xD;  defer: true,&#xD;  disabled: true,&#xD;  hidden: true,&#xD;  ismap: true,&#xD;  loop: true,&#xD;  multiple: true,&#xD;  muted: true,&#xD;  open: true,&#xD;  readonly: true,&#xD;  required: true,&#xD;  reversed: true,&#xD;  scoped: true,&#xD;  seamless: true,&#xD;  selected: true,&#xD;  typemustmatch: true&#xD;};&#xD;&#xD;var unencodedElements = {&#xD;  __proto__: null,&#xD;  style: true,&#xD;  script: true,&#xD;  xmp: true,&#xD;  iframe: true,&#xD;  noembed: true,&#xD;  noframes: true,&#xD;  plaintext: true,&#xD;  noscript: true&#xD;};&#xD;&#xD;/*&#xD;  Format attributes&#xD;*/&#xD;function formatAttrs(attributes, opts) {&#xD;  if (!attributes) return;&#xD;&#xD;  var output = &apos;&apos;,&#xD;      value;&#xD;&#xD;  // Loop through the attributes&#xD;  for (var key in attributes) {&#xD;    value = attributes[key];&#xD;    if (output) {&#xD;      output += &apos; &apos;;&#xD;    }&#xD;&#xD;    if (!value &amp;&amp; booleanAttributes[key]) {&#xD;      output += key;&#xD;    } else {&#xD;      output += key + &apos;="&apos; + (opts.decodeEntities ? entities.encodeXML(value) : value) + &apos;"&apos;;&#xD;    }&#xD;  }&#xD;&#xD;  return output;&#xD;}&#xD;&#xD;/*&#xD;  Self-enclosing tags (stolen from node-htmlparser)&#xD;*/&#xD;var singleTag = {&#xD;  __proto__: null,&#xD;  area: true,&#xD;  base: true,&#xD;  basefont: true,&#xD;  br: true,&#xD;  col: true,&#xD;  command: true,&#xD;  embed: true,&#xD;  frame: true,&#xD;  hr: true,&#xD;  img: true,&#xD;  input: true,&#xD;  isindex: true,&#xD;  keygen: true,&#xD;  link: true,&#xD;  meta: true,&#xD;  param: true,&#xD;  source: true,&#xD;  track: true,&#xD;  wbr: true,&#xD;};&#xD;&#xD;&#xD;var render = module.exports = function(dom, opts) {&#xD;  if (!Array.isArray(dom) &amp;&amp; !dom.cheerio) dom = [dom];&#xD;  opts = opts || {};&#xD;&#xD;  var output = &apos;&apos;;&#xD;&#xD;  for(var i = 0; i &lt; dom.length; i++){&#xD;    var elem = dom[i];&#xD;&#xD;    if (elem.type === &apos;root&apos;)&#xD;      output += render(elem.children, opts);&#xD;    else if (ElementType.isTag(elem))&#xD;      output += renderTag(elem, opts);&#xD;    else if (elem.type === ElementType.Directive)&#xD;      output += renderDirective(elem);&#xD;    else if (elem.type === ElementType.Comment)&#xD;      output += renderComment(elem);&#xD;    else if (elem.type === ElementType.CDATA)&#xD;      output += renderCdata(elem);&#xD;    else&#xD;      output += renderText(elem, opts);&#xD;  }&#xD;&#xD;  return output;&#xD;};&#xD;&#xD;function renderTag(elem, opts) {&#xD;  // Handle SVG&#xD;  if (elem.name === "svg") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};&#xD;&#xD;  var tag = &apos;&lt;&apos; + elem.name,&#xD;      attribs = formatAttrs(elem.attribs, opts);&#xD;&#xD;  if (attribs) {&#xD;    tag += &apos; &apos; + attribs;&#xD;  }&#xD;&#xD;  if (&#xD;    opts.xmlMode&#xD;    &amp;&amp; (!elem.children || elem.children.length === 0)&#xD;  ) {&#xD;    tag += &apos;/&gt;&apos;;&#xD;  } else {&#xD;    tag += &apos;&gt;&apos;;&#xD;    if (elem.children) {&#xD;      tag += render(elem.children, opts);&#xD;    }&#xD;&#xD;    if (!singleTag[elem.name] || opts.xmlMode) {&#xD;      tag += &apos;&lt;/&apos; + elem.name + &apos;&gt;&apos;;&#xD;    }&#xD;  }&#xD;&#xD;  return tag;&#xD;}&#xD;&#xD;function renderDirective(elem) {&#xD;  return &apos;&lt;&apos; + elem.data + &apos;&gt;&apos;;&#xD;}&#xD;&#xD;function renderText(elem, opts) {&#xD;  var data = elem.data || &apos;&apos;;&#xD;&#xD;  // if entities weren&apos;t decoded, no need to encode them back&#xD;  if (opts.decodeEntities &amp;&amp; !(elem.parent &amp;&amp; elem.parent.name in unencodedElements)) {&#xD;    data = entities.encodeXML(data);&#xD;  }&#xD;&#xD;  return data;&#xD;}&#xD;&#xD;function renderCdata(elem) {&#xD;  return &apos;&lt;![CDATA[&apos; + elem.children[0].data + &apos;]]&gt;&apos;;&#xD;}&#xD;&#xD;function renderComment(elem) {&#xD;  return &apos;&lt;!--&apos; + elem.data + &apos;--&gt;&apos;;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 70 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;//Types of elements found in the DOM&#xD;module.exports = {&#xD;	Text: "text", //Text&#xD;	Directive: "directive", //&lt;? ... ?&gt;&#xD;	Comment: "comment", //&lt;!-- ... --&gt;&#xD;	Script: "script", //&lt;script&gt; tags&#xD;	Style: "style", //&lt;style&gt; tags&#xD;	Tag: "tag", //Any tag&#xD;	CDATA: "cdata", //&lt;![CDATA[ ... ]]&gt;&#xD;&#xD;	isTag: function(elem){&#xD;		return elem.type === "tag" || elem.type === "script" || elem.type === "style";&#xD;	}&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 71 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ElementType = __webpack_require__(11);&#xD;&#xD;var re_whitespace = /\s+/g;&#xD;var NodePrototype = __webpack_require__(31);&#xD;var ElementPrototype = __webpack_require__(72);&#xD;&#xD;function DomHandler(callback, options, elementCB){&#xD;	if(typeof callback === "object"){&#xD;		elementCB = options;&#xD;		options = callback;&#xD;		callback = null;&#xD;	} else if(typeof options === "function"){&#xD;		elementCB = options;&#xD;		options = defaultOpts;&#xD;	}&#xD;	this._callback = callback;&#xD;	this._options = options || defaultOpts;&#xD;	this._elementCB = elementCB;&#xD;	this.dom = [];&#xD;	this._done = false;&#xD;	this._tagStack = [];&#xD;	this._parser = this._parser || null;&#xD;}&#xD;&#xD;//default options&#xD;var defaultOpts = {&#xD;	normalizeWhitespace: false, //Replace all whitespace with single spaces&#xD;	withStartIndices: false, //Add startIndex properties to nodes&#xD;};&#xD;&#xD;DomHandler.prototype.onparserinit = function(parser){&#xD;	this._parser = parser;&#xD;};&#xD;&#xD;//Resets the handler back to starting state&#xD;DomHandler.prototype.onreset = function(){&#xD;	DomHandler.call(this, this._callback, this._options, this._elementCB);&#xD;};&#xD;&#xD;//Signals the handler that parsing is done&#xD;DomHandler.prototype.onend = function(){&#xD;	if(this._done) return;&#xD;	this._done = true;&#xD;	this._parser = null;&#xD;	this._handleCallback(null);&#xD;};&#xD;&#xD;DomHandler.prototype._handleCallback =&#xD;DomHandler.prototype.onerror = function(error){&#xD;	if(typeof this._callback === "function"){&#xD;		this._callback(error, this.dom);&#xD;	} else {&#xD;		if(error) throw error;&#xD;	}&#xD;};&#xD;&#xD;DomHandler.prototype.onclosetag = function(){&#xD;	//if(this._tagStack.pop().name !== name) this._handleCallback(Error("Tagname didn&apos;t match!"));&#xD;	var elem = this._tagStack.pop();&#xD;	if(this._elementCB) this._elementCB(elem);&#xD;};&#xD;&#xD;DomHandler.prototype._addDomElement = function(element){&#xD;	var parent = this._tagStack[this._tagStack.length - 1];&#xD;	var siblings = parent ? parent.children : this.dom;&#xD;	var previousSibling = siblings[siblings.length - 1];&#xD;&#xD;	element.next = null;&#xD;&#xD;	if(this._options.withStartIndices){&#xD;		element.startIndex = this._parser.startIndex;&#xD;	}&#xD;&#xD;	if (this._options.withDomLvl1) {&#xD;		element.__proto__ = element.type === "tag" ? ElementPrototype : NodePrototype;&#xD;	}&#xD;&#xD;	if(previousSibling){&#xD;		element.prev = previousSibling;&#xD;		previousSibling.next = element;&#xD;	} else {&#xD;		element.prev = null;&#xD;	}&#xD;&#xD;	siblings.push(element);&#xD;	element.parent = parent || null;&#xD;};&#xD;&#xD;DomHandler.prototype.onopentag = function(name, attribs){&#xD;	var element = {&#xD;		type: name === "script" ? ElementType.Script : name === "style" ? ElementType.Style : ElementType.Tag,&#xD;		name: name,&#xD;		attribs: attribs,&#xD;		children: []&#xD;	};&#xD;&#xD;	this._addDomElement(element);&#xD;&#xD;	this._tagStack.push(element);&#xD;};&#xD;&#xD;DomHandler.prototype.ontext = function(data){&#xD;	//the ignoreWhitespace is officially dropped, but for now,&#xD;	//it&apos;s an alias for normalizeWhitespace&#xD;	var normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;&#xD;&#xD;	var lastTag;&#xD;&#xD;	if(!this._tagStack.length &amp;&amp; this.dom.length &amp;&amp; (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){&#xD;		if(normalize){&#xD;			lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");&#xD;		} else {&#xD;			lastTag.data += data;&#xD;		}&#xD;	} else {&#xD;		if(&#xD;			this._tagStack.length &amp;&amp;&#xD;			(lastTag = this._tagStack[this._tagStack.length - 1]) &amp;&amp;&#xD;			(lastTag = lastTag.children[lastTag.children.length - 1]) &amp;&amp;&#xD;			lastTag.type === ElementType.Text&#xD;		){&#xD;			if(normalize){&#xD;				lastTag.data = (lastTag.data + data).replace(re_whitespace, " ");&#xD;			} else {&#xD;				lastTag.data += data;&#xD;			}&#xD;		} else {&#xD;			if(normalize){&#xD;				data = data.replace(re_whitespace, " ");&#xD;			}&#xD;&#xD;			this._addDomElement({&#xD;				data: data,&#xD;				type: ElementType.Text&#xD;			});&#xD;		}&#xD;	}&#xD;};&#xD;&#xD;DomHandler.prototype.oncomment = function(data){&#xD;	var lastTag = this._tagStack[this._tagStack.length - 1];&#xD;&#xD;	if(lastTag &amp;&amp; lastTag.type === ElementType.Comment){&#xD;		lastTag.data += data;&#xD;		return;&#xD;	}&#xD;&#xD;	var element = {&#xD;		data: data,&#xD;		type: ElementType.Comment&#xD;	};&#xD;&#xD;	this._addDomElement(element);&#xD;	this._tagStack.push(element);&#xD;};&#xD;&#xD;DomHandler.prototype.oncdatastart = function(){&#xD;	var element = {&#xD;		children: [{&#xD;			data: "",&#xD;			type: ElementType.Text&#xD;		}],&#xD;		type: ElementType.CDATA&#xD;	};&#xD;&#xD;	this._addDomElement(element);&#xD;	this._tagStack.push(element);&#xD;};&#xD;&#xD;DomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){&#xD;	this._tagStack.pop();&#xD;};&#xD;&#xD;DomHandler.prototype.onprocessinginstruction = function(name, data){&#xD;	this._addDomElement({&#xD;		name: name,&#xD;		data: data,&#xD;		type: ElementType.Directive&#xD;	});&#xD;};&#xD;&#xD;module.exports = DomHandler;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 72 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// DOM-Level-1-compliant structure&#xD;var NodePrototype = __webpack_require__(31);&#xD;var ElementPrototype = module.exports = Object.create(NodePrototype);&#xD;&#xD;var domLvl1 = {&#xD;	tagName: "name"&#xD;};&#xD;&#xD;Object.keys(domLvl1).forEach(function(key) {&#xD;	var shorthand = domLvl1[key];&#xD;	Object.defineProperty(ElementPrototype, key, {&#xD;		get: function() {&#xD;			return this[shorthand] || null;&#xD;		},&#xD;		set: function(val) {&#xD;			this[shorthand] = val;&#xD;			return val;&#xD;		}&#xD;	});&#xD;});&#xD;&#xD;&#xD;/***/ }),&#xD;/* 73 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var DomUtils = module.exports;&#xD;&#xD;[&#xD;	__webpack_require__(78),&#xD;	__webpack_require__(79),&#xD;	__webpack_require__(76),&#xD;	__webpack_require__(77),&#xD;	__webpack_require__(75),&#xD;	__webpack_require__(74)&#xD;].forEach(function(ext){&#xD;	Object.keys(ext).forEach(function(key){&#xD;		DomUtils[key] = ext[key].bind(DomUtils);&#xD;	});&#xD;});&#xD;&#xD;&#xD;/***/ }),&#xD;/* 74 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// removeSubsets&#xD;// Given an array of nodes, remove any member that is contained by another.&#xD;exports.removeSubsets = function(nodes) {&#xD;	var idx = nodes.length, node, ancestor, replace;&#xD;&#xD;	// Check if each node (or one of its ancestors) is already contained in the&#xD;	// array.&#xD;	while (--idx &gt; -1) {&#xD;		node = ancestor = nodes[idx];&#xD;&#xD;		// Temporarily remove the node under consideration&#xD;		nodes[idx] = null;&#xD;		replace = true;&#xD;&#xD;		while (ancestor) {&#xD;			if (nodes.indexOf(ancestor) &gt; -1) {&#xD;				replace = false;&#xD;				nodes.splice(idx, 1);&#xD;				break;&#xD;			}&#xD;			ancestor = ancestor.parent;&#xD;		}&#xD;&#xD;		// If the node has been found to be unique, re-insert it.&#xD;		if (replace) {&#xD;			nodes[idx] = node;&#xD;		}&#xD;	}&#xD;&#xD;	return nodes;&#xD;};&#xD;&#xD;// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition&#xD;var POSITION = {&#xD;	DISCONNECTED: 1,&#xD;	PRECEDING: 2,&#xD;	FOLLOWING: 4,&#xD;	CONTAINS: 8,&#xD;	CONTAINED_BY: 16&#xD;};&#xD;&#xD;// Compare the position of one node against another node in any other document.&#xD;// The return value is a bitmask with the following values:&#xD;//&#xD;// document order:&#xD;// &gt; There is an ordering, document order, defined on all the nodes in the&#xD;// &gt; document corresponding to the order in which the first character of the&#xD;// &gt; XML representation of each node occurs in the XML representation of the&#xD;// &gt; document after expansion of general entities. Thus, the document element&#xD;// &gt; node will be the first node. Element nodes occur before their children.&#xD;// &gt; Thus, document order orders element nodes in order of the occurrence of&#xD;// &gt; their start-tag in the XML (after expansion of entities). The attribute&#xD;// &gt; nodes of an element occur after the element and before its children. The&#xD;// &gt; relative order of attribute nodes is implementation-dependent./&#xD;// Source:&#xD;// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order&#xD;//&#xD;// @argument {Node} nodaA The first node to use in the comparison&#xD;// @argument {Node} nodeB The second node to use in the comparison&#xD;//&#xD;// @return {Number} A bitmask describing the input nodes&apos; relative position.&#xD;//         See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for&#xD;//         a description of these values.&#xD;var comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {&#xD;	var aParents = [];&#xD;	var bParents = [];&#xD;	var current, sharedParent, siblings, aSibling, bSibling, idx;&#xD;&#xD;	if (nodeA === nodeB) {&#xD;		return 0;&#xD;	}&#xD;&#xD;	current = nodeA;&#xD;	while (current) {&#xD;		aParents.unshift(current);&#xD;		current = current.parent;&#xD;	}&#xD;	current = nodeB;&#xD;	while (current) {&#xD;		bParents.unshift(current);&#xD;		current = current.parent;&#xD;	}&#xD;&#xD;	idx = 0;&#xD;	while (aParents[idx] === bParents[idx]) {&#xD;		idx++;&#xD;	}&#xD;&#xD;	if (idx === 0) {&#xD;		return POSITION.DISCONNECTED;&#xD;	}&#xD;&#xD;	sharedParent = aParents[idx - 1];&#xD;	siblings = sharedParent.children;&#xD;	aSibling = aParents[idx];&#xD;	bSibling = bParents[idx];&#xD;&#xD;	if (siblings.indexOf(aSibling) &gt; siblings.indexOf(bSibling)) {&#xD;		if (sharedParent === nodeB) {&#xD;			return POSITION.FOLLOWING | POSITION.CONTAINED_BY;&#xD;		}&#xD;		return POSITION.FOLLOWING;&#xD;	} else {&#xD;		if (sharedParent === nodeA) {&#xD;			return POSITION.PRECEDING | POSITION.CONTAINS;&#xD;		}&#xD;		return POSITION.PRECEDING;&#xD;	}&#xD;};&#xD;&#xD;// Sort an array of nodes based on their relative position in the document and&#xD;// remove any duplicate nodes. If the array contains nodes that do not belong&#xD;// to the same document, sort order is unspecified.&#xD;//&#xD;// @argument {Array} nodes Array of DOM nodes&#xD;//&#xD;// @returns {Array} collection of unique nodes, sorted in document order&#xD;exports.uniqueSort = function(nodes) {&#xD;	var idx = nodes.length, node, position;&#xD;&#xD;	nodes = nodes.slice();&#xD;&#xD;	while (--idx &gt; -1) {&#xD;		node = nodes[idx];&#xD;		position = nodes.indexOf(node);&#xD;		if (position &gt; -1 &amp;&amp; position &lt; idx) {&#xD;			nodes.splice(idx, 1);&#xD;		}&#xD;	}&#xD;	nodes.sort(function(a, b) {&#xD;		var relative = comparePos(a, b);&#xD;		if (relative &amp; POSITION.PRECEDING) {&#xD;			return -1;&#xD;		} else if (relative &amp; POSITION.FOLLOWING) {&#xD;			return 1;&#xD;		}&#xD;		return 0;&#xD;	});&#xD;&#xD;	return nodes;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 75 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ElementType = __webpack_require__(11);&#xD;var isTag = exports.isTag = ElementType.isTag;&#xD;&#xD;exports.testElement = function(options, element){&#xD;	for(var key in options){&#xD;		if(!options.hasOwnProperty(key));&#xD;		else if(key === "tag_name"){&#xD;			if(!isTag(element) || !options.tag_name(element.name)){&#xD;				return false;&#xD;			}&#xD;		} else if(key === "tag_type"){&#xD;			if(!options.tag_type(element.type)) return false;&#xD;		} else if(key === "tag_contains"){&#xD;			if(isTag(element) || !options.tag_contains(element.data)){&#xD;				return false;&#xD;			}&#xD;		} else if(!element.attribs || !options[key](element.attribs[key])){&#xD;			return false;&#xD;		}&#xD;	}&#xD;	return true;&#xD;};&#xD;&#xD;var Checks = {&#xD;	tag_name: function(name){&#xD;		if(typeof name === "function"){&#xD;			return function(elem){ return isTag(elem) &amp;&amp; name(elem.name); };&#xD;		} else if(name === "*"){&#xD;			return isTag;&#xD;		} else {&#xD;			return function(elem){ return isTag(elem) &amp;&amp; elem.name === name; };&#xD;		}&#xD;	},&#xD;	tag_type: function(type){&#xD;		if(typeof type === "function"){&#xD;			return function(elem){ return type(elem.type); };&#xD;		} else {&#xD;			return function(elem){ return elem.type === type; };&#xD;		}&#xD;	},&#xD;	tag_contains: function(data){&#xD;		if(typeof data === "function"){&#xD;			return function(elem){ return !isTag(elem) &amp;&amp; data(elem.data); };&#xD;		} else {&#xD;			return function(elem){ return !isTag(elem) &amp;&amp; elem.data === data; };&#xD;		}&#xD;	}&#xD;};&#xD;&#xD;function getAttribCheck(attrib, value){&#xD;	if(typeof value === "function"){&#xD;		return function(elem){ return elem.attribs &amp;&amp; value(elem.attribs[attrib]); };&#xD;	} else {&#xD;		return function(elem){ return elem.attribs &amp;&amp; elem.attribs[attrib] === value; };&#xD;	}&#xD;}&#xD;&#xD;function combineFuncs(a, b){&#xD;	return function(elem){&#xD;		return a(elem) || b(elem);&#xD;	};&#xD;}&#xD;&#xD;exports.getElements = function(options, element, recurse, limit){&#xD;	var funcs = Object.keys(options).map(function(key){&#xD;		var value = options[key];&#xD;		return key in Checks ? Checks[key](value) : getAttribCheck(key, value);&#xD;	});&#xD;&#xD;	return funcs.length === 0 ? [] : this.filter(&#xD;		funcs.reduce(combineFuncs),&#xD;		element, recurse, limit&#xD;	);&#xD;};&#xD;&#xD;exports.getElementById = function(id, element, recurse){&#xD;	if(!Array.isArray(element)) element = [element];&#xD;	return this.findOne(getAttribCheck("id", id), element, recurse !== false);&#xD;};&#xD;&#xD;exports.getElementsByTagName = function(name, element, recurse, limit){&#xD;	return this.filter(Checks.tag_name(name), element, recurse, limit);&#xD;};&#xD;&#xD;exports.getElementsByTagType = function(type, element, recurse, limit){&#xD;	return this.filter(Checks.tag_type(type), element, recurse, limit);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 76 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;exports.removeElement = function(elem){&#xD;	if(elem.prev) elem.prev.next = elem.next;&#xD;	if(elem.next) elem.next.prev = elem.prev;&#xD;&#xD;	if(elem.parent){&#xD;		var childs = elem.parent.children;&#xD;		childs.splice(childs.lastIndexOf(elem), 1);&#xD;	}&#xD;};&#xD;&#xD;exports.replaceElement = function(elem, replacement){&#xD;	var prev = replacement.prev = elem.prev;&#xD;	if(prev){&#xD;		prev.next = replacement;&#xD;	}&#xD;&#xD;	var next = replacement.next = elem.next;&#xD;	if(next){&#xD;		next.prev = replacement;&#xD;	}&#xD;&#xD;	var parent = replacement.parent = elem.parent;&#xD;	if(parent){&#xD;		var childs = parent.children;&#xD;		childs[childs.lastIndexOf(elem)] = replacement;&#xD;	}&#xD;};&#xD;&#xD;exports.appendChild = function(elem, child){&#xD;	child.parent = elem;&#xD;&#xD;	if(elem.children.push(child) !== 1){&#xD;		var sibling = elem.children[elem.children.length - 2];&#xD;		sibling.next = child;&#xD;		child.prev = sibling;&#xD;		child.next = null;&#xD;	}&#xD;};&#xD;&#xD;exports.append = function(elem, next){&#xD;	var parent = elem.parent,&#xD;		currNext = elem.next;&#xD;&#xD;	next.next = currNext;&#xD;	next.prev = elem;&#xD;	elem.next = next;&#xD;	next.parent = parent;&#xD;&#xD;	if(currNext){&#xD;		currNext.prev = next;&#xD;		if(parent){&#xD;			var childs = parent.children;&#xD;			childs.splice(childs.lastIndexOf(currNext), 0, next);&#xD;		}&#xD;	} else if(parent){&#xD;		parent.children.push(next);&#xD;	}&#xD;};&#xD;&#xD;exports.prepend = function(elem, prev){&#xD;	var parent = elem.parent;&#xD;	if(parent){&#xD;		var childs = parent.children;&#xD;		childs.splice(childs.lastIndexOf(elem), 0, prev);&#xD;	}&#xD;&#xD;	if(elem.prev){&#xD;		elem.prev.next = prev;&#xD;	}&#xD;	&#xD;	prev.parent = parent;&#xD;	prev.prev = elem.prev;&#xD;	prev.next = elem;&#xD;	elem.prev = prev;&#xD;};&#xD;&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 77 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var isTag = __webpack_require__(11).isTag;&#xD;&#xD;module.exports = {&#xD;	filter: filter,&#xD;	find: find,&#xD;	findOneChild: findOneChild,&#xD;	findOne: findOne,&#xD;	existsOne: existsOne,&#xD;	findAll: findAll&#xD;};&#xD;&#xD;function filter(test, element, recurse, limit){&#xD;	if(!Array.isArray(element)) element = [element];&#xD;&#xD;	if(typeof limit !== "number" || !isFinite(limit)){&#xD;		limit = Infinity;&#xD;	}&#xD;	return find(test, element, recurse !== false, limit);&#xD;}&#xD;&#xD;function find(test, elems, recurse, limit){&#xD;	var result = [], childs;&#xD;&#xD;	for(var i = 0, j = elems.length; i &lt; j; i++){&#xD;		if(test(elems[i])){&#xD;			result.push(elems[i]);&#xD;			if(--limit &lt;= 0) break;&#xD;		}&#xD;&#xD;		childs = elems[i].children;&#xD;		if(recurse &amp;&amp; childs &amp;&amp; childs.length &gt; 0){&#xD;			childs = find(test, childs, recurse, limit);&#xD;			result = result.concat(childs);&#xD;			limit -= childs.length;&#xD;			if(limit &lt;= 0) break;&#xD;		}&#xD;	}&#xD;&#xD;	return result;&#xD;}&#xD;&#xD;function findOneChild(test, elems){&#xD;	for(var i = 0, l = elems.length; i &lt; l; i++){&#xD;		if(test(elems[i])) return elems[i];&#xD;	}&#xD;&#xD;	return null;&#xD;}&#xD;&#xD;function findOne(test, elems){&#xD;	var elem = null;&#xD;&#xD;	for(var i = 0, l = elems.length; i &lt; l &amp;&amp; !elem; i++){&#xD;		if(!isTag(elems[i])){&#xD;			continue;&#xD;		} else if(test(elems[i])){&#xD;			elem = elems[i];&#xD;		} else if(elems[i].children.length &gt; 0){&#xD;			elem = findOne(test, elems[i].children);&#xD;		}&#xD;	}&#xD;&#xD;	return elem;&#xD;}&#xD;&#xD;function existsOne(test, elems){&#xD;	for(var i = 0, l = elems.length; i &lt; l; i++){&#xD;		if(&#xD;			isTag(elems[i]) &amp;&amp; (&#xD;				test(elems[i]) || (&#xD;					elems[i].children.length &gt; 0 &amp;&amp;&#xD;					existsOne(test, elems[i].children)&#xD;				)&#xD;			)&#xD;		){&#xD;			return true;&#xD;		}&#xD;	}&#xD;&#xD;	return false;&#xD;}&#xD;&#xD;function findAll(test, elems){&#xD;	var result = [];&#xD;	for(var i = 0, j = elems.length; i &lt; j; i++){&#xD;		if(!isTag(elems[i])) continue;&#xD;		if(test(elems[i])) result.push(elems[i]);&#xD;&#xD;		if(elems[i].children.length &gt; 0){&#xD;			result = result.concat(findAll(test, elems[i].children));&#xD;		}&#xD;	}&#xD;	return result;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 78 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ElementType = __webpack_require__(11),&#xD;    getOuterHTML = __webpack_require__(69),&#xD;    isTag = ElementType.isTag;&#xD;&#xD;module.exports = {&#xD;	getInnerHTML: getInnerHTML,&#xD;	getOuterHTML: getOuterHTML,&#xD;	getText: getText&#xD;};&#xD;&#xD;function getInnerHTML(elem, opts){&#xD;	return elem.children ? elem.children.map(function(elem){&#xD;		return getOuterHTML(elem, opts);&#xD;	}).join("") : "";&#xD;}&#xD;&#xD;function getText(elem){&#xD;	if(Array.isArray(elem)) return elem.map(getText).join("");&#xD;	if(isTag(elem) || elem.type === ElementType.CDATA) return getText(elem.children);&#xD;	if(elem.type === ElementType.Text) return elem.data;&#xD;	return "";&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 79 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var getChildren = exports.getChildren = function(elem){&#xD;	return elem.children;&#xD;};&#xD;&#xD;var getParent = exports.getParent = function(elem){&#xD;	return elem.parent;&#xD;};&#xD;&#xD;exports.getSiblings = function(elem){&#xD;	var parent = getParent(elem);&#xD;	return parent ? getChildren(parent) : [elem];&#xD;};&#xD;&#xD;exports.getAttributeValue = function(elem, name){&#xD;	return elem.attribs &amp;&amp; elem.attribs[name];&#xD;};&#xD;&#xD;exports.hasAttrib = function(elem, name){&#xD;	return !!elem.attribs &amp;&amp; hasOwnProperty.call(elem.attribs, name);&#xD;};&#xD;&#xD;exports.getName = function(elem){&#xD;	return elem.name;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 80 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var encode = __webpack_require__(82),&#xD;    decode = __webpack_require__(81);&#xD;&#xD;exports.decode = function(data, level){&#xD;	return (!level || level &lt;= 0 ? decode.XML : decode.HTML)(data);&#xD;};&#xD;&#xD;exports.decodeStrict = function(data, level){&#xD;	return (!level || level &lt;= 0 ? decode.XML : decode.HTMLStrict)(data);&#xD;};&#xD;&#xD;exports.encode = function(data, level){&#xD;	return (!level || level &lt;= 0 ? encode.XML : encode.HTML)(data);&#xD;};&#xD;&#xD;exports.encodeXML = encode.XML;&#xD;&#xD;exports.encodeHTML4 =&#xD;exports.encodeHTML5 =&#xD;exports.encodeHTML  = encode.HTML;&#xD;&#xD;exports.decodeXML =&#xD;exports.decodeXMLStrict = decode.XML;&#xD;&#xD;exports.decodeHTML4 =&#xD;exports.decodeHTML5 =&#xD;exports.decodeHTML = decode.HTML;&#xD;&#xD;exports.decodeHTML4Strict =&#xD;exports.decodeHTML5Strict =&#xD;exports.decodeHTMLStrict = decode.HTMLStrict;&#xD;&#xD;exports.escape = encode.escape;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 81 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var entityMap = __webpack_require__(24),&#xD;    legacyMap = __webpack_require__(33),&#xD;    xmlMap    = __webpack_require__(25),&#xD;    decodeCodePoint = __webpack_require__(32);&#xD;&#xD;var decodeXMLStrict  = getStrictDecoder(xmlMap),&#xD;    decodeHTMLStrict = getStrictDecoder(entityMap);&#xD;&#xD;function getStrictDecoder(map){&#xD;	var keys = Object.keys(map).join("|"),&#xD;	    replace = getReplacer(map);&#xD;&#xD;	keys += "|#[xX][\\da-fA-F]+|#\\d+";&#xD;&#xD;	var re = new RegExp("&amp;(?:" + keys + ");", "g");&#xD;&#xD;	return function(str){&#xD;		return String(str).replace(re, replace);&#xD;	};&#xD;}&#xD;&#xD;var decodeHTML = (function(){&#xD;	var legacy = Object.keys(legacyMap)&#xD;		.sort(sorter);&#xD;&#xD;	var keys = Object.keys(entityMap)&#xD;		.sort(sorter);&#xD;&#xD;	for(var i = 0, j = 0; i &lt; keys.length; i++){&#xD;		if(legacy[j] === keys[i]){&#xD;			keys[i] += ";?";&#xD;			j++;&#xD;		} else {&#xD;			keys[i] += ";";&#xD;		}&#xD;	}&#xD;&#xD;	var re = new RegExp("&amp;(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"),&#xD;	    replace = getReplacer(entityMap);&#xD;&#xD;	function replacer(str){&#xD;		if(str.substr(-1) !== ";") str += ";";&#xD;		return replace(str);&#xD;	}&#xD;&#xD;	//TODO consider creating a merged map&#xD;	return function(str){&#xD;		return String(str).replace(re, replacer);&#xD;	};&#xD;}());&#xD;&#xD;function sorter(a, b){&#xD;	return a &lt; b ? 1 : -1;&#xD;}&#xD;&#xD;function getReplacer(map){&#xD;	return function replace(str){&#xD;		if(str.charAt(1) === "#"){&#xD;			if(str.charAt(2) === "X" || str.charAt(2) === "x"){&#xD;				return decodeCodePoint(parseInt(str.substr(3), 16));&#xD;			}&#xD;			return decodeCodePoint(parseInt(str.substr(2), 10));&#xD;		}&#xD;		return map[str.slice(1, -1)];&#xD;	};&#xD;}&#xD;&#xD;module.exports = {&#xD;	XML: decodeXMLStrict,&#xD;	HTML: decodeHTML,&#xD;	HTMLStrict: decodeHTMLStrict&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 82 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inverseXML = getInverseObj(__webpack_require__(25)),&#xD;    xmlReplacer = getInverseReplacer(inverseXML);&#xD;&#xD;exports.XML = getInverse(inverseXML, xmlReplacer);&#xD;&#xD;var inverseHTML = getInverseObj(__webpack_require__(24)),&#xD;    htmlReplacer = getInverseReplacer(inverseHTML);&#xD;&#xD;exports.HTML = getInverse(inverseHTML, htmlReplacer);&#xD;&#xD;function getInverseObj(obj){&#xD;	return Object.keys(obj).sort().reduce(function(inverse, name){&#xD;		inverse[obj[name]] = "&amp;" + name + ";";&#xD;		return inverse;&#xD;	}, {});&#xD;}&#xD;&#xD;function getInverseReplacer(inverse){&#xD;	var single = [],&#xD;	    multiple = [];&#xD;&#xD;	Object.keys(inverse).forEach(function(k){&#xD;		if(k.length === 1){&#xD;			single.push("\\" + k);&#xD;		} else {&#xD;			multiple.push(k);&#xD;		}&#xD;	});&#xD;&#xD;	//TODO add ranges&#xD;	multiple.unshift("[" + single.join("") + "]");&#xD;&#xD;	return new RegExp(multiple.join("|"), "g");&#xD;}&#xD;&#xD;var re_nonASCII = /[^\0-\x7F]/g,&#xD;    re_astralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;&#xD;&#xD;function singleCharReplacer(c){&#xD;	return "&amp;#x" + c.charCodeAt(0).toString(16).toUpperCase() + ";";&#xD;}&#xD;&#xD;function astralReplacer(c){&#xD;	// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae&#xD;	var high = c.charCodeAt(0);&#xD;	var low  = c.charCodeAt(1);&#xD;	var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;&#xD;	return "&amp;#x" + codePoint.toString(16).toUpperCase() + ";";&#xD;}&#xD;&#xD;function getInverse(inverse, re){&#xD;	function func(name){&#xD;		return inverse[name];&#xD;	}&#xD;&#xD;	return function(data){&#xD;		return data&#xD;				.replace(re, func)&#xD;				.replace(re_astralSymbols, astralReplacer)&#xD;				.replace(re_nonASCII, singleCharReplacer);&#xD;	};&#xD;}&#xD;&#xD;var re_xmlChars = getInverseReplacer(inverseXML);&#xD;&#xD;function escapeXML(data){&#xD;	return data&#xD;			.replace(re_xmlChars, singleCharReplacer)&#xD;			.replace(re_astralSymbols, astralReplacer)&#xD;			.replace(re_nonASCII, singleCharReplacer);&#xD;}&#xD;&#xD;exports.escape = escapeXML;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 83 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"0": 65533,&#xD;	"128": 8364,&#xD;	"130": 8218,&#xD;	"131": 402,&#xD;	"132": 8222,&#xD;	"133": 8230,&#xD;	"134": 8224,&#xD;	"135": 8225,&#xD;	"136": 710,&#xD;	"137": 8240,&#xD;	"138": 352,&#xD;	"139": 8249,&#xD;	"140": 338,&#xD;	"142": 381,&#xD;	"145": 8216,&#xD;	"146": 8217,&#xD;	"147": 8220,&#xD;	"148": 8221,&#xD;	"149": 8226,&#xD;	"150": 8211,&#xD;	"151": 8212,&#xD;	"152": 732,&#xD;	"153": 8482,&#xD;	"154": 353,&#xD;	"155": 8250,&#xD;	"156": 339,&#xD;	"158": 382,&#xD;	"159": 376&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 84 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = CollectingHandler;&#xD;&#xD;function CollectingHandler(cbs){&#xD;	this._cbs = cbs || {};&#xD;	this.events = [];&#xD;}&#xD;&#xD;var EVENTS = __webpack_require__(5).EVENTS;&#xD;Object.keys(EVENTS).forEach(function(name){&#xD;	if(EVENTS[name] === 0){&#xD;		name = "on" + name;&#xD;		CollectingHandler.prototype[name] = function(){&#xD;			this.events.push([name]);&#xD;			if(this._cbs[name]) this._cbs[name]();&#xD;		};&#xD;	} else if(EVENTS[name] === 1){&#xD;		name = "on" + name;&#xD;		CollectingHandler.prototype[name] = function(a){&#xD;			this.events.push([name, a]);&#xD;			if(this._cbs[name]) this._cbs[name](a);&#xD;		};&#xD;	} else if(EVENTS[name] === 2){&#xD;		name = "on" + name;&#xD;		CollectingHandler.prototype[name] = function(a, b){&#xD;			this.events.push([name, a, b]);&#xD;			if(this._cbs[name]) this._cbs[name](a, b);&#xD;		};&#xD;	} else {&#xD;		throw Error("wrong number of arguments");&#xD;	}&#xD;});&#xD;&#xD;CollectingHandler.prototype.onreset = function(){&#xD;	this.events = [];&#xD;	if(this._cbs.onreset) this._cbs.onreset();&#xD;};&#xD;&#xD;CollectingHandler.prototype.restart = function(){&#xD;	if(this._cbs.onreset) this._cbs.onreset();&#xD;&#xD;	for(var i = 0, len = this.events.length; i &lt; len; i++){&#xD;		if(this._cbs[this.events[i][0]]){&#xD;&#xD;			var num = this.events[i].length;&#xD;&#xD;			if(num === 1){&#xD;				this._cbs[this.events[i][0]]();&#xD;			} else if(num === 2){&#xD;				this._cbs[this.events[i][0]](this.events[i][1]);&#xD;			} else {&#xD;				this._cbs[this.events[i][0]](this.events[i][1], this.events[i][2]);&#xD;			}&#xD;		}&#xD;	}&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 85 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var index = __webpack_require__(5),&#xD;    DomHandler = index.DomHandler,&#xD;    DomUtils = index.DomUtils;&#xD;&#xD;//TODO: make this a streamable handler&#xD;function FeedHandler(callback, options){&#xD;	this.init(callback, options);&#xD;}&#xD;&#xD;__webpack_require__(2)(FeedHandler, DomHandler);&#xD;&#xD;FeedHandler.prototype.init = DomHandler;&#xD;&#xD;function getElements(what, where){&#xD;	return DomUtils.getElementsByTagName(what, where, true);&#xD;}&#xD;function getOneElement(what, where){&#xD;	return DomUtils.getElementsByTagName(what, where, true, 1)[0];&#xD;}&#xD;function fetch(what, where, recurse){&#xD;	return DomUtils.getText(&#xD;		DomUtils.getElementsByTagName(what, where, recurse, 1)&#xD;	).trim();&#xD;}&#xD;&#xD;function addConditionally(obj, prop, what, where, recurse){&#xD;	var tmp = fetch(what, where, recurse);&#xD;	if(tmp) obj[prop] = tmp;&#xD;}&#xD;&#xD;var isValidFeed = function(value){&#xD;	return value === "rss" || value === "feed" || value === "rdf:RDF";&#xD;};&#xD;&#xD;FeedHandler.prototype.onend = function(){&#xD;	var feed = {},&#xD;	    feedRoot = getOneElement(isValidFeed, this.dom),&#xD;	    tmp, childs;&#xD;&#xD;	if(feedRoot){&#xD;		if(feedRoot.name === "feed"){&#xD;			childs = feedRoot.children;&#xD;&#xD;			feed.type = "atom";&#xD;			addConditionally(feed, "id", "id", childs);&#xD;			addConditionally(feed, "title", "title", childs);&#xD;			if((tmp = getOneElement("link", childs)) &amp;&amp; (tmp = tmp.attribs) &amp;&amp; (tmp = tmp.href)) feed.link = tmp;&#xD;			addConditionally(feed, "description", "subtitle", childs);&#xD;			if((tmp = fetch("updated", childs))) feed.updated = new Date(tmp);&#xD;			addConditionally(feed, "author", "email", childs, true);&#xD;&#xD;			feed.items = getElements("entry", childs).map(function(item){&#xD;				var entry = {}, tmp;&#xD;&#xD;				item = item.children;&#xD;&#xD;				addConditionally(entry, "id", "id", item);&#xD;				addConditionally(entry, "title", "title", item);&#xD;				if((tmp = getOneElement("link", item)) &amp;&amp; (tmp = tmp.attribs) &amp;&amp; (tmp = tmp.href)) entry.link = tmp;&#xD;				if((tmp = fetch("summary", item) || fetch("content", item))) entry.description = tmp;&#xD;				if((tmp = fetch("updated", item))) entry.pubDate = new Date(tmp);&#xD;				return entry;&#xD;			});&#xD;		} else {&#xD;			childs = getOneElement("channel", feedRoot.children).children;&#xD;&#xD;			feed.type = feedRoot.name.substr(0, 3);&#xD;			feed.id = "";&#xD;			addConditionally(feed, "title", "title", childs);&#xD;			addConditionally(feed, "link", "link", childs);&#xD;			addConditionally(feed, "description", "description", childs);&#xD;			if((tmp = fetch("lastBuildDate", childs))) feed.updated = new Date(tmp);&#xD;			addConditionally(feed, "author", "managingEditor", childs, true);&#xD;&#xD;			feed.items = getElements("item", feedRoot.children).map(function(item){&#xD;				var entry = {}, tmp;&#xD;&#xD;				item = item.children;&#xD;&#xD;				addConditionally(entry, "id", "guid", item);&#xD;				addConditionally(entry, "title", "title", item);&#xD;				addConditionally(entry, "link", "link", item);&#xD;				addConditionally(entry, "description", "description", item);&#xD;				if((tmp = fetch("pubDate", item))) entry.pubDate = new Date(tmp);&#xD;				return entry;&#xD;			});&#xD;		}&#xD;	}&#xD;	this.dom = feed;&#xD;	DomHandler.prototype._handleCallback.call(&#xD;		this, feedRoot ? null : Error("couldn&apos;t find root of feed")&#xD;	);&#xD;};&#xD;&#xD;module.exports = FeedHandler;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 86 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = ProxyHandler;&#xD;&#xD;function ProxyHandler(cbs){&#xD;	this._cbs = cbs || {};&#xD;}&#xD;&#xD;var EVENTS = __webpack_require__(5).EVENTS;&#xD;Object.keys(EVENTS).forEach(function(name){&#xD;	if(EVENTS[name] === 0){&#xD;		name = "on" + name;&#xD;		ProxyHandler.prototype[name] = function(){&#xD;			if(this._cbs[name]) this._cbs[name]();&#xD;		};&#xD;	} else if(EVENTS[name] === 1){&#xD;		name = "on" + name;&#xD;		ProxyHandler.prototype[name] = function(a){&#xD;			if(this._cbs[name]) this._cbs[name](a);&#xD;		};&#xD;	} else if(EVENTS[name] === 2){&#xD;		name = "on" + name;&#xD;		ProxyHandler.prototype[name] = function(a, b){&#xD;			if(this._cbs[name]) this._cbs[name](a, b);&#xD;		};&#xD;	} else {&#xD;		throw Error("wrong number of arguments");&#xD;	}&#xD;});&#xD;&#xD;/***/ }),&#xD;/* 87 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = Stream;&#xD;&#xD;var Parser = __webpack_require__(36);&#xD;&#xD;function Stream(options){&#xD;	Parser.call(this, new Cbs(this), options);&#xD;}&#xD;&#xD;__webpack_require__(2)(Stream, Parser);&#xD;&#xD;Stream.prototype.readable = true;&#xD;&#xD;function Cbs(scope){&#xD;	this.scope = scope;&#xD;}&#xD;&#xD;var EVENTS = __webpack_require__(5).EVENTS;&#xD;&#xD;Object.keys(EVENTS).forEach(function(name){&#xD;	if(EVENTS[name] === 0){&#xD;		Cbs.prototype["on" + name] = function(){&#xD;			this.scope.emit(name);&#xD;		};&#xD;	} else if(EVENTS[name] === 1){&#xD;		Cbs.prototype["on" + name] = function(a){&#xD;			this.scope.emit(name, a);&#xD;		};&#xD;	} else if(EVENTS[name] === 2){&#xD;		Cbs.prototype["on" + name] = function(a, b){&#xD;			this.scope.emit(name, a, b);&#xD;		};&#xD;	} else {&#xD;		throw Error("wrong number of arguments!");&#xD;	}&#xD;});&#xD;&#xD;/***/ }),&#xD;/* 88 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;if (typeof Object.create === &apos;function&apos;) {&#xD;  // implementation from standard node.js &apos;util&apos; module&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    ctor.prototype = Object.create(superCtor.prototype, {&#xD;      constructor: {&#xD;        value: ctor,&#xD;        enumerable: false,&#xD;        writable: true,&#xD;        configurable: true&#xD;      }&#xD;    });&#xD;  };&#xD;} else {&#xD;  // old school shim for old browsers&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    var TempCtor = function () {}&#xD;    TempCtor.prototype = superCtor.prototype&#xD;    ctor.prototype = new TempCtor()&#xD;    ctor.prototype.constructor = ctor&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 89 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var toString = {}.toString;&#xD;&#xD;module.exports = Array.isArray || function (arr) {&#xD;  return toString.call(arr) == &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 90 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function M() { this._events = {}; }&#xD;M.prototype = {&#xD;  on: function(ev, cb) {&#xD;    this._events || (this._events = {});&#xD;    var e = this._events;&#xD;    (e[ev] || (e[ev] = [])).push(cb);&#xD;    return this;&#xD;  },&#xD;  removeListener: function(ev, cb) {&#xD;    var e = this._events[ev] || [], i;&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }&#xD;    }&#xD;  },&#xD;  removeAllListeners: function(ev) {&#xD;    if(!ev) { this._events = {}; }&#xD;    else { this._events[ev] &amp;&amp; (this._events[ev] = []); }&#xD;  },&#xD;  listeners: function(ev) {&#xD;    return (this._events ? this._events[ev] || [] : []);&#xD;  },&#xD;  emit: function(ev) {&#xD;    this._events || (this._events = {});&#xD;    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      e[i].apply(this, args);&#xD;    }&#xD;    return this;&#xD;  },&#xD;  when: function(ev, cb) {&#xD;    return this.once(ev, cb, true);&#xD;  },&#xD;  once: function(ev, cb, when) {&#xD;    if(!cb) return this;&#xD;    function c() {&#xD;      if(!when) this.removeListener(ev, c);&#xD;      if(cb.apply(this, arguments) &amp;&amp; when) this.removeListener(ev, c);&#xD;    }&#xD;    c.cb = cb;&#xD;    this.on(ev, c);&#xD;    return this;&#xD;  }&#xD;};&#xD;M.mixin = function(dest) {&#xD;  var o = M.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;module.exports = M;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 91 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// default filter&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };&#xD;&#xD;function Filter() {&#xD;  this.enabled = true;&#xD;  this.defaultResult = true;&#xD;  this.clear();&#xD;}&#xD;&#xD;Transform.mixin(Filter);&#xD;&#xD;// allow all matching, with level &gt;= given level&#xD;Filter.prototype.allow = function(name, level) {&#xD;  this._white.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;// deny all matching, with level &lt;= given level&#xD;Filter.prototype.deny = function(name, level) {&#xD;  this._black.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;Filter.prototype.clear = function() {&#xD;  this._white = [];&#xD;  this._black = [];&#xD;  return this;&#xD;};&#xD;&#xD;function test(rule, name) {&#xD;  // use .test for RegExps&#xD;  return (rule.n.test ? rule.n.test(name) : rule.n == name);&#xD;};&#xD;&#xD;Filter.prototype.test = function(name, level) {&#xD;  var i, len = Math.max(this._white.length, this._black.length);&#xD;  for(i = 0; i &lt; len; i++) {&#xD;    if(this._white[i] &amp;&amp; test(this._white[i], name) &amp;&amp; levelMap[level] &gt;= this._white[i].l) {&#xD;      return true;&#xD;    }&#xD;    if(this._black[i] &amp;&amp; test(this._black[i], name) &amp;&amp; levelMap[level] &lt;= this._black[i].l) {&#xD;      return false;&#xD;    }&#xD;  }&#xD;  return this.defaultResult;&#xD;};&#xD;&#xD;Filter.prototype.write = function(name, level, args) {&#xD;  if(!this.enabled || this.test(name, level)) {&#xD;    return this.emit(&apos;item&apos;, name, level, args);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Filter;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 92 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(37);&#xD;&#xD;var consoleLogger = __webpack_require__(93);&#xD;&#xD;// if we are running inside Electron then use the web version of console.js&#xD;var isElectron = (typeof window !== &apos;undefined&apos; &amp;&amp; window.process &amp;&amp; window.process.type === &apos;renderer&apos;);&#xD;if (isElectron) {&#xD;  consoleLogger = __webpack_require__(103).minilog;&#xD;}&#xD;&#xD;// intercept the pipe method and transparently wrap the stringifier, if the&#xD;// destination is a Node core stream&#xD;&#xD;module.exports.Stringifier = __webpack_require__(102);&#xD;&#xD;var oldPipe = module.exports.pipe;&#xD;module.exports.pipe = function(dest) {&#xD;  if(dest instanceof __webpack_require__(16)) {&#xD;    return oldPipe.call(module.exports, new (module.exports.Stringifier)).pipe(dest);&#xD;  } else {&#xD;    return oldPipe.call(module.exports, dest);&#xD;  }&#xD;};&#xD;&#xD;module.exports.defaultBackend = consoleLogger;&#xD;module.exports.defaultFormatter = consoleLogger.formatMinilog;&#xD;&#xD;module.exports.backends = {&#xD;  redis: __webpack_require__(101),&#xD;  nodeConsole: consoleLogger,&#xD;  console: consoleLogger&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 93 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;function ConsoleBackend() { }&#xD;&#xD;Transform.mixin(ConsoleBackend);&#xD;&#xD;ConsoleBackend.prototype.write = function() {&#xD;  console.log.apply(console, arguments);&#xD;};&#xD;&#xD;var e = new ConsoleBackend();&#xD;&#xD;var levelMap = __webpack_require__(6).levelMap;&#xD;&#xD;e.filterEnv = function() {&#xD;  console.error(&apos;Minilog.backends.console.filterEnv is deprecated in Minilog v2.&apos;);&#xD;  // return the instance of Minilog&#xD;  return __webpack_require__(37);&#xD;};&#xD;&#xD;e.formatters = [&#xD;    &apos;formatClean&apos;, &apos;formatColor&apos;, &apos;formatNpm&apos;,&#xD;    &apos;formatLearnboost&apos;, &apos;formatMinilog&apos;, &apos;formatWithStack&apos;, &apos;formatTime&apos;&#xD;];&#xD;&#xD;e.formatClean = new (__webpack_require__(94));&#xD;e.formatColor = new (__webpack_require__(95));&#xD;e.formatNpm = new (__webpack_require__(98));&#xD;e.formatLearnboost = new (__webpack_require__(96));&#xD;e.formatMinilog = new (__webpack_require__(97));&#xD;e.formatWithStack = new (__webpack_require__(100));&#xD;e.formatTime = new (__webpack_require__(99));&#xD;&#xD;module.exports = e;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 94 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;function FormatClean() {}&#xD;&#xD;Transform.mixin(FormatClean);&#xD;&#xD;FormatClean.prototype.write = function(name, level, args) {&#xD;  function pad(s) { return (s.toString().length == 1? &apos;0&apos;+s : s); }&#xD;  this.emit(&apos;item&apos;, (name ? name + &apos; &apos; : &apos;&apos;) + (level ? level + &apos; &apos; : &apos;&apos;) + args.join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatClean;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 95 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    style = __webpack_require__(6).style;&#xD;&#xD;function FormatColor() {}&#xD;&#xD;Transform.mixin(FormatColor);&#xD;&#xD;FormatColor.prototype.write = function(name, level, args) {&#xD;  var colors = { debug: &apos;magenta&apos;, info: &apos;cyan&apos;, warn: &apos;yellow&apos;, error: &apos;red&apos; };&#xD;  function pad(s) { return (s.toString().length == 4? &apos; &apos;+s : s); }&#xD;  this.emit(&apos;item&apos;, (name ? name + &apos; &apos; : &apos;&apos;)&#xD;          + (level ? style(&apos;- &apos; + pad(level.toUpperCase()) + &apos; -&apos;, colors[level]) + &apos; &apos; : &apos;&apos;)&#xD;          + args.join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatColor;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 96 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    style = __webpack_require__(6).style;&#xD;&#xD;function FormatLearnboost() {}&#xD;&#xD;Transform.mixin(FormatLearnboost);&#xD;&#xD;FormatLearnboost.prototype.write = function(name, level, args) {&#xD;  var colors = { debug: &apos;grey&apos;, info: &apos;cyan&apos;, warn: &apos;yellow&apos;, error: &apos;red&apos; };&#xD;  this.emit(&apos;item&apos;, (name ? style(name +&apos; &apos;, &apos;grey&apos;) : &apos;&apos;)&#xD;          + (level ? style(level, colors[level]) + &apos; &apos; : &apos;&apos;)&#xD;          + args.join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatLearnboost;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 97 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    style = __webpack_require__(6).style,&#xD;    util = __webpack_require__(13);&#xD;&#xD;function FormatMinilog() {}&#xD;&#xD;Transform.mixin(FormatMinilog);&#xD;&#xD;FormatMinilog.prototype.write = function(name, level, args) {&#xD;  var colors = { debug: &apos;blue&apos;, info: &apos;cyan&apos;, warn: &apos;yellow&apos;, error: &apos;red&apos; };&#xD;  this.emit(&apos;item&apos;, (name ? style(name +&apos; &apos;, &apos;grey&apos;) : &apos;&apos;)&#xD;            + (level ? style(level, colors[level]) + &apos; &apos; : &apos;&apos;)&#xD;            + args.map(function(item) {&#xD;              return (typeof item == &apos;string&apos; ? item : util.inspect(item, null, 3, true));&#xD;            }).join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatMinilog;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 98 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;function FormatNpm() {}&#xD;&#xD;Transform.mixin(FormatNpm);&#xD;&#xD;FormatNpm.prototype.write = function(name, level, args) {&#xD;  var out = {&#xD;        debug: &apos;\033[34;40m&apos; + &apos;debug&apos; + &apos;\033[39m &apos;,&#xD;        info: &apos;\033[32m&apos; + &apos;info&apos;  + &apos;\033[39m  &apos;,&#xD;        warn: &apos;\033[30;41m&apos; + &apos;WARN&apos; + &apos;\033[0m  &apos;,&#xD;        error: &apos;\033[31;40m&apos; + &apos;ERR!&apos; + &apos;\033[0m  &apos;&#xD;      };&#xD;  this.emit(&apos;item&apos;, (name ? &apos;\033[37;40m&apos;+ name +&apos;\033[0m &apos; : &apos;&apos;)&#xD;          + (level &amp;&amp; out[level]? out[level] : &apos;&apos;)&#xD;          + args.join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatNpm;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 99 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    style = __webpack_require__(6).style,&#xD;    util = __webpack_require__(13);&#xD;&#xD;function FormatTime() {}&#xD;&#xD;function timestamp() {&#xD;  var d = new Date();&#xD;  return (&apos;0&apos; + d.getDate()).slice(-2) + &apos;-&apos; +&#xD;    (&apos;0&apos; + (d.getMonth() + 1)).slice(-2) + &apos;-&apos; +&#xD;    d.getFullYear() + &apos; &apos; +&#xD;    (&apos;0&apos; + d.getHours()).slice(-2) + &apos;:&apos; +&#xD;    (&apos;0&apos; + d.getMinutes()).slice(-2) + &apos;:&apos; +&#xD;    (&apos;0&apos; + d.getSeconds()).slice(-2) + &apos;.&apos; +&#xD;    (&apos;00&apos; + d.getMilliseconds()).slice(-3);&#xD;}&#xD;&#xD;Transform.mixin(FormatTime);&#xD;&#xD;FormatTime.prototype.write = function(name, level, args) {&#xD;  var colors = { debug: &apos;blue&apos;, info: &apos;cyan&apos;, warn: &apos;yellow&apos;, error: &apos;red&apos; };&#xD;  this.emit(&apos;item&apos;, style(timestamp() +&apos; &apos;, &apos;grey&apos;)&#xD;            + (name ? style(name +&apos; &apos;, &apos;grey&apos;) : &apos;&apos;)&#xD;            + (level ? style(level, colors[level]) + &apos; &apos; : &apos;&apos;)&#xD;            + args.map(function(item) {&#xD;              return (typeof item == &apos;string&apos; ? item : util.inspect(item, null, 3, true));&#xD;            }).join(&apos; &apos;));&#xD;};&#xD;&#xD;module.exports = FormatTime;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 100 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    style = __webpack_require__(6).style;&#xD;&#xD;function FormatNpm() {}&#xD;&#xD;Transform.mixin(FormatNpm);&#xD;&#xD;function noop(a){&#xD;  return a;&#xD;}&#xD;&#xD;var types = {&#xD;  string: noop,&#xD;  number: noop,&#xD;  default: JSON.stringify.bind(JSON)&#xD;};&#xD;&#xD;function stringify(args) {&#xD;  return args.map(function(arg) {&#xD;    return (types[typeof arg] || types.default)(arg);&#xD;  });&#xD;}&#xD;&#xD;FormatNpm.prototype.write = function(name, level, args) {&#xD;  var colors = { debug: &apos;magenta&apos;, info: &apos;cyan&apos;, warn: &apos;yellow&apos;, error: &apos;red&apos; };&#xD;  function pad(s) { return (s.toString().length == 4? &apos; &apos;+s : s); }&#xD;  function getStack() {&#xD;    var orig = Error.prepareStackTrace;&#xD;    Error.prepareStackTrace = function (err, stack) {&#xD;      return stack;&#xD;    };&#xD;    var err = new Error;&#xD;    Error.captureStackTrace(err, arguments.callee);&#xD;    var stack = err.stack;&#xD;    Error.prepareStackTrace = orig;&#xD;    return stack;&#xD;  }&#xD;&#xD;  var frame = getStack()[5],&#xD;      fileName = FormatNpm.fullPath ? frame.getFileName() : frame.getFileName().replace(/^.*\/(.+)$/, &apos;/$1&apos;);&#xD;&#xD;  this.emit(&apos;item&apos;, (name ? name + &apos; &apos; : &apos;&apos;)&#xD;          + (level ? style(pad(level), colors[level]) + &apos; &apos; : &apos;&apos;)&#xD;          + style(fileName + ":" + frame.getLineNumber(), &apos;grey&apos;)&#xD;          + &apos; &apos;&#xD;          + stringify(args).join(&apos; &apos;));&#xD;};&#xD;&#xD;FormatNpm.fullPath = true;&#xD;&#xD;module.exports = FormatNpm;&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 101 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function RedisBackend(options) {&#xD;  this.client = options.client;&#xD;  this.key = options.key;&#xD;}&#xD;&#xD;RedisBackend.prototype.write = function(str) {&#xD;  this.client.rpush(this.key, str);&#xD;};&#xD;&#xD;RedisBackend.prototype.end = function() {};&#xD;&#xD;RedisBackend.prototype.clear = function(cb) {&#xD;  this.client.del(this.key, cb);&#xD;};&#xD;&#xD;module.exports = RedisBackend;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 102 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;function Stringify() {}&#xD;&#xD;Transform.mixin(Stringify);&#xD;&#xD;Stringify.prototype.write = function(name, level, args) {&#xD;  var result = [];&#xD;  if(name) result.push(name);&#xD;  if(level) result.push(level);&#xD;  result = result.concat(args);&#xD;  for(var i = 0; i &lt; result.length; i++) {&#xD;    if(result[i] &amp;&amp; typeof result[i] == &apos;object&apos;) {&#xD;      // Buffers in Node.js look bad when stringified&#xD;      if(result[i].constructor &amp;&amp; result[i].constructor.isBuffer) {&#xD;        result[i] = result[i].toString();&#xD;      } else {&#xD;        try {&#xD;          result[i] = JSON.stringify(result[i]);&#xD;        } catch(stringifyError) {&#xD;          // happens when an object has a circular structure&#xD;          // do not throw an error, when printing, the toString() method of the object will be used&#xD;        }&#xD;      }&#xD;    } else {&#xD;      result[i] = result[i];&#xD;    }&#xD;  }&#xD;  this.emit(&apos;item&apos;,  result.join(&apos; &apos;) + &apos;\n&apos;);&#xD;};&#xD;&#xD;module.exports = Stringify;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 103 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0);&#xD;&#xD;var newlines = /\n+$/,&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var i = args.length-1;&#xD;  if (typeof console === &apos;undefined&apos; || !console.log) {&#xD;    return;&#xD;  }&#xD;  if(console.log.apply) {&#xD;    return console.log.apply(console, [name, level].concat(args));&#xD;  } else if(JSON &amp;&amp; JSON.stringify) {&#xD;    // console.log.apply is undefined in IE8 and IE9&#xD;    // for IE8/9: make console.log at least a bit less awful&#xD;    if(args[i] &amp;&amp; typeof args[i] == &apos;string&apos;) {&#xD;      args[i] = args[i].replace(newlines, &apos;&apos;);&#xD;    }&#xD;    try {&#xD;      for(i = 0; i &lt; args.length; i++) {&#xD;        args[i] = JSON.stringify(args[i]);&#xD;      }&#xD;    } catch(e) {}&#xD;    console.log(args.join(&apos; &apos;));&#xD;  }&#xD;};&#xD;&#xD;logger.formatters = [&apos;color&apos;, &apos;minilog&apos;];&#xD;logger.color = __webpack_require__(104);&#xD;logger.minilog = __webpack_require__(105);&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 104 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    color = __webpack_require__(38);&#xD;&#xD;var colors = { debug: [&apos;cyan&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(console[level] &amp;&amp; console[level].apply) {&#xD;    fn = console[level];&#xD;    fn.apply(console, [ &apos;%c&apos;+name+&apos; %c&apos;+level, color(&apos;gray&apos;), color.apply(color, colors[level])].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 105 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(0),&#xD;    color = __webpack_require__(38),&#xD;    colors = { debug: [&apos;gray&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(level != &apos;debug&apos; &amp;&amp; console[level]) {&#xD;    fn = console[level];&#xD;  }&#xD;&#xD;  var subset = [], i = 0;&#xD;  if(level != &apos;info&apos;) {&#xD;    for(; i &lt; args.length; i++) {&#xD;      if(typeof args[i] != &apos;string&apos;) break;&#xD;    }&#xD;    fn.apply(console, [ &apos;%c&apos;+name +&apos; &apos;+ args.slice(0, i).join(&apos; &apos;), color.apply(color, colors[level]) ].concat(args.slice(i)));&#xD;  } else {&#xD;    fn.apply(console, [ &apos;%c&apos;+name, color.apply(color, colors[level]) ].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 106 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a passthrough stream.&#xD;// basically just the most minimal sort of Transform stream.&#xD;// Every written chunk gets output as-is.&#xD;&#xD;&#xD;&#xD;module.exports = PassThrough;&#xD;&#xD;var Transform = __webpack_require__(40);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(10);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(PassThrough, Transform);&#xD;&#xD;function PassThrough(options) {&#xD;  if (!(this instanceof PassThrough)) return new PassThrough(options);&#xD;&#xD;  Transform.call(this, options);&#xD;}&#xD;&#xD;PassThrough.prototype._transform = function (chunk, encoding, cb) {&#xD;  cb(null, chunk);&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 107 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Buffer = __webpack_require__(8).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(15);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = BufferList;&#xD;&#xD;function BufferList() {&#xD;  this.head = null;&#xD;  this.tail = null;&#xD;  this.length = 0;&#xD;}&#xD;&#xD;BufferList.prototype.push = function (v) {&#xD;  var entry = { data: v, next: null };&#xD;  if (this.length &gt; 0) this.tail.next = entry;else this.head = entry;&#xD;  this.tail = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.unshift = function (v) {&#xD;  var entry = { data: v, next: this.head };&#xD;  if (this.length === 0) this.tail = entry;&#xD;  this.head = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.shift = function () {&#xD;  if (this.length === 0) return;&#xD;  var ret = this.head.data;&#xD;  if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;&#xD;  --this.length;&#xD;  return ret;&#xD;};&#xD;&#xD;BufferList.prototype.clear = function () {&#xD;  this.head = this.tail = null;&#xD;  this.length = 0;&#xD;};&#xD;&#xD;BufferList.prototype.join = function (s) {&#xD;  if (this.length === 0) return &apos;&apos;;&#xD;  var p = this.head;&#xD;  var ret = &apos;&apos; + p.data;&#xD;  while (p = p.next) {&#xD;    ret += s + p.data;&#xD;  }return ret;&#xD;};&#xD;&#xD;BufferList.prototype.concat = function (n) {&#xD;  if (this.length === 0) return bufferShim.alloc(0);&#xD;  if (this.length === 1) return this.head.data;&#xD;  var ret = bufferShim.allocUnsafe(n &gt;&gt;&gt; 0);&#xD;  var p = this.head;&#xD;  var i = 0;&#xD;  while (p) {&#xD;    p.data.copy(ret, i);&#xD;    i += p.data.length;&#xD;    p = p.next;&#xD;  }&#xD;  return ret;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 108 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Stream = __webpack_require__(16);&#xD;if (process.env.READABLE_STREAM === &apos;disable&apos; &amp;&amp; Stream) {&#xD;  module.exports = Stream;&#xD;  exports = module.exports = Stream.Readable;&#xD;  exports.Readable = Stream.Readable;&#xD;  exports.Writable = Stream.Writable;&#xD;  exports.Duplex = Stream.Duplex;&#xD;  exports.Transform = Stream.Transform;&#xD;  exports.PassThrough = Stream.PassThrough;&#xD;  exports.Stream = Stream;&#xD;} else {&#xD;  exports = module.exports = __webpack_require__(39);&#xD;  exports.Stream = Stream || exports;&#xD;  exports.Readable = exports;&#xD;  exports.Writable = __webpack_require__(41);&#xD;  exports.Duplex = __webpack_require__(7);&#xD;  exports.Transform = __webpack_require__(40);&#xD;  exports.PassThrough = __webpack_require__(106);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 109 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;&#xD;/**&#xD; * For Node.js, simply re-export the core `util.deprecate` function.&#xD; */&#xD;&#xD;module.exports = __webpack_require__(13).deprecate;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 110 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"name": "scratch-vm",&#xD;	"version": "0.1.0-prerelease.1495486261",&#xD;	"description": "Virtual Machine for Scratch 3.0",&#xD;	"author": "Massachusetts Institute of Technology",&#xD;	"license": "BSD-3-Clause",&#xD;	"homepage": "https://github.com/LLK/scratch-vm#readme",&#xD;	"repository": {&#xD;		"type": "git",&#xD;		"url": "git+ssh://git@github.com/LLK/scratch-vm.git",&#xD;		"sha": "b39de6722fae8d6bfe14c6f3daf4d0800ed4870c"&#xD;	},&#xD;	"main": "./dist/node/scratch-vm.js",&#xD;	"scripts": {&#xD;		"build": "./node_modules/.bin/webpack --progress --colors --bail",&#xD;		"coverage": "./node_modules/.bin/tap ./test/{unit,integration}/*.js --coverage --coverage-report=lcov",&#xD;		"deploy": "touch playground/.nojekyll &amp;&amp; ./node_modules/.bin/gh-pages -t -d playground -m \"Build for $(git log --pretty=format:%H -n1)\"",&#xD;		"lint": "./node_modules/.bin/eslint .",&#xD;		"prepublish": "npm run build",&#xD;		"prepublish-watch": "npm run watch",&#xD;		"start": "./node_modules/.bin/webpack-dev-server",&#xD;		"tap": "./node_modules/.bin/tap ./test/{unit,integration}/*.js",&#xD;		"test": "npm run lint &amp;&amp; npm run tap",&#xD;		"watch": "./node_modules/.bin/webpack --progress --colors --watch",&#xD;		"version": "./node_modules/.bin/json -f package.json -I -e \"this.repository.sha = &apos;$(git log -n1 --pretty=format:%H)&apos;\""&#xD;	},&#xD;	"devDependencies": {&#xD;		"adm-zip": "0.4.7",&#xD;		"babel-core": "^6.24.1",&#xD;		"babel-eslint": "^7.1.1",&#xD;		"babel-loader": "^7.0.0",&#xD;		"babel-preset-es2015": "^6.24.1",&#xD;		"copy-webpack-plugin": "4.0.1",&#xD;		"eslint": "^3.16.0",&#xD;		"eslint-config-scratch": "^3.1.0",&#xD;		"expose-loader": "0.7.3",&#xD;		"gh-pages": "^0.12.0",&#xD;		"highlightjs": "^9.8.0",&#xD;		"htmlparser2": "3.9.2",&#xD;		"json": "^9.0.4",&#xD;		"lodash.defaultsdeep": "4.6.0",&#xD;		"minilog": "3.1.0",&#xD;		"promise": "7.1.1",&#xD;		"scratch-audio": "^0.1.0-prerelease.0",&#xD;		"scratch-blocks": "^0.1.0-prerelease.0",&#xD;		"scratch-render": "^0.1.0-prerelease.0",&#xD;		"scratch-storage": "^0.1.0",&#xD;		"script-loader": "0.7.0",&#xD;		"stats.js": "^0.17.0",&#xD;		"tap": "^10.2.0",&#xD;		"travis-after-all": "^1.4.4",&#xD;		"webpack": "^2.4.1",&#xD;		"webpack-dev-server": "^2.4.1"&#xD;	}&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 111 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(73);&#xD;&#xD;/***/ })&#xD;/******/ ]);&#xD;//# sourceMappingURL=scratch-vm.js.map&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(13), __webpack_require__(14), __webpack_require__(106).setImmediate))&#xD;&#xD;/***/ }),&#xD;/* 19 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var elliptic = exports;&#xD;&#xD;elliptic.version = __webpack_require__(323).version;&#xD;elliptic.utils = __webpack_require__(322);&#xD;elliptic.rand = __webpack_require__(119);&#xD;elliptic.curve = __webpack_require__(59);&#xD;elliptic.curves = __webpack_require__(314);&#xD;&#xD;// Protocols&#xD;elliptic.ec = __webpack_require__(315);&#xD;elliptic.eddsa = __webpack_require__(318);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 20 */,&#xD;/* 21 */,&#xD;/* 22 */,&#xD;/* 23 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;Object.defineProperty(__webpack_exports__, "__esModule", { value: true });&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Provider__ = __webpack_require__(471);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_connectAdvanced__ = __webpack_require__(177);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__connect_connect__ = __webpack_require__(472);&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "Provider", function() { return __WEBPACK_IMPORTED_MODULE_0__components_Provider__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "createProvider", function() { return __WEBPACK_IMPORTED_MODULE_0__components_Provider__["b"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "connectAdvanced", function() { return __WEBPACK_IMPORTED_MODULE_1__components_connectAdvanced__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return __WEBPACK_IMPORTED_MODULE_2__connect_connect__["a"]; });&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 24 */,&#xD;/* 25 */,&#xD;/* 26 */,&#xD;/* 27 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var microee = __webpack_require__(364);&#xD;&#xD;// Implements a subset of Node&apos;s stream.Transform - in a cross-platform manner.&#xD;function Transform() {}&#xD;&#xD;microee.mixin(Transform);&#xD;&#xD;// The write() signature is different from Node&apos;s&#xD;// --&gt; makes it much easier to work with objects in logs.&#xD;// One of the lessons from v1 was that it&apos;s better to target&#xD;// a good browser rather than the lowest common denominator&#xD;// internally.&#xD;// If you want to use external streams, pipe() to ./stringify.js first.&#xD;Transform.prototype.write = function(name, level, args) {&#xD;  this.emit(&apos;item&apos;, name, level, args);&#xD;};&#xD;&#xD;Transform.prototype.end = function() {&#xD;  this.emit(&apos;end&apos;);&#xD;  this.removeAllListeners();&#xD;};&#xD;&#xD;Transform.prototype.pipe = function(dest) {&#xD;  var s = this;&#xD;  // prevent double piping&#xD;  s.emit(&apos;unpipe&apos;, dest);&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, s);&#xD;&#xD;  function onItem() {&#xD;    dest.write.apply(dest, Array.prototype.slice.call(arguments));&#xD;  }&#xD;  function onEnd() { !dest._isStdio &amp;&amp; dest.end(); }&#xD;&#xD;  s.on(&apos;item&apos;, onItem);&#xD;  s.on(&apos;end&apos;, onEnd);&#xD;&#xD;  s.when(&apos;unpipe&apos;, function(from) {&#xD;    var match = (from === dest) || typeof from == &apos;undefined&apos;;&#xD;    if(match) {&#xD;      s.removeListener(&apos;item&apos;, onItem);&#xD;      s.removeListener(&apos;end&apos;, onEnd);&#xD;      dest.emit(&apos;unpipe&apos;);&#xD;    }&#xD;    return match;&#xD;  });&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;Transform.prototype.unpipe = function(from) {&#xD;  this.emit(&apos;unpipe&apos;, from);&#xD;  return this;&#xD;};&#xD;&#xD;Transform.prototype.format = function(dest) {&#xD;  throw new Error([&#xD;    &apos;Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:&apos;,&#xD;    &apos;var Minilog = require(\&apos;minilog\&apos;);&apos;,&#xD;    &apos;Minilog&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console.formatClean)&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console);&apos;].join(&apos;\n&apos;));&#xD;};&#xD;&#xD;Transform.mixin = function(dest) {&#xD;  var o = Transform.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Transform;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 28 */,&#xD;/* 29 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;module.exports = Stream;&#xD;&#xD;var EE = __webpack_require__(30).EventEmitter;&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;inherits(Stream, EE);&#xD;Stream.Readable = __webpack_require__(105);&#xD;Stream.Writable = __webpack_require__(501);&#xD;Stream.Duplex = __webpack_require__(498);&#xD;Stream.Transform = __webpack_require__(190);&#xD;Stream.PassThrough = __webpack_require__(500);&#xD;&#xD;// Backwards-compat with node 0.4.x&#xD;Stream.Stream = Stream;&#xD;&#xD;&#xD;&#xD;// old-style streams.  Note that the pipe method (the only relevant&#xD;// part of this class) is overridden in the Readable class.&#xD;&#xD;function Stream() {&#xD;  EE.call(this);&#xD;}&#xD;&#xD;Stream.prototype.pipe = function(dest, options) {&#xD;  var source = this;&#xD;&#xD;  function ondata(chunk) {&#xD;    if (dest.writable) {&#xD;      if (false === dest.write(chunk) &amp;&amp; source.pause) {&#xD;        source.pause();&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  source.on(&apos;data&apos;, ondata);&#xD;&#xD;  function ondrain() {&#xD;    if (source.readable &amp;&amp; source.resume) {&#xD;      source.resume();&#xD;    }&#xD;  }&#xD;&#xD;  dest.on(&apos;drain&apos;, ondrain);&#xD;&#xD;  // If the &apos;end&apos; option is not supplied, dest.end() will be called when&#xD;  // source gets the &apos;end&apos; or &apos;close&apos; events.  Only dest.end() once.&#xD;  if (!dest._isStdio &amp;&amp; (!options || options.end !== false)) {&#xD;    source.on(&apos;end&apos;, onend);&#xD;    source.on(&apos;close&apos;, onclose);&#xD;  }&#xD;&#xD;  var didOnEnd = false;&#xD;  function onend() {&#xD;    if (didOnEnd) return;&#xD;    didOnEnd = true;&#xD;&#xD;    dest.end();&#xD;  }&#xD;&#xD;&#xD;  function onclose() {&#xD;    if (didOnEnd) return;&#xD;    didOnEnd = true;&#xD;&#xD;    if (typeof dest.destroy === &apos;function&apos;) dest.destroy();&#xD;  }&#xD;&#xD;  // don&apos;t leave dangling pipes when there are errors.&#xD;  function onerror(er) {&#xD;    cleanup();&#xD;    if (EE.listenerCount(this, &apos;error&apos;) === 0) {&#xD;      throw er; // Unhandled stream error in pipe.&#xD;    }&#xD;  }&#xD;&#xD;  source.on(&apos;error&apos;, onerror);&#xD;  dest.on(&apos;error&apos;, onerror);&#xD;&#xD;  // remove all the event listeners that were added.&#xD;  function cleanup() {&#xD;    source.removeListener(&apos;data&apos;, ondata);&#xD;    dest.removeListener(&apos;drain&apos;, ondrain);&#xD;&#xD;    source.removeListener(&apos;end&apos;, onend);&#xD;    source.removeListener(&apos;close&apos;, onclose);&#xD;&#xD;    source.removeListener(&apos;error&apos;, onerror);&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;&#xD;    source.removeListener(&apos;end&apos;, cleanup);&#xD;    source.removeListener(&apos;close&apos;, cleanup);&#xD;&#xD;    dest.removeListener(&apos;close&apos;, cleanup);&#xD;  }&#xD;&#xD;  source.on(&apos;end&apos;, cleanup);&#xD;  source.on(&apos;close&apos;, cleanup);&#xD;&#xD;  dest.on(&apos;close&apos;, cleanup);&#xD;&#xD;  dest.emit(&apos;pipe&apos;, source);&#xD;&#xD;  // Allow for unix-like usage: A.pipe(B).pipe(C)&#xD;  return dest;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 30 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;function EventEmitter() {&#xD;  this._events = this._events || {};&#xD;  this._maxListeners = this._maxListeners || undefined;&#xD;}&#xD;module.exports = EventEmitter;&#xD;&#xD;// Backwards-compat with node 0.10.x&#xD;EventEmitter.EventEmitter = EventEmitter;&#xD;&#xD;EventEmitter.prototype._events = undefined;&#xD;EventEmitter.prototype._maxListeners = undefined;&#xD;&#xD;// By default EventEmitters will print a warning if more than 10 listeners are&#xD;// added to it. This is a useful default which helps finding memory leaks.&#xD;EventEmitter.defaultMaxListeners = 10;&#xD;&#xD;// Obviously not all Emitters should be limited to 10. This function allows&#xD;// that to be increased. Set to zero for unlimited.&#xD;EventEmitter.prototype.setMaxListeners = function(n) {&#xD;  if (!isNumber(n) || n &lt; 0 || isNaN(n))&#xD;    throw TypeError(&apos;n must be a positive number&apos;);&#xD;  this._maxListeners = n;&#xD;  return this;&#xD;};&#xD;&#xD;EventEmitter.prototype.emit = function(type) {&#xD;  var er, handler, len, args, i, listeners;&#xD;&#xD;  if (!this._events)&#xD;    this._events = {};&#xD;&#xD;  // If there is no &apos;error&apos; event listener then throw.&#xD;  if (type === &apos;error&apos;) {&#xD;    if (!this._events.error ||&#xD;        (isObject(this._events.error) &amp;&amp; !this._events.error.length)) {&#xD;      er = arguments[1];&#xD;      if (er instanceof Error) {&#xD;        throw er; // Unhandled &apos;error&apos; event&#xD;      } else {&#xD;        // At least give some kind of context to the user&#xD;        var err = new Error(&apos;Uncaught, unspecified "error" event. (&apos; + er + &apos;)&apos;);&#xD;        err.context = er;&#xD;        throw err;&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  handler = this._events[type];&#xD;&#xD;  if (isUndefined(handler))&#xD;    return false;&#xD;&#xD;  if (isFunction(handler)) {&#xD;    switch (arguments.length) {&#xD;      // fast cases&#xD;      case 1:&#xD;        handler.call(this);&#xD;        break;&#xD;      case 2:&#xD;        handler.call(this, arguments[1]);&#xD;        break;&#xD;      case 3:&#xD;        handler.call(this, arguments[1], arguments[2]);&#xD;        break;&#xD;      // slower&#xD;      default:&#xD;        args = Array.prototype.slice.call(arguments, 1);&#xD;        handler.apply(this, args);&#xD;    }&#xD;  } else if (isObject(handler)) {&#xD;    args = Array.prototype.slice.call(arguments, 1);&#xD;    listeners = handler.slice();&#xD;    len = listeners.length;&#xD;    for (i = 0; i &lt; len; i++)&#xD;      listeners[i].apply(this, args);&#xD;  }&#xD;&#xD;  return true;&#xD;};&#xD;&#xD;EventEmitter.prototype.addListener = function(type, listener) {&#xD;  var m;&#xD;&#xD;  if (!isFunction(listener))&#xD;    throw TypeError(&apos;listener must be a function&apos;);&#xD;&#xD;  if (!this._events)&#xD;    this._events = {};&#xD;&#xD;  // To avoid recursion in the case that type === "newListener"! Before&#xD;  // adding it to the listeners, first emit "newListener".&#xD;  if (this._events.newListener)&#xD;    this.emit(&apos;newListener&apos;, type,&#xD;              isFunction(listener.listener) ?&#xD;              listener.listener : listener);&#xD;&#xD;  if (!this._events[type])&#xD;    // Optimize the case of one listener. Don&apos;t need the extra array object.&#xD;    this._events[type] = listener;&#xD;  else if (isObject(this._events[type]))&#xD;    // If we&apos;ve already got an array, just append.&#xD;    this._events[type].push(listener);&#xD;  else&#xD;    // Adding the second element, need to change to array.&#xD;    this._events[type] = [this._events[type], listener];&#xD;&#xD;  // Check for listener leak&#xD;  if (isObject(this._events[type]) &amp;&amp; !this._events[type].warned) {&#xD;    if (!isUndefined(this._maxListeners)) {&#xD;      m = this._maxListeners;&#xD;    } else {&#xD;      m = EventEmitter.defaultMaxListeners;&#xD;    }&#xD;&#xD;    if (m &amp;&amp; m &gt; 0 &amp;&amp; this._events[type].length &gt; m) {&#xD;      this._events[type].warned = true;&#xD;      console.error(&apos;(node) warning: possible EventEmitter memory &apos; +&#xD;                    &apos;leak detected. %d listeners added. &apos; +&#xD;                    &apos;Use emitter.setMaxListeners() to increase limit.&apos;,&#xD;                    this._events[type].length);&#xD;      if (typeof console.trace === &apos;function&apos;) {&#xD;        // not supported in IE 10&#xD;        console.trace();&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;EventEmitter.prototype.on = EventEmitter.prototype.addListener;&#xD;&#xD;EventEmitter.prototype.once = function(type, listener) {&#xD;  if (!isFunction(listener))&#xD;    throw TypeError(&apos;listener must be a function&apos;);&#xD;&#xD;  var fired = false;&#xD;&#xD;  function g() {&#xD;    this.removeListener(type, g);&#xD;&#xD;    if (!fired) {&#xD;      fired = true;&#xD;      listener.apply(this, arguments);&#xD;    }&#xD;  }&#xD;&#xD;  g.listener = listener;&#xD;  this.on(type, g);&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;// emits a &apos;removeListener&apos; event iff the listener was removed&#xD;EventEmitter.prototype.removeListener = function(type, listener) {&#xD;  var list, position, length, i;&#xD;&#xD;  if (!isFunction(listener))&#xD;    throw TypeError(&apos;listener must be a function&apos;);&#xD;&#xD;  if (!this._events || !this._events[type])&#xD;    return this;&#xD;&#xD;  list = this._events[type];&#xD;  length = list.length;&#xD;  position = -1;&#xD;&#xD;  if (list === listener ||&#xD;      (isFunction(list.listener) &amp;&amp; list.listener === listener)) {&#xD;    delete this._events[type];&#xD;    if (this._events.removeListener)&#xD;      this.emit(&apos;removeListener&apos;, type, listener);&#xD;&#xD;  } else if (isObject(list)) {&#xD;    for (i = length; i-- &gt; 0;) {&#xD;      if (list[i] === listener ||&#xD;          (list[i].listener &amp;&amp; list[i].listener === listener)) {&#xD;        position = i;&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    if (position &lt; 0)&#xD;      return this;&#xD;&#xD;    if (list.length === 1) {&#xD;      list.length = 0;&#xD;      delete this._events[type];&#xD;    } else {&#xD;      list.splice(position, 1);&#xD;    }&#xD;&#xD;    if (this._events.removeListener)&#xD;      this.emit(&apos;removeListener&apos;, type, listener);&#xD;  }&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;EventEmitter.prototype.removeAllListeners = function(type) {&#xD;  var key, listeners;&#xD;&#xD;  if (!this._events)&#xD;    return this;&#xD;&#xD;  // not listening for removeListener, no need to emit&#xD;  if (!this._events.removeListener) {&#xD;    if (arguments.length === 0)&#xD;      this._events = {};&#xD;    else if (this._events[type])&#xD;      delete this._events[type];&#xD;    return this;&#xD;  }&#xD;&#xD;  // emit removeListener for all listeners on all events&#xD;  if (arguments.length === 0) {&#xD;    for (key in this._events) {&#xD;      if (key === &apos;removeListener&apos;) continue;&#xD;      this.removeAllListeners(key);&#xD;    }&#xD;    this.removeAllListeners(&apos;removeListener&apos;);&#xD;    this._events = {};&#xD;    return this;&#xD;  }&#xD;&#xD;  listeners = this._events[type];&#xD;&#xD;  if (isFunction(listeners)) {&#xD;    this.removeListener(type, listeners);&#xD;  } else if (listeners) {&#xD;    // LIFO order&#xD;    while (listeners.length)&#xD;      this.removeListener(type, listeners[listeners.length - 1]);&#xD;  }&#xD;  delete this._events[type];&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;EventEmitter.prototype.listeners = function(type) {&#xD;  var ret;&#xD;  if (!this._events || !this._events[type])&#xD;    ret = [];&#xD;  else if (isFunction(this._events[type]))&#xD;    ret = [this._events[type]];&#xD;  else&#xD;    ret = this._events[type].slice();&#xD;  return ret;&#xD;};&#xD;&#xD;EventEmitter.prototype.listenerCount = function(type) {&#xD;  if (this._events) {&#xD;    var evlistener = this._events[type];&#xD;&#xD;    if (isFunction(evlistener))&#xD;      return 1;&#xD;    else if (evlistener)&#xD;      return evlistener.length;&#xD;  }&#xD;  return 0;&#xD;};&#xD;&#xD;EventEmitter.listenerCount = function(emitter, type) {&#xD;  return emitter.listenerCount(type);&#xD;};&#xD;&#xD;function isFunction(arg) {&#xD;  return typeof arg === &apos;function&apos;;&#xD;}&#xD;&#xD;function isNumber(arg) {&#xD;  return typeof arg === &apos;number&apos;;&#xD;}&#xD;&#xD;function isObject(arg) {&#xD;  return typeof arg === &apos;object&apos; &amp;&amp; arg !== null;&#xD;}&#xD;&#xD;function isUndefined(arg) {&#xD;  return arg === void 0;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 31 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var hash = exports;&#xD;&#xD;hash.utils = __webpack_require__(345);&#xD;hash.common = __webpack_require__(341);&#xD;hash.sha = __webpack_require__(344);&#xD;hash.ripemd = __webpack_require__(343);&#xD;hash.hmac = __webpack_require__(342);&#xD;&#xD;// Proxy hash functions to the main object&#xD;hash.sha1 = hash.sha.sha1;&#xD;hash.sha256 = hash.sha.sha256;&#xD;hash.sha224 = hash.sha.sha224;&#xD;hash.sha384 = hash.sha.sha384;&#xD;hash.sha512 = hash.sha.sha512;&#xD;hash.ripemd160 = hash.ripemd.ripemd160;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 32 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = assert;&#xD;&#xD;function assert(val, msg) {&#xD;  if (!val)&#xD;    throw new Error(msg || &apos;Assertion failed&apos;);&#xD;}&#xD;&#xD;assert.equal = function assertEqual(l, r, msg) {&#xD;  if (l != r)&#xD;    throw new Error(msg || (&apos;Assertion failed: &apos; + l + &apos; != &apos; + r));&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 33 */,&#xD;/* 34 */,&#xD;/* 35 */,&#xD;/* 36 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a duplex stream is just a stream that is both readable and writable.&#xD;// Since JS doesn&apos;t have multiple prototypal inheritance, this class&#xD;// prototypally inherits from Readable, and then parasitically from&#xD;// Writable.&#xD;&#xD;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;&#xD;var objectKeys = Object.keys || function (obj) {&#xD;  var keys = [];&#xD;  for (var key in obj) {&#xD;    keys.push(key);&#xD;  }return keys;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = Duplex;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(84);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(48);&#xD;util.inherits = __webpack_require__(5);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Readable = __webpack_require__(189);&#xD;var Writable = __webpack_require__(104);&#xD;&#xD;util.inherits(Duplex, Readable);&#xD;&#xD;var keys = objectKeys(Writable.prototype);&#xD;for (var v = 0; v &lt; keys.length; v++) {&#xD;  var method = keys[v];&#xD;  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];&#xD;}&#xD;&#xD;function Duplex(options) {&#xD;  if (!(this instanceof Duplex)) return new Duplex(options);&#xD;&#xD;  Readable.call(this, options);&#xD;  Writable.call(this, options);&#xD;&#xD;  if (options &amp;&amp; options.readable === false) this.readable = false;&#xD;&#xD;  if (options &amp;&amp; options.writable === false) this.writable = false;&#xD;&#xD;  this.allowHalfOpen = true;&#xD;  if (options &amp;&amp; options.allowHalfOpen === false) this.allowHalfOpen = false;&#xD;&#xD;  this.once(&apos;end&apos;, onend);&#xD;}&#xD;&#xD;// the no-half-open enforcer&#xD;function onend() {&#xD;  // if we allow half-open state, or if the writable side ended,&#xD;  // then we&apos;re ok.&#xD;  if (this.allowHalfOpen || this._writableState.ended) return;&#xD;&#xD;  // no more data can be written.&#xD;  // But allow more writes to happen in this tick.&#xD;  processNextTick(onEndNT, this);&#xD;}&#xD;&#xD;function onEndNT(self) {&#xD;  self.end();&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 37 */,&#xD;/* 38 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var Transform = __webpack_require__(29).Transform&#xD;var inherits = __webpack_require__(5)&#xD;var StringDecoder = __webpack_require__(73).StringDecoder&#xD;module.exports = CipherBase&#xD;inherits(CipherBase, Transform)&#xD;function CipherBase (hashMode) {&#xD;  Transform.call(this)&#xD;  this.hashMode = typeof hashMode === &apos;string&apos;&#xD;  if (this.hashMode) {&#xD;    this[hashMode] = this._finalOrDigest&#xD;  } else {&#xD;    this.final = this._finalOrDigest&#xD;  }&#xD;  this._decoder = null&#xD;  this._encoding = null&#xD;}&#xD;CipherBase.prototype.update = function (data, inputEnc, outputEnc) {&#xD;  if (typeof data === &apos;string&apos;) {&#xD;    data = new Buffer(data, inputEnc)&#xD;  }&#xD;  var outData = this._update(data)&#xD;  if (this.hashMode) {&#xD;    return this&#xD;  }&#xD;  if (outputEnc) {&#xD;    outData = this._toString(outData, outputEnc)&#xD;  }&#xD;  return outData&#xD;}&#xD;&#xD;CipherBase.prototype.setAutoPadding = function () {}&#xD;&#xD;CipherBase.prototype.getAuthTag = function () {&#xD;  throw new Error(&apos;trying to get auth tag in unsupported state&apos;)&#xD;}&#xD;&#xD;CipherBase.prototype.setAuthTag = function () {&#xD;  throw new Error(&apos;trying to set auth tag in unsupported state&apos;)&#xD;}&#xD;&#xD;CipherBase.prototype.setAAD = function () {&#xD;  throw new Error(&apos;trying to set aad in unsupported state&apos;)&#xD;}&#xD;&#xD;CipherBase.prototype._transform = function (data, _, next) {&#xD;  var err&#xD;  try {&#xD;    if (this.hashMode) {&#xD;      this._update(data)&#xD;    } else {&#xD;      this.push(this._update(data))&#xD;    }&#xD;  } catch (e) {&#xD;    err = e&#xD;  } finally {&#xD;    next(err)&#xD;  }&#xD;}&#xD;CipherBase.prototype._flush = function (done) {&#xD;  var err&#xD;  try {&#xD;    this.push(this._final())&#xD;  } catch (e) {&#xD;    err = e&#xD;  } finally {&#xD;    done(err)&#xD;  }&#xD;}&#xD;CipherBase.prototype._finalOrDigest = function (outputEnc) {&#xD;  var outData = this._final() || new Buffer(&apos;&apos;)&#xD;  if (outputEnc) {&#xD;    outData = this._toString(outData, outputEnc, true)&#xD;  }&#xD;  return outData&#xD;}&#xD;&#xD;CipherBase.prototype._toString = function (value, enc, fin) {&#xD;  if (!this._decoder) {&#xD;    this._decoder = new StringDecoder(enc)&#xD;    this._encoding = enc&#xD;  }&#xD;  if (this._encoding !== enc) {&#xD;    throw new Error(&apos;can\&apos;t switch encodings&apos;)&#xD;  }&#xD;  var out = this._decoder.write(value)&#xD;  if (fin) {&#xD;    out += this._decoder.end()&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 39 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {&#xD;var inherits = __webpack_require__(5)&#xD;var md5 = __webpack_require__(130)&#xD;var rmd160 = __webpack_require__(505)&#xD;var sha = __webpack_require__(510)&#xD;&#xD;var Base = __webpack_require__(38)&#xD;&#xD;function HashNoConstructor(hash) {&#xD;  Base.call(this, &apos;digest&apos;)&#xD;&#xD;  this._hash = hash&#xD;  this.buffers = []&#xD;}&#xD;&#xD;inherits(HashNoConstructor, Base)&#xD;&#xD;HashNoConstructor.prototype._update = function (data) {&#xD;  this.buffers.push(data)&#xD;}&#xD;&#xD;HashNoConstructor.prototype._final = function () {&#xD;  var buf = Buffer.concat(this.buffers)&#xD;  var r = this._hash(buf)&#xD;  this.buffers = null&#xD;&#xD;  return r&#xD;}&#xD;&#xD;function Hash(hash) {&#xD;  Base.call(this, &apos;digest&apos;)&#xD;&#xD;  this._hash = hash&#xD;}&#xD;&#xD;inherits(Hash, Base)&#xD;&#xD;Hash.prototype._update = function (data) {&#xD;  this._hash.update(data)&#xD;}&#xD;&#xD;Hash.prototype._final = function () {&#xD;  return this._hash.digest()&#xD;}&#xD;&#xD;module.exports = function createHash (alg) {&#xD;  alg = alg.toLowerCase()&#xD;  if (&apos;md5&apos; === alg) return new HashNoConstructor(md5)&#xD;  if (&apos;rmd160&apos; === alg || &apos;ripemd160&apos; === alg) return new HashNoConstructor(rmd160)&#xD;&#xD;  return new Hash(sha(alg))&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 40 */,&#xD;/* 41 */,&#xD;/* 42 */,&#xD;/* 43 */,&#xD;/* 44 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// prototype class for hash functions&#xD;function Hash (blockSize, finalSize) {&#xD;  this._block = new Buffer(blockSize)&#xD;  this._finalSize = finalSize&#xD;  this._blockSize = blockSize&#xD;  this._len = 0&#xD;  this._s = 0&#xD;}&#xD;&#xD;Hash.prototype.update = function (data, enc) {&#xD;  if (typeof data === &apos;string&apos;) {&#xD;    enc = enc || &apos;utf8&apos;&#xD;    data = new Buffer(data, enc)&#xD;  }&#xD;&#xD;  var l = this._len += data.length&#xD;  var s = this._s || 0&#xD;  var f = 0&#xD;  var buffer = this._block&#xD;&#xD;  while (s &lt; l) {&#xD;    var t = Math.min(data.length, f + this._blockSize - (s % this._blockSize))&#xD;    var ch = (t - f)&#xD;&#xD;    for (var i = 0; i &lt; ch; i++) {&#xD;      buffer[(s % this._blockSize) + i] = data[i + f]&#xD;    }&#xD;&#xD;    s += ch&#xD;    f += ch&#xD;&#xD;    if ((s % this._blockSize) === 0) {&#xD;      this._update(buffer)&#xD;    }&#xD;  }&#xD;  this._s = s&#xD;&#xD;  return this&#xD;}&#xD;&#xD;Hash.prototype.digest = function (enc) {&#xD;  // Suppose the length of the message M, in bits, is l&#xD;  var l = this._len * 8&#xD;&#xD;  // Append the bit 1 to the end of the message&#xD;  this._block[this._len % this._blockSize] = 0x80&#xD;&#xD;  // and then k zero bits, where k is the smallest non-negative solution to the equation (l + 1 + k) === finalSize mod blockSize&#xD;  this._block.fill(0, this._len % this._blockSize + 1)&#xD;&#xD;  if (l % (this._blockSize * 8) &gt;= this._finalSize * 8) {&#xD;    this._update(this._block)&#xD;    this._block.fill(0)&#xD;  }&#xD;&#xD;  // to this append the block which is equal to the number l written in binary&#xD;  // TODO: handle case where l is &gt; Math.pow(2, 29)&#xD;  this._block.writeInt32BE(l, this._blockSize - 4)&#xD;&#xD;  var hash = this._update(this._block) || this._hash()&#xD;&#xD;  return enc ? hash.toString(enc) : hash&#xD;}&#xD;&#xD;Hash.prototype._update = function () {&#xD;  throw new Error(&apos;_update must be implemented by subclass&apos;)&#xD;}&#xD;&#xD;module.exports = Hash&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 45 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var asn1 = exports;&#xD;&#xD;asn1.bignum = __webpack_require__(11);&#xD;&#xD;asn1.define = __webpack_require__(208).define;&#xD;asn1.base = __webpack_require__(46);&#xD;asn1.constants = __webpack_require__(109);&#xD;asn1.decoders = __webpack_require__(212);&#xD;asn1.encoders = __webpack_require__(214);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 46 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var base = exports;&#xD;&#xD;base.Reporter = __webpack_require__(210).Reporter;&#xD;base.DecoderBuffer = __webpack_require__(108).DecoderBuffer;&#xD;base.EncoderBuffer = __webpack_require__(108).EncoderBuffer;&#xD;base.Node = __webpack_require__(209);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 47 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor (a, b) {&#xD;  var length = Math.min(a.length, b.length)&#xD;  var buffer = new Buffer(length)&#xD;&#xD;  for (var i = 0; i &lt; length; ++i) {&#xD;    buffer[i] = a[i] ^ b[i]&#xD;  }&#xD;&#xD;  return buffer&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 48 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;// NOTE: These type checking functions intentionally don&apos;t use `instanceof`&#xD;// because it is fragile and can be easily faked with `Object.create()`.&#xD;&#xD;function isArray(arg) {&#xD;  if (Array.isArray) {&#xD;    return Array.isArray(arg);&#xD;  }&#xD;  return objectToString(arg) === &apos;[object Array]&apos;;&#xD;}&#xD;exports.isArray = isArray;&#xD;&#xD;function isBoolean(arg) {&#xD;  return typeof arg === &apos;boolean&apos;;&#xD;}&#xD;exports.isBoolean = isBoolean;&#xD;&#xD;function isNull(arg) {&#xD;  return arg === null;&#xD;}&#xD;exports.isNull = isNull;&#xD;&#xD;function isNullOrUndefined(arg) {&#xD;  return arg == null;&#xD;}&#xD;exports.isNullOrUndefined = isNullOrUndefined;&#xD;&#xD;function isNumber(arg) {&#xD;  return typeof arg === &apos;number&apos;;&#xD;}&#xD;exports.isNumber = isNumber;&#xD;&#xD;function isString(arg) {&#xD;  return typeof arg === &apos;string&apos;;&#xD;}&#xD;exports.isString = isString;&#xD;&#xD;function isSymbol(arg) {&#xD;  return typeof arg === &apos;symbol&apos;;&#xD;}&#xD;exports.isSymbol = isSymbol;&#xD;&#xD;function isUndefined(arg) {&#xD;  return arg === void 0;&#xD;}&#xD;exports.isUndefined = isUndefined;&#xD;&#xD;function isRegExp(re) {&#xD;  return objectToString(re) === &apos;[object RegExp]&apos;;&#xD;}&#xD;exports.isRegExp = isRegExp;&#xD;&#xD;function isObject(arg) {&#xD;  return typeof arg === &apos;object&apos; &amp;&amp; arg !== null;&#xD;}&#xD;exports.isObject = isObject;&#xD;&#xD;function isDate(d) {&#xD;  return objectToString(d) === &apos;[object Date]&apos;;&#xD;}&#xD;exports.isDate = isDate;&#xD;&#xD;function isError(e) {&#xD;  return (objectToString(e) === &apos;[object Error]&apos; || e instanceof Error);&#xD;}&#xD;exports.isError = isError;&#xD;&#xD;function isFunction(arg) {&#xD;  return typeof arg === &apos;function&apos;;&#xD;}&#xD;exports.isFunction = isFunction;&#xD;&#xD;function isPrimitive(arg) {&#xD;  return arg === null ||&#xD;         typeof arg === &apos;boolean&apos; ||&#xD;         typeof arg === &apos;number&apos; ||&#xD;         typeof arg === &apos;string&apos; ||&#xD;         typeof arg === &apos;symbol&apos; ||  // ES6 symbol&#xD;         typeof arg === &apos;undefined&apos;;&#xD;}&#xD;exports.isPrimitive = isPrimitive;&#xD;&#xD;exports.isBuffer = Buffer.isBuffer;&#xD;&#xD;function objectToString(o) {&#xD;  return Object.prototype.toString.call(o);&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 49 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global, Buffer, process) {&#xD;&#xD;function oldBrowser () {&#xD;  throw new Error(&apos;secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11&apos;)&#xD;}&#xD;&#xD;var crypto = global.crypto || global.msCrypto&#xD;&#xD;if (crypto &amp;&amp; crypto.getRandomValues) {&#xD;  module.exports = randomBytes&#xD;} else {&#xD;  module.exports = oldBrowser&#xD;}&#xD;&#xD;function randomBytes (size, cb) {&#xD;  // phantomjs needs to throw&#xD;  if (size &gt; 65536) throw new Error(&apos;requested too many random bytes&apos;)&#xD;  // in case browserify  isn&apos;t using the Uint8Array version&#xD;  var rawBytes = new global.Uint8Array(size)&#xD;&#xD;  // This will not work in older browsers.&#xD;  // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues&#xD;  if (size &gt; 0) {  // getRandomValues fails on IE if size == 0&#xD;    crypto.getRandomValues(rawBytes)&#xD;  }&#xD;  // phantomjs doesn&apos;t like a buffer being passed here&#xD;  var bytes = new Buffer(rawBytes.buffer)&#xD;&#xD;  if (typeof cb === &apos;function&apos;) {&#xD;    return process.nextTick(function () {&#xD;      cb(null, bytes)&#xD;    })&#xD;  }&#xD;&#xD;  return bytes&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13), __webpack_require__(1).Buffer, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 50 */,&#xD;/* 51 */,&#xD;/* 52 */,&#xD;/* 53 */,&#xD;/* 54 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var LibraryItem = __webpack_require__(221);&#xD;var ModalComponent = __webpack_require__(224);&#xD;&#xD;var styles = __webpack_require__(528);&#xD;&#xD;var LibraryComponent = function (_React$Component) {&#xD;    _inherits(LibraryComponent, _React$Component);&#xD;&#xD;    function LibraryComponent(props) {&#xD;        _classCallCheck(this, LibraryComponent);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (LibraryComponent.__proto__ || Object.getPrototypeOf(LibraryComponent)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleSelect&apos;, &apos;handleMouseEnter&apos;, &apos;handleMouseLeave&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(LibraryComponent, [{&#xD;        key: &apos;handleSelect&apos;,&#xD;        value: function handleSelect(id) {&#xD;            this.props.onRequestClose();&#xD;            this.props.onItemSelected(this.props.data[id]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleMouseEnter&apos;,&#xD;        value: function handleMouseEnter(id) {&#xD;            if (this.props.onItemMouseEnter) this.props.onItemMouseEnter(this.props.data[id]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleMouseLeave&apos;,&#xD;        value: function handleMouseLeave(id) {&#xD;            if (this.props.onItemMouseLeave) this.props.onItemMouseLeave(this.props.data[id]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _this2 = this;&#xD;&#xD;            if (!this.props.visible) return null;&#xD;            return React.createElement(&#xD;                ModalComponent,&#xD;                {&#xD;                    contentLabel: this.props.title,&#xD;                    visible: this.props.visible,&#xD;                    onRequestClose: this.props.onRequestClose&#xD;                },&#xD;                React.createElement(&#xD;                    &apos;h1&apos;,&#xD;                    { className: styles.modalHeader },&#xD;                    this.props.title&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;div&apos;,&#xD;                    { className: styles.libraryScrollGrid },&#xD;                    this.props.data.map(function (dataItem, itemId) {&#xD;                        var scratchURL = dataItem.md5 ? &apos;https://cdn.assets.scratch.mit.edu/internalapi/asset/&apos; + dataItem.md5 + &apos;/get/&apos; : dataItem.rawURL;&#xD;                        return React.createElement(LibraryItem, {&#xD;                            iconURL: scratchURL,&#xD;                            id: itemId,&#xD;                            key: &apos;item_&apos; + itemId,&#xD;                            name: dataItem.name,&#xD;                            onMouseEnter: _this2.handleMouseEnter,&#xD;                            onMouseLeave: _this2.handleMouseLeave,&#xD;                            onSelect: _this2.handleSelect&#xD;                        });&#xD;                    })&#xD;                )&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return LibraryComponent;&#xD;}(React.Component);&#xD;&#xD;LibraryComponent.propTypes = {&#xD;    data: PropTypes.arrayOf(&#xD;    /* eslint-disable react/no-unused-prop-types, lines-around-comment */&#xD;    PropTypes.shape({&#xD;        // @todo remove md5/rawURL prop from library, refactor to use storage&#xD;        md5: PropTypes.string,&#xD;        name: PropTypes.string.isRequired,&#xD;        rawURL: PropTypes.string&#xD;    })&#xD;    /* eslint-enable react/no-unused-prop-types, lines-around-comment */&#xD;    ),&#xD;    onItemMouseEnter: PropTypes.func,&#xD;    onItemMouseLeave: PropTypes.func,&#xD;    onItemSelected: PropTypes.func,&#xD;    onRequestClose: PropTypes.func,&#xD;    title: PropTypes.string.isRequired,&#xD;    visible: PropTypes.bool.isRequired&#xD;};&#xD;&#xD;module.exports = LibraryComponent;&#xD;&#xD;/***/ }),&#xD;/* 55 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var _initialState;&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;var OPEN_MODAL = &apos;scratch-gui/modals/OPEN_MODAL&apos;;&#xD;var CLOSE_MODAL = &apos;scratch-gui/modals/CLOSE_MODAL&apos;;&#xD;&#xD;var MODAL_BACKDROP_LIBRARY = &apos;backdropLibrary&apos;;&#xD;var MODAL_COSTUME_LIBRARY = &apos;costumeLibrary&apos;;&#xD;var MODAL_SOUND_LIBRARY = &apos;soundLibrary&apos;;&#xD;var MODAL_SPRITE_LIBRARY = &apos;spriteLibrary&apos;;&#xD;&#xD;var initialState = (_initialState = {}, _defineProperty(_initialState, MODAL_BACKDROP_LIBRARY, false), _defineProperty(_initialState, MODAL_COSTUME_LIBRARY, false), _defineProperty(_initialState, MODAL_SOUND_LIBRARY, false), _defineProperty(_initialState, MODAL_SPRITE_LIBRARY, false), _initialState);&#xD;&#xD;var reducer = function reducer(state, action) {&#xD;    if (typeof state === &apos;undefined&apos;) state = initialState;&#xD;    switch (action.type) {&#xD;        case OPEN_MODAL:&#xD;            return Object.assign({}, state, _defineProperty({}, action.modal, true));&#xD;        case CLOSE_MODAL:&#xD;            return Object.assign({}, state, _defineProperty({}, action.modal, false));&#xD;        default:&#xD;            return state;&#xD;    }&#xD;};&#xD;reducer.openModal = function (modal) {&#xD;    return {&#xD;        type: OPEN_MODAL,&#xD;        modal: modal&#xD;    };&#xD;};&#xD;reducer.closeModal = function (modal) {&#xD;    return {&#xD;        type: CLOSE_MODAL,&#xD;        modal: modal&#xD;    };&#xD;};&#xD;reducer.openBackdropLibrary = function () {&#xD;    return reducer.openModal(MODAL_BACKDROP_LIBRARY);&#xD;};&#xD;reducer.openCostumeLibrary = function () {&#xD;    return reducer.openModal(MODAL_COSTUME_LIBRARY);&#xD;};&#xD;reducer.openSoundLibrary = function () {&#xD;    return reducer.openModal(MODAL_SOUND_LIBRARY);&#xD;};&#xD;reducer.openSpriteLibrary = function () {&#xD;    return reducer.openModal(MODAL_SPRITE_LIBRARY);&#xD;};&#xD;reducer.closeBackdropLibrary = function () {&#xD;    return reducer.closeModal(MODAL_BACKDROP_LIBRARY);&#xD;};&#xD;reducer.closeCostumeLibrary = function () {&#xD;    return reducer.closeModal(MODAL_COSTUME_LIBRARY);&#xD;};&#xD;reducer.closeSpriteLibrary = function () {&#xD;    return reducer.closeModal(MODAL_SPRITE_LIBRARY);&#xD;};&#xD;reducer.closeSoundLibrary = function () {&#xD;    return reducer.closeModal(MODAL_SOUND_LIBRARY);&#xD;};&#xD;module.exports = reducer;&#xD;&#xD;/***/ }),&#xD;/* 56 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// based on the aes implimentation in triple sec&#xD;// https://github.com/keybase/triplesec&#xD;&#xD;// which is in turn based on the one from crypto-js&#xD;// https://code.google.com/p/crypto-js/&#xD;&#xD;var uint_max = Math.pow(2, 32)&#xD;function fixup_uint32 (x) {&#xD;  var ret, x_pos&#xD;  ret = x &gt; uint_max || x &lt; 0 ? (x_pos = Math.abs(x) % uint_max, x &lt; 0 ? uint_max - x_pos : x_pos) : x&#xD;  return ret&#xD;}&#xD;function scrub_vec (v) {&#xD;  for (var i = 0; i &lt; v.length; v++) {&#xD;    v[i] = 0&#xD;  }&#xD;  return false&#xD;}&#xD;&#xD;function Global () {&#xD;  this.SBOX = []&#xD;  this.INV_SBOX = []&#xD;  this.SUB_MIX = [[], [], [], []]&#xD;  this.INV_SUB_MIX = [[], [], [], []]&#xD;  this.init()&#xD;  this.RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]&#xD;}&#xD;&#xD;Global.prototype.init = function () {&#xD;  var d, i, sx, t, x, x2, x4, x8, xi, _i&#xD;  d = (function () {&#xD;    var _i, _results&#xD;    _results = []&#xD;    for (i = _i = 0; _i &lt; 256; i = ++_i) {&#xD;      if (i &lt; 128) {&#xD;        _results.push(i &lt;&lt; 1)&#xD;      } else {&#xD;        _results.push((i &lt;&lt; 1) ^ 0x11b)&#xD;      }&#xD;    }&#xD;    return _results&#xD;  })()&#xD;  x = 0&#xD;  xi = 0&#xD;  for (i = _i = 0; _i &lt; 256; i = ++_i) {&#xD;    sx = xi ^ (xi &lt;&lt; 1) ^ (xi &lt;&lt; 2) ^ (xi &lt;&lt; 3) ^ (xi &lt;&lt; 4)&#xD;    sx = (sx &gt;&gt;&gt; 8) ^ (sx &amp; 0xff) ^ 0x63&#xD;    this.SBOX[x] = sx&#xD;    this.INV_SBOX[sx] = x&#xD;    x2 = d[x]&#xD;    x4 = d[x2]&#xD;    x8 = d[x4]&#xD;    t = (d[sx] * 0x101) ^ (sx * 0x1010100)&#xD;    this.SUB_MIX[0][x] = (t &lt;&lt; 24) | (t &gt;&gt;&gt; 8)&#xD;    this.SUB_MIX[1][x] = (t &lt;&lt; 16) | (t &gt;&gt;&gt; 16)&#xD;    this.SUB_MIX[2][x] = (t &lt;&lt; 8) | (t &gt;&gt;&gt; 24)&#xD;    this.SUB_MIX[3][x] = t&#xD;    t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)&#xD;    this.INV_SUB_MIX[0][sx] = (t &lt;&lt; 24) | (t &gt;&gt;&gt; 8)&#xD;    this.INV_SUB_MIX[1][sx] = (t &lt;&lt; 16) | (t &gt;&gt;&gt; 16)&#xD;    this.INV_SUB_MIX[2][sx] = (t &lt;&lt; 8) | (t &gt;&gt;&gt; 24)&#xD;    this.INV_SUB_MIX[3][sx] = t&#xD;    if (x === 0) {&#xD;      x = xi = 1&#xD;    } else {&#xD;      x = x2 ^ d[d[d[x8 ^ x2]]]&#xD;      xi ^= d[d[xi]]&#xD;    }&#xD;  }&#xD;  return true&#xD;}&#xD;&#xD;var G = new Global()&#xD;&#xD;AES.blockSize = 4 * 4&#xD;&#xD;AES.prototype.blockSize = AES.blockSize&#xD;&#xD;AES.keySize = 256 / 8&#xD;&#xD;AES.prototype.keySize = AES.keySize&#xD;&#xD;function bufferToArray (buf) {&#xD;  var len = buf.length / 4&#xD;  var out = new Array(len)&#xD;  var i = -1&#xD;  while (++i &lt; len) {&#xD;    out[i] = buf.readUInt32BE(i * 4)&#xD;  }&#xD;  return out&#xD;}&#xD;function AES (key) {&#xD;  this._key = bufferToArray(key)&#xD;  this._doReset()&#xD;}&#xD;&#xD;AES.prototype._doReset = function () {&#xD;  var invKsRow, keySize, keyWords, ksRow, ksRows, t&#xD;  keyWords = this._key&#xD;  keySize = keyWords.length&#xD;  this._nRounds = keySize + 6&#xD;  ksRows = (this._nRounds + 1) * 4&#xD;  this._keySchedule = []&#xD;  for (ksRow = 0; ksRow &lt; ksRows; ksRow++) {&#xD;    this._keySchedule[ksRow] = ksRow &lt; keySize ? keyWords[ksRow] : (t = this._keySchedule[ksRow - 1], (ksRow % keySize) === 0 ? (t = (t &lt;&lt; 8) | (t &gt;&gt;&gt; 24), t = (G.SBOX[t &gt;&gt;&gt; 24] &lt;&lt; 24) | (G.SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (G.SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | G.SBOX[t &amp; 0xff], t ^= G.RCON[(ksRow / keySize) | 0] &lt;&lt; 24) : keySize &gt; 6 &amp;&amp; ksRow % keySize === 4 ? t = (G.SBOX[t &gt;&gt;&gt; 24] &lt;&lt; 24) | (G.SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (G.SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | G.SBOX[t &amp; 0xff] : void 0, this._keySchedule[ksRow - keySize] ^ t)&#xD;  }&#xD;  this._invKeySchedule = []&#xD;  for (invKsRow = 0; invKsRow &lt; ksRows; invKsRow++) {&#xD;    ksRow = ksRows - invKsRow&#xD;    t = this._keySchedule[ksRow - (invKsRow % 4 ? 0 : 4)]&#xD;    this._invKeySchedule[invKsRow] = invKsRow &lt; 4 || ksRow &lt;= 4 ? t : G.INV_SUB_MIX[0][G.SBOX[t &gt;&gt;&gt; 24]] ^ G.INV_SUB_MIX[1][G.SBOX[(t &gt;&gt;&gt; 16) &amp; 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[(t &gt;&gt;&gt; 8) &amp; 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[t &amp; 0xff]]&#xD;  }&#xD;  return true&#xD;}&#xD;&#xD;AES.prototype.encryptBlock = function (M) {&#xD;  M = bufferToArray(new Buffer(M))&#xD;  var out = this._doCryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX)&#xD;  var buf = new Buffer(16)&#xD;  buf.writeUInt32BE(out[0], 0)&#xD;  buf.writeUInt32BE(out[1], 4)&#xD;  buf.writeUInt32BE(out[2], 8)&#xD;  buf.writeUInt32BE(out[3], 12)&#xD;  return buf&#xD;}&#xD;&#xD;AES.prototype.decryptBlock = function (M) {&#xD;  M = bufferToArray(new Buffer(M))&#xD;  var temp = [M[3], M[1]]&#xD;  M[1] = temp[0]&#xD;  M[3] = temp[1]&#xD;  var out = this._doCryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX)&#xD;  var buf = new Buffer(16)&#xD;  buf.writeUInt32BE(out[0], 0)&#xD;  buf.writeUInt32BE(out[3], 4)&#xD;  buf.writeUInt32BE(out[2], 8)&#xD;  buf.writeUInt32BE(out[1], 12)&#xD;  return buf&#xD;}&#xD;&#xD;AES.prototype.scrub = function () {&#xD;  scrub_vec(this._keySchedule)&#xD;  scrub_vec(this._invKeySchedule)&#xD;  scrub_vec(this._key)&#xD;}&#xD;&#xD;AES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) {&#xD;  var ksRow, s0, s1, s2, s3, t0, t1, t2, t3&#xD;&#xD;  s0 = M[0] ^ keySchedule[0]&#xD;  s1 = M[1] ^ keySchedule[1]&#xD;  s2 = M[2] ^ keySchedule[2]&#xD;  s3 = M[3] ^ keySchedule[3]&#xD;  ksRow = 4&#xD;  for (var round = 1; round &lt; this._nRounds; round++) {&#xD;    t0 = SUB_MIX[0][s0 &gt;&gt;&gt; 24] ^ SUB_MIX[1][(s1 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX[2][(s2 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX[3][s3 &amp; 0xff] ^ keySchedule[ksRow++]&#xD;    t1 = SUB_MIX[0][s1 &gt;&gt;&gt; 24] ^ SUB_MIX[1][(s2 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX[2][(s3 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX[3][s0 &amp; 0xff] ^ keySchedule[ksRow++]&#xD;    t2 = SUB_MIX[0][s2 &gt;&gt;&gt; 24] ^ SUB_MIX[1][(s3 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX[2][(s0 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX[3][s1 &amp; 0xff] ^ keySchedule[ksRow++]&#xD;    t3 = SUB_MIX[0][s3 &gt;&gt;&gt; 24] ^ SUB_MIX[1][(s0 &gt;&gt;&gt; 16) &amp; 0xff] ^ SUB_MIX[2][(s1 &gt;&gt;&gt; 8) &amp; 0xff] ^ SUB_MIX[3][s2 &amp; 0xff] ^ keySchedule[ksRow++]&#xD;    s0 = t0&#xD;    s1 = t1&#xD;    s2 = t2&#xD;    s3 = t3&#xD;  }&#xD;  t0 = ((SBOX[s0 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s1 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s2 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s3 &amp; 0xff]) ^ keySchedule[ksRow++]&#xD;  t1 = ((SBOX[s1 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s2 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s3 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s0 &amp; 0xff]) ^ keySchedule[ksRow++]&#xD;  t2 = ((SBOX[s2 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s3 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s0 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s1 &amp; 0xff]) ^ keySchedule[ksRow++]&#xD;  t3 = ((SBOX[s3 &gt;&gt;&gt; 24] &lt;&lt; 24) | (SBOX[(s0 &gt;&gt;&gt; 16) &amp; 0xff] &lt;&lt; 16) | (SBOX[(s1 &gt;&gt;&gt; 8) &amp; 0xff] &lt;&lt; 8) | SBOX[s2 &amp; 0xff]) ^ keySchedule[ksRow++]&#xD;  return [&#xD;    fixup_uint32(t0),&#xD;    fixup_uint32(t1),&#xD;    fixup_uint32(t2),&#xD;    fixup_uint32(t3)&#xD;  ]&#xD;}&#xD;&#xD;exports.AES = AES&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 57 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;exports[&apos;aes-128-ecb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 0,&#xD;  mode: &apos;ECB&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes-192-ecb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 0,&#xD;  mode: &apos;ECB&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes-256-ecb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 0,&#xD;  mode: &apos;ECB&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes-128-cbc&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;CBC&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes-192-cbc&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;CBC&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes-256-cbc&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;CBC&apos;,&#xD;  type: &apos;block&apos;&#xD;}&#xD;exports[&apos;aes128&apos;] = exports[&apos;aes-128-cbc&apos;]&#xD;exports[&apos;aes192&apos;] = exports[&apos;aes-192-cbc&apos;]&#xD;exports[&apos;aes256&apos;] = exports[&apos;aes-256-cbc&apos;]&#xD;exports[&apos;aes-128-cfb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;CFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-192-cfb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;CFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-256-cfb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;CFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-128-cfb8&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;CFB8&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-192-cfb8&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;CFB8&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-256-cfb8&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;CFB8&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-128-cfb1&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;CFB1&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-192-cfb1&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;CFB1&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-256-cfb1&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;CFB1&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-128-ofb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;OFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-192-ofb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;OFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-256-ofb&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;OFB&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-128-ctr&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 16,&#xD;  mode: &apos;CTR&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-192-ctr&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 16,&#xD;  mode: &apos;CTR&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-256-ctr&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 16,&#xD;  mode: &apos;CTR&apos;,&#xD;  type: &apos;stream&apos;&#xD;}&#xD;exports[&apos;aes-128-gcm&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 128,&#xD;  iv: 12,&#xD;  mode: &apos;GCM&apos;,&#xD;  type: &apos;auth&apos;&#xD;}&#xD;exports[&apos;aes-192-gcm&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 192,&#xD;  iv: 12,&#xD;  mode: &apos;GCM&apos;,&#xD;  type: &apos;auth&apos;&#xD;}&#xD;exports[&apos;aes-256-gcm&apos;] = {&#xD;  cipher: &apos;AES&apos;,&#xD;  key: 256,&#xD;  iv: 12,&#xD;  mode: &apos;GCM&apos;,&#xD;  type: &apos;auth&apos;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 58 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(47)&#xD;&#xD;function incr32 (iv) {&#xD;  var len = iv.length&#xD;  var item&#xD;  while (len--) {&#xD;    item = iv.readUInt8(len)&#xD;    if (item === 255) {&#xD;      iv.writeUInt8(0, len)&#xD;    } else {&#xD;      item++&#xD;      iv.writeUInt8(item, len)&#xD;      break&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function getBlock (self) {&#xD;  var out = self._cipher.encryptBlock(self._prev)&#xD;  incr32(self._prev)&#xD;  return out&#xD;}&#xD;&#xD;exports.encrypt = function (self, chunk) {&#xD;  while (self._cache.length &lt; chunk.length) {&#xD;    self._cache = Buffer.concat([self._cache, getBlock(self)])&#xD;  }&#xD;  var pad = self._cache.slice(0, chunk.length)&#xD;  self._cache = self._cache.slice(chunk.length)&#xD;  return xor(chunk, pad)&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 59 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var curve = exports;&#xD;&#xD;curve.base = __webpack_require__(310);&#xD;curve.short = __webpack_require__(313);&#xD;curve.mont = __webpack_require__(312);&#xD;curve.edwards = __webpack_require__(311);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 60 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var md5 = __webpack_require__(130)&#xD;module.exports = EVP_BytesToKey&#xD;function EVP_BytesToKey (password, salt, keyLen, ivLen) {&#xD;  if (!Buffer.isBuffer(password)) {&#xD;    password = new Buffer(password, &apos;binary&apos;)&#xD;  }&#xD;  if (salt &amp;&amp; !Buffer.isBuffer(salt)) {&#xD;    salt = new Buffer(salt, &apos;binary&apos;)&#xD;  }&#xD;  keyLen = keyLen / 8&#xD;  ivLen = ivLen || 0&#xD;  var ki = 0&#xD;  var ii = 0&#xD;  var key = new Buffer(keyLen)&#xD;  var iv = new Buffer(ivLen)&#xD;  var addmd = 0&#xD;  var md_buf&#xD;  var i&#xD;  var bufs = []&#xD;  while (true) {&#xD;    if (addmd++ &gt; 0) {&#xD;      bufs.push(md_buf)&#xD;    }&#xD;    bufs.push(password)&#xD;    if (salt) {&#xD;      bufs.push(salt)&#xD;    }&#xD;    md_buf = md5(Buffer.concat(bufs))&#xD;    bufs = []&#xD;    i = 0&#xD;    if (keyLen &gt; 0) {&#xD;      while (true) {&#xD;        if (keyLen === 0) {&#xD;          break&#xD;        }&#xD;        if (i === md_buf.length) {&#xD;          break&#xD;        }&#xD;        key[ki++] = md_buf[i]&#xD;        keyLen--&#xD;        i++&#xD;      }&#xD;    }&#xD;    if (ivLen &gt; 0 &amp;&amp; i !== md_buf.length) {&#xD;      while (true) {&#xD;        if (ivLen === 0) {&#xD;          break&#xD;        }&#xD;        if (i === md_buf.length) {&#xD;          break&#xD;        }&#xD;        iv[ii++] = md_buf[i]&#xD;        ivLen--&#xD;        i++&#xD;      }&#xD;    }&#xD;    if (keyLen === 0 &amp;&amp; ivLen === 0) {&#xD;      break&#xD;    }&#xD;  }&#xD;  for (i = 0; i &lt; md_buf.length; i++) {&#xD;    md_buf[i] = 0&#xD;  }&#xD;  return {&#xD;    key: key,&#xD;    iv: iv&#xD;  }&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 61 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;var TYPED_OK =  (typeof Uint8Array !== &apos;undefined&apos;) &amp;&amp;&#xD;                (typeof Uint16Array !== &apos;undefined&apos;) &amp;&amp;&#xD;                (typeof Int32Array !== &apos;undefined&apos;);&#xD;&#xD;&#xD;exports.assign = function (obj /*from1, from2, from3, ...*/) {&#xD;  var sources = Array.prototype.slice.call(arguments, 1);&#xD;  while (sources.length) {&#xD;    var source = sources.shift();&#xD;    if (!source) { continue; }&#xD;&#xD;    if (typeof source !== &apos;object&apos;) {&#xD;      throw new TypeError(source + &apos;must be non-object&apos;);&#xD;    }&#xD;&#xD;    for (var p in source) {&#xD;      if (source.hasOwnProperty(p)) {&#xD;        obj[p] = source[p];&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  return obj;&#xD;};&#xD;&#xD;&#xD;// reduce buffer size, avoiding mem copy&#xD;exports.shrinkBuf = function (buf, size) {&#xD;  if (buf.length === size) { return buf; }&#xD;  if (buf.subarray) { return buf.subarray(0, size); }&#xD;  buf.length = size;&#xD;  return buf;&#xD;};&#xD;&#xD;&#xD;var fnTyped = {&#xD;  arraySet: function (dest, src, src_offs, len, dest_offs) {&#xD;    if (src.subarray &amp;&amp; dest.subarray) {&#xD;      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);&#xD;      return;&#xD;    }&#xD;    // Fallback to ordinary array&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      dest[dest_offs + i] = src[src_offs + i];&#xD;    }&#xD;  },&#xD;  // Join array of chunks to single array.&#xD;  flattenChunks: function (chunks) {&#xD;    var i, l, len, pos, chunk, result;&#xD;&#xD;    // calculate data length&#xD;    len = 0;&#xD;    for (i = 0, l = chunks.length; i &lt; l; i++) {&#xD;      len += chunks[i].length;&#xD;    }&#xD;&#xD;    // join chunks&#xD;    result = new Uint8Array(len);&#xD;    pos = 0;&#xD;    for (i = 0, l = chunks.length; i &lt; l; i++) {&#xD;      chunk = chunks[i];&#xD;      result.set(chunk, pos);&#xD;      pos += chunk.length;&#xD;    }&#xD;&#xD;    return result;&#xD;  }&#xD;};&#xD;&#xD;var fnUntyped = {&#xD;  arraySet: function (dest, src, src_offs, len, dest_offs) {&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      dest[dest_offs + i] = src[src_offs + i];&#xD;    }&#xD;  },&#xD;  // Join array of chunks to single array.&#xD;  flattenChunks: function (chunks) {&#xD;    return [].concat.apply([], chunks);&#xD;  }&#xD;};&#xD;&#xD;&#xD;// Enable/Disable typed arrays use, for testing&#xD;//&#xD;exports.setTyped = function (on) {&#xD;  if (on) {&#xD;    exports.Buf8  = Uint8Array;&#xD;    exports.Buf16 = Uint16Array;&#xD;    exports.Buf32 = Int32Array;&#xD;    exports.assign(exports, fnTyped);&#xD;  } else {&#xD;    exports.Buf8  = Array;&#xD;    exports.Buf16 = Array;&#xD;    exports.Buf32 = Array;&#xD;    exports.assign(exports, fnUntyped);&#xD;  }&#xD;};&#xD;&#xD;exports.setTyped(TYPED_OK);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 62 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var asn1 = __webpack_require__(382)&#xD;var aesid = __webpack_require__(381)&#xD;var fixProc = __webpack_require__(384)&#xD;var ciphers = __webpack_require__(77)&#xD;var compat = __webpack_require__(146)&#xD;module.exports = parseKeys&#xD;&#xD;function parseKeys (buffer) {&#xD;  var password&#xD;  if (typeof buffer === &apos;object&apos; &amp;&amp; !Buffer.isBuffer(buffer)) {&#xD;    password = buffer.passphrase&#xD;    buffer = buffer.key&#xD;  }&#xD;  if (typeof buffer === &apos;string&apos;) {&#xD;    buffer = new Buffer(buffer)&#xD;  }&#xD;&#xD;  var stripped = fixProc(buffer, password)&#xD;&#xD;  var type = stripped.tag&#xD;  var data = stripped.data&#xD;  var subtype, ndata&#xD;  switch (type) {&#xD;    case &apos;CERTIFICATE&apos;:&#xD;      ndata = asn1.certificate.decode(data, &apos;der&apos;).tbsCertificate.subjectPublicKeyInfo&#xD;      // falls through&#xD;    case &apos;PUBLIC KEY&apos;:&#xD;      if (!ndata) {&#xD;        ndata = asn1.PublicKey.decode(data, &apos;der&apos;)&#xD;      }&#xD;      subtype = ndata.algorithm.algorithm.join(&apos;.&apos;)&#xD;      switch (subtype) {&#xD;        case &apos;1.2.840.113549.1.1.1&apos;:&#xD;          return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, &apos;der&apos;)&#xD;        case &apos;1.2.840.10045.2.1&apos;:&#xD;          ndata.subjectPrivateKey = ndata.subjectPublicKey&#xD;          return {&#xD;            type: &apos;ec&apos;,&#xD;            data: ndata&#xD;          }&#xD;        case &apos;1.2.840.10040.4.1&apos;:&#xD;          ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, &apos;der&apos;)&#xD;          return {&#xD;            type: &apos;dsa&apos;,&#xD;            data: ndata.algorithm.params&#xD;          }&#xD;        default: throw new Error(&apos;unknown key id &apos; + subtype)&#xD;      }&#xD;      throw new Error(&apos;unknown key type &apos; + type)&#xD;    case &apos;ENCRYPTED PRIVATE KEY&apos;:&#xD;      data = asn1.EncryptedPrivateKey.decode(data, &apos;der&apos;)&#xD;      data = decrypt(data, password)&#xD;      // falls through&#xD;    case &apos;PRIVATE KEY&apos;:&#xD;      ndata = asn1.PrivateKey.decode(data, &apos;der&apos;)&#xD;      subtype = ndata.algorithm.algorithm.join(&apos;.&apos;)&#xD;      switch (subtype) {&#xD;        case &apos;1.2.840.113549.1.1.1&apos;:&#xD;          return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, &apos;der&apos;)&#xD;        case &apos;1.2.840.10045.2.1&apos;:&#xD;          return {&#xD;            curve: ndata.algorithm.curve,&#xD;            privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, &apos;der&apos;).privateKey&#xD;          }&#xD;        case &apos;1.2.840.10040.4.1&apos;:&#xD;          ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, &apos;der&apos;)&#xD;          return {&#xD;            type: &apos;dsa&apos;,&#xD;            params: ndata.algorithm.params&#xD;          }&#xD;        default: throw new Error(&apos;unknown key id &apos; + subtype)&#xD;      }&#xD;      throw new Error(&apos;unknown key type &apos; + type)&#xD;    case &apos;RSA PUBLIC KEY&apos;:&#xD;      return asn1.RSAPublicKey.decode(data, &apos;der&apos;)&#xD;    case &apos;RSA PRIVATE KEY&apos;:&#xD;      return asn1.RSAPrivateKey.decode(data, &apos;der&apos;)&#xD;    case &apos;DSA PRIVATE KEY&apos;:&#xD;      return {&#xD;        type: &apos;dsa&apos;,&#xD;        params: asn1.DSAPrivateKey.decode(data, &apos;der&apos;)&#xD;      }&#xD;    case &apos;EC PRIVATE KEY&apos;:&#xD;      data = asn1.ECPrivateKey.decode(data, &apos;der&apos;)&#xD;      return {&#xD;        curve: data.parameters.value,&#xD;        privateKey: data.privateKey&#xD;      }&#xD;    default: throw new Error(&apos;unknown key type &apos; + type)&#xD;  }&#xD;}&#xD;parseKeys.signature = asn1.signature&#xD;function decrypt (data, password) {&#xD;  var salt = data.algorithm.decrypt.kde.kdeparams.salt&#xD;  var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)&#xD;  var algo = aesid[data.algorithm.decrypt.cipher.algo.join(&apos;.&apos;)]&#xD;  var iv = data.algorithm.decrypt.cipher.iv&#xD;  var cipherText = data.subjectPrivateKey&#xD;  var keylen = parseInt(algo.split(&apos;-&apos;)[1], 10) / 8&#xD;  var key = compat.pbkdf2Sync(password, salt, iters, keylen)&#xD;  var cipher = ciphers.createDecipheriv(algo, key, iv)&#xD;  var out = []&#xD;  out.push(cipher.update(cipherText))&#xD;  out.push(cipher.final())&#xD;  return Buffer.concat(out)&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 63 */,&#xD;/* 64 */,&#xD;/* 65 */,&#xD;/* 66 */,&#xD;/* 67 */,&#xD;/* 68 */,&#xD;/* 69 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _propTypes = __webpack_require__(2);&#xD;&#xD;var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _classnames = __webpack_require__(17);&#xD;&#xD;var _classnames2 = _interopRequireDefault(_classnames);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var DEFAULT_CLASS = &apos;react-tabs__tab&apos;;&#xD;&#xD;var Tab = function (_Component) {&#xD;  _inherits(Tab, _Component);&#xD;&#xD;  function Tab() {&#xD;    _classCallCheck(this, Tab);&#xD;&#xD;    return _possibleConstructorReturn(this, _Component.apply(this, arguments));&#xD;  }&#xD;&#xD;  Tab.prototype.componentDidMount = function componentDidMount() {&#xD;    this.checkFocus();&#xD;  };&#xD;&#xD;  Tab.prototype.componentDidUpdate = function componentDidUpdate() {&#xD;    this.checkFocus();&#xD;  };&#xD;&#xD;  Tab.prototype.checkFocus = function checkFocus() {&#xD;    if (this.props.selected &amp;&amp; this.props.focus) {&#xD;      this.node.focus();&#xD;    }&#xD;  };&#xD;&#xD;  Tab.prototype.render = function render() {&#xD;    var _cx,&#xD;        _this2 = this;&#xD;&#xD;    var _props = this.props,&#xD;        children = _props.children,&#xD;        className = _props.className,&#xD;        disabled = _props.disabled,&#xD;        disabledClassName = _props.disabledClassName,&#xD;        focus = _props.focus,&#xD;        id = _props.id,&#xD;        panelId = _props.panelId,&#xD;        selected = _props.selected,&#xD;        selectedClassName = _props.selectedClassName,&#xD;        tabRef = _props.tabRef,&#xD;        attributes = _objectWithoutProperties(_props, [&apos;children&apos;, &apos;className&apos;, &apos;disabled&apos;, &apos;disabledClassName&apos;, &apos;focus&apos;, &apos;id&apos;, &apos;panelId&apos;, &apos;selected&apos;, &apos;selectedClassName&apos;, &apos;tabRef&apos;]);&#xD;&#xD;    return _react2.default.createElement(&#xD;      &apos;li&apos;,&#xD;      _extends({}, attributes, {&#xD;        className: (0, _classnames2.default)(className, (_cx = {}, _cx[selectedClassName] = selected, _cx[disabledClassName] = disabled, _cx)),&#xD;        ref: function ref(node) {&#xD;          _this2.node = node;&#xD;          if (tabRef) tabRef(node);&#xD;        },&#xD;        role: &apos;tab&apos;,&#xD;        id: id,&#xD;        &apos;aria-selected&apos;: selected ? &apos;true&apos; : &apos;false&apos;,&#xD;        &apos;aria-disabled&apos;: disabled ? &apos;true&apos; : &apos;false&apos;,&#xD;        &apos;aria-controls&apos;: panelId,&#xD;        tabIndex: selected ? &apos;0&apos; : null&#xD;      }),&#xD;      children&#xD;    );&#xD;  };&#xD;&#xD;  return Tab;&#xD;}(_react.Component);&#xD;&#xD;Tab.defaultProps = {&#xD;  className: DEFAULT_CLASS,&#xD;  disabledClassName: DEFAULT_CLASS + &apos;--disabled&apos;,&#xD;  focus: false,&#xD;  id: null,&#xD;  panelId: null,&#xD;  selected: false,&#xD;  selectedClassName: DEFAULT_CLASS + &apos;--selected&apos;&#xD;};&#xD;exports.default = Tab;&#xD;Tab.propTypes =  true ? {&#xD;  children: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.object, _propTypes2.default.string]),&#xD;  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.object]),&#xD;  disabled: _propTypes2.default.bool,&#xD;  disabledClassName: _propTypes2.default.string, // private&#xD;  focus: _propTypes2.default.bool, // private&#xD;  id: _propTypes2.default.string, // private&#xD;  panelId: _propTypes2.default.string, // private&#xD;  selected: _propTypes2.default.bool, // private&#xD;  selectedClassName: _propTypes2.default.string, // private&#xD;  tabRef: _propTypes2.default.func } : {};&#xD;&#xD;/***/ }),&#xD;/* 70 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _propTypes = __webpack_require__(2);&#xD;&#xD;var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _classnames = __webpack_require__(17);&#xD;&#xD;var _classnames2 = _interopRequireDefault(_classnames);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var TabList = function (_Component) {&#xD;  _inherits(TabList, _Component);&#xD;&#xD;  function TabList() {&#xD;    _classCallCheck(this, TabList);&#xD;&#xD;    return _possibleConstructorReturn(this, _Component.apply(this, arguments));&#xD;  }&#xD;&#xD;  TabList.prototype.render = function render() {&#xD;    var _props = this.props,&#xD;        children = _props.children,&#xD;        className = _props.className,&#xD;        attributes = _objectWithoutProperties(_props, [&apos;children&apos;, &apos;className&apos;]);&#xD;&#xD;    return _react2.default.createElement(&#xD;      &apos;ul&apos;,&#xD;      _extends({}, attributes, { className: (0, _classnames2.default)(className), role: &apos;tablist&apos; }),&#xD;      children&#xD;    );&#xD;  };&#xD;&#xD;  return TabList;&#xD;}(_react.Component);&#xD;&#xD;TabList.defaultProps = {&#xD;  className: &apos;react-tabs__tab-list&apos;&#xD;};&#xD;exports.default = TabList;&#xD;TabList.propTypes =  true ? {&#xD;  children: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.array]),&#xD;  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.object])&#xD;} : {};&#xD;&#xD;/***/ }),&#xD;/* 71 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _propTypes = __webpack_require__(2);&#xD;&#xD;var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _classnames = __webpack_require__(17);&#xD;&#xD;var _classnames2 = _interopRequireDefault(_classnames);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var DEFAULT_CLASS = &apos;react-tabs__tab-panel&apos;;&#xD;&#xD;var TabPanel = function (_Component) {&#xD;  _inherits(TabPanel, _Component);&#xD;&#xD;  function TabPanel() {&#xD;    _classCallCheck(this, TabPanel);&#xD;&#xD;    return _possibleConstructorReturn(this, _Component.apply(this, arguments));&#xD;  }&#xD;&#xD;  TabPanel.prototype.render = function render() {&#xD;    var _cx;&#xD;&#xD;    var _props = this.props,&#xD;        children = _props.children,&#xD;        className = _props.className,&#xD;        forceRender = _props.forceRender,&#xD;        id = _props.id,&#xD;        selected = _props.selected,&#xD;        selectedClassName = _props.selectedClassName,&#xD;        tabId = _props.tabId,&#xD;        attributes = _objectWithoutProperties(_props, [&apos;children&apos;, &apos;className&apos;, &apos;forceRender&apos;, &apos;id&apos;, &apos;selected&apos;, &apos;selectedClassName&apos;, &apos;tabId&apos;]);&#xD;&#xD;    return _react2.default.createElement(&#xD;      &apos;div&apos;,&#xD;      _extends({}, attributes, {&#xD;        className: (0, _classnames2.default)(className, (_cx = {}, _cx[selectedClassName] = selected, _cx)),&#xD;        role: &apos;tabpanel&apos;,&#xD;        id: id,&#xD;        &apos;aria-labelledby&apos;: tabId&#xD;      }),&#xD;      forceRender || selected ? children : null&#xD;    );&#xD;  };&#xD;&#xD;  return TabPanel;&#xD;}(_react.Component);&#xD;&#xD;TabPanel.defaultProps = {&#xD;  className: DEFAULT_CLASS,&#xD;  forceRender: false,&#xD;  selectedClassName: DEFAULT_CLASS + &apos;--selected&apos;,&#xD;  style: {}&#xD;};&#xD;exports.default = TabPanel;&#xD;TabPanel.propTypes =  true ? {&#xD;  selectedClassName: _propTypes2.default.string, // private&#xD;  children: _propTypes2.default.node,&#xD;  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.object]),&#xD;  forceRender: _propTypes2.default.bool,&#xD;  id: _propTypes2.default.string, // private&#xD;  selected: _propTypes2.default.bool, // private&#xD;  tabId: _propTypes2.default.string } : {};&#xD;&#xD;/***/ }),&#xD;/* 72 */,&#xD;/* 73 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;&#xD;var isBufferEncoding = Buffer.isEncoding&#xD;  || function(encoding) {&#xD;       switch (encoding &amp;&amp; encoding.toLowerCase()) {&#xD;         case &apos;hex&apos;: case &apos;utf8&apos;: case &apos;utf-8&apos;: case &apos;ascii&apos;: case &apos;binary&apos;: case &apos;base64&apos;: case &apos;ucs2&apos;: case &apos;ucs-2&apos;: case &apos;utf16le&apos;: case &apos;utf-16le&apos;: case &apos;raw&apos;: return true;&#xD;         default: return false;&#xD;       }&#xD;     }&#xD;&#xD;&#xD;function assertEncoding(encoding) {&#xD;  if (encoding &amp;&amp; !isBufferEncoding(encoding)) {&#xD;    throw new Error(&apos;Unknown encoding: &apos; + encoding);&#xD;  }&#xD;}&#xD;&#xD;// StringDecoder provides an interface for efficiently splitting a series of&#xD;// buffers into a series of JS strings without breaking apart multi-byte&#xD;// characters. CESU-8 is handled as part of the UTF-8 encoding.&#xD;//&#xD;// @TODO Handling all encodings inside a single object makes it very difficult&#xD;// to reason about this code, so it should be split up in the future.&#xD;// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code&#xD;// points as used by CESU-8.&#xD;var StringDecoder = exports.StringDecoder = function(encoding) {&#xD;  this.encoding = (encoding || &apos;utf8&apos;).toLowerCase().replace(/[-_]/, &apos;&apos;);&#xD;  assertEncoding(encoding);&#xD;  switch (this.encoding) {&#xD;    case &apos;utf8&apos;:&#xD;      // CESU-8 represents each of Surrogate Pair by 3-bytes&#xD;      this.surrogateSize = 3;&#xD;      break;&#xD;    case &apos;ucs2&apos;:&#xD;    case &apos;utf16le&apos;:&#xD;      // UTF-16 represents each of Surrogate Pair by 2-bytes&#xD;      this.surrogateSize = 2;&#xD;      this.detectIncompleteChar = utf16DetectIncompleteChar;&#xD;      break;&#xD;    case &apos;base64&apos;:&#xD;      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.&#xD;      this.surrogateSize = 3;&#xD;      this.detectIncompleteChar = base64DetectIncompleteChar;&#xD;      break;&#xD;    default:&#xD;      this.write = passThroughWrite;&#xD;      return;&#xD;  }&#xD;&#xD;  // Enough space to store all bytes of a single character. UTF-8 needs 4&#xD;  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).&#xD;  this.charBuffer = new Buffer(6);&#xD;  // Number of bytes received for the current incomplete multi-byte character.&#xD;  this.charReceived = 0;&#xD;  // Number of bytes expected for the current incomplete multi-byte character.&#xD;  this.charLength = 0;&#xD;};&#xD;&#xD;&#xD;// write decodes the given buffer and returns it as JS string that is&#xD;// guaranteed to not contain any partial multi-byte characters. Any partial&#xD;// character found at the end of the buffer is buffered up, and will be&#xD;// returned when calling write again with the remaining bytes.&#xD;//&#xD;// Note: Converting a Buffer containing an orphan surrogate to a String&#xD;// currently works, but converting a String to a Buffer (via `new Buffer`, or&#xD;// Buffer#write) will replace incomplete surrogates with the unicode&#xD;// replacement character. See https://codereview.chromium.org/121173009/ .&#xD;StringDecoder.prototype.write = function(buffer) {&#xD;  var charStr = &apos;&apos;;&#xD;  // if our last write ended with an incomplete multibyte character&#xD;  while (this.charLength) {&#xD;    // determine how many remaining bytes this buffer has to offer for this char&#xD;    var available = (buffer.length &gt;= this.charLength - this.charReceived) ?&#xD;        this.charLength - this.charReceived :&#xD;        buffer.length;&#xD;&#xD;    // add the new bytes to the char buffer&#xD;    buffer.copy(this.charBuffer, this.charReceived, 0, available);&#xD;    this.charReceived += available;&#xD;&#xD;    if (this.charReceived &lt; this.charLength) {&#xD;      // still not enough chars in this buffer? wait for more ...&#xD;      return &apos;&apos;;&#xD;    }&#xD;&#xD;    // remove bytes belonging to the current character from the buffer&#xD;    buffer = buffer.slice(available, buffer.length);&#xD;&#xD;    // get the character that was split&#xD;    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);&#xD;&#xD;    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character&#xD;    var charCode = charStr.charCodeAt(charStr.length - 1);&#xD;    if (charCode &gt;= 0xD800 &amp;&amp; charCode &lt;= 0xDBFF) {&#xD;      this.charLength += this.surrogateSize;&#xD;      charStr = &apos;&apos;;&#xD;      continue;&#xD;    }&#xD;    this.charReceived = this.charLength = 0;&#xD;&#xD;    // if there are no more bytes in this buffer, just emit our char&#xD;    if (buffer.length === 0) {&#xD;      return charStr;&#xD;    }&#xD;    break;&#xD;  }&#xD;&#xD;  // determine and set charLength / charReceived&#xD;  this.detectIncompleteChar(buffer);&#xD;&#xD;  var end = buffer.length;&#xD;  if (this.charLength) {&#xD;    // buffer the incomplete character bytes we got&#xD;    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);&#xD;    end -= this.charReceived;&#xD;  }&#xD;&#xD;  charStr += buffer.toString(this.encoding, 0, end);&#xD;&#xD;  var end = charStr.length - 1;&#xD;  var charCode = charStr.charCodeAt(end);&#xD;  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character&#xD;  if (charCode &gt;= 0xD800 &amp;&amp; charCode &lt;= 0xDBFF) {&#xD;    var size = this.surrogateSize;&#xD;    this.charLength += size;&#xD;    this.charReceived += size;&#xD;    this.charBuffer.copy(this.charBuffer, size, 0, size);&#xD;    buffer.copy(this.charBuffer, 0, 0, size);&#xD;    return charStr.substring(0, end);&#xD;  }&#xD;&#xD;  // or just emit the charStr&#xD;  return charStr;&#xD;};&#xD;&#xD;// detectIncompleteChar determines if there is an incomplete UTF-8 character at&#xD;// the end of the given buffer. If so, it sets this.charLength to the byte&#xD;// length that character, and sets this.charReceived to the number of bytes&#xD;// that are available for this character.&#xD;StringDecoder.prototype.detectIncompleteChar = function(buffer) {&#xD;  // determine how many bytes we have to check at the end of this buffer&#xD;  var i = (buffer.length &gt;= 3) ? 3 : buffer.length;&#xD;&#xD;  // Figure out if one of the last i bytes of our buffer announces an&#xD;  // incomplete char.&#xD;  for (; i &gt; 0; i--) {&#xD;    var c = buffer[buffer.length - i];&#xD;&#xD;    // See http://en.wikipedia.org/wiki/UTF-8#Description&#xD;&#xD;    // 110XXXXX&#xD;    if (i == 1 &amp;&amp; c &gt;&gt; 5 == 0x06) {&#xD;      this.charLength = 2;&#xD;      break;&#xD;    }&#xD;&#xD;    // 1110XXXX&#xD;    if (i &lt;= 2 &amp;&amp; c &gt;&gt; 4 == 0x0E) {&#xD;      this.charLength = 3;&#xD;      break;&#xD;    }&#xD;&#xD;    // 11110XXX&#xD;    if (i &lt;= 3 &amp;&amp; c &gt;&gt; 3 == 0x1E) {&#xD;      this.charLength = 4;&#xD;      break;&#xD;    }&#xD;  }&#xD;  this.charReceived = i;&#xD;};&#xD;&#xD;StringDecoder.prototype.end = function(buffer) {&#xD;  var res = &apos;&apos;;&#xD;  if (buffer &amp;&amp; buffer.length)&#xD;    res = this.write(buffer);&#xD;&#xD;  if (this.charReceived) {&#xD;    var cr = this.charReceived;&#xD;    var buf = this.charBuffer;&#xD;    var enc = this.encoding;&#xD;    res += buf.slice(0, cr).toString(enc);&#xD;  }&#xD;&#xD;  return res;&#xD;};&#xD;&#xD;function passThroughWrite(buffer) {&#xD;  return buffer.toString(this.encoding);&#xD;}&#xD;&#xD;function utf16DetectIncompleteChar(buffer) {&#xD;  this.charReceived = buffer.length % 2;&#xD;  this.charLength = this.charReceived ? 2 : 0;&#xD;}&#xD;&#xD;function base64DetectIncompleteChar(buffer) {&#xD;  this.charReceived = buffer.length % 3;&#xD;  this.charLength = this.charReceived ? 3 : 0;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 74 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;var formatRegExp = /%[sdj%]/g;&#xD;exports.format = function(f) {&#xD;  if (!isString(f)) {&#xD;    var objects = [];&#xD;    for (var i = 0; i &lt; arguments.length; i++) {&#xD;      objects.push(inspect(arguments[i]));&#xD;    }&#xD;    return objects.join(&apos; &apos;);&#xD;  }&#xD;&#xD;  var i = 1;&#xD;  var args = arguments;&#xD;  var len = args.length;&#xD;  var str = String(f).replace(formatRegExp, function(x) {&#xD;    if (x === &apos;%%&apos;) return &apos;%&apos;;&#xD;    if (i &gt;= len) return x;&#xD;    switch (x) {&#xD;      case &apos;%s&apos;: return String(args[i++]);&#xD;      case &apos;%d&apos;: return Number(args[i++]);&#xD;      case &apos;%j&apos;:&#xD;        try {&#xD;          return JSON.stringify(args[i++]);&#xD;        } catch (_) {&#xD;          return &apos;[Circular]&apos;;&#xD;        }&#xD;      default:&#xD;        return x;&#xD;    }&#xD;  });&#xD;  for (var x = args[i]; i &lt; len; x = args[++i]) {&#xD;    if (isNull(x) || !isObject(x)) {&#xD;      str += &apos; &apos; + x;&#xD;    } else {&#xD;      str += &apos; &apos; + inspect(x);&#xD;    }&#xD;  }&#xD;  return str;&#xD;};&#xD;&#xD;&#xD;// Mark that a method should not be used.&#xD;// Returns a modified function which warns once by default.&#xD;// If --no-deprecation is set, then it is a no-op.&#xD;exports.deprecate = function(fn, msg) {&#xD;  // Allow for deprecating things in the process of starting up.&#xD;  if (isUndefined(global.process)) {&#xD;    return function() {&#xD;      return exports.deprecate(fn, msg).apply(this, arguments);&#xD;    };&#xD;  }&#xD;&#xD;  if (process.noDeprecation === true) {&#xD;    return fn;&#xD;  }&#xD;&#xD;  var warned = false;&#xD;  function deprecated() {&#xD;    if (!warned) {&#xD;      if (process.throwDeprecation) {&#xD;        throw new Error(msg);&#xD;      } else if (process.traceDeprecation) {&#xD;        console.trace(msg);&#xD;      } else {&#xD;        console.error(msg);&#xD;      }&#xD;      warned = true;&#xD;    }&#xD;    return fn.apply(this, arguments);&#xD;  }&#xD;&#xD;  return deprecated;&#xD;};&#xD;&#xD;&#xD;var debugs = {};&#xD;var debugEnviron;&#xD;exports.debuglog = function(set) {&#xD;  if (isUndefined(debugEnviron))&#xD;    debugEnviron = process.env.NODE_DEBUG || &apos;&apos;;&#xD;  set = set.toUpperCase();&#xD;  if (!debugs[set]) {&#xD;    if (new RegExp(&apos;\\b&apos; + set + &apos;\\b&apos;, &apos;i&apos;).test(debugEnviron)) {&#xD;      var pid = process.pid;&#xD;      debugs[set] = function() {&#xD;        var msg = exports.format.apply(exports, arguments);&#xD;        console.error(&apos;%s %d: %s&apos;, set, pid, msg);&#xD;      };&#xD;    } else {&#xD;      debugs[set] = function() {};&#xD;    }&#xD;  }&#xD;  return debugs[set];&#xD;};&#xD;&#xD;&#xD;/**&#xD; * Echos the value of a value. Trys to print the value out&#xD; * in the best way possible given the different types.&#xD; *&#xD; * @param {Object} obj The object to print out.&#xD; * @param {Object} opts Optional options object that alters the output.&#xD; */&#xD;/* legacy: obj, showHidden, depth, colors*/&#xD;function inspect(obj, opts) {&#xD;  // default options&#xD;  var ctx = {&#xD;    seen: [],&#xD;    stylize: stylizeNoColor&#xD;  };&#xD;  // legacy...&#xD;  if (arguments.length &gt;= 3) ctx.depth = arguments[2];&#xD;  if (arguments.length &gt;= 4) ctx.colors = arguments[3];&#xD;  if (isBoolean(opts)) {&#xD;    // legacy...&#xD;    ctx.showHidden = opts;&#xD;  } else if (opts) {&#xD;    // got an "options" object&#xD;    exports._extend(ctx, opts);&#xD;  }&#xD;  // set default options&#xD;  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;&#xD;  if (isUndefined(ctx.depth)) ctx.depth = 2;&#xD;  if (isUndefined(ctx.colors)) ctx.colors = false;&#xD;  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;&#xD;  if (ctx.colors) ctx.stylize = stylizeWithColor;&#xD;  return formatValue(ctx, obj, ctx.depth);&#xD;}&#xD;exports.inspect = inspect;&#xD;&#xD;&#xD;// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics&#xD;inspect.colors = {&#xD;  &apos;bold&apos; : [1, 22],&#xD;  &apos;italic&apos; : [3, 23],&#xD;  &apos;underline&apos; : [4, 24],&#xD;  &apos;inverse&apos; : [7, 27],&#xD;  &apos;white&apos; : [37, 39],&#xD;  &apos;grey&apos; : [90, 39],&#xD;  &apos;black&apos; : [30, 39],&#xD;  &apos;blue&apos; : [34, 39],&#xD;  &apos;cyan&apos; : [36, 39],&#xD;  &apos;green&apos; : [32, 39],&#xD;  &apos;magenta&apos; : [35, 39],&#xD;  &apos;red&apos; : [31, 39],&#xD;  &apos;yellow&apos; : [33, 39]&#xD;};&#xD;&#xD;// Don&apos;t use &apos;blue&apos; not visible on cmd.exe&#xD;inspect.styles = {&#xD;  &apos;special&apos;: &apos;cyan&apos;,&#xD;  &apos;number&apos;: &apos;yellow&apos;,&#xD;  &apos;boolean&apos;: &apos;yellow&apos;,&#xD;  &apos;undefined&apos;: &apos;grey&apos;,&#xD;  &apos;null&apos;: &apos;bold&apos;,&#xD;  &apos;string&apos;: &apos;green&apos;,&#xD;  &apos;date&apos;: &apos;magenta&apos;,&#xD;  // "name": intentionally not styling&#xD;  &apos;regexp&apos;: &apos;red&apos;&#xD;};&#xD;&#xD;&#xD;function stylizeWithColor(str, styleType) {&#xD;  var style = inspect.styles[styleType];&#xD;&#xD;  if (style) {&#xD;    return &apos;\u001b[&apos; + inspect.colors[style][0] + &apos;m&apos; + str +&#xD;           &apos;\u001b[&apos; + inspect.colors[style][1] + &apos;m&apos;;&#xD;  } else {&#xD;    return str;&#xD;  }&#xD;}&#xD;&#xD;&#xD;function stylizeNoColor(str, styleType) {&#xD;  return str;&#xD;}&#xD;&#xD;&#xD;function arrayToHash(array) {&#xD;  var hash = {};&#xD;&#xD;  array.forEach(function(val, idx) {&#xD;    hash[val] = true;&#xD;  });&#xD;&#xD;  return hash;&#xD;}&#xD;&#xD;&#xD;function formatValue(ctx, value, recurseTimes) {&#xD;  // Provide a hook for user-specified inspect functions.&#xD;  // Check that value is an object with an inspect function on it&#xD;  if (ctx.customInspect &amp;&amp;&#xD;      value &amp;&amp;&#xD;      isFunction(value.inspect) &amp;&amp;&#xD;      // Filter out the util module, it&apos;s inspect function is special&#xD;      value.inspect !== exports.inspect &amp;&amp;&#xD;      // Also filter out any prototype objects using the circular check.&#xD;      !(value.constructor &amp;&amp; value.constructor.prototype === value)) {&#xD;    var ret = value.inspect(recurseTimes, ctx);&#xD;    if (!isString(ret)) {&#xD;      ret = formatValue(ctx, ret, recurseTimes);&#xD;    }&#xD;    return ret;&#xD;  }&#xD;&#xD;  // Primitive types cannot have properties&#xD;  var primitive = formatPrimitive(ctx, value);&#xD;  if (primitive) {&#xD;    return primitive;&#xD;  }&#xD;&#xD;  // Look up the keys of the object.&#xD;  var keys = Object.keys(value);&#xD;  var visibleKeys = arrayToHash(keys);&#xD;&#xD;  if (ctx.showHidden) {&#xD;    keys = Object.getOwnPropertyNames(value);&#xD;  }&#xD;&#xD;  // IE doesn&apos;t make error fields non-enumerable&#xD;  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx&#xD;  if (isError(value)&#xD;      &amp;&amp; (keys.indexOf(&apos;message&apos;) &gt;= 0 || keys.indexOf(&apos;description&apos;) &gt;= 0)) {&#xD;    return formatError(value);&#xD;  }&#xD;&#xD;  // Some type of object without properties can be shortcutted.&#xD;  if (keys.length === 0) {&#xD;    if (isFunction(value)) {&#xD;      var name = value.name ? &apos;: &apos; + value.name : &apos;&apos;;&#xD;      return ctx.stylize(&apos;[Function&apos; + name + &apos;]&apos;, &apos;special&apos;);&#xD;    }&#xD;    if (isRegExp(value)) {&#xD;      return ctx.stylize(RegExp.prototype.toString.call(value), &apos;regexp&apos;);&#xD;    }&#xD;    if (isDate(value)) {&#xD;      return ctx.stylize(Date.prototype.toString.call(value), &apos;date&apos;);&#xD;    }&#xD;    if (isError(value)) {&#xD;      return formatError(value);&#xD;    }&#xD;  }&#xD;&#xD;  var base = &apos;&apos;, array = false, braces = [&apos;{&apos;, &apos;}&apos;];&#xD;&#xD;  // Make Array say that they are Array&#xD;  if (isArray(value)) {&#xD;    array = true;&#xD;    braces = [&apos;[&apos;, &apos;]&apos;];&#xD;  }&#xD;&#xD;  // Make functions say that they are functions&#xD;  if (isFunction(value)) {&#xD;    var n = value.name ? &apos;: &apos; + value.name : &apos;&apos;;&#xD;    base = &apos; [Function&apos; + n + &apos;]&apos;;&#xD;  }&#xD;&#xD;  // Make RegExps say that they are RegExps&#xD;  if (isRegExp(value)) {&#xD;    base = &apos; &apos; + RegExp.prototype.toString.call(value);&#xD;  }&#xD;&#xD;  // Make dates with properties first say the date&#xD;  if (isDate(value)) {&#xD;    base = &apos; &apos; + Date.prototype.toUTCString.call(value);&#xD;  }&#xD;&#xD;  // Make error with message first say the error&#xD;  if (isError(value)) {&#xD;    base = &apos; &apos; + formatError(value);&#xD;  }&#xD;&#xD;  if (keys.length === 0 &amp;&amp; (!array || value.length == 0)) {&#xD;    return braces[0] + base + braces[1];&#xD;  }&#xD;&#xD;  if (recurseTimes &lt; 0) {&#xD;    if (isRegExp(value)) {&#xD;      return ctx.stylize(RegExp.prototype.toString.call(value), &apos;regexp&apos;);&#xD;    } else {&#xD;      return ctx.stylize(&apos;[Object]&apos;, &apos;special&apos;);&#xD;    }&#xD;  }&#xD;&#xD;  ctx.seen.push(value);&#xD;&#xD;  var output;&#xD;  if (array) {&#xD;    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);&#xD;  } else {&#xD;    output = keys.map(function(key) {&#xD;      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);&#xD;    });&#xD;  }&#xD;&#xD;  ctx.seen.pop();&#xD;&#xD;  return reduceToSingleString(output, base, braces);&#xD;}&#xD;&#xD;&#xD;function formatPrimitive(ctx, value) {&#xD;  if (isUndefined(value))&#xD;    return ctx.stylize(&apos;undefined&apos;, &apos;undefined&apos;);&#xD;  if (isString(value)) {&#xD;    var simple = &apos;\&apos;&apos; + JSON.stringify(value).replace(/^"|"$/g, &apos;&apos;)&#xD;                                             .replace(/&apos;/g, "\\&apos;")&#xD;                                             .replace(/\\"/g, &apos;"&apos;) + &apos;\&apos;&apos;;&#xD;    return ctx.stylize(simple, &apos;string&apos;);&#xD;  }&#xD;  if (isNumber(value))&#xD;    return ctx.stylize(&apos;&apos; + value, &apos;number&apos;);&#xD;  if (isBoolean(value))&#xD;    return ctx.stylize(&apos;&apos; + value, &apos;boolean&apos;);&#xD;  // For some reason typeof null is "object", so special case here.&#xD;  if (isNull(value))&#xD;    return ctx.stylize(&apos;null&apos;, &apos;null&apos;);&#xD;}&#xD;&#xD;&#xD;function formatError(value) {&#xD;  return &apos;[&apos; + Error.prototype.toString.call(value) + &apos;]&apos;;&#xD;}&#xD;&#xD;&#xD;function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {&#xD;  var output = [];&#xD;  for (var i = 0, l = value.length; i &lt; l; ++i) {&#xD;    if (hasOwnProperty(value, String(i))) {&#xD;      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,&#xD;          String(i), true));&#xD;    } else {&#xD;      output.push(&apos;&apos;);&#xD;    }&#xD;  }&#xD;  keys.forEach(function(key) {&#xD;    if (!key.match(/^\d+$/)) {&#xD;      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,&#xD;          key, true));&#xD;    }&#xD;  });&#xD;  return output;&#xD;}&#xD;&#xD;&#xD;function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {&#xD;  var name, str, desc;&#xD;  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };&#xD;  if (desc.get) {&#xD;    if (desc.set) {&#xD;      str = ctx.stylize(&apos;[Getter/Setter]&apos;, &apos;special&apos;);&#xD;    } else {&#xD;      str = ctx.stylize(&apos;[Getter]&apos;, &apos;special&apos;);&#xD;    }&#xD;  } else {&#xD;    if (desc.set) {&#xD;      str = ctx.stylize(&apos;[Setter]&apos;, &apos;special&apos;);&#xD;    }&#xD;  }&#xD;  if (!hasOwnProperty(visibleKeys, key)) {&#xD;    name = &apos;[&apos; + key + &apos;]&apos;;&#xD;  }&#xD;  if (!str) {&#xD;    if (ctx.seen.indexOf(desc.value) &lt; 0) {&#xD;      if (isNull(recurseTimes)) {&#xD;        str = formatValue(ctx, desc.value, null);&#xD;      } else {&#xD;        str = formatValue(ctx, desc.value, recurseTimes - 1);&#xD;      }&#xD;      if (str.indexOf(&apos;\n&apos;) &gt; -1) {&#xD;        if (array) {&#xD;          str = str.split(&apos;\n&apos;).map(function(line) {&#xD;            return &apos;  &apos; + line;&#xD;          }).join(&apos;\n&apos;).substr(2);&#xD;        } else {&#xD;          str = &apos;\n&apos; + str.split(&apos;\n&apos;).map(function(line) {&#xD;            return &apos;   &apos; + line;&#xD;          }).join(&apos;\n&apos;);&#xD;        }&#xD;      }&#xD;    } else {&#xD;      str = ctx.stylize(&apos;[Circular]&apos;, &apos;special&apos;);&#xD;    }&#xD;  }&#xD;  if (isUndefined(name)) {&#xD;    if (array &amp;&amp; key.match(/^\d+$/)) {&#xD;      return str;&#xD;    }&#xD;    name = JSON.stringify(&apos;&apos; + key);&#xD;    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {&#xD;      name = name.substr(1, name.length - 2);&#xD;      name = ctx.stylize(name, &apos;name&apos;);&#xD;    } else {&#xD;      name = name.replace(/&apos;/g, "\\&apos;")&#xD;                 .replace(/\\"/g, &apos;"&apos;)&#xD;                 .replace(/(^"|"$)/g, "&apos;");&#xD;      name = ctx.stylize(name, &apos;string&apos;);&#xD;    }&#xD;  }&#xD;&#xD;  return name + &apos;: &apos; + str;&#xD;}&#xD;&#xD;&#xD;function reduceToSingleString(output, base, braces) {&#xD;  var numLinesEst = 0;&#xD;  var length = output.reduce(function(prev, cur) {&#xD;    numLinesEst++;&#xD;    if (cur.indexOf(&apos;\n&apos;) &gt;= 0) numLinesEst++;&#xD;    return prev + cur.replace(/\u001b\[\d\d?m/g, &apos;&apos;).length + 1;&#xD;  }, 0);&#xD;&#xD;  if (length &gt; 60) {&#xD;    return braces[0] +&#xD;           (base === &apos;&apos; ? &apos;&apos; : base + &apos;\n &apos;) +&#xD;           &apos; &apos; +&#xD;           output.join(&apos;,\n  &apos;) +&#xD;           &apos; &apos; +&#xD;           braces[1];&#xD;  }&#xD;&#xD;  return braces[0] + base + &apos; &apos; + output.join(&apos;, &apos;) + &apos; &apos; + braces[1];&#xD;}&#xD;&#xD;&#xD;// NOTE: These type checking functions intentionally don&apos;t use `instanceof`&#xD;// because it is fragile and can be easily faked with `Object.create()`.&#xD;function isArray(ar) {&#xD;  return Array.isArray(ar);&#xD;}&#xD;exports.isArray = isArray;&#xD;&#xD;function isBoolean(arg) {&#xD;  return typeof arg === &apos;boolean&apos;;&#xD;}&#xD;exports.isBoolean = isBoolean;&#xD;&#xD;function isNull(arg) {&#xD;  return arg === null;&#xD;}&#xD;exports.isNull = isNull;&#xD;&#xD;function isNullOrUndefined(arg) {&#xD;  return arg == null;&#xD;}&#xD;exports.isNullOrUndefined = isNullOrUndefined;&#xD;&#xD;function isNumber(arg) {&#xD;  return typeof arg === &apos;number&apos;;&#xD;}&#xD;exports.isNumber = isNumber;&#xD;&#xD;function isString(arg) {&#xD;  return typeof arg === &apos;string&apos;;&#xD;}&#xD;exports.isString = isString;&#xD;&#xD;function isSymbol(arg) {&#xD;  return typeof arg === &apos;symbol&apos;;&#xD;}&#xD;exports.isSymbol = isSymbol;&#xD;&#xD;function isUndefined(arg) {&#xD;  return arg === void 0;&#xD;}&#xD;exports.isUndefined = isUndefined;&#xD;&#xD;function isRegExp(re) {&#xD;  return isObject(re) &amp;&amp; objectToString(re) === &apos;[object RegExp]&apos;;&#xD;}&#xD;exports.isRegExp = isRegExp;&#xD;&#xD;function isObject(arg) {&#xD;  return typeof arg === &apos;object&apos; &amp;&amp; arg !== null;&#xD;}&#xD;exports.isObject = isObject;&#xD;&#xD;function isDate(d) {&#xD;  return isObject(d) &amp;&amp; objectToString(d) === &apos;[object Date]&apos;;&#xD;}&#xD;exports.isDate = isDate;&#xD;&#xD;function isError(e) {&#xD;  return isObject(e) &amp;&amp;&#xD;      (objectToString(e) === &apos;[object Error]&apos; || e instanceof Error);&#xD;}&#xD;exports.isError = isError;&#xD;&#xD;function isFunction(arg) {&#xD;  return typeof arg === &apos;function&apos;;&#xD;}&#xD;exports.isFunction = isFunction;&#xD;&#xD;function isPrimitive(arg) {&#xD;  return arg === null ||&#xD;         typeof arg === &apos;boolean&apos; ||&#xD;         typeof arg === &apos;number&apos; ||&#xD;         typeof arg === &apos;string&apos; ||&#xD;         typeof arg === &apos;symbol&apos; ||  // ES6 symbol&#xD;         typeof arg === &apos;undefined&apos;;&#xD;}&#xD;exports.isPrimitive = isPrimitive;&#xD;&#xD;exports.isBuffer = __webpack_require__(560);&#xD;&#xD;function objectToString(o) {&#xD;  return Object.prototype.toString.call(o);&#xD;}&#xD;&#xD;&#xD;function pad(n) {&#xD;  return n &lt; 10 ? &apos;0&apos; + n.toString(10) : n.toString(10);&#xD;}&#xD;&#xD;&#xD;var months = [&apos;Jan&apos;, &apos;Feb&apos;, &apos;Mar&apos;, &apos;Apr&apos;, &apos;May&apos;, &apos;Jun&apos;, &apos;Jul&apos;, &apos;Aug&apos;, &apos;Sep&apos;,&#xD;              &apos;Oct&apos;, &apos;Nov&apos;, &apos;Dec&apos;];&#xD;&#xD;// 26 Feb 16:19:34&#xD;function timestamp() {&#xD;  var d = new Date();&#xD;  var time = [pad(d.getHours()),&#xD;              pad(d.getMinutes()),&#xD;              pad(d.getSeconds())].join(&apos;:&apos;);&#xD;  return [d.getDate(), months[d.getMonth()], time].join(&apos; &apos;);&#xD;}&#xD;&#xD;&#xD;// log is just a thin wrapper to console.log that prepends a timestamp&#xD;exports.log = function() {&#xD;  console.log(&apos;%s - %s&apos;, timestamp(), exports.format.apply(exports, arguments));&#xD;};&#xD;&#xD;&#xD;/**&#xD; * Inherit the prototype methods from one constructor into another.&#xD; *&#xD; * The Function.prototype.inherits from lang.js rewritten as a standalone&#xD; * function (not on Function.prototype). NOTE: If this file is to be loaded&#xD; * during bootstrapping this function needs to be rewritten using some native&#xD; * functions as prototype setup using normal JavaScript does not work as&#xD; * expected during bootstrapping (see mirror.js in r114903).&#xD; *&#xD; * @param {function} ctor Constructor function which needs to inherit the&#xD; *     prototype.&#xD; * @param {function} superCtor Constructor function to inherit prototype from.&#xD; */&#xD;exports.inherits = __webpack_require__(559);&#xD;&#xD;exports._extend = function(origin, add) {&#xD;  // Don&apos;t do anything if add isn&apos;t an object&#xD;  if (!add || !isObject(add)) return origin;&#xD;&#xD;  var keys = Object.keys(add);&#xD;  var i = keys.length;&#xD;  while (i--) {&#xD;    origin[keys[i]] = add[keys[i]];&#xD;  }&#xD;  return origin;&#xD;};&#xD;&#xD;function hasOwnProperty(obj, prop) {&#xD;  return Object.prototype.hasOwnProperty.call(obj, prop);&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13), __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 75 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = function(module) {&#xD;	if(!module.webpackPolyfill) {&#xD;		module.deprecate = function() {};&#xD;		module.paths = [];&#xD;		// module.parent = undefined by default&#xD;		if(!module.children) module.children = [];&#xD;		Object.defineProperty(module, "loaded", {&#xD;			enumerable: true,&#xD;			get: function() {&#xD;				return module.l;&#xD;			}&#xD;		});&#xD;		Object.defineProperty(module, "id", {&#xD;			enumerable: true,&#xD;			get: function() {&#xD;				return module.i;&#xD;			}&#xD;		});&#xD;		module.webpackPolyfill = 1;&#xD;	}&#xD;	return module;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 76 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;Object.defineProperty(__webpack_exports__, "__esModule", { value: true });&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createStore__ = __webpack_require__(192);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__combineReducers__ = __webpack_require__(504);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bindActionCreators__ = __webpack_require__(503);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__applyMiddleware__ = __webpack_require__(502);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__compose__ = __webpack_require__(191);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils_warning__ = __webpack_require__(193);&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return __WEBPACK_IMPORTED_MODULE_0__createStore__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return __WEBPACK_IMPORTED_MODULE_1__combineReducers__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return __WEBPACK_IMPORTED_MODULE_2__bindActionCreators__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return __WEBPACK_IMPORTED_MODULE_3__applyMiddleware__["a"]; });&#xD;/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return __WEBPACK_IMPORTED_MODULE_4__compose__["a"]; });&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;/*&#xD;* This is a dummy function to check if the function name has been altered by minification.&#xD;* If the function has been minified and NODE_ENV !== &apos;production&apos;, warn the user.&#xD;*/&#xD;function isCrushed() {}&#xD;&#xD;if ("undefined" !== &apos;production&apos; &amp;&amp; typeof isCrushed.name === &apos;string&apos; &amp;&amp; isCrushed.name !== &apos;isCrushed&apos;) {&#xD;  __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_5__utils_warning__["a" /* default */])(&apos;You are currently using minified code outside of NODE_ENV === \&apos;production\&apos;. &apos; + &apos;This means that you are running a slower development build of Redux. &apos; + &apos;You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify &apos; + &apos;or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) &apos; + &apos;to ensure you have the correct code for your production build.&apos;);&#xD;}&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 77 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ciphers = __webpack_require__(260)&#xD;exports.createCipher = exports.Cipher = ciphers.createCipher&#xD;exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv&#xD;var deciphers = __webpack_require__(259)&#xD;exports.createDecipher = exports.Decipher = deciphers.createDecipher&#xD;exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv&#xD;var modes = __webpack_require__(57)&#xD;function getCiphers () {&#xD;  return Object.keys(modes)&#xD;}&#xD;exports.listCiphers = exports.getCiphers = getCiphers&#xD;&#xD;&#xD;/***/ }),&#xD;/* 78 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(11);&#xD;var randomBytes = __webpack_require__(49);&#xD;module.exports = crt;&#xD;function blind(priv) {&#xD;  var r = getr(priv);&#xD;  var blinder = r.toRed(bn.mont(priv.modulus))&#xD;  .redPow(new bn(priv.publicExponent)).fromRed();&#xD;  return {&#xD;    blinder: blinder,&#xD;    unblinder:r.invm(priv.modulus)&#xD;  };&#xD;}&#xD;function crt(msg, priv) {&#xD;  var blinds = blind(priv);&#xD;  var len = priv.modulus.byteLength();&#xD;  var mod = bn.mont(priv.modulus);&#xD;  var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus);&#xD;  var c1 = blinded.toRed(bn.mont(priv.prime1));&#xD;  var c2 = blinded.toRed(bn.mont(priv.prime2));&#xD;  var qinv = priv.coefficient;&#xD;  var p = priv.prime1;&#xD;  var q = priv.prime2;&#xD;  var m1 = c1.redPow(priv.exponent1);&#xD;  var m2 = c2.redPow(priv.exponent2);&#xD;  m1 = m1.fromRed();&#xD;  m2 = m2.fromRed();&#xD;  var h = m1.isub(m2).imul(qinv).umod(p);&#xD;  h.imul(q);&#xD;  m2.iadd(h);&#xD;  return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len));&#xD;}&#xD;crt.getr = getr;&#xD;function getr(priv) {&#xD;  var len = priv.modulus.byteLength();&#xD;  var r = new bn(randomBytes(len));&#xD;  while (r.cmp(priv.modulus) &gt;=  0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) {&#xD;    r = new bn(randomBytes(len));&#xD;  }&#xD;  return r;&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 79 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global) {&#xD;&#xD;var buffer = __webpack_require__(1);&#xD;var Buffer = buffer.Buffer;&#xD;var SlowBuffer = buffer.SlowBuffer;&#xD;var MAX_LEN = buffer.kMaxLength || 2147483647;&#xD;exports.alloc = function alloc(size, fill, encoding) {&#xD;  if (typeof Buffer.alloc === &apos;function&apos;) {&#xD;    return Buffer.alloc(size, fill, encoding);&#xD;  }&#xD;  if (typeof encoding === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;encoding must not be number&apos;);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  var enc = encoding;&#xD;  var _fill = fill;&#xD;  if (_fill === undefined) {&#xD;    enc = undefined;&#xD;    _fill = 0;&#xD;  }&#xD;  var buf = new Buffer(size);&#xD;  if (typeof _fill === &apos;string&apos;) {&#xD;    var fillBuf = new Buffer(_fill, enc);&#xD;    var flen = fillBuf.length;&#xD;    var i = -1;&#xD;    while (++i &lt; size) {&#xD;      buf[i] = fillBuf[i % flen];&#xD;    }&#xD;  } else {&#xD;    buf.fill(_fill);&#xD;  }&#xD;  return buf;&#xD;}&#xD;exports.allocUnsafe = function allocUnsafe(size) {&#xD;  if (typeof Buffer.allocUnsafe === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafe(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new Buffer(size);&#xD;}&#xD;exports.from = function from(value, encodingOrOffset, length) {&#xD;  if (typeof Buffer.from === &apos;function&apos; &amp;&amp; (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {&#xD;    return Buffer.from(value, encodingOrOffset, length);&#xD;  }&#xD;  if (typeof value === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;"value" argument must not be a number&apos;);&#xD;  }&#xD;  if (typeof value === &apos;string&apos;) {&#xD;    return new Buffer(value, encodingOrOffset);&#xD;  }&#xD;  if (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value instanceof ArrayBuffer) {&#xD;    var offset = encodingOrOffset;&#xD;    if (arguments.length === 1) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (typeof offset === &apos;undefined&apos;) {&#xD;      offset = 0;&#xD;    }&#xD;    var len = length;&#xD;    if (typeof len === &apos;undefined&apos;) {&#xD;      len = value.byteLength - offset;&#xD;    }&#xD;    if (offset &gt;= value.byteLength) {&#xD;      throw new RangeError(&apos;\&apos;offset\&apos; is out of bounds&apos;);&#xD;    }&#xD;    if (len &gt; value.byteLength - offset) {&#xD;      throw new RangeError(&apos;\&apos;length\&apos; is out of bounds&apos;);&#xD;    }&#xD;    return new Buffer(value.slice(offset, offset + len));&#xD;  }&#xD;  if (Buffer.isBuffer(value)) {&#xD;    var out = new Buffer(value.length);&#xD;    value.copy(out, 0, 0, value.length);&#xD;    return out;&#xD;  }&#xD;  if (value) {&#xD;    if (Array.isArray(value) || (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value.buffer instanceof ArrayBuffer) || &apos;length&apos; in value) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (value.type === &apos;Buffer&apos; &amp;&amp; Array.isArray(value.data)) {&#xD;      return new Buffer(value.data);&#xD;    }&#xD;  }&#xD;&#xD;  throw new TypeError(&apos;First argument must be a string, Buffer, &apos; + &apos;ArrayBuffer, Array, or array-like object.&apos;);&#xD;}&#xD;exports.allocUnsafeSlow = function allocUnsafeSlow(size) {&#xD;  if (typeof Buffer.allocUnsafeSlow === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafeSlow(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt;= MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new SlowBuffer(size);&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 80 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {&#xD;var createHash = __webpack_require__(39);&#xD;var inherits = __webpack_require__(5)&#xD;&#xD;var Transform = __webpack_require__(29).Transform&#xD;&#xD;var ZEROS = new Buffer(128)&#xD;ZEROS.fill(0)&#xD;&#xD;function Hmac(alg, key) {&#xD;  Transform.call(this)&#xD;  alg = alg.toLowerCase()&#xD;  if (typeof key === &apos;string&apos;) {&#xD;    key = new Buffer(key)&#xD;  }&#xD;&#xD;  var blocksize = (alg === &apos;sha512&apos; || alg === &apos;sha384&apos;) ? 128 : 64&#xD;&#xD;  this._alg = alg&#xD;  this._key = key&#xD;&#xD;  if (key.length &gt; blocksize) {&#xD;    key = createHash(alg).update(key).digest()&#xD;&#xD;  } else if (key.length &lt; blocksize) {&#xD;    key = Buffer.concat([key, ZEROS], blocksize)&#xD;  }&#xD;&#xD;  var ipad = this._ipad = new Buffer(blocksize)&#xD;  var opad = this._opad = new Buffer(blocksize)&#xD;&#xD;  for (var i = 0; i &lt; blocksize; i++) {&#xD;    ipad[i] = key[i] ^ 0x36&#xD;    opad[i] = key[i] ^ 0x5C&#xD;  }&#xD;&#xD;  this._hash = createHash(alg).update(ipad)&#xD;}&#xD;&#xD;inherits(Hmac, Transform)&#xD;&#xD;Hmac.prototype.update = function (data, enc) {&#xD;  this._hash.update(data, enc)&#xD;&#xD;  return this&#xD;}&#xD;&#xD;Hmac.prototype._transform = function (data, _, next) {&#xD;  this._hash.update(data)&#xD;&#xD;  next()&#xD;}&#xD;&#xD;Hmac.prototype._flush = function (next) {&#xD;  this.push(this.digest())&#xD;&#xD;  next()&#xD;}&#xD;&#xD;Hmac.prototype.digest = function (enc) {&#xD;  var h = this._hash.digest()&#xD;&#xD;  return createHash(this._alg).update(this._opad).update(h).digest(enc)&#xD;}&#xD;&#xD;module.exports = function createHmac(alg, key) {&#xD;  return new Hmac(alg, key)&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 81 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.utils = __webpack_require__(305);&#xD;exports.Cipher = __webpack_require__(302);&#xD;exports.DES = __webpack_require__(303);&#xD;exports.CBC = __webpack_require__(301);&#xD;exports.EDE = __webpack_require__(304);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 82 */,&#xD;/* 83 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseGetTag_js__ = __webpack_require__(353);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getPrototype_js__ = __webpack_require__(355);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObjectLike_js__ = __webpack_require__(360);&#xD;&#xD;&#xD;&#xD;&#xD;/** `Object#toString` result references. */&#xD;var objectTag = &apos;[object Object]&apos;;&#xD;&#xD;/** Used for built-in method references. */&#xD;var funcProto = Function.prototype,&#xD;    objectProto = Object.prototype;&#xD;&#xD;/** Used to resolve the decompiled source of functions. */&#xD;var funcToString = funcProto.toString;&#xD;&#xD;/** Used to check objects for own properties. */&#xD;var hasOwnProperty = objectProto.hasOwnProperty;&#xD;&#xD;/** Used to infer the `Object` constructor. */&#xD;var objectCtorString = funcToString.call(Object);&#xD;&#xD;/**&#xD; * Checks if `value` is a plain object, that is, an object created by the&#xD; * `Object` constructor or one with a `[[Prototype]]` of `null`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.8.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; * }&#xD; *&#xD; * _.isPlainObject(new Foo);&#xD; * // =&gt; false&#xD; *&#xD; * _.isPlainObject([1, 2, 3]);&#xD; * // =&gt; false&#xD; *&#xD; * _.isPlainObject({ &apos;x&apos;: 0, &apos;y&apos;: 0 });&#xD; * // =&gt; true&#xD; *&#xD; * _.isPlainObject(Object.create(null));&#xD; * // =&gt; true&#xD; */&#xD;function isPlainObject(value) {&#xD;  if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__isObjectLike_js__["a" /* default */])(value) || __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__baseGetTag_js__["a" /* default */])(value) != objectTag) {&#xD;    return false;&#xD;  }&#xD;  var proto = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__getPrototype_js__["a" /* default */])(value);&#xD;  if (proto === null) {&#xD;    return true;&#xD;  }&#xD;  var Ctor = hasOwnProperty.call(proto, &apos;constructor&apos;) &amp;&amp; proto.constructor;&#xD;  return typeof Ctor == &apos;function&apos; &amp;&amp; Ctor instanceof Ctor &amp;&amp;&#xD;    funcToString.call(Ctor) == objectCtorString;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (isPlainObject);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 84 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {&#xD;&#xD;if (!process.version ||&#xD;    process.version.indexOf(&apos;v0.&apos;) === 0 ||&#xD;    process.version.indexOf(&apos;v1.&apos;) === 0 &amp;&amp; process.version.indexOf(&apos;v1.8.&apos;) !== 0) {&#xD;  module.exports = nextTick;&#xD;} else {&#xD;  module.exports = process.nextTick;&#xD;}&#xD;&#xD;function nextTick(fn, arg1, arg2, arg3) {&#xD;  if (typeof fn !== &apos;function&apos;) {&#xD;    throw new TypeError(&apos;"callback" argument must be a function&apos;);&#xD;  }&#xD;  var len = arguments.length;&#xD;  var args, i;&#xD;  switch (len) {&#xD;  case 0:&#xD;  case 1:&#xD;    return process.nextTick(fn);&#xD;  case 2:&#xD;    return process.nextTick(function afterTickOne() {&#xD;      fn.call(null, arg1);&#xD;    });&#xD;  case 3:&#xD;    return process.nextTick(function afterTickTwo() {&#xD;      fn.call(null, arg1, arg2);&#xD;    });&#xD;  case 4:&#xD;    return process.nextTick(function afterTickThree() {&#xD;      fn.call(null, arg1, arg2, arg3);&#xD;    });&#xD;  default:&#xD;    args = new Array(len - 1);&#xD;    i = 0;&#xD;    while (i &lt; args.length) {&#xD;      args[i++] = arguments[i];&#xD;    }&#xD;    return process.nextTick(function afterTick() {&#xD;      fn.apply(null, args);&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 85 */,&#xD;/* 86 */,&#xD;/* 87 */,&#xD;/* 88 */,&#xD;/* 89 */,&#xD;/* 90 */,&#xD;/* 91 */,&#xD;/* 92 */,&#xD;/* 93 */,&#xD;/* 94 */,&#xD;/* 95 */,&#xD;/* 96 */,&#xD;/* 97 */,&#xD;/* 98 */,&#xD;/* 99 */,&#xD;/* 100 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = warning;&#xD;/**&#xD; * Prints a warning in the console if it exists.&#xD; *&#xD; * @param {String} message The warning message.&#xD; * @returns {void}&#xD; */&#xD;function warning(message) {&#xD;  /* eslint-disable no-console */&#xD;  if (typeof console !== &apos;undefined&apos; &amp;&amp; typeof console.error === &apos;function&apos;) {&#xD;    console.error(message);&#xD;  }&#xD;  /* eslint-enable no-console */&#xD;  try {&#xD;    // This error was thrown as a convenience so that if you enable&#xD;    // "break on all exceptions" in your console,&#xD;    // it would pause the execution at this line.&#xD;    throw new Error(message);&#xD;    /* eslint-disable no-empty */&#xD;  } catch (e) {}&#xD;  /* eslint-enable no-empty */&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 101 */,&#xD;/* 102 */,&#xD;/* 103 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a transform stream is a readable/writable stream where you do&#xD;// something with the data.  Sometimes it&apos;s called a "filter",&#xD;// but that&apos;s not a great name for it, since that implies a thing where&#xD;// some bits pass through, and others are simply ignored.  (That would&#xD;// be a valid example of a transform, of course.)&#xD;//&#xD;// While the output is causally related to the input, it&apos;s not a&#xD;// necessarily symmetric or synchronous transformation.  For example,&#xD;// a zlib stream might take multiple plain-text writes(), and then&#xD;// emit a single compressed chunk some time in the future.&#xD;//&#xD;// Here&apos;s how this works:&#xD;//&#xD;// The Transform stream has all the aspects of the readable and writable&#xD;// stream classes.  When you write(chunk), that calls _write(chunk,cb)&#xD;// internally, and returns false if there&apos;s a lot of pending writes&#xD;// buffered up.  When you call read(), that calls _read(n) until&#xD;// there&apos;s enough pending readable data buffered up.&#xD;//&#xD;// In a transform stream, the written data is placed in a buffer.  When&#xD;// _read(n) is called, it transforms the queued up data, calling the&#xD;// buffered _write cb&apos;s as it consumes chunks.  If consuming a single&#xD;// written chunk would result in multiple output chunks, then the first&#xD;// outputted bit calls the readcb, and subsequent chunks just go into&#xD;// the read buffer, and will cause it to emit &apos;readable&apos; if necessary.&#xD;//&#xD;// This way, back-pressure is actually determined by the reading side,&#xD;// since _read has to be called to start processing a new chunk.  However,&#xD;// a pathological inflate type of transform can cause excessive buffering&#xD;// here.  For example, imagine a stream where every byte of input is&#xD;// interpreted as an integer from 0-255, and then results in that many&#xD;// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in&#xD;// 1kb of data being output.  In this case, you could write a very small&#xD;// amount of input, and end up with a very large amount of output.  In&#xD;// such a pathological inflating mechanism, there&apos;d be no way to tell&#xD;// the system to stop doing the transform.  A single 4MB write could&#xD;// cause the system to run out of memory.&#xD;//&#xD;// However, even in such a pathological case, only a single written chunk&#xD;// would be consumed, and then the rest would wait (un-transformed) until&#xD;// the results of the previous transformed chunk were consumed.&#xD;&#xD;&#xD;&#xD;module.exports = Transform;&#xD;&#xD;var Duplex = __webpack_require__(36);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(48);&#xD;util.inherits = __webpack_require__(5);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Transform, Duplex);&#xD;&#xD;function TransformState(stream) {&#xD;  this.afterTransform = function (er, data) {&#xD;    return afterTransform(stream, er, data);&#xD;  };&#xD;&#xD;  this.needTransform = false;&#xD;  this.transforming = false;&#xD;  this.writecb = null;&#xD;  this.writechunk = null;&#xD;  this.writeencoding = null;&#xD;}&#xD;&#xD;function afterTransform(stream, er, data) {&#xD;  var ts = stream._transformState;&#xD;  ts.transforming = false;&#xD;&#xD;  var cb = ts.writecb;&#xD;&#xD;  if (!cb) return stream.emit(&apos;error&apos;, new Error(&apos;no writecb in Transform class&apos;));&#xD;&#xD;  ts.writechunk = null;&#xD;  ts.writecb = null;&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  cb(er);&#xD;&#xD;  var rs = stream._readableState;&#xD;  rs.reading = false;&#xD;  if (rs.needReadable || rs.length &lt; rs.highWaterMark) {&#xD;    stream._read(rs.highWaterMark);&#xD;  }&#xD;}&#xD;&#xD;function Transform(options) {&#xD;  if (!(this instanceof Transform)) return new Transform(options);&#xD;&#xD;  Duplex.call(this, options);&#xD;&#xD;  this._transformState = new TransformState(this);&#xD;&#xD;  var stream = this;&#xD;&#xD;  // start out asking for a readable event once data is transformed.&#xD;  this._readableState.needReadable = true;&#xD;&#xD;  // we have implemented the _read method, and done the other things&#xD;  // that Readable wants before the first _read call, so unset the&#xD;  // sync guard flag.&#xD;  this._readableState.sync = false;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.transform === &apos;function&apos;) this._transform = options.transform;&#xD;&#xD;    if (typeof options.flush === &apos;function&apos;) this._flush = options.flush;&#xD;  }&#xD;&#xD;  // When the writable side finishes, then flush out anything remaining.&#xD;  this.once(&apos;prefinish&apos;, function () {&#xD;    if (typeof this._flush === &apos;function&apos;) this._flush(function (er, data) {&#xD;      done(stream, er, data);&#xD;    });else done(stream);&#xD;  });&#xD;}&#xD;&#xD;Transform.prototype.push = function (chunk, encoding) {&#xD;  this._transformState.needTransform = false;&#xD;  return Duplex.prototype.push.call(this, chunk, encoding);&#xD;};&#xD;&#xD;// This is the part where you do stuff!&#xD;// override this function in implementation classes.&#xD;// &apos;chunk&apos; is an input chunk.&#xD;//&#xD;// Call `push(newChunk)` to pass along transformed output&#xD;// to the readable side.  You may call &apos;push&apos; zero or more times.&#xD;//&#xD;// Call `cb(err)` when you are done with this chunk.  If you pass&#xD;// an error, then that&apos;ll put the hurt on the whole operation.  If you&#xD;// never call cb(), then you&apos;ll never get another chunk.&#xD;Transform.prototype._transform = function (chunk, encoding, cb) {&#xD;  throw new Error(&apos;_transform() is not implemented&apos;);&#xD;};&#xD;&#xD;Transform.prototype._write = function (chunk, encoding, cb) {&#xD;  var ts = this._transformState;&#xD;  ts.writecb = cb;&#xD;  ts.writechunk = chunk;&#xD;  ts.writeencoding = encoding;&#xD;  if (!ts.transforming) {&#xD;    var rs = this._readableState;&#xD;    if (ts.needTransform || rs.needReadable || rs.length &lt; rs.highWaterMark) this._read(rs.highWaterMark);&#xD;  }&#xD;};&#xD;&#xD;// Doesn&apos;t matter what the args are here.&#xD;// _transform does all the work.&#xD;// That we got here means that the readable side wants more data.&#xD;Transform.prototype._read = function (n) {&#xD;  var ts = this._transformState;&#xD;&#xD;  if (ts.writechunk !== null &amp;&amp; ts.writecb &amp;&amp; !ts.transforming) {&#xD;    ts.transforming = true;&#xD;    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);&#xD;  } else {&#xD;    // mark that we need a transform, so that any data that comes in&#xD;    // will get processed, now that we&apos;ve asked for it.&#xD;    ts.needTransform = true;&#xD;  }&#xD;};&#xD;&#xD;function done(stream, er, data) {&#xD;  if (er) return stream.emit(&apos;error&apos;, er);&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  // if there&apos;s nothing in the write buffer, then that means&#xD;  // that nothing more will ever be provided&#xD;  var ws = stream._writableState;&#xD;  var ts = stream._transformState;&#xD;&#xD;  if (ws.length) throw new Error(&apos;Calling transform done when ws.length != 0&apos;);&#xD;&#xD;  if (ts.transforming) throw new Error(&apos;Calling transform done when still transforming&apos;);&#xD;&#xD;  return stream.push(null);&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 104 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process, setImmediate) {// A bit simpler than readable streams.&#xD;// Implement an async ._write(chunk, encoding, cb), and it&apos;ll handle all&#xD;// the drain event emission and buffering.&#xD;&#xD;&#xD;&#xD;module.exports = Writable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(84);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var asyncWrite = !process.browser &amp;&amp; [&apos;v0.10&apos;, &apos;v0.9.&apos;].indexOf(process.version.slice(0, 5)) &gt; -1 ? setImmediate : processNextTick;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Writable.WritableState = WritableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(48);&#xD;util.inherits = __webpack_require__(5);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var internalUtil = {&#xD;  deprecate: __webpack_require__(558)&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream;&#xD;(function () {&#xD;  try {&#xD;    Stream = __webpack_require__(29);&#xD;  } catch (_) {} finally {&#xD;    if (!Stream) Stream = __webpack_require__(30).EventEmitter;&#xD;  }&#xD;})();&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(79);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Writable, Stream);&#xD;&#xD;function nop() {}&#xD;&#xD;function WriteReq(chunk, encoding, cb) {&#xD;  this.chunk = chunk;&#xD;  this.encoding = encoding;&#xD;  this.callback = cb;&#xD;  this.next = null;&#xD;}&#xD;&#xD;function WritableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(36);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag to indicate whether or not this stream&#xD;  // contains buffers or objects.&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;&#xD;&#xD;  // the point at which write() starts returning false&#xD;  // Note: 0 is a valid value, means that we always return false if&#xD;  // the entire buffer is not flushed immediately on write()&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126; &#126;this.highWaterMark;&#xD;&#xD;  // drain event flag.&#xD;  this.needDrain = false;&#xD;  // at the start of calling end()&#xD;  this.ending = false;&#xD;  // when end() has been called, and returned&#xD;  this.ended = false;&#xD;  // when &apos;finish&apos; is emitted&#xD;  this.finished = false;&#xD;&#xD;  // should we decode strings into buffers before passing to _write?&#xD;  // this is here so that some node-core streams can optimize string&#xD;  // handling at a lower level.&#xD;  var noDecode = options.decodeStrings === false;&#xD;  this.decodeStrings = !noDecode;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // not an actual buffer we keep track of, but a measurement&#xD;  // of how much we&apos;re waiting to get pushed to some underlying&#xD;  // socket or file.&#xD;  this.length = 0;&#xD;&#xD;  // a flag to see when we&apos;re in the middle of a write.&#xD;  this.writing = false;&#xD;&#xD;  // when true all writes will be buffered until .uncork() call&#xD;  this.corked = 0;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // a flag to know if we&apos;re processing previously buffered items, which&#xD;  // may call the _write() callback in the same tick, so that we don&apos;t&#xD;  // end up in an overlapped onwrite situation.&#xD;  this.bufferProcessing = false;&#xD;&#xD;  // the callback that&apos;s passed to _write(chunk,cb)&#xD;  this.onwrite = function (er) {&#xD;    onwrite(stream, er);&#xD;  };&#xD;&#xD;  // the callback that the user supplies to write(chunk,encoding,cb)&#xD;  this.writecb = null;&#xD;&#xD;  // the amount that is being written when _write is called.&#xD;  this.writelen = 0;&#xD;&#xD;  this.bufferedRequest = null;&#xD;  this.lastBufferedRequest = null;&#xD;&#xD;  // number of pending user-supplied write callbacks&#xD;  // this must be 0 before &apos;finish&apos; can be emitted&#xD;  this.pendingcb = 0;&#xD;&#xD;  // emit prefinish if the only thing we&apos;re waiting for is _write cbs&#xD;  // This is relevant for synchronous Transform streams&#xD;  this.prefinished = false;&#xD;&#xD;  // True if the error was already emitted and should not be thrown again&#xD;  this.errorEmitted = false;&#xD;&#xD;  // count buffered requests&#xD;  this.bufferedRequestCount = 0;&#xD;&#xD;  // allocate the first CorkedRequest, there is always&#xD;  // one allocated and free to use, and we maintain at most two&#xD;  this.corkedRequestsFree = new CorkedRequest(this);&#xD;}&#xD;&#xD;WritableState.prototype.getBuffer = function getBuffer() {&#xD;  var current = this.bufferedRequest;&#xD;  var out = [];&#xD;  while (current) {&#xD;    out.push(current);&#xD;    current = current.next;&#xD;  }&#xD;  return out;&#xD;};&#xD;&#xD;(function () {&#xD;  try {&#xD;    Object.defineProperty(WritableState.prototype, &apos;buffer&apos;, {&#xD;      get: internalUtil.deprecate(function () {&#xD;        return this.getBuffer();&#xD;      }, &apos;_writableState.buffer is deprecated. Use _writableState.getBuffer &apos; + &apos;instead.&apos;)&#xD;    });&#xD;  } catch (_) {}&#xD;})();&#xD;&#xD;// Test _writableState for inheritance to account for Duplex streams,&#xD;// whose prototype chain only points to Readable.&#xD;var realHasInstance;&#xD;if (typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.hasInstance &amp;&amp; typeof Function.prototype[Symbol.hasInstance] === &apos;function&apos;) {&#xD;  realHasInstance = Function.prototype[Symbol.hasInstance];&#xD;  Object.defineProperty(Writable, Symbol.hasInstance, {&#xD;    value: function (object) {&#xD;      if (realHasInstance.call(this, object)) return true;&#xD;&#xD;      return object &amp;&amp; object._writableState instanceof WritableState;&#xD;    }&#xD;  });&#xD;} else {&#xD;  realHasInstance = function (object) {&#xD;    return object instanceof this;&#xD;  };&#xD;}&#xD;&#xD;function Writable(options) {&#xD;  Duplex = Duplex || __webpack_require__(36);&#xD;&#xD;  // Writable ctor is applied to Duplexes, too.&#xD;  // `realHasInstance` is necessary because using plain `instanceof`&#xD;  // would return false, as no `_writableState` property is attached.&#xD;&#xD;  // Trying to use the custom `instanceof` for Writable here will also break the&#xD;  // Node.js LazyTransform implementation, which has a non-trivial getter for&#xD;  // `_writableState` that would lead to infinite recursion.&#xD;  if (!realHasInstance.call(Writable, this) &amp;&amp; !(this instanceof Duplex)) {&#xD;    return new Writable(options);&#xD;  }&#xD;&#xD;  this._writableState = new WritableState(options, this);&#xD;&#xD;  // legacy.&#xD;  this.writable = true;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.write === &apos;function&apos;) this._write = options.write;&#xD;&#xD;    if (typeof options.writev === &apos;function&apos;) this._writev = options.writev;&#xD;  }&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Otherwise people can pipe Writable streams, which is just wrong.&#xD;Writable.prototype.pipe = function () {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;Cannot pipe, not readable&apos;));&#xD;};&#xD;&#xD;function writeAfterEnd(stream, cb) {&#xD;  var er = new Error(&apos;write after end&apos;);&#xD;  // TODO: defer error events consistently everywhere, not just the cb&#xD;  stream.emit(&apos;error&apos;, er);&#xD;  processNextTick(cb, er);&#xD;}&#xD;&#xD;// If we get something that is not a buffer, string, null, or undefined,&#xD;// and we&apos;re not in objectMode, then that&apos;s an error.&#xD;// Otherwise stream chunks are all considered to be of length=1, and the&#xD;// watermarks determine how many objects to keep in the buffer, rather than&#xD;// how many bytes or characters.&#xD;function validChunk(stream, state, chunk, cb) {&#xD;  var valid = true;&#xD;  var er = false;&#xD;  // Always throw error if a null is written&#xD;  // if we are not in object mode then throw&#xD;  // if it is not a buffer, string, or undefined.&#xD;  if (chunk === null) {&#xD;    er = new TypeError(&apos;May not write null values to stream&apos;);&#xD;  } else if (!Buffer.isBuffer(chunk) &amp;&amp; typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;    processNextTick(cb, er);&#xD;    valid = false;&#xD;  }&#xD;  return valid;&#xD;}&#xD;&#xD;Writable.prototype.write = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;  var ret = false;&#xD;&#xD;  if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (Buffer.isBuffer(chunk)) encoding = &apos;buffer&apos;;else if (!encoding) encoding = state.defaultEncoding;&#xD;&#xD;  if (typeof cb !== &apos;function&apos;) cb = nop;&#xD;&#xD;  if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {&#xD;    state.pendingcb++;&#xD;    ret = writeOrBuffer(this, state, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;Writable.prototype.cork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  state.corked++;&#xD;};&#xD;&#xD;Writable.prototype.uncork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  if (state.corked) {&#xD;    state.corked--;&#xD;&#xD;    if (!state.writing &amp;&amp; !state.corked &amp;&amp; !state.finished &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) clearBuffer(this, state);&#xD;  }&#xD;};&#xD;&#xD;Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {&#xD;  // node::ParseEncoding() requires lower case.&#xD;  if (typeof encoding === &apos;string&apos;) encoding = encoding.toLowerCase();&#xD;  if (!([&apos;hex&apos;, &apos;utf8&apos;, &apos;utf-8&apos;, &apos;ascii&apos;, &apos;binary&apos;, &apos;base64&apos;, &apos;ucs2&apos;, &apos;ucs-2&apos;, &apos;utf16le&apos;, &apos;utf-16le&apos;, &apos;raw&apos;].indexOf((encoding + &apos;&apos;).toLowerCase()) &gt; -1)) throw new TypeError(&apos;Unknown encoding: &apos; + encoding);&#xD;  this._writableState.defaultEncoding = encoding;&#xD;  return this;&#xD;};&#xD;&#xD;function decodeChunk(state, chunk, encoding) {&#xD;  if (!state.objectMode &amp;&amp; state.decodeStrings !== false &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    chunk = bufferShim.from(chunk, encoding);&#xD;  }&#xD;  return chunk;&#xD;}&#xD;&#xD;// if we&apos;re already writing something, then just put this&#xD;// in the queue, and wait our turn.  Otherwise, call _write&#xD;// If we return false, then we need a drain event, so set that flag.&#xD;function writeOrBuffer(stream, state, chunk, encoding, cb) {&#xD;  chunk = decodeChunk(state, chunk, encoding);&#xD;&#xD;  if (Buffer.isBuffer(chunk)) encoding = &apos;buffer&apos;;&#xD;  var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;  state.length += len;&#xD;&#xD;  var ret = state.length &lt; state.highWaterMark;&#xD;  // we must ensure that previous needDrain will not be reset to false.&#xD;  if (!ret) state.needDrain = true;&#xD;&#xD;  if (state.writing || state.corked) {&#xD;    var last = state.lastBufferedRequest;&#xD;    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);&#xD;    if (last) {&#xD;      last.next = state.lastBufferedRequest;&#xD;    } else {&#xD;      state.bufferedRequest = state.lastBufferedRequest;&#xD;    }&#xD;    state.bufferedRequestCount += 1;&#xD;  } else {&#xD;    doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;function doWrite(stream, state, writev, len, chunk, encoding, cb) {&#xD;  state.writelen = len;&#xD;  state.writecb = cb;&#xD;  state.writing = true;&#xD;  state.sync = true;&#xD;  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);&#xD;  state.sync = false;&#xD;}&#xD;&#xD;function onwriteError(stream, state, sync, er, cb) {&#xD;  --state.pendingcb;&#xD;  if (sync) processNextTick(cb, er);else cb(er);&#xD;&#xD;  stream._writableState.errorEmitted = true;&#xD;  stream.emit(&apos;error&apos;, er);&#xD;}&#xD;&#xD;function onwriteStateUpdate(state) {&#xD;  state.writing = false;&#xD;  state.writecb = null;&#xD;  state.length -= state.writelen;&#xD;  state.writelen = 0;&#xD;}&#xD;&#xD;function onwrite(stream, er) {&#xD;  var state = stream._writableState;&#xD;  var sync = state.sync;&#xD;  var cb = state.writecb;&#xD;&#xD;  onwriteStateUpdate(state);&#xD;&#xD;  if (er) onwriteError(stream, state, sync, er, cb);else {&#xD;    // Check if we&apos;re actually ready to finish, but don&apos;t emit yet&#xD;    var finished = needFinish(state);&#xD;&#xD;    if (!finished &amp;&amp; !state.corked &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) {&#xD;      clearBuffer(stream, state);&#xD;    }&#xD;&#xD;    if (sync) {&#xD;      /*&lt;replacement&gt;*/&#xD;      asyncWrite(afterWrite, stream, state, finished, cb);&#xD;      /*&lt;/replacement&gt;*/&#xD;    } else {&#xD;        afterWrite(stream, state, finished, cb);&#xD;      }&#xD;  }&#xD;}&#xD;&#xD;function afterWrite(stream, state, finished, cb) {&#xD;  if (!finished) onwriteDrain(stream, state);&#xD;  state.pendingcb--;&#xD;  cb();&#xD;  finishMaybe(stream, state);&#xD;}&#xD;&#xD;// Must force callback to be called on nextTick, so that we don&apos;t&#xD;// emit &apos;drain&apos; before the write() consumer gets the &apos;false&apos; return&#xD;// value, and has a chance to attach a &apos;drain&apos; listener.&#xD;function onwriteDrain(stream, state) {&#xD;  if (state.length === 0 &amp;&amp; state.needDrain) {&#xD;    state.needDrain = false;&#xD;    stream.emit(&apos;drain&apos;);&#xD;  }&#xD;}&#xD;&#xD;// if there&apos;s something in the buffer waiting, then process it&#xD;function clearBuffer(stream, state) {&#xD;  state.bufferProcessing = true;&#xD;  var entry = state.bufferedRequest;&#xD;&#xD;  if (stream._writev &amp;&amp; entry &amp;&amp; entry.next) {&#xD;    // Fast case, write everything using _writev()&#xD;    var l = state.bufferedRequestCount;&#xD;    var buffer = new Array(l);&#xD;    var holder = state.corkedRequestsFree;&#xD;    holder.entry = entry;&#xD;&#xD;    var count = 0;&#xD;    while (entry) {&#xD;      buffer[count] = entry;&#xD;      entry = entry.next;&#xD;      count += 1;&#xD;    }&#xD;&#xD;    doWrite(stream, state, true, state.length, buffer, &apos;&apos;, holder.finish);&#xD;&#xD;    // doWrite is almost always async, defer these to save a bit of time&#xD;    // as the hot path ends with doWrite&#xD;    state.pendingcb++;&#xD;    state.lastBufferedRequest = null;&#xD;    if (holder.next) {&#xD;      state.corkedRequestsFree = holder.next;&#xD;      holder.next = null;&#xD;    } else {&#xD;      state.corkedRequestsFree = new CorkedRequest(state);&#xD;    }&#xD;  } else {&#xD;    // Slow case, write chunks one-by-one&#xD;    while (entry) {&#xD;      var chunk = entry.chunk;&#xD;      var encoding = entry.encoding;&#xD;      var cb = entry.callback;&#xD;      var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;      doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;      entry = entry.next;&#xD;      // if we didn&apos;t call the onwrite immediately, then&#xD;      // it means that we need to wait until it does.&#xD;      // also, that means that the chunk and cb are currently&#xD;      // being processed, so move the buffer counter past them.&#xD;      if (state.writing) {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    if (entry === null) state.lastBufferedRequest = null;&#xD;  }&#xD;&#xD;  state.bufferedRequestCount = 0;&#xD;  state.bufferedRequest = entry;&#xD;  state.bufferProcessing = false;&#xD;}&#xD;&#xD;Writable.prototype._write = function (chunk, encoding, cb) {&#xD;  cb(new Error(&apos;_write() is not implemented&apos;));&#xD;};&#xD;&#xD;Writable.prototype._writev = null;&#xD;&#xD;Writable.prototype.end = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;&#xD;  if (typeof chunk === &apos;function&apos;) {&#xD;    cb = chunk;&#xD;    chunk = null;&#xD;    encoding = null;&#xD;  } else if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (chunk !== null &amp;&amp; chunk !== undefined) this.write(chunk, encoding);&#xD;&#xD;  // .end() fully uncorks&#xD;  if (state.corked) {&#xD;    state.corked = 1;&#xD;    this.uncork();&#xD;  }&#xD;&#xD;  // ignore unnecessary end() calls.&#xD;  if (!state.ending &amp;&amp; !state.finished) endWritable(this, state, cb);&#xD;};&#xD;&#xD;function needFinish(state) {&#xD;  return state.ending &amp;&amp; state.length === 0 &amp;&amp; state.bufferedRequest === null &amp;&amp; !state.finished &amp;&amp; !state.writing;&#xD;}&#xD;&#xD;function prefinish(stream, state) {&#xD;  if (!state.prefinished) {&#xD;    state.prefinished = true;&#xD;    stream.emit(&apos;prefinish&apos;);&#xD;  }&#xD;}&#xD;&#xD;function finishMaybe(stream, state) {&#xD;  var need = needFinish(state);&#xD;  if (need) {&#xD;    if (state.pendingcb === 0) {&#xD;      prefinish(stream, state);&#xD;      state.finished = true;&#xD;      stream.emit(&apos;finish&apos;);&#xD;    } else {&#xD;      prefinish(stream, state);&#xD;    }&#xD;  }&#xD;  return need;&#xD;}&#xD;&#xD;function endWritable(stream, state, cb) {&#xD;  state.ending = true;&#xD;  finishMaybe(stream, state);&#xD;  if (cb) {&#xD;    if (state.finished) processNextTick(cb);else stream.once(&apos;finish&apos;, cb);&#xD;  }&#xD;  state.ended = true;&#xD;  stream.writable = false;&#xD;}&#xD;&#xD;// It seems a linked list but it is not&#xD;// there will be only 2 of these for each stream&#xD;function CorkedRequest(state) {&#xD;  var _this = this;&#xD;&#xD;  this.next = null;&#xD;  this.entry = null;&#xD;&#xD;  this.finish = function (err) {&#xD;    var entry = _this.entry;&#xD;    _this.entry = null;&#xD;    while (entry) {&#xD;      var cb = entry.callback;&#xD;      state.pendingcb--;&#xD;      cb(err);&#xD;      entry = entry.next;&#xD;    }&#xD;    if (state.corkedRequestsFree) {&#xD;      state.corkedRequestsFree.next = _this;&#xD;    } else {&#xD;      state.corkedRequestsFree = _this;&#xD;    }&#xD;  };&#xD;}&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14), __webpack_require__(106).setImmediate))&#xD;&#xD;/***/ }),&#xD;/* 105 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(process) {var Stream = (function (){&#xD;  try {&#xD;    return __webpack_require__(29); // hack to fix a circular dependency issue when used with browserify&#xD;  } catch(_){}&#xD;}());&#xD;exports = module.exports = __webpack_require__(189);&#xD;exports.Stream = Stream || exports;&#xD;exports.Readable = exports;&#xD;exports.Writable = __webpack_require__(104);&#xD;exports.Duplex = __webpack_require__(36);&#xD;exports.Transform = __webpack_require__(103);&#xD;exports.PassThrough = __webpack_require__(188);&#xD;&#xD;if (!process.browser &amp;&amp; process.env.READABLE_STREAM === &apos;disable&apos; &amp;&amp; Stream) {&#xD;  module.exports = Stream;&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 106 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var apply = Function.prototype.apply;&#xD;&#xD;// DOM APIs, for completeness&#xD;&#xD;exports.setTimeout = function() {&#xD;  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);&#xD;};&#xD;exports.setInterval = function() {&#xD;  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);&#xD;};&#xD;exports.clearTimeout =&#xD;exports.clearInterval = function(timeout) {&#xD;  if (timeout) {&#xD;    timeout.close();&#xD;  }&#xD;};&#xD;&#xD;function Timeout(id, clearFn) {&#xD;  this._id = id;&#xD;  this._clearFn = clearFn;&#xD;}&#xD;Timeout.prototype.unref = Timeout.prototype.ref = function() {};&#xD;Timeout.prototype.close = function() {&#xD;  this._clearFn.call(window, this._id);&#xD;};&#xD;&#xD;// Does not start the time, just sets up the members needed.&#xD;exports.enroll = function(item, msecs) {&#xD;  clearTimeout(item._idleTimeoutId);&#xD;  item._idleTimeout = msecs;&#xD;};&#xD;&#xD;exports.unenroll = function(item) {&#xD;  clearTimeout(item._idleTimeoutId);&#xD;  item._idleTimeout = -1;&#xD;};&#xD;&#xD;exports._unrefActive = exports.active = function(item) {&#xD;  clearTimeout(item._idleTimeoutId);&#xD;&#xD;  var msecs = item._idleTimeout;&#xD;  if (msecs &gt;= 0) {&#xD;    item._idleTimeoutId = setTimeout(function onTimeout() {&#xD;      if (item._onTimeout)&#xD;        item._onTimeout();&#xD;    }, msecs);&#xD;  }&#xD;};&#xD;&#xD;// setimmediate attaches itself to the global object&#xD;__webpack_require__(509);&#xD;exports.setImmediate = setImmediate;&#xD;exports.clearImmediate = clearImmediate;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 107 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var minilog = __webpack_require__(371);&#xD;minilog.enable();&#xD;&#xD;module.exports = minilog(&apos;gui&apos;);&#xD;&#xD;/***/ }),&#xD;/* 108 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;var Reporter = __webpack_require__(46).Reporter;&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;&#xD;function DecoderBuffer(base, options) {&#xD;  Reporter.call(this, options);&#xD;  if (!Buffer.isBuffer(base)) {&#xD;    this.error(&apos;Input not Buffer&apos;);&#xD;    return;&#xD;  }&#xD;&#xD;  this.base = base;&#xD;  this.offset = 0;&#xD;  this.length = base.length;&#xD;}&#xD;inherits(DecoderBuffer, Reporter);&#xD;exports.DecoderBuffer = DecoderBuffer;&#xD;&#xD;DecoderBuffer.prototype.save = function save() {&#xD;  return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };&#xD;};&#xD;&#xD;DecoderBuffer.prototype.restore = function restore(save) {&#xD;  // Return skipped data&#xD;  var res = new DecoderBuffer(this.base);&#xD;  res.offset = save.offset;&#xD;  res.length = this.offset;&#xD;&#xD;  this.offset = save.offset;&#xD;  Reporter.prototype.restore.call(this, save.reporter);&#xD;&#xD;  return res;&#xD;};&#xD;&#xD;DecoderBuffer.prototype.isEmpty = function isEmpty() {&#xD;  return this.offset === this.length;&#xD;};&#xD;&#xD;DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {&#xD;  if (this.offset + 1 &lt;= this.length)&#xD;    return this.base.readUInt8(this.offset++, true);&#xD;  else&#xD;    return this.error(fail || &apos;DecoderBuffer overrun&apos;);&#xD;}&#xD;&#xD;DecoderBuffer.prototype.skip = function skip(bytes, fail) {&#xD;  if (!(this.offset + bytes &lt;= this.length))&#xD;    return this.error(fail || &apos;DecoderBuffer overrun&apos;);&#xD;&#xD;  var res = new DecoderBuffer(this.base);&#xD;&#xD;  // Share reporter state&#xD;  res._reporterState = this._reporterState;&#xD;&#xD;  res.offset = this.offset;&#xD;  res.length = this.offset + bytes;&#xD;  this.offset += bytes;&#xD;  return res;&#xD;}&#xD;&#xD;DecoderBuffer.prototype.raw = function raw(save) {&#xD;  return this.base.slice(save ? save.offset : this.offset, this.length);&#xD;}&#xD;&#xD;function EncoderBuffer(value, reporter) {&#xD;  if (Array.isArray(value)) {&#xD;    this.length = 0;&#xD;    this.value = value.map(function(item) {&#xD;      if (!(item instanceof EncoderBuffer))&#xD;        item = new EncoderBuffer(item, reporter);&#xD;      this.length += item.length;&#xD;      return item;&#xD;    }, this);&#xD;  } else if (typeof value === &apos;number&apos;) {&#xD;    if (!(0 &lt;= value &amp;&amp; value &lt;= 0xff))&#xD;      return reporter.error(&apos;non-byte EncoderBuffer value&apos;);&#xD;    this.value = value;&#xD;    this.length = 1;&#xD;  } else if (typeof value === &apos;string&apos;) {&#xD;    this.value = value;&#xD;    this.length = Buffer.byteLength(value);&#xD;  } else if (Buffer.isBuffer(value)) {&#xD;    this.value = value;&#xD;    this.length = value.length;&#xD;  } else {&#xD;    return reporter.error(&apos;Unsupported type: &apos; + typeof value);&#xD;  }&#xD;}&#xD;exports.EncoderBuffer = EncoderBuffer;&#xD;&#xD;EncoderBuffer.prototype.join = function join(out, offset) {&#xD;  if (!out)&#xD;    out = new Buffer(this.length);&#xD;  if (!offset)&#xD;    offset = 0;&#xD;&#xD;  if (this.length === 0)&#xD;    return out;&#xD;&#xD;  if (Array.isArray(this.value)) {&#xD;    this.value.forEach(function(item) {&#xD;      item.join(out, offset);&#xD;      offset += item.length;&#xD;    });&#xD;  } else {&#xD;    if (typeof this.value === &apos;number&apos;)&#xD;      out[offset] = this.value;&#xD;    else if (typeof this.value === &apos;string&apos;)&#xD;      out.write(this.value, offset);&#xD;    else if (Buffer.isBuffer(this.value))&#xD;      this.value.copy(out, offset);&#xD;    offset += this.length;&#xD;  }&#xD;&#xD;  return out;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 109 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var constants = exports;&#xD;&#xD;// Helper&#xD;constants._reverse = function reverse(map) {&#xD;  var res = {};&#xD;&#xD;  Object.keys(map).forEach(function(key) {&#xD;    // Convert key to integer if it is stringified&#xD;    if ((key | 0) == key)&#xD;      key = key | 0;&#xD;&#xD;    var value = map[key];&#xD;    res[value] = key;&#xD;  });&#xD;&#xD;  return res;&#xD;};&#xD;&#xD;constants.der = __webpack_require__(211);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 110 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var asn1 = __webpack_require__(45);&#xD;var base = asn1.base;&#xD;var bignum = asn1.bignum;&#xD;&#xD;// Import DER constants&#xD;var der = asn1.constants.der;&#xD;&#xD;function DERDecoder(entity) {&#xD;  this.enc = &apos;der&apos;;&#xD;  this.name = entity.name;&#xD;  this.entity = entity;&#xD;&#xD;  // Construct base tree&#xD;  this.tree = new DERNode();&#xD;  this.tree._init(entity.body);&#xD;};&#xD;module.exports = DERDecoder;&#xD;&#xD;DERDecoder.prototype.decode = function decode(data, options) {&#xD;  if (!(data instanceof base.DecoderBuffer))&#xD;    data = new base.DecoderBuffer(data, options);&#xD;&#xD;  return this.tree._decode(data, options);&#xD;};&#xD;&#xD;// Tree methods&#xD;&#xD;function DERNode(parent) {&#xD;  base.Node.call(this, &apos;der&apos;, parent);&#xD;}&#xD;inherits(DERNode, base.Node);&#xD;&#xD;DERNode.prototype._peekTag = function peekTag(buffer, tag, any) {&#xD;  if (buffer.isEmpty())&#xD;    return false;&#xD;&#xD;  var state = buffer.save();&#xD;  var decodedTag = derDecodeTag(buffer, &apos;Failed to peek tag: "&apos; + tag + &apos;"&apos;);&#xD;  if (buffer.isError(decodedTag))&#xD;    return decodedTag;&#xD;&#xD;  buffer.restore(state);&#xD;&#xD;  return decodedTag.tag === tag || decodedTag.tagStr === tag ||&#xD;    (decodedTag.tagStr + &apos;of&apos;) === tag || any;&#xD;};&#xD;&#xD;DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {&#xD;  var decodedTag = derDecodeTag(buffer,&#xD;                                &apos;Failed to decode tag of "&apos; + tag + &apos;"&apos;);&#xD;  if (buffer.isError(decodedTag))&#xD;    return decodedTag;&#xD;&#xD;  var len = derDecodeLen(buffer,&#xD;                         decodedTag.primitive,&#xD;                         &apos;Failed to get length of "&apos; + tag + &apos;"&apos;);&#xD;&#xD;  // Failure&#xD;  if (buffer.isError(len))&#xD;    return len;&#xD;&#xD;  if (!any &amp;&amp;&#xD;      decodedTag.tag !== tag &amp;&amp;&#xD;      decodedTag.tagStr !== tag &amp;&amp;&#xD;      decodedTag.tagStr + &apos;of&apos; !== tag) {&#xD;    return buffer.error(&apos;Failed to match tag: "&apos; + tag + &apos;"&apos;);&#xD;  }&#xD;&#xD;  if (decodedTag.primitive || len !== null)&#xD;    return buffer.skip(len, &apos;Failed to match body of: "&apos; + tag + &apos;"&apos;);&#xD;&#xD;  // Indefinite length... find END tag&#xD;  var state = buffer.save();&#xD;  var res = this._skipUntilEnd(&#xD;      buffer,&#xD;      &apos;Failed to skip indefinite length body: "&apos; + this.tag + &apos;"&apos;);&#xD;  if (buffer.isError(res))&#xD;    return res;&#xD;&#xD;  len = buffer.offset - state.offset;&#xD;  buffer.restore(state);&#xD;  return buffer.skip(len, &apos;Failed to match body of: "&apos; + tag + &apos;"&apos;);&#xD;};&#xD;&#xD;DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {&#xD;  while (true) {&#xD;    var tag = derDecodeTag(buffer, fail);&#xD;    if (buffer.isError(tag))&#xD;      return tag;&#xD;    var len = derDecodeLen(buffer, tag.primitive, fail);&#xD;    if (buffer.isError(len))&#xD;      return len;&#xD;&#xD;    var res;&#xD;    if (tag.primitive || len !== null)&#xD;      res = buffer.skip(len)&#xD;    else&#xD;      res = this._skipUntilEnd(buffer, fail);&#xD;&#xD;    // Failure&#xD;    if (buffer.isError(res))&#xD;      return res;&#xD;&#xD;    if (tag.tagStr === &apos;end&apos;)&#xD;      break;&#xD;  }&#xD;};&#xD;&#xD;DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,&#xD;                                                    options) {&#xD;  var result = [];&#xD;  while (!buffer.isEmpty()) {&#xD;    var possibleEnd = this._peekTag(buffer, &apos;end&apos;);&#xD;    if (buffer.isError(possibleEnd))&#xD;      return possibleEnd;&#xD;&#xD;    var res = decoder.decode(buffer, &apos;der&apos;, options);&#xD;    if (buffer.isError(res) &amp;&amp; possibleEnd)&#xD;      break;&#xD;    result.push(res);&#xD;  }&#xD;  return result;&#xD;};&#xD;&#xD;DERNode.prototype._decodeStr = function decodeStr(buffer, tag) {&#xD;  if (tag === &apos;bitstr&apos;) {&#xD;    var unused = buffer.readUInt8();&#xD;    if (buffer.isError(unused))&#xD;      return unused;&#xD;    return { unused: unused, data: buffer.raw() };&#xD;  } else if (tag === &apos;bmpstr&apos;) {&#xD;    var raw = buffer.raw();&#xD;    if (raw.length % 2 === 1)&#xD;      return buffer.error(&apos;Decoding of string type: bmpstr length mismatch&apos;);&#xD;&#xD;    var str = &apos;&apos;;&#xD;    for (var i = 0; i &lt; raw.length / 2; i++) {&#xD;      str += String.fromCharCode(raw.readUInt16BE(i * 2));&#xD;    }&#xD;    return str;&#xD;  } else if (tag === &apos;numstr&apos;) {&#xD;    var numstr = buffer.raw().toString(&apos;ascii&apos;);&#xD;    if (!this._isNumstr(numstr)) {&#xD;      return buffer.error(&apos;Decoding of string type: &apos; +&#xD;                          &apos;numstr unsupported characters&apos;);&#xD;    }&#xD;    return numstr;&#xD;  } else if (tag === &apos;octstr&apos;) {&#xD;    return buffer.raw();&#xD;  } else if (tag === &apos;objDesc&apos;) {&#xD;    return buffer.raw();&#xD;  } else if (tag === &apos;printstr&apos;) {&#xD;    var printstr = buffer.raw().toString(&apos;ascii&apos;);&#xD;    if (!this._isPrintstr(printstr)) {&#xD;      return buffer.error(&apos;Decoding of string type: &apos; +&#xD;                          &apos;printstr unsupported characters&apos;);&#xD;    }&#xD;    return printstr;&#xD;  } else if (/str$/.test(tag)) {&#xD;    return buffer.raw().toString();&#xD;  } else {&#xD;    return buffer.error(&apos;Decoding of string type: &apos; + tag + &apos; unsupported&apos;);&#xD;  }&#xD;};&#xD;&#xD;DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {&#xD;  var result;&#xD;  var identifiers = [];&#xD;  var ident = 0;&#xD;  while (!buffer.isEmpty()) {&#xD;    var subident = buffer.readUInt8();&#xD;    ident &lt;&lt;= 7;&#xD;    ident |= subident &amp; 0x7f;&#xD;    if ((subident &amp; 0x80) === 0) {&#xD;      identifiers.push(ident);&#xD;      ident = 0;&#xD;    }&#xD;  }&#xD;  if (subident &amp; 0x80)&#xD;    identifiers.push(ident);&#xD;&#xD;  var first = (identifiers[0] / 40) | 0;&#xD;  var second = identifiers[0] % 40;&#xD;&#xD;  if (relative)&#xD;    result = identifiers;&#xD;  else&#xD;    result = [first, second].concat(identifiers.slice(1));&#xD;&#xD;  if (values) {&#xD;    var tmp = values[result.join(&apos; &apos;)];&#xD;    if (tmp === undefined)&#xD;      tmp = values[result.join(&apos;.&apos;)];&#xD;    if (tmp !== undefined)&#xD;      result = tmp;&#xD;  }&#xD;&#xD;  return result;&#xD;};&#xD;&#xD;DERNode.prototype._decodeTime = function decodeTime(buffer, tag) {&#xD;  var str = buffer.raw().toString();&#xD;  if (tag === &apos;gentime&apos;) {&#xD;    var year = str.slice(0, 4) | 0;&#xD;    var mon = str.slice(4, 6) | 0;&#xD;    var day = str.slice(6, 8) | 0;&#xD;    var hour = str.slice(8, 10) | 0;&#xD;    var min = str.slice(10, 12) | 0;&#xD;    var sec = str.slice(12, 14) | 0;&#xD;  } else if (tag === &apos;utctime&apos;) {&#xD;    var year = str.slice(0, 2) | 0;&#xD;    var mon = str.slice(2, 4) | 0;&#xD;    var day = str.slice(4, 6) | 0;&#xD;    var hour = str.slice(6, 8) | 0;&#xD;    var min = str.slice(8, 10) | 0;&#xD;    var sec = str.slice(10, 12) | 0;&#xD;    if (year &lt; 70)&#xD;      year = 2000 + year;&#xD;    else&#xD;      year = 1900 + year;&#xD;  } else {&#xD;    return buffer.error(&apos;Decoding &apos; + tag + &apos; time is not supported yet&apos;);&#xD;  }&#xD;&#xD;  return Date.UTC(year, mon - 1, day, hour, min, sec, 0);&#xD;};&#xD;&#xD;DERNode.prototype._decodeNull = function decodeNull(buffer) {&#xD;  return null;&#xD;};&#xD;&#xD;DERNode.prototype._decodeBool = function decodeBool(buffer) {&#xD;  var res = buffer.readUInt8();&#xD;  if (buffer.isError(res))&#xD;    return res;&#xD;  else&#xD;    return res !== 0;&#xD;};&#xD;&#xD;DERNode.prototype._decodeInt = function decodeInt(buffer, values) {&#xD;  // Bigint, return as it is (assume big endian)&#xD;  var raw = buffer.raw();&#xD;  var res = new bignum(raw);&#xD;&#xD;  if (values)&#xD;    res = values[res.toString(10)] || res;&#xD;&#xD;  return res;&#xD;};&#xD;&#xD;DERNode.prototype._use = function use(entity, obj) {&#xD;  if (typeof entity === &apos;function&apos;)&#xD;    entity = entity(obj);&#xD;  return entity._getDecoder(&apos;der&apos;).tree;&#xD;};&#xD;&#xD;// Utility methods&#xD;&#xD;function derDecodeTag(buf, fail) {&#xD;  var tag = buf.readUInt8(fail);&#xD;  if (buf.isError(tag))&#xD;    return tag;&#xD;&#xD;  var cls = der.tagClass[tag &gt;&gt; 6];&#xD;  var primitive = (tag &amp; 0x20) === 0;&#xD;&#xD;  // Multi-octet tag - load&#xD;  if ((tag &amp; 0x1f) === 0x1f) {&#xD;    var oct = tag;&#xD;    tag = 0;&#xD;    while ((oct &amp; 0x80) === 0x80) {&#xD;      oct = buf.readUInt8(fail);&#xD;      if (buf.isError(oct))&#xD;        return oct;&#xD;&#xD;      tag &lt;&lt;= 7;&#xD;      tag |= oct &amp; 0x7f;&#xD;    }&#xD;  } else {&#xD;    tag &amp;= 0x1f;&#xD;  }&#xD;  var tagStr = der.tag[tag];&#xD;&#xD;  return {&#xD;    cls: cls,&#xD;    primitive: primitive,&#xD;    tag: tag,&#xD;    tagStr: tagStr&#xD;  };&#xD;}&#xD;&#xD;function derDecodeLen(buf, primitive, fail) {&#xD;  var len = buf.readUInt8(fail);&#xD;  if (buf.isError(len))&#xD;    return len;&#xD;&#xD;  // Indefinite form&#xD;  if (!primitive &amp;&amp; len === 0x80)&#xD;    return null;&#xD;&#xD;  // Definite form&#xD;  if ((len &amp; 0x80) === 0) {&#xD;    // Short form&#xD;    return len;&#xD;  }&#xD;&#xD;  // Long form&#xD;  var num = len &amp; 0x7f;&#xD;  if (num &gt; 4)&#xD;    return buf.error(&apos;length octect is too long&apos;);&#xD;&#xD;  len = 0;&#xD;  for (var i = 0; i &lt; num; i++) {&#xD;    len &lt;&lt;= 8;&#xD;    var j = buf.readUInt8(fail);&#xD;    if (buf.isError(j))&#xD;      return j;&#xD;    len |= j;&#xD;  }&#xD;&#xD;  return len;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 111 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;&#xD;var asn1 = __webpack_require__(45);&#xD;var base = asn1.base;&#xD;&#xD;// Import DER constants&#xD;var der = asn1.constants.der;&#xD;&#xD;function DEREncoder(entity) {&#xD;  this.enc = &apos;der&apos;;&#xD;  this.name = entity.name;&#xD;  this.entity = entity;&#xD;&#xD;  // Construct base tree&#xD;  this.tree = new DERNode();&#xD;  this.tree._init(entity.body);&#xD;};&#xD;module.exports = DEREncoder;&#xD;&#xD;DEREncoder.prototype.encode = function encode(data, reporter) {&#xD;  return this.tree._encode(data, reporter).join();&#xD;};&#xD;&#xD;// Tree methods&#xD;&#xD;function DERNode(parent) {&#xD;  base.Node.call(this, &apos;der&apos;, parent);&#xD;}&#xD;inherits(DERNode, base.Node);&#xD;&#xD;DERNode.prototype._encodeComposite = function encodeComposite(tag,&#xD;                                                              primitive,&#xD;                                                              cls,&#xD;                                                              content) {&#xD;  var encodedTag = encodeTag(tag, primitive, cls, this.reporter);&#xD;&#xD;  // Short form&#xD;  if (content.length &lt; 0x80) {&#xD;    var header = new Buffer(2);&#xD;    header[0] = encodedTag;&#xD;    header[1] = content.length;&#xD;    return this._createEncoderBuffer([ header, content ]);&#xD;  }&#xD;&#xD;  // Long form&#xD;  // Count octets required to store length&#xD;  var lenOctets = 1;&#xD;  for (var i = content.length; i &gt;= 0x100; i &gt;&gt;= 8)&#xD;    lenOctets++;&#xD;&#xD;  var header = new Buffer(1 + 1 + lenOctets);&#xD;  header[0] = encodedTag;&#xD;  header[1] = 0x80 | lenOctets;&#xD;&#xD;  for (var i = 1 + lenOctets, j = content.length; j &gt; 0; i--, j &gt;&gt;= 8)&#xD;    header[i] = j &amp; 0xff;&#xD;&#xD;  return this._createEncoderBuffer([ header, content ]);&#xD;};&#xD;&#xD;DERNode.prototype._encodeStr = function encodeStr(str, tag) {&#xD;  if (tag === &apos;bitstr&apos;) {&#xD;    return this._createEncoderBuffer([ str.unused | 0, str.data ]);&#xD;  } else if (tag === &apos;bmpstr&apos;) {&#xD;    var buf = new Buffer(str.length * 2);&#xD;    for (var i = 0; i &lt; str.length; i++) {&#xD;      buf.writeUInt16BE(str.charCodeAt(i), i * 2);&#xD;    }&#xD;    return this._createEncoderBuffer(buf);&#xD;  } else if (tag === &apos;numstr&apos;) {&#xD;    if (!this._isNumstr(str)) {&#xD;      return this.reporter.error(&apos;Encoding of string type: numstr supports &apos; +&#xD;                                 &apos;only digits and space&apos;);&#xD;    }&#xD;    return this._createEncoderBuffer(str);&#xD;  } else if (tag === &apos;printstr&apos;) {&#xD;    if (!this._isPrintstr(str)) {&#xD;      return this.reporter.error(&apos;Encoding of string type: printstr supports &apos; +&#xD;                                 &apos;only latin upper and lower case letters, &apos; +&#xD;                                 &apos;digits, space, apostrophe, left and rigth &apos; +&#xD;                                 &apos;parenthesis, plus sign, comma, hyphen, &apos; +&#xD;                                 &apos;dot, slash, colon, equal sign, &apos; +&#xD;                                 &apos;question mark&apos;);&#xD;    }&#xD;    return this._createEncoderBuffer(str);&#xD;  } else if (/str$/.test(tag)) {&#xD;    return this._createEncoderBuffer(str);&#xD;  } else if (tag === &apos;objDesc&apos;) {&#xD;    return this._createEncoderBuffer(str);&#xD;  } else {&#xD;    return this.reporter.error(&apos;Encoding of string type: &apos; + tag +&#xD;                               &apos; unsupported&apos;);&#xD;  }&#xD;};&#xD;&#xD;DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {&#xD;  if (typeof id === &apos;string&apos;) {&#xD;    if (!values)&#xD;      return this.reporter.error(&apos;string objid given, but no values map found&apos;);&#xD;    if (!values.hasOwnProperty(id))&#xD;      return this.reporter.error(&apos;objid not found in values map&apos;);&#xD;    id = values[id].split(/[\s\.]+/g);&#xD;    for (var i = 0; i &lt; id.length; i++)&#xD;      id[i] |= 0;&#xD;  } else if (Array.isArray(id)) {&#xD;    id = id.slice();&#xD;    for (var i = 0; i &lt; id.length; i++)&#xD;      id[i] |= 0;&#xD;  }&#xD;&#xD;  if (!Array.isArray(id)) {&#xD;    return this.reporter.error(&apos;objid() should be either array or string, &apos; +&#xD;                               &apos;got: &apos; + JSON.stringify(id));&#xD;  }&#xD;&#xD;  if (!relative) {&#xD;    if (id[1] &gt;= 40)&#xD;      return this.reporter.error(&apos;Second objid identifier OOB&apos;);&#xD;    id.splice(0, 2, id[0] * 40 + id[1]);&#xD;  }&#xD;&#xD;  // Count number of octets&#xD;  var size = 0;&#xD;  for (var i = 0; i &lt; id.length; i++) {&#xD;    var ident = id[i];&#xD;    for (size++; ident &gt;= 0x80; ident &gt;&gt;= 7)&#xD;      size++;&#xD;  }&#xD;&#xD;  var objid = new Buffer(size);&#xD;  var offset = objid.length - 1;&#xD;  for (var i = id.length - 1; i &gt;= 0; i--) {&#xD;    var ident = id[i];&#xD;    objid[offset--] = ident &amp; 0x7f;&#xD;    while ((ident &gt;&gt;= 7) &gt; 0)&#xD;      objid[offset--] = 0x80 | (ident &amp; 0x7f);&#xD;  }&#xD;&#xD;  return this._createEncoderBuffer(objid);&#xD;};&#xD;&#xD;function two(num) {&#xD;  if (num &lt; 10)&#xD;    return &apos;0&apos; + num;&#xD;  else&#xD;    return num;&#xD;}&#xD;&#xD;DERNode.prototype._encodeTime = function encodeTime(time, tag) {&#xD;  var str;&#xD;  var date = new Date(time);&#xD;&#xD;  if (tag === &apos;gentime&apos;) {&#xD;    str = [&#xD;      two(date.getFullYear()),&#xD;      two(date.getUTCMonth() + 1),&#xD;      two(date.getUTCDate()),&#xD;      two(date.getUTCHours()),&#xD;      two(date.getUTCMinutes()),&#xD;      two(date.getUTCSeconds()),&#xD;      &apos;Z&apos;&#xD;    ].join(&apos;&apos;);&#xD;  } else if (tag === &apos;utctime&apos;) {&#xD;    str = [&#xD;      two(date.getFullYear() % 100),&#xD;      two(date.getUTCMonth() + 1),&#xD;      two(date.getUTCDate()),&#xD;      two(date.getUTCHours()),&#xD;      two(date.getUTCMinutes()),&#xD;      two(date.getUTCSeconds()),&#xD;      &apos;Z&apos;&#xD;    ].join(&apos;&apos;);&#xD;  } else {&#xD;    this.reporter.error(&apos;Encoding &apos; + tag + &apos; time is not supported yet&apos;);&#xD;  }&#xD;&#xD;  return this._encodeStr(str, &apos;octstr&apos;);&#xD;};&#xD;&#xD;DERNode.prototype._encodeNull = function encodeNull() {&#xD;  return this._createEncoderBuffer(&apos;&apos;);&#xD;};&#xD;&#xD;DERNode.prototype._encodeInt = function encodeInt(num, values) {&#xD;  if (typeof num === &apos;string&apos;) {&#xD;    if (!values)&#xD;      return this.reporter.error(&apos;String int or enum given, but no values map&apos;);&#xD;    if (!values.hasOwnProperty(num)) {&#xD;      return this.reporter.error(&apos;Values map doesn\&apos;t contain: &apos; +&#xD;                                 JSON.stringify(num));&#xD;    }&#xD;    num = values[num];&#xD;  }&#xD;&#xD;  // Bignum, assume big endian&#xD;  if (typeof num !== &apos;number&apos; &amp;&amp; !Buffer.isBuffer(num)) {&#xD;    var numArray = num.toArray();&#xD;    if (!num.sign &amp;&amp; numArray[0] &amp; 0x80) {&#xD;      numArray.unshift(0);&#xD;    }&#xD;    num = new Buffer(numArray);&#xD;  }&#xD;&#xD;  if (Buffer.isBuffer(num)) {&#xD;    var size = num.length;&#xD;    if (num.length === 0)&#xD;      size++;&#xD;&#xD;    var out = new Buffer(size);&#xD;    num.copy(out);&#xD;    if (num.length === 0)&#xD;      out[0] = 0&#xD;    return this._createEncoderBuffer(out);&#xD;  }&#xD;&#xD;  if (num &lt; 0x80)&#xD;    return this._createEncoderBuffer(num);&#xD;&#xD;  if (num &lt; 0x100)&#xD;    return this._createEncoderBuffer([0, num]);&#xD;&#xD;  var size = 1;&#xD;  for (var i = num; i &gt;= 0x100; i &gt;&gt;= 8)&#xD;    size++;&#xD;&#xD;  var out = new Array(size);&#xD;  for (var i = out.length - 1; i &gt;= 0; i--) {&#xD;    out[i] = num &amp; 0xff;&#xD;    num &gt;&gt;= 8;&#xD;  }&#xD;  if(out[0] &amp; 0x80) {&#xD;    out.unshift(0);&#xD;  }&#xD;&#xD;  return this._createEncoderBuffer(new Buffer(out));&#xD;};&#xD;&#xD;DERNode.prototype._encodeBool = function encodeBool(value) {&#xD;  return this._createEncoderBuffer(value ? 0xff : 0);&#xD;};&#xD;&#xD;DERNode.prototype._use = function use(entity, obj) {&#xD;  if (typeof entity === &apos;function&apos;)&#xD;    entity = entity(obj);&#xD;  return entity._getEncoder(&apos;der&apos;).tree;&#xD;};&#xD;&#xD;DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {&#xD;  var state = this._baseState;&#xD;  var i;&#xD;  if (state[&apos;default&apos;] === null)&#xD;    return false;&#xD;&#xD;  var data = dataBuffer.join();&#xD;  if (state.defaultBuffer === undefined)&#xD;    state.defaultBuffer = this._encodeValue(state[&apos;default&apos;], reporter, parent).join();&#xD;&#xD;  if (data.length !== state.defaultBuffer.length)&#xD;    return false;&#xD;&#xD;  for (i=0; i &lt; data.length; i++)&#xD;    if (data[i] !== state.defaultBuffer[i])&#xD;      return false;&#xD;&#xD;  return true;&#xD;};&#xD;&#xD;// Utility methods&#xD;&#xD;function encodeTag(tag, primitive, cls, reporter) {&#xD;  var res;&#xD;&#xD;  if (tag === &apos;seqof&apos;)&#xD;    tag = &apos;seq&apos;;&#xD;  else if (tag === &apos;setof&apos;)&#xD;    tag = &apos;set&apos;;&#xD;&#xD;  if (der.tagByName.hasOwnProperty(tag))&#xD;    res = der.tagByName[tag];&#xD;  else if (typeof tag === &apos;number&apos; &amp;&amp; (tag | 0) === tag)&#xD;    res = tag;&#xD;  else&#xD;    return reporter.error(&apos;Unknown tag: &apos; + tag);&#xD;&#xD;  if (res &gt;= 0x1f)&#xD;    return reporter.error(&apos;Multi-octet tag encoding unsupported&apos;);&#xD;&#xD;  if (!primitive)&#xD;    res |= 0x20;&#xD;&#xD;  res |= (der.tagClassByName[cls || &apos;universal&apos;] &lt;&lt; 6);&#xD;&#xD;  return res;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 112 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var Selector = __webpack_require__(217);&#xD;var styles = __webpack_require__(519);&#xD;&#xD;var AssetPanel = function AssetPanel(props) {&#xD;    return React.createElement(&#xD;        Box,&#xD;        { className: styles.wrapper },&#xD;        React.createElement(Selector, _extends({&#xD;            className: styles.selector&#xD;        }, props)),&#xD;        React.createElement(Box, { className: styles.detailArea })&#xD;    );&#xD;};&#xD;&#xD;AssetPanel.propTypes = _extends({}, Selector.propTypes);&#xD;&#xD;module.exports = AssetPanel;&#xD;&#xD;/***/ }),&#xD;/* 113 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var styles = __webpack_require__(523);&#xD;&#xD;var ButtonComponent = function ButtonComponent(_ref) {&#xD;    var className = _ref.className,&#xD;        onClick = _ref.onClick,&#xD;        children = _ref.children,&#xD;        props = _objectWithoutProperties(_ref, [&apos;className&apos;, &apos;onClick&apos;, &apos;children&apos;]);&#xD;&#xD;    return React.createElement(&#xD;        &apos;span&apos;,&#xD;        _extends({&#xD;            className: classNames(styles.button, className),&#xD;            role: &apos;button&apos;,&#xD;            onClick: onClick&#xD;        }, props),&#xD;        children&#xD;    );&#xD;};&#xD;&#xD;ButtonComponent.propTypes = {&#xD;    children: PropTypes.node,&#xD;    className: PropTypes.string,&#xD;    onClick: PropTypes.func.isRequired&#xD;};&#xD;module.exports = ButtonComponent;&#xD;&#xD;/***/ }),&#xD;/* 114 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var classNames = __webpack_require__(17);&#xD;&#xD;var styles = __webpack_require__(524);&#xD;var closeIcon = __webpack_require__(543);&#xD;&#xD;var CloseButton = function CloseButton(props) {&#xD;    var _classNames;&#xD;&#xD;    return React.createElement(&#xD;        &apos;div&apos;,&#xD;        {&#xD;            className: classNames(styles.closeButton, props.className, (_classNames = {}, _defineProperty(_classNames, styles.large, props.size === CloseButton.SIZE_LARGE), _defineProperty(_classNames, styles.small, props.size === CloseButton.SIZE_SMALL), _classNames)),&#xD;            onClick: props.onClick&#xD;        },&#xD;        React.createElement(&apos;img&apos;, {&#xD;            className: styles.closeIcon,&#xD;            src: closeIcon&#xD;        })&#xD;    );&#xD;};&#xD;&#xD;CloseButton.SIZE_LARGE = &apos;large&apos;;&#xD;CloseButton.SIZE_SMALL = &apos;small&apos;;&#xD;&#xD;CloseButton.propTypes = {&#xD;    className: PropTypes.string,&#xD;    onClick: PropTypes.func.isRequired,&#xD;    size: PropTypes.oneOf([CloseButton.SIZE_LARGE, CloseButton.SIZE_SMALL])&#xD;};&#xD;&#xD;CloseButton.defaultProps = {&#xD;    size: CloseButton.SIZE_LARGE&#xD;};&#xD;&#xD;module.exports = CloseButton;&#xD;&#xD;/***/ }),&#xD;/* 115 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var svgToImage = __webpack_require__(542);&#xD;var xhr = __webpack_require__(201);&#xD;&#xD;/**&#xD; * @fileoverview&#xD; * A component for rendering Scratch costume URLs to canvases.&#xD; * Use for sprite library, costume library, sprite selector, etc.&#xD; * Props include width, height, and direction (direction in Scratch value).&#xD; */&#xD;&#xD;var CostumeCanvas = function (_React$Component) {&#xD;    _inherits(CostumeCanvas, _React$Component);&#xD;&#xD;    function CostumeCanvas() {&#xD;        _classCallCheck(this, CostumeCanvas);&#xD;&#xD;        return _possibleConstructorReturn(this, (CostumeCanvas.__proto__ || Object.getPrototypeOf(CostumeCanvas)).apply(this, arguments));&#xD;    }&#xD;&#xD;    _createClass(CostumeCanvas, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.load();&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentDidUpdate&apos;,&#xD;        value: function componentDidUpdate(prevProps) {&#xD;            if (prevProps.url !== this.props.url) {&#xD;                this.load();&#xD;            } else if (prevProps.width !== this.props.width || prevProps.height !== this.props.height || prevProps.direction !== this.props.direction) {&#xD;                this.draw();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;draw&apos;,&#xD;        value: function draw() {&#xD;            if (!this.canvas) {&#xD;                return;&#xD;            }&#xD;&#xD;            // Draw the costume to the rendered canvas.&#xD;            var img = this.img;&#xD;            var context = this.canvas.getContext(&apos;2d&apos;);&#xD;&#xD;            // Scale to fit.&#xD;            var scale = void 0;&#xD;&#xD;            // Choose the larger dimension to scale by.&#xD;            if (img.width &gt; img.height) {&#xD;                scale = this.canvas.width / img.width;&#xD;            } else {&#xD;                scale = this.canvas.height / img.height;&#xD;            }&#xD;&#xD;            // Rotate by the Scratch-value direction.&#xD;            var angle = (-90 + this.props.direction) * Math.PI / 180;&#xD;&#xD;            // Rotation origin point will be center of the canvas.&#xD;            var contextTranslateX = this.canvas.width / 2;&#xD;            var contextTranslateY = this.canvas.height / 2;&#xD;&#xD;            // First, clear the canvas.&#xD;            context.clearRect(0, 0, this.canvas.width, this.canvas.height);&#xD;&#xD;            // Translate the context to the center of the canvas,&#xD;            // then rotate canvas drawing by `angle`.&#xD;            context.translate(contextTranslateX, contextTranslateY);&#xD;            context.rotate(angle);&#xD;            context.drawImage(img, 0, 0, img.width, img.height, -(scale * img.width / 2), -(scale * img.height / 2), scale * img.width, scale * img.height);&#xD;&#xD;            // Reset the canvas rotation and translation to 0, (0, 0).&#xD;            context.rotate(-angle);&#xD;            context.translate(-contextTranslateX, -contextTranslateY);&#xD;        }&#xD;    }, {&#xD;        key: &apos;load&apos;,&#xD;        value: function load() {&#xD;            var _this2 = this;&#xD;&#xD;            // Draw the icon on our canvas.&#xD;            var url = this.props.url;&#xD;            if (url.indexOf(&apos;.svg&apos;) &gt; -1) {&#xD;                // Vector graphics: need to download with XDR and rasterize.&#xD;                // Queue request asynchronously.&#xD;                setTimeout(function () {&#xD;                    xhr.get({&#xD;                        useXDR: true,&#xD;                        url: url&#xD;                    }, function (err, response, body) {&#xD;                        if (!err) {&#xD;                            svgToImage(body, function (svgErr, img) {&#xD;                                if (!svgErr) {&#xD;                                    _this2.img = img;&#xD;                                    _this2.draw();&#xD;                                }&#xD;                            });&#xD;                        }&#xD;                    });&#xD;                }, 0);&#xD;            } else {&#xD;                // Raster graphics: create Image and draw it.&#xD;                var img = new Image();&#xD;                img.src = url;&#xD;                img.onload = function () {&#xD;                    _this2.img = img;&#xD;                    _this2.draw();&#xD;                };&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _this3 = this;&#xD;&#xD;            return React.createElement(&apos;canvas&apos;, {&#xD;                className: this.props.className,&#xD;                height: this.props.height,&#xD;                width: this.props.width,&#xD;                ref: function ref(c) {&#xD;                    return _this3.canvas = c;&#xD;                } // eslint-disable-line react/jsx-sort-props&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return CostumeCanvas;&#xD;}(React.Component);&#xD;&#xD;CostumeCanvas.defaultProps = {&#xD;    width: 100,&#xD;    height: 100,&#xD;    direction: 90&#xD;};&#xD;&#xD;CostumeCanvas.propTypes = {&#xD;    className: PropTypes.string,&#xD;    direction: PropTypes.number,&#xD;    height: PropTypes.number,&#xD;    url: PropTypes.string.isRequired,&#xD;    width: PropTypes.number&#xD;};&#xD;&#xD;module.exports = CostumeCanvas;&#xD;&#xD;/***/ }),&#xD;/* 116 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var SpriteSelectorItemComponent = __webpack_require__(229);&#xD;&#xD;var SpriteSelectorItem = function (_React$Component) {&#xD;    _inherits(SpriteSelectorItem, _React$Component);&#xD;&#xD;    function SpriteSelectorItem(props) {&#xD;        _classCallCheck(this, SpriteSelectorItem);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SpriteSelectorItem.__proto__ || Object.getPrototypeOf(SpriteSelectorItem)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;, &apos;handleDelete&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SpriteSelectorItem, [{&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick(e) {&#xD;            e.preventDefault();&#xD;            this.props.onClick(this.props.id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleDelete&apos;,&#xD;        value: function handleDelete() {&#xD;            // eslint-disable-next-line no-alert&#xD;            if (window.confirm(&apos;Are you sure you want to delete this sprite?&apos;)) {&#xD;                this.props.onDeleteButtonClick(this.props.id);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                assetId = _props.assetId,&#xD;                id = _props.id,&#xD;                onClick = _props.onClick,&#xD;                onDeleteButtonClick = _props.onDeleteButtonClick,&#xD;                props = _objectWithoutProperties(_props, [&apos;assetId&apos;, &apos;id&apos;, &apos;onClick&apos;, &apos;onDeleteButtonClick&apos;]);&#xD;&#xD;            return React.createElement(SpriteSelectorItemComponent, _extends({&#xD;                onClick: this.handleClick,&#xD;                onDeleteButtonClick: this.handleDelete&#xD;            }, props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return SpriteSelectorItem;&#xD;}(React.Component);&#xD;&#xD;SpriteSelectorItem.propTypes = {&#xD;    assetId: PropTypes.string,&#xD;    costumeURL: PropTypes.string,&#xD;    id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),&#xD;    name: PropTypes.string,&#xD;    onClick: PropTypes.func,&#xD;    onDeleteButtonClick: PropTypes.func,&#xD;    selected: PropTypes.bool&#xD;};&#xD;&#xD;var mapStateToProps = function mapStateToProps(state, _ref) {&#xD;    var assetId = _ref.assetId,&#xD;        costumeURL = _ref.costumeURL;&#xD;    return {&#xD;        costumeURL: costumeURL || assetId &amp;&amp; state.vm.runtime.storage.get(assetId).encodeDataURI()&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps)(SpriteSelectorItem);&#xD;&#xD;/***/ }),&#xD;/* 117 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i &lt; arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }&#xD;&#xD;var UPDATE_MONITORS = &apos;scratch-gui/monitors/UPDATE_MONITORS&apos;;&#xD;&#xD;var initialState = [];&#xD;&#xD;var reducer = function reducer(state, action) {&#xD;    if (typeof state === &apos;undefined&apos;) state = initialState;&#xD;    switch (action.type) {&#xD;        case UPDATE_MONITORS:&#xD;            return [].concat(_toConsumableArray(action.monitors));&#xD;        default:&#xD;            return state;&#xD;    }&#xD;};&#xD;&#xD;reducer.updateMonitors = function (monitors) {&#xD;    return {&#xD;        type: UPDATE_MONITORS,&#xD;        monitors: monitors,&#xD;        meta: {&#xD;            throttle: 30&#xD;        }&#xD;    };&#xD;};&#xD;&#xD;module.exports = reducer;&#xD;&#xD;/***/ }),&#xD;/* 118 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;var UPDATE_EDITING_TARGET = &apos;scratch-gui/targets/UPDATE_EDITING_TARGET&apos;;&#xD;var UPDATE_TARGET_LIST = &apos;scratch-gui/targets/UPDATE_TARGET_LIST&apos;;&#xD;&#xD;var initialState = {&#xD;    sprites: {},&#xD;    stage: {}&#xD;};&#xD;&#xD;var reducer = function reducer(state, action) {&#xD;    if (typeof state === &apos;undefined&apos;) state = initialState;&#xD;    switch (action.type) {&#xD;        case UPDATE_TARGET_LIST:&#xD;            return Object.assign({}, state, {&#xD;                sprites: action.targets.filter(function (target) {&#xD;                    return !target.isStage;&#xD;                }).reduce(function (targets, target, listId) {&#xD;                    return Object.assign(targets, _defineProperty({}, target.id, _extends({ order: listId }, target)));&#xD;                }, {}),&#xD;                stage: action.targets.filter(function (target) {&#xD;                    return target.isStage;&#xD;                })[0] || {}&#xD;            });&#xD;        case UPDATE_EDITING_TARGET:&#xD;            return Object.assign({}, state, { editingTarget: action.target });&#xD;        default:&#xD;            return state;&#xD;    }&#xD;};&#xD;reducer.updateTargets = function (targetList) {&#xD;    return {&#xD;        type: UPDATE_TARGET_LIST,&#xD;        targets: targetList,&#xD;        meta: {&#xD;            throttle: 30&#xD;        }&#xD;    };&#xD;};&#xD;reducer.updateEditingTarget = function (editingTarget) {&#xD;    return {&#xD;        type: UPDATE_EDITING_TARGET,&#xD;        target: editingTarget,&#xD;        meta: {&#xD;            throttle: 30&#xD;        }&#xD;    };&#xD;};&#xD;module.exports = reducer;&#xD;&#xD;/***/ }),&#xD;/* 119 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var r;&#xD;&#xD;module.exports = function rand(len) {&#xD;  if (!r)&#xD;    r = new Rand(null);&#xD;&#xD;  return r.generate(len);&#xD;};&#xD;&#xD;function Rand(rand) {&#xD;  this.rand = rand;&#xD;}&#xD;module.exports.Rand = Rand;&#xD;&#xD;Rand.prototype.generate = function generate(len) {&#xD;  return this._rand(len);&#xD;};&#xD;&#xD;// Emulate crypto API using randy&#xD;Rand.prototype._rand = function _rand(n) {&#xD;  if (this.rand.getBytes)&#xD;    return this.rand.getBytes(n);&#xD;&#xD;  var res = new Uint8Array(n);&#xD;  for (var i = 0; i &lt; res.length; i++)&#xD;    res[i] = this.rand.getByte();&#xD;  return res;&#xD;};&#xD;&#xD;if (typeof self === &apos;object&apos;) {&#xD;  if (self.crypto &amp;&amp; self.crypto.getRandomValues) {&#xD;    // Modern browsers&#xD;    Rand.prototype._rand = function _rand(n) {&#xD;      var arr = new Uint8Array(n);&#xD;      self.crypto.getRandomValues(arr);&#xD;      return arr;&#xD;    };&#xD;  } else if (self.msCrypto &amp;&amp; self.msCrypto.getRandomValues) {&#xD;    // IE&#xD;    Rand.prototype._rand = function _rand(n) {&#xD;      var arr = new Uint8Array(n);&#xD;      self.msCrypto.getRandomValues(arr);&#xD;      return arr;&#xD;    };&#xD;&#xD;  // Safari&apos;s WebWorkers do not have `crypto`&#xD;  } else if (typeof window === &apos;object&apos;) {&#xD;    // Old junk&#xD;    Rand.prototype._rand = function() {&#xD;      throw new Error(&apos;Not implemented yet&apos;);&#xD;    };&#xD;  }&#xD;} else {&#xD;  // Node.js or Web worker with no crypto support&#xD;  try {&#xD;    var crypto = __webpack_require__(567);&#xD;    if (typeof crypto.randomBytes !== &apos;function&apos;)&#xD;      throw new Error(&apos;Not supported&apos;);&#xD;&#xD;    Rand.prototype._rand = function _rand(n) {&#xD;      return crypto.randomBytes(n);&#xD;    };&#xD;  } catch (e) {&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 120 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(56)&#xD;var Transform = __webpack_require__(38)&#xD;var inherits = __webpack_require__(5)&#xD;var GHASH = __webpack_require__(261)&#xD;var xor = __webpack_require__(47)&#xD;inherits(StreamCipher, Transform)&#xD;module.exports = StreamCipher&#xD;&#xD;function StreamCipher (mode, key, iv, decrypt) {&#xD;  if (!(this instanceof StreamCipher)) {&#xD;    return new StreamCipher(mode, key, iv)&#xD;  }&#xD;  Transform.call(this)&#xD;  this._finID = Buffer.concat([iv, new Buffer([0, 0, 0, 1])])&#xD;  iv = Buffer.concat([iv, new Buffer([0, 0, 0, 2])])&#xD;  this._cipher = new aes.AES(key)&#xD;  this._prev = new Buffer(iv.length)&#xD;  this._cache = new Buffer(&apos;&apos;)&#xD;  this._secCache = new Buffer(&apos;&apos;)&#xD;  this._decrypt = decrypt&#xD;  this._alen = 0&#xD;  this._len = 0&#xD;  iv.copy(this._prev)&#xD;  this._mode = mode&#xD;  var h = new Buffer(4)&#xD;  h.fill(0)&#xD;  this._ghash = new GHASH(this._cipher.encryptBlock(h))&#xD;  this._authTag = null&#xD;  this._called = false&#xD;}&#xD;StreamCipher.prototype._update = function (chunk) {&#xD;  if (!this._called &amp;&amp; this._alen) {&#xD;    var rump = 16 - (this._alen % 16)&#xD;    if (rump &lt; 16) {&#xD;      rump = new Buffer(rump)&#xD;      rump.fill(0)&#xD;      this._ghash.update(rump)&#xD;    }&#xD;  }&#xD;  this._called = true&#xD;  var out = this._mode.encrypt(this, chunk)&#xD;  if (this._decrypt) {&#xD;    this._ghash.update(chunk)&#xD;  } else {&#xD;    this._ghash.update(out)&#xD;  }&#xD;  this._len += chunk.length&#xD;  return out&#xD;}&#xD;StreamCipher.prototype._final = function () {&#xD;  if (this._decrypt &amp;&amp; !this._authTag) {&#xD;    throw new Error(&apos;Unsupported state or unable to authenticate data&apos;)&#xD;  }&#xD;  var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))&#xD;  if (this._decrypt) {&#xD;    if (xorTest(tag, this._authTag)) {&#xD;      throw new Error(&apos;Unsupported state or unable to authenticate data&apos;)&#xD;    }&#xD;  } else {&#xD;    this._authTag = tag&#xD;  }&#xD;  this._cipher.scrub()&#xD;}&#xD;StreamCipher.prototype.getAuthTag = function getAuthTag () {&#xD;  if (!this._decrypt &amp;&amp; Buffer.isBuffer(this._authTag)) {&#xD;    return this._authTag&#xD;  } else {&#xD;    throw new Error(&apos;Attempting to get auth tag in unsupported state&apos;)&#xD;  }&#xD;}&#xD;StreamCipher.prototype.setAuthTag = function setAuthTag (tag) {&#xD;  if (this._decrypt) {&#xD;    this._authTag = tag&#xD;  } else {&#xD;    throw new Error(&apos;Attempting to set auth tag in unsupported state&apos;)&#xD;  }&#xD;}&#xD;StreamCipher.prototype.setAAD = function setAAD (buf) {&#xD;  if (!this._called) {&#xD;    this._ghash.update(buf)&#xD;    this._alen += buf.length&#xD;  } else {&#xD;    throw new Error(&apos;Attempting to set AAD in unsupported state&apos;)&#xD;  }&#xD;}&#xD;function xorTest (a, b) {&#xD;  var out = 0&#xD;  if (a.length !== b.length) {&#xD;    out++&#xD;  }&#xD;  var len = Math.min(a.length, b.length)&#xD;  var i = -1&#xD;  while (++i &lt; len) {&#xD;    out += (a[i] ^ b[i])&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 121 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var xor = __webpack_require__(47)&#xD;&#xD;exports.encrypt = function (self, block) {&#xD;  var data = xor(block, self._prev)&#xD;&#xD;  self._prev = self._cipher.encryptBlock(data)&#xD;  return self._prev&#xD;}&#xD;&#xD;exports.decrypt = function (self, block) {&#xD;  var pad = self._prev&#xD;&#xD;  self._prev = block&#xD;  var out = self._cipher.decryptBlock(block)&#xD;&#xD;  return xor(out, pad)&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 122 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(47)&#xD;&#xD;exports.encrypt = function (self, data, decrypt) {&#xD;  var out = new Buffer(&apos;&apos;)&#xD;  var len&#xD;&#xD;  while (data.length) {&#xD;    if (self._cache.length === 0) {&#xD;      self._cache = self._cipher.encryptBlock(self._prev)&#xD;      self._prev = new Buffer(&apos;&apos;)&#xD;    }&#xD;&#xD;    if (self._cache.length &lt;= data.length) {&#xD;      len = self._cache.length&#xD;      out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])&#xD;      data = data.slice(len)&#xD;    } else {&#xD;      out = Buffer.concat([out, encryptStart(self, data, decrypt)])&#xD;      break&#xD;    }&#xD;  }&#xD;&#xD;  return out&#xD;}&#xD;function encryptStart (self, data, decrypt) {&#xD;  var len = data.length&#xD;  var out = xor(data, self._cache)&#xD;  self._cache = self._cache.slice(len)&#xD;  self._prev = Buffer.concat([self._prev, decrypt ? data : out])&#xD;  return out&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 123 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {function encryptByte (self, byteParam, decrypt) {&#xD;  var pad&#xD;  var i = -1&#xD;  var len = 8&#xD;  var out = 0&#xD;  var bit, value&#xD;  while (++i &lt; len) {&#xD;    pad = self._cipher.encryptBlock(self._prev)&#xD;    bit = (byteParam &amp; (1 &lt;&lt; (7 - i))) ? 0x80 : 0&#xD;    value = pad[0] ^ bit&#xD;    out += ((value &amp; 0x80) &gt;&gt; (i % 8))&#xD;    self._prev = shiftIn(self._prev, decrypt ? bit : value)&#xD;  }&#xD;  return out&#xD;}&#xD;exports.encrypt = function (self, chunk, decrypt) {&#xD;  var len = chunk.length&#xD;  var out = new Buffer(len)&#xD;  var i = -1&#xD;  while (++i &lt; len) {&#xD;    out[i] = encryptByte(self, chunk[i], decrypt)&#xD;  }&#xD;  return out&#xD;}&#xD;function shiftIn (buffer, value) {&#xD;  var len = buffer.length&#xD;  var i = -1&#xD;  var out = new Buffer(buffer.length)&#xD;  buffer = Buffer.concat([buffer, new Buffer([value])])&#xD;  while (++i &lt; len) {&#xD;    out[i] = buffer[i] &lt;&lt; 1 | buffer[i + 1] &gt;&gt; (7)&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 124 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {function encryptByte (self, byteParam, decrypt) {&#xD;  var pad = self._cipher.encryptBlock(self._prev)&#xD;  var out = pad[0] ^ byteParam&#xD;  self._prev = Buffer.concat([self._prev.slice(1), new Buffer([decrypt ? byteParam : out])])&#xD;  return out&#xD;}&#xD;exports.encrypt = function (self, chunk, decrypt) {&#xD;  var len = chunk.length&#xD;  var out = new Buffer(len)&#xD;  var i = -1&#xD;  while (++i &lt; len) {&#xD;    out[i] = encryptByte(self, chunk[i], decrypt)&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 125 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;exports.encrypt = function (self, block) {&#xD;  return self._cipher.encryptBlock(block)&#xD;}&#xD;exports.decrypt = function (self, block) {&#xD;  return self._cipher.decryptBlock(block)&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 126 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var xor = __webpack_require__(47)&#xD;&#xD;function getBlock (self) {&#xD;  self._prev = self._cipher.encryptBlock(self._prev)&#xD;  return self._prev&#xD;}&#xD;&#xD;exports.encrypt = function (self, chunk) {&#xD;  while (self._cache.length &lt; chunk.length) {&#xD;    self._cache = Buffer.concat([self._cache, getBlock(self)])&#xD;  }&#xD;&#xD;  var pad = self._cache.slice(0, chunk.length)&#xD;  self._cache = self._cache.slice(chunk.length)&#xD;  return xor(chunk, pad)&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 127 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(56)&#xD;var Transform = __webpack_require__(38)&#xD;var inherits = __webpack_require__(5)&#xD;&#xD;inherits(StreamCipher, Transform)&#xD;module.exports = StreamCipher&#xD;function StreamCipher (mode, key, iv, decrypt) {&#xD;  if (!(this instanceof StreamCipher)) {&#xD;    return new StreamCipher(mode, key, iv)&#xD;  }&#xD;  Transform.call(this)&#xD;  this._cipher = new aes.AES(key)&#xD;  this._prev = new Buffer(iv.length)&#xD;  this._cache = new Buffer(&apos;&apos;)&#xD;  this._secCache = new Buffer(&apos;&apos;)&#xD;  this._decrypt = decrypt&#xD;  iv.copy(this._prev)&#xD;  this._mode = mode&#xD;}&#xD;StreamCipher.prototype._update = function (chunk) {&#xD;  return this._mode.encrypt(this, chunk, this._decrypt)&#xD;}&#xD;StreamCipher.prototype._final = function () {&#xD;  this._cipher.scrub()&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 128 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"sha224WithRSAEncryption": {&#xD;		"sign": "rsa",&#xD;		"hash": "sha224",&#xD;		"id": "302d300d06096086480165030402040500041c"&#xD;	},&#xD;	"RSA-SHA224": {&#xD;		"sign": "ecdsa/rsa",&#xD;		"hash": "sha224",&#xD;		"id": "302d300d06096086480165030402040500041c"&#xD;	},&#xD;	"sha256WithRSAEncryption": {&#xD;		"sign": "rsa",&#xD;		"hash": "sha256",&#xD;		"id": "3031300d060960864801650304020105000420"&#xD;	},&#xD;	"RSA-SHA256": {&#xD;		"sign": "ecdsa/rsa",&#xD;		"hash": "sha256",&#xD;		"id": "3031300d060960864801650304020105000420"&#xD;	},&#xD;	"sha384WithRSAEncryption": {&#xD;		"sign": "rsa",&#xD;		"hash": "sha384",&#xD;		"id": "3041300d060960864801650304020205000430"&#xD;	},&#xD;	"RSA-SHA384": {&#xD;		"sign": "ecdsa/rsa",&#xD;		"hash": "sha384",&#xD;		"id": "3041300d060960864801650304020205000430"&#xD;	},&#xD;	"sha512WithRSAEncryption": {&#xD;		"sign": "rsa",&#xD;		"hash": "sha512",&#xD;		"id": "3051300d060960864801650304020305000440"&#xD;	},&#xD;	"RSA-SHA512": {&#xD;		"sign": "ecdsa/rsa",&#xD;		"hash": "sha512",&#xD;		"id": "3051300d060960864801650304020305000440"&#xD;	},&#xD;	"RSA-SHA1": {&#xD;		"sign": "rsa",&#xD;		"hash": "sha1",&#xD;		"id": "3021300906052b0e03021a05000414"&#xD;	},&#xD;	"ecdsa-with-SHA1": {&#xD;		"sign": "ecdsa",&#xD;		"hash": "sha1",&#xD;		"id": ""&#xD;	},&#xD;	"sha256": {&#xD;		"sign": "ecdsa",&#xD;		"hash": "sha256",&#xD;		"id": ""&#xD;	},&#xD;	"sha224": {&#xD;		"sign": "ecdsa",&#xD;		"hash": "sha224",&#xD;		"id": ""&#xD;	},&#xD;	"sha384": {&#xD;		"sign": "ecdsa",&#xD;		"hash": "sha384",&#xD;		"id": ""&#xD;	},&#xD;	"sha512": {&#xD;		"sign": "ecdsa",&#xD;		"hash": "sha512",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha1",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA1": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha1",&#xD;		"id": ""&#xD;	},&#xD;	"DSA": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha1",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-WITH-SHA224": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha224",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA224": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha224",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-WITH-SHA256": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha256",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA256": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha256",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-WITH-SHA384": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha384",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA384": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha384",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-WITH-SHA512": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha512",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-SHA512": {&#xD;		"sign": "dsa",&#xD;		"hash": "sha512",&#xD;		"id": ""&#xD;	},&#xD;	"DSA-RIPEMD160": {&#xD;		"sign": "dsa",&#xD;		"hash": "rmd160",&#xD;		"id": ""&#xD;	},&#xD;	"ripemd160WithRSA": {&#xD;		"sign": "rsa",&#xD;		"hash": "rmd160",&#xD;		"id": "3021300906052b2403020105000414"&#xD;	},&#xD;	"RSA-RIPEMD160": {&#xD;		"sign": "rsa",&#xD;		"hash": "rmd160",&#xD;		"id": "3021300906052b2403020105000414"&#xD;	},&#xD;	"md5WithRSAEncryption": {&#xD;		"sign": "rsa",&#xD;		"hash": "md5",&#xD;		"id": "3020300c06082a864886f70d020505000410"&#xD;	},&#xD;	"RSA-MD5": {&#xD;		"sign": "rsa",&#xD;		"hash": "md5",&#xD;		"id": "3020300c06082a864886f70d020505000410"&#xD;	}&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 129 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"1.3.132.0.10": "secp256k1",&#xD;	"1.3.132.0.33": "p224",&#xD;	"1.2.840.10045.3.1.1": "p192",&#xD;	"1.2.840.10045.3.1.7": "p256",&#xD;	"1.3.132.0.34": "p384",&#xD;	"1.3.132.0.35": "p521"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 130 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;/*&#xD; * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message&#xD; * Digest Algorithm, as defined in RFC 1321.&#xD; * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.&#xD; * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&#xD; * Distributed under the BSD License&#xD; * See http://pajhome.org.uk/crypt/md5 for more info.&#xD; */&#xD;&#xD;var helpers = __webpack_require__(273);&#xD;&#xD;/*&#xD; * Calculate the MD5 of an array of little-endian words, and a bit length&#xD; */&#xD;function core_md5(x, len)&#xD;{&#xD;  /* append padding */&#xD;  x[len &gt;&gt; 5] |= 0x80 &lt;&lt; ((len) % 32);&#xD;  x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = len;&#xD;&#xD;  var a =  1732584193;&#xD;  var b = -271733879;&#xD;  var c = -1732584194;&#xD;  var d =  271733878;&#xD;&#xD;  for(var i = 0; i &lt; x.length; i += 16)&#xD;  {&#xD;    var olda = a;&#xD;    var oldb = b;&#xD;    var oldc = c;&#xD;    var oldd = d;&#xD;&#xD;    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);&#xD;    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);&#xD;    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);&#xD;    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);&#xD;    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);&#xD;    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);&#xD;    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);&#xD;    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);&#xD;    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);&#xD;    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);&#xD;    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);&#xD;    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);&#xD;    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);&#xD;    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);&#xD;    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);&#xD;    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);&#xD;&#xD;    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);&#xD;    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);&#xD;    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);&#xD;    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);&#xD;    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);&#xD;    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);&#xD;    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);&#xD;    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);&#xD;    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);&#xD;    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);&#xD;    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);&#xD;    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);&#xD;    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);&#xD;    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);&#xD;    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);&#xD;    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);&#xD;&#xD;    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);&#xD;    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);&#xD;    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);&#xD;    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);&#xD;    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);&#xD;    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);&#xD;    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);&#xD;    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);&#xD;    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);&#xD;    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);&#xD;    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);&#xD;    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);&#xD;    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);&#xD;    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);&#xD;    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);&#xD;    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);&#xD;&#xD;    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);&#xD;    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);&#xD;    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);&#xD;    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);&#xD;    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);&#xD;    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);&#xD;    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);&#xD;    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);&#xD;    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);&#xD;    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);&#xD;    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);&#xD;    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);&#xD;    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);&#xD;    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);&#xD;    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);&#xD;    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);&#xD;&#xD;    a = safe_add(a, olda);&#xD;    b = safe_add(b, oldb);&#xD;    c = safe_add(c, oldc);&#xD;    d = safe_add(d, oldd);&#xD;  }&#xD;  return Array(a, b, c, d);&#xD;&#xD;}&#xD;&#xD;/*&#xD; * These functions implement the four basic operations the algorithm uses.&#xD; */&#xD;function md5_cmn(q, a, b, x, s, t)&#xD;{&#xD;  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);&#xD;}&#xD;function md5_ff(a, b, c, d, x, s, t)&#xD;{&#xD;  return md5_cmn((b &amp; c) | ((&#126;b) &amp; d), a, b, x, s, t);&#xD;}&#xD;function md5_gg(a, b, c, d, x, s, t)&#xD;{&#xD;  return md5_cmn((b &amp; d) | (c &amp; (&#126;d)), a, b, x, s, t);&#xD;}&#xD;function md5_hh(a, b, c, d, x, s, t)&#xD;{&#xD;  return md5_cmn(b ^ c ^ d, a, b, x, s, t);&#xD;}&#xD;function md5_ii(a, b, c, d, x, s, t)&#xD;{&#xD;  return md5_cmn(c ^ (b | (&#126;d)), a, b, x, s, t);&#xD;}&#xD;&#xD;/*&#xD; * Add integers, wrapping at 2^32. This uses 16-bit operations internally&#xD; * to work around bugs in some JS interpreters.&#xD; */&#xD;function safe_add(x, y)&#xD;{&#xD;  var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);&#xD;  var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);&#xD;  return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);&#xD;}&#xD;&#xD;/*&#xD; * Bitwise rotate a 32-bit number to the left.&#xD; */&#xD;function bit_rol(num, cnt)&#xD;{&#xD;  return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 - cnt));&#xD;}&#xD;&#xD;module.exports = function md5(buf) {&#xD;  return helpers.hash(buf, core_md5, 16);&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 131 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var React = __webpack_require__(0);&#xD;var factory = __webpack_require__(274);&#xD;&#xD;// Hack to grab NoopUpdateQueue from isomorphic React&#xD;var ReactNoopUpdateQueue = new React.Component().updater;&#xD;&#xD;module.exports = factory(&#xD;  React.Component,&#xD;  React.isValidElement,&#xD;  ReactNoopUpdateQueue&#xD;);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 132 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var randomBytes = __webpack_require__(49);&#xD;module.exports = findPrime;&#xD;findPrime.simpleSieve = simpleSieve;&#xD;findPrime.fermatTest = fermatTest;&#xD;var BN = __webpack_require__(11);&#xD;var TWENTYFOUR = new BN(24);&#xD;var MillerRabin = __webpack_require__(140);&#xD;var millerRabin = new MillerRabin();&#xD;var ONE = new BN(1);&#xD;var TWO = new BN(2);&#xD;var FIVE = new BN(5);&#xD;var SIXTEEN = new BN(16);&#xD;var EIGHT = new BN(8);&#xD;var TEN = new BN(10);&#xD;var THREE = new BN(3);&#xD;var SEVEN = new BN(7);&#xD;var ELEVEN = new BN(11);&#xD;var FOUR = new BN(4);&#xD;var TWELVE = new BN(12);&#xD;var primes = null;&#xD;&#xD;function _getPrimes() {&#xD;  if (primes !== null)&#xD;    return primes;&#xD;&#xD;  var limit = 0x100000;&#xD;  var res = [];&#xD;  res[0] = 2;&#xD;  for (var i = 1, k = 3; k &lt; limit; k += 2) {&#xD;    var sqrt = Math.ceil(Math.sqrt(k));&#xD;    for (var j = 0; j &lt; i &amp;&amp; res[j] &lt;= sqrt; j++)&#xD;      if (k % res[j] === 0)&#xD;        break;&#xD;&#xD;    if (i !== j &amp;&amp; res[j] &lt;= sqrt)&#xD;      continue;&#xD;&#xD;    res[i++] = k;&#xD;  }&#xD;  primes = res;&#xD;  return res;&#xD;}&#xD;&#xD;function simpleSieve(p) {&#xD;  var primes = _getPrimes();&#xD;&#xD;  for (var i = 0; i &lt; primes.length; i++)&#xD;    if (p.modn(primes[i]) === 0) {&#xD;      if (p.cmpn(primes[i]) === 0) {&#xD;        return true;&#xD;      } else {&#xD;        return false;&#xD;      }&#xD;    }&#xD;&#xD;  return true;&#xD;}&#xD;&#xD;function fermatTest(p) {&#xD;  var red = BN.mont(p);&#xD;  return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;&#xD;}&#xD;&#xD;function findPrime(bits, gen) {&#xD;  if (bits &lt; 16) {&#xD;    // this is what openssl does&#xD;    if (gen === 2 || gen === 5) {&#xD;      return new BN([0x8c, 0x7b]);&#xD;    } else {&#xD;      return new BN([0x8c, 0x27]);&#xD;    }&#xD;  }&#xD;  gen = new BN(gen);&#xD;&#xD;  var num, n2;&#xD;&#xD;  while (true) {&#xD;    num = new BN(randomBytes(Math.ceil(bits / 8)));&#xD;    while (num.bitLength() &gt; bits) {&#xD;      num.ishrn(1);&#xD;    }&#xD;    if (num.isEven()) {&#xD;      num.iadd(ONE);&#xD;    }&#xD;    if (!num.testn(1)) {&#xD;      num.iadd(TWO);&#xD;    }&#xD;    if (!gen.cmp(TWO)) {&#xD;      while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {&#xD;        num.iadd(FOUR);&#xD;      }&#xD;    } else if (!gen.cmp(FIVE)) {&#xD;      while (num.mod(TEN).cmp(THREE)) {&#xD;        num.iadd(FOUR);&#xD;      }&#xD;    }&#xD;    n2 = num.shrn(1);&#xD;    if (simpleSieve(n2) &amp;&amp; simpleSieve(num) &amp;&amp;&#xD;      fermatTest(n2) &amp;&amp; fermatTest(num) &amp;&amp;&#xD;      millerRabin.test(n2) &amp;&amp; millerRabin.test(num)) {&#xD;      return num;&#xD;    }&#xD;  }&#xD;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 133 */,&#xD;/* 134 */,&#xD;/* 135 */,&#xD;/* 136 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = isFunction&#xD;&#xD;var toString = Object.prototype.toString&#xD;&#xD;function isFunction (fn) {&#xD;  var string = toString.call(fn)&#xD;  return string === &apos;[object Function]&apos; ||&#xD;    (typeof fn === &apos;function&apos; &amp;&amp; string !== &apos;[object RegExp]&apos;) ||&#xD;    (typeof window !== &apos;undefined&apos; &amp;&amp;&#xD;     // IE8 and below&#xD;     (fn === window.setTimeout ||&#xD;      fn === window.alert ||&#xD;      fn === window.confirm ||&#xD;      fn === window.prompt))&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 137 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var toString = {}.toString;&#xD;&#xD;module.exports = Array.isArray || function (arr) {&#xD;  return toString.call(arr) == &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 138 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__root_js__ = __webpack_require__(359);&#xD;&#xD;&#xD;/** Built-in value references. */&#xD;var Symbol = __WEBPACK_IMPORTED_MODULE_0__root_js__["a" /* default */].Symbol;&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (Symbol);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 139 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;/**&#xD; * lodash (Custom Build) &lt;https://lodash.com/&gt;&#xD; * Build: `lodash modularize exports="npm" -o ./`&#xD; * Copyright jQuery Foundation and other contributors &lt;https://jquery.org/&gt;&#xD; * Released under MIT license &lt;https://lodash.com/license&gt;&#xD; * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;&#xD; * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors&#xD; */&#xD;&#xD;/** Used as references for various `Number` constants. */&#xD;var MAX_SAFE_INTEGER = 9007199254740991;&#xD;&#xD;/** `Object#toString` result references. */&#xD;var argsTag = &apos;[object Arguments]&apos;,&#xD;    funcTag = &apos;[object Function]&apos;,&#xD;    genTag = &apos;[object GeneratorFunction]&apos;;&#xD;&#xD;/** Used to detect unsigned integer values. */&#xD;var reIsUint = /^(?:0|[1-9]\d*)$/;&#xD;&#xD;/**&#xD; * A faster alternative to `Function#apply`, this function invokes `func`&#xD; * with the `this` binding of `thisArg` and the arguments of `args`.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to invoke.&#xD; * @param {*} thisArg The `this` binding of `func`.&#xD; * @param {Array} args The arguments to invoke `func` with.&#xD; * @returns {*} Returns the result of `func`.&#xD; */&#xD;function apply(func, thisArg, args) {&#xD;  switch (args.length) {&#xD;    case 0: return func.call(thisArg);&#xD;    case 1: return func.call(thisArg, args[0]);&#xD;    case 2: return func.call(thisArg, args[0], args[1]);&#xD;    case 3: return func.call(thisArg, args[0], args[1], args[2]);&#xD;  }&#xD;  return func.apply(thisArg, args);&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.times` without support for iteratee shorthands&#xD; * or max array length checks.&#xD; *&#xD; * @private&#xD; * @param {number} n The number of times to invoke `iteratee`.&#xD; * @param {Function} iteratee The function invoked per iteration.&#xD; * @returns {Array} Returns the array of results.&#xD; */&#xD;function baseTimes(n, iteratee) {&#xD;  var index = -1,&#xD;      result = Array(n);&#xD;&#xD;  while (++index &lt; n) {&#xD;    result[index] = iteratee(index);&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Creates a unary function that invokes `func` with its argument transformed.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {Function} transform The argument transform.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function overArg(func, transform) {&#xD;  return function(arg) {&#xD;    return func(transform(arg));&#xD;  };&#xD;}&#xD;&#xD;/** Used for built-in method references. */&#xD;var objectProto = Object.prototype;&#xD;&#xD;/** Used to check objects for own properties. */&#xD;var hasOwnProperty = objectProto.hasOwnProperty;&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var objectToString = objectProto.toString;&#xD;&#xD;/** Built-in value references. */&#xD;var propertyIsEnumerable = objectProto.propertyIsEnumerable;&#xD;&#xD;/* Built-in method references for those with the same name as other `lodash` methods. */&#xD;var nativeKeys = overArg(Object.keys, Object),&#xD;    nativeMax = Math.max;&#xD;&#xD;/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */&#xD;var nonEnumShadows = !propertyIsEnumerable.call({ &apos;valueOf&apos;: 1 }, &apos;valueOf&apos;);&#xD;&#xD;/**&#xD; * Creates an array of the enumerable property names of the array-like `value`.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @param {boolean} inherited Specify returning inherited property names.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function arrayLikeKeys(value, inherited) {&#xD;  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.&#xD;  // Safari 9 makes `arguments.length` enumerable in strict mode.&#xD;  var result = (isArray(value) || isArguments(value))&#xD;    ? baseTimes(value.length, String)&#xD;    : [];&#xD;&#xD;  var length = result.length,&#xD;      skipIndexes = !!length;&#xD;&#xD;  for (var key in value) {&#xD;    if ((inherited || hasOwnProperty.call(value, key)) &amp;&amp;&#xD;        !(skipIndexes &amp;&amp; (key == &apos;length&apos; || isIndex(key, length)))) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Assigns `value` to `key` of `object` if the existing value is not equivalent&#xD; * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)&#xD; * for equality comparisons.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to modify.&#xD; * @param {string} key The key of the property to assign.&#xD; * @param {*} value The value to assign.&#xD; */&#xD;function assignValue(object, key, value) {&#xD;  var objValue = object[key];&#xD;  if (!(hasOwnProperty.call(object, key) &amp;&amp; eq(objValue, value)) ||&#xD;      (value === undefined &amp;&amp; !(key in object))) {&#xD;    object[key] = value;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.keys` which doesn&apos;t treat sparse arrays as dense.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function baseKeys(object) {&#xD;  if (!isPrototype(object)) {&#xD;    return nativeKeys(object);&#xD;  }&#xD;  var result = [];&#xD;  for (var key in Object(object)) {&#xD;    if (hasOwnProperty.call(object, key) &amp;&amp; key != &apos;constructor&apos;) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.rest` which doesn&apos;t validate or coerce arguments.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to apply a rest parameter to.&#xD; * @param {number} [start=func.length-1] The start position of the rest parameter.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function baseRest(func, start) {&#xD;  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);&#xD;  return function() {&#xD;    var args = arguments,&#xD;        index = -1,&#xD;        length = nativeMax(args.length - start, 0),&#xD;        array = Array(length);&#xD;&#xD;    while (++index &lt; length) {&#xD;      array[index] = args[start + index];&#xD;    }&#xD;    index = -1;&#xD;    var otherArgs = Array(start + 1);&#xD;    while (++index &lt; start) {&#xD;      otherArgs[index] = args[index];&#xD;    }&#xD;    otherArgs[start] = array;&#xD;    return apply(func, this, otherArgs);&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Copies properties of `source` to `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} source The object to copy properties from.&#xD; * @param {Array} props The property identifiers to copy.&#xD; * @param {Object} [object={}] The object to copy properties to.&#xD; * @param {Function} [customizer] The function to customize copied values.&#xD; * @returns {Object} Returns `object`.&#xD; */&#xD;function copyObject(source, props, object, customizer) {&#xD;  object || (object = {});&#xD;&#xD;  var index = -1,&#xD;      length = props.length;&#xD;&#xD;  while (++index &lt; length) {&#xD;    var key = props[index];&#xD;&#xD;    var newValue = customizer&#xD;      ? customizer(object[key], source[key], key, object, source)&#xD;      : undefined;&#xD;&#xD;    assignValue(object, key, newValue === undefined ? source[key] : newValue);&#xD;  }&#xD;  return object;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function like `_.assign`.&#xD; *&#xD; * @private&#xD; * @param {Function} assigner The function to assign values.&#xD; * @returns {Function} Returns the new assigner function.&#xD; */&#xD;function createAssigner(assigner) {&#xD;  return baseRest(function(object, sources) {&#xD;    var index = -1,&#xD;        length = sources.length,&#xD;        customizer = length &gt; 1 ? sources[length - 1] : undefined,&#xD;        guard = length &gt; 2 ? sources[2] : undefined;&#xD;&#xD;    customizer = (assigner.length &gt; 3 &amp;&amp; typeof customizer == &apos;function&apos;)&#xD;      ? (length--, customizer)&#xD;      : undefined;&#xD;&#xD;    if (guard &amp;&amp; isIterateeCall(sources[0], sources[1], guard)) {&#xD;      customizer = length &lt; 3 ? undefined : customizer;&#xD;      length = 1;&#xD;    }&#xD;    object = Object(object);&#xD;    while (++index &lt; length) {&#xD;      var source = sources[index];&#xD;      if (source) {&#xD;        assigner(object, source, index, customizer);&#xD;      }&#xD;    }&#xD;    return object;&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like index.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.&#xD; * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.&#xD; */&#xD;function isIndex(value, length) {&#xD;  length = length == null ? MAX_SAFE_INTEGER : length;&#xD;  return !!length &amp;&amp;&#xD;    (typeof value == &apos;number&apos; || reIsUint.test(value)) &amp;&amp;&#xD;    (value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt; length);&#xD;}&#xD;&#xD;/**&#xD; * Checks if the given arguments are from an iteratee call.&#xD; *&#xD; * @private&#xD; * @param {*} value The potential iteratee value argument.&#xD; * @param {*} index The potential iteratee index or key argument.&#xD; * @param {*} object The potential iteratee object argument.&#xD; * @returns {boolean} Returns `true` if the arguments are from an iteratee call,&#xD; *  else `false`.&#xD; */&#xD;function isIterateeCall(value, index, object) {&#xD;  if (!isObject(object)) {&#xD;    return false;&#xD;  }&#xD;  var type = typeof index;&#xD;  if (type == &apos;number&apos;&#xD;        ? (isArrayLike(object) &amp;&amp; isIndex(index, object.length))&#xD;        : (type == &apos;string&apos; &amp;&amp; index in object)&#xD;      ) {&#xD;    return eq(object[index], value);&#xD;  }&#xD;  return false;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is likely a prototype object.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.&#xD; */&#xD;function isPrototype(value) {&#xD;  var Ctor = value &amp;&amp; value.constructor,&#xD;      proto = (typeof Ctor == &apos;function&apos; &amp;&amp; Ctor.prototype) || objectProto;&#xD;&#xD;  return value === proto;&#xD;}&#xD;&#xD;/**&#xD; * Performs a&#xD; * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)&#xD; * comparison between two values to determine if they are equivalent.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to compare.&#xD; * @param {*} other The other value to compare.&#xD; * @returns {boolean} Returns `true` if the values are equivalent, else `false`.&#xD; * @example&#xD; *&#xD; * var object = { &apos;a&apos;: 1 };&#xD; * var other = { &apos;a&apos;: 1 };&#xD; *&#xD; * _.eq(object, object);&#xD; * // =&gt; true&#xD; *&#xD; * _.eq(object, other);&#xD; * // =&gt; false&#xD; *&#xD; * _.eq(&apos;a&apos;, &apos;a&apos;);&#xD; * // =&gt; true&#xD; *&#xD; * _.eq(&apos;a&apos;, Object(&apos;a&apos;));&#xD; * // =&gt; false&#xD; *&#xD; * _.eq(NaN, NaN);&#xD; * // =&gt; true&#xD; */&#xD;function eq(value, other) {&#xD;  return value === other || (value !== value &amp;&amp; other !== other);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is likely an `arguments` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an `arguments` object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArguments(function() { return arguments; }());&#xD; * // =&gt; true&#xD; *&#xD; * _.isArguments([1, 2, 3]);&#xD; * // =&gt; false&#xD; */&#xD;function isArguments(value) {&#xD;  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.&#xD;  return isArrayLikeObject(value) &amp;&amp; hasOwnProperty.call(value, &apos;callee&apos;) &amp;&amp;&#xD;    (!propertyIsEnumerable.call(value, &apos;callee&apos;) || objectToString.call(value) == argsTag);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as an `Array` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArray([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArray(document.body.children);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;var isArray = Array.isArray;&#xD;&#xD;/**&#xD; * Checks if `value` is array-like. A value is considered array-like if it&apos;s&#xD; * not a function and has a `value.length` that&apos;s an integer greater than or&#xD; * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is array-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(&apos;abc&apos;);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLike(value) {&#xD;  return value != null &amp;&amp; isLength(value.length) &amp;&amp; !isFunction(value);&#xD;}&#xD;&#xD;/**&#xD; * This method is like `_.isArrayLike` except that it also checks if `value`&#xD; * is an object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array-like object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLikeObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArrayLikeObject(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLikeObject(value) {&#xD;  return isObjectLike(value) &amp;&amp; isArrayLike(value);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a `Function` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a function, else `false`.&#xD; * @example&#xD; *&#xD; * _.isFunction(_);&#xD; * // =&gt; true&#xD; *&#xD; * _.isFunction(/abc/);&#xD; * // =&gt; false&#xD; */&#xD;function isFunction(value) {&#xD;  // The use of `Object#toString` avoids issues with the `typeof` operator&#xD;  // in Safari 8-9 which returns &apos;object&apos; for typed array and other constructors.&#xD;  var tag = isObject(value) ? objectToString.call(value) : &apos;&apos;;&#xD;  return tag == funcTag || tag == genTag;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like length.&#xD; *&#xD; * **Note:** This method is loosely based on&#xD; * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.&#xD; * @example&#xD; *&#xD; * _.isLength(3);&#xD; * // =&gt; true&#xD; *&#xD; * _.isLength(Number.MIN_VALUE);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(Infinity);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(&apos;3&apos;);&#xD; * // =&gt; false&#xD; */&#xD;function isLength(value) {&#xD;  return typeof value == &apos;number&apos; &amp;&amp;&#xD;    value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt;= MAX_SAFE_INTEGER;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is the&#xD; * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)&#xD; * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(&apos;&apos;)`)&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an object, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObject({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(_.noop);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObject(value) {&#xD;  var type = typeof value;&#xD;  return !!value &amp;&amp; (type == &apos;object&apos; || type == &apos;function&apos;);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is object-like. A value is object-like if it&apos;s not `null`&#xD; * and has a `typeof` result of "object".&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is object-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObjectLike({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike(_.noop);&#xD; * // =&gt; false&#xD; *&#xD; * _.isObjectLike(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObjectLike(value) {&#xD;  return !!value &amp;&amp; typeof value == &apos;object&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Assigns own enumerable string keyed properties of source objects to the&#xD; * destination object. Source objects are applied from left to right.&#xD; * Subsequent sources overwrite property assignments of previous sources.&#xD; *&#xD; * **Note:** This method mutates `object` and is loosely based on&#xD; * [`Object.assign`](https://mdn.io/Object/assign).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.10.0&#xD; * @category Object&#xD; * @param {Object} object The destination object.&#xD; * @param {...Object} [sources] The source objects.&#xD; * @returns {Object} Returns `object`.&#xD; * @see _.assignIn&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; * }&#xD; *&#xD; * function Bar() {&#xD; *   this.c = 3;&#xD; * }&#xD; *&#xD; * Foo.prototype.b = 2;&#xD; * Bar.prototype.d = 4;&#xD; *&#xD; * _.assign({ &apos;a&apos;: 0 }, new Foo, new Bar);&#xD; * // =&gt; { &apos;a&apos;: 1, &apos;c&apos;: 3 }&#xD; */&#xD;var assign = createAssigner(function(object, source) {&#xD;  if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {&#xD;    copyObject(source, keys(source), object);&#xD;    return;&#xD;  }&#xD;  for (var key in source) {&#xD;    if (hasOwnProperty.call(source, key)) {&#xD;      assignValue(object, key, source[key]);&#xD;    }&#xD;  }&#xD;});&#xD;&#xD;/**&#xD; * Creates an array of the own enumerable property names of `object`.&#xD; *&#xD; * **Note:** Non-object values are coerced to objects. See the&#xD; * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)&#xD; * for more details.&#xD; *&#xD; * @static&#xD; * @since 0.1.0&#xD; * @memberOf _&#xD; * @category Object&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; *   this.b = 2;&#xD; * }&#xD; *&#xD; * Foo.prototype.c = 3;&#xD; *&#xD; * _.keys(new Foo);&#xD; * // =&gt; [&apos;a&apos;, &apos;b&apos;] (iteration order is not guaranteed)&#xD; *&#xD; * _.keys(&apos;hi&apos;);&#xD; * // =&gt; [&apos;0&apos;, &apos;1&apos;]&#xD; */&#xD;function keys(object) {&#xD;  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);&#xD;}&#xD;&#xD;module.exports = assign;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 140 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var bn = __webpack_require__(11);&#xD;var brorand = __webpack_require__(119);&#xD;&#xD;function MillerRabin(rand) {&#xD;  this.rand = rand || new brorand.Rand();&#xD;}&#xD;module.exports = MillerRabin;&#xD;&#xD;MillerRabin.create = function create(rand) {&#xD;  return new MillerRabin(rand);&#xD;};&#xD;&#xD;MillerRabin.prototype._rand = function _rand(n) {&#xD;  var len = n.bitLength();&#xD;  var buf = this.rand.generate(Math.ceil(len / 8));&#xD;&#xD;  // Set low bits&#xD;  buf[0] |= 3;&#xD;&#xD;  // Mask high bits&#xD;  var mask = len &amp; 0x7;&#xD;  if (mask !== 0)&#xD;    buf[buf.length - 1] &gt;&gt;= 7 - mask;&#xD;&#xD;  return new bn(buf);&#xD;}&#xD;&#xD;MillerRabin.prototype.test = function test(n, k, cb) {&#xD;  var len = n.bitLength();&#xD;  var red = bn.mont(n);&#xD;  var rone = new bn(1).toRed(red);&#xD;&#xD;  if (!k)&#xD;    k = Math.max(1, (len / 48) | 0);&#xD;&#xD;  // Find d and s, (n - 1) = (2 ^ s) * d;&#xD;  var n1 = n.subn(1);&#xD;  var n2 = n1.subn(1);&#xD;  for (var s = 0; !n1.testn(s); s++) {}&#xD;  var d = n.shrn(s);&#xD;&#xD;  var rn1 = n1.toRed(red);&#xD;&#xD;  var prime = true;&#xD;  for (; k &gt; 0; k--) {&#xD;    var a = this._rand(n2);&#xD;    if (cb)&#xD;      cb(a);&#xD;&#xD;    var x = a.toRed(red).redPow(d);&#xD;    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)&#xD;      continue;&#xD;&#xD;    for (var i = 1; i &lt; s; i++) {&#xD;      x = x.redSqr();&#xD;&#xD;      if (x.cmp(rone) === 0)&#xD;        return false;&#xD;      if (x.cmp(rn1) === 0)&#xD;        break;&#xD;    }&#xD;&#xD;    if (i === s)&#xD;      return false;&#xD;  }&#xD;&#xD;  return prime;&#xD;};&#xD;&#xD;MillerRabin.prototype.getDivisor = function getDivisor(n, k) {&#xD;  var len = n.bitLength();&#xD;  var red = bn.mont(n);&#xD;  var rone = new bn(1).toRed(red);&#xD;&#xD;  if (!k)&#xD;    k = Math.max(1, (len / 48) | 0);&#xD;&#xD;  // Find d and s, (n - 1) = (2 ^ s) * d;&#xD;  var n1 = n.subn(1);&#xD;  var n2 = n1.subn(1);&#xD;  for (var s = 0; !n1.testn(s); s++) {}&#xD;  var d = n.shrn(s);&#xD;&#xD;  var rn1 = n1.toRed(red);&#xD;&#xD;  for (; k &gt; 0; k--) {&#xD;    var a = this._rand(n2);&#xD;&#xD;    var g = n.gcd(a);&#xD;    if (g.cmpn(1) !== 0)&#xD;      return g;&#xD;&#xD;    var x = a.toRed(red).redPow(d);&#xD;    if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)&#xD;      continue;&#xD;&#xD;    for (var i = 1; i &lt; s; i++) {&#xD;      x = x.redSqr();&#xD;&#xD;      if (x.cmp(rone) === 0)&#xD;        return x.fromRed().subn(1).gcd(n);&#xD;      if (x.cmp(rn1) === 0)&#xD;        break;&#xD;    }&#xD;&#xD;    if (i === s) {&#xD;      x = x.redSqr();&#xD;      return x.fromRed().subn(1).gcd(n);&#xD;    }&#xD;  }&#xD;&#xD;  return false;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 141 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var hex = {&#xD;  black: &apos;#000&apos;,&#xD;  red: &apos;#c23621&apos;,&#xD;  green: &apos;#25bc26&apos;,&#xD;  yellow: &apos;#bbbb00&apos;,&#xD;  blue:  &apos;#492ee1&apos;,&#xD;  magenta: &apos;#d338d3&apos;,&#xD;  cyan: &apos;#33bbc8&apos;,&#xD;  gray: &apos;#808080&apos;,&#xD;  purple: &apos;#708&apos;&#xD;};&#xD;function color(fg, isInverse) {&#xD;  if(isInverse) {&#xD;    return &apos;color: #fff; background: &apos;+hex[fg]+&apos;;&apos;;&#xD;  } else {&#xD;    return &apos;color: &apos;+hex[fg]+&apos;;&apos;;&#xD;  }&#xD;}&#xD;&#xD;module.exports = color;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 142 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var utils = exports;&#xD;&#xD;function toArray(msg, enc) {&#xD;  if (Array.isArray(msg))&#xD;    return msg.slice();&#xD;  if (!msg)&#xD;    return [];&#xD;  var res = [];&#xD;  if (typeof msg !== &apos;string&apos;) {&#xD;    for (var i = 0; i &lt; msg.length; i++)&#xD;      res[i] = msg[i] | 0;&#xD;    return res;&#xD;  }&#xD;  if (enc === &apos;hex&apos;) {&#xD;    msg = msg.replace(/[^a-z0-9]+/ig, &apos;&apos;);&#xD;    if (msg.length % 2 !== 0)&#xD;      msg = &apos;0&apos; + msg;&#xD;    for (var i = 0; i &lt; msg.length; i += 2)&#xD;      res.push(parseInt(msg[i] + msg[i + 1], 16));&#xD;  } else {&#xD;    for (var i = 0; i &lt; msg.length; i++) {&#xD;      var c = msg.charCodeAt(i);&#xD;      var hi = c &gt;&gt; 8;&#xD;      var lo = c &amp; 0xff;&#xD;      if (hi)&#xD;        res.push(hi, lo);&#xD;      else&#xD;        res.push(lo);&#xD;    }&#xD;  }&#xD;  return res;&#xD;}&#xD;utils.toArray = toArray;&#xD;&#xD;function zero2(word) {&#xD;  if (word.length === 1)&#xD;    return &apos;0&apos; + word;&#xD;  else&#xD;    return word;&#xD;}&#xD;utils.zero2 = zero2;&#xD;&#xD;function toHex(msg) {&#xD;  var res = &apos;&apos;;&#xD;  for (var i = 0; i &lt; msg.length; i++)&#xD;    res += zero2(msg[i].toString(16));&#xD;  return res;&#xD;}&#xD;utils.toHex = toHex;&#xD;&#xD;utils.encode = function encode(arr, enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return toHex(arr);&#xD;  else&#xD;    return arr;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 143 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;// Note: adler32 takes 12% for level 0 and 2% for level 6.&#xD;// It doesn&apos;t worth to make additional optimizationa as in original.&#xD;// Small size is preferable.&#xD;&#xD;function adler32(adler, buf, len, pos) {&#xD;  var s1 = (adler &amp; 0xffff) |0,&#xD;      s2 = ((adler &gt;&gt;&gt; 16) &amp; 0xffff) |0,&#xD;      n = 0;&#xD;&#xD;  while (len !== 0) {&#xD;    // Set limit &#126; twice less than 5552, to keep&#xD;    // s2 in 31-bits, because we force signed ints.&#xD;    // in other case %= will fail.&#xD;    n = len &gt; 2000 ? 2000 : len;&#xD;    len -= n;&#xD;&#xD;    do {&#xD;      s1 = (s1 + buf[pos++]) |0;&#xD;      s2 = (s2 + s1) |0;&#xD;    } while (--n);&#xD;&#xD;    s1 %= 65521;&#xD;    s2 %= 65521;&#xD;  }&#xD;&#xD;  return (s1 | (s2 &lt;&lt; 16)) |0;&#xD;}&#xD;&#xD;&#xD;module.exports = adler32;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 144 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;// Note: we can&apos;t get significant speed boost here.&#xD;// So write code to minimize size - no pregenerated tables&#xD;// and array tools dependencies.&#xD;&#xD;&#xD;// Use ordinary array, since untyped makes no boost here&#xD;function makeTable() {&#xD;  var c, table = [];&#xD;&#xD;  for (var n = 0; n &lt; 256; n++) {&#xD;    c = n;&#xD;    for (var k = 0; k &lt; 8; k++) {&#xD;      c = ((c &amp; 1) ? (0xEDB88320 ^ (c &gt;&gt;&gt; 1)) : (c &gt;&gt;&gt; 1));&#xD;    }&#xD;    table[n] = c;&#xD;  }&#xD;&#xD;  return table;&#xD;}&#xD;&#xD;// Create table on load. Just 255 signed longs. Not a problem.&#xD;var crcTable = makeTable();&#xD;&#xD;&#xD;function crc32(crc, buf, len, pos) {&#xD;  var t = crcTable,&#xD;      end = pos + len;&#xD;&#xD;  crc ^= -1;&#xD;&#xD;  for (var i = pos; i &lt; end; i++) {&#xD;    crc = (crc &gt;&gt;&gt; 8) ^ t[(crc ^ buf[i]) &amp; 0xFF];&#xD;  }&#xD;&#xD;  return (crc ^ (-1)); // &gt;&gt;&gt; 0;&#xD;}&#xD;&#xD;&#xD;module.exports = crc32;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 145 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = {&#xD;  2:      &apos;need dictionary&apos;,     /* Z_NEED_DICT       2  */&#xD;  1:      &apos;stream end&apos;,          /* Z_STREAM_END      1  */&#xD;  0:      &apos;&apos;,                    /* Z_OK              0  */&#xD;  &apos;-1&apos;:   &apos;file error&apos;,          /* Z_ERRNO         (-1) */&#xD;  &apos;-2&apos;:   &apos;stream error&apos;,        /* Z_STREAM_ERROR  (-2) */&#xD;  &apos;-3&apos;:   &apos;data error&apos;,          /* Z_DATA_ERROR    (-3) */&#xD;  &apos;-4&apos;:   &apos;insufficient memory&apos;, /* Z_MEM_ERROR     (-4) */&#xD;  &apos;-5&apos;:   &apos;buffer error&apos;,        /* Z_BUF_ERROR     (-5) */&#xD;  &apos;-6&apos;:   &apos;incompatible version&apos; /* Z_VERSION_ERROR (-6) */&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 146 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(process, Buffer) {var createHmac = __webpack_require__(80)&#xD;var checkParameters = __webpack_require__(386)&#xD;&#xD;exports.pbkdf2 = function (password, salt, iterations, keylen, digest, callback) {&#xD;  if (typeof digest === &apos;function&apos;) {&#xD;    callback = digest&#xD;    digest = undefined&#xD;  }&#xD;&#xD;  checkParameters(iterations, keylen)&#xD;  if (typeof callback !== &apos;function&apos;) throw new Error(&apos;No callback provided to pbkdf2&apos;)&#xD;&#xD;  setTimeout(function () {&#xD;    callback(null, exports.pbkdf2Sync(password, salt, iterations, keylen, digest))&#xD;  })&#xD;}&#xD;&#xD;var defaultEncoding&#xD;if (process.browser) {&#xD;  defaultEncoding = &apos;utf-8&apos;&#xD;} else {&#xD;  var pVersionMajor = parseInt(process.version.split(&apos;.&apos;)[0].slice(1), 10)&#xD;&#xD;  defaultEncoding = pVersionMajor &gt;= 6 ? &apos;utf-8&apos; : &apos;binary&apos;&#xD;}&#xD;&#xD;exports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) {&#xD;  if (!Buffer.isBuffer(password)) password = new Buffer(password, defaultEncoding)&#xD;  if (!Buffer.isBuffer(salt)) salt = new Buffer(salt, defaultEncoding)&#xD;&#xD;  checkParameters(iterations, keylen)&#xD;&#xD;  digest = digest || &apos;sha1&apos;&#xD;&#xD;  var hLen&#xD;  var l = 1&#xD;  var DK = new Buffer(keylen)&#xD;  var block1 = new Buffer(salt.length + 4)&#xD;  salt.copy(block1, 0, 0, salt.length)&#xD;&#xD;  var r&#xD;  var T&#xD;&#xD;  for (var i = 1; i &lt;= l; i++) {&#xD;    block1.writeUInt32BE(i, salt.length)&#xD;    var U = createHmac(digest, password).update(block1).digest()&#xD;&#xD;    if (!hLen) {&#xD;      hLen = U.length&#xD;      T = new Buffer(hLen)&#xD;      l = Math.ceil(keylen / hLen)&#xD;      r = keylen - (l - 1) * hLen&#xD;    }&#xD;&#xD;    U.copy(T, 0, 0, hLen)&#xD;&#xD;    for (var j = 1; j &lt; iterations; j++) {&#xD;      U = createHmac(digest, password).update(U).digest()&#xD;      for (var k = 0; k &lt; hLen; k++) T[k] ^= U[k]&#xD;    }&#xD;&#xD;    var destPos = (i - 1) * hLen&#xD;    var len = (i === l ? r : hLen)&#xD;    T.copy(DK, destPos, 0, len)&#xD;  }&#xD;&#xD;  return DK&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14), __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 147 */,&#xD;/* 148 */,&#xD;/* 149 */,&#xD;/* 150 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var createHash = __webpack_require__(39);&#xD;module.exports = function (seed, len) {&#xD;  var t = new Buffer(&apos;&apos;);&#xD;  var  i = 0, c;&#xD;  while (t.length &lt; len) {&#xD;    c = i2ops(i++);&#xD;    t = Buffer.concat([t, createHash(&apos;sha1&apos;).update(seed).update(c).digest()]);&#xD;  }&#xD;  return t.slice(0, len);&#xD;};&#xD;&#xD;function i2ops(c) {&#xD;  var out = new Buffer(4);&#xD;  out.writeUInt32BE(c,0);&#xD;  return out;&#xD;}&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 151 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(11);&#xD;function withPublic(paddedMsg, key) {&#xD;  return new Buffer(paddedMsg&#xD;    .toRed(bn.mont(key.modulus))&#xD;    .redPow(new bn(key.publicExponent))&#xD;    .fromRed()&#xD;    .toArray());&#xD;}&#xD;&#xD;module.exports = withPublic;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 152 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = function xor(a, b) {&#xD;  var len = a.length;&#xD;  var i = -1;&#xD;  while (++i &lt; len) {&#xD;    a[i] ^= b[i];&#xD;  }&#xD;  return a&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 153 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.decode = exports.parse = __webpack_require__(392);&#xD;exports.encode = exports.stringify = __webpack_require__(393);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 154 */,&#xD;/* 155 */,&#xD;/* 156 */,&#xD;/* 157 */,&#xD;/* 158 */,&#xD;/* 159 */,&#xD;/* 160 */,&#xD;/* 161 */,&#xD;/* 162 */,&#xD;/* 163 */,&#xD;/* 164 */,&#xD;/* 165 */,&#xD;/* 166 */,&#xD;/* 167 */,&#xD;/* 168 */,&#xD;/* 169 */,&#xD;/* 170 */,&#xD;/* 171 */,&#xD;/* 172 */,&#xD;/* 173 */,&#xD;/* 174 */,&#xD;/* 175 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;/*!&#xD; * Adapted from jQuery UI core&#xD; *&#xD; * http://jqueryui.com&#xD; *&#xD; * Copyright 2014 jQuery Foundation and other contributors&#xD; * Released under the MIT license.&#xD; * http://jquery.org/license&#xD; *&#xD; * http://api.jqueryui.com/category/ui-core/&#xD; */&#xD;&#xD;function focusable(element, isTabIndexNotNaN) {&#xD;  var nodeName = element.nodeName.toLowerCase();&#xD;  return (/input|select|textarea|button|object/.test(nodeName) ?&#xD;    !element.disabled :&#xD;    "a" === nodeName ?&#xD;      element.href || isTabIndexNotNaN :&#xD;      isTabIndexNotNaN) &amp;&amp; visible(element);&#xD;}&#xD;&#xD;function hidden(el) {&#xD;  return (el.offsetWidth &lt;= 0 &amp;&amp; el.offsetHeight &lt;= 0) ||&#xD;    el.style.display === &apos;none&apos;;&#xD;}&#xD;&#xD;function visible(element) {&#xD;  while (element) {&#xD;    if (element === document.body) break;&#xD;    if (hidden(element)) return false;&#xD;    element = element.parentNode;&#xD;  }&#xD;  return true;&#xD;}&#xD;&#xD;function tabbable(element) {&#xD;  var tabIndex = element.getAttribute(&apos;tabindex&apos;);&#xD;  if (tabIndex === null) tabIndex = undefined;&#xD;  var isTabIndexNaN = isNaN(tabIndex);&#xD;  return (isTabIndexNaN || tabIndex &gt;= 0) &amp;&amp; focusable(element, !isTabIndexNaN);&#xD;}&#xD;&#xD;function findTabbableDescendants(element) {&#xD;  return [].slice.call(element.querySelectorAll(&apos;*&apos;), 0).filter(function(el) {&#xD;    return tabbable(el);&#xD;  });&#xD;}&#xD;&#xD;module.exports = findTabbableDescendants;&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 176 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(465);&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 177 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_hoist_non_react_statics__ = __webpack_require__(347);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_hoist_non_react_statics___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_hoist_non_react_statics__);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_invariant__ = __webpack_require__(351);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_invariant___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_invariant__);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react__ = __webpack_require__(0);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_react__);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_Subscription__ = __webpack_require__(478);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__utils_PropTypes__ = __webpack_require__(179);&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = connectAdvanced;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;var hotReloadingVersion = 0;&#xD;var dummyState = {};&#xD;function noop() {}&#xD;function makeSelectorStateful(sourceSelector, store) {&#xD;  // wrap the selector in an object that tracks its results between runs.&#xD;  var selector = {&#xD;    run: function runComponentSelector(props) {&#xD;      try {&#xD;        var nextProps = sourceSelector(store.getState(), props);&#xD;        if (nextProps !== selector.props || selector.error) {&#xD;          selector.shouldComponentUpdate = true;&#xD;          selector.props = nextProps;&#xD;          selector.error = null;&#xD;        }&#xD;      } catch (error) {&#xD;        selector.shouldComponentUpdate = true;&#xD;        selector.error = error;&#xD;      }&#xD;    }&#xD;  };&#xD;&#xD;  return selector;&#xD;}&#xD;&#xD;function connectAdvanced(&#xD;/*&#xD;  selectorFactory is a func that is responsible for returning the selector function used to&#xD;  compute new props from state, props, and dispatch. For example:&#xD;     export default connectAdvanced((dispatch, options) =&gt; (state, props) =&gt; ({&#xD;      thing: state.things[props.thingId],&#xD;      saveThing: fields =&gt; dispatch(actionCreators.saveThing(props.thingId, fields)),&#xD;    }))(YourComponent)&#xD;   Access to dispatch is provided to the factory so selectorFactories can bind actionCreators&#xD;  outside of their selector as an optimization. Options passed to connectAdvanced are passed to&#xD;  the selectorFactory, along with displayName and WrappedComponent, as the second argument.&#xD;   Note that selectorFactory is responsible for all caching/memoization of inbound and outbound&#xD;  props. Do not use connectAdvanced directly without memoizing results between calls to your&#xD;  selector, otherwise the Connect component will re-render on every state or props change.&#xD;*/&#xD;selectorFactory) {&#xD;  var _contextTypes, _childContextTypes;&#xD;&#xD;  var _ref = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : {},&#xD;      _ref$getDisplayName = _ref.getDisplayName,&#xD;      getDisplayName = _ref$getDisplayName === undefined ? function (name) {&#xD;    return &apos;ConnectAdvanced(&apos; + name + &apos;)&apos;;&#xD;  } : _ref$getDisplayName,&#xD;      _ref$methodName = _ref.methodName,&#xD;      methodName = _ref$methodName === undefined ? &apos;connectAdvanced&apos; : _ref$methodName,&#xD;      _ref$renderCountProp = _ref.renderCountProp,&#xD;      renderCountProp = _ref$renderCountProp === undefined ? undefined : _ref$renderCountProp,&#xD;      _ref$shouldHandleStat = _ref.shouldHandleStateChanges,&#xD;      shouldHandleStateChanges = _ref$shouldHandleStat === undefined ? true : _ref$shouldHandleStat,&#xD;      _ref$storeKey = _ref.storeKey,&#xD;      storeKey = _ref$storeKey === undefined ? &apos;store&apos; : _ref$storeKey,&#xD;      _ref$withRef = _ref.withRef,&#xD;      withRef = _ref$withRef === undefined ? false : _ref$withRef,&#xD;      connectOptions = _objectWithoutProperties(_ref, [&apos;getDisplayName&apos;, &apos;methodName&apos;, &apos;renderCountProp&apos;, &apos;shouldHandleStateChanges&apos;, &apos;storeKey&apos;, &apos;withRef&apos;]);&#xD;&#xD;  var subscriptionKey = storeKey + &apos;Subscription&apos;;&#xD;  var version = hotReloadingVersion++;&#xD;&#xD;  var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = __WEBPACK_IMPORTED_MODULE_4__utils_PropTypes__["a" /* storeShape */], _contextTypes[subscriptionKey] = __WEBPACK_IMPORTED_MODULE_4__utils_PropTypes__["b" /* subscriptionShape */], _contextTypes);&#xD;  var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = __WEBPACK_IMPORTED_MODULE_4__utils_PropTypes__["b" /* subscriptionShape */], _childContextTypes);&#xD;&#xD;  return function wrapWithConnect(WrappedComponent) {&#xD;    __WEBPACK_IMPORTED_MODULE_1_invariant___default()(typeof WrappedComponent == &apos;function&apos;, &apos;You must pass a component to the function returned by &apos; + (&apos;connect. Instead received &apos; + JSON.stringify(WrappedComponent)));&#xD;&#xD;    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || &apos;Component&apos;;&#xD;&#xD;    var displayName = getDisplayName(wrappedComponentName);&#xD;&#xD;    var selectorFactoryOptions = _extends({}, connectOptions, {&#xD;      getDisplayName: getDisplayName,&#xD;      methodName: methodName,&#xD;      renderCountProp: renderCountProp,&#xD;      shouldHandleStateChanges: shouldHandleStateChanges,&#xD;      storeKey: storeKey,&#xD;      withRef: withRef,&#xD;      displayName: displayName,&#xD;      wrappedComponentName: wrappedComponentName,&#xD;      WrappedComponent: WrappedComponent&#xD;    });&#xD;&#xD;    var Connect = function (_Component) {&#xD;      _inherits(Connect, _Component);&#xD;&#xD;      function Connect(props, context) {&#xD;        _classCallCheck(this, Connect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));&#xD;&#xD;        _this.version = version;&#xD;        _this.state = {};&#xD;        _this.renderCount = 0;&#xD;        _this.store = props[storeKey] || context[storeKey];&#xD;        _this.propsMode = Boolean(props[storeKey]);&#xD;        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);&#xD;&#xD;        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, &apos;Could not find "&apos; + storeKey + &apos;" in either the context or props of &apos; + (&apos;"&apos; + displayName + &apos;". Either wrap the root component in a &lt;Provider&gt;, &apos;) + (&apos;or explicitly pass "&apos; + storeKey + &apos;" as a prop to "&apos; + displayName + &apos;".&apos;));&#xD;&#xD;        _this.initSelector();&#xD;        _this.initSubscription();&#xD;        return _this;&#xD;      }&#xD;&#xD;      Connect.prototype.getChildContext = function getChildContext() {&#xD;        var _ref2;&#xD;&#xD;        // If this component received store from props, its subscription should be transparent&#xD;        // to any descendants receiving store+subscription from context; it passes along&#xD;        // subscription passed to it. Otherwise, it shadows the parent subscription, which allows&#xD;        // Connect to control ordering of notifications to flow top-down.&#xD;        var subscription = this.propsMode ? null : this.subscription;&#xD;        return _ref2 = {}, _ref2[subscriptionKey] = subscription || this.context[subscriptionKey], _ref2;&#xD;      };&#xD;&#xD;      Connect.prototype.componentDidMount = function componentDidMount() {&#xD;        if (!shouldHandleStateChanges) return;&#xD;&#xD;        // componentWillMount fires during server side rendering, but componentDidMount and&#xD;        // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.&#xD;        // Otherwise, unsubscription would never take place during SSR, causing a memory leak.&#xD;        // To handle the case where a child component may have triggered a state change by&#xD;        // dispatching an action in its componentWillMount, we have to re-run the select and maybe&#xD;        // re-render.&#xD;        this.subscription.trySubscribe();&#xD;        this.selector.run(this.props);&#xD;        if (this.selector.shouldComponentUpdate) this.forceUpdate();&#xD;      };&#xD;&#xD;      Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {&#xD;        this.selector.run(nextProps);&#xD;      };&#xD;&#xD;      Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {&#xD;        return this.selector.shouldComponentUpdate;&#xD;      };&#xD;&#xD;      Connect.prototype.componentWillUnmount = function componentWillUnmount() {&#xD;        if (this.subscription) this.subscription.tryUnsubscribe();&#xD;        this.subscription = null;&#xD;        this.notifyNestedSubs = noop;&#xD;        this.store = null;&#xD;        this.selector.run = noop;&#xD;        this.selector.shouldComponentUpdate = false;&#xD;      };&#xD;&#xD;      Connect.prototype.getWrappedInstance = function getWrappedInstance() {&#xD;        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(withRef, &apos;To access the wrapped instance, you need to specify &apos; + (&apos;{ withRef: true } in the options argument of the &apos; + methodName + &apos;() call.&apos;));&#xD;        return this.wrappedInstance;&#xD;      };&#xD;&#xD;      Connect.prototype.setWrappedInstance = function setWrappedInstance(ref) {&#xD;        this.wrappedInstance = ref;&#xD;      };&#xD;&#xD;      Connect.prototype.initSelector = function initSelector() {&#xD;        var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);&#xD;        this.selector = makeSelectorStateful(sourceSelector, this.store);&#xD;        this.selector.run(this.props);&#xD;      };&#xD;&#xD;      Connect.prototype.initSubscription = function initSubscription() {&#xD;        if (!shouldHandleStateChanges) return;&#xD;&#xD;        // parentSub&apos;s source should match where store came from: props vs. context. A component&#xD;        // connected to the store via props shouldn&apos;t use subscription from context, or vice versa.&#xD;        var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];&#xD;        this.subscription = new __WEBPACK_IMPORTED_MODULE_3__utils_Subscription__["a" /* default */](this.store, parentSub, this.onStateChange.bind(this));&#xD;&#xD;        // `notifyNestedSubs` is duplicated to handle the case where the component is  unmounted in&#xD;        // the middle of the notification loop, where `this.subscription` will then be null. An&#xD;        // extra null check every change can be avoided by copying the method onto `this` and then&#xD;        // replacing it with a no-op on unmount. This can probably be avoided if Subscription&apos;s&#xD;        // listeners logic is changed to not call listeners that have been unsubscribed in the&#xD;        // middle of the notification loop.&#xD;        this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);&#xD;      };&#xD;&#xD;      Connect.prototype.onStateChange = function onStateChange() {&#xD;        this.selector.run(this.props);&#xD;&#xD;        if (!this.selector.shouldComponentUpdate) {&#xD;          this.notifyNestedSubs();&#xD;        } else {&#xD;          this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;&#xD;          this.setState(dummyState);&#xD;        }&#xD;      };&#xD;&#xD;      Connect.prototype.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {&#xD;        // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it&#xD;        // needs to notify nested subs. Once called, it unimplements itself until further state&#xD;        // changes occur. Doing it this way vs having a permanent `componentDidMount` that does&#xD;        // a boolean check every time avoids an extra method call most of the time, resulting&#xD;        // in some perf boost.&#xD;        this.componentDidUpdate = undefined;&#xD;        this.notifyNestedSubs();&#xD;      };&#xD;&#xD;      Connect.prototype.isSubscribed = function isSubscribed() {&#xD;        return Boolean(this.subscription) &amp;&amp; this.subscription.isSubscribed();&#xD;      };&#xD;&#xD;      Connect.prototype.addExtraProps = function addExtraProps(props) {&#xD;        if (!withRef &amp;&amp; !renderCountProp &amp;&amp; !(this.propsMode &amp;&amp; this.subscription)) return props;&#xD;        // make a shallow copy so that fields added don&apos;t leak to the original selector.&#xD;        // this is especially important for &apos;ref&apos; since that&apos;s a reference back to the component&#xD;        // instance. a singleton memoized selector would then be holding a reference to the&#xD;        // instance, preventing the instance from being garbage collected, and that would be bad&#xD;        var withExtras = _extends({}, props);&#xD;        if (withRef) withExtras.ref = this.setWrappedInstance;&#xD;        if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;&#xD;        if (this.propsMode &amp;&amp; this.subscription) withExtras[subscriptionKey] = this.subscription;&#xD;        return withExtras;&#xD;      };&#xD;&#xD;      Connect.prototype.render = function render() {&#xD;        var selector = this.selector;&#xD;        selector.shouldComponentUpdate = false;&#xD;&#xD;        if (selector.error) {&#xD;          throw selector.error;&#xD;        } else {&#xD;          return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_react__["createElement"])(WrappedComponent, this.addExtraProps(selector.props));&#xD;        }&#xD;      };&#xD;&#xD;      return Connect;&#xD;    }(__WEBPACK_IMPORTED_MODULE_2_react__["Component"]);&#xD;&#xD;    Connect.WrappedComponent = WrappedComponent;&#xD;    Connect.displayName = displayName;&#xD;    Connect.childContextTypes = childContextTypes;&#xD;    Connect.contextTypes = contextTypes;&#xD;    Connect.propTypes = contextTypes;&#xD;&#xD;    if (true) {&#xD;      Connect.prototype.componentWillUpdate = function componentWillUpdate() {&#xD;        // We are hot reloading!&#xD;        if (this.version !== version) {&#xD;          this.version = version;&#xD;          this.initSelector();&#xD;&#xD;          if (this.subscription) this.subscription.tryUnsubscribe();&#xD;          this.initSubscription();&#xD;          if (shouldHandleStateChanges) this.subscription.trySubscribe();&#xD;        }&#xD;      };&#xD;    }&#xD;&#xD;    return __WEBPACK_IMPORTED_MODULE_0_hoist_non_react_statics___default()(Connect, WrappedComponent);&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 178 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_verifyPlainObject__ = __webpack_require__(180);&#xD;/* harmony export (immutable) */ __webpack_exports__["b"] = wrapMapToPropsConstant;&#xD;/* unused harmony export getDependsOnOwnProps */&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = wrapMapToPropsFunc;&#xD;&#xD;&#xD;function wrapMapToPropsConstant(getConstant) {&#xD;  return function initConstantSelector(dispatch, options) {&#xD;    var constant = getConstant(dispatch, options);&#xD;&#xD;    function constantSelector() {&#xD;      return constant;&#xD;    }&#xD;    constantSelector.dependsOnOwnProps = false;&#xD;    return constantSelector;&#xD;  };&#xD;}&#xD;&#xD;// dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args&#xD;// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine&#xD;// whether mapToProps needs to be invoked when props have changed.&#xD;// &#xD;// A length of one signals that mapToProps does not depend on props from the parent component.&#xD;// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and&#xD;// therefore not reporting its length accurately..&#xD;function getDependsOnOwnProps(mapToProps) {&#xD;  return mapToProps.dependsOnOwnProps !== null &amp;&amp; mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;&#xD;}&#xD;&#xD;// Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,&#xD;// this function wraps mapToProps in a proxy function which does several things:&#xD;// &#xD;//  * Detects whether the mapToProps function being called depends on props, which&#xD;//    is used by selectorFactory to decide if it should reinvoke on props changes.&#xD;//    &#xD;//  * On first call, handles mapToProps if returns another function, and treats that&#xD;//    new function as the true mapToProps for subsequent calls.&#xD;//    &#xD;//  * On first call, verifies the first result is a plain object, in order to warn&#xD;//    the developer that their mapToProps function is not returning a valid result.&#xD;//    &#xD;function wrapMapToPropsFunc(mapToProps, methodName) {&#xD;  return function initProxySelector(dispatch, _ref) {&#xD;    var displayName = _ref.displayName;&#xD;&#xD;    var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {&#xD;      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);&#xD;    };&#xD;&#xD;    // allow detectFactoryAndVerify to get ownProps&#xD;    proxy.dependsOnOwnProps = true;&#xD;&#xD;    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {&#xD;      proxy.mapToProps = mapToProps;&#xD;      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);&#xD;      var props = proxy(stateOrDispatch, ownProps);&#xD;&#xD;      if (typeof props === &apos;function&apos;) {&#xD;        proxy.mapToProps = props;&#xD;        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);&#xD;        props = proxy(stateOrDispatch, ownProps);&#xD;      }&#xD;&#xD;      if (true) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_verifyPlainObject__["a" /* default */])(props, displayName, methodName);&#xD;&#xD;      return props;&#xD;    };&#xD;&#xD;    return proxy;&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 179 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(2);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__);&#xD;/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return subscriptionShape; });&#xD;/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return storeShape; });&#xD;&#xD;&#xD;var subscriptionShape = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.shape({&#xD;  trySubscribe: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired,&#xD;  tryUnsubscribe: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired,&#xD;  notifyNestedSubs: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired,&#xD;  isSubscribed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired&#xD;});&#xD;&#xD;var storeShape = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.shape({&#xD;  subscribe: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired,&#xD;  dispatch: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired,&#xD;  getState: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.func.isRequired&#xD;});&#xD;&#xD;/***/ }),&#xD;/* 180 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_es_isPlainObject__ = __webpack_require__(83);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__warning__ = __webpack_require__(100);&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = verifyPlainObject;&#xD;&#xD;&#xD;&#xD;function verifyPlainObject(value, displayName, methodName) {&#xD;  if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_lodash_es_isPlainObject__["a" /* default */])(value)) {&#xD;    __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__warning__["a" /* default */])(methodName + &apos;() in &apos; + displayName + &apos; must return a plain object. Instead received &apos; + value + &apos;.&apos;);&#xD;  }&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 181 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;exports.getTabsCount = getTabsCount;&#xD;exports.getPanelsCount = getPanelsCount;&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _TabList = __webpack_require__(70);&#xD;&#xD;var _TabList2 = _interopRequireDefault(_TabList);&#xD;&#xD;var _Tab = __webpack_require__(69);&#xD;&#xD;var _Tab2 = _interopRequireDefault(_Tab);&#xD;&#xD;var _TabPanel = __webpack_require__(71);&#xD;&#xD;var _TabPanel2 = _interopRequireDefault(_TabPanel);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function getTabsCount(children) {&#xD;  var tabLists = _react2.default.Children.toArray(children).filter(function (x) {&#xD;    return x.type === _TabList2.default;&#xD;  });&#xD;&#xD;  if (tabLists[0] &amp;&amp; tabLists[0].props.children) {&#xD;    return _react2.default.Children.count(_react2.default.Children.toArray(tabLists[0].props.children).filter(function (x) {&#xD;      return x.type === _Tab2.default;&#xD;    }));&#xD;  }&#xD;&#xD;  return 0;&#xD;}&#xD;&#xD;function getPanelsCount(children) {&#xD;  return _react2.default.Children.count(_react2.default.Children.toArray(children).filter(function (x) {&#xD;    return x.type === _TabPanel2.default;&#xD;  }));&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 182 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;exports.childrenPropType = childrenPropType;&#xD;exports.onSelectPropType = onSelectPropType;&#xD;exports.selectedIndexPropType = selectedIndexPropType;&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _Tab = __webpack_require__(69);&#xD;&#xD;var _Tab2 = _interopRequireDefault(_Tab);&#xD;&#xD;var _TabList = __webpack_require__(70);&#xD;&#xD;var _TabList2 = _interopRequireDefault(_TabList);&#xD;&#xD;var _TabPanel = __webpack_require__(71);&#xD;&#xD;var _TabPanel2 = _interopRequireDefault(_TabPanel);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function childrenPropType(props, propName, componentName) {&#xD;  var error = void 0;&#xD;  var tabsCount = 0;&#xD;  var panelsCount = 0;&#xD;  var children = props[propName];&#xD;&#xD;  _react2.default.Children.forEach(children, function (child) {&#xD;    // null happens when conditionally rendering TabPanel/Tab&#xD;    // see https://github.com/reactjs/react-tabs/issues/37&#xD;    if (child === null) {&#xD;      return;&#xD;    }&#xD;&#xD;    if (child.type === _TabList2.default) {&#xD;      _react2.default.Children.forEach(child.props.children, function (c) {&#xD;        // null happens when conditionally rendering TabPanel/Tab&#xD;        // see https://github.com/reactjs/react-tabs/issues/37&#xD;        if (c === null) {&#xD;          return;&#xD;        }&#xD;&#xD;        if (c.type === _Tab2.default) {&#xD;          tabsCount++;&#xD;        }&#xD;      });&#xD;    } else if (child.type === _TabPanel2.default) {&#xD;      panelsCount++;&#xD;    } else {&#xD;      error = new Error(&apos;Expected \&apos;TabList\&apos; or \&apos;TabPanel\&apos; but found \&apos;&apos; + (child.type.displayName || child.type) + &apos;\&apos; in `&apos; + componentName + &apos;`&apos;);&#xD;    }&#xD;  });&#xD;&#xD;  if (tabsCount !== panelsCount) {&#xD;    error = new Error(&apos;There should be an equal number of \&apos;Tab\&apos; and \&apos;TabPanel\&apos; in `&apos; + componentName + &apos;`.&apos; + (&apos;Received &apos; + tabsCount + &apos; \&apos;Tab\&apos; and &apos; + panelsCount + &apos; \&apos;TabPanel\&apos;.&apos;));&#xD;  }&#xD;&#xD;  return error;&#xD;}&#xD;&#xD;function onSelectPropType(props, propName, componentName, location, propFullName) {&#xD;  var prop = props[propName];&#xD;  var name = propFullName || propName;&#xD;  var error = null;&#xD;&#xD;  if (prop &amp;&amp; typeof prop !== &apos;function&apos;) {&#xD;    error = new Error(&apos;Invalid &apos; + location + &apos; `&apos; + name + &apos;` of type `&apos; + (typeof prop === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(prop)) + &apos;` supplied to `&apos; + componentName + &apos;`, expected `function`.&apos;);&#xD;  } else if (props.selectedIndex != null &amp;&amp; prop == null) {&#xD;    error = new Error(&apos;The &apos; + location + &apos; `&apos; + name + &apos;` is marked as required in `&apos; + componentName + &apos;`, but its value is `undefined` or `null`.\n`onSelect` is required when `selectedIndex` is also set. Not doing so will make the tabs not do anything, as `selectedIndex` indicates that you want to handle the selected tab yourself.\nIf you only want to set the inital tab replace `selectedIndex` with `defaultIndex`.&apos;);&#xD;  }&#xD;&#xD;  return error;&#xD;}&#xD;&#xD;function selectedIndexPropType(props, propName, componentName, location, propFullName) {&#xD;  var prop = props[propName];&#xD;  var name = propFullName || propName;&#xD;  var error = null;&#xD;&#xD;  if (prop != null &amp;&amp; typeof prop !== &apos;number&apos;) {&#xD;    error = new Error(&apos;Invalid &apos; + location + &apos; `&apos; + name + &apos;` of type `&apos; + (typeof prop === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(prop)) + &apos;` supplied to `&apos; + componentName + &apos;`, expected `number`.&apos;);&#xD;  } else if (props.defaultIndex != null &amp;&amp; prop != null) {&#xD;    return new Error(&apos;The &apos; + location + &apos; `&apos; + name + &apos;` cannot be used together with `defaultIndex` in `&apos; + componentName + &apos;`.\nEither remove `&apos; + name + &apos;` to let `&apos; + componentName + &apos;` handle the selected tab internally or remove `defaultIndex` to handle it yourself.&apos;);&#xD;  }&#xD;&#xD;  return error;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 183 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;exports.default = uuid;&#xD;exports.reset = reset;&#xD;// Get a universally unique identifier&#xD;var count = 0;&#xD;function uuid() {&#xD;  return "react-tabs-" + count++;&#xD;}&#xD;&#xD;function reset() {&#xD;  count = 0;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 184 */,&#xD;/* 185 */,&#xD;/* 186 */,&#xD;/* 187 */,&#xD;/* 188 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a passthrough stream.&#xD;// basically just the most minimal sort of Transform stream.&#xD;// Every written chunk gets output as-is.&#xD;&#xD;&#xD;&#xD;module.exports = PassThrough;&#xD;&#xD;var Transform = __webpack_require__(103);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(48);&#xD;util.inherits = __webpack_require__(5);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(PassThrough, Transform);&#xD;&#xD;function PassThrough(options) {&#xD;  if (!(this instanceof PassThrough)) return new PassThrough(options);&#xD;&#xD;  Transform.call(this, options);&#xD;}&#xD;&#xD;PassThrough.prototype._transform = function (chunk, encoding, cb) {&#xD;  cb(null, chunk);&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 189 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {&#xD;&#xD;module.exports = Readable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(84);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var isArray = __webpack_require__(137);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Readable.ReadableState = ReadableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var EE = __webpack_require__(30).EventEmitter;&#xD;&#xD;var EElistenerCount = function (emitter, type) {&#xD;  return emitter.listeners(type).length;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream;&#xD;(function () {&#xD;  try {&#xD;    Stream = __webpack_require__(29);&#xD;  } catch (_) {} finally {&#xD;    if (!Stream) Stream = __webpack_require__(30).EventEmitter;&#xD;  }&#xD;})();&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(79);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(48);&#xD;util.inherits = __webpack_require__(5);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var debugUtil = __webpack_require__(568);&#xD;var debug = void 0;&#xD;if (debugUtil &amp;&amp; debugUtil.debuglog) {&#xD;  debug = debugUtil.debuglog(&apos;stream&apos;);&#xD;} else {&#xD;  debug = function () {};&#xD;}&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var BufferList = __webpack_require__(499);&#xD;var StringDecoder;&#xD;&#xD;util.inherits(Readable, Stream);&#xD;&#xD;function prependListener(emitter, event, fn) {&#xD;  // Sadly this is not cacheable as some libraries bundle their own&#xD;  // event emitter implementation with them.&#xD;  if (typeof emitter.prependListener === &apos;function&apos;) {&#xD;    return emitter.prependListener(event, fn);&#xD;  } else {&#xD;    // This is a hack to make sure that our error handler is attached before any&#xD;    // userland ones.  NEVER DO THIS. This is here only because this code needs&#xD;    // to continue to work with older versions of Node.js that do not include&#xD;    // the prependListener() method. The goal is to eventually remove this hack.&#xD;    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];&#xD;  }&#xD;}&#xD;&#xD;function ReadableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(36);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag. Used to make read(n) ignore n and to&#xD;  // make all the buffer merging and length checks go away&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;&#xD;&#xD;  // the point at which it stops calling _read() to fill the buffer&#xD;  // Note: 0 is a valid value, means "don&apos;t call _read preemptively ever"&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126; &#126;this.highWaterMark;&#xD;&#xD;  // A linked list is used to store data chunks instead of an array because the&#xD;  // linked list can remove elements from the beginning faster than&#xD;  // array.shift()&#xD;  this.buffer = new BufferList();&#xD;  this.length = 0;&#xD;  this.pipes = null;&#xD;  this.pipesCount = 0;&#xD;  this.flowing = null;&#xD;  this.ended = false;&#xD;  this.endEmitted = false;&#xD;  this.reading = false;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // whenever we return null, then we set a flag to say&#xD;  // that we&apos;re awaiting a &apos;readable&apos; event emission.&#xD;  this.needReadable = false;&#xD;  this.emittedReadable = false;&#xD;  this.readableListening = false;&#xD;  this.resumeScheduled = false;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // when piping, we only care about &apos;readable&apos; events that happen&#xD;  // after read()ing all the bytes and not getting any pushback.&#xD;  this.ranOut = false;&#xD;&#xD;  // the number of writers that are awaiting a drain event in .pipe()s&#xD;  this.awaitDrain = 0;&#xD;&#xD;  // if true, a maybeReadMore has been scheduled&#xD;  this.readingMore = false;&#xD;&#xD;  this.decoder = null;&#xD;  this.encoding = null;&#xD;  if (options.encoding) {&#xD;    if (!StringDecoder) StringDecoder = __webpack_require__(73).StringDecoder;&#xD;    this.decoder = new StringDecoder(options.encoding);&#xD;    this.encoding = options.encoding;&#xD;  }&#xD;}&#xD;&#xD;function Readable(options) {&#xD;  Duplex = Duplex || __webpack_require__(36);&#xD;&#xD;  if (!(this instanceof Readable)) return new Readable(options);&#xD;&#xD;  this._readableState = new ReadableState(options, this);&#xD;&#xD;  // legacy&#xD;  this.readable = true;&#xD;&#xD;  if (options &amp;&amp; typeof options.read === &apos;function&apos;) this._read = options.read;&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Manually shove something into the read() buffer.&#xD;// This returns true if the highWaterMark has not been hit yet,&#xD;// similar to how Writable.write() returns true if you should&#xD;// write() some more.&#xD;Readable.prototype.push = function (chunk, encoding) {&#xD;  var state = this._readableState;&#xD;&#xD;  if (!state.objectMode &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    encoding = encoding || state.defaultEncoding;&#xD;    if (encoding !== state.encoding) {&#xD;      chunk = bufferShim.from(chunk, encoding);&#xD;      encoding = &apos;&apos;;&#xD;    }&#xD;  }&#xD;&#xD;  return readableAddChunk(this, state, chunk, encoding, false);&#xD;};&#xD;&#xD;// Unshift should *always* be something directly out of read()&#xD;Readable.prototype.unshift = function (chunk) {&#xD;  var state = this._readableState;&#xD;  return readableAddChunk(this, state, chunk, &apos;&apos;, true);&#xD;};&#xD;&#xD;Readable.prototype.isPaused = function () {&#xD;  return this._readableState.flowing === false;&#xD;};&#xD;&#xD;function readableAddChunk(stream, state, chunk, encoding, addToFront) {&#xD;  var er = chunkInvalid(state, chunk);&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;  } else if (chunk === null) {&#xD;    state.reading = false;&#xD;    onEofChunk(stream, state);&#xD;  } else if (state.objectMode || chunk &amp;&amp; chunk.length &gt; 0) {&#xD;    if (state.ended &amp;&amp; !addToFront) {&#xD;      var e = new Error(&apos;stream.push() after EOF&apos;);&#xD;      stream.emit(&apos;error&apos;, e);&#xD;    } else if (state.endEmitted &amp;&amp; addToFront) {&#xD;      var _e = new Error(&apos;stream.unshift() after end event&apos;);&#xD;      stream.emit(&apos;error&apos;, _e);&#xD;    } else {&#xD;      var skipAdd;&#xD;      if (state.decoder &amp;&amp; !addToFront &amp;&amp; !encoding) {&#xD;        chunk = state.decoder.write(chunk);&#xD;        skipAdd = !state.objectMode &amp;&amp; chunk.length === 0;&#xD;      }&#xD;&#xD;      if (!addToFront) state.reading = false;&#xD;&#xD;      // Don&apos;t add to the buffer if we&apos;ve decoded to an empty string chunk and&#xD;      // we&apos;re not in object mode&#xD;      if (!skipAdd) {&#xD;        // if we want the data now, just emit it.&#xD;        if (state.flowing &amp;&amp; state.length === 0 &amp;&amp; !state.sync) {&#xD;          stream.emit(&apos;data&apos;, chunk);&#xD;          stream.read(0);&#xD;        } else {&#xD;          // update the buffer info.&#xD;          state.length += state.objectMode ? 1 : chunk.length;&#xD;          if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);&#xD;&#xD;          if (state.needReadable) emitReadable(stream);&#xD;        }&#xD;      }&#xD;&#xD;      maybeReadMore(stream, state);&#xD;    }&#xD;  } else if (!addToFront) {&#xD;    state.reading = false;&#xD;  }&#xD;&#xD;  return needMoreData(state);&#xD;}&#xD;&#xD;// if it&apos;s past the high water mark, we can push in some more.&#xD;// Also, if we have no data yet, we can stand some&#xD;// more bytes.  This is to work around cases where hwm=0,&#xD;// such as the repl.  Also, if the push() triggered a&#xD;// readable event, and the user called read(largeNumber) such that&#xD;// needReadable was set, then we ought to push more, so that another&#xD;// &apos;readable&apos; event will be triggered.&#xD;function needMoreData(state) {&#xD;  return !state.ended &amp;&amp; (state.needReadable || state.length &lt; state.highWaterMark || state.length === 0);&#xD;}&#xD;&#xD;// backwards compatibility.&#xD;Readable.prototype.setEncoding = function (enc) {&#xD;  if (!StringDecoder) StringDecoder = __webpack_require__(73).StringDecoder;&#xD;  this._readableState.decoder = new StringDecoder(enc);&#xD;  this._readableState.encoding = enc;&#xD;  return this;&#xD;};&#xD;&#xD;// Don&apos;t raise the hwm &gt; 8MB&#xD;var MAX_HWM = 0x800000;&#xD;function computeNewHighWaterMark(n) {&#xD;  if (n &gt;= MAX_HWM) {&#xD;    n = MAX_HWM;&#xD;  } else {&#xD;    // Get the next highest power of 2 to prevent increasing hwm excessively in&#xD;    // tiny amounts&#xD;    n--;&#xD;    n |= n &gt;&gt;&gt; 1;&#xD;    n |= n &gt;&gt;&gt; 2;&#xD;    n |= n &gt;&gt;&gt; 4;&#xD;    n |= n &gt;&gt;&gt; 8;&#xD;    n |= n &gt;&gt;&gt; 16;&#xD;    n++;&#xD;  }&#xD;  return n;&#xD;}&#xD;&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function howMuchToRead(n, state) {&#xD;  if (n &lt;= 0 || state.length === 0 &amp;&amp; state.ended) return 0;&#xD;  if (state.objectMode) return 1;&#xD;  if (n !== n) {&#xD;    // Only flow one buffer at a time&#xD;    if (state.flowing &amp;&amp; state.length) return state.buffer.head.data.length;else return state.length;&#xD;  }&#xD;  // If we&apos;re asking for more than the current hwm, then raise the hwm.&#xD;  if (n &gt; state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);&#xD;  if (n &lt;= state.length) return n;&#xD;  // Don&apos;t have enough&#xD;  if (!state.ended) {&#xD;    state.needReadable = true;&#xD;    return 0;&#xD;  }&#xD;  return state.length;&#xD;}&#xD;&#xD;// you can override either this method, or the async _read(n) below.&#xD;Readable.prototype.read = function (n) {&#xD;  debug(&apos;read&apos;, n);&#xD;  n = parseInt(n, 10);&#xD;  var state = this._readableState;&#xD;  var nOrig = n;&#xD;&#xD;  if (n !== 0) state.emittedReadable = false;&#xD;&#xD;  // if we&apos;re doing read(0) to trigger a readable event, but we&#xD;  // already have a bunch of data in the buffer, then just trigger&#xD;  // the &apos;readable&apos; event and move on.&#xD;  if (n === 0 &amp;&amp; state.needReadable &amp;&amp; (state.length &gt;= state.highWaterMark || state.ended)) {&#xD;    debug(&apos;read: emitReadable&apos;, state.length, state.ended);&#xD;    if (state.length === 0 &amp;&amp; state.ended) endReadable(this);else emitReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  n = howMuchToRead(n, state);&#xD;&#xD;  // if we&apos;ve ended, and we&apos;re now clear, then finish it up.&#xD;  if (n === 0 &amp;&amp; state.ended) {&#xD;    if (state.length === 0) endReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  // All the actual chunk generation logic needs to be&#xD;  // *below* the call to _read.  The reason is that in certain&#xD;  // synthetic stream cases, such as passthrough streams, _read&#xD;  // may be a completely synchronous operation which may change&#xD;  // the state of the read buffer, providing enough data when&#xD;  // before there was *not* enough.&#xD;  //&#xD;  // So, the steps are:&#xD;  // 1. Figure out what the state of things will be after we do&#xD;  // a read from the buffer.&#xD;  //&#xD;  // 2. If that resulting state will trigger a _read, then call _read.&#xD;  // Note that this may be asynchronous, or synchronous.  Yes, it is&#xD;  // deeply ugly to write APIs this way, but that still doesn&apos;t mean&#xD;  // that the Readable class should behave improperly, as streams are&#xD;  // designed to be sync/async agnostic.&#xD;  // Take note if the _read call is sync or async (ie, if the read call&#xD;  // has returned yet), so that we know whether or not it&apos;s safe to emit&#xD;  // &apos;readable&apos; etc.&#xD;  //&#xD;  // 3. Actually pull the requested chunks out of the buffer and return.&#xD;&#xD;  // if we need a readable event, then we need to do some reading.&#xD;  var doRead = state.needReadable;&#xD;  debug(&apos;need readable&apos;, doRead);&#xD;&#xD;  // if we currently have less than the highWaterMark, then also read some&#xD;  if (state.length === 0 || state.length - n &lt; state.highWaterMark) {&#xD;    doRead = true;&#xD;    debug(&apos;length less than watermark&apos;, doRead);&#xD;  }&#xD;&#xD;  // however, if we&apos;ve ended, then there&apos;s no point, and if we&apos;re already&#xD;  // reading, then it&apos;s unnecessary.&#xD;  if (state.ended || state.reading) {&#xD;    doRead = false;&#xD;    debug(&apos;reading or ended&apos;, doRead);&#xD;  } else if (doRead) {&#xD;    debug(&apos;do read&apos;);&#xD;    state.reading = true;&#xD;    state.sync = true;&#xD;    // if the length is currently zero, then we *need* a readable event.&#xD;    if (state.length === 0) state.needReadable = true;&#xD;    // call internal read method&#xD;    this._read(state.highWaterMark);&#xD;    state.sync = false;&#xD;    // If _read pushed data synchronously, then `reading` will be false,&#xD;    // and we need to re-evaluate how much data we can return to the user.&#xD;    if (!state.reading) n = howMuchToRead(nOrig, state);&#xD;  }&#xD;&#xD;  var ret;&#xD;  if (n &gt; 0) ret = fromList(n, state);else ret = null;&#xD;&#xD;  if (ret === null) {&#xD;    state.needReadable = true;&#xD;    n = 0;&#xD;  } else {&#xD;    state.length -= n;&#xD;  }&#xD;&#xD;  if (state.length === 0) {&#xD;    // If we have nothing in the buffer, then we want to know&#xD;    // as soon as we *do* get something into the buffer.&#xD;    if (!state.ended) state.needReadable = true;&#xD;&#xD;    // If we tried to read() past the EOF, then emit end on the next tick.&#xD;    if (nOrig !== n &amp;&amp; state.ended) endReadable(this);&#xD;  }&#xD;&#xD;  if (ret !== null) this.emit(&apos;data&apos;, ret);&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;function chunkInvalid(state, chunk) {&#xD;  var er = null;&#xD;  if (!Buffer.isBuffer(chunk) &amp;&amp; typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== null &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  return er;&#xD;}&#xD;&#xD;function onEofChunk(stream, state) {&#xD;  if (state.ended) return;&#xD;  if (state.decoder) {&#xD;    var chunk = state.decoder.end();&#xD;    if (chunk &amp;&amp; chunk.length) {&#xD;      state.buffer.push(chunk);&#xD;      state.length += state.objectMode ? 1 : chunk.length;&#xD;    }&#xD;  }&#xD;  state.ended = true;&#xD;&#xD;  // emit &apos;readable&apos; now to make sure it gets picked up.&#xD;  emitReadable(stream);&#xD;}&#xD;&#xD;// Don&apos;t emit readable right away in sync mode, because this can trigger&#xD;// another read() call =&gt; stack overflow.  This way, it might trigger&#xD;// a nextTick recursion warning, but that&apos;s not so bad.&#xD;function emitReadable(stream) {&#xD;  var state = stream._readableState;&#xD;  state.needReadable = false;&#xD;  if (!state.emittedReadable) {&#xD;    debug(&apos;emitReadable&apos;, state.flowing);&#xD;    state.emittedReadable = true;&#xD;    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);&#xD;  }&#xD;}&#xD;&#xD;function emitReadable_(stream) {&#xD;  debug(&apos;emit readable&apos;);&#xD;  stream.emit(&apos;readable&apos;);&#xD;  flow(stream);&#xD;}&#xD;&#xD;// at this point, the user has presumably seen the &apos;readable&apos; event,&#xD;// and called read() to consume some data.  that may have triggered&#xD;// in turn another _read(n) call, in which case reading = true if&#xD;// it&apos;s in progress.&#xD;// However, if we&apos;re not ended, or reading, and the length &lt; hwm,&#xD;// then go ahead and try to read some more preemptively.&#xD;function maybeReadMore(stream, state) {&#xD;  if (!state.readingMore) {&#xD;    state.readingMore = true;&#xD;    processNextTick(maybeReadMore_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function maybeReadMore_(stream, state) {&#xD;  var len = state.length;&#xD;  while (!state.reading &amp;&amp; !state.flowing &amp;&amp; !state.ended &amp;&amp; state.length &lt; state.highWaterMark) {&#xD;    debug(&apos;maybeReadMore read 0&apos;);&#xD;    stream.read(0);&#xD;    if (len === state.length)&#xD;      // didn&apos;t get any data, stop spinning.&#xD;      break;else len = state.length;&#xD;  }&#xD;  state.readingMore = false;&#xD;}&#xD;&#xD;// abstract method.  to be overridden in specific implementation classes.&#xD;// call cb(er, data) where data is &lt;= n in length.&#xD;// for virtual (non-string, non-buffer) streams, "length" is somewhat&#xD;// arbitrary, and perhaps not very meaningful.&#xD;Readable.prototype._read = function (n) {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;_read() is not implemented&apos;));&#xD;};&#xD;&#xD;Readable.prototype.pipe = function (dest, pipeOpts) {&#xD;  var src = this;&#xD;  var state = this._readableState;&#xD;&#xD;  switch (state.pipesCount) {&#xD;    case 0:&#xD;      state.pipes = dest;&#xD;      break;&#xD;    case 1:&#xD;      state.pipes = [state.pipes, dest];&#xD;      break;&#xD;    default:&#xD;      state.pipes.push(dest);&#xD;      break;&#xD;  }&#xD;  state.pipesCount += 1;&#xD;  debug(&apos;pipe count=%d opts=%j&apos;, state.pipesCount, pipeOpts);&#xD;&#xD;  var doEnd = (!pipeOpts || pipeOpts.end !== false) &amp;&amp; dest !== process.stdout &amp;&amp; dest !== process.stderr;&#xD;&#xD;  var endFn = doEnd ? onend : cleanup;&#xD;  if (state.endEmitted) processNextTick(endFn);else src.once(&apos;end&apos;, endFn);&#xD;&#xD;  dest.on(&apos;unpipe&apos;, onunpipe);&#xD;  function onunpipe(readable) {&#xD;    debug(&apos;onunpipe&apos;);&#xD;    if (readable === src) {&#xD;      cleanup();&#xD;    }&#xD;  }&#xD;&#xD;  function onend() {&#xD;    debug(&apos;onend&apos;);&#xD;    dest.end();&#xD;  }&#xD;&#xD;  // when the dest drains, it reduces the awaitDrain counter&#xD;  // on the source.  This would be more elegant with a .once()&#xD;  // handler in flow(), but adding and removing repeatedly is&#xD;  // too slow.&#xD;  var ondrain = pipeOnDrain(src);&#xD;  dest.on(&apos;drain&apos;, ondrain);&#xD;&#xD;  var cleanedUp = false;&#xD;  function cleanup() {&#xD;    debug(&apos;cleanup&apos;);&#xD;    // cleanup event handlers once the pipe is broken&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    dest.removeListener(&apos;drain&apos;, ondrain);&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    dest.removeListener(&apos;unpipe&apos;, onunpipe);&#xD;    src.removeListener(&apos;end&apos;, onend);&#xD;    src.removeListener(&apos;end&apos;, cleanup);&#xD;    src.removeListener(&apos;data&apos;, ondata);&#xD;&#xD;    cleanedUp = true;&#xD;&#xD;    // if the reader is waiting for a drain event from this&#xD;    // specific writer, then it would cause it to never start&#xD;    // flowing again.&#xD;    // So, if this is awaiting a drain, then we just call it now.&#xD;    // If we don&apos;t know, then assume that we are waiting for one.&#xD;    if (state.awaitDrain &amp;&amp; (!dest._writableState || dest._writableState.needDrain)) ondrain();&#xD;  }&#xD;&#xD;  // If the user pushes more data while we&apos;re writing to dest then we&apos;ll end up&#xD;  // in ondata again. However, we only want to increase awaitDrain once because&#xD;  // dest will only emit one &apos;drain&apos; event for the multiple writes.&#xD;  // =&gt; Introduce a guard on increasing awaitDrain.&#xD;  var increasedAwaitDrain = false;&#xD;  src.on(&apos;data&apos;, ondata);&#xD;  function ondata(chunk) {&#xD;    debug(&apos;ondata&apos;);&#xD;    increasedAwaitDrain = false;&#xD;    var ret = dest.write(chunk);&#xD;    if (false === ret &amp;&amp; !increasedAwaitDrain) {&#xD;      // If the user unpiped during `dest.write()`, it is possible&#xD;      // to get stuck in a permanently paused state if that write&#xD;      // also returned false.&#xD;      // =&gt; Check whether `dest` is still a piping destination.&#xD;      if ((state.pipesCount === 1 &amp;&amp; state.pipes === dest || state.pipesCount &gt; 1 &amp;&amp; indexOf(state.pipes, dest) !== -1) &amp;&amp; !cleanedUp) {&#xD;        debug(&apos;false write response, pause&apos;, src._readableState.awaitDrain);&#xD;        src._readableState.awaitDrain++;&#xD;        increasedAwaitDrain = true;&#xD;      }&#xD;      src.pause();&#xD;    }&#xD;  }&#xD;&#xD;  // if the dest has an error, then stop piping into it.&#xD;  // however, don&apos;t suppress the throwing behavior for this.&#xD;  function onerror(er) {&#xD;    debug(&apos;onerror&apos;, er);&#xD;    unpipe();&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    if (EElistenerCount(dest, &apos;error&apos;) === 0) dest.emit(&apos;error&apos;, er);&#xD;  }&#xD;&#xD;  // Make sure our error handler is attached before userland ones.&#xD;  prependListener(dest, &apos;error&apos;, onerror);&#xD;&#xD;  // Both close and finish should trigger unpipe, but only once.&#xD;  function onclose() {&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;close&apos;, onclose);&#xD;  function onfinish() {&#xD;    debug(&apos;onfinish&apos;);&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;finish&apos;, onfinish);&#xD;&#xD;  function unpipe() {&#xD;    debug(&apos;unpipe&apos;);&#xD;    src.unpipe(dest);&#xD;  }&#xD;&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, src);&#xD;&#xD;  // start the flow if it hasn&apos;t been started already.&#xD;  if (!state.flowing) {&#xD;    debug(&apos;pipe resume&apos;);&#xD;    src.resume();&#xD;  }&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;function pipeOnDrain(src) {&#xD;  return function () {&#xD;    var state = src._readableState;&#xD;    debug(&apos;pipeOnDrain&apos;, state.awaitDrain);&#xD;    if (state.awaitDrain) state.awaitDrain--;&#xD;    if (state.awaitDrain === 0 &amp;&amp; EElistenerCount(src, &apos;data&apos;)) {&#xD;      state.flowing = true;&#xD;      flow(src);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;Readable.prototype.unpipe = function (dest) {&#xD;  var state = this._readableState;&#xD;&#xD;  // if we&apos;re not piping anywhere, then do nothing.&#xD;  if (state.pipesCount === 0) return this;&#xD;&#xD;  // just one destination.  most common case.&#xD;  if (state.pipesCount === 1) {&#xD;    // passed in one, but it&apos;s not the right one.&#xD;    if (dest &amp;&amp; dest !== state.pipes) return this;&#xD;&#xD;    if (!dest) dest = state.pipes;&#xD;&#xD;    // got a match.&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;    if (dest) dest.emit(&apos;unpipe&apos;, this);&#xD;    return this;&#xD;  }&#xD;&#xD;  // slow case. multiple pipe destinations.&#xD;&#xD;  if (!dest) {&#xD;    // remove all.&#xD;    var dests = state.pipes;&#xD;    var len = state.pipesCount;&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      dests[i].emit(&apos;unpipe&apos;, this);&#xD;    }return this;&#xD;  }&#xD;&#xD;  // try to find the right one.&#xD;  var index = indexOf(state.pipes, dest);&#xD;  if (index === -1) return this;&#xD;&#xD;  state.pipes.splice(index, 1);&#xD;  state.pipesCount -= 1;&#xD;  if (state.pipesCount === 1) state.pipes = state.pipes[0];&#xD;&#xD;  dest.emit(&apos;unpipe&apos;, this);&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;// set up data events if they are asked for&#xD;// Ensure readable listeners eventually get something&#xD;Readable.prototype.on = function (ev, fn) {&#xD;  var res = Stream.prototype.on.call(this, ev, fn);&#xD;&#xD;  if (ev === &apos;data&apos;) {&#xD;    // Start flowing on next tick if stream isn&apos;t explicitly paused&#xD;    if (this._readableState.flowing !== false) this.resume();&#xD;  } else if (ev === &apos;readable&apos;) {&#xD;    var state = this._readableState;&#xD;    if (!state.endEmitted &amp;&amp; !state.readableListening) {&#xD;      state.readableListening = state.needReadable = true;&#xD;      state.emittedReadable = false;&#xD;      if (!state.reading) {&#xD;        processNextTick(nReadingNextTick, this);&#xD;      } else if (state.length) {&#xD;        emitReadable(this, state);&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  return res;&#xD;};&#xD;Readable.prototype.addListener = Readable.prototype.on;&#xD;&#xD;function nReadingNextTick(self) {&#xD;  debug(&apos;readable nexttick read 0&apos;);&#xD;  self.read(0);&#xD;}&#xD;&#xD;// pause() and resume() are remnants of the legacy readable stream API&#xD;// If the user uses them, then switch into old mode.&#xD;Readable.prototype.resume = function () {&#xD;  var state = this._readableState;&#xD;  if (!state.flowing) {&#xD;    debug(&apos;resume&apos;);&#xD;    state.flowing = true;&#xD;    resume(this, state);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function resume(stream, state) {&#xD;  if (!state.resumeScheduled) {&#xD;    state.resumeScheduled = true;&#xD;    processNextTick(resume_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function resume_(stream, state) {&#xD;  if (!state.reading) {&#xD;    debug(&apos;resume read 0&apos;);&#xD;    stream.read(0);&#xD;  }&#xD;&#xD;  state.resumeScheduled = false;&#xD;  state.awaitDrain = 0;&#xD;  stream.emit(&apos;resume&apos;);&#xD;  flow(stream);&#xD;  if (state.flowing &amp;&amp; !state.reading) stream.read(0);&#xD;}&#xD;&#xD;Readable.prototype.pause = function () {&#xD;  debug(&apos;call pause flowing=%j&apos;, this._readableState.flowing);&#xD;  if (false !== this._readableState.flowing) {&#xD;    debug(&apos;pause&apos;);&#xD;    this._readableState.flowing = false;&#xD;    this.emit(&apos;pause&apos;);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function flow(stream) {&#xD;  var state = stream._readableState;&#xD;  debug(&apos;flow&apos;, state.flowing);&#xD;  while (state.flowing &amp;&amp; stream.read() !== null) {}&#xD;}&#xD;&#xD;// wrap an old-style stream as the async data source.&#xD;// This is *not* part of the readable stream interface.&#xD;// It is an ugly unfortunate mess of history.&#xD;Readable.prototype.wrap = function (stream) {&#xD;  var state = this._readableState;&#xD;  var paused = false;&#xD;&#xD;  var self = this;&#xD;  stream.on(&apos;end&apos;, function () {&#xD;    debug(&apos;wrapped end&apos;);&#xD;    if (state.decoder &amp;&amp; !state.ended) {&#xD;      var chunk = state.decoder.end();&#xD;      if (chunk &amp;&amp; chunk.length) self.push(chunk);&#xD;    }&#xD;&#xD;    self.push(null);&#xD;  });&#xD;&#xD;  stream.on(&apos;data&apos;, function (chunk) {&#xD;    debug(&apos;wrapped data&apos;);&#xD;    if (state.decoder) chunk = state.decoder.write(chunk);&#xD;&#xD;    // don&apos;t skip over falsy values in objectMode&#xD;    if (state.objectMode &amp;&amp; (chunk === null || chunk === undefined)) return;else if (!state.objectMode &amp;&amp; (!chunk || !chunk.length)) return;&#xD;&#xD;    var ret = self.push(chunk);&#xD;    if (!ret) {&#xD;      paused = true;&#xD;      stream.pause();&#xD;    }&#xD;  });&#xD;&#xD;  // proxy all the other methods.&#xD;  // important when wrapping filters and duplexes.&#xD;  for (var i in stream) {&#xD;    if (this[i] === undefined &amp;&amp; typeof stream[i] === &apos;function&apos;) {&#xD;      this[i] = function (method) {&#xD;        return function () {&#xD;          return stream[method].apply(stream, arguments);&#xD;        };&#xD;      }(i);&#xD;    }&#xD;  }&#xD;&#xD;  // proxy certain important events.&#xD;  var events = [&apos;error&apos;, &apos;close&apos;, &apos;destroy&apos;, &apos;pause&apos;, &apos;resume&apos;];&#xD;  forEach(events, function (ev) {&#xD;    stream.on(ev, self.emit.bind(self, ev));&#xD;  });&#xD;&#xD;  // when we try to consume some more bytes, simply unpause the&#xD;  // underlying stream.&#xD;  self._read = function (n) {&#xD;    debug(&apos;wrapped _read&apos;, n);&#xD;    if (paused) {&#xD;      paused = false;&#xD;      stream.resume();&#xD;    }&#xD;  };&#xD;&#xD;  return self;&#xD;};&#xD;&#xD;// exposed for testing purposes only.&#xD;Readable._fromList = fromList;&#xD;&#xD;// Pluck off n bytes from an array of buffers.&#xD;// Length is the combined lengths of all the buffers in the list.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromList(n, state) {&#xD;  // nothing buffered&#xD;  if (state.length === 0) return null;&#xD;&#xD;  var ret;&#xD;  if (state.objectMode) ret = state.buffer.shift();else if (!n || n &gt;= state.length) {&#xD;    // read it all, truncate the list&#xD;    if (state.decoder) ret = state.buffer.join(&apos;&apos;);else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);&#xD;    state.buffer.clear();&#xD;  } else {&#xD;    // read part of list&#xD;    ret = fromListPartial(n, state.buffer, state.decoder);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;// Extracts only enough buffered data to satisfy the amount requested.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromListPartial(n, list, hasStrings) {&#xD;  var ret;&#xD;  if (n &lt; list.head.data.length) {&#xD;    // slice is the same for buffers and strings&#xD;    ret = list.head.data.slice(0, n);&#xD;    list.head.data = list.head.data.slice(n);&#xD;  } else if (n === list.head.data.length) {&#xD;    // first chunk is a perfect match&#xD;    ret = list.shift();&#xD;  } else {&#xD;    // result spans more than one buffer&#xD;    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of characters from the list of buffered data&#xD;// chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBufferString(n, list) {&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  var ret = p.data;&#xD;  n -= ret.length;&#xD;  while (p = p.next) {&#xD;    var str = p.data;&#xD;    var nb = n &gt; str.length ? str.length : n;&#xD;    if (nb === str.length) ret += str;else ret += str.slice(0, n);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === str.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = str.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of bytes from the list of buffered data chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBuffer(n, list) {&#xD;  var ret = bufferShim.allocUnsafe(n);&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  p.data.copy(ret);&#xD;  n -= p.data.length;&#xD;  while (p = p.next) {&#xD;    var buf = p.data;&#xD;    var nb = n &gt; buf.length ? buf.length : n;&#xD;    buf.copy(ret, ret.length - n, 0, nb);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === buf.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = buf.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;function endReadable(stream) {&#xD;  var state = stream._readableState;&#xD;&#xD;  // If we get here before consuming all the bytes, then that is a&#xD;  // bug in node.  Should never happen.&#xD;  if (state.length &gt; 0) throw new Error(&apos;"endReadable()" called on non-empty stream&apos;);&#xD;&#xD;  if (!state.endEmitted) {&#xD;    state.ended = true;&#xD;    processNextTick(endReadableNT, state, stream);&#xD;  }&#xD;}&#xD;&#xD;function endReadableNT(state, stream) {&#xD;  // Check that we didn&apos;t get one last unshift.&#xD;  if (!state.endEmitted &amp;&amp; state.length === 0) {&#xD;    state.endEmitted = true;&#xD;    stream.readable = false;&#xD;    stream.emit(&apos;end&apos;);&#xD;  }&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;function indexOf(xs, x) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    if (xs[i] === x) return i;&#xD;  }&#xD;  return -1;&#xD;}&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 190 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(103)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 191 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = compose;&#xD;/**&#xD; * Composes single-argument functions from right to left. The rightmost&#xD; * function can take multiple arguments as it provides the signature for&#xD; * the resulting composite function.&#xD; *&#xD; * @param {...Function} funcs The functions to compose.&#xD; * @returns {Function} A function obtained by composing the argument functions&#xD; * from right to left. For example, compose(f, g, h) is identical to doing&#xD; * (...args) =&gt; f(g(h(...args))).&#xD; */&#xD;&#xD;function compose() {&#xD;  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key &lt; _len; _key++) {&#xD;    funcs[_key] = arguments[_key];&#xD;  }&#xD;&#xD;  if (funcs.length === 0) {&#xD;    return function (arg) {&#xD;      return arg;&#xD;    };&#xD;  }&#xD;&#xD;  if (funcs.length === 1) {&#xD;    return funcs[0];&#xD;  }&#xD;&#xD;  var last = funcs[funcs.length - 1];&#xD;  var rest = funcs.slice(0, -1);&#xD;  return function () {&#xD;    return rest.reduceRight(function (composed, f) {&#xD;      return f(composed);&#xD;    }, last.apply(undefined, arguments));&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 192 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lodash_es_isPlainObject__ = __webpack_require__(83);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_symbol_observable__ = __webpack_require__(552);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_symbol_observable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_symbol_observable__);&#xD;/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ActionTypes; });&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = createStore;&#xD;&#xD;&#xD;&#xD;/**&#xD; * These are private action types reserved by Redux.&#xD; * For any unknown actions, you must return the current state.&#xD; * If the current state is undefined, you must return the initial state.&#xD; * Do not reference these action types directly in your code.&#xD; */&#xD;var ActionTypes = {&#xD;  INIT: &apos;@@redux/INIT&apos;&#xD;};&#xD;&#xD;/**&#xD; * Creates a Redux store that holds the state tree.&#xD; * The only way to change the data in the store is to call `dispatch()` on it.&#xD; *&#xD; * There should only be a single store in your app. To specify how different&#xD; * parts of the state tree respond to actions, you may combine several reducers&#xD; * into a single reducer function by using `combineReducers`.&#xD; *&#xD; * @param {Function} reducer A function that returns the next state tree, given&#xD; * the current state tree and the action to handle.&#xD; *&#xD; * @param {any} [preloadedState] The initial state. You may optionally specify it&#xD; * to hydrate the state from the server in universal apps, or to restore a&#xD; * previously serialized user session.&#xD; * If you use `combineReducers` to produce the root reducer function, this must be&#xD; * an object with the same shape as `combineReducers` keys.&#xD; *&#xD; * @param {Function} enhancer The store enhancer. You may optionally specify it&#xD; * to enhance the store with third-party capabilities such as middleware,&#xD; * time travel, persistence, etc. The only store enhancer that ships with Redux&#xD; * is `applyMiddleware()`.&#xD; *&#xD; * @returns {Store} A Redux store that lets you read the state, dispatch actions&#xD; * and subscribe to changes.&#xD; */&#xD;function createStore(reducer, preloadedState, enhancer) {&#xD;  var _ref2;&#xD;&#xD;  if (typeof preloadedState === &apos;function&apos; &amp;&amp; typeof enhancer === &apos;undefined&apos;) {&#xD;    enhancer = preloadedState;&#xD;    preloadedState = undefined;&#xD;  }&#xD;&#xD;  if (typeof enhancer !== &apos;undefined&apos;) {&#xD;    if (typeof enhancer !== &apos;function&apos;) {&#xD;      throw new Error(&apos;Expected the enhancer to be a function.&apos;);&#xD;    }&#xD;&#xD;    return enhancer(createStore)(reducer, preloadedState);&#xD;  }&#xD;&#xD;  if (typeof reducer !== &apos;function&apos;) {&#xD;    throw new Error(&apos;Expected the reducer to be a function.&apos;);&#xD;  }&#xD;&#xD;  var currentReducer = reducer;&#xD;  var currentState = preloadedState;&#xD;  var currentListeners = [];&#xD;  var nextListeners = currentListeners;&#xD;  var isDispatching = false;&#xD;&#xD;  function ensureCanMutateNextListeners() {&#xD;    if (nextListeners === currentListeners) {&#xD;      nextListeners = currentListeners.slice();&#xD;    }&#xD;  }&#xD;&#xD;  /**&#xD;   * Reads the state tree managed by the store.&#xD;   *&#xD;   * @returns {any} The current state tree of your application.&#xD;   */&#xD;  function getState() {&#xD;    return currentState;&#xD;  }&#xD;&#xD;  /**&#xD;   * Adds a change listener. It will be called any time an action is dispatched,&#xD;   * and some part of the state tree may potentially have changed. You may then&#xD;   * call `getState()` to read the current state tree inside the callback.&#xD;   *&#xD;   * You may call `dispatch()` from a change listener, with the following&#xD;   * caveats:&#xD;   *&#xD;   * 1. The subscriptions are snapshotted just before every `dispatch()` call.&#xD;   * If you subscribe or unsubscribe while the listeners are being invoked, this&#xD;   * will not have any effect on the `dispatch()` that is currently in progress.&#xD;   * However, the next `dispatch()` call, whether nested or not, will use a more&#xD;   * recent snapshot of the subscription list.&#xD;   *&#xD;   * 2. The listener should not expect to see all state changes, as the state&#xD;   * might have been updated multiple times during a nested `dispatch()` before&#xD;   * the listener is called. It is, however, guaranteed that all subscribers&#xD;   * registered before the `dispatch()` started will be called with the latest&#xD;   * state by the time it exits.&#xD;   *&#xD;   * @param {Function} listener A callback to be invoked on every dispatch.&#xD;   * @returns {Function} A function to remove this change listener.&#xD;   */&#xD;  function subscribe(listener) {&#xD;    if (typeof listener !== &apos;function&apos;) {&#xD;      throw new Error(&apos;Expected listener to be a function.&apos;);&#xD;    }&#xD;&#xD;    var isSubscribed = true;&#xD;&#xD;    ensureCanMutateNextListeners();&#xD;    nextListeners.push(listener);&#xD;&#xD;    return function unsubscribe() {&#xD;      if (!isSubscribed) {&#xD;        return;&#xD;      }&#xD;&#xD;      isSubscribed = false;&#xD;&#xD;      ensureCanMutateNextListeners();&#xD;      var index = nextListeners.indexOf(listener);&#xD;      nextListeners.splice(index, 1);&#xD;    };&#xD;  }&#xD;&#xD;  /**&#xD;   * Dispatches an action. It is the only way to trigger a state change.&#xD;   *&#xD;   * The `reducer` function, used to create the store, will be called with the&#xD;   * current state tree and the given `action`. Its return value will&#xD;   * be considered the **next** state of the tree, and the change listeners&#xD;   * will be notified.&#xD;   *&#xD;   * The base implementation only supports plain object actions. If you want to&#xD;   * dispatch a Promise, an Observable, a thunk, or something else, you need to&#xD;   * wrap your store creating function into the corresponding middleware. For&#xD;   * example, see the documentation for the `redux-thunk` package. Even the&#xD;   * middleware will eventually dispatch plain object actions using this method.&#xD;   *&#xD;   * @param {Object} action A plain object representing “what changed”. It is&#xD;   * a good idea to keep actions serializable so you can record and replay user&#xD;   * sessions, or use the time travelling `redux-devtools`. An action must have&#xD;   * a `type` property which may not be `undefined`. It is a good idea to use&#xD;   * string constants for action types.&#xD;   *&#xD;   * @returns {Object} For convenience, the same action object you dispatched.&#xD;   *&#xD;   * Note that, if you use a custom middleware, it may wrap `dispatch()` to&#xD;   * return something else (for example, a Promise you can await).&#xD;   */&#xD;  function dispatch(action) {&#xD;    if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_lodash_es_isPlainObject__["a" /* default */])(action)) {&#xD;      throw new Error(&apos;Actions must be plain objects. &apos; + &apos;Use custom middleware for async actions.&apos;);&#xD;    }&#xD;&#xD;    if (typeof action.type === &apos;undefined&apos;) {&#xD;      throw new Error(&apos;Actions may not have an undefined "type" property. &apos; + &apos;Have you misspelled a constant?&apos;);&#xD;    }&#xD;&#xD;    if (isDispatching) {&#xD;      throw new Error(&apos;Reducers may not dispatch actions.&apos;);&#xD;    }&#xD;&#xD;    try {&#xD;      isDispatching = true;&#xD;      currentState = currentReducer(currentState, action);&#xD;    } finally {&#xD;      isDispatching = false;&#xD;    }&#xD;&#xD;    var listeners = currentListeners = nextListeners;&#xD;    for (var i = 0; i &lt; listeners.length; i++) {&#xD;      listeners[i]();&#xD;    }&#xD;&#xD;    return action;&#xD;  }&#xD;&#xD;  /**&#xD;   * Replaces the reducer currently used by the store to calculate the state.&#xD;   *&#xD;   * You might need this if your app implements code splitting and you want to&#xD;   * load some of the reducers dynamically. You might also need this if you&#xD;   * implement a hot reloading mechanism for Redux.&#xD;   *&#xD;   * @param {Function} nextReducer The reducer for the store to use instead.&#xD;   * @returns {void}&#xD;   */&#xD;  function replaceReducer(nextReducer) {&#xD;    if (typeof nextReducer !== &apos;function&apos;) {&#xD;      throw new Error(&apos;Expected the nextReducer to be a function.&apos;);&#xD;    }&#xD;&#xD;    currentReducer = nextReducer;&#xD;    dispatch({ type: ActionTypes.INIT });&#xD;  }&#xD;&#xD;  /**&#xD;   * Interoperability point for observable/reactive libraries.&#xD;   * @returns {observable} A minimal observable of state changes.&#xD;   * For more information, see the observable proposal:&#xD;   * https://github.com/zenparsing/es-observable&#xD;   */&#xD;  function observable() {&#xD;    var _ref;&#xD;&#xD;    var outerSubscribe = subscribe;&#xD;    return _ref = {&#xD;      /**&#xD;       * The minimal observable subscription method.&#xD;       * @param {Object} observer Any object that can be used as an observer.&#xD;       * The observer object should have a `next` method.&#xD;       * @returns {subscription} An object with an `unsubscribe` method that can&#xD;       * be used to unsubscribe the observable from the store, and prevent further&#xD;       * emission of values from the observable.&#xD;       */&#xD;      subscribe: function subscribe(observer) {&#xD;        if (typeof observer !== &apos;object&apos;) {&#xD;          throw new TypeError(&apos;Expected the observer to be an object.&apos;);&#xD;        }&#xD;&#xD;        function observeState() {&#xD;          if (observer.next) {&#xD;            observer.next(getState());&#xD;          }&#xD;        }&#xD;&#xD;        observeState();&#xD;        var unsubscribe = outerSubscribe(observeState);&#xD;        return { unsubscribe: unsubscribe };&#xD;      }&#xD;    }, _ref[__WEBPACK_IMPORTED_MODULE_1_symbol_observable___default.a] = function () {&#xD;      return this;&#xD;    }, _ref;&#xD;  }&#xD;&#xD;  // When a store is created, an "INIT" action is dispatched so that every&#xD;  // reducer returns their initial state. This effectively populates&#xD;  // the initial state tree.&#xD;  dispatch({ type: ActionTypes.INIT });&#xD;&#xD;  return _ref2 = {&#xD;    dispatch: dispatch,&#xD;    subscribe: subscribe,&#xD;    getState: getState,&#xD;    replaceReducer: replaceReducer&#xD;  }, _ref2[__WEBPACK_IMPORTED_MODULE_1_symbol_observable___default.a] = observable, _ref2;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 193 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = warning;&#xD;/**&#xD; * Prints a warning in the console if it exists.&#xD; *&#xD; * @param {String} message The warning message.&#xD; * @returns {void}&#xD; */&#xD;function warning(message) {&#xD;  /* eslint-disable no-console */&#xD;  if (typeof console !== &apos;undefined&apos; &amp;&amp; typeof console.error === &apos;function&apos;) {&#xD;    console.error(message);&#xD;  }&#xD;  /* eslint-enable no-console */&#xD;  try {&#xD;    // This error was thrown as a convenience so that if you enable&#xD;    // "break on all exceptions" in your console,&#xD;    // it would pause the execution at this line.&#xD;    throw new Error(message);&#xD;    /* eslint-disable no-empty */&#xD;  } catch (e) {}&#xD;  /* eslint-enable no-empty */&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 194 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports =&#xD;/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;/******/&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;/******/&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId]) {&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;/******/ 		}&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			i: moduleId,&#xD;/******/ 			l: false,&#xD;/******/ 			exports: {}&#xD;/******/ 		};&#xD;/******/&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;/******/&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.l = true;&#xD;/******/&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;/******/&#xD;/******/&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;/******/&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;/******/&#xD;/******/ 	// identity function for calling harmony imports with the correct context&#xD;/******/ 	__webpack_require__.i = function(value) { return value; };&#xD;/******/&#xD;/******/ 	// define getter function for harmony exports&#xD;/******/ 	__webpack_require__.d = function(exports, name, getter) {&#xD;/******/ 		if(!__webpack_require__.o(exports, name)) {&#xD;/******/ 			Object.defineProperty(exports, name, {&#xD;/******/ 				configurable: false,&#xD;/******/ 				enumerable: true,&#xD;/******/ 				get: getter&#xD;/******/ 			});&#xD;/******/ 		}&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// getDefaultExport function for compatibility with non-harmony modules&#xD;/******/ 	__webpack_require__.n = function(module) {&#xD;/******/ 		var getter = module &amp;&amp; module.__esModule ?&#xD;/******/ 			function getDefault() { return module[&apos;default&apos;]; } :&#xD;/******/ 			function getModuleExports() { return module; };&#xD;/******/ 		__webpack_require__.d(getter, &apos;a&apos;, getter);&#xD;/******/ 		return getter;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// Object.prototype.hasOwnProperty.call&#xD;/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };&#xD;/******/&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;/******/&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(__webpack_require__.s = 19);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var __WEBPACK_AMD_DEFINE_RESULT__;(function(root, factory){&#xD;&#xD;	//UMD&#xD;	if ( true ) {&#xD;		!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {&#xD;			return factory();&#xD;		}.call(exports, __webpack_require__, exports, module),&#xD;				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;	} else if (typeof module === "object") {&#xD;		module.exports = factory();&#xD; 	} else {&#xD;		root.Tone = factory();&#xD;	}&#xD;&#xD;}(this, function(){&#xD;&#xD;	"use strict";&#xD;	&#xD;	var Tone;&#xD;	//constructs the main Tone object&#xD;	function Main(func){&#xD;		Tone = func();&#xD;	}&#xD;	//invokes each of the modules with the main Tone object as the argument&#xD;	function Module(func){&#xD;		func(Tone);&#xD;	}	/**&#xD;	 *  Tone.js&#xD;	 *  @author Yotam Mann&#xD;	 *  @license http://opensource.org/licenses/MIT MIT License&#xD;	 *  @copyright 2014-2017 Yotam Mann&#xD;	 */&#xD;	Main(function () {&#xD;	    &#xD;	    //////////////////////////////////////////////////////////////////////////&#xD;	    //	WEB AUDIO CONTEXT&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    function isUndef(val) {&#xD;	        return typeof val === &apos;undefined&apos;;&#xD;	    }&#xD;	    function isFunction(val) {&#xD;	        return typeof val === &apos;function&apos;;&#xD;	    }&#xD;	    var audioContext;&#xD;	    //polyfill for AudioContext and OfflineAudioContext&#xD;	    if (isUndef(window.AudioContext)) {&#xD;	        window.AudioContext = window.webkitAudioContext;&#xD;	    }&#xD;	    if (isUndef(window.OfflineAudioContext)) {&#xD;	        window.OfflineAudioContext = window.webkitOfflineAudioContext;&#xD;	    }&#xD;	    if (!isUndef(AudioContext)) {&#xD;	        audioContext = new AudioContext();&#xD;	    } else {&#xD;	        throw new Error(&apos;Web Audio is not supported in this browser&apos;);&#xD;	    }&#xD;	    //SHIMS////////////////////////////////////////////////////////////////////&#xD;	    if (!isFunction(AudioContext.prototype.createGain)) {&#xD;	        AudioContext.prototype.createGain = AudioContext.prototype.createGainNode;&#xD;	    }&#xD;	    if (!isFunction(AudioContext.prototype.createDelay)) {&#xD;	        AudioContext.prototype.createDelay = AudioContext.prototype.createDelayNode;&#xD;	    }&#xD;	    if (!isFunction(AudioContext.prototype.createPeriodicWave)) {&#xD;	        AudioContext.prototype.createPeriodicWave = AudioContext.prototype.createWaveTable;&#xD;	    }&#xD;	    if (!isFunction(AudioBufferSourceNode.prototype.start)) {&#xD;	        AudioBufferSourceNode.prototype.start = AudioBufferSourceNode.prototype.noteGrainOn;&#xD;	    }&#xD;	    if (!isFunction(AudioBufferSourceNode.prototype.stop)) {&#xD;	        AudioBufferSourceNode.prototype.stop = AudioBufferSourceNode.prototype.noteOff;&#xD;	    }&#xD;	    if (!isFunction(OscillatorNode.prototype.start)) {&#xD;	        OscillatorNode.prototype.start = OscillatorNode.prototype.noteOn;&#xD;	    }&#xD;	    if (!isFunction(OscillatorNode.prototype.stop)) {&#xD;	        OscillatorNode.prototype.stop = OscillatorNode.prototype.noteOff;&#xD;	    }&#xD;	    if (!isFunction(OscillatorNode.prototype.setPeriodicWave)) {&#xD;	        OscillatorNode.prototype.setPeriodicWave = OscillatorNode.prototype.setWaveTable;&#xD;	    }&#xD;	    //extend the connect function to include Tones&#xD;	    if (isUndef(AudioNode.prototype._nativeConnect)) {&#xD;	        AudioNode.prototype._nativeConnect = AudioNode.prototype.connect;&#xD;	        AudioNode.prototype.connect = function (B, outNum, inNum) {&#xD;	            if (B.input) {&#xD;	                if (Array.isArray(B.input)) {&#xD;	                    if (isUndef(inNum)) {&#xD;	                        inNum = 0;&#xD;	                    }&#xD;	                    this.connect(B.input[inNum]);&#xD;	                } else {&#xD;	                    this.connect(B.input, outNum, inNum);&#xD;	                }&#xD;	            } else {&#xD;	                try {&#xD;	                    if (B instanceof AudioNode) {&#xD;	                        this._nativeConnect(B, outNum, inNum);&#xD;	                    } else {&#xD;	                        this._nativeConnect(B, outNum);&#xD;	                    }&#xD;	                } catch (e) {&#xD;	                    throw new Error(&apos;error connecting to node: &apos; + B);&#xD;	                }&#xD;	            }&#xD;	        };&#xD;	    }&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	TONE&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  @class  Tone is the base class of all other classes. It provides &#xD;		 *          a lot of methods and functionality to all classes that extend&#xD;		 *          it. &#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @alias Tone&#xD;		 *  @param {number} [inputs=1] the number of input nodes&#xD;		 *  @param {number} [outputs=1] the number of output nodes&#xD;		 */&#xD;	    var Tone = function (inputs, outputs) {&#xD;	        /**&#xD;			 *  the input node(s)&#xD;			 *  @type {GainNode|Array}&#xD;			 */&#xD;	        if (isUndef(inputs) || inputs === 1) {&#xD;	            this.input = this.context.createGain();&#xD;	        } else if (inputs &gt; 1) {&#xD;	            this.input = new Array(inputs);&#xD;	        }&#xD;	        /**&#xD;			 *  the output node(s)&#xD;			 *  @type {GainNode|Array}&#xD;			 */&#xD;	        if (isUndef(outputs) || outputs === 1) {&#xD;	            this.output = this.context.createGain();&#xD;	        } else if (outputs &gt; 1) {&#xD;	            this.output = new Array(inputs);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Set the parameters at once. Either pass in an&#xD;		 *  object mapping parameters to values, or to set a&#xD;		 *  single parameter, by passing in a string and value.&#xD;		 *  The last argument is an optional ramp time which &#xD;		 *  will ramp any signal values to their destination value&#xD;		 *  over the duration of the rampTime.&#xD;		 *  @param {Object|string} params&#xD;		 *  @param {number=} value&#xD;		 *  @param {Time=} rampTime&#xD;		 *  @returns {Tone} this&#xD;		 *  @example&#xD;		 * //set values using an object&#xD;		 * filter.set({&#xD;		 * 	"frequency" : 300,&#xD;		 * 	"type" : highpass&#xD;		 * });&#xD;		 *  @example&#xD;		 * filter.set("type", "highpass");&#xD;		 *  @example&#xD;		 * //ramp to the value 220 over 3 seconds. &#xD;		 * oscillator.set({&#xD;		 * 	"frequency" : 220&#xD;		 * }, 3);&#xD;		 */&#xD;	    Tone.prototype.set = function (params, value, rampTime) {&#xD;	        if (this.isObject(params)) {&#xD;	            rampTime = value;&#xD;	        } else if (this.isString(params)) {&#xD;	            var tmpObj = {};&#xD;	            tmpObj[params] = value;&#xD;	            params = tmpObj;&#xD;	        }&#xD;	        paramLoop:&#xD;	            for (var attr in params) {&#xD;	                value = params[attr];&#xD;	                var parent = this;&#xD;	                if (attr.indexOf(&apos;.&apos;) !== -1) {&#xD;	                    var attrSplit = attr.split(&apos;.&apos;);&#xD;	                    for (var i = 0; i &lt; attrSplit.length - 1; i++) {&#xD;	                        parent = parent[attrSplit[i]];&#xD;	                        if (parent instanceof Tone) {&#xD;	                            attrSplit.splice(0, i + 1);&#xD;	                            var innerParam = attrSplit.join(&apos;.&apos;);&#xD;	                            parent.set(innerParam, value);&#xD;	                            continue paramLoop;&#xD;	                        }&#xD;	                    }&#xD;	                    attr = attrSplit[attrSplit.length - 1];&#xD;	                }&#xD;	                var param = parent[attr];&#xD;	                if (isUndef(param)) {&#xD;	                    continue;&#xD;	                }&#xD;	                if (Tone.Signal &amp;&amp; param instanceof Tone.Signal || Tone.Param &amp;&amp; param instanceof Tone.Param) {&#xD;	                    if (param.value !== value) {&#xD;	                        if (isUndef(rampTime)) {&#xD;	                            param.value = value;&#xD;	                        } else {&#xD;	                            param.rampTo(value, rampTime);&#xD;	                        }&#xD;	                    }&#xD;	                } else if (param instanceof AudioParam) {&#xD;	                    if (param.value !== value) {&#xD;	                        param.value = value;&#xD;	                    }&#xD;	                } else if (param instanceof Tone) {&#xD;	                    param.set(value);&#xD;	                } else if (param !== value) {&#xD;	                    parent[attr] = value;&#xD;	                }&#xD;	            }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get the object&apos;s attributes. Given no arguments get&#xD;		 *  will return all available object properties and their corresponding&#xD;		 *  values. Pass in a single attribute to retrieve or an array&#xD;		 *  of attributes. The attribute strings can also include a "."&#xD;		 *  to access deeper properties.&#xD;		 *  @example&#xD;		 * osc.get();&#xD;		 * //returns {"type" : "sine", "frequency" : 440, ...etc}&#xD;		 *  @example&#xD;		 * osc.get("type");&#xD;		 * //returns { "type" : "sine"}&#xD;		 * @example&#xD;		 * //use dot notation to access deep properties&#xD;		 * synth.get(["envelope.attack", "envelope.release"]);&#xD;		 * //returns {"envelope" : {"attack" : 0.2, "release" : 0.4}}&#xD;		 *  @param {Array=|string|undefined} params the parameters to get, otherwise will return &#xD;		 *  					                  all available.&#xD;		 *  @returns {Object}&#xD;		 */&#xD;	    Tone.prototype.get = function (params) {&#xD;	        if (isUndef(params)) {&#xD;	            params = this._collectDefaults(this.constructor);&#xD;	        } else if (this.isString(params)) {&#xD;	            params = [params];&#xD;	        }&#xD;	        var ret = {};&#xD;	        for (var i = 0; i &lt; params.length; i++) {&#xD;	            var attr = params[i];&#xD;	            var parent = this;&#xD;	            var subRet = ret;&#xD;	            if (attr.indexOf(&apos;.&apos;) !== -1) {&#xD;	                var attrSplit = attr.split(&apos;.&apos;);&#xD;	                for (var j = 0; j &lt; attrSplit.length - 1; j++) {&#xD;	                    var subAttr = attrSplit[j];&#xD;	                    subRet[subAttr] = subRet[subAttr] || {};&#xD;	                    subRet = subRet[subAttr];&#xD;	                    parent = parent[subAttr];&#xD;	                }&#xD;	                attr = attrSplit[attrSplit.length - 1];&#xD;	            }&#xD;	            var param = parent[attr];&#xD;	            if (this.isObject(params[attr])) {&#xD;	                subRet[attr] = param.get();&#xD;	            } else if (Tone.Signal &amp;&amp; param instanceof Tone.Signal) {&#xD;	                subRet[attr] = param.value;&#xD;	            } else if (Tone.Param &amp;&amp; param instanceof Tone.Param) {&#xD;	                subRet[attr] = param.value;&#xD;	            } else if (param instanceof AudioParam) {&#xD;	                subRet[attr] = param.value;&#xD;	            } else if (param instanceof Tone) {&#xD;	                subRet[attr] = param.get();&#xD;	            } else if (!isFunction(param) &amp;&amp; !isUndef(param)) {&#xD;	                subRet[attr] = param;&#xD;	            }&#xD;	        }&#xD;	        return ret;&#xD;	    };&#xD;	    /**&#xD;		 *  collect all of the default attributes in one&#xD;		 *  @private&#xD;		 *  @param {function} constr the constructor to find the defaults from&#xD;		 *  @return {Array} all of the attributes which belong to the class&#xD;		 */&#xD;	    Tone.prototype._collectDefaults = function (constr) {&#xD;	        var ret = [];&#xD;	        if (!isUndef(constr.defaults)) {&#xD;	            ret = Object.keys(constr.defaults);&#xD;	        }&#xD;	        if (!isUndef(constr._super)) {&#xD;	            var superDefs = this._collectDefaults(constr._super);&#xD;	            //filter out repeats&#xD;	            for (var i = 0; i &lt; superDefs.length; i++) {&#xD;	                if (ret.indexOf(superDefs[i]) === -1) {&#xD;	                    ret.push(superDefs[i]);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return ret;&#xD;	    };&#xD;	    /**&#xD;		 *  @returns {string} returns the name of the class as a string&#xD;		 */&#xD;	    Tone.prototype.toString = function () {&#xD;	        for (var className in Tone) {&#xD;	            var isLetter = className[0].match(/^[A-Z]$/);&#xD;	            var sameConstructor = Tone[className] === this.constructor;&#xD;	            if (isFunction(Tone[className]) &amp;&amp; isLetter &amp;&amp; sameConstructor) {&#xD;	                return className;&#xD;	            }&#xD;	        }&#xD;	        return &apos;Tone&apos;;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	CLASS VARS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  A static pointer to the audio context accessible as Tone.context. &#xD;		 *  @type {AudioContext}&#xD;		 */&#xD;	    Tone.context = audioContext;&#xD;	    /**&#xD;		 *  The audio context.&#xD;		 *  @type {AudioContext}&#xD;		 */&#xD;	    Tone.prototype.context = Tone.context;&#xD;	    /**&#xD;		 *  the default buffer size&#xD;		 *  @type {number}&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.prototype.bufferSize = 2048;&#xD;	    /**&#xD;		 *  The delay time of a single frame (128 samples according to the spec). &#xD;		 *  @type {number}&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.prototype.blockTime = 128 / Tone.context.sampleRate;&#xD;	    /**&#xD;		 *  The time of a single sample&#xD;		 *  @type {number}&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.prototype.sampleTime = 1 / Tone.context.sampleRate;&#xD;	    /**&#xD;		 *  The number of inputs feeding into the AudioNode. &#xD;		 *  For source nodes, this will be 0.&#xD;		 *  @memberOf Tone#&#xD;		 *  @name numberOfInputs&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.prototype, &apos;numberOfInputs&apos;, {&#xD;	        get: function () {&#xD;	            if (this.input) {&#xD;	                if (this.isArray(this.input)) {&#xD;	                    return this.input.length;&#xD;	                } else {&#xD;	                    return 1;&#xD;	                }&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The number of outputs coming out of the AudioNode. &#xD;		 *  For source nodes, this will be 0.&#xD;		 *  @memberOf Tone#&#xD;		 *  @name numberOfInputs&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.prototype, &apos;numberOfOutputs&apos;, {&#xD;	        get: function () {&#xD;	            if (this.output) {&#xD;	                if (this.isArray(this.output)) {&#xD;	                    return this.output.length;&#xD;	                } else {&#xD;	                    return 1;&#xD;	                }&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	CONNECTIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  disconnect and dispose&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.dispose = function () {&#xD;	        if (!this.isUndef(this.input)) {&#xD;	            if (this.input instanceof AudioNode) {&#xD;	                this.input.disconnect();&#xD;	            }&#xD;	            this.input = null;&#xD;	        }&#xD;	        if (!this.isUndef(this.output)) {&#xD;	            if (this.output instanceof AudioNode) {&#xD;	                this.output.disconnect();&#xD;	            }&#xD;	            this.output = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  a silent connection to the DesinationNode&#xD;		 *  which will ensure that anything connected to it&#xD;		 *  will not be garbage collected&#xD;		 *  &#xD;		 *  @private&#xD;		 */&#xD;	    var _silentNode = null;&#xD;	    /**&#xD;		 *  makes a connection to ensure that the node will not be garbage collected&#xD;		 *  until &apos;dispose&apos; is explicitly called&#xD;		 *&#xD;		 *  use carefully. circumvents JS and WebAudio&apos;s normal Garbage Collection behavior&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.noGC = function () {&#xD;	        this.output.connect(_silentNode);&#xD;	        return this;&#xD;	    };&#xD;	    AudioNode.prototype.noGC = function () {&#xD;	        this.connect(_silentNode);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  connect the output of a ToneNode to an AudioParam, AudioNode, or ToneNode&#xD;		 *  @param  {Tone | AudioParam | AudioNode} unit &#xD;		 *  @param {number} [outputNum=0] optionally which output to connect from&#xD;		 *  @param {number} [inputNum=0] optionally which input to connect to&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.connect = function (unit, outputNum, inputNum) {&#xD;	        if (Array.isArray(this.output)) {&#xD;	            outputNum = this.defaultArg(outputNum, 0);&#xD;	            this.output[outputNum].connect(unit, 0, inputNum);&#xD;	        } else {&#xD;	            this.output.connect(unit, outputNum, inputNum);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  disconnect the output&#xD;		 *  @param {Number|AudioNode} output Either the output index to disconnect&#xD;		 *                                   if the output is an array, or the&#xD;		 *                                   node to disconnect from.&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.disconnect = function (output) {&#xD;	        if (Array.isArray(this.output)) {&#xD;	            output = this.defaultArg(output, 0);&#xD;	            this.output[output].disconnect();&#xD;	        } else if (!this.isUndef(output)) {&#xD;	            this.output.disconnect(output);&#xD;	        } else {&#xD;	            this.output.disconnect();&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  connect together all of the arguments in series&#xD;		 *  @param {...AudioParam|Tone|AudioNode} nodes&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.connectSeries = function () {&#xD;	        if (arguments.length &gt; 1) {&#xD;	            var currentUnit = arguments[0];&#xD;	            for (var i = 1; i &lt; arguments.length; i++) {&#xD;	                var toUnit = arguments[i];&#xD;	                currentUnit.connect(toUnit);&#xD;	                currentUnit = toUnit;&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Connect the output of this node to the rest of the nodes in series.&#xD;		 *  @example&#xD;		 *  //connect a node to an effect, panVol and then to the master output&#xD;		 *  node.chain(effect, panVol, Tone.Master);&#xD;		 *  @param {...AudioParam|Tone|AudioNode} nodes&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.chain = function () {&#xD;	        if (arguments.length &gt; 0) {&#xD;	            var currentUnit = this;&#xD;	            for (var i = 0; i &lt; arguments.length; i++) {&#xD;	                var toUnit = arguments[i];&#xD;	                currentUnit.connect(toUnit);&#xD;	                currentUnit = toUnit;&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  connect the output of this node to the rest of the nodes in parallel.&#xD;		 *  @param {...AudioParam|Tone|AudioNode} nodes&#xD;		 *  @returns {Tone} this&#xD;		 */&#xD;	    Tone.prototype.fan = function () {&#xD;	        if (arguments.length &gt; 0) {&#xD;	            for (var i = 0; i &lt; arguments.length; i++) {&#xD;	                this.connect(arguments[i]);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    //give native nodes chain and fan methods&#xD;	    AudioNode.prototype.chain = Tone.prototype.chain;&#xD;	    AudioNode.prototype.fan = Tone.prototype.fan;&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	UTILITIES / HELPERS / MATHS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  If the `given` parameter is undefined, use the `fallback`. &#xD;		 *  If both `given` and `fallback` are object literals, it will&#xD;		 *  return a deep copy which includes all of the parameters from both &#xD;		 *  objects. If a parameter is undefined in given, it will return&#xD;		 *  the fallback property. &#xD;		 *  &lt;br&gt;&lt;br&gt;&#xD;		 *  WARNING: if object is self referential, it will go into an an &#xD;		 *  infinite recursive loop.&#xD;		 *  &#xD;		 *  @param  {*} given    &#xD;		 *  @param  {*} fallback &#xD;		 *  @return {*}          &#xD;		 */&#xD;	    Tone.prototype.defaultArg = function (given, fallback) {&#xD;	        if (this.isObject(given) &amp;&amp; this.isObject(fallback)) {&#xD;	            var ret = {};&#xD;	            //make a deep copy of the given object&#xD;	            for (var givenProp in given) {&#xD;	                ret[givenProp] = this.defaultArg(fallback[givenProp], given[givenProp]);&#xD;	            }&#xD;	            for (var fallbackProp in fallback) {&#xD;	                ret[fallbackProp] = this.defaultArg(given[fallbackProp], fallback[fallbackProp]);&#xD;	            }&#xD;	            return ret;&#xD;	        } else {&#xD;	            return isUndef(given) ? fallback : given;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  returns the args as an options object with given arguments&#xD;		 *  mapped to the names provided. &#xD;		 *&#xD;		 *  if the args given is an array containing only one object, it is assumed&#xD;		 *  that that&apos;s already the options object and will just return it. &#xD;		 *  &#xD;		 *  @param  {Array} values  the &apos;arguments&apos; object of the function&#xD;		 *  @param  {Array} keys the names of the arguments as they&#xD;		 *                                 should appear in the options object&#xD;		 *  @param {Object=} defaults optional defaults to mixin to the returned &#xD;		 *                            options object                              &#xD;		 *  @return {Object}       the options object with the names mapped to the arguments&#xD;		 */&#xD;	    Tone.prototype.optionsObject = function (values, keys, defaults) {&#xD;	        var options = {};&#xD;	        if (values.length === 1 &amp;&amp; this.isObject(values[0])) {&#xD;	            options = values[0];&#xD;	        } else {&#xD;	            for (var i = 0; i &lt; keys.length; i++) {&#xD;	                options[keys[i]] = values[i];&#xD;	            }&#xD;	        }&#xD;	        if (!this.isUndef(defaults)) {&#xD;	            return this.defaultArg(options, defaults);&#xD;	        } else {&#xD;	            return options;&#xD;	        }&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // TYPE CHECKING&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  test if the arg is undefined&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is undefined&#xD;		 *  @function&#xD;		 */&#xD;	    Tone.prototype.isUndef = isUndef;&#xD;	    /**&#xD;		 *  test if the arg is a function&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is a function&#xD;		 *  @function&#xD;		 */&#xD;	    Tone.prototype.isFunction = isFunction;&#xD;	    /**&#xD;		 *  Test if the argument is a number.&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is a number&#xD;		 */&#xD;	    Tone.prototype.isNumber = function (arg) {&#xD;	        return typeof arg === &apos;number&apos;;&#xD;	    };&#xD;	    /**&#xD;		 *  Test if the given argument is an object literal (i.e. `{}`);&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is an object literal.&#xD;		 */&#xD;	    Tone.prototype.isObject = function (arg) {&#xD;	        return Object.prototype.toString.call(arg) === &apos;[object Object]&apos; &amp;&amp; arg.constructor === Object;&#xD;	    };&#xD;	    /**&#xD;		 *  Test if the argument is a boolean.&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is a boolean&#xD;		 */&#xD;	    Tone.prototype.isBoolean = function (arg) {&#xD;	        return typeof arg === &apos;boolean&apos;;&#xD;	    };&#xD;	    /**&#xD;		 *  Test if the argument is an Array&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is an array&#xD;		 */&#xD;	    Tone.prototype.isArray = function (arg) {&#xD;	        return Array.isArray(arg);&#xD;	    };&#xD;	    /**&#xD;		 *  Test if the argument is a string.&#xD;		 *  @param {*} arg the argument to test&#xD;		 *  @returns {boolean} true if the arg is a string&#xD;		 */&#xD;	    Tone.prototype.isString = function (arg) {&#xD;	        return typeof arg === &apos;string&apos;;&#xD;	    };&#xD;	    /**&#xD;		 *  An empty function.&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.noOp = function () {&#xD;	    };&#xD;	    /**&#xD;		 *  Make the property not writable. Internal use only. &#xD;		 *  @private&#xD;		 *  @param  {string}  property  the property to make not writable&#xD;		 */&#xD;	    Tone.prototype._readOnly = function (property) {&#xD;	        if (Array.isArray(property)) {&#xD;	            for (var i = 0; i &lt; property.length; i++) {&#xD;	                this._readOnly(property[i]);&#xD;	            }&#xD;	        } else {&#xD;	            Object.defineProperty(this, property, {&#xD;	                writable: false,&#xD;	                enumerable: true&#xD;	            });&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Make an attribute writeable. Interal use only. &#xD;		 *  @private&#xD;		 *  @param  {string}  property  the property to make writable&#xD;		 */&#xD;	    Tone.prototype._writable = function (property) {&#xD;	        if (Array.isArray(property)) {&#xD;	            for (var i = 0; i &lt; property.length; i++) {&#xD;	                this._writable(property[i]);&#xD;	            }&#xD;	        } else {&#xD;	            Object.defineProperty(this, property, { writable: true });&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * Possible play states. &#xD;		 * @enum {string}&#xD;		 */&#xD;	    Tone.State = {&#xD;	        Started: &apos;started&apos;,&#xD;	        Stopped: &apos;stopped&apos;,&#xD;	        Paused: &apos;paused&apos;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // GAIN CONVERSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Equal power gain scale. Good for cross-fading.&#xD;		 *  @param  {NormalRange} percent (0-1)&#xD;		 *  @return {Number}         output gain (0-1)&#xD;		 */&#xD;	    Tone.prototype.equalPowerScale = function (percent) {&#xD;	        var piFactor = 0.5 * Math.PI;&#xD;	        return Math.sin(percent * piFactor);&#xD;	    };&#xD;	    /**&#xD;		 *  Convert decibels into gain.&#xD;		 *  @param  {Decibels} db&#xD;		 *  @return {Number}   &#xD;		 */&#xD;	    Tone.prototype.dbToGain = function (db) {&#xD;	        return Math.pow(2, db / 6);&#xD;	    };&#xD;	    /**&#xD;		 *  Convert gain to decibels.&#xD;		 *  @param  {Number} gain (0-1)&#xD;		 *  @return {Decibels}   &#xD;		 */&#xD;	    Tone.prototype.gainToDb = function (gain) {&#xD;	        return 20 * (Math.log(gain) / Math.LN10);&#xD;	    };&#xD;	    /**&#xD;		 *  Convert an interval (in semitones) to a frequency ratio.&#xD;		 *  @param  {Interval} interval the number of semitones above the base note&#xD;		 *  @return {number}          the frequency ratio&#xD;		 *  @example&#xD;		 * tone.intervalToFrequencyRatio(0); // 1&#xD;		 * tone.intervalToFrequencyRatio(12); // 2&#xD;		 * tone.intervalToFrequencyRatio(-12); // 0.5&#xD;		 */&#xD;	    Tone.prototype.intervalToFrequencyRatio = function (interval) {&#xD;	        return Math.pow(2, interval / 12);&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	TIMING&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Return the current time of the AudioContext clock.&#xD;		 *  @return {Number} the currentTime from the AudioContext&#xD;		 */&#xD;	    Tone.prototype.now = function () {&#xD;	        return this.context.currentTime;&#xD;	    };&#xD;	    /**&#xD;		 *  Return the current time of the AudioContext clock.&#xD;		 *  @return {Number} the currentTime from the AudioContext&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.now = function () {&#xD;	        return Tone.context.currentTime;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	INHERITANCE&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  have a child inherit all of Tone&apos;s (or a parent&apos;s) prototype&#xD;		 *  to inherit the parent&apos;s properties, make sure to call &#xD;		 *  Parent.call(this) in the child&apos;s constructor&#xD;		 *&#xD;		 *  based on closure library&apos;s inherit function&#xD;		 *&#xD;		 *  @static&#xD;		 *  @param  {function} 	child  &#xD;		 *  @param  {function=} parent (optional) parent to inherit from&#xD;		 *                             if no parent is supplied, the child&#xD;		 *                             will inherit from Tone&#xD;		 */&#xD;	    Tone.extend = function (child, parent) {&#xD;	        if (isUndef(parent)) {&#xD;	            parent = Tone;&#xD;	        }&#xD;	        function TempConstructor() {&#xD;	        }&#xD;	        TempConstructor.prototype = parent.prototype;&#xD;	        child.prototype = new TempConstructor();&#xD;	        /** @override */&#xD;	        child.prototype.constructor = child;&#xD;	        child._super = parent;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	CONTEXT&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  array of callbacks to be invoked when a new context is added&#xD;		 *  @private &#xD;		 *  @private&#xD;		 */&#xD;	    var newContextCallbacks = [];&#xD;	    /**&#xD;		 *  invoke this callback when a new context is added&#xD;		 *  will be invoked initially with the first context&#xD;		 *  @private &#xD;		 *  @static&#xD;		 *  @param {function(AudioContext)} callback the callback to be invoked&#xD;		 *                                           with the audio context&#xD;		 */&#xD;	    Tone._initAudioContext = function (callback) {&#xD;	        //invoke the callback with the existing AudioContext&#xD;	        callback(Tone.context);&#xD;	        //add it to the array&#xD;	        newContextCallbacks.push(callback);&#xD;	    };&#xD;	    /**&#xD;		 *  Tone automatically creates a context on init, but if you are working&#xD;		 *  with other libraries which also create an AudioContext, it can be&#xD;		 *  useful to set your own. If you are going to set your own context, &#xD;		 *  be sure to do it at the start of your code, before creating any objects.&#xD;		 *  @static&#xD;		 *  @param {AudioContext} ctx The new audio context to set&#xD;		 */&#xD;	    Tone.setContext = function (ctx) {&#xD;	        //set the prototypes&#xD;	        Tone.prototype.context = ctx;&#xD;	        Tone.context = ctx;&#xD;	        //invoke all the callbacks&#xD;	        for (var i = 0; i &lt; newContextCallbacks.length; i++) {&#xD;	            newContextCallbacks[i](ctx);&#xD;	        }&#xD;	    };&#xD;	    //setup the context&#xD;	    Tone._initAudioContext(function (audioContext) {&#xD;	        //set the blockTime&#xD;	        Tone.prototype.blockTime = 128 / audioContext.sampleRate;&#xD;	        Tone.prototype.sampleTime = 1 / audioContext.sampleRate;&#xD;	        _silentNode = audioContext.createGain();&#xD;	        _silentNode.gain.value = 0;&#xD;	        _silentNode.connect(audioContext.destination);&#xD;	    });&#xD;	    Tone.version = &apos;r9&apos;;&#xD;	    // allow optional silencing of this log&#xD;	    if (!window.TONE_SILENCE_VERSION_LOGGING) {&#xD;	        console.log(&apos;%c * Tone.js &apos; + Tone.version + &apos; * &apos;, &apos;background: #000; color: #fff&apos;);&#xD;	    }&#xD;	    return Tone;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Base class for all Signals. Used Internally. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.SignalBase = function () {&#xD;	    };&#xD;	    Tone.extend(Tone.SignalBase);&#xD;	    /**&#xD;		 *  When signals connect to other signals or AudioParams, &#xD;		 *  they take over the output value of that signal or AudioParam. &#xD;		 *  For all other nodes, the behavior is the same as a default &lt;code&gt;connect&lt;/code&gt;. &#xD;		 *&#xD;		 *  @override&#xD;		 *  @param {AudioParam|AudioNode|Tone.Signal|Tone} node &#xD;		 *  @param {number} [outputNumber=0] The output number to connect from.&#xD;		 *  @param {number} [inputNumber=0] The input number to connect to.&#xD;		 *  @returns {Tone.SignalBase} this&#xD;		 */&#xD;	    Tone.SignalBase.prototype.connect = function (node, outputNumber, inputNumber) {&#xD;	        //zero it out so that the signal can have full control&#xD;	        if (Tone.Signal &amp;&amp; Tone.Signal === node.constructor || Tone.Param &amp;&amp; Tone.Param === node.constructor || Tone.TimelineSignal &amp;&amp; Tone.TimelineSignal === node.constructor) {&#xD;	            //cancel changes&#xD;	            node._param.cancelScheduledValues(0);&#xD;	            //reset the value&#xD;	            node._param.value = 0;&#xD;	            //mark the value as overridden&#xD;	            node.overridden = true;&#xD;	        } else if (node instanceof AudioParam) {&#xD;	            node.cancelScheduledValues(0);&#xD;	            node.value = 0;&#xD;	        }&#xD;	        Tone.prototype.connect.call(this, node, outputNumber, inputNumber);&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.SignalBase;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Wraps the native Web Audio API &#xD;		 *         [WaveShaperNode](http://webaudio.github.io/web-audio-api/#the-waveshapernode-interface).&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @param {function|Array|Number} mapping The function used to define the values. &#xD;		 *                                    The mapping function should take two arguments: &#xD;		 *                                    the first is the value at the current position &#xD;		 *                                    and the second is the array position. &#xD;		 *                                    If the argument is an array, that array will be&#xD;		 *                                    set as the wave shaping function. The input&#xD;		 *                                    signal is an AudioRange [-1, 1] value and the output&#xD;		 *                                    signal can take on any numerical values. &#xD;		 *                                    &#xD;		 *  @param {Number} [bufferLen=1024] The length of the WaveShaperNode buffer.&#xD;		 *  @example&#xD;		 * var timesTwo = new Tone.WaveShaper(function(val){&#xD;		 * 	return val * 2;&#xD;		 * }, 2048);&#xD;		 *  @example&#xD;		 * //a waveshaper can also be constructed with an array of values&#xD;		 * var invert = new Tone.WaveShaper([1, -1]);&#xD;		 */&#xD;	    Tone.WaveShaper = function (mapping, bufferLen) {&#xD;	        /**&#xD;			 *  the waveshaper&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._shaper = this.input = this.output = this.context.createWaveShaper();&#xD;	        /**&#xD;			 *  the waveshapers curve&#xD;			 *  @type {Float32Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._curve = null;&#xD;	        if (Array.isArray(mapping)) {&#xD;	            this.curve = mapping;&#xD;	        } else if (isFinite(mapping) || this.isUndef(mapping)) {&#xD;	            this._curve = new Float32Array(this.defaultArg(mapping, 1024));&#xD;	        } else if (this.isFunction(mapping)) {&#xD;	            this._curve = new Float32Array(this.defaultArg(bufferLen, 1024));&#xD;	            this.setMap(mapping);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.WaveShaper, Tone.SignalBase);&#xD;	    /**&#xD;		 *  Uses a mapping function to set the value of the curve. &#xD;		 *  @param {function} mapping The function used to define the values. &#xD;		 *                            The mapping function take two arguments: &#xD;		 *                            the first is the value at the current position &#xD;		 *                            which goes from -1 to 1 over the number of elements&#xD;		 *                            in the curve array. The second argument is the array position. &#xD;		 *  @returns {Tone.WaveShaper} this&#xD;		 *  @example&#xD;		 * //map the input signal from [-1, 1] to [0, 10]&#xD;		 * shaper.setMap(function(val, index){&#xD;		 * 	return (val + 1) * 5;&#xD;		 * })&#xD;		 */&#xD;	    Tone.WaveShaper.prototype.setMap = function (mapping) {&#xD;	        for (var i = 0, len = this._curve.length; i &lt; len; i++) {&#xD;	            var normalized = i / (len - 1) * 2 - 1;&#xD;	            this._curve[i] = mapping(normalized, i);&#xD;	        }&#xD;	        this._shaper.curve = this._curve;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * The array to set as the waveshaper curve. For linear curves&#xD;		 * array length does not make much difference, but for complex curves&#xD;		 * longer arrays will provide smoother interpolation. &#xD;		 * @memberOf Tone.WaveShaper#&#xD;		 * @type {Array}&#xD;		 * @name curve&#xD;		 */&#xD;	    Object.defineProperty(Tone.WaveShaper.prototype, &apos;curve&apos;, {&#xD;	        get: function () {&#xD;	            return this._shaper.curve;&#xD;	        },&#xD;	        set: function (mapping) {&#xD;	            this._curve = new Float32Array(mapping);&#xD;	            this._shaper.curve = this._curve;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Specifies what type of oversampling (if any) should be used when &#xD;		 * applying the shaping curve. Can either be "none", "2x" or "4x". &#xD;		 * @memberOf Tone.WaveShaper#&#xD;		 * @type {string}&#xD;		 * @name oversample&#xD;		 */&#xD;	    Object.defineProperty(Tone.WaveShaper.prototype, &apos;oversample&apos;, {&#xD;	        get: function () {&#xD;	            return this._shaper.oversample;&#xD;	        },&#xD;	        set: function (oversampling) {&#xD;	            if ([&#xD;	                    &apos;none&apos;,&#xD;	                    &apos;2x&apos;,&#xD;	                    &apos;4x&apos;&#xD;	                ].indexOf(oversampling) !== -1) {&#xD;	                this._shaper.oversample = oversampling;&#xD;	            } else {&#xD;	                throw new RangeError(&apos;Tone.WaveShaper: oversampling must be either \&apos;none\&apos;, \&apos;2x\&apos;, or \&apos;4x\&apos;&apos;);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.WaveShaper} this&#xD;		 */&#xD;	    Tone.WaveShaper.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._shaper.disconnect();&#xD;	        this._shaper = null;&#xD;	        this._curve = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.WaveShaper;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.TimeBase is a flexible encoding of time&#xD;		 *         which can be evaluated to and from a string.&#xD;		 *         Parsing code modified from https://code.google.com/p/tapdigit/&#xD;		 *         Copyright 2011 2012 Ariya Hidayat, New BSD License&#xD;		 *  @extends {Tone}&#xD;		 *  @param  {Time}  val    The time value as a number or string&#xD;		 *  @param  {String=}  units  Unit values&#xD;		 *  @example&#xD;		 * Tone.TimeBase(4, "n")&#xD;		 * Tone.TimeBase(2, "t")&#xD;		 * Tone.TimeBase("2t").add("1m")&#xD;		 * Tone.TimeBase("2t + 1m");&#xD;		 */&#xD;	    Tone.TimeBase = function (val, units) {&#xD;	        //allows it to be constructed with or without &apos;new&apos;&#xD;	        if (this instanceof Tone.TimeBase) {&#xD;	            /**&#xD;				 *  Any expressions parsed from the Time&#xD;				 *  @type  {Array}&#xD;				 *  @private&#xD;				 */&#xD;	            this._expr = this._noOp;&#xD;	            if (val instanceof Tone.TimeBase) {&#xD;	                this.copy(val);&#xD;	            } else if (!this.isUndef(units) || this.isNumber(val)) {&#xD;	                //default units&#xD;	                units = this.defaultArg(units, this._defaultUnits);&#xD;	                var method = this._primaryExpressions[units].method;&#xD;	                this._expr = method.bind(this, val);&#xD;	            } else if (this.isString(val)) {&#xD;	                this.set(val);&#xD;	            } else if (this.isUndef(val)) {&#xD;	                //default expression&#xD;	                this._expr = this._defaultExpr();&#xD;	            }&#xD;	        } else {&#xD;	            return new Tone.TimeBase(val, units);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.TimeBase);&#xD;	    /**&#xD;		 *  Repalce the current time value with the value&#xD;		 *  given by the expression string.&#xD;		 *  @param  {String}  exprString&#xD;		 *  @return {Tone.TimeBase} this&#xD;		 */&#xD;	    Tone.TimeBase.prototype.set = function (exprString) {&#xD;	        this._expr = this._parseExprString(exprString);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Return a clone of the TimeBase object.&#xD;		 *  @return  {Tone.TimeBase} The new cloned Tone.TimeBase&#xD;		 */&#xD;	    Tone.TimeBase.prototype.clone = function () {&#xD;	        var instance = new this.constructor();&#xD;	        instance.copy(this);&#xD;	        return instance;&#xD;	    };&#xD;	    /**&#xD;		 *  Copies the value of time to this Time&#xD;		 *  @param {Tone.TimeBase} time&#xD;		 *  @return  {TimeBase}&#xD;		 */&#xD;	    Tone.TimeBase.prototype.copy = function (time) {&#xD;	        var val = time._expr();&#xD;	        return this.set(val);&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	ABSTRACT SYNTAX TREE PARSER&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  All the primary expressions.&#xD;		 *  @private&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.TimeBase.prototype._primaryExpressions = {&#xD;	        &apos;n&apos;: {&#xD;	            regexp: /^(\d+)n/i,&#xD;	            method: function (value) {&#xD;	                value = parseInt(value);&#xD;	                if (value === 1) {&#xD;	                    return this._beatsToUnits(this._timeSignature());&#xD;	                } else {&#xD;	                    return this._beatsToUnits(4 / value);&#xD;	                }&#xD;	            }&#xD;	        },&#xD;	        &apos;t&apos;: {&#xD;	            regexp: /^(\d+)t/i,&#xD;	            method: function (value) {&#xD;	                value = parseInt(value);&#xD;	                return this._beatsToUnits(8 / (parseInt(value) * 3));&#xD;	            }&#xD;	        },&#xD;	        &apos;m&apos;: {&#xD;	            regexp: /^(\d+)m/i,&#xD;	            method: function (value) {&#xD;	                return this._beatsToUnits(parseInt(value) * this._timeSignature());&#xD;	            }&#xD;	        },&#xD;	        &apos;i&apos;: {&#xD;	            regexp: /^(\d+)i/i,&#xD;	            method: function (value) {&#xD;	                return this._ticksToUnits(parseInt(value));&#xD;	            }&#xD;	        },&#xD;	        &apos;hz&apos;: {&#xD;	            regexp: /^(\d+(?:\.\d+)?)hz/i,&#xD;	            method: function (value) {&#xD;	                return this._frequencyToUnits(parseFloat(value));&#xD;	            }&#xD;	        },&#xD;	        &apos;tr&apos;: {&#xD;	            regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,&#xD;	            method: function (m, q, s) {&#xD;	                var total = 0;&#xD;	                if (m &amp;&amp; m !== &apos;0&apos;) {&#xD;	                    total += this._beatsToUnits(this._timeSignature() * parseFloat(m));&#xD;	                }&#xD;	                if (q &amp;&amp; q !== &apos;0&apos;) {&#xD;	                    total += this._beatsToUnits(parseFloat(q));&#xD;	                }&#xD;	                if (s &amp;&amp; s !== &apos;0&apos;) {&#xD;	                    total += this._beatsToUnits(parseFloat(s) / 4);&#xD;	                }&#xD;	                return total;&#xD;	            }&#xD;	        },&#xD;	        &apos;s&apos;: {&#xD;	            regexp: /^(\d+(?:\.\d+)?s)/,&#xD;	            method: function (value) {&#xD;	                return this._secondsToUnits(parseFloat(value));&#xD;	            }&#xD;	        },&#xD;	        &apos;samples&apos;: {&#xD;	            regexp: /^(\d+)samples/,&#xD;	            method: function (value) {&#xD;	                return parseInt(value) / this.context.sampleRate;&#xD;	            }&#xD;	        },&#xD;	        &apos;default&apos;: {&#xD;	            regexp: /^(\d+(?:\.\d+)?)/,&#xD;	            method: function (value) {&#xD;	                return this._primaryExpressions[this._defaultUnits].method.call(this, value);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  All the binary expressions that TimeBase can accept.&#xD;		 *  @private&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.TimeBase.prototype._binaryExpressions = {&#xD;	        &apos;+&apos;: {&#xD;	            regexp: /^\+/,&#xD;	            precedence: 2,&#xD;	            method: function (lh, rh) {&#xD;	                return lh() + rh();&#xD;	            }&#xD;	        },&#xD;	        &apos;-&apos;: {&#xD;	            regexp: /^\-/,&#xD;	            precedence: 2,&#xD;	            method: function (lh, rh) {&#xD;	                return lh() - rh();&#xD;	            }&#xD;	        },&#xD;	        &apos;*&apos;: {&#xD;	            regexp: /^\*/,&#xD;	            precedence: 1,&#xD;	            method: function (lh, rh) {&#xD;	                return lh() * rh();&#xD;	            }&#xD;	        },&#xD;	        &apos;/&apos;: {&#xD;	            regexp: /^\//,&#xD;	            precedence: 1,&#xD;	            method: function (lh, rh) {&#xD;	                return lh() / rh();&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  All the unary expressions.&#xD;		 *  @private&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.TimeBase.prototype._unaryExpressions = {&#xD;	        &apos;neg&apos;: {&#xD;	            regexp: /^\-/,&#xD;	            method: function (lh) {&#xD;	                return -lh();&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Syntactic glue which holds expressions together&#xD;		 *  @private&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.TimeBase.prototype._syntaxGlue = {&#xD;	        &apos;(&apos;: { regexp: /^\(/ },&#xD;	        &apos;)&apos;: { regexp: /^\)/ }&#xD;	    };&#xD;	    /**&#xD;		 *  tokenize the expression based on the Expressions object&#xD;		 *  @param   {string} expr &#xD;		 *  @return  {Object}      returns two methods on the tokenized list, next and peek&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._tokenize = function (expr) {&#xD;	        var position = -1;&#xD;	        var tokens = [];&#xD;	        while (expr.length &gt; 0) {&#xD;	            expr = expr.trim();&#xD;	            var token = getNextToken(expr, this);&#xD;	            tokens.push(token);&#xD;	            expr = expr.substr(token.value.length);&#xD;	        }&#xD;	        function getNextToken(expr, context) {&#xD;	            var expressions = [&#xD;	                &apos;_binaryExpressions&apos;,&#xD;	                &apos;_unaryExpressions&apos;,&#xD;	                &apos;_primaryExpressions&apos;,&#xD;	                &apos;_syntaxGlue&apos;&#xD;	            ];&#xD;	            for (var i = 0; i &lt; expressions.length; i++) {&#xD;	                var group = context[expressions[i]];&#xD;	                for (var opName in group) {&#xD;	                    var op = group[opName];&#xD;	                    var reg = op.regexp;&#xD;	                    var match = expr.match(reg);&#xD;	                    if (match !== null) {&#xD;	                        return {&#xD;	                            method: op.method,&#xD;	                            precedence: op.precedence,&#xD;	                            regexp: op.regexp,&#xD;	                            value: match[0]&#xD;	                        };&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	            throw new SyntaxError(&apos;Tone.TimeBase: Unexpected token &apos; + expr);&#xD;	        }&#xD;	        return {&#xD;	            next: function () {&#xD;	                return tokens[++position];&#xD;	            },&#xD;	            peek: function () {&#xD;	                return tokens[position + 1];&#xD;	            }&#xD;	        };&#xD;	    };&#xD;	    /**&#xD;		 *  Given a token, find the value within the groupName&#xD;		 *  @param {Object} token&#xD;		 *  @param {String} groupName&#xD;		 *  @param {Number} precedence&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._matchGroup = function (token, group, prec) {&#xD;	        var ret = false;&#xD;	        if (!this.isUndef(token)) {&#xD;	            for (var opName in group) {&#xD;	                var op = group[opName];&#xD;	                if (op.regexp.test(token.value)) {&#xD;	                    if (!this.isUndef(prec)) {&#xD;	                        if (op.precedence === prec) {&#xD;	                            return op;&#xD;	                        }&#xD;	                    } else {&#xD;	                        return op;&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return ret;&#xD;	    };&#xD;	    /**&#xD;		 *  Match a binary expression given the token and the precedence&#xD;		 *  @param {Lexer} lexer&#xD;		 *  @param {Number} precedence&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._parseBinary = function (lexer, precedence) {&#xD;	        if (this.isUndef(precedence)) {&#xD;	            precedence = 2;&#xD;	        }&#xD;	        var expr;&#xD;	        if (precedence &lt; 0) {&#xD;	            expr = this._parseUnary(lexer);&#xD;	        } else {&#xD;	            expr = this._parseBinary(lexer, precedence - 1);&#xD;	        }&#xD;	        var token = lexer.peek();&#xD;	        while (token &amp;&amp; this._matchGroup(token, this._binaryExpressions, precedence)) {&#xD;	            token = lexer.next();&#xD;	            expr = token.method.bind(this, expr, this._parseBinary(lexer, precedence - 1));&#xD;	            token = lexer.peek();&#xD;	        }&#xD;	        return expr;&#xD;	    };&#xD;	    /**&#xD;		 *  Match a unary expression.&#xD;		 *  @param {Lexer} lexer&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._parseUnary = function (lexer) {&#xD;	        var token, expr;&#xD;	        token = lexer.peek();&#xD;	        var op = this._matchGroup(token, this._unaryExpressions);&#xD;	        if (op) {&#xD;	            token = lexer.next();&#xD;	            expr = this._parseUnary(lexer);&#xD;	            return op.method.bind(this, expr);&#xD;	        }&#xD;	        return this._parsePrimary(lexer);&#xD;	    };&#xD;	    /**&#xD;		 *  Match a primary expression (a value).&#xD;		 *  @param {Lexer} lexer&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._parsePrimary = function (lexer) {&#xD;	        var token, expr;&#xD;	        token = lexer.peek();&#xD;	        if (this.isUndef(token)) {&#xD;	            throw new SyntaxError(&apos;Tone.TimeBase: Unexpected end of expression&apos;);&#xD;	        }&#xD;	        if (this._matchGroup(token, this._primaryExpressions)) {&#xD;	            token = lexer.next();&#xD;	            var matching = token.value.match(token.regexp);&#xD;	            return token.method.bind(this, matching[1], matching[2], matching[3]);&#xD;	        }&#xD;	        if (token &amp;&amp; token.value === &apos;(&apos;) {&#xD;	            lexer.next();&#xD;	            expr = this._parseBinary(lexer);&#xD;	            token = lexer.next();&#xD;	            if (!(token &amp;&amp; token.value === &apos;)&apos;)) {&#xD;	                throw new SyntaxError(&apos;Expected )&apos;);&#xD;	            }&#xD;	            return expr;&#xD;	        }&#xD;	        throw new SyntaxError(&apos;Tone.TimeBase: Cannot process token &apos; + token.value);&#xD;	    };&#xD;	    /**&#xD;		 *  Recursively parse the string expression into a syntax tree.&#xD;		 *  @param   {string} expr &#xD;		 *  @return  {Function} the bound method to be evaluated later&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._parseExprString = function (exprString) {&#xD;	        if (!this.isString(exprString)) {&#xD;	            exprString = exprString.toString();&#xD;	        }&#xD;	        var lexer = this._tokenize(exprString);&#xD;	        var tree = this._parseBinary(lexer);&#xD;	        return tree;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	DEFAULTS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  The initial expression value&#xD;		 *  @return  {Number}  The initial value 0&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._noOp = function () {&#xD;	        return 0;&#xD;	    };&#xD;	    /**&#xD;		 *  The default expression value if no arguments are given&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._defaultExpr = function () {&#xD;	        return this._noOp;&#xD;	    };&#xD;	    /**&#xD;		 *  The default units if none are given.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._defaultUnits = &apos;s&apos;;&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	UNIT CONVERSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Returns the value of a frequency in the current units&#xD;		 *  @param {Frequency} freq&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._frequencyToUnits = function (freq) {&#xD;	        return 1 / freq;&#xD;	    };&#xD;	    /**&#xD;		 *  Return the value of the beats in the current units&#xD;		 *  @param {Number} beats&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._beatsToUnits = function (beats) {&#xD;	        return 60 / Tone.Transport.bpm.value * beats;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the value of a second in the current units&#xD;		 *  @param {Seconds} seconds&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._secondsToUnits = function (seconds) {&#xD;	        return seconds;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the value of a tick in the current time units&#xD;		 *  @param {Ticks} ticks&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._ticksToUnits = function (ticks) {&#xD;	        return ticks * (this._beatsToUnits(1) / Tone.Transport.PPQ);&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time signature.&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._timeSignature = function () {&#xD;	        return Tone.Transport.timeSignature;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	EXPRESSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Push an expression onto the expression list&#xD;		 *  @param  {Time}  val&#xD;		 *  @param  {String}  type&#xD;		 *  @param  {String}  units&#xD;		 *  @return  {Tone.TimeBase} &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimeBase.prototype._pushExpr = function (val, name, units) {&#xD;	        //create the expression&#xD;	        if (!(val instanceof Tone.TimeBase)) {&#xD;	            val = new this.constructor(val, units);&#xD;	        }&#xD;	        this._expr = this._binaryExpressions[name].method.bind(this, this._expr, val._expr);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Add to the current value.&#xD;		 *  @param  {Time}  val    The value to add&#xD;		 *  @param  {String=}  units  Optional units to use with the value.&#xD;		 *  @return  {Tone.TimeBase}  this&#xD;		 *  @example&#xD;		 * Tone.TimeBase("2m").add("1m"); //"3m"&#xD;		 */&#xD;	    Tone.TimeBase.prototype.add = function (val, units) {&#xD;	        return this._pushExpr(val, &apos;+&apos;, units);&#xD;	    };&#xD;	    /**&#xD;		 *  Subtract the value from the current time.&#xD;		 *  @param  {Time}  val    The value to subtract&#xD;		 *  @param  {String=}  units  Optional units to use with the value.&#xD;		 *  @return  {Tone.TimeBase}  this&#xD;		 *  @example&#xD;		 * Tone.TimeBase("2m").sub("1m"); //"1m"&#xD;		 */&#xD;	    Tone.TimeBase.prototype.sub = function (val, units) {&#xD;	        return this._pushExpr(val, &apos;-&apos;, units);&#xD;	    };&#xD;	    /**&#xD;		 *  Multiply the current value by the given time.&#xD;		 *  @param  {Time}  val    The value to multiply&#xD;		 *  @param  {String=}  units  Optional units to use with the value.&#xD;		 *  @return  {Tone.TimeBase}  this&#xD;		 *  @example&#xD;		 * Tone.TimeBase("2m").mult("2"); //"4m"&#xD;		 */&#xD;	    Tone.TimeBase.prototype.mult = function (val, units) {&#xD;	        return this._pushExpr(val, &apos;*&apos;, units);&#xD;	    };&#xD;	    /**&#xD;		 *  Divide the current value by the given time.&#xD;		 *  @param  {Time}  val    The value to divide by&#xD;		 *  @param  {String=}  units  Optional units to use with the value.&#xD;		 *  @return  {Tone.TimeBase}  this&#xD;		 *  @example&#xD;		 * Tone.TimeBase("2m").div(2); //"1m"&#xD;		 */&#xD;	    Tone.TimeBase.prototype.div = function (val, units) {&#xD;	        return this._pushExpr(val, &apos;/&apos;, units);&#xD;	    };&#xD;	    /**&#xD;		 *  Evaluate the time value. Returns the time&#xD;		 *  in seconds.&#xD;		 *  @return  {Seconds} &#xD;		 */&#xD;	    Tone.TimeBase.prototype.eval = function () {&#xD;	        return this._expr();&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return {Tone.TimeBase} this&#xD;		 */&#xD;	    Tone.TimeBase.prototype.dispose = function () {&#xD;	        this._expr = null;&#xD;	    };&#xD;	    return Tone.TimeBase;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.Time is a primitive type for encoding Time values. &#xD;		 *         Eventually all time values are evaluated to seconds&#xD;		 *         using the `eval` method. Tone.Time can be constructed&#xD;		 *         with or without the `new` keyword. Tone.Time can be passed&#xD;		 *         into the parameter of any method which takes time as an argument. &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.TimeBase}&#xD;		 *  @param  {String|Number}  val    The time value.&#xD;		 *  @param  {String=}  units  The units of the value.&#xD;		 *  @example&#xD;		 * var t = Tone.Time("4n");//encodes a quarter note&#xD;		 * t.mult(4); // multiply that value by 4&#xD;		 * t.toNotation(); //returns "1m"&#xD;		 */&#xD;	    Tone.Time = function (val, units) {&#xD;	        if (this instanceof Tone.Time) {&#xD;	            /**&#xD;				 *  If the current clock time should&#xD;				 *  be added to the output&#xD;				 *  @type  {Boolean}&#xD;				 *  @private&#xD;				 */&#xD;	            this._plusNow = false;&#xD;	            Tone.TimeBase.call(this, val, units);&#xD;	        } else {&#xD;	            return new Tone.Time(val, units);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Time, Tone.TimeBase);&#xD;	    //clone the expressions so that &#xD;	    //we can add more without modifying the original&#xD;	    Tone.Time.prototype._unaryExpressions = Object.create(Tone.TimeBase.prototype._unaryExpressions);&#xD;	    /*&#xD;		 *  Adds an additional unary expression&#xD;		 *  which quantizes values to the next subdivision&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Time.prototype._unaryExpressions.quantize = {&#xD;	        regexp: /^@/,&#xD;	        method: function (rh) {&#xD;	            return Tone.Transport.nextSubdivision(rh());&#xD;	        }&#xD;	    };&#xD;	    /*&#xD;		 *  Adds an additional unary expression&#xD;		 *  which adds the current clock time.&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Time.prototype._unaryExpressions.now = {&#xD;	        regexp: /^\+/,&#xD;	        method: function (lh) {&#xD;	            this._plusNow = true;&#xD;	            return lh();&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Quantize the time by the given subdivision. Optionally add a&#xD;		 *  percentage which will move the time value towards the ideal&#xD;		 *  quantized value by that percentage. &#xD;		 *  @param  {Number|Time}  val    The subdivision to quantize to&#xD;		 *  @param  {NormalRange}  [percent=1]  Move the time value&#xD;		 *                                   towards the quantized value by&#xD;		 *                                   a percentage.&#xD;		 *  @return  {Tone.Time}  this&#xD;		 *  @example&#xD;		 * Tone.Time(21).quantize(2).eval() //returns 22&#xD;		 * Tone.Time(0.6).quantize("4n", 0.5).eval() //returns 0.55&#xD;		 */&#xD;	    Tone.Time.prototype.quantize = function (subdiv, percent) {&#xD;	        percent = this.defaultArg(percent, 1);&#xD;	        this._expr = function (expr, subdivision, percent) {&#xD;	            expr = expr();&#xD;	            subdivision = subdivision.toSeconds();&#xD;	            var multiple = Math.round(expr / subdivision);&#xD;	            var ideal = multiple * subdivision;&#xD;	            var diff = ideal - expr;&#xD;	            return expr + diff * percent;&#xD;	        }.bind(this, this._expr, new this.constructor(subdiv), percent);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Adds the clock time to the time expression at the &#xD;		 *  moment of evaluation. &#xD;		 *  @return  {Tone.Time}  this&#xD;		 */&#xD;	    Tone.Time.prototype.addNow = function () {&#xD;	        this._plusNow = true;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  @override&#xD;		 *  Override the default value return when no arguments are passed in.&#xD;		 *  The default value is &apos;now&apos;&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Time.prototype._defaultExpr = function () {&#xD;	        this._plusNow = true;&#xD;	        return this._noOp;&#xD;	    };&#xD;	    /**&#xD;		 *  Copies the value of time to this Time&#xD;		 *  @param {Tone.Time} time&#xD;		 *  @return  {Time}&#xD;		 */&#xD;	    Tone.Time.prototype.copy = function (time) {&#xD;	        Tone.TimeBase.prototype.copy.call(this, time);&#xD;	        this._plusNow = time._plusNow;&#xD;	        return this;&#xD;	    };&#xD;	    //CONVERSIONS//////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Convert a Time to Notation. Values will be thresholded to the nearest 128th note. &#xD;		 *  @return {Notation} &#xD;		 *  @example&#xD;		 * //if the Transport is at 120bpm:&#xD;		 * Tone.Time(2).toNotation();//returns "1m"&#xD;		 */&#xD;	    Tone.Time.prototype.toNotation = function () {&#xD;	        var time = this.toSeconds();&#xD;	        var testNotations = [&#xD;	            &apos;1m&apos;,&#xD;	            &apos;2n&apos;,&#xD;	            &apos;4n&apos;,&#xD;	            &apos;8n&apos;,&#xD;	            &apos;16n&apos;,&#xD;	            &apos;32n&apos;,&#xD;	            &apos;64n&apos;,&#xD;	            &apos;128n&apos;&#xD;	        ];&#xD;	        var retNotation = this._toNotationHelper(time, testNotations);&#xD;	        //try the same thing but with tripelets&#xD;	        var testTripletNotations = [&#xD;	            &apos;1m&apos;,&#xD;	            &apos;2n&apos;,&#xD;	            &apos;2t&apos;,&#xD;	            &apos;4n&apos;,&#xD;	            &apos;4t&apos;,&#xD;	            &apos;8n&apos;,&#xD;	            &apos;8t&apos;,&#xD;	            &apos;16n&apos;,&#xD;	            &apos;16t&apos;,&#xD;	            &apos;32n&apos;,&#xD;	            &apos;32t&apos;,&#xD;	            &apos;64n&apos;,&#xD;	            &apos;64t&apos;,&#xD;	            &apos;128n&apos;&#xD;	        ];&#xD;	        var retTripletNotation = this._toNotationHelper(time, testTripletNotations);&#xD;	        //choose the simpler expression of the two&#xD;	        if (retTripletNotation.split(&apos;+&apos;).length &lt; retNotation.split(&apos;+&apos;).length) {&#xD;	            return retTripletNotation;&#xD;	        } else {&#xD;	            return retNotation;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Helper method for Tone.toNotation&#xD;		 *  @param {Number} units &#xD;		 *  @param {Array} testNotations&#xD;		 *  @return {String}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Time.prototype._toNotationHelper = function (units, testNotations) {&#xD;	        //the threshold is the last value in the array&#xD;	        var threshold = this._notationToUnits(testNotations[testNotations.length - 1]);&#xD;	        var retNotation = &apos;&apos;;&#xD;	        for (var i = 0; i &lt; testNotations.length; i++) {&#xD;	            var notationTime = this._notationToUnits(testNotations[i]);&#xD;	            //account for floating point errors (i.e. round up if the value is 0.999999)&#xD;	            var multiple = units / notationTime;&#xD;	            var floatingPointError = 0.000001;&#xD;	            if (1 - multiple % 1 &lt; floatingPointError) {&#xD;	                multiple += floatingPointError;&#xD;	            }&#xD;	            multiple = Math.floor(multiple);&#xD;	            if (multiple &gt; 0) {&#xD;	                if (multiple === 1) {&#xD;	                    retNotation += testNotations[i];&#xD;	                } else {&#xD;	                    retNotation += multiple.toString() + &apos;*&apos; + testNotations[i];&#xD;	                }&#xD;	                units -= multiple * notationTime;&#xD;	                if (units &lt; threshold) {&#xD;	                    break;&#xD;	                } else {&#xD;	                    retNotation += &apos; + &apos;;&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        if (retNotation === &apos;&apos;) {&#xD;	            retNotation = &apos;0&apos;;&#xD;	        }&#xD;	        return retNotation;&#xD;	    };&#xD;	    /**&#xD;		 *  Convert a notation value to the current units&#xD;		 *  @param  {Notation}  notation &#xD;		 *  @return  {Number} &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Time.prototype._notationToUnits = function (notation) {&#xD;	        var primaryExprs = this._primaryExpressions;&#xD;	        var notationExprs = [&#xD;	            primaryExprs.n,&#xD;	            primaryExprs.t,&#xD;	            primaryExprs.m&#xD;	        ];&#xD;	        for (var i = 0; i &lt; notationExprs.length; i++) {&#xD;	            var expr = notationExprs[i];&#xD;	            var match = notation.match(expr.regexp);&#xD;	            if (match) {&#xD;	                return expr.method.call(this, match[1]);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time encoded as Bars:Beats:Sixteenths.&#xD;		 *  @return  {BarsBeatsSixteenths}&#xD;		 */&#xD;	    Tone.Time.prototype.toBarsBeatsSixteenths = function () {&#xD;	        var quarterTime = this._beatsToUnits(1);&#xD;	        var quarters = this.toSeconds() / quarterTime;&#xD;	        var measures = Math.floor(quarters / this._timeSignature());&#xD;	        var sixteenths = quarters % 1 * 4;&#xD;	        quarters = Math.floor(quarters) % this._timeSignature();&#xD;	        sixteenths = sixteenths.toString();&#xD;	        if (sixteenths.length &gt; 3) {&#xD;	            sixteenths = parseFloat(sixteenths).toFixed(3);&#xD;	        }&#xD;	        var progress = [&#xD;	            measures,&#xD;	            quarters,&#xD;	            sixteenths&#xD;	        ];&#xD;	        return progress.join(&apos;:&apos;);&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in ticks.&#xD;		 *  @return  {Ticks}&#xD;		 */&#xD;	    Tone.Time.prototype.toTicks = function () {&#xD;	        var quarterTime = this._beatsToUnits(1);&#xD;	        var quarters = this.eval() / quarterTime;&#xD;	        return Math.floor(quarters * Tone.Transport.PPQ);&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in samples&#xD;		 *  @return  {Samples}  &#xD;		 */&#xD;	    Tone.Time.prototype.toSamples = function () {&#xD;	        return this.toSeconds() * this.context.sampleRate;&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time as a frequency value&#xD;		 *  @return  {Frequency} &#xD;		 *  @example&#xD;		 * Tone.Time(2).toFrequency(); //0.5&#xD;		 */&#xD;	    Tone.Time.prototype.toFrequency = function () {&#xD;	        return 1 / this.toSeconds();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in seconds.&#xD;		 *  @return  {Seconds} &#xD;		 */&#xD;	    Tone.Time.prototype.toSeconds = function () {&#xD;	        return this.eval();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in milliseconds.&#xD;		 *  @return  {Milliseconds} &#xD;		 */&#xD;	    Tone.Time.prototype.toMilliseconds = function () {&#xD;	        return this.toSeconds() * 1000;&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in seconds.&#xD;		 *  @return  {Seconds} &#xD;		 */&#xD;	    Tone.Time.prototype.eval = function () {&#xD;	        var val = this._expr();&#xD;	        return val + (this._plusNow ? this.now() : 0);&#xD;	    };&#xD;	    return Tone.Time;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.Frequency is a primitive type for encoding Frequency values. &#xD;		 *         Eventually all time values are evaluated to hertz&#xD;		 *         using the `eval` method. &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.TimeBase}&#xD;		 *  @param  {String|Number}  val    The time value.&#xD;		 *  @param  {String=}  units  The units of the value.&#xD;		 *  @example&#xD;		 * Tone.Frequency("C3").eval() // 261&#xD;		 * Tone.Frequency(38, "midi").eval() //&#xD;		 * Tone.Frequency("C3").transpose(4).eval();&#xD;		 */&#xD;	    Tone.Frequency = function (val, units) {&#xD;	        if (this instanceof Tone.Frequency) {&#xD;	            Tone.TimeBase.call(this, val, units);&#xD;	        } else {&#xD;	            return new Tone.Frequency(val, units);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Frequency, Tone.TimeBase);&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	AUGMENT BASE EXPRESSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //clone the expressions so that &#xD;	    //we can add more without modifying the original&#xD;	    Tone.Frequency.prototype._primaryExpressions = Object.create(Tone.TimeBase.prototype._primaryExpressions);&#xD;	    /*&#xD;		 *  midi type primary expression&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._primaryExpressions.midi = {&#xD;	        regexp: /^(\d+(?:\.\d+)?midi)/,&#xD;	        method: function (value) {&#xD;	            return this.midiToFrequency(value);&#xD;	        }&#xD;	    };&#xD;	    /*&#xD;		 *  note type primary expression&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._primaryExpressions.note = {&#xD;	        regexp: /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,&#xD;	        method: function (pitch, octave) {&#xD;	            var index = noteToScaleIndex[pitch.toLowerCase()];&#xD;	            var noteNumber = index + (parseInt(octave) + 1) * 12;&#xD;	            return this.midiToFrequency(noteNumber);&#xD;	        }&#xD;	    };&#xD;	    /*&#xD;		 *  BeatsBarsSixteenths type primary expression&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._primaryExpressions.tr = {&#xD;	        regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/,&#xD;	        method: function (m, q, s) {&#xD;	            var total = 1;&#xD;	            if (m &amp;&amp; m !== &apos;0&apos;) {&#xD;	                total *= this._beatsToUnits(this._timeSignature() * parseFloat(m));&#xD;	            }&#xD;	            if (q &amp;&amp; q !== &apos;0&apos;) {&#xD;	                total *= this._beatsToUnits(parseFloat(q));&#xD;	            }&#xD;	            if (s &amp;&amp; s !== &apos;0&apos;) {&#xD;	                total *= this._beatsToUnits(parseFloat(s) / 4);&#xD;	            }&#xD;	            return total;&#xD;	        }&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	EXPRESSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Transposes the frequency by the given number of semitones.&#xD;		 *  @param  {Interval}  interval&#xD;		 *  @return  {Tone.Frequency} this&#xD;		 *  @example&#xD;		 * Tone.Frequency("A4").transpose(3); //"C5"&#xD;		 */&#xD;	    Tone.Frequency.prototype.transpose = function (interval) {&#xD;	        this._expr = function (expr, interval) {&#xD;	            var val = expr();&#xD;	            return val * this.intervalToFrequencyRatio(interval);&#xD;	        }.bind(this, this._expr, interval);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Takes an array of semitone intervals and returns&#xD;		 *  an array of frequencies transposed by those intervals.&#xD;		 *  @param  {Array}  intervals&#xD;		 *  @return  {Tone.Frequency} this&#xD;		 *  @example&#xD;		 * Tone.Frequency("A4").harmonize([0, 3, 7]); //["A4", "C5", "E5"]&#xD;		 */&#xD;	    Tone.Frequency.prototype.harmonize = function (intervals) {&#xD;	        this._expr = function (expr, intervals) {&#xD;	            var val = expr();&#xD;	            var ret = [];&#xD;	            for (var i = 0; i &lt; intervals.length; i++) {&#xD;	                ret[i] = val * this.intervalToFrequencyRatio(intervals[i]);&#xD;	            }&#xD;	            return ret;&#xD;	        }.bind(this, this._expr, intervals);&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	UNIT CONVERSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Return the value of the frequency as a MIDI note&#xD;		 *  @return  {MIDI}&#xD;		 *  @example&#xD;		 * Tone.Frequency("C4").toMidi(); //60&#xD;		 */&#xD;	    Tone.Frequency.prototype.toMidi = function () {&#xD;	        return this.frequencyToMidi(this.eval());&#xD;	    };&#xD;	    /**&#xD;		 *  Return the value of the frequency in Scientific Pitch Notation&#xD;		 *  @return  {Note}&#xD;		 *  @example&#xD;		 * Tone.Frequency(69, "midi").toNote(); //"A4"&#xD;		 */&#xD;	    Tone.Frequency.prototype.toNote = function () {&#xD;	        var freq = this.eval();&#xD;	        var log = Math.log(freq / Tone.Frequency.A4) / Math.LN2;&#xD;	        var noteNumber = Math.round(12 * log) + 57;&#xD;	        var octave = Math.floor(noteNumber / 12);&#xD;	        if (octave &lt; 0) {&#xD;	            noteNumber += -12 * octave;&#xD;	        }&#xD;	        var noteName = scaleIndexToNote[noteNumber % 12];&#xD;	        return noteName + octave.toString();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the duration of one cycle in seconds.&#xD;		 *  @return  {Seconds}&#xD;		 */&#xD;	    Tone.Frequency.prototype.toSeconds = function () {&#xD;	        return 1 / this.eval();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the value in Hertz&#xD;		 *  @return  {Frequency}&#xD;		 */&#xD;	    Tone.Frequency.prototype.toFrequency = function () {&#xD;	        return this.eval();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the duration of one cycle in ticks&#xD;		 *  @return  {Ticks}&#xD;		 */&#xD;	    Tone.Frequency.prototype.toTicks = function () {&#xD;	        var quarterTime = this._beatsToUnits(1);&#xD;	        var quarters = this.eval() / quarterTime;&#xD;	        return Math.floor(quarters * Tone.Transport.PPQ);&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	UNIT CONVERSIONS HELPERS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Returns the value of a frequency in the current units&#xD;		 *  @param {Frequency} freq&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._frequencyToUnits = function (freq) {&#xD;	        return freq;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the value of a tick in the current time units&#xD;		 *  @param {Ticks} ticks&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._ticksToUnits = function (ticks) {&#xD;	        return 1 / (ticks * 60 / (Tone.Transport.bpm.value * Tone.Transport.PPQ));&#xD;	    };&#xD;	    /**&#xD;		 *  Return the value of the beats in the current units&#xD;		 *  @param {Number} beats&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._beatsToUnits = function (beats) {&#xD;	        return 1 / Tone.TimeBase.prototype._beatsToUnits.call(this, beats);&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the value of a second in the current units&#xD;		 *  @param {Seconds} seconds&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._secondsToUnits = function (seconds) {&#xD;	        return 1 / seconds;&#xD;	    };&#xD;	    /**&#xD;		 *  The default units if none are given.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Frequency.prototype._defaultUnits = &apos;hz&apos;;&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	FREQUENCY CONVERSIONS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Note to scale index&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    var noteToScaleIndex = {&#xD;	        &apos;cbb&apos;: -2,&#xD;	        &apos;cb&apos;: -1,&#xD;	        &apos;c&apos;: 0,&#xD;	        &apos;c#&apos;: 1,&#xD;	        &apos;cx&apos;: 2,&#xD;	        &apos;dbb&apos;: 0,&#xD;	        &apos;db&apos;: 1,&#xD;	        &apos;d&apos;: 2,&#xD;	        &apos;d#&apos;: 3,&#xD;	        &apos;dx&apos;: 4,&#xD;	        &apos;ebb&apos;: 2,&#xD;	        &apos;eb&apos;: 3,&#xD;	        &apos;e&apos;: 4,&#xD;	        &apos;e#&apos;: 5,&#xD;	        &apos;ex&apos;: 6,&#xD;	        &apos;fbb&apos;: 3,&#xD;	        &apos;fb&apos;: 4,&#xD;	        &apos;f&apos;: 5,&#xD;	        &apos;f#&apos;: 6,&#xD;	        &apos;fx&apos;: 7,&#xD;	        &apos;gbb&apos;: 5,&#xD;	        &apos;gb&apos;: 6,&#xD;	        &apos;g&apos;: 7,&#xD;	        &apos;g#&apos;: 8,&#xD;	        &apos;gx&apos;: 9,&#xD;	        &apos;abb&apos;: 7,&#xD;	        &apos;ab&apos;: 8,&#xD;	        &apos;a&apos;: 9,&#xD;	        &apos;a#&apos;: 10,&#xD;	        &apos;ax&apos;: 11,&#xD;	        &apos;bbb&apos;: 9,&#xD;	        &apos;bb&apos;: 10,&#xD;	        &apos;b&apos;: 11,&#xD;	        &apos;b#&apos;: 12,&#xD;	        &apos;bx&apos;: 13&#xD;	    };&#xD;	    /**&#xD;		 *  scale index to note (sharps)&#xD;		 *  @type  {Array}&#xD;		 */&#xD;	    var scaleIndexToNote = [&#xD;	        &apos;C&apos;,&#xD;	        &apos;C#&apos;,&#xD;	        &apos;D&apos;,&#xD;	        &apos;D#&apos;,&#xD;	        &apos;E&apos;,&#xD;	        &apos;F&apos;,&#xD;	        &apos;F#&apos;,&#xD;	        &apos;G&apos;,&#xD;	        &apos;G#&apos;,&#xD;	        &apos;A&apos;,&#xD;	        &apos;A#&apos;,&#xD;	        &apos;B&apos;&#xD;	    ];&#xD;	    /**&#xD;		 *  The [concert pitch](https://en.wikipedia.org/wiki/Concert_pitch)&#xD;		 *  A4&apos;s values in Hertz. &#xD;		 *  @type {Frequency}&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Frequency.A4 = 440;&#xD;	    /**&#xD;		 *  Convert a MIDI note to frequency value. &#xD;		 *  @param  {MIDI} midi The midi number to convert.&#xD;		 *  @return {Frequency} the corresponding frequency value&#xD;		 *  @example&#xD;		 * tone.midiToFrequency(69); // returns 440&#xD;		 */&#xD;	    Tone.Frequency.prototype.midiToFrequency = function (midi) {&#xD;	        return Tone.Frequency.A4 * Math.pow(2, (midi - 69) / 12);&#xD;	    };&#xD;	    /**&#xD;		 *  Convert a frequency value to a MIDI note.&#xD;		 *  @param {Frequency} frequency The value to frequency value to convert.&#xD;		 *  @returns  {MIDI}&#xD;		 *  @example&#xD;		 * tone.midiToFrequency(440); // returns 69&#xD;		 */&#xD;	    Tone.Frequency.prototype.frequencyToMidi = function (frequency) {&#xD;	        return 69 + 12 * Math.log(frequency / Tone.Frequency.A4) / Math.LN2;&#xD;	    };&#xD;	    return Tone.Frequency;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.TransportTime is a the time along the Transport&apos;s&#xD;		 *         timeline. It is similar to Tone.Time, but instead of evaluating&#xD;		 *         against the AudioContext&apos;s clock, it is evaluated against&#xD;		 *         the Transport&apos;s position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime).&#xD;		 *  @constructor&#xD;		 *  @param  {Time}  val    The time value as a number or string&#xD;		 *  @param  {String=}  units  Unit values&#xD;		 *  @extends {Tone.Time}&#xD;		 */&#xD;	    Tone.TransportTime = function (val, units) {&#xD;	        if (this instanceof Tone.TransportTime) {&#xD;	            Tone.Time.call(this, val, units);&#xD;	        } else {&#xD;	            return new Tone.TransportTime(val, units);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.TransportTime, Tone.Time);&#xD;	    //clone the expressions so that &#xD;	    //we can add more without modifying the original&#xD;	    Tone.TransportTime.prototype._unaryExpressions = Object.create(Tone.Time.prototype._unaryExpressions);&#xD;	    /**&#xD;		 *  Adds an additional unary expression&#xD;		 *  which quantizes values to the next subdivision&#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TransportTime.prototype._unaryExpressions.quantize = {&#xD;	        regexp: /^@/,&#xD;	        method: function (rh) {&#xD;	            var subdivision = this._secondsToTicks(rh());&#xD;	            var multiple = Math.ceil(Tone.Transport.ticks / subdivision);&#xD;	            return this._ticksToUnits(multiple * subdivision);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Convert seconds into ticks&#xD;		 *  @param {Seconds} seconds&#xD;		 *  @return  {Ticks}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TransportTime.prototype._secondsToTicks = function (seconds) {&#xD;	        var quarterTime = this._beatsToUnits(1);&#xD;	        var quarters = seconds / quarterTime;&#xD;	        return Math.round(quarters * Tone.Transport.PPQ);&#xD;	    };&#xD;	    /**&#xD;		 *  Evaluate the time expression. Returns values in ticks&#xD;		 *  @return {Ticks}&#xD;		 */&#xD;	    Tone.TransportTime.prototype.eval = function () {&#xD;	        var val = this._secondsToTicks(this._expr());&#xD;	        return val + (this._plusNow ? Tone.Transport.ticks : 0);&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in ticks.&#xD;		 *  @return  {Ticks}&#xD;		 */&#xD;	    Tone.TransportTime.prototype.toTicks = function () {&#xD;	        return this.eval();&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time in seconds.&#xD;		 *  @return  {Seconds}&#xD;		 */&#xD;	    Tone.TransportTime.prototype.toSeconds = function () {&#xD;	        var val = this._expr();&#xD;	        return val + (this._plusNow ? Tone.Transport.seconds : 0);&#xD;	    };&#xD;	    /**&#xD;		 *  Return the time as a frequency value&#xD;		 *  @return  {Frequency} &#xD;		 */&#xD;	    Tone.TransportTime.prototype.toFrequency = function () {&#xD;	        return 1 / this.toSeconds();&#xD;	    };&#xD;	    return Tone.TransportTime;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	TYPES&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 * Units which a value can take on.&#xD;		 * @enum {String}&#xD;		 */&#xD;	    Tone.Type = {&#xD;	        /** &#xD;			 *  Default units&#xD;			 *  @typedef {Default}&#xD;			 */&#xD;	        Default: &apos;number&apos;,&#xD;	        /**&#xD;			 *  Time can be described in a number of ways. Read more [Time](https://github.com/Tonejs/Tone.js/wiki/Time).&#xD;			 *&#xD;			 *  &lt;ul&gt;&#xD;			 *  &lt;li&gt;Numbers, which will be taken literally as the time (in seconds).&lt;/li&gt;&#xD;			 *  &lt;li&gt;Notation, ("4n", "8t") describes time in BPM and time signature relative values.&lt;/li&gt;&#xD;			 *  &lt;li&gt;TransportTime, ("4:3:2") will also provide tempo and time signature relative times &#xD;			 *  in the form BARS:QUARTERS:SIXTEENTHS.&lt;/li&gt;&#xD;			 *  &lt;li&gt;Frequency, ("8hz") is converted to the length of the cycle in seconds.&lt;/li&gt;&#xD;			 *  &lt;li&gt;Now-Relative, ("+1") prefix any of the above with "+" and it will be interpreted as &#xD;			 *  "the current time plus whatever expression follows".&lt;/li&gt;&#xD;			 *  &lt;li&gt;Expressions, ("3:0 + 2 - (1m / 7)") any of the above can also be combined &#xD;			 *  into a mathematical expression which will be evaluated to compute the desired time.&lt;/li&gt;&#xD;			 *  &lt;li&gt;No Argument, for methods which accept time, no argument will be interpreted as &#xD;			 *  "now" (i.e. the currentTime).&lt;/li&gt;&#xD;			 *  &lt;/ul&gt;&#xD;			 *  &#xD;			 *  @typedef {Time}&#xD;			 */&#xD;	        Time: &apos;time&apos;,&#xD;	        /**&#xD;			 *  Frequency can be described similar to time, except ultimately the&#xD;			 *  values are converted to frequency instead of seconds. A number&#xD;			 *  is taken literally as the value in hertz. Additionally any of the &#xD;			 *  Time encodings can be used. Note names in the form&#xD;			 *  of NOTE OCTAVE (i.e. C4) are also accepted and converted to their&#xD;			 *  frequency value. &#xD;			 *  @typedef {Frequency}&#xD;			 */&#xD;	        Frequency: &apos;frequency&apos;,&#xD;	        /**&#xD;			 *  TransportTime describes a position along the Transport&apos;s timeline. It is&#xD;			 *  similar to Time in that it uses all the same encodings, but TransportTime specifically&#xD;			 *  pertains to the Transport&apos;s timeline, which is startable, stoppable, loopable, and seekable. &#xD;			 *  [Read more](https://github.com/Tonejs/Tone.js/wiki/TransportTime)&#xD;			 *  @typedef {TransportTime}&#xD;			 */&#xD;	        TransportTime: &apos;transportTime&apos;,&#xD;	        /** &#xD;			 *  Ticks are the basic subunit of the Transport. They are&#xD;			 *  the smallest unit of time that the Transport supports.&#xD;			 *  @typedef {Ticks}&#xD;			 */&#xD;	        Ticks: &apos;ticks&apos;,&#xD;	        /** &#xD;			 *  Normal values are within the range [0, 1].&#xD;			 *  @typedef {NormalRange}&#xD;			 */&#xD;	        NormalRange: &apos;normalRange&apos;,&#xD;	        /** &#xD;			 *  AudioRange values are between [-1, 1].&#xD;			 *  @typedef {AudioRange}&#xD;			 */&#xD;	        AudioRange: &apos;audioRange&apos;,&#xD;	        /** &#xD;			 *  Decibels are a logarithmic unit of measurement which is useful for volume&#xD;			 *  because of the logarithmic way that we perceive loudness. 0 decibels &#xD;			 *  means no change in volume. -10db is approximately half as loud and 10db &#xD;			 *  is twice is loud. &#xD;			 *  @typedef {Decibels}&#xD;			 */&#xD;	        Decibels: &apos;db&apos;,&#xD;	        /** &#xD;			 *  Half-step note increments, i.e. 12 is an octave above the root. and 1 is a half-step up.&#xD;			 *  @typedef {Interval}&#xD;			 */&#xD;	        Interval: &apos;interval&apos;,&#xD;	        /** &#xD;			 *  Beats per minute. &#xD;			 *  @typedef {BPM}&#xD;			 */&#xD;	        BPM: &apos;bpm&apos;,&#xD;	        /** &#xD;			 *  The value must be greater than or equal to 0.&#xD;			 *  @typedef {Positive}&#xD;			 */&#xD;	        Positive: &apos;positive&apos;,&#xD;	        /** &#xD;			 *  A cent is a hundredth of a semitone. &#xD;			 *  @typedef {Cents}&#xD;			 */&#xD;	        Cents: &apos;cents&apos;,&#xD;	        /** &#xD;			 *  Angle between 0 and 360. &#xD;			 *  @typedef {Degrees}&#xD;			 */&#xD;	        Degrees: &apos;degrees&apos;,&#xD;	        /** &#xD;			 *  A number representing a midi note.&#xD;			 *  @typedef {MIDI}&#xD;			 */&#xD;	        MIDI: &apos;midi&apos;,&#xD;	        /** &#xD;			 *  A colon-separated representation of time in the form of&#xD;			 *  Bars:Beats:Sixteenths. &#xD;			 *  @typedef {BarsBeatsSixteenths}&#xD;			 */&#xD;	        BarsBeatsSixteenths: &apos;barsBeatsSixteenths&apos;,&#xD;	        /** &#xD;			 *  Sampling is the reduction of a continuous signal to a discrete signal.&#xD;			 *  Audio is typically sampled 44100 times per second. &#xD;			 *  @typedef {Samples}&#xD;			 */&#xD;	        Samples: &apos;samples&apos;,&#xD;	        /** &#xD;			 *  Hertz are a frequency representation defined as one cycle per second.&#xD;			 *  @typedef {Hertz}&#xD;			 */&#xD;	        Hertz: &apos;hertz&apos;,&#xD;	        /** &#xD;			 *  A frequency represented by a letter name, &#xD;			 *  accidental and octave. This system is known as&#xD;			 *  [Scientific Pitch Notation](https://en.wikipedia.org/wiki/Scientific_pitch_notation).&#xD;			 *  @typedef {Note}&#xD;			 */&#xD;	        Note: &apos;note&apos;,&#xD;	        /** &#xD;			 *  One millisecond is a thousandth of a second. &#xD;			 *  @typedef {Milliseconds}&#xD;			 */&#xD;	        Milliseconds: &apos;milliseconds&apos;,&#xD;	        /** &#xD;			 *  Seconds are the time unit of the AudioContext. In the end, &#xD;			 *  all values need to be evaluated to seconds. &#xD;			 *  @typedef {Seconds}&#xD;			 */&#xD;	        Seconds: &apos;seconds&apos;,&#xD;	        /** &#xD;			 *  A string representing a duration relative to a measure. &#xD;			 *  &lt;ul&gt;&#xD;			 *  	&lt;li&gt;"4n" = quarter note&lt;/li&gt;&#xD;			 *   	&lt;li&gt;"2m" = two measures&lt;/li&gt;&#xD;			 *    	&lt;li&gt;"8t" = eighth-note triplet&lt;/li&gt;&#xD;			 *  &lt;/ul&gt;&#xD;			 *  @typedef {Notation}&#xD;			 */&#xD;	        Notation: &apos;notation&apos;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // AUGMENT TONE&apos;s PROTOTYPE&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Convert Time into seconds.&#xD;		 *  &#xD;		 *  Unlike the method which it overrides, this takes into account &#xD;		 *  transporttime and musical notation.&#xD;		 *&#xD;		 *  Time : 1.40&#xD;		 *  Notation: 4n|1m|2t&#xD;		 *  Now Relative: +3n&#xD;		 *  Math: 3n+16n or even complicated expressions ((3n*2)/6 + 1)&#xD;		 *&#xD;		 *  @param  {Time} time &#xD;		 *  @return {Seconds} &#xD;		 */&#xD;	    Tone.prototype.toSeconds = function (time) {&#xD;	        if (this.isNumber(time)) {&#xD;	            return time;&#xD;	        } else if (this.isUndef(time)) {&#xD;	            return this.now();&#xD;	        } else if (this.isString(time)) {&#xD;	            return new Tone.Time(time).toSeconds();&#xD;	        } else if (time instanceof Tone.TimeBase) {&#xD;	            return time.toSeconds();&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Convert a frequency representation into a number.&#xD;		 *  @param  {Frequency} freq &#xD;		 *  @return {Hertz}      the frequency in hertz&#xD;		 */&#xD;	    Tone.prototype.toFrequency = function (freq) {&#xD;	        if (this.isNumber(freq)) {&#xD;	            return freq;&#xD;	        } else if (this.isString(freq) || this.isUndef(freq)) {&#xD;	            return new Tone.Frequency(freq).eval();&#xD;	        } else if (freq instanceof Tone.TimeBase) {&#xD;	            return freq.toFrequency();&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Convert a time representation into ticks.&#xD;		 *  @param  {Time} time&#xD;		 *  @return {Ticks}  the time in ticks&#xD;		 */&#xD;	    Tone.prototype.toTicks = function (time) {&#xD;	        if (this.isNumber(time) || this.isString(time)) {&#xD;	            return new Tone.TransportTime(time).toTicks();&#xD;	        } else if (this.isUndef(time)) {&#xD;	            return Tone.Transport.ticks;&#xD;	        } else if (time instanceof Tone.TimeBase) {&#xD;	            return time.toTicks();&#xD;	        }&#xD;	    };&#xD;	    return Tone;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Param wraps the native Web Audio&apos;s AudioParam to provide&#xD;		 *         additional unit conversion functionality. It also&#xD;		 *         serves as a base-class for classes which have a single,&#xD;		 *         automatable parameter. &#xD;		 *  @extends {Tone}&#xD;		 *  @param  {AudioParam}  param  The parameter to wrap.&#xD;		 *  @param  {Tone.Type} units The units of the audio param.&#xD;		 *  @param  {Boolean} convert If the param should be converted.&#xD;		 */&#xD;	    Tone.Param = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;param&apos;,&#xD;	            &apos;units&apos;,&#xD;	            &apos;convert&apos;&#xD;	        ], Tone.Param.defaults);&#xD;	        /**&#xD;			 *  The native parameter to control&#xD;			 *  @type  {AudioParam}&#xD;			 *  @private&#xD;			 */&#xD;	        this._param = this.input = options.param;&#xD;	        /**&#xD;			 *  The units of the parameter&#xD;			 *  @type {Tone.Type}&#xD;			 */&#xD;	        this.units = options.units;&#xD;	        /**&#xD;			 *  If the value should be converted or not&#xD;			 *  @type {Boolean}&#xD;			 */&#xD;	        this.convert = options.convert;&#xD;	        /**&#xD;			 *  True if the signal value is being overridden by &#xD;			 *  a connected signal.&#xD;			 *  @readOnly&#xD;			 *  @type  {boolean}&#xD;			 *  @private&#xD;			 */&#xD;	        this.overridden = false;&#xD;	        /**&#xD;			 *  If there is an LFO, this is where it is held.&#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfo = null;&#xD;	        if (this.isObject(options.lfo)) {&#xD;	            this.value = options.lfo;&#xD;	        } else if (!this.isUndef(options.value)) {&#xD;	            this.value = options.value;&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Param);&#xD;	    /**&#xD;		 *  Defaults&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Param.defaults = {&#xD;	        &apos;units&apos;: Tone.Type.Default,&#xD;	        &apos;convert&apos;: true,&#xD;	        &apos;param&apos;: undefined&#xD;	    };&#xD;	    /**&#xD;		 * The current value of the parameter. &#xD;		 * @memberOf Tone.Param#&#xD;		 * @type {Number}&#xD;		 * @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.Param.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            return this._toUnits(this._param.value);&#xD;	        },&#xD;	        set: function (value) {&#xD;	            if (this.isObject(value)) {&#xD;	                //throw an error if the LFO needs to be included&#xD;	                if (this.isUndef(Tone.LFO)) {&#xD;	                    throw new Error(&apos;Include \&apos;Tone.LFO\&apos; to use an LFO as a Param value.&apos;);&#xD;	                }&#xD;	                //remove the old one&#xD;	                if (this._lfo) {&#xD;	                    this._lfo.dispose();&#xD;	                }&#xD;	                this._lfo = new Tone.LFO(value).start();&#xD;	                this._lfo.connect(this.input);&#xD;	            } else {&#xD;	                var convertedVal = this._fromUnits(value);&#xD;	                this._param.cancelScheduledValues(0);&#xD;	                this._param.value = convertedVal;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Convert the given value from the type specified by Tone.Param.units&#xD;		 *  into the destination value (such as Gain or Frequency).&#xD;		 *  @private&#xD;		 *  @param  {*} val the value to convert&#xD;		 *  @return {number}     the number which the value should be set to&#xD;		 */&#xD;	    Tone.Param.prototype._fromUnits = function (val) {&#xD;	        if (this.convert || this.isUndef(this.convert)) {&#xD;	            switch (this.units) {&#xD;	            case Tone.Type.Time:&#xD;	                return this.toSeconds(val);&#xD;	            case Tone.Type.Frequency:&#xD;	                return this.toFrequency(val);&#xD;	            case Tone.Type.Decibels:&#xD;	                return this.dbToGain(val);&#xD;	            case Tone.Type.NormalRange:&#xD;	                return Math.min(Math.max(val, 0), 1);&#xD;	            case Tone.Type.AudioRange:&#xD;	                return Math.min(Math.max(val, -1), 1);&#xD;	            case Tone.Type.Positive:&#xD;	                return Math.max(val, 0);&#xD;	            default:&#xD;	                return val;&#xD;	            }&#xD;	        } else {&#xD;	            return val;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * Convert the parameters value into the units specified by Tone.Param.units.&#xD;		 * @private&#xD;		 * @param  {number} val the value to convert&#xD;		 * @return {number}&#xD;		 */&#xD;	    Tone.Param.prototype._toUnits = function (val) {&#xD;	        if (this.convert || this.isUndef(this.convert)) {&#xD;	            switch (this.units) {&#xD;	            case Tone.Type.Decibels:&#xD;	                return this.gainToDb(val);&#xD;	            default:&#xD;	                return val;&#xD;	            }&#xD;	        } else {&#xD;	            return val;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  the minimum output value&#xD;		 *  @type {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Param.prototype._minOutput = 0.00001;&#xD;	    /**&#xD;		 *  Schedules a parameter value change at the given time.&#xD;		 *  @param {*}	value The value to set the signal.&#xD;		 *  @param {Time}  time The time when the change should occur.&#xD;		 *  @returns {Tone.Param} this&#xD;		 *  @example&#xD;		 * //set the frequency to "G4" in exactly 1 second from now. &#xD;		 * freq.setValueAtTime("G4", "+1");&#xD;		 */&#xD;	    Tone.Param.prototype.setValueAtTime = function (value, time) {&#xD;	        value = this._fromUnits(value);&#xD;	        time = this.toSeconds(time);&#xD;	        if (time &lt;= this.now() + this.blockTime) {&#xD;	            this._param.value = value;&#xD;	        } else {&#xD;	            this._param.setValueAtTime(value, time);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Creates a schedule point with the current value at the current time.&#xD;		 *  This is useful for creating an automation anchor point in order to &#xD;		 *  schedule changes from the current value. &#xD;		 *&#xD;		 *  @param {number=} now (Optionally) pass the now value in. &#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.setRampPoint = function (now) {&#xD;	        now = this.defaultArg(now, this.now());&#xD;	        var currentVal = this._param.value;&#xD;	        // exponentialRampToValueAt cannot ever ramp from or to 0&#xD;	        // More info: https://bugzilla.mozilla.org/show_bug.cgi?id=1125600#c2&#xD;	        if (currentVal === 0) {&#xD;	            currentVal = this._minOutput;&#xD;	        }&#xD;	        this._param.setValueAtTime(currentVal, now);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules a linear continuous change in parameter value from the &#xD;		 *  previous scheduled parameter value to the given value.&#xD;		 *  &#xD;		 *  @param  {number} value   &#xD;		 *  @param  {Time} endTime &#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.linearRampToValueAtTime = function (value, endTime) {&#xD;	        value = this._fromUnits(value);&#xD;	        this._param.linearRampToValueAtTime(value, this.toSeconds(endTime));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules an exponential continuous change in parameter value from &#xD;		 *  the previous scheduled parameter value to the given value.&#xD;		 *  &#xD;		 *  @param  {number} value   &#xD;		 *  @param  {Time} endTime &#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.exponentialRampToValueAtTime = function (value, endTime) {&#xD;	        value = this._fromUnits(value);&#xD;	        value = Math.max(this._minOutput, value);&#xD;	        this._param.exponentialRampToValueAtTime(value, this.toSeconds(endTime));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules an exponential continuous change in parameter value from &#xD;		 *  the current time and current value to the given value over the &#xD;		 *  duration of the rampTime.&#xD;		 *  &#xD;		 *  @param  {number} value   The value to ramp to.&#xD;		 *  @param  {Time} rampTime the time that it takes the &#xD;		 *                               value to ramp from it&apos;s current value&#xD;		 *  @param {Time}	[startTime=now] 	When the ramp should start. &#xD;		 *  @returns {Tone.Param} this&#xD;		 *  @example&#xD;		 * //exponentially ramp to the value 2 over 4 seconds. &#xD;		 * signal.exponentialRampToValue(2, 4);&#xD;		 */&#xD;	    Tone.Param.prototype.exponentialRampToValue = function (value, rampTime, startTime) {&#xD;	        startTime = this.toSeconds(startTime);&#xD;	        this.setRampPoint(startTime);&#xD;	        this.exponentialRampToValueAtTime(value, startTime + this.toSeconds(rampTime));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules an linear continuous change in parameter value from &#xD;		 *  the current time and current value to the given value over the &#xD;		 *  duration of the rampTime.&#xD;		 *  &#xD;		 *  @param  {number} value   The value to ramp to.&#xD;		 *  @param  {Time} rampTime the time that it takes the &#xD;		 *                               value to ramp from it&apos;s current value&#xD;		 *  @param {Time}	[startTime=now] 	When the ramp should start. &#xD;		 *  @returns {Tone.Param} this&#xD;		 *  @example&#xD;		 * //linearly ramp to the value 4 over 3 seconds. &#xD;		 * signal.linearRampToValue(4, 3);&#xD;		 */&#xD;	    Tone.Param.prototype.linearRampToValue = function (value, rampTime, startTime) {&#xD;	        startTime = this.toSeconds(startTime);&#xD;	        this.setRampPoint(startTime);&#xD;	        this.linearRampToValueAtTime(value, startTime + this.toSeconds(rampTime));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start exponentially approaching the target value at the given time with&#xD;		 *  a rate having the given time constant.&#xD;		 *  @param {number} value        &#xD;		 *  @param {Time} startTime    &#xD;		 *  @param {number} timeConstant &#xD;		 *  @returns {Tone.Param} this &#xD;		 */&#xD;	    Tone.Param.prototype.setTargetAtTime = function (value, startTime, timeConstant) {&#xD;	        value = this._fromUnits(value);&#xD;	        // The value will never be able to approach without timeConstant &gt; 0.&#xD;	        // http://www.w3.org/TR/webaudio/#dfn-setTargetAtTime, where the equation&#xD;	        // is described. 0 results in a division by 0.&#xD;	        value = Math.max(this._minOutput, value);&#xD;	        timeConstant = Math.max(this._minOutput, timeConstant);&#xD;	        this._param.setTargetAtTime(value, this.toSeconds(startTime), timeConstant);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sets an array of arbitrary parameter values starting at the given time&#xD;		 *  for the given duration.&#xD;		 *  	&#xD;		 *  @param {Array} values    &#xD;		 *  @param {Time} startTime &#xD;		 *  @param {Time} duration  &#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.setValueCurveAtTime = function (values, startTime, duration) {&#xD;	        for (var i = 0; i &lt; values.length; i++) {&#xD;	            values[i] = this._fromUnits(values[i]);&#xD;	        }&#xD;	        this._param.setValueCurveAtTime(values, this.toSeconds(startTime), this.toSeconds(duration));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancels all scheduled parameter changes with times greater than or &#xD;		 *  equal to startTime.&#xD;		 *  &#xD;		 *  @param  {Time} startTime&#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.cancelScheduledValues = function (startTime) {&#xD;	        this._param.cancelScheduledValues(this.toSeconds(startTime));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Ramps to the given value over the duration of the rampTime. &#xD;		 *  Automatically selects the best ramp type (exponential or linear)&#xD;		 *  depending on the `units` of the signal&#xD;		 *  &#xD;		 *  @param  {number} value   &#xD;		 *  @param  {Time} rampTime 	The time that it takes the &#xD;		 *                              value to ramp from it&apos;s current value&#xD;		 *  @param {Time}	[startTime=now] 	When the ramp should start. &#xD;		 *  @returns {Tone.Param} this&#xD;		 *  @example&#xD;		 * //ramp to the value either linearly or exponentially &#xD;		 * //depending on the "units" value of the signal&#xD;		 * signal.rampTo(0, 10);&#xD;		 *  @example&#xD;		 * //schedule it to ramp starting at a specific time&#xD;		 * signal.rampTo(0, 10, 5)&#xD;		 */&#xD;	    Tone.Param.prototype.rampTo = function (value, rampTime, startTime) {&#xD;	        rampTime = this.defaultArg(rampTime, 0);&#xD;	        if (this.units === Tone.Type.Frequency || this.units === Tone.Type.BPM) {&#xD;	            this.exponentialRampToValue(value, rampTime, startTime);&#xD;	        } else {&#xD;	            this.linearRampToValue(value, rampTime, startTime);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The LFO created by the signal instance. If none&#xD;		 *  was created, this is null.&#xD;		 *  @type {Tone.LFO}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.Param#&#xD;		 *  @name lfo&#xD;		 */&#xD;	    Object.defineProperty(Tone.Param.prototype, &apos;lfo&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfo;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @returns {Tone.Param} this&#xD;		 */&#xD;	    Tone.Param.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._param = null;&#xD;	        if (this._lfo) {&#xD;	            this._lfo.dispose();&#xD;	            this._lfo = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Param;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A thin wrapper around the Native Web Audio GainNode.&#xD;		 *         The GainNode is a basic building block of the Web Audio&#xD;		 *         API and is useful for routing audio and adjusting gains. &#xD;		 *  @extends {Tone}&#xD;		 *  @param  {Number=}  gain  The initial gain of the GainNode&#xD;		 *  @param {Tone.Type=} units The units of the gain parameter. &#xD;		 */&#xD;	    Tone.Gain = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;gain&apos;,&#xD;	            &apos;units&apos;&#xD;	        ], Tone.Gain.defaults);&#xD;	        /**&#xD;			 *  The GainNode&#xD;			 *  @type  {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.input = this.output = this._gainNode = this.context.createGain();&#xD;	        /**&#xD;			 *  The gain parameter of the gain node.&#xD;			 *  @type {Tone.Param}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.gain = new Tone.Param({&#xD;	            &apos;param&apos;: this._gainNode.gain,&#xD;	            &apos;units&apos;: options.units,&#xD;	            &apos;value&apos;: options.gain,&#xD;	            &apos;convert&apos;: options.convert&#xD;	        });&#xD;	        this._readOnly(&apos;gain&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.Gain);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Gain.defaults = {&#xD;	        &apos;gain&apos;: 1,&#xD;	        &apos;convert&apos;: true&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.Gain}  this&#xD;		 */&#xD;	    Tone.Gain.prototype.dispose = function () {&#xD;	        Tone.Param.prototype.dispose.call(this);&#xD;	        this._gainNode.disconnect();&#xD;	        this._gainNode = null;&#xD;	        this._writable(&apos;gain&apos;);&#xD;	        this.gain.dispose();&#xD;	        this.gain = null;&#xD;	    };&#xD;	    //STATIC///////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Create input and outputs for this object.&#xD;		 *  @param  {Number}  input   The number of inputs&#xD;		 *  @param  {Number=}  outputs  The number of outputs&#xD;		 *  @return  {Tone}  this&#xD;		 *  @internal&#xD;		 */&#xD;	    Tone.prototype.createInsOuts = function (inputs, outputs) {&#xD;	        if (inputs === 1) {&#xD;	            this.input = new Tone.Gain();&#xD;	        } else if (inputs &gt; 1) {&#xD;	            this.input = new Array(inputs);&#xD;	        }&#xD;	        if (outputs === 1) {&#xD;	            this.output = new Tone.Gain();&#xD;	        } else if (outputs &gt; 1) {&#xD;	            this.output = new Array(inputs);&#xD;	        }&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    return Tone.Gain;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  A signal is an audio-rate value. Tone.Signal is a core component of the library.&#xD;		 *          Unlike a number, Signals can be scheduled with sample-level accuracy. Tone.Signal&#xD;		 *          has all of the methods available to native Web Audio &#xD;		 *          [AudioParam](http://webaudio.github.io/web-audio-api/#the-audioparam-interface)&#xD;		 *          as well as additional conveniences. Read more about working with signals &#xD;		 *          [here](https://github.com/Tonejs/Tone.js/wiki/Signals).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Param}&#xD;		 *  @param {Number|AudioParam} [value] Initial value of the signal. If an AudioParam&#xD;		 *                                     is passed in, that parameter will be wrapped&#xD;		 *                                     and controlled by the Signal. &#xD;		 *  @param {string} [units=Number] unit The units the signal is in. &#xD;		 *  @example&#xD;		 * var signal = new Tone.Signal(10);&#xD;		 */&#xD;	    Tone.Signal = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;value&apos;,&#xD;	            &apos;units&apos;&#xD;	        ], Tone.Signal.defaults);&#xD;	        /**&#xD;			 * The node where the constant signal value is scaled.&#xD;			 * @type {GainNode}&#xD;			 * @private&#xD;			 */&#xD;	        this.output = this._gain = this.context.createGain();&#xD;	        options.param = this._gain.gain;&#xD;	        Tone.Param.call(this, options);&#xD;	        /**&#xD;			 * The node where the value is set.&#xD;			 * @type {Tone.Param}&#xD;			 * @private&#xD;			 */&#xD;	        this.input = this._param = this._gain.gain;&#xD;	        //connect the const output to the node output&#xD;	        Tone.Signal._constant.chain(this._gain);&#xD;	    };&#xD;	    Tone.extend(Tone.Signal, Tone.Param);&#xD;	    /**&#xD;		 *  The default values&#xD;		 *  @type  {Object}&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Signal.defaults = {&#xD;	        &apos;value&apos;: 0,&#xD;	        &apos;units&apos;: Tone.Type.Default,&#xD;	        &apos;convert&apos;: true&#xD;	    };&#xD;	    /**&#xD;		 *  When signals connect to other signals or AudioParams, &#xD;		 *  they take over the output value of that signal or AudioParam. &#xD;		 *  For all other nodes, the behavior is the same as a default &lt;code&gt;connect&lt;/code&gt;. &#xD;		 *&#xD;		 *  @override&#xD;		 *  @param {AudioParam|AudioNode|Tone.Signal|Tone} node &#xD;		 *  @param {number} [outputNumber=0] The output number to connect from.&#xD;		 *  @param {number} [inputNumber=0] The input number to connect to.&#xD;		 *  @returns {Tone.SignalBase} this&#xD;		 *  @method&#xD;		 */&#xD;	    Tone.Signal.prototype.connect = Tone.SignalBase.prototype.connect;&#xD;	    /**&#xD;		 *  dispose and disconnect&#xD;		 *  @returns {Tone.Signal} this&#xD;		 */&#xD;	    Tone.Signal.prototype.dispose = function () {&#xD;	        Tone.Param.prototype.dispose.call(this);&#xD;	        this._param = null;&#xD;	        this._gain.disconnect();&#xD;	        this._gain = null;&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	STATIC&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Generates a constant output of 1.&#xD;		 *  @static&#xD;		 *  @private&#xD;		 *  @const&#xD;		 *  @type {AudioBufferSourceNode}&#xD;		 */&#xD;	    Tone.Signal._constant = null;&#xD;	    /**&#xD;		 *  initializer function&#xD;		 */&#xD;	    Tone._initAudioContext(function (audioContext) {&#xD;	        var buffer = audioContext.createBuffer(1, 128, audioContext.sampleRate);&#xD;	        var arr = buffer.getChannelData(0);&#xD;	        for (var i = 0; i &lt; arr.length; i++) {&#xD;	            arr[i] = 1;&#xD;	        }&#xD;	        Tone.Signal._constant = audioContext.createBufferSource();&#xD;	        Tone.Signal._constant.channelCount = 1;&#xD;	        Tone.Signal._constant.channelCountMode = &apos;explicit&apos;;&#xD;	        Tone.Signal._constant.buffer = buffer;&#xD;	        Tone.Signal._constant.loop = true;&#xD;	        Tone.Signal._constant.start(0);&#xD;	        Tone.Signal._constant.noGC();&#xD;	    });&#xD;	    return Tone.Signal;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A Timeline class for scheduling and maintaining state&#xD;		 *         along a timeline. All events must have a "time" property. &#xD;		 *         Internally, events are stored in time order for fast &#xD;		 *         retrieval.&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Positive} [memory=Infinity] The number of previous events that are retained.&#xD;		 */&#xD;	    Tone.Timeline = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;memory&apos;], Tone.Timeline.defaults);&#xD;	        /**&#xD;			 *  The array of scheduled timeline events&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._timeline = [];&#xD;	        /**&#xD;			 *  An array of items to remove from the list. &#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._toRemove = [];&#xD;	        /**&#xD;			 *  Flag if the tieline is mid iteration&#xD;			 *  @private&#xD;			 *  @type {Boolean}&#xD;			 */&#xD;	        this._iterating = false;&#xD;	        /**&#xD;			 *  The memory of the timeline, i.e.&#xD;			 *  how many events in the past it will retain&#xD;			 *  @type {Positive}&#xD;			 */&#xD;	        this.memory = options.memory;&#xD;	    };&#xD;	    Tone.extend(Tone.Timeline);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Timeline.defaults = { &apos;memory&apos;: Infinity };&#xD;	    /**&#xD;		 *  The number of items in the timeline.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Timeline#&#xD;		 *  @name length&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Timeline.prototype, &apos;length&apos;, {&#xD;	        get: function () {&#xD;	            return this._timeline.length;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Insert an event object onto the timeline. Events must have a "time" attribute.&#xD;		 *  @param  {Object}  event  The event object to insert into the &#xD;		 *                           timeline. &#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.add = function (event) {&#xD;	        //the event needs to have a time attribute&#xD;	        if (this.isUndef(event.time)) {&#xD;	            throw new Error(&apos;Tone.Timeline: events must have a time attribute&apos;);&#xD;	        }&#xD;	        if (this._timeline.length) {&#xD;	            var index = this._search(event.time);&#xD;	            this._timeline.splice(index + 1, 0, event);&#xD;	        } else {&#xD;	            this._timeline.push(event);&#xD;	        }&#xD;	        //if the length is more than the memory, remove the previous ones&#xD;	        if (this.length &gt; this.memory) {&#xD;	            var diff = this.length - this.memory;&#xD;	            this._timeline.splice(0, diff);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove an event from the timeline.&#xD;		 *  @param  {Object}  event  The event object to remove from the list.&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.remove = function (event) {&#xD;	        if (this._iterating) {&#xD;	            this._toRemove.push(event);&#xD;	        } else {&#xD;	            var index = this._timeline.indexOf(event);&#xD;	            if (index !== -1) {&#xD;	                this._timeline.splice(index, 1);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get the nearest event whose time is less than or equal to the given time.&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @returns {Object} The event object set after that time.&#xD;		 */&#xD;	    Tone.Timeline.prototype.get = function (time) {&#xD;	        var index = this._search(time);&#xD;	        if (index !== -1) {&#xD;	            return this._timeline[index];&#xD;	        } else {&#xD;	            return null;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Return the first event in the timeline without removing it&#xD;		 *  @returns {Object} The first event object&#xD;		 */&#xD;	    Tone.Timeline.prototype.peek = function () {&#xD;	        return this._timeline[0];&#xD;	    };&#xD;	    /**&#xD;		 *  Return the first event in the timeline and remove it&#xD;		 *  @returns {Object} The first event object&#xD;		 */&#xD;	    Tone.Timeline.prototype.shift = function () {&#xD;	        return this._timeline.shift();&#xD;	    };&#xD;	    /**&#xD;		 *  Get the event which is scheduled after the given time.&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @returns {Object} The event object after the given time&#xD;		 */&#xD;	    Tone.Timeline.prototype.getAfter = function (time) {&#xD;	        var index = this._search(time);&#xD;	        if (index + 1 &lt; this._timeline.length) {&#xD;	            return this._timeline[index + 1];&#xD;	        } else {&#xD;	            return null;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Get the event before the event at the given time.&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @returns {Object} The event object before the given time&#xD;		 */&#xD;	    Tone.Timeline.prototype.getBefore = function (time) {&#xD;	        var len = this._timeline.length;&#xD;	        //if it&apos;s after the last item, return the last item&#xD;	        if (len &gt; 0 &amp;&amp; this._timeline[len - 1].time &lt; time) {&#xD;	            return this._timeline[len - 1];&#xD;	        }&#xD;	        var index = this._search(time);&#xD;	        if (index - 1 &gt;= 0) {&#xD;	            return this._timeline[index - 1];&#xD;	        } else {&#xD;	            return null;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel events after the given time&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.cancel = function (after) {&#xD;	        if (this._timeline.length &gt; 1) {&#xD;	            var index = this._search(after);&#xD;	            if (index &gt;= 0) {&#xD;	                if (this._timeline[index].time === after) {&#xD;	                    //get the first item with that time&#xD;	                    for (var i = index; i &gt;= 0; i--) {&#xD;	                        if (this._timeline[i].time === after) {&#xD;	                            index = i;&#xD;	                        } else {&#xD;	                            break;&#xD;	                        }&#xD;	                    }&#xD;	                    this._timeline = this._timeline.slice(0, index);&#xD;	                } else {&#xD;	                    this._timeline = this._timeline.slice(0, index + 1);&#xD;	                }&#xD;	            } else {&#xD;	                this._timeline = [];&#xD;	            }&#xD;	        } else if (this._timeline.length === 1) {&#xD;	            //the first item&apos;s time&#xD;	            if (this._timeline[0].time &gt;= after) {&#xD;	                this._timeline = [];&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel events before or equal to the given time.&#xD;		 *  @param  {Number}  time  The time to cancel before.&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.cancelBefore = function (time) {&#xD;	        if (this._timeline.length) {&#xD;	            var index = this._search(time);&#xD;	            if (index &gt;= 0) {&#xD;	                this._timeline = this._timeline.slice(index + 1);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Does a binary serach on the timeline array and returns the &#xD;		 *  nearest event index whose time is after or equal to the given time.&#xD;		 *  If a time is searched before the first index in the timeline, -1 is returned.&#xD;		 *  If the time is after the end, the index of the last item is returned.&#xD;		 *  @param  {Number}  time  &#xD;		 *  @return  {Number} the index in the timeline array &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Timeline.prototype._search = function (time) {&#xD;	        var beginning = 0;&#xD;	        var len = this._timeline.length;&#xD;	        var end = len;&#xD;	        if (len &gt; 0 &amp;&amp; this._timeline[len - 1].time &lt;= time) {&#xD;	            return len - 1;&#xD;	        }&#xD;	        while (beginning &lt; end) {&#xD;	            // calculate the midpoint for roughly equal partition&#xD;	            var midPoint = Math.floor(beginning + (end - beginning) / 2);&#xD;	            var event = this._timeline[midPoint];&#xD;	            var nextEvent = this._timeline[midPoint + 1];&#xD;	            if (event.time === time) {&#xD;	                //choose the last one that has the same time&#xD;	                for (var i = midPoint; i &lt; this._timeline.length; i++) {&#xD;	                    var testEvent = this._timeline[i];&#xD;	                    if (testEvent.time === time) {&#xD;	                        midPoint = i;&#xD;	                    }&#xD;	                }&#xD;	                return midPoint;&#xD;	            } else if (event.time &lt; time &amp;&amp; nextEvent.time &gt; time) {&#xD;	                return midPoint;&#xD;	            } else if (event.time &gt; time) {&#xD;	                //search lower&#xD;	                end = midPoint;&#xD;	            } else if (event.time &lt; time) {&#xD;	                //search upper&#xD;	                beginning = midPoint + 1;&#xD;	            }&#xD;	        }&#xD;	        return -1;&#xD;	    };&#xD;	    /**&#xD;		 *  Internal iterator. Applies extra safety checks for &#xD;		 *  removing items from the array. &#xD;		 *  @param  {Function}  callback &#xD;		 *  @param  {Number=}    lowerBound     &#xD;		 *  @param  {Number=}    upperBound    &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Timeline.prototype._iterate = function (callback, lowerBound, upperBound) {&#xD;	        this._iterating = true;&#xD;	        lowerBound = this.defaultArg(lowerBound, 0);&#xD;	        upperBound = this.defaultArg(upperBound, this._timeline.length - 1);&#xD;	        for (var i = lowerBound; i &lt;= upperBound; i++) {&#xD;	            callback(this._timeline[i]);&#xD;	        }&#xD;	        this._iterating = false;&#xD;	        if (this._toRemove.length &gt; 0) {&#xD;	            for (var j = 0; j &lt; this._toRemove.length; j++) {&#xD;	                var index = this._timeline.indexOf(this._toRemove[j]);&#xD;	                if (index !== -1) {&#xD;	                    this._timeline.splice(index, 1);&#xD;	                }&#xD;	            }&#xD;	            this._toRemove = [];&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.forEach = function (callback) {&#xD;	        this._iterate(callback);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array at or before the given time.&#xD;		 *  @param  {Number}  time The time to check if items are before&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.forEachBefore = function (time, callback) {&#xD;	        //iterate over the items in reverse so that removing an item doesn&apos;t break things&#xD;	        var upperBound = this._search(time);&#xD;	        if (upperBound !== -1) {&#xD;	            this._iterate(callback, 0, upperBound);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array after the given time.&#xD;		 *  @param  {Number}  time The time to check if items are before&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.forEachAfter = function (time, callback) {&#xD;	        //iterate over the items in reverse so that removing an item doesn&apos;t break things&#xD;	        var lowerBound = this._search(time);&#xD;	        this._iterate(callback, lowerBound + 1);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array at or after the given time. Similar to &#xD;		 *  forEachAfter, but includes the item(s) at the given time.&#xD;		 *  @param  {Number}  time The time to check if items are before&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.forEachFrom = function (time, callback) {&#xD;	        //iterate over the items in reverse so that removing an item doesn&apos;t break things&#xD;	        var lowerBound = this._search(time);&#xD;	        //work backwards until the event time is less than time&#xD;	        while (lowerBound &gt;= 0 &amp;&amp; this._timeline[lowerBound].time &gt;= time) {&#xD;	            lowerBound--;&#xD;	        }&#xD;	        this._iterate(callback, lowerBound + 1);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array at the given time&#xD;		 *  @param  {Number}  time The time to check if items are before&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.Timeline} this&#xD;		 */&#xD;	    Tone.Timeline.prototype.forEachAtTime = function (time, callback) {&#xD;	        //iterate over the items in reverse so that removing an item doesn&apos;t break things&#xD;	        var upperBound = this._search(time);&#xD;	        if (upperBound !== -1) {&#xD;	            this._iterate(function (event) {&#xD;	                if (event.time === time) {&#xD;	                    callback(event);&#xD;	                }&#xD;	            }, 0, upperBound);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.Timeline}  this&#xD;		 */&#xD;	    Tone.Timeline.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._timeline = null;&#xD;	        this._toRemove = null;&#xD;	    };&#xD;	    return Tone.Timeline;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A signal which adds the method getValueAtTime. &#xD;		 *         Code and inspiration from https://github.com/jsantell/web-audio-automation-timeline&#xD;		 *  @extends {Tone.Param}&#xD;		 *  @param {Number=} value The initial value of the signal&#xD;		 *  @param {String=} units The conversion units of the signal.&#xD;		 */&#xD;	    Tone.TimelineSignal = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;value&apos;,&#xD;	            &apos;units&apos;&#xD;	        ], Tone.Signal.defaults);&#xD;	        /**&#xD;			 *  The scheduled events&#xD;			 *  @type {Tone.Timeline}&#xD;			 *  @private&#xD;			 */&#xD;	        this._events = new Tone.Timeline(10);&#xD;	        //constructors&#xD;	        Tone.Signal.apply(this, options);&#xD;	        options.param = this._param;&#xD;	        Tone.Param.call(this, options);&#xD;	        /**&#xD;			 *  The initial scheduled value&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._initial = this._fromUnits(this._param.value);&#xD;	    };&#xD;	    Tone.extend(Tone.TimelineSignal, Tone.Param);&#xD;	    /**&#xD;		 *  The event types of a schedulable signal.&#xD;		 *  @enum {String}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.Type = {&#xD;	        Linear: &apos;linear&apos;,&#xD;	        Exponential: &apos;exponential&apos;,&#xD;	        Target: &apos;target&apos;,&#xD;	        Curve: &apos;curve&apos;,&#xD;	        Set: &apos;set&apos;&#xD;	    };&#xD;	    /**&#xD;		 * The current value of the signal. &#xD;		 * @memberOf Tone.TimelineSignal#&#xD;		 * @type {Number}&#xD;		 * @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.TimelineSignal.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            var now = this.now();&#xD;	            var val = this.getValueAtTime(now);&#xD;	            return this._toUnits(val);&#xD;	        },&#xD;	        set: function (value) {&#xD;	            var convertedVal = this._fromUnits(value);&#xD;	            this._initial = convertedVal;&#xD;	            this.cancelScheduledValues();&#xD;	            this._param.value = convertedVal;&#xD;	        }&#xD;	    });&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	SCHEDULING&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Schedules a parameter value change at the given time.&#xD;		 *  @param {*}	value The value to set the signal.&#xD;		 *  @param {Time}  time The time when the change should occur.&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 *  @example&#xD;		 * //set the frequency to "G4" in exactly 1 second from now. &#xD;		 * freq.setValueAtTime("G4", "+1");&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.setValueAtTime = function (value, startTime) {&#xD;	        value = this._fromUnits(value);&#xD;	        startTime = this.toSeconds(startTime);&#xD;	        this._events.add({&#xD;	            &apos;type&apos;: Tone.TimelineSignal.Type.Set,&#xD;	            &apos;value&apos;: value,&#xD;	            &apos;time&apos;: startTime&#xD;	        });&#xD;	        //invoke the original event&#xD;	        this._param.setValueAtTime(value, startTime);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules a linear continuous change in parameter value from the &#xD;		 *  previous scheduled parameter value to the given value.&#xD;		 *  &#xD;		 *  @param  {number} value   &#xD;		 *  @param  {Time} endTime &#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.linearRampToValueAtTime = function (value, endTime) {&#xD;	        value = this._fromUnits(value);&#xD;	        endTime = this.toSeconds(endTime);&#xD;	        this._events.add({&#xD;	            &apos;type&apos;: Tone.TimelineSignal.Type.Linear,&#xD;	            &apos;value&apos;: value,&#xD;	            &apos;time&apos;: endTime&#xD;	        });&#xD;	        this._param.linearRampToValueAtTime(value, endTime);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedules an exponential continuous change in parameter value from &#xD;		 *  the previous scheduled parameter value to the given value.&#xD;		 *  &#xD;		 *  @param  {number} value   &#xD;		 *  @param  {Time} endTime &#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.exponentialRampToValueAtTime = function (value, endTime) {&#xD;	        //get the previous event and make sure it&apos;s not starting from 0&#xD;	        endTime = this.toSeconds(endTime);&#xD;	        var beforeEvent = this._searchBefore(endTime);&#xD;	        if (beforeEvent &amp;&amp; beforeEvent.value === 0) {&#xD;	            //reschedule that event&#xD;	            this.setValueAtTime(this._minOutput, beforeEvent.time);&#xD;	        }&#xD;	        value = this._fromUnits(value);&#xD;	        var setValue = Math.max(value, this._minOutput);&#xD;	        this._events.add({&#xD;	            &apos;type&apos;: Tone.TimelineSignal.Type.Exponential,&#xD;	            &apos;value&apos;: setValue,&#xD;	            &apos;time&apos;: endTime&#xD;	        });&#xD;	        //if the ramped to value is 0, make it go to the min output, and then set to 0.&#xD;	        if (value &lt; this._minOutput) {&#xD;	            this._param.exponentialRampToValueAtTime(this._minOutput, endTime - this.sampleTime);&#xD;	            this.setValueAtTime(0, endTime);&#xD;	        } else {&#xD;	            this._param.exponentialRampToValueAtTime(value, endTime);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start exponentially approaching the target value at the given time with&#xD;		 *  a rate having the given time constant.&#xD;		 *  @param {number} value        &#xD;		 *  @param {Time} startTime    &#xD;		 *  @param {number} timeConstant &#xD;		 *  @returns {Tone.TimelineSignal} this &#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.setTargetAtTime = function (value, startTime, timeConstant) {&#xD;	        value = this._fromUnits(value);&#xD;	        value = Math.max(this._minOutput, value);&#xD;	        timeConstant = Math.max(this._minOutput, timeConstant);&#xD;	        startTime = this.toSeconds(startTime);&#xD;	        this._events.add({&#xD;	            &apos;type&apos;: Tone.TimelineSignal.Type.Target,&#xD;	            &apos;value&apos;: value,&#xD;	            &apos;time&apos;: startTime,&#xD;	            &apos;constant&apos;: timeConstant&#xD;	        });&#xD;	        this._param.setTargetAtTime(value, startTime, timeConstant);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Set an array of arbitrary values starting at the given time for the given duration.&#xD;		 *  @param {Float32Array} values        &#xD;		 *  @param {Time} startTime    &#xD;		 *  @param {Time} duration&#xD;		 *  @param {NormalRange} [scaling=1] If the values in the curve should be scaled by some value&#xD;		 *  @returns {Tone.TimelineSignal} this &#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.setValueCurveAtTime = function (values, startTime, duration, scaling) {&#xD;	        scaling = this.defaultArg(scaling, 1);&#xD;	        //copy the array&#xD;	        var floats = new Array(values.length);&#xD;	        for (var i = 0; i &lt; floats.length; i++) {&#xD;	            floats[i] = this._fromUnits(values[i]) * scaling;&#xD;	        }&#xD;	        startTime = this.toSeconds(startTime);&#xD;	        duration = this.toSeconds(duration);&#xD;	        this._events.add({&#xD;	            &apos;type&apos;: Tone.TimelineSignal.Type.Curve,&#xD;	            &apos;value&apos;: floats,&#xD;	            &apos;time&apos;: startTime,&#xD;	            &apos;duration&apos;: duration&#xD;	        });&#xD;	        //set the first value&#xD;	        this._param.setValueAtTime(floats[0], startTime);&#xD;	        //schedule a lienar ramp for each of the segments&#xD;	        for (var j = 1; j &lt; floats.length; j++) {&#xD;	            var segmentTime = startTime + j / (floats.length - 1) * duration;&#xD;	            this._param.linearRampToValueAtTime(floats[j], segmentTime);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancels all scheduled parameter changes with times greater than or &#xD;		 *  equal to startTime.&#xD;		 *  &#xD;		 *  @param  {Time} startTime&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.cancelScheduledValues = function (after) {&#xD;	        after = this.toSeconds(after);&#xD;	        this._events.cancel(after);&#xD;	        this._param.cancelScheduledValues(after);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sets the computed value at the given time. This provides&#xD;		 *  a point from which a linear or exponential curve&#xD;		 *  can be scheduled after. Will cancel events after &#xD;		 *  the given time and shorten the currently scheduled&#xD;		 *  linear or exponential ramp so that it ends at `time` .&#xD;		 *  This is to avoid discontinuities and clicks in envelopes. &#xD;		 *  @param {Time} time When to set the ramp point&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.setRampPoint = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        //get the value at the given time&#xD;	        var val = this._toUnits(this.getValueAtTime(time));&#xD;	        //if there is an event at the given time&#xD;	        //and that even is not a "set"&#xD;	        var before = this._searchBefore(time);&#xD;	        if (before &amp;&amp; before.time === time) {&#xD;	            //remove everything after&#xD;	            this.cancelScheduledValues(time + this.sampleTime);&#xD;	        } else if (before &amp;&amp; before.type === Tone.TimelineSignal.Type.Curve &amp;&amp; before.time + before.duration &gt; time) {&#xD;	            //if the curve is still playing&#xD;	            //cancel the curve&#xD;	            this.cancelScheduledValues(time);&#xD;	            this.linearRampToValueAtTime(val, time);&#xD;	        } else {&#xD;	            //reschedule the next event to end at the given time&#xD;	            var after = this._searchAfter(time);&#xD;	            if (after) {&#xD;	                //cancel the next event(s)&#xD;	                this.cancelScheduledValues(time);&#xD;	                if (after.type === Tone.TimelineSignal.Type.Linear) {&#xD;	                    this.linearRampToValueAtTime(val, time);&#xD;	                } else if (after.type === Tone.TimelineSignal.Type.Exponential) {&#xD;	                    this.exponentialRampToValueAtTime(val, time);&#xD;	                }&#xD;	            }&#xD;	            this.setValueAtTime(val, time);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Do a linear ramp to the given value between the start and finish times.&#xD;		 *  @param {Number} value The value to ramp to.&#xD;		 *  @param {Time} start The beginning anchor point to do the linear ramp&#xD;		 *  @param {Time} finish The ending anchor point by which the value of&#xD;		 *                       the signal will equal the given value.&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.linearRampToValueBetween = function (value, start, finish) {&#xD;	        this.setRampPoint(start);&#xD;	        this.linearRampToValueAtTime(value, finish);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Do a exponential ramp to the given value between the start and finish times.&#xD;		 *  @param {Number} value The value to ramp to.&#xD;		 *  @param {Time} start The beginning anchor point to do the exponential ramp&#xD;		 *  @param {Time} finish The ending anchor point by which the value of&#xD;		 *                       the signal will equal the given value.&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.exponentialRampToValueBetween = function (value, start, finish) {&#xD;	        this.setRampPoint(start);&#xD;	        this.exponentialRampToValueAtTime(value, finish);&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	GETTING SCHEDULED VALUES&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Returns the value before or equal to the given time&#xD;		 *  @param  {Number}  time  The time to query&#xD;		 *  @return  {Object}  The event at or before the given time.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._searchBefore = function (time) {&#xD;	        return this._events.get(time);&#xD;	    };&#xD;	    /**&#xD;		 *  The event after the given time&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @return  {Object}  The next event after the given time&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._searchAfter = function (time) {&#xD;	        return this._events.getAfter(time);&#xD;	    };&#xD;	    /**&#xD;		 *  Get the scheduled value at the given time. This will&#xD;		 *  return the unconverted (raw) value.&#xD;		 *  @param  {Number}  time  The time in seconds.&#xD;		 *  @return  {Number}  The scheduled value at the given time.&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.getValueAtTime = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        var after = this._searchAfter(time);&#xD;	        var before = this._searchBefore(time);&#xD;	        var value = this._initial;&#xD;	        //if it was set by&#xD;	        if (before === null) {&#xD;	            value = this._initial;&#xD;	        } else if (before.type === Tone.TimelineSignal.Type.Target) {&#xD;	            var previous = this._events.getBefore(before.time);&#xD;	            var previouVal;&#xD;	            if (previous === null) {&#xD;	                previouVal = this._initial;&#xD;	            } else {&#xD;	                previouVal = previous.value;&#xD;	            }&#xD;	            value = this._exponentialApproach(before.time, previouVal, before.value, before.constant, time);&#xD;	        } else if (before.type === Tone.TimelineSignal.Type.Curve) {&#xD;	            value = this._curveInterpolate(before.time, before.value, before.duration, time);&#xD;	        } else if (after === null) {&#xD;	            value = before.value;&#xD;	        } else if (after.type === Tone.TimelineSignal.Type.Linear) {&#xD;	            value = this._linearInterpolate(before.time, before.value, after.time, after.value, time);&#xD;	        } else if (after.type === Tone.TimelineSignal.Type.Exponential) {&#xD;	            value = this._exponentialInterpolate(before.time, before.value, after.time, after.value, time);&#xD;	        } else {&#xD;	            value = before.value;&#xD;	        }&#xD;	        return value;&#xD;	    };&#xD;	    /**&#xD;		 *  When signals connect to other signals or AudioParams, &#xD;		 *  they take over the output value of that signal or AudioParam. &#xD;		 *  For all other nodes, the behavior is the same as a default &lt;code&gt;connect&lt;/code&gt;. &#xD;		 *&#xD;		 *  @override&#xD;		 *  @param {AudioParam|AudioNode|Tone.Signal|Tone} node &#xD;		 *  @param {number} [outputNumber=0] The output number to connect from.&#xD;		 *  @param {number} [inputNumber=0] The input number to connect to.&#xD;		 *  @returns {Tone.TimelineSignal} this&#xD;		 *  @method&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.connect = Tone.SignalBase.prototype.connect;&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	AUTOMATION CURVE CALCULATIONS&#xD;	    //	MIT License, copyright (c) 2014 Jordan Santell&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Calculates the the value along the curve produced by setTargetAtTime&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._exponentialApproach = function (t0, v0, v1, timeConstant, t) {&#xD;	        return v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant);&#xD;	    };&#xD;	    /**&#xD;		 *  Calculates the the value along the curve produced by linearRampToValueAtTime&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._linearInterpolate = function (t0, v0, t1, v1, t) {&#xD;	        return v0 + (v1 - v0) * ((t - t0) / (t1 - t0));&#xD;	    };&#xD;	    /**&#xD;		 *  Calculates the the value along the curve produced by exponentialRampToValueAtTime&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._exponentialInterpolate = function (t0, v0, t1, v1, t) {&#xD;	        v0 = Math.max(this._minOutput, v0);&#xD;	        return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0));&#xD;	    };&#xD;	    /**&#xD;		 *  Calculates the the value along the curve produced by setValueCurveAtTime&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype._curveInterpolate = function (start, curve, duration, time) {&#xD;	        var len = curve.length;&#xD;	        // If time is after duration, return the last curve value&#xD;	        if (time &gt;= start + duration) {&#xD;	            return curve[len - 1];&#xD;	        } else if (time &lt;= start) {&#xD;	            return curve[0];&#xD;	        } else {&#xD;	            var progress = (time - start) / duration;&#xD;	            var lowerIndex = Math.floor((len - 1) * progress);&#xD;	            var upperIndex = Math.ceil((len - 1) * progress);&#xD;	            var lowerVal = curve[lowerIndex];&#xD;	            var upperVal = curve[upperIndex];&#xD;	            if (upperIndex === lowerIndex) {&#xD;	                return lowerVal;&#xD;	            } else {&#xD;	                return this._linearInterpolate(lowerIndex, lowerVal, upperIndex, upperVal, progress * (len - 1));&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.TimelineSignal} this&#xD;		 */&#xD;	    Tone.TimelineSignal.prototype.dispose = function () {&#xD;	        Tone.Signal.prototype.dispose.call(this);&#xD;	        Tone.Param.prototype.dispose.call(this);&#xD;	        this._events.dispose();&#xD;	        this._events = null;&#xD;	    };&#xD;	    return Tone.TimelineSignal;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Pow applies an exponent to the incoming signal. The incoming signal&#xD;		 *         must be AudioRange.&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @param {Positive} exp The exponent to apply to the incoming signal, must be at least 2. &#xD;		 *  @example&#xD;		 * var pow = new Tone.Pow(2);&#xD;		 * var sig = new Tone.Signal(0.5).connect(pow);&#xD;		 * //output of pow is 0.25. &#xD;		 */&#xD;	    Tone.Pow = function (exp) {&#xD;	        /**&#xD;			 * the exponent&#xD;			 * @private&#xD;			 * @type {number}&#xD;			 */&#xD;	        this._exp = this.defaultArg(exp, 1);&#xD;	        /**&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._expScaler = this.input = this.output = new Tone.WaveShaper(this._expFunc(this._exp), 8192);&#xD;	    };&#xD;	    Tone.extend(Tone.Pow, Tone.SignalBase);&#xD;	    /**&#xD;		 * The value of the exponent.&#xD;		 * @memberOf Tone.Pow#&#xD;		 * @type {number}&#xD;		 * @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.Pow.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            return this._exp;&#xD;	        },&#xD;	        set: function (exp) {&#xD;	            this._exp = exp;&#xD;	            this._expScaler.setMap(this._expFunc(this._exp));&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  the function which maps the waveshaper&#xD;		 *  @param   {number} exp&#xD;		 *  @return {function}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Pow.prototype._expFunc = function (exp) {&#xD;	        return function (val) {&#xD;	            return Math.pow(Math.abs(val), exp);&#xD;	        };&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Pow} this&#xD;		 */&#xD;	    Tone.Pow.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._expScaler.dispose();&#xD;	        this._expScaler = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Pow;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Envelope is an [ADSR](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope)&#xD;		 *          envelope generator. Tone.Envelope outputs a signal which &#xD;		 *          can be connected to an AudioParam or Tone.Signal. &#xD;		 *          &lt;img src="https://upload.wikimedia.org/wikipedia/commons/e/ea/ADSR_parameter.svg"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Time} [attack] The amount of time it takes for the envelope to go from &#xD;		 *                         0 to it&apos;s maximum value. &#xD;		 *  @param {Time} [decay]	The period of time after the attack that it takes for the envelope&#xD;		 *                       	to fall to the sustain value. &#xD;		 *  @param {NormalRange} [sustain]	The percent of the maximum value that the envelope rests at until&#xD;		 *                                	the release is triggered. &#xD;		 *  @param {Time} [release]	The amount of time after the release is triggered it takes to reach 0. &#xD;		 *  @example&#xD;		 * //an amplitude envelope&#xD;		 * var gainNode = Tone.context.createGain();&#xD;		 * var env = new Tone.Envelope({&#xD;		 * 	"attack" : 0.1,&#xD;		 * 	"decay" : 0.2,&#xD;		 * 	"sustain" : 1,&#xD;		 * 	"release" : 0.8,&#xD;		 * });&#xD;		 * env.connect(gainNode.gain);&#xD;		 */&#xD;	    Tone.Envelope = function () {&#xD;	        //get all of the defaults&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;attack&apos;,&#xD;	            &apos;decay&apos;,&#xD;	            &apos;sustain&apos;,&#xD;	            &apos;release&apos;&#xD;	        ], Tone.Envelope.defaults);&#xD;	        /** &#xD;			 *  When triggerAttack is called, the attack time is the amount of&#xD;			 *  time it takes for the envelope to reach it&apos;s maximum value. &#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.attack = options.attack;&#xD;	        /**&#xD;			 *  After the attack portion of the envelope, the value will fall&#xD;			 *  over the duration of the decay time to it&apos;s sustain value. &#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.decay = options.decay;&#xD;	        /**&#xD;			 * 	The sustain value is the value &#xD;			 * 	which the envelope rests at after triggerAttack is&#xD;			 * 	called, but before triggerRelease is invoked. &#xD;			 *  @type {NormalRange}&#xD;			 */&#xD;	        this.sustain = options.sustain;&#xD;	        /**&#xD;			 *  After triggerRelease is called, the envelope&apos;s&#xD;			 *  value will fall to it&apos;s miminum value over the&#xD;			 *  duration of the release time. &#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.release = options.release;&#xD;	        /**&#xD;			 *  the next time the envelope is at standby&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._attackCurve = &apos;linear&apos;;&#xD;	        /**&#xD;			 *  the next time the envelope is at standby&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._releaseCurve = &apos;exponential&apos;;&#xD;	        /**&#xD;			 *  the signal&#xD;			 *  @type {Tone.TimelineSignal}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sig = this.output = new Tone.TimelineSignal();&#xD;	        this._sig.setValueAtTime(0, 0);&#xD;	        //set the attackCurve initially&#xD;	        this.attackCurve = options.attackCurve;&#xD;	        this.releaseCurve = options.releaseCurve;&#xD;	    };&#xD;	    Tone.extend(Tone.Envelope);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Envelope.defaults = {&#xD;	        &apos;attack&apos;: 0.01,&#xD;	        &apos;decay&apos;: 0.1,&#xD;	        &apos;sustain&apos;: 0.5,&#xD;	        &apos;release&apos;: 1,&#xD;	        &apos;attackCurve&apos;: &apos;linear&apos;,&#xD;	        &apos;releaseCurve&apos;: &apos;exponential&apos;&#xD;	    };&#xD;	    /**&#xD;		 * Read the current value of the envelope. Useful for &#xD;		 * syncronizing visual output to the envelope. &#xD;		 * @memberOf Tone.Envelope#&#xD;		 * @type {Number}&#xD;		 * @name value&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Envelope.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            return this.getValueAtTime(this.now());&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The shape of the attack. &#xD;		 * Can be any of these strings:&#xD;		 * &lt;ul&gt;&#xD;		 *   &lt;li&gt;linear&lt;/li&gt;&#xD;		 *   &lt;li&gt;exponential&lt;/li&gt;&#xD;		 *   &lt;li&gt;sine&lt;/li&gt;&#xD;		 *   &lt;li&gt;cosine&lt;/li&gt;&#xD;		 *   &lt;li&gt;bounce&lt;/li&gt;&#xD;		 *   &lt;li&gt;ripple&lt;/li&gt;&#xD;		 *   &lt;li&gt;step&lt;/li&gt;&#xD;		 * &lt;/ul&gt;&#xD;		 * Can also be an array which describes the curve. Values&#xD;		 * in the array are evenly subdivided and linearly&#xD;		 * interpolated over the duration of the attack. &#xD;		 * @memberOf Tone.Envelope#&#xD;		 * @type {String|Array}&#xD;		 * @name attackCurve&#xD;		 * @example&#xD;		 * env.attackCurve = "linear";&#xD;		 * @example&#xD;		 * //can also be an array&#xD;		 * env.attackCurve = [0, 0.2, 0.3, 0.4, 1]&#xD;		 */&#xD;	    Object.defineProperty(Tone.Envelope.prototype, &apos;attackCurve&apos;, {&#xD;	        get: function () {&#xD;	            if (this.isString(this._attackCurve)) {&#xD;	                return this._attackCurve;&#xD;	            } else if (this.isArray(this._attackCurve)) {&#xD;	                //look up the name in the curves array&#xD;	                for (var type in Tone.Envelope.Type) {&#xD;	                    if (Tone.Envelope.Type[type].In === this._attackCurve) {&#xD;	                        return type;&#xD;	                    }&#xD;	                }&#xD;	                //otherwise just return the array&#xD;	                return this._attackCurve;&#xD;	            }&#xD;	        },&#xD;	        set: function (curve) {&#xD;	            //check if it&apos;s a valid type&#xD;	            if (Tone.Envelope.Type.hasOwnProperty(curve)) {&#xD;	                var curveDef = Tone.Envelope.Type[curve];&#xD;	                if (this.isObject(curveDef)) {&#xD;	                    this._attackCurve = curveDef.In;&#xD;	                } else {&#xD;	                    this._attackCurve = curveDef;&#xD;	                }&#xD;	            } else if (this.isArray(curve)) {&#xD;	                this._attackCurve = curve;&#xD;	            } else {&#xD;	                throw new Error(&apos;Tone.Envelope: invalid curve: &apos; + curve);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The shape of the release. See the attack curve types. &#xD;		 * @memberOf Tone.Envelope#&#xD;		 * @type {String|Array}&#xD;		 * @name releaseCurve&#xD;		 * @example&#xD;		 * env.releaseCurve = "linear";&#xD;		 */&#xD;	    Object.defineProperty(Tone.Envelope.prototype, &apos;releaseCurve&apos;, {&#xD;	        get: function () {&#xD;	            if (this.isString(this._releaseCurve)) {&#xD;	                return this._releaseCurve;&#xD;	            } else if (this.isArray(this._releaseCurve)) {&#xD;	                //look up the name in the curves array&#xD;	                for (var type in Tone.Envelope.Type) {&#xD;	                    if (Tone.Envelope.Type[type].Out === this._releaseCurve) {&#xD;	                        return type;&#xD;	                    }&#xD;	                }&#xD;	                //otherwise just return the array&#xD;	                return this._releaseCurve;&#xD;	            }&#xD;	        },&#xD;	        set: function (curve) {&#xD;	            //check if it&apos;s a valid type&#xD;	            if (Tone.Envelope.Type.hasOwnProperty(curve)) {&#xD;	                var curveDef = Tone.Envelope.Type[curve];&#xD;	                if (this.isObject(curveDef)) {&#xD;	                    this._releaseCurve = curveDef.Out;&#xD;	                } else {&#xD;	                    this._releaseCurve = curveDef;&#xD;	                }&#xD;	            } else if (this.isArray(curve)) {&#xD;	                this._releaseCurve = curve;&#xD;	            } else {&#xD;	                throw new Error(&apos;Tone.Envelope: invalid curve: &apos; + curve);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Trigger the attack/decay portion of the ADSR envelope. &#xD;		 *  @param  {Time} [time=now] When the attack should start.&#xD;		 *  @param {NormalRange} [velocity=1] The velocity of the envelope scales the vales.&#xD;		 *                               number between 0-1&#xD;		 *  @returns {Tone.Envelope} this&#xD;		 *  @example&#xD;		 *  //trigger the attack 0.5 seconds from now with a velocity of 0.2&#xD;		 *  env.triggerAttack("+0.5", 0.2);&#xD;		 */&#xD;	    Tone.Envelope.prototype.triggerAttack = function (time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        var originalAttack = this.toSeconds(this.attack);&#xD;	        var attack = originalAttack;&#xD;	        var decay = this.toSeconds(this.decay);&#xD;	        velocity = this.defaultArg(velocity, 1);&#xD;	        //check if it&apos;s not a complete attack&#xD;	        var currentValue = this.getValueAtTime(time);&#xD;	        if (currentValue &gt; 0) {&#xD;	            //subtract the current value from the attack time&#xD;	            var attackRate = 1 / attack;&#xD;	            var remainingDistance = 1 - currentValue;&#xD;	            //the attack is now the remaining time&#xD;	            attack = remainingDistance / attackRate;&#xD;	        }&#xD;	        //attack&#xD;	        if (this._attackCurve === &apos;linear&apos;) {&#xD;	            this._sig.linearRampToValue(velocity, attack, time);&#xD;	        } else if (this._attackCurve === &apos;exponential&apos;) {&#xD;	            this._sig.exponentialRampToValue(velocity, attack, time);&#xD;	        } else if (attack &gt; 0) {&#xD;	            this._sig.setRampPoint(time);&#xD;	            var curve = this._attackCurve;&#xD;	            //take only a portion of the curve&#xD;	            if (attack &lt; originalAttack) {&#xD;	                var percentComplete = 1 - attack / originalAttack;&#xD;	                var sliceIndex = Math.floor(percentComplete * this._attackCurve.length);&#xD;	                curve = this._attackCurve.slice(sliceIndex);&#xD;	                //the first index is the current value&#xD;	                curve[0] = currentValue;&#xD;	            }&#xD;	            this._sig.setValueCurveAtTime(curve, time, attack, velocity);&#xD;	        }&#xD;	        //decay&#xD;	        this._sig.exponentialRampToValue(velocity * this.sustain, decay, attack + time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Triggers the release of the envelope.&#xD;		 *  @param  {Time} [time=now] When the release portion of the envelope should start. &#xD;		 *  @returns {Tone.Envelope} this&#xD;		 *  @example&#xD;		 *  //trigger release immediately&#xD;		 *  env.triggerRelease();&#xD;		 */&#xD;	    Tone.Envelope.prototype.triggerRelease = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        var currentValue = this.getValueAtTime(time);&#xD;	        if (currentValue &gt; 0) {&#xD;	            var release = this.toSeconds(this.release);&#xD;	            if (this._releaseCurve === &apos;linear&apos;) {&#xD;	                this._sig.linearRampToValue(0, release, time);&#xD;	            } else if (this._releaseCurve === &apos;exponential&apos;) {&#xD;	                this._sig.exponentialRampToValue(0, release, time);&#xD;	            } else {&#xD;	                var curve = this._releaseCurve;&#xD;	                if (this.isArray(curve)) {&#xD;	                    this._sig.setRampPoint(time);&#xD;	                    this._sig.setValueCurveAtTime(curve, time, release, currentValue);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get the scheduled value at the given time. This will&#xD;		 *  return the unconverted (raw) value.&#xD;		 *  @param  {Number}  time  The time in seconds.&#xD;		 *  @return  {Number}  The scheduled value at the given time.&#xD;		 */&#xD;	    Tone.Envelope.prototype.getValueAtTime = function (time) {&#xD;	        return this._sig.getValueAtTime(time);&#xD;	    };&#xD;	    /**&#xD;		 *  triggerAttackRelease is shorthand for triggerAttack, then waiting&#xD;		 *  some duration, then triggerRelease. &#xD;		 *  @param {Time} duration The duration of the sustain.&#xD;		 *  @param {Time} [time=now] When the attack should be triggered.&#xD;		 *  @param {number} [velocity=1] The velocity of the envelope. &#xD;		 *  @returns {Tone.Envelope} this&#xD;		 *  @example&#xD;		 * //trigger the attack and then the release after 0.6 seconds.&#xD;		 * env.triggerAttackRelease(0.6);&#xD;		 */&#xD;	    Tone.Envelope.prototype.triggerAttackRelease = function (duration, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.triggerAttack(time, velocity);&#xD;	        this.triggerRelease(time + this.toSeconds(duration));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancels all scheduled envelope changes after the given time.&#xD;		 *  @param  {Time} after&#xD;		 *  @returns {Tone.Envelope} this&#xD;		 */&#xD;	    Tone.Envelope.prototype.cancel = function (after) {&#xD;	        this._sig.cancelScheduledValues(after);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Borrows the connect method from Tone.Signal. &#xD;		 *  @function&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Envelope.prototype.connect = Tone.Signal.prototype.connect;&#xD;	    /**&#xD;	 	 *  Generate some complex envelope curves. &#xD;	 	 */&#xD;	    (function _createCurves() {&#xD;	        var curveLen = 128;&#xD;	        var i, k;&#xD;	        //cosine curve&#xD;	        var cosineCurve = [];&#xD;	        for (i = 0; i &lt; curveLen; i++) {&#xD;	            cosineCurve[i] = Math.sin(i / (curveLen - 1) * (Math.PI / 2));&#xD;	        }&#xD;	        //ripple curve&#xD;	        var rippleCurve = [];&#xD;	        var rippleCurveFreq = 6.4;&#xD;	        for (i = 0; i &lt; curveLen - 1; i++) {&#xD;	            k = i / (curveLen - 1);&#xD;	            var sineWave = Math.sin(k * (Math.PI * 2) * rippleCurveFreq - Math.PI / 2) + 1;&#xD;	            rippleCurve[i] = sineWave / 10 + k * 0.83;&#xD;	        }&#xD;	        rippleCurve[curveLen - 1] = 1;&#xD;	        //stairs curve&#xD;	        var stairsCurve = [];&#xD;	        var steps = 5;&#xD;	        for (i = 0; i &lt; curveLen; i++) {&#xD;	            stairsCurve[i] = Math.ceil(i / (curveLen - 1) * steps) / steps;&#xD;	        }&#xD;	        //in-out easing curve&#xD;	        var sineCurve = [];&#xD;	        for (i = 0; i &lt; curveLen; i++) {&#xD;	            k = i / (curveLen - 1);&#xD;	            sineCurve[i] = 0.5 * (1 - Math.cos(Math.PI * k));&#xD;	        }&#xD;	        //a bounce curve&#xD;	        var bounceCurve = [];&#xD;	        for (i = 0; i &lt; curveLen; i++) {&#xD;	            k = i / (curveLen - 1);&#xD;	            var freq = Math.pow(k, 3) * 4 + 0.2;&#xD;	            var val = Math.cos(freq * Math.PI * 2 * k);&#xD;	            bounceCurve[i] = Math.abs(val * (1 - k));&#xD;	        }&#xD;	        /**&#xD;			 *  Invert a value curve to make it work for the release&#xD;			 *  @private&#xD;			 */&#xD;	        function invertCurve(curve) {&#xD;	            var out = new Array(curve.length);&#xD;	            for (var j = 0; j &lt; curve.length; j++) {&#xD;	                out[j] = 1 - curve[j];&#xD;	            }&#xD;	            return out;&#xD;	        }&#xD;	        /**&#xD;			 *  reverse the curve&#xD;			 *  @private&#xD;			 */&#xD;	        function reverseCurve(curve) {&#xD;	            return curve.slice(0).reverse();&#xD;	        }&#xD;	        /**&#xD;			 *  attack and release curve arrays&#xD;			 *  @type  {Object}&#xD;			 *  @private&#xD;			 */&#xD;	        Tone.Envelope.Type = {&#xD;	            &apos;linear&apos;: &apos;linear&apos;,&#xD;	            &apos;exponential&apos;: &apos;exponential&apos;,&#xD;	            &apos;bounce&apos;: {&#xD;	                In: invertCurve(bounceCurve),&#xD;	                Out: bounceCurve&#xD;	            },&#xD;	            &apos;cosine&apos;: {&#xD;	                In: cosineCurve,&#xD;	                Out: reverseCurve(cosineCurve)&#xD;	            },&#xD;	            &apos;step&apos;: {&#xD;	                In: stairsCurve,&#xD;	                Out: invertCurve(stairsCurve)&#xD;	            },&#xD;	            &apos;ripple&apos;: {&#xD;	                In: rippleCurve,&#xD;	                Out: invertCurve(rippleCurve)&#xD;	            },&#xD;	            &apos;sine&apos;: {&#xD;	                In: sineCurve,&#xD;	                Out: invertCurve(sineCurve)&#xD;	            }&#xD;	        };&#xD;	    }());&#xD;	    /**&#xD;		 *  Disconnect and dispose.&#xD;		 *  @returns {Tone.Envelope} this&#xD;		 */&#xD;	    Tone.Envelope.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._sig.dispose();&#xD;	        this._sig = null;&#xD;	        this._attackCurve = null;&#xD;	        this._releaseCurve = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Envelope;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.AmplitudeEnvelope is a Tone.Envelope connected to a gain node. &#xD;		 *          Unlike Tone.Envelope, which outputs the envelope&apos;s value, Tone.AmplitudeEnvelope accepts&#xD;		 *          an audio signal as the input and will apply the envelope to the amplitude&#xD;		 *          of the signal. Read more about ADSR Envelopes on [Wikipedia](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope).&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Envelope}&#xD;		 *  @param {Time|Object} [attack] The amount of time it takes for the envelope to go from &#xD;		 *                               0 to it&apos;s maximum value. &#xD;		 *  @param {Time} [decay]	The period of time after the attack that it takes for the envelope&#xD;		 *                       	to fall to the sustain value. &#xD;		 *  @param {NormalRange} [sustain]	The percent of the maximum value that the envelope rests at until&#xD;		 *                                	the release is triggered. &#xD;		 *  @param {Time} [release]	The amount of time after the release is triggered it takes to reach 0. &#xD;		 *  @example&#xD;		 * var ampEnv = new Tone.AmplitudeEnvelope({&#xD;		 * 	"attack": 0.1,&#xD;		 * 	"decay": 0.2,&#xD;		 * 	"sustain": 1.0,&#xD;		 * 	"release": 0.8&#xD;		 * }).toMaster();&#xD;		 * //create an oscillator and connect it&#xD;		 * var osc = new Tone.Oscillator().connect(ampEnv).start();&#xD;		 * //trigger the envelopes attack and release "8t" apart&#xD;		 * ampEnv.triggerAttackRelease("8t");&#xD;		 */&#xD;	    Tone.AmplitudeEnvelope = function () {&#xD;	        Tone.Envelope.apply(this, arguments);&#xD;	        /**&#xD;			 *  the input node&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.input = this.output = new Tone.Gain();&#xD;	        this._sig.connect(this.output.gain);&#xD;	    };&#xD;	    Tone.extend(Tone.AmplitudeEnvelope, Tone.Envelope);&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.AmplitudeEnvelope}  this&#xD;		 */&#xD;	    Tone.AmplitudeEnvelope.prototype.dispose = function () {&#xD;	        this.input.dispose();&#xD;	        this.input = null;&#xD;	        Tone.Envelope.prototype.dispose.call(this);&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AmplitudeEnvelope;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Wrapper around the native Web Audio&apos;s &#xD;		 *          [AnalyserNode](http://webaudio.github.io/web-audio-api/#idl-def-AnalyserNode).&#xD;		 *          Extracts FFT or Waveform data from the incoming signal.&#xD;		 *  @extends {Tone}&#xD;		 *  @param {String=} type The return type of the analysis, either "fft", or "waveform". &#xD;		 *  @param {Number=} size The size of the FFT. Value must be a power of &#xD;		 *                       two in the range 32 to 32768.&#xD;		 */&#xD;	    Tone.Analyser = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;type&apos;,&#xD;	            &apos;size&apos;&#xD;	        ], Tone.Analyser.defaults);&#xD;	        /**&#xD;			 *  The analyser node.&#xD;			 *  @private&#xD;			 *  @type {AnalyserNode}&#xD;			 */&#xD;	        this._analyser = this.input = this.output = this.context.createAnalyser();&#xD;	        /**&#xD;			 *  The analysis type&#xD;			 *  @type {String}&#xD;			 *  @private&#xD;			 */&#xD;	        this._type = options.type;&#xD;	        /**&#xD;			 *  The return type of the analysis&#xD;			 *  @type {String}&#xD;			 *  @private&#xD;			 */&#xD;	        this._returnType = options.returnType;&#xD;	        /**&#xD;			 *  The buffer that the FFT data is written to&#xD;			 *  @type {TypedArray}&#xD;			 *  @private&#xD;			 */&#xD;	        this._buffer = null;&#xD;	        //set the values initially&#xD;	        this.size = options.size;&#xD;	        this.type = options.type;&#xD;	        this.returnType = options.returnType;&#xD;	        this.minDecibels = options.minDecibels;&#xD;	        this.maxDecibels = options.maxDecibels;&#xD;	    };&#xD;	    Tone.extend(Tone.Analyser);&#xD;	    /**&#xD;		 *  The default values.&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Analyser.defaults = {&#xD;	        &apos;size&apos;: 1024,&#xD;	        &apos;returnType&apos;: &apos;byte&apos;,&#xD;	        &apos;type&apos;: &apos;fft&apos;,&#xD;	        &apos;smoothing&apos;: 0.8,&#xD;	        &apos;maxDecibels&apos;: -30,&#xD;	        &apos;minDecibels&apos;: -100&#xD;	    };&#xD;	    /**&#xD;		 *  Possible return types of Tone.Analyser.analyse()&#xD;		 *  @enum {String}&#xD;		 */&#xD;	    Tone.Analyser.Type = {&#xD;	        Waveform: &apos;waveform&apos;,&#xD;	        FFT: &apos;fft&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  Possible return types of Tone.Analyser.analyse(). &#xD;		 *  byte values are between [0,255]. float values are between &#xD;		 *  [-1, 1] when the type is set to "waveform" and between &#xD;		 *  [minDecibels,maxDecibels] when the type is "fft".&#xD;		 *  @enum {String}&#xD;		 */&#xD;	    Tone.Analyser.ReturnType = {&#xD;	        Byte: &apos;byte&apos;,&#xD;	        Float: &apos;float&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  Run the analysis given the current settings and return the &#xD;		 *  result as a TypedArray. &#xD;		 *  @returns {TypedArray}&#xD;		 */&#xD;	    Tone.Analyser.prototype.analyse = function () {&#xD;	        if (this._type === Tone.Analyser.Type.FFT) {&#xD;	            if (this._returnType === Tone.Analyser.ReturnType.Byte) {&#xD;	                this._analyser.getByteFrequencyData(this._buffer);&#xD;	            } else {&#xD;	                this._analyser.getFloatFrequencyData(this._buffer);&#xD;	            }&#xD;	        } else if (this._type === Tone.Analyser.Type.Waveform) {&#xD;	            if (this._returnType === Tone.Analyser.ReturnType.Byte) {&#xD;	                this._analyser.getByteTimeDomainData(this._buffer);&#xD;	            } else {&#xD;	                if (this.isFunction(AnalyserNode.prototype.getFloatTimeDomainData)) {&#xD;	                    this._analyser.getFloatTimeDomainData(this._buffer);&#xD;	                } else {&#xD;	                    var uint8 = new Uint8Array(this._buffer.length);&#xD;	                    this._analyser.getByteTimeDomainData(uint8);&#xD;	                    //referenced https://github.com/mohayonao/get-float-time-domain-data &#xD;	                    // POLYFILL&#xD;	                    for (var i = 0; i &lt; uint8.length; i++) {&#xD;	                        this._buffer[i] = (uint8[i] - 128) * 0.0078125;&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this._buffer;&#xD;	    };&#xD;	    /**&#xD;		 *  The size of analysis. This must be a power of two in the range 32 to 32768.&#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {Number}&#xD;		 *  @name size&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;size&apos;, {&#xD;	        get: function () {&#xD;	            return this._analyser.frequencyBinCount;&#xD;	        },&#xD;	        set: function (size) {&#xD;	            this._analyser.fftSize = size * 2;&#xD;	            this.type = this._type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The return type of Tone.Analyser.analyse(), either "byte" or "float". &#xD;		 *  When the type is set to "byte" the range of values returned in the array&#xD;		 *  are between 0-255. "float" values are between &#xD;		 *  [-1, 1] when the type is set to "waveform" and between &#xD;		 *  [minDecibels,maxDecibels] when the type is "fft".&#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {String}&#xD;		 *  @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;returnType&apos;, {&#xD;	        get: function () {&#xD;	            return this._returnType;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            if (type === Tone.Analyser.ReturnType.Byte) {&#xD;	                this._buffer = new Uint8Array(this._analyser.frequencyBinCount);&#xD;	            } else if (type === Tone.Analyser.ReturnType.Float) {&#xD;	                this._buffer = new Float32Array(this._analyser.frequencyBinCount);&#xD;	            } else {&#xD;	                throw new TypeError(&apos;Tone.Analayser: invalid return type: &apos; + type);&#xD;	            }&#xD;	            this._returnType = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The analysis function returned by Tone.Analyser.analyse(), either "fft" or "waveform". &#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {String}&#xD;		 *  @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            if (type !== Tone.Analyser.Type.Waveform &amp;&amp; type !== Tone.Analyser.Type.FFT) {&#xD;	                throw new TypeError(&apos;Tone.Analyser: invalid type: &apos; + type);&#xD;	            }&#xD;	            this._type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  0 represents no time averaging with the last analysis frame.&#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name smoothing&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;smoothing&apos;, {&#xD;	        get: function () {&#xD;	            return this._analyser.smoothingTimeConstant;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            this._analyser.smoothingTimeConstant = val;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The smallest decibel value which is analysed by the FFT. &#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {Decibels}&#xD;		 *  @name minDecibels&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;minDecibels&apos;, {&#xD;	        get: function () {&#xD;	            return this._analyser.minDecibels;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            this._analyser.minDecibels = val;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The largest decibel value which is analysed by the FFT. &#xD;		 *  @memberOf Tone.Analyser#&#xD;		 *  @type {Decibels}&#xD;		 *  @name maxDecibels&#xD;		 */&#xD;	    Object.defineProperty(Tone.Analyser.prototype, &apos;maxDecibels&apos;, {&#xD;	        get: function () {&#xD;	            return this._analyser.maxDecibels;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            this._analyser.maxDecibels = val;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.Analyser}  this&#xD;		 */&#xD;	    Tone.Analyser.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._analyser.disconnect();&#xD;	        this._analyser = null;&#xD;	        this._buffer = null;&#xD;	    };&#xD;	    return Tone.Analyser;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Compressor is a thin wrapper around the Web Audio &#xD;		 *         [DynamicsCompressorNode](http://webaudio.github.io/web-audio-api/#the-dynamicscompressornode-interface).&#xD;		 *         Compression reduces the volume of loud sounds or amplifies quiet sounds &#xD;		 *         by narrowing or "compressing" an audio signal&apos;s dynamic range. &#xD;		 *         Read more on [Wikipedia](https://en.wikipedia.org/wiki/Dynamic_range_compression).&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Decibels|Object} [threshold] The value above which the compression starts to be applied.&#xD;		 *  @param {Positive} [ratio] The gain reduction ratio.&#xD;		 *  @example&#xD;		 * var comp = new Tone.Compressor(-30, 3);&#xD;		 */&#xD;	    Tone.Compressor = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;threshold&apos;,&#xD;	            &apos;ratio&apos;&#xD;	        ], Tone.Compressor.defaults);&#xD;	        /**&#xD;			 *  the compressor node&#xD;			 *  @type {DynamicsCompressorNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._compressor = this.input = this.output = this.context.createDynamicsCompressor();&#xD;	        /**&#xD;			 *  the threshold vaue&#xD;			 *  @type {Decibels}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.threshold = new Tone.Param({&#xD;	            &apos;param&apos;: this._compressor.threshold,&#xD;	            &apos;units&apos;: Tone.Type.Decibels,&#xD;	            &apos;convert&apos;: false&#xD;	        });&#xD;	        /**&#xD;			 *  The attack parameter&#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.attack = new Tone.Param(this._compressor.attack, Tone.Type.Time);&#xD;	        /**&#xD;			 *  The release parameter&#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.release = new Tone.Param(this._compressor.release, Tone.Type.Time);&#xD;	        /**&#xD;			 *  The knee parameter&#xD;			 *  @type {Decibels}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.knee = new Tone.Param({&#xD;	            &apos;param&apos;: this._compressor.knee,&#xD;	            &apos;units&apos;: Tone.Type.Decibels,&#xD;	            &apos;convert&apos;: false&#xD;	        });&#xD;	        /**&#xD;			 *  The ratio value&#xD;			 *  @type {Number}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.ratio = new Tone.Param({&#xD;	            &apos;param&apos;: this._compressor.ratio,&#xD;	            &apos;convert&apos;: false&#xD;	        });&#xD;	        //set the defaults&#xD;	        this._readOnly([&#xD;	            &apos;knee&apos;,&#xD;	            &apos;release&apos;,&#xD;	            &apos;attack&apos;,&#xD;	            &apos;ratio&apos;,&#xD;	            &apos;threshold&apos;&#xD;	        ]);&#xD;	        this.set(options);&#xD;	    };&#xD;	    Tone.extend(Tone.Compressor);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Compressor.defaults = {&#xD;	        &apos;ratio&apos;: 12,&#xD;	        &apos;threshold&apos;: -24,&#xD;	        &apos;release&apos;: 0.25,&#xD;	        &apos;attack&apos;: 0.003,&#xD;	        &apos;knee&apos;: 30&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Compressor} this&#xD;		 */&#xD;	    Tone.Compressor.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;knee&apos;,&#xD;	            &apos;release&apos;,&#xD;	            &apos;attack&apos;,&#xD;	            &apos;ratio&apos;,&#xD;	            &apos;threshold&apos;&#xD;	        ]);&#xD;	        this._compressor.disconnect();&#xD;	        this._compressor = null;&#xD;	        this.attack.dispose();&#xD;	        this.attack = null;&#xD;	        this.release.dispose();&#xD;	        this.release = null;&#xD;	        this.threshold.dispose();&#xD;	        this.threshold = null;&#xD;	        this.ratio.dispose();&#xD;	        this.ratio = null;&#xD;	        this.knee.dispose();&#xD;	        this.knee = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Compressor;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Add a signal and a number or two signals. When no value is&#xD;		 *         passed into the constructor, Tone.Add will sum &lt;code&gt;input[0]&lt;/code&gt;&#xD;		 *         and &lt;code&gt;input[1]&lt;/code&gt;. If a value is passed into the constructor, &#xD;		 *         the it will be added to the input.&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Signal}&#xD;		 *  @param {number=} value If no value is provided, Tone.Add will sum the first&#xD;		 *                         and second inputs. &#xD;		 *  @example&#xD;		 * var signal = new Tone.Signal(2);&#xD;		 * var add = new Tone.Add(2);&#xD;		 * signal.connect(add);&#xD;		 * //the output of add equals 4&#xD;		 *  @example&#xD;		 * //if constructed with no arguments&#xD;		 * //it will add the first and second inputs&#xD;		 * var add = new Tone.Add();&#xD;		 * var sig0 = new Tone.Signal(3).connect(add, 0, 0);&#xD;		 * var sig1 = new Tone.Signal(4).connect(add, 0, 1);&#xD;		 * //the output of add equals 7. &#xD;		 */&#xD;	    Tone.Add = function (value) {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  the summing node&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sum = this.input[0] = this.input[1] = this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {Tone.Signal}&#xD;			 */&#xD;	        this._param = this.input[1] = new Tone.Signal(value);&#xD;	        this._param.connect(this._sum);&#xD;	    };&#xD;	    Tone.extend(Tone.Add, Tone.Signal);&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Add} this&#xD;		 */&#xD;	    Tone.Add.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._sum.dispose();&#xD;	        this._sum = null;&#xD;	        this._param.dispose();&#xD;	        this._param = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Add;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Multiply two incoming signals. Or, if a number is given in the constructor, &#xD;		 *          multiplies the incoming signal by that value. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Signal}&#xD;		 *  @param {number=} value Constant value to multiple. If no value is provided,&#xD;		 *                         it will return the product of the first and second inputs&#xD;		 *  @example&#xD;		 * var mult = new Tone.Multiply();&#xD;		 * var sigA = new Tone.Signal(3);&#xD;		 * var sigB = new Tone.Signal(4);&#xD;		 * sigA.connect(mult, 0, 0);&#xD;		 * sigB.connect(mult, 0, 1);&#xD;		 * //output of mult is 12.&#xD;		 *  @example&#xD;		 * var mult = new Tone.Multiply(10);&#xD;		 * var sig = new Tone.Signal(2).connect(mult);&#xD;		 * //the output of mult is 20. &#xD;		 */&#xD;	    Tone.Multiply = function (value) {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  the input node is the same as the output node&#xD;			 *  it is also the GainNode which handles the scaling of incoming signal&#xD;			 *  &#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._mult = this.input[0] = this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  the scaling parameter&#xD;			 *  @type {AudioParam}&#xD;			 *  @private&#xD;			 */&#xD;	        this._param = this.input[1] = this.output.gain;&#xD;	        this._param.value = this.defaultArg(value, 0);&#xD;	    };&#xD;	    Tone.extend(Tone.Multiply, Tone.Signal);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Multiply} this&#xD;		 */&#xD;	    Tone.Multiply.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._mult.dispose();&#xD;	        this._mult = null;&#xD;	        this._param = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Multiply;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Negate the incoming signal. i.e. an input signal of 10 will output -10&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @example&#xD;		 * var neg = new Tone.Negate();&#xD;		 * var sig = new Tone.Signal(-2).connect(neg);&#xD;		 * //output of neg is positive 2. &#xD;		 */&#xD;	    Tone.Negate = function () {&#xD;	        /**&#xD;			 *  negation is done by multiplying by -1&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._multiply = this.input = this.output = new Tone.Multiply(-1);&#xD;	    };&#xD;	    Tone.extend(Tone.Negate, Tone.SignalBase);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Negate} this&#xD;		 */&#xD;	    Tone.Negate.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._multiply.dispose();&#xD;	        this._multiply = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Negate;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Subtract the signal connected to &lt;code&gt;input[1]&lt;/code&gt; from the signal connected &#xD;		 *         to &lt;code&gt;input[0]&lt;/code&gt;. If an argument is provided in the constructor, the &#xD;		 *         signals &lt;code&gt;.value&lt;/code&gt; will be subtracted from the incoming signal.&#xD;		 *&#xD;		 *  @extends {Tone.Signal}&#xD;		 *  @constructor&#xD;		 *  @param {number=} value The value to subtract from the incoming signal. If the value&#xD;		 *                         is omitted, it will subtract the second signal from the first.&#xD;		 *  @example&#xD;		 * var sub = new Tone.Subtract(1);&#xD;		 * var sig = new Tone.Signal(4).connect(sub);&#xD;		 * //the output of sub is 3. &#xD;		 *  @example&#xD;		 * var sub = new Tone.Subtract();&#xD;		 * var sigA = new Tone.Signal(10);&#xD;		 * var sigB = new Tone.Signal(2.5);&#xD;		 * sigA.connect(sub, 0, 0);&#xD;		 * sigB.connect(sub, 0, 1);&#xD;		 * //output of sub is 7.5&#xD;		 */&#xD;	    Tone.Subtract = function (value) {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  the summing node&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sum = this.input[0] = this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  negate the input of the second input before connecting it&#xD;			 *  to the summing node.&#xD;			 *  @type {Tone.Negate}&#xD;			 *  @private&#xD;			 */&#xD;	        this._neg = new Tone.Negate();&#xD;	        /**&#xD;			 *  the node where the value is set&#xD;			 *  @private&#xD;			 *  @type {Tone.Signal}&#xD;			 */&#xD;	        this._param = this.input[1] = new Tone.Signal(value);&#xD;	        this._param.chain(this._neg, this._sum);&#xD;	    };&#xD;	    Tone.extend(Tone.Subtract, Tone.Signal);&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.SignalBase} this&#xD;		 */&#xD;	    Tone.Subtract.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._neg.dispose();&#xD;	        this._neg = null;&#xD;	        this._sum.disconnect();&#xD;	        this._sum = null;&#xD;	        this._param.dispose();&#xD;	        this._param = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Subtract;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  GreaterThanZero outputs 1 when the input is strictly greater than zero&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @example&#xD;		 * var gt0 = new Tone.GreaterThanZero();&#xD;		 * var sig = new Tone.Signal(0.01).connect(gt0);&#xD;		 * //the output of gt0 is 1. &#xD;		 * sig.value = 0;&#xD;		 * //the output of gt0 is 0. &#xD;		 */&#xD;	    Tone.GreaterThanZero = function () {&#xD;	        /**&#xD;			 *  @type {Tone.WaveShaper}&#xD;			 *  @private&#xD;			 */&#xD;	        this._thresh = this.output = new Tone.WaveShaper(function (val) {&#xD;	            if (val &lt;= 0) {&#xD;	                return 0;&#xD;	            } else {&#xD;	                return 1;&#xD;	            }&#xD;	        }, 127);&#xD;	        /**&#xD;			 *  scale the first thresholded signal by a large value.&#xD;			 *  this will help with values which are very close to 0&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scale = this.input = new Tone.Multiply(10000);&#xD;	        //connections&#xD;	        this._scale.connect(this._thresh);&#xD;	    };&#xD;	    Tone.extend(Tone.GreaterThanZero, Tone.SignalBase);&#xD;	    /**&#xD;		 *  dispose method&#xD;		 *  @returns {Tone.GreaterThanZero} this&#xD;		 */&#xD;	    Tone.GreaterThanZero.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._scale.dispose();&#xD;	        this._scale = null;&#xD;	        this._thresh.dispose();&#xD;	        this._thresh = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.GreaterThanZero;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Output 1 if the signal is greater than the value, otherwise outputs 0.&#xD;		 *          can compare two signals or a signal and a number. &#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Signal}&#xD;		 *  @param {number} [value=0] the value to compare to the incoming signal&#xD;		 *  @example&#xD;		 * var gt = new Tone.GreaterThan(2);&#xD;		 * var sig = new Tone.Signal(4).connect(gt);&#xD;		 * //output of gt is equal 1. &#xD;		 */&#xD;	    Tone.GreaterThan = function (value) {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  subtract the amount from the incoming signal&#xD;			 *  @type {Tone.Subtract}&#xD;			 *  @private&#xD;			 */&#xD;	        this._param = this.input[0] = new Tone.Subtract(value);&#xD;	        this.input[1] = this._param.input[1];&#xD;	        /**&#xD;			 *  compare that amount to zero&#xD;			 *  @type {Tone.GreaterThanZero}&#xD;			 *  @private&#xD;			 */&#xD;	        this._gtz = this.output = new Tone.GreaterThanZero();&#xD;	        //connect&#xD;	        this._param.connect(this._gtz);&#xD;	    };&#xD;	    Tone.extend(Tone.GreaterThan, Tone.Signal);&#xD;	    /**&#xD;		 *  dispose method&#xD;		 *  @returns {Tone.GreaterThan} this&#xD;		 */&#xD;	    Tone.GreaterThan.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._param.dispose();&#xD;	        this._param = null;&#xD;	        this._gtz.dispose();&#xD;	        this._gtz = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.GreaterThan;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Return the absolute value of an incoming signal. &#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @example&#xD;		 * var signal = new Tone.Signal(-1);&#xD;		 * var abs = new Tone.Abs();&#xD;		 * signal.connect(abs);&#xD;		 * //the output of abs is 1. &#xD;		 */&#xD;	    Tone.Abs = function () {&#xD;	        /**&#xD;			 *  @type {Tone.LessThan}&#xD;			 *  @private&#xD;			 */&#xD;	        this._abs = this.input = this.output = new Tone.WaveShaper(function (val) {&#xD;	            if (val === 0) {&#xD;	                return 0;&#xD;	            } else {&#xD;	                return Math.abs(val);&#xD;	            }&#xD;	        }, 127);&#xD;	    };&#xD;	    Tone.extend(Tone.Abs, Tone.SignalBase);&#xD;	    /**&#xD;		 *  dispose method&#xD;		 *  @returns {Tone.Abs} this&#xD;		 */&#xD;	    Tone.Abs.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._abs.dispose();&#xD;	        this._abs = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Abs;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Signal-rate modulo operator. Only works in AudioRange [-1, 1] and for modulus&#xD;		 *         values in the NormalRange. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @param {NormalRange} modulus The modulus to apply.&#xD;		 *  @example&#xD;		 * var mod = new Tone.Modulo(0.2)&#xD;		 * var sig = new Tone.Signal(0.5).connect(mod);&#xD;		 * //mod outputs 0.1&#xD;		 */&#xD;	    Tone.Modulo = function (modulus) {&#xD;	        this.createInsOuts(1, 0);&#xD;	        /**&#xD;			 *  A waveshaper gets the integer multiple of &#xD;			 *  the input signal and the modulus.&#xD;			 *  @private&#xD;			 *  @type {Tone.WaveShaper}&#xD;			 */&#xD;	        this._shaper = new Tone.WaveShaper(Math.pow(2, 16));&#xD;	        /**&#xD;			 *  the integer multiple is multiplied by the modulus&#xD;			 *  @type  {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._multiply = new Tone.Multiply();&#xD;	        /**&#xD;			 *  and subtracted from the input signal&#xD;			 *  @type  {Tone.Subtract}&#xD;			 *  @private&#xD;			 */&#xD;	        this._subtract = this.output = new Tone.Subtract();&#xD;	        /**&#xD;			 *  the modulus signal&#xD;			 *  @type  {Tone.Signal}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modSignal = new Tone.Signal(modulus);&#xD;	        //connections&#xD;	        this.input.fan(this._shaper, this._subtract);&#xD;	        this._modSignal.connect(this._multiply, 0, 0);&#xD;	        this._shaper.connect(this._multiply, 0, 1);&#xD;	        this._multiply.connect(this._subtract, 0, 1);&#xD;	        this._setWaveShaper(modulus);&#xD;	    };&#xD;	    Tone.extend(Tone.Modulo, Tone.SignalBase);&#xD;	    /**&#xD;		 *  @param  {number}  mod  the modulus to apply&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Modulo.prototype._setWaveShaper = function (mod) {&#xD;	        this._shaper.setMap(function (val) {&#xD;	            var multiple = Math.floor((val + 0.0001) / mod);&#xD;	            return multiple;&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 * The modulus value.&#xD;		 * @memberOf Tone.Modulo#&#xD;		 * @type {NormalRange}&#xD;		 * @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.Modulo.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            return this._modSignal.value;&#xD;	        },&#xD;	        set: function (mod) {&#xD;	            this._modSignal.value = mod;&#xD;	            this._setWaveShaper(mod);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * clean up&#xD;		 *  @returns {Tone.Modulo} this&#xD;		 */&#xD;	    Tone.Modulo.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._shaper.dispose();&#xD;	        this._shaper = null;&#xD;	        this._multiply.dispose();&#xD;	        this._multiply = null;&#xD;	        this._subtract.dispose();&#xD;	        this._subtract = null;&#xD;	        this._modSignal.dispose();&#xD;	        this._modSignal = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Modulo;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class AudioToGain converts an input in AudioRange [-1,1] to NormalRange [0,1]. &#xD;		 *         See Tone.GainToAudio.&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @example&#xD;		 *  var a2g = new Tone.AudioToGain();&#xD;		 */&#xD;	    Tone.AudioToGain = function () {&#xD;	        /**&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._norm = this.input = this.output = new Tone.WaveShaper(function (x) {&#xD;	            return (x + 1) / 2;&#xD;	        });&#xD;	    };&#xD;	    Tone.extend(Tone.AudioToGain, Tone.SignalBase);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.AudioToGain} this&#xD;		 */&#xD;	    Tone.AudioToGain.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._norm.dispose();&#xD;	        this._norm = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AudioToGain;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Evaluate an expression at audio rate. &lt;br&gt;&lt;br&gt;&#xD;		 *         Parsing code modified from https://code.google.com/p/tapdigit/&#xD;		 *         Copyright 2011 2012 Ariya Hidayat, New BSD License&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @param {string} expr the expression to generate&#xD;		 *  @example&#xD;		 * //adds the signals from input[0] and input[1].&#xD;		 * var expr = new Tone.Expr("$0 + $1");&#xD;		 */&#xD;	    Tone.Expr = function () {&#xD;	        var expr = this._replacements(Array.prototype.slice.call(arguments));&#xD;	        var inputCount = this._parseInputs(expr);&#xD;	        /**&#xD;			 *  hold onto all of the nodes for disposal&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._nodes = [];&#xD;	        /**&#xD;			 *  The inputs. The length is determined by the expression. &#xD;			 *  @type {Array}&#xD;			 */&#xD;	        this.input = new Array(inputCount);&#xD;	        //create a gain for each input&#xD;	        for (var i = 0; i &lt; inputCount; i++) {&#xD;	            this.input[i] = this.context.createGain();&#xD;	        }&#xD;	        //parse the syntax tree&#xD;	        var tree = this._parseTree(expr);&#xD;	        //evaluate the results&#xD;	        var result;&#xD;	        try {&#xD;	            result = this._eval(tree);&#xD;	        } catch (e) {&#xD;	            this._disposeNodes();&#xD;	            throw new Error(&apos;Tone.Expr: Could evaluate expression: &apos; + expr);&#xD;	        }&#xD;	        /**&#xD;			 *  The output node is the result of the expression&#xD;			 *  @type {Tone}&#xD;			 */&#xD;	        this.output = result;&#xD;	    };&#xD;	    Tone.extend(Tone.Expr, Tone.SignalBase);&#xD;	    //some helpers to cut down the amount of code&#xD;	    function applyBinary(Constructor, args, self) {&#xD;	        var op = new Constructor();&#xD;	        self._eval(args[0]).connect(op, 0, 0);&#xD;	        self._eval(args[1]).connect(op, 0, 1);&#xD;	        return op;&#xD;	    }&#xD;	    function applyUnary(Constructor, args, self) {&#xD;	        var op = new Constructor();&#xD;	        self._eval(args[0]).connect(op, 0, 0);&#xD;	        return op;&#xD;	    }&#xD;	    function getNumber(arg) {&#xD;	        return arg ? parseFloat(arg) : undefined;&#xD;	    }&#xD;	    function literalNumber(arg) {&#xD;	        return arg &amp;&amp; arg.args ? parseFloat(arg.args) : undefined;&#xD;	    }&#xD;	    /*&#xD;		 *  the Expressions that Tone.Expr can parse.&#xD;		 *&#xD;		 *  each expression belongs to a group and contains a regexp &#xD;		 *  for selecting the operator as well as that operators method&#xD;		 *  &#xD;		 *  @type {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr._Expressions = {&#xD;	        //values&#xD;	        &apos;value&apos;: {&#xD;	            &apos;signal&apos;: {&#xD;	                regexp: /^\d+\.\d+|^\d+/,&#xD;	                method: function (arg) {&#xD;	                    var sig = new Tone.Signal(getNumber(arg));&#xD;	                    return sig;&#xD;	                }&#xD;	            },&#xD;	            &apos;input&apos;: {&#xD;	                regexp: /^\$\d/,&#xD;	                method: function (arg, self) {&#xD;	                    return self.input[getNumber(arg.substr(1))];&#xD;	                }&#xD;	            }&#xD;	        },&#xD;	        //syntactic glue&#xD;	        &apos;glue&apos;: {&#xD;	            &apos;(&apos;: { regexp: /^\(/ },&#xD;	            &apos;)&apos;: { regexp: /^\)/ },&#xD;	            &apos;,&apos;: { regexp: /^,/ }&#xD;	        },&#xD;	        //functions&#xD;	        &apos;func&apos;: {&#xD;	            &apos;abs&apos;: {&#xD;	                regexp: /^abs/,&#xD;	                method: applyUnary.bind(this, Tone.Abs)&#xD;	            },&#xD;	            &apos;mod&apos;: {&#xD;	                regexp: /^mod/,&#xD;	                method: function (args, self) {&#xD;	                    var modulus = literalNumber(args[1]);&#xD;	                    var op = new Tone.Modulo(modulus);&#xD;	                    self._eval(args[0]).connect(op);&#xD;	                    return op;&#xD;	                }&#xD;	            },&#xD;	            &apos;pow&apos;: {&#xD;	                regexp: /^pow/,&#xD;	                method: function (args, self) {&#xD;	                    var exp = literalNumber(args[1]);&#xD;	                    var op = new Tone.Pow(exp);&#xD;	                    self._eval(args[0]).connect(op);&#xD;	                    return op;&#xD;	                }&#xD;	            },&#xD;	            &apos;a2g&apos;: {&#xD;	                regexp: /^a2g/,&#xD;	                method: function (args, self) {&#xD;	                    var op = new Tone.AudioToGain();&#xD;	                    self._eval(args[0]).connect(op);&#xD;	                    return op;&#xD;	                }&#xD;	            }&#xD;	        },&#xD;	        //binary expressions&#xD;	        &apos;binary&apos;: {&#xD;	            &apos;+&apos;: {&#xD;	                regexp: /^\+/,&#xD;	                precedence: 1,&#xD;	                method: applyBinary.bind(this, Tone.Add)&#xD;	            },&#xD;	            &apos;-&apos;: {&#xD;	                regexp: /^\-/,&#xD;	                precedence: 1,&#xD;	                method: function (args, self) {&#xD;	                    //both unary and binary op&#xD;	                    if (args.length === 1) {&#xD;	                        return applyUnary(Tone.Negate, args, self);&#xD;	                    } else {&#xD;	                        return applyBinary(Tone.Subtract, args, self);&#xD;	                    }&#xD;	                }&#xD;	            },&#xD;	            &apos;*&apos;: {&#xD;	                regexp: /^\*/,&#xD;	                precedence: 0,&#xD;	                method: applyBinary.bind(this, Tone.Multiply)&#xD;	            }&#xD;	        },&#xD;	        //unary expressions&#xD;	        &apos;unary&apos;: {&#xD;	            &apos;-&apos;: {&#xD;	                regexp: /^\-/,&#xD;	                method: applyUnary.bind(this, Tone.Negate)&#xD;	            },&#xD;	            &apos;!&apos;: {&#xD;	                regexp: /^\!/,&#xD;	                method: applyUnary.bind(this, Tone.NOT)&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  @param   {string} expr the expression string&#xD;		 *  @return  {number}      the input count&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._parseInputs = function (expr) {&#xD;	        var inputArray = expr.match(/\$\d/g);&#xD;	        var inputMax = 0;&#xD;	        if (inputArray !== null) {&#xD;	            for (var i = 0; i &lt; inputArray.length; i++) {&#xD;	                var inputNum = parseInt(inputArray[i].substr(1)) + 1;&#xD;	                inputMax = Math.max(inputMax, inputNum);&#xD;	            }&#xD;	        }&#xD;	        return inputMax;&#xD;	    };&#xD;	    /**&#xD;		 *  @param   {Array} args 	an array of arguments&#xD;		 *  @return  {string} the results of the replacements being replaced&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._replacements = function (args) {&#xD;	        var expr = args.shift();&#xD;	        for (var i = 0; i &lt; args.length; i++) {&#xD;	            expr = expr.replace(/\%/i, args[i]);&#xD;	        }&#xD;	        return expr;&#xD;	    };&#xD;	    /**&#xD;		 *  tokenize the expression based on the Expressions object&#xD;		 *  @param   {string} expr &#xD;		 *  @return  {Object}      returns two methods on the tokenized list, next and peek&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._tokenize = function (expr) {&#xD;	        var position = -1;&#xD;	        var tokens = [];&#xD;	        while (expr.length &gt; 0) {&#xD;	            expr = expr.trim();&#xD;	            var token = getNextToken(expr);&#xD;	            tokens.push(token);&#xD;	            expr = expr.substr(token.value.length);&#xD;	        }&#xD;	        function getNextToken(expr) {&#xD;	            for (var type in Tone.Expr._Expressions) {&#xD;	                var group = Tone.Expr._Expressions[type];&#xD;	                for (var opName in group) {&#xD;	                    var op = group[opName];&#xD;	                    var reg = op.regexp;&#xD;	                    var match = expr.match(reg);&#xD;	                    if (match !== null) {&#xD;	                        return {&#xD;	                            type: type,&#xD;	                            value: match[0],&#xD;	                            method: op.method&#xD;	                        };&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	            throw new SyntaxError(&apos;Tone.Expr: Unexpected token &apos; + expr);&#xD;	        }&#xD;	        return {&#xD;	            next: function () {&#xD;	                return tokens[++position];&#xD;	            },&#xD;	            peek: function () {&#xD;	                return tokens[position + 1];&#xD;	            }&#xD;	        };&#xD;	    };&#xD;	    /**&#xD;		 *  recursively parse the string expression into a syntax tree&#xD;		 *  &#xD;		 *  @param   {string} expr &#xD;		 *  @return  {Object}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._parseTree = function (expr) {&#xD;	        var lexer = this._tokenize(expr);&#xD;	        var isUndef = this.isUndef.bind(this);&#xD;	        function matchSyntax(token, syn) {&#xD;	            return !isUndef(token) &amp;&amp; token.type === &apos;glue&apos; &amp;&amp; token.value === syn;&#xD;	        }&#xD;	        function matchGroup(token, groupName, prec) {&#xD;	            var ret = false;&#xD;	            var group = Tone.Expr._Expressions[groupName];&#xD;	            if (!isUndef(token)) {&#xD;	                for (var opName in group) {&#xD;	                    var op = group[opName];&#xD;	                    if (op.regexp.test(token.value)) {&#xD;	                        if (!isUndef(prec)) {&#xD;	                            if (op.precedence === prec) {&#xD;	                                return true;&#xD;	                            }&#xD;	                        } else {&#xD;	                            return true;&#xD;	                        }&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	            return ret;&#xD;	        }&#xD;	        function parseExpression(precedence) {&#xD;	            if (isUndef(precedence)) {&#xD;	                precedence = 5;&#xD;	            }&#xD;	            var expr;&#xD;	            if (precedence &lt; 0) {&#xD;	                expr = parseUnary();&#xD;	            } else {&#xD;	                expr = parseExpression(precedence - 1);&#xD;	            }&#xD;	            var token = lexer.peek();&#xD;	            while (matchGroup(token, &apos;binary&apos;, precedence)) {&#xD;	                token = lexer.next();&#xD;	                expr = {&#xD;	                    operator: token.value,&#xD;	                    method: token.method,&#xD;	                    args: [&#xD;	                        expr,&#xD;	                        parseExpression(precedence - 1)&#xD;	                    ]&#xD;	                };&#xD;	                token = lexer.peek();&#xD;	            }&#xD;	            return expr;&#xD;	        }&#xD;	        function parseUnary() {&#xD;	            var token, expr;&#xD;	            token = lexer.peek();&#xD;	            if (matchGroup(token, &apos;unary&apos;)) {&#xD;	                token = lexer.next();&#xD;	                expr = parseUnary();&#xD;	                return {&#xD;	                    operator: token.value,&#xD;	                    method: token.method,&#xD;	                    args: [expr]&#xD;	                };&#xD;	            }&#xD;	            return parsePrimary();&#xD;	        }&#xD;	        function parsePrimary() {&#xD;	            var token, expr;&#xD;	            token = lexer.peek();&#xD;	            if (isUndef(token)) {&#xD;	                throw new SyntaxError(&apos;Tone.Expr: Unexpected termination of expression&apos;);&#xD;	            }&#xD;	            if (token.type === &apos;func&apos;) {&#xD;	                token = lexer.next();&#xD;	                return parseFunctionCall(token);&#xD;	            }&#xD;	            if (token.type === &apos;value&apos;) {&#xD;	                token = lexer.next();&#xD;	                return {&#xD;	                    method: token.method,&#xD;	                    args: token.value&#xD;	                };&#xD;	            }&#xD;	            if (matchSyntax(token, &apos;(&apos;)) {&#xD;	                lexer.next();&#xD;	                expr = parseExpression();&#xD;	                token = lexer.next();&#xD;	                if (!matchSyntax(token, &apos;)&apos;)) {&#xD;	                    throw new SyntaxError(&apos;Expected )&apos;);&#xD;	                }&#xD;	                return expr;&#xD;	            }&#xD;	            throw new SyntaxError(&apos;Tone.Expr: Parse error, cannot process token &apos; + token.value);&#xD;	        }&#xD;	        function parseFunctionCall(func) {&#xD;	            var token, args = [];&#xD;	            token = lexer.next();&#xD;	            if (!matchSyntax(token, &apos;(&apos;)) {&#xD;	                throw new SyntaxError(&apos;Tone.Expr: Expected ( in a function call "&apos; + func.value + &apos;"&apos;);&#xD;	            }&#xD;	            token = lexer.peek();&#xD;	            if (!matchSyntax(token, &apos;)&apos;)) {&#xD;	                args = parseArgumentList();&#xD;	            }&#xD;	            token = lexer.next();&#xD;	            if (!matchSyntax(token, &apos;)&apos;)) {&#xD;	                throw new SyntaxError(&apos;Tone.Expr: Expected ) in a function call "&apos; + func.value + &apos;"&apos;);&#xD;	            }&#xD;	            return {&#xD;	                method: func.method,&#xD;	                args: args,&#xD;	                name: name&#xD;	            };&#xD;	        }&#xD;	        function parseArgumentList() {&#xD;	            var token, expr, args = [];&#xD;	            while (true) {&#xD;	                expr = parseExpression();&#xD;	                if (isUndef(expr)) {&#xD;	                    // TODO maybe throw exception?&#xD;	                    break;&#xD;	                }&#xD;	                args.push(expr);&#xD;	                token = lexer.peek();&#xD;	                if (!matchSyntax(token, &apos;,&apos;)) {&#xD;	                    break;&#xD;	                }&#xD;	                lexer.next();&#xD;	            }&#xD;	            return args;&#xD;	        }&#xD;	        return parseExpression();&#xD;	    };&#xD;	    /**&#xD;		 *  recursively evaluate the expression tree&#xD;		 *  @param   {Object} tree &#xD;		 *  @return  {AudioNode}      the resulting audio node from the expression&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._eval = function (tree) {&#xD;	        if (!this.isUndef(tree)) {&#xD;	            var node = tree.method(tree.args, this);&#xD;	            this._nodes.push(node);&#xD;	            return node;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  dispose all the nodes&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Expr.prototype._disposeNodes = function () {&#xD;	        for (var i = 0; i &lt; this._nodes.length; i++) {&#xD;	            var node = this._nodes[i];&#xD;	            if (this.isFunction(node.dispose)) {&#xD;	                node.dispose();&#xD;	            } else if (this.isFunction(node.disconnect)) {&#xD;	                node.disconnect();&#xD;	            }&#xD;	            node = null;&#xD;	            this._nodes[i] = null;&#xD;	        }&#xD;	        this._nodes = null;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 */&#xD;	    Tone.Expr.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._disposeNodes();&#xD;	    };&#xD;	    return Tone.Expr;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Convert an incoming signal between 0, 1 to an equal power gain scale.&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @example&#xD;		 * var eqPowGain = new Tone.EqualPowerGain();&#xD;		 */&#xD;	    Tone.EqualPowerGain = function () {&#xD;	        /**&#xD;			 *  @type {Tone.WaveShaper}&#xD;			 *  @private&#xD;			 */&#xD;	        this._eqPower = this.input = this.output = new Tone.WaveShaper(function (val) {&#xD;	            if (Math.abs(val) &lt; 0.001) {&#xD;	                //should output 0 when input is 0&#xD;	                return 0;&#xD;	            } else {&#xD;	                return this.equalPowerScale(val);&#xD;	            }&#xD;	        }.bind(this), 4096);&#xD;	    };&#xD;	    Tone.extend(Tone.EqualPowerGain, Tone.SignalBase);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.EqualPowerGain} this&#xD;		 */&#xD;	    Tone.EqualPowerGain.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._eqPower.dispose();&#xD;	        this._eqPower = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.EqualPowerGain;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 * @class  Tone.Crossfade provides equal power fading between two inputs. &#xD;		 *         More on crossfading technique [here](https://en.wikipedia.org/wiki/Fade_(audio_engineering)#Crossfading).&#xD;		 *&#xD;		 * @constructor&#xD;		 * @extends {Tone}&#xD;		 * @param {NormalRange} [initialFade=0.5]&#xD;		 * @example&#xD;		 * var crossFade = new Tone.CrossFade(0.5);&#xD;		 * //connect effect A to crossfade from&#xD;		 * //effect output 0 to crossfade input 0&#xD;		 * effectA.connect(crossFade, 0, 0);&#xD;		 * //connect effect B to crossfade from&#xD;		 * //effect output 0 to crossfade input 1&#xD;		 * effectB.connect(crossFade, 0, 1);&#xD;		 * crossFade.fade.value = 0;&#xD;		 * // ^ only effectA is output&#xD;		 * crossFade.fade.value = 1;&#xD;		 * // ^ only effectB is output&#xD;		 * crossFade.fade.value = 0.5;&#xD;		 * // ^ the two signals are mixed equally. &#xD;		 */&#xD;	    Tone.CrossFade = function (initialFade) {&#xD;	        this.createInsOuts(2, 1);&#xD;	        /**&#xD;			 *  Alias for &lt;code&gt;input[0]&lt;/code&gt;. &#xD;			 *  @type {Tone.Gain}&#xD;			 */&#xD;	        this.a = this.input[0] = new Tone.Gain();&#xD;	        /**&#xD;			 *  Alias for &lt;code&gt;input[1]&lt;/code&gt;. &#xD;			 *  @type {Tone.Gain}&#xD;			 */&#xD;	        this.b = this.input[1] = new Tone.Gain();&#xD;	        /**&#xD;			 * 	The mix between the two inputs. A fade value of 0&#xD;			 * 	will output 100% &lt;code&gt;input[0]&lt;/code&gt; and &#xD;			 * 	a value of 1 will output 100% &lt;code&gt;input[1]&lt;/code&gt;. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.fade = new Tone.Signal(this.defaultArg(initialFade, 0.5), Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  equal power gain cross fade&#xD;			 *  @private&#xD;			 *  @type {Tone.EqualPowerGain}&#xD;			 */&#xD;	        this._equalPowerA = new Tone.EqualPowerGain();&#xD;	        /**&#xD;			 *  equal power gain cross fade&#xD;			 *  @private&#xD;			 *  @type {Tone.EqualPowerGain}&#xD;			 */&#xD;	        this._equalPowerB = new Tone.EqualPowerGain();&#xD;	        /**&#xD;			 *  invert the incoming signal&#xD;			 *  @private&#xD;			 *  @type {Tone}&#xD;			 */&#xD;	        this._invert = new Tone.Expr(&apos;1 - $0&apos;);&#xD;	        //connections&#xD;	        this.a.connect(this.output);&#xD;	        this.b.connect(this.output);&#xD;	        this.fade.chain(this._equalPowerB, this.b.gain);&#xD;	        this.fade.chain(this._invert, this._equalPowerA, this.a.gain);&#xD;	        this._readOnly(&apos;fade&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.CrossFade);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.CrossFade} this&#xD;		 */&#xD;	    Tone.CrossFade.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable(&apos;fade&apos;);&#xD;	        this._equalPowerA.dispose();&#xD;	        this._equalPowerA = null;&#xD;	        this._equalPowerB.dispose();&#xD;	        this._equalPowerB = null;&#xD;	        this.fade.dispose();&#xD;	        this.fade = null;&#xD;	        this._invert.dispose();&#xD;	        this._invert = null;&#xD;	        this.a.dispose();&#xD;	        this.a = null;&#xD;	        this.b.dispose();&#xD;	        this.b = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.CrossFade;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Filter is a filter which allows for all of the same native methods&#xD;		 *          as the [BiquadFilterNode](http://webaudio.github.io/web-audio-api/#the-biquadfilternode-interface). &#xD;		 *          Tone.Filter has the added ability to set the filter rolloff at -12 &#xD;		 *          (default), -24 and -48. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Frequency|Object} [frequency] The cutoff frequency of the filter.&#xD;		 *  @param {string=} type The type of filter.&#xD;		 *  @param {number=} rolloff The drop in decibels per octave after the cutoff frequency.&#xD;		 *                            3 choices: -12, -24, and -48&#xD;		 *  @example&#xD;		 *  var filter = new Tone.Filter(200, "highpass");&#xD;		 */&#xD;	    Tone.Filter = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;,&#xD;	            &apos;rolloff&apos;&#xD;	        ], Tone.Filter.defaults);&#xD;	        /**&#xD;			 *  the filter(s)&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._filters = [];&#xD;	        /**&#xD;			 *  The cutoff frequency of the filter. &#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune parameter&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(0, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  The gain of the filter, only used in certain filter types&#xD;			 *  @type {Number}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.gain = new Tone.Signal({&#xD;	            &apos;value&apos;: options.gain,&#xD;	            &apos;convert&apos;: false&#xD;	        });&#xD;	        /**&#xD;			 *  The Q or Quality of the filter&#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.Q = new Tone.Signal(options.Q);&#xD;	        /**&#xD;			 *  the type of the filter&#xD;			 *  @type {string}&#xD;			 *  @private&#xD;			 */&#xD;	        this._type = options.type;&#xD;	        /**&#xD;			 *  the rolloff value of the filter&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._rolloff = options.rolloff;&#xD;	        //set the rolloff;&#xD;	        this.rolloff = options.rolloff;&#xD;	        this._readOnly([&#xD;	            &apos;detune&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;gain&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.Filter);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Filter.defaults = {&#xD;	        &apos;type&apos;: &apos;lowpass&apos;,&#xD;	        &apos;frequency&apos;: 350,&#xD;	        &apos;rolloff&apos;: -12,&#xD;	        &apos;Q&apos;: 1,&#xD;	        &apos;gain&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 * The type of the filter. Types: "lowpass", "highpass", &#xD;		 * "bandpass", "lowshelf", "highshelf", "notch", "allpass", or "peaking". &#xD;		 * @memberOf Tone.Filter#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Filter.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            var types = [&#xD;	                &apos;lowpass&apos;,&#xD;	                &apos;highpass&apos;,&#xD;	                &apos;bandpass&apos;,&#xD;	                &apos;lowshelf&apos;,&#xD;	                &apos;highshelf&apos;,&#xD;	                &apos;notch&apos;,&#xD;	                &apos;allpass&apos;,&#xD;	                &apos;peaking&apos;&#xD;	            ];&#xD;	            if (types.indexOf(type) === -1) {&#xD;	                throw new TypeError(&apos;Tone.Filter: invalid type &apos; + type);&#xD;	            }&#xD;	            this._type = type;&#xD;	            for (var i = 0; i &lt; this._filters.length; i++) {&#xD;	                this._filters[i].type = type;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The rolloff of the filter which is the drop in db&#xD;		 * per octave. Implemented internally by cascading filters.&#xD;		 * Only accepts the values -12, -24, -48 and -96.&#xD;		 * @memberOf Tone.Filter#&#xD;		 * @type {number}&#xD;		 * @name rolloff&#xD;		 */&#xD;	    Object.defineProperty(Tone.Filter.prototype, &apos;rolloff&apos;, {&#xD;	        get: function () {&#xD;	            return this._rolloff;&#xD;	        },&#xD;	        set: function (rolloff) {&#xD;	            rolloff = parseInt(rolloff, 10);&#xD;	            var possibilities = [&#xD;	                -12,&#xD;	                -24,&#xD;	                -48,&#xD;	                -96&#xD;	            ];&#xD;	            var cascadingCount = possibilities.indexOf(rolloff);&#xD;	            //check the rolloff is valid&#xD;	            if (cascadingCount === -1) {&#xD;	                throw new RangeError(&apos;Tone.Filter: rolloff can only be -12, -24, -48 or -96&apos;);&#xD;	            }&#xD;	            cascadingCount += 1;&#xD;	            this._rolloff = rolloff;&#xD;	            //first disconnect the filters and throw them away&#xD;	            this.input.disconnect();&#xD;	            for (var i = 0; i &lt; this._filters.length; i++) {&#xD;	                this._filters[i].disconnect();&#xD;	                this._filters[i] = null;&#xD;	            }&#xD;	            this._filters = new Array(cascadingCount);&#xD;	            for (var count = 0; count &lt; cascadingCount; count++) {&#xD;	                var filter = this.context.createBiquadFilter();&#xD;	                filter.type = this._type;&#xD;	                this.frequency.connect(filter.frequency);&#xD;	                this.detune.connect(filter.detune);&#xD;	                this.Q.connect(filter.Q);&#xD;	                this.gain.connect(filter.gain);&#xD;	                this._filters[count] = filter;&#xD;	            }&#xD;	            //connect them up&#xD;	            var connectionChain = [this.input].concat(this._filters).concat([this.output]);&#xD;	            this.connectSeries.apply(this, connectionChain);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @return {Tone.Filter} this&#xD;		 */&#xD;	    Tone.Filter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        for (var i = 0; i &lt; this._filters.length; i++) {&#xD;	            this._filters[i].disconnect();&#xD;	            this._filters[i] = null;&#xD;	        }&#xD;	        this._filters = null;&#xD;	        this._writable([&#xD;	            &apos;detune&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;gain&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	        this.frequency.dispose();&#xD;	        this.Q.dispose();&#xD;	        this.frequency = null;&#xD;	        this.Q = null;&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this.gain.dispose();&#xD;	        this.gain = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Filter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Split the incoming signal into three bands (low, mid, high)&#xD;		 *         with two crossover frequency controls. &#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency|Object} [lowFrequency] the low/mid crossover frequency&#xD;		 *  @param {Frequency} [highFrequency] the mid/high crossover frequency&#xD;		 */&#xD;	    Tone.MultibandSplit = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;lowFrequency&apos;,&#xD;	            &apos;highFrequency&apos;&#xD;	        ], Tone.MultibandSplit.defaults);&#xD;	        /**&#xD;			 *  the input&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this.input = new Tone.Gain();&#xD;	        /**&#xD;			 *  the outputs&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this.output = new Array(3);&#xD;	        /**&#xD;			 *  The low band. Alias for &lt;code&gt;output[0]&lt;/code&gt;&#xD;			 *  @type {Tone.Filter}&#xD;			 */&#xD;	        this.low = this.output[0] = new Tone.Filter(0, &apos;lowpass&apos;);&#xD;	        /**&#xD;			 *  the lower filter of the mid band&#xD;			 *  @type {Tone.Filter}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lowMidFilter = new Tone.Filter(0, &apos;highpass&apos;);&#xD;	        /**&#xD;			 *  The mid band output. Alias for &lt;code&gt;output[1]&lt;/code&gt;&#xD;			 *  @type {Tone.Filter}&#xD;			 */&#xD;	        this.mid = this.output[1] = new Tone.Filter(0, &apos;lowpass&apos;);&#xD;	        /**&#xD;			 *  The high band output. Alias for &lt;code&gt;output[2]&lt;/code&gt;&#xD;			 *  @type {Tone.Filter}&#xD;			 */&#xD;	        this.high = this.output[2] = new Tone.Filter(0, &apos;highpass&apos;);&#xD;	        /**&#xD;			 *  The low/mid crossover frequency.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.lowFrequency = new Tone.Signal(options.lowFrequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The mid/high crossover frequency.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.highFrequency = new Tone.Signal(options.highFrequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The quality of all the filters&#xD;			 *  @type {Number}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.Q = new Tone.Signal(options.Q);&#xD;	        this.input.fan(this.low, this.high);&#xD;	        this.input.chain(this._lowMidFilter, this.mid);&#xD;	        //the frequency control signal&#xD;	        this.lowFrequency.connect(this.low.frequency);&#xD;	        this.lowFrequency.connect(this._lowMidFilter.frequency);&#xD;	        this.highFrequency.connect(this.mid.frequency);&#xD;	        this.highFrequency.connect(this.high.frequency);&#xD;	        //the Q value&#xD;	        this.Q.connect(this.low.Q);&#xD;	        this.Q.connect(this._lowMidFilter.Q);&#xD;	        this.Q.connect(this.mid.Q);&#xD;	        this.Q.connect(this.high.Q);&#xD;	        this._readOnly([&#xD;	            &apos;high&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;low&apos;,&#xD;	            &apos;highFrequency&apos;,&#xD;	            &apos;lowFrequency&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.MultibandSplit);&#xD;	    /**&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MultibandSplit.defaults = {&#xD;	        &apos;lowFrequency&apos;: 400,&#xD;	        &apos;highFrequency&apos;: 2500,&#xD;	        &apos;Q&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.MultibandSplit} this&#xD;		 */&#xD;	    Tone.MultibandSplit.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;high&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;low&apos;,&#xD;	            &apos;highFrequency&apos;,&#xD;	            &apos;lowFrequency&apos;&#xD;	        ]);&#xD;	        this.low.dispose();&#xD;	        this.low = null;&#xD;	        this._lowMidFilter.dispose();&#xD;	        this._lowMidFilter = null;&#xD;	        this.mid.dispose();&#xD;	        this.mid = null;&#xD;	        this.high.dispose();&#xD;	        this.high = null;&#xD;	        this.lowFrequency.dispose();&#xD;	        this.lowFrequency = null;&#xD;	        this.highFrequency.dispose();&#xD;	        this.highFrequency = null;&#xD;	        this.Q.dispose();&#xD;	        this.Q = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MultibandSplit;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.EQ3 is a three band EQ with control over low, mid, and high gain as&#xD;		 *         well as the low and high crossover frequencies.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  &#xD;		 *  @param {Decibels|Object} [lowLevel] The gain applied to the lows.&#xD;		 *  @param {Decibels} [midLevel] The gain applied to the mid.&#xD;		 *  @param {Decibels} [highLevel] The gain applied to the high.&#xD;		 *  @example&#xD;		 * var eq = new Tone.EQ3(-10, 3, -20);&#xD;		 */&#xD;	    Tone.EQ3 = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;low&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;high&apos;&#xD;	        ], Tone.EQ3.defaults);&#xD;	        /**&#xD;			 *  the output node&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  the multiband split&#xD;			 *  @type {Tone.MultibandSplit}&#xD;			 *  @private&#xD;			 */&#xD;	        this._multibandSplit = this.input = new Tone.MultibandSplit({&#xD;	            &apos;lowFrequency&apos;: options.lowFrequency,&#xD;	            &apos;highFrequency&apos;: options.highFrequency&#xD;	        });&#xD;	        /**&#xD;			 *  The gain for the lower signals&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lowGain = new Tone.Gain(options.low, Tone.Type.Decibels);&#xD;	        /**&#xD;			 *  The gain for the mid signals&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midGain = new Tone.Gain(options.mid, Tone.Type.Decibels);&#xD;	        /**&#xD;			 * The gain in decibels of the high part&#xD;			 * @type {Tone.Gain}&#xD;			 * @private&#xD;			 */&#xD;	        this._highGain = new Tone.Gain(options.high, Tone.Type.Decibels);&#xD;	        /**&#xD;			 * The gain in decibels of the low part&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 */&#xD;	        this.low = this._lowGain.gain;&#xD;	        /**&#xD;			 * The gain in decibels of the mid part&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 */&#xD;	        this.mid = this._midGain.gain;&#xD;	        /**&#xD;			 * The gain in decibels of the high part&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 */&#xD;	        this.high = this._highGain.gain;&#xD;	        /**&#xD;			 *  The Q value for all of the filters. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.Q = this._multibandSplit.Q;&#xD;	        /**&#xD;			 *  The low/mid crossover frequency. &#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.lowFrequency = this._multibandSplit.lowFrequency;&#xD;	        /**&#xD;			 *  The mid/high crossover frequency. &#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.highFrequency = this._multibandSplit.highFrequency;&#xD;	        //the frequency bands&#xD;	        this._multibandSplit.low.chain(this._lowGain, this.output);&#xD;	        this._multibandSplit.mid.chain(this._midGain, this.output);&#xD;	        this._multibandSplit.high.chain(this._highGain, this.output);&#xD;	        this._readOnly([&#xD;	            &apos;low&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;high&apos;,&#xD;	            &apos;lowFrequency&apos;,&#xD;	            &apos;highFrequency&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.EQ3);&#xD;	    /**&#xD;		 *  the default values&#xD;		 */&#xD;	    Tone.EQ3.defaults = {&#xD;	        &apos;low&apos;: 0,&#xD;	        &apos;mid&apos;: 0,&#xD;	        &apos;high&apos;: 0,&#xD;	        &apos;lowFrequency&apos;: 400,&#xD;	        &apos;highFrequency&apos;: 2500&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.EQ3} this&#xD;		 */&#xD;	    Tone.EQ3.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;low&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;high&apos;,&#xD;	            &apos;lowFrequency&apos;,&#xD;	            &apos;highFrequency&apos;&#xD;	        ]);&#xD;	        this._multibandSplit.dispose();&#xD;	        this._multibandSplit = null;&#xD;	        this.lowFrequency = null;&#xD;	        this.highFrequency = null;&#xD;	        this._lowGain.dispose();&#xD;	        this._lowGain = null;&#xD;	        this._midGain.dispose();&#xD;	        this._midGain = null;&#xD;	        this._highGain.dispose();&#xD;	        this._highGain = null;&#xD;	        this.low = null;&#xD;	        this.mid = null;&#xD;	        this.high = null;&#xD;	        this.Q = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.EQ3;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Performs a linear scaling on an input signal.&#xD;		 *          Scales a NormalRange input to between&#xD;		 *          outputMin and outputMax.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @param {number} [outputMin=0] The output value when the input is 0. &#xD;		 *  @param {number} [outputMax=1]	The output value when the input is 1. &#xD;		 *  @example&#xD;		 * var scale = new Tone.Scale(50, 100);&#xD;		 * var signal = new Tone.Signal(0.5).connect(scale);&#xD;		 * //the output of scale equals 75&#xD;		 */&#xD;	    Tone.Scale = function (outputMin, outputMax) {&#xD;	        /** &#xD;			 *  @private&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this._outputMin = this.defaultArg(outputMin, 0);&#xD;	        /** &#xD;			 *  @private&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this._outputMax = this.defaultArg(outputMax, 1);&#xD;	        /** &#xD;			 *  @private&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scale = this.input = new Tone.Multiply(1);&#xD;	        /** &#xD;			 *  @private&#xD;			 *  @type {Tone.Add}&#xD;			 *  @private&#xD;			 */&#xD;	        this._add = this.output = new Tone.Add(0);&#xD;	        this._scale.connect(this._add);&#xD;	        this._setRange();&#xD;	    };&#xD;	    Tone.extend(Tone.Scale, Tone.SignalBase);&#xD;	    /**&#xD;		 * The minimum output value. This number is output when &#xD;		 * the value input value is 0. &#xD;		 * @memberOf Tone.Scale#&#xD;		 * @type {number}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.Scale.prototype, &apos;min&apos;, {&#xD;	        get: function () {&#xD;	            return this._outputMin;&#xD;	        },&#xD;	        set: function (min) {&#xD;	            this._outputMin = min;&#xD;	            this._setRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The maximum output value. This number is output when &#xD;		 * the value input value is 1. &#xD;		 * @memberOf Tone.Scale#&#xD;		 * @type {number}&#xD;		 * @name max&#xD;		 */&#xD;	    Object.defineProperty(Tone.Scale.prototype, &apos;max&apos;, {&#xD;	        get: function () {&#xD;	            return this._outputMax;&#xD;	        },&#xD;	        set: function (max) {&#xD;	            this._outputMax = max;&#xD;	            this._setRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  set the values&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Scale.prototype._setRange = function () {&#xD;	        this._add.value = this._outputMin;&#xD;	        this._scale.value = this._outputMax - this._outputMin;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Scale} this&#xD;		 */&#xD;	    Tone.Scale.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._add.dispose();&#xD;	        this._add = null;&#xD;	        this._scale.dispose();&#xD;	        this._scale = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Scale;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class  Performs an exponential scaling on an input signal.&#xD;		 *          Scales a NormalRange value [0,1] exponentially&#xD;		 *          to the output range of outputMin to outputMax.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @param {number} [outputMin=0] The output value when the input is 0. &#xD;		 *  @param {number} [outputMax=1]	The output value when the input is 1. &#xD;		 *  @param {number} [exponent=2] The exponent which scales the incoming signal.&#xD;		 *  @example&#xD;		 * var scaleExp = new Tone.ScaleExp(0, 100, 2);&#xD;		 * var signal = new Tone.Signal(0.5).connect(scaleExp);&#xD;		 */&#xD;	    Tone.ScaleExp = function (outputMin, outputMax, exponent) {&#xD;	        /**&#xD;			 *  scale the input to the output range&#xD;			 *  @type {Tone.Scale}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scale = this.output = new Tone.Scale(outputMin, outputMax);&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {Tone.Pow}&#xD;			 *  @private&#xD;			 */&#xD;	        this._exp = this.input = new Tone.Pow(this.defaultArg(exponent, 2));&#xD;	        this._exp.connect(this._scale);&#xD;	    };&#xD;	    Tone.extend(Tone.ScaleExp, Tone.SignalBase);&#xD;	    /**&#xD;		 * Instead of interpolating linearly between the &lt;code&gt;min&lt;/code&gt; and &#xD;		 * &lt;code&gt;max&lt;/code&gt; values, setting the exponent will interpolate between&#xD;		 * the two values with an exponential curve. &#xD;		 * @memberOf Tone.ScaleExp#&#xD;		 * @type {number}&#xD;		 * @name exponent&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaleExp.prototype, &apos;exponent&apos;, {&#xD;	        get: function () {&#xD;	            return this._exp.value;&#xD;	        },&#xD;	        set: function (exp) {&#xD;	            this._exp.value = exp;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The minimum output value. This number is output when &#xD;		 * the value input value is 0. &#xD;		 * @memberOf Tone.ScaleExp#&#xD;		 * @type {number}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaleExp.prototype, &apos;min&apos;, {&#xD;	        get: function () {&#xD;	            return this._scale.min;&#xD;	        },&#xD;	        set: function (min) {&#xD;	            this._scale.min = min;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The maximum output value. This number is output when &#xD;		 * the value input value is 1. &#xD;		 * @memberOf Tone.ScaleExp#&#xD;		 * @type {number}&#xD;		 * @name max&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaleExp.prototype, &apos;max&apos;, {&#xD;	        get: function () {&#xD;	            return this._scale.max;&#xD;	        },&#xD;	        set: function (max) {&#xD;	            this._scale.max = max;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.ScaleExp} this&#xD;		 */&#xD;	    Tone.ScaleExp.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._scale.dispose();&#xD;	        this._scale = null;&#xD;	        this._exp.dispose();&#xD;	        this._exp = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.ScaleExp;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Wrapper around Web Audio&apos;s native [DelayNode](http://webaudio.github.io/web-audio-api/#the-delaynode-interface). &#xD;		 *  @extends {Tone}&#xD;		 *  @param {Time=} delayTime The delay applied to the incoming signal.&#xD;		 *  @param {Time=} maxDelay The maximum delay time. &#xD;		 */&#xD;	    Tone.Delay = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;maxDelay&apos;&#xD;	        ], Tone.Delay.defaults);&#xD;	        /**&#xD;			 *  The native delay node&#xD;			 *  @type {DelayNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayNode = this.input = this.output = this.context.createDelay(this.toSeconds(options.maxDelay));&#xD;	        /**&#xD;			 *  The amount of time the incoming signal is&#xD;			 *  delayed. &#xD;			 *  @type {Tone.Param}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = new Tone.Param({&#xD;	            &apos;param&apos;: this._delayNode.delayTime,&#xD;	            &apos;units&apos;: Tone.Type.Time,&#xD;	            &apos;value&apos;: options.delayTime&#xD;	        });&#xD;	        this._readOnly(&apos;delayTime&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.Delay);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Delay.defaults = {&#xD;	        &apos;maxDelay&apos;: 1,&#xD;	        &apos;delayTime&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.Delay}  this&#xD;		 */&#xD;	    Tone.Delay.prototype.dispose = function () {&#xD;	        Tone.Param.prototype.dispose.call(this);&#xD;	        this._delayNode.disconnect();&#xD;	        this._delayNode = null;&#xD;	        this._writable(&apos;delayTime&apos;);&#xD;	        this.delayTime = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Delay;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Comb filters are basic building blocks for physical modeling. Read more&#xD;		 *         about comb filters on [CCRMA&apos;s website](https://ccrma.stanford.edu/&#126;jos/pasp/Feedback_Comb_Filters.html).&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Time|Object} [delayTime] The delay time of the filter. &#xD;		 *  @param {NormalRange=} resonance The amount of feedback the filter has. &#xD;		 */&#xD;	    Tone.FeedbackCombFilter = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;resonance&apos;&#xD;	        ], Tone.FeedbackCombFilter.defaults);&#xD;	        /**&#xD;			 *  the delay node&#xD;			 *  @type {DelayNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delay = this.input = this.output = new Tone.Delay(options.delayTime);&#xD;	        /**&#xD;			 *  The amount of delay of the comb filter. &#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = this._delay.delayTime;&#xD;	        /**&#xD;			 *  the feedback node&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedback = new Tone.Gain(options.resonance, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  The amount of feedback of the delayed signal. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.resonance = this._feedback.gain;&#xD;	        this._delay.chain(this._feedback, this._delay);&#xD;	        this._readOnly([&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;delayTime&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.FeedbackCombFilter);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.FeedbackCombFilter.defaults = {&#xD;	        &apos;delayTime&apos;: 0.1,&#xD;	        &apos;resonance&apos;: 0.5&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.FeedbackCombFilter} this&#xD;		 */&#xD;	    Tone.FeedbackCombFilter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;delayTime&apos;&#xD;	        ]);&#xD;	        this._delay.dispose();&#xD;	        this._delay = null;&#xD;	        this.delayTime = null;&#xD;	        this._feedback.dispose();&#xD;	        this._feedback = null;&#xD;	        this.resonance = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FeedbackCombFilter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Follower is a  crude envelope follower which will follow &#xD;		 *          the amplitude of an incoming signal. &#xD;		 *          Take care with small (&lt; 0.02) attack or decay values &#xD;		 *          as follower has some ripple which is exaggerated&#xD;		 *          at these values. Read more about envelope followers (also known &#xD;		 *          as envelope detectors) on [Wikipedia](https://en.wikipedia.org/wiki/Envelope_detector).&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Time|Object} [attack] The rate at which the follower rises.&#xD;		 *  @param {Time=} release The rate at which the folower falls. &#xD;		 *  @example&#xD;		 * var follower = new Tone.Follower(0.2, 0.4);&#xD;		 */&#xD;	    Tone.Follower = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;attack&apos;,&#xD;	            &apos;release&apos;&#xD;	        ], Tone.Follower.defaults);&#xD;	        /**&#xD;			 *  @type {Tone.Abs}&#xD;			 *  @private&#xD;			 */&#xD;	        this._abs = new Tone.Abs();&#xD;	        /**&#xD;			 *  the lowpass filter which smooths the input&#xD;			 *  @type {BiquadFilterNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._filter = this.context.createBiquadFilter();&#xD;	        this._filter.type = &apos;lowpass&apos;;&#xD;	        this._filter.frequency.value = 0;&#xD;	        this._filter.Q.value = -100;&#xD;	        /**&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._frequencyValues = new Tone.WaveShaper();&#xD;	        /**&#xD;			 *  @type {Tone.Subtract}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sub = new Tone.Subtract();&#xD;	        /**&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delay = new Tone.Delay(this.blockTime);&#xD;	        /**&#xD;			 *  this keeps it far from 0, even for very small differences&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._mult = new Tone.Multiply(10000);&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this._attack = options.attack;&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this._release = options.release;&#xD;	        //the smoothed signal to get the values&#xD;	        this.input.chain(this._abs, this._filter, this.output);&#xD;	        //the difference path&#xD;	        this._abs.connect(this._sub, 0, 1);&#xD;	        this._filter.chain(this._delay, this._sub);&#xD;	        //threshold the difference and use the thresh to set the frequency&#xD;	        this._sub.chain(this._mult, this._frequencyValues, this._filter.frequency);&#xD;	        //set the attack and release values in the table&#xD;	        this._setAttackRelease(this._attack, this._release);&#xD;	    };&#xD;	    Tone.extend(Tone.Follower);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Follower.defaults = {&#xD;	        &apos;attack&apos;: 0.05,&#xD;	        &apos;release&apos;: 0.5&#xD;	    };&#xD;	    /**&#xD;		 *  sets the attack and release times in the wave shaper&#xD;		 *  @param   {Time} attack  &#xD;		 *  @param   {Time} release &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Follower.prototype._setAttackRelease = function (attack, release) {&#xD;	        var minTime = this.blockTime;&#xD;	        attack = Tone.Time(attack).toFrequency();&#xD;	        release = Tone.Time(release).toFrequency();&#xD;	        attack = Math.max(attack, minTime);&#xD;	        release = Math.max(release, minTime);&#xD;	        this._frequencyValues.setMap(function (val) {&#xD;	            if (val &lt;= 0) {&#xD;	                return attack;&#xD;	            } else {&#xD;	                return release;&#xD;	            }&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 * The attack time.&#xD;		 * @memberOf Tone.Follower#&#xD;		 * @type {Time}&#xD;		 * @name attack&#xD;		 */&#xD;	    Object.defineProperty(Tone.Follower.prototype, &apos;attack&apos;, {&#xD;	        get: function () {&#xD;	            return this._attack;&#xD;	        },&#xD;	        set: function (attack) {&#xD;	            this._attack = attack;&#xD;	            this._setAttackRelease(this._attack, this._release);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The release time.&#xD;		 * @memberOf Tone.Follower#&#xD;		 * @type {Time}&#xD;		 * @name release&#xD;		 */&#xD;	    Object.defineProperty(Tone.Follower.prototype, &apos;release&apos;, {&#xD;	        get: function () {&#xD;	            return this._release;&#xD;	        },&#xD;	        set: function (release) {&#xD;	            this._release = release;&#xD;	            this._setAttackRelease(this._attack, this._release);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Borrows the connect method from Signal so that the output can be used&#xD;		 *  as a Tone.Signal control signal.&#xD;		 *  @function&#xD;		 */&#xD;	    Tone.Follower.prototype.connect = Tone.Signal.prototype.connect;&#xD;	    /**&#xD;		 *  dispose&#xD;		 *  @returns {Tone.Follower} this&#xD;		 */&#xD;	    Tone.Follower.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._filter.disconnect();&#xD;	        this._filter = null;&#xD;	        this._frequencyValues.disconnect();&#xD;	        this._frequencyValues = null;&#xD;	        this._delay.dispose();&#xD;	        this._delay = null;&#xD;	        this._sub.disconnect();&#xD;	        this._sub = null;&#xD;	        this._abs.dispose();&#xD;	        this._abs = null;&#xD;	        this._mult.dispose();&#xD;	        this._mult = null;&#xD;	        this._curve = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Follower;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.ScaledEnvelop is an envelope which can be scaled &#xD;		 *         to any range. It&apos;s useful for applying an envelope &#xD;		 *         to a frequency or any other non-NormalRange signal &#xD;		 *         parameter. &#xD;		 *&#xD;		 *  @extends {Tone.Envelope}&#xD;		 *  @constructor&#xD;		 *  @param {Time|Object} [attack]	the attack time in seconds&#xD;		 *  @param {Time} [decay]	the decay time in seconds&#xD;		 *  @param {number} [sustain] 	a percentage (0-1) of the full amplitude&#xD;		 *  @param {Time} [release]	the release time in seconds&#xD;		 *  @example&#xD;		 *  var scaledEnv = new Tone.ScaledEnvelope({&#xD;		 *  	"attack" : 0.2,&#xD;		 *  	"min" : 200,&#xD;		 *  	"max" : 2000&#xD;		 *  });&#xD;		 *  scaledEnv.connect(oscillator.frequency);&#xD;		 */&#xD;	    Tone.ScaledEnvelope = function () {&#xD;	        //get all of the defaults&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;attack&apos;,&#xD;	            &apos;decay&apos;,&#xD;	            &apos;sustain&apos;,&#xD;	            &apos;release&apos;&#xD;	        ], Tone.Envelope.defaults);&#xD;	        Tone.Envelope.call(this, options);&#xD;	        options = this.defaultArg(options, Tone.ScaledEnvelope.defaults);&#xD;	        /** &#xD;			 *  scale the incoming signal by an exponent&#xD;			 *  @type {Tone.Pow}&#xD;			 *  @private&#xD;			 */&#xD;	        this._exp = this.output = new Tone.Pow(options.exponent);&#xD;	        /**&#xD;			 *  scale the signal to the desired range&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scale = this.output = new Tone.Scale(options.min, options.max);&#xD;	        this._sig.chain(this._exp, this._scale);&#xD;	    };&#xD;	    Tone.extend(Tone.ScaledEnvelope, Tone.Envelope);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.ScaledEnvelope.defaults = {&#xD;	        &apos;min&apos;: 0,&#xD;	        &apos;max&apos;: 1,&#xD;	        &apos;exponent&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 * The envelope&apos;s min output value. This is the value which it&#xD;		 * starts at. &#xD;		 * @memberOf Tone.ScaledEnvelope#&#xD;		 * @type {number}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaledEnvelope.prototype, &apos;min&apos;, {&#xD;	        get: function () {&#xD;	            return this._scale.min;&#xD;	        },&#xD;	        set: function (min) {&#xD;	            this._scale.min = min;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The envelope&apos;s max output value. In other words, the value&#xD;		 * at the peak of the attack portion of the envelope. &#xD;		 * @memberOf Tone.ScaledEnvelope#&#xD;		 * @type {number}&#xD;		 * @name max&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaledEnvelope.prototype, &apos;max&apos;, {&#xD;	        get: function () {&#xD;	            return this._scale.max;&#xD;	        },&#xD;	        set: function (max) {&#xD;	            this._scale.max = max;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The envelope&apos;s exponent value. &#xD;		 * @memberOf Tone.ScaledEnvelope#&#xD;		 * @type {number}&#xD;		 * @name exponent&#xD;		 */&#xD;	    Object.defineProperty(Tone.ScaledEnvelope.prototype, &apos;exponent&apos;, {&#xD;	        get: function () {&#xD;	            return this._exp.value;&#xD;	        },&#xD;	        set: function (exp) {&#xD;	            this._exp.value = exp;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.ScaledEnvelope} this&#xD;		 */&#xD;	    Tone.ScaledEnvelope.prototype.dispose = function () {&#xD;	        Tone.Envelope.prototype.dispose.call(this);&#xD;	        this._scale.dispose();&#xD;	        this._scale = null;&#xD;	        this._exp.dispose();&#xD;	        this._exp = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.ScaledEnvelope;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.FrequencyEnvelope is a Tone.ScaledEnvelope, but instead of `min` and `max`&#xD;		 *         it&apos;s got a `baseFrequency` and `octaves` parameter. &#xD;		 *&#xD;		 *  @extends {Tone.Envelope}&#xD;		 *  @constructor&#xD;		 *  @param {Time|Object} [attack]	the attack time in seconds&#xD;		 *  @param {Time} [decay]	the decay time in seconds&#xD;		 *  @param {number} [sustain] 	a percentage (0-1) of the full amplitude&#xD;		 *  @param {Time} [release]	the release time in seconds&#xD;		 *  @example&#xD;		 *  var env = new Tone.FrequencyEnvelope({&#xD;		 *  	"attack" : 0.2,&#xD;		 *  	"baseFrequency" : "C2",&#xD;		 *  	"octaves" : 4&#xD;		 *  });&#xD;		 *  scaledEnv.connect(oscillator.frequency);&#xD;		 */&#xD;	    Tone.FrequencyEnvelope = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;attack&apos;,&#xD;	            &apos;decay&apos;,&#xD;	            &apos;sustain&apos;,&#xD;	            &apos;release&apos;&#xD;	        ], Tone.Envelope.defaults);&#xD;	        Tone.ScaledEnvelope.call(this, options);&#xD;	        options = this.defaultArg(options, Tone.FrequencyEnvelope.defaults);&#xD;	        /**&#xD;			 *  Stores the octave value&#xD;			 *  @type {Positive}&#xD;			 *  @private&#xD;			 */&#xD;	        this._octaves = options.octaves;&#xD;	        //setup&#xD;	        this.baseFrequency = options.baseFrequency;&#xD;	        this.octaves = options.octaves;&#xD;	    };&#xD;	    Tone.extend(Tone.FrequencyEnvelope, Tone.Envelope);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.FrequencyEnvelope.defaults = {&#xD;	        &apos;baseFrequency&apos;: 200,&#xD;	        &apos;octaves&apos;: 4,&#xD;	        &apos;exponent&apos;: 2&#xD;	    };&#xD;	    /**&#xD;		 * The envelope&apos;s mininum output value. This is the value which it&#xD;		 * starts at. &#xD;		 * @memberOf Tone.FrequencyEnvelope#&#xD;		 * @type {Frequency}&#xD;		 * @name baseFrequency&#xD;		 */&#xD;	    Object.defineProperty(Tone.FrequencyEnvelope.prototype, &apos;baseFrequency&apos;, {&#xD;	        get: function () {&#xD;	            return this._scale.min;&#xD;	        },&#xD;	        set: function (min) {&#xD;	            this._scale.min = this.toFrequency(min);&#xD;	            //also update the octaves&#xD;	            this.octaves = this._octaves;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The number of octaves above the baseFrequency that the&#xD;		 * envelope will scale to.&#xD;		 * @memberOf Tone.FrequencyEnvelope#&#xD;		 * @type {Positive}&#xD;		 * @name octaves&#xD;		 */&#xD;	    Object.defineProperty(Tone.FrequencyEnvelope.prototype, &apos;octaves&apos;, {&#xD;	        get: function () {&#xD;	            return this._octaves;&#xD;	        },&#xD;	        set: function (octaves) {&#xD;	            this._octaves = octaves;&#xD;	            this._scale.max = this.baseFrequency * Math.pow(2, octaves);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The envelope&apos;s exponent value. &#xD;		 * @memberOf Tone.FrequencyEnvelope#&#xD;		 * @type {number}&#xD;		 * @name exponent&#xD;		 */&#xD;	    Object.defineProperty(Tone.FrequencyEnvelope.prototype, &apos;exponent&apos;, {&#xD;	        get: function () {&#xD;	            return this._exp.value;&#xD;	        },&#xD;	        set: function (exp) {&#xD;	            this._exp.value = exp;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.FrequencyEnvelope} this&#xD;		 */&#xD;	    Tone.FrequencyEnvelope.prototype.dispose = function () {&#xD;	        Tone.ScaledEnvelope.prototype.dispose.call(this);&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FrequencyEnvelope;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Gate only passes a signal through when the incoming &#xD;		 *          signal exceeds a specified threshold. To do this, Gate uses &#xD;		 *          a Tone.Follower to follow the amplitude of the incoming signal. &#xD;		 *          A common implementation of this class is a [Noise Gate](https://en.wikipedia.org/wiki/Noise_gate).&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Decibels|Object} [threshold] The threshold above which the gate will open. &#xD;		 *  @param {Time=} attack The follower&apos;s attack time&#xD;		 *  @param {Time=} release The follower&apos;s release time&#xD;		 *  @example&#xD;		 * var gate = new Tone.Gate(-30, 0.2, 0.3).toMaster();&#xD;		 * var mic = new Tone.UserMedia().connect(gate);&#xD;		 * //the gate will only pass through the incoming &#xD;		 * //signal when it&apos;s louder than -30db&#xD;		 */&#xD;	    Tone.Gate = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;threshold&apos;,&#xD;	            &apos;attack&apos;,&#xD;	            &apos;release&apos;&#xD;	        ], Tone.Gate.defaults);&#xD;	        /**&#xD;			 *  @type {Tone.Follower}&#xD;			 *  @private&#xD;			 */&#xD;	        this._follower = new Tone.Follower(options.attack, options.release);&#xD;	        /**&#xD;			 *  @type {Tone.GreaterThan}&#xD;			 *  @private&#xD;			 */&#xD;	        this._gt = new Tone.GreaterThan(this.dbToGain(options.threshold));&#xD;	        //the connections&#xD;	        this.input.connect(this.output);&#xD;	        //the control signal&#xD;	        this.input.chain(this._gt, this._follower, this.output.gain);&#xD;	    };&#xD;	    Tone.extend(Tone.Gate);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Gate.defaults = {&#xD;	        &apos;attack&apos;: 0.1,&#xD;	        &apos;release&apos;: 0.1,&#xD;	        &apos;threshold&apos;: -40&#xD;	    };&#xD;	    /**&#xD;		 * The threshold of the gate in decibels&#xD;		 * @memberOf Tone.Gate#&#xD;		 * @type {Decibels}&#xD;		 * @name threshold&#xD;		 */&#xD;	    Object.defineProperty(Tone.Gate.prototype, &apos;threshold&apos;, {&#xD;	        get: function () {&#xD;	            return this.gainToDb(this._gt.value);&#xD;	        },&#xD;	        set: function (thresh) {&#xD;	            this._gt.value = this.dbToGain(thresh);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The attack speed of the gate&#xD;		 * @memberOf Tone.Gate#&#xD;		 * @type {Time}&#xD;		 * @name attack&#xD;		 */&#xD;	    Object.defineProperty(Tone.Gate.prototype, &apos;attack&apos;, {&#xD;	        get: function () {&#xD;	            return this._follower.attack;&#xD;	        },&#xD;	        set: function (attackTime) {&#xD;	            this._follower.attack = attackTime;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The release speed of the gate&#xD;		 * @memberOf Tone.Gate#&#xD;		 * @type {Time}&#xD;		 * @name release&#xD;		 */&#xD;	    Object.defineProperty(Tone.Gate.prototype, &apos;release&apos;, {&#xD;	        get: function () {&#xD;	            return this._follower.release;&#xD;	        },&#xD;	        set: function (releaseTime) {&#xD;	            this._follower.release = releaseTime;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Gate} this&#xD;		 */&#xD;	    Tone.Gate.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._follower.dispose();&#xD;	        this._gt.dispose();&#xD;	        this._follower = null;&#xD;	        this._gt = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Gate;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  A Timeline State. Provides the methods: &lt;code&gt;setStateAtTime("state", time)&lt;/code&gt;&#xD;		 *          and &lt;code&gt;getValueAtTime(time)&lt;/code&gt;.&#xD;		 *&#xD;		 *  @extends {Tone.Timeline}&#xD;		 *  @param {String} initial The initial state of the TimelineState. &#xD;		 *                          Defaults to &lt;code&gt;undefined&lt;/code&gt;&#xD;		 */&#xD;	    Tone.TimelineState = function (initial) {&#xD;	        Tone.Timeline.call(this);&#xD;	        /**&#xD;			 *  The initial state&#xD;			 *  @private&#xD;			 *  @type {String}&#xD;			 */&#xD;	        this._initial = initial;&#xD;	    };&#xD;	    Tone.extend(Tone.TimelineState, Tone.Timeline);&#xD;	    /**&#xD;		 *  Returns the scheduled state scheduled before or at&#xD;		 *  the given time.&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @return  {String}  The name of the state input in setStateAtTime.&#xD;		 */&#xD;	    Tone.TimelineState.prototype.getValueAtTime = function (time) {&#xD;	        var event = this.get(time);&#xD;	        if (event !== null) {&#xD;	            return event.state;&#xD;	        } else {&#xD;	            return this._initial;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the scheduled state scheduled before or at&#xD;		 *  the given time.&#xD;		 *  @param  {String}  state The name of the state to set.&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 */&#xD;	    Tone.TimelineState.prototype.setStateAtTime = function (state, time) {&#xD;	        this.add({&#xD;	            &apos;state&apos;: state,&#xD;	            &apos;time&apos;: time&#xD;	        });&#xD;	    };&#xD;	    return Tone.TimelineState;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Emitter gives classes which extend it&#xD;		 *         the ability to listen for and emit events. &#xD;		 *         Inspiration and reference from Jerome Etienne&apos;s [MicroEvent](https://github.com/jeromeetienne/microevent.js).&#xD;		 *         MIT (c) 2011 Jerome Etienne.&#xD;		 *         &#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.Emitter = function () {&#xD;	        /**&#xD;			 *  Contains all of the events.&#xD;			 *  @private&#xD;			 *  @type  {Object}&#xD;			 */&#xD;	        this._events = {};&#xD;	    };&#xD;	    Tone.extend(Tone.Emitter);&#xD;	    /**&#xD;		 *  Bind a callback to a specific event.&#xD;		 *  @param  {String}    event     The name of the event to listen for.&#xD;		 *  @param  {Function}  callback  The callback to invoke when the&#xD;		 *                                event is emitted&#xD;		 *  @return  {Tone.Emitter}    this&#xD;		 */&#xD;	    Tone.Emitter.prototype.on = function (event, callback) {&#xD;	        //split the event&#xD;	        var events = event.split(/\W+/);&#xD;	        for (var i = 0; i &lt; events.length; i++) {&#xD;	            var eventName = events[i];&#xD;	            if (!this._events.hasOwnProperty(eventName)) {&#xD;	                this._events[eventName] = [];&#xD;	            }&#xD;	            this._events[eventName].push(callback);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove the event listener.&#xD;		 *  @param  {String}    event     The event to stop listening to.&#xD;		 *  @param  {Function=}  callback  The callback which was bound to &#xD;		 *                                the event with Tone.Emitter.on.&#xD;		 *                                If no callback is given, all callbacks&#xD;		 *                                events are removed.&#xD;		 *  @return  {Tone.Emitter}    this&#xD;		 */&#xD;	    Tone.Emitter.prototype.off = function (event, callback) {&#xD;	        var events = event.split(/\W+/);&#xD;	        for (var ev = 0; ev &lt; events.length; ev++) {&#xD;	            event = events[ev];&#xD;	            if (this._events.hasOwnProperty(event)) {&#xD;	                if (Tone.prototype.isUndef(callback)) {&#xD;	                    this._events[event] = [];&#xD;	                } else {&#xD;	                    var eventList = this._events[event];&#xD;	                    for (var i = 0; i &lt; eventList.length; i++) {&#xD;	                        if (eventList[i] === callback) {&#xD;	                            eventList.splice(i, 1);&#xD;	                        }&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Invoke all of the callbacks bound to the event&#xD;		 *  with any arguments passed in. &#xD;		 *  @param  {String}  event  The name of the event.&#xD;		 *  @param {*...} args The arguments to pass to the functions listening.&#xD;		 *  @return  {Tone.Emitter}  this&#xD;		 */&#xD;	    Tone.Emitter.prototype.emit = function (event) {&#xD;	        if (this._events) {&#xD;	            var args = Array.prototype.slice.call(arguments, 1);&#xD;	            if (this._events.hasOwnProperty(event)) {&#xD;	                var eventList = this._events[event];&#xD;	                for (var i = 0, len = eventList.length; i &lt; len; i++) {&#xD;	                    eventList[i].apply(this, args);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Add Emitter functions (on/off/emit) to the object&#xD;		 *  @param  {Object|Function}  object  The object or class to extend.&#xD;		 */&#xD;	    Tone.Emitter.mixin = function (object) {&#xD;	        var functions = [&#xD;	            &apos;on&apos;,&#xD;	            &apos;off&apos;,&#xD;	            &apos;emit&apos;&#xD;	        ];&#xD;	        object._events = {};&#xD;	        for (var i = 0; i &lt; functions.length; i++) {&#xD;	            var func = functions[i];&#xD;	            var emitterFunc = Tone.Emitter.prototype[func];&#xD;	            object[func] = emitterFunc;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Emitter}  this&#xD;		 */&#xD;	    Tone.Emitter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._events = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Emitter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  A sample accurate clock which provides a callback at the given rate. &#xD;		 *          While the callback is not sample-accurate (it is still susceptible to&#xD;		 *          loose JS timing), the time passed in as the argument to the callback&#xD;		 *          is precise. For most applications, it is better to use Tone.Transport&#xD;		 *          instead of the Clock by itself since you can synchronize multiple callbacks.&#xD;		 *&#xD;		 * 	@constructor&#xD;		 *  @extends {Tone.Emitter}&#xD;		 * 	@param {function} callback The callback to be invoked with the time of the audio event&#xD;		 * 	@param {Frequency} frequency The rate of the callback&#xD;		 * 	@example&#xD;		 * //the callback will be invoked approximately once a second&#xD;		 * //and will print the time exactly once a second apart.&#xD;		 * var clock = new Tone.Clock(function(time){&#xD;		 * 	console.log(time);&#xD;		 * }, 1);&#xD;		 */&#xD;	    Tone.Clock = function () {&#xD;	        Tone.Emitter.call(this);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;frequency&apos;&#xD;	        ], Tone.Clock.defaults);&#xD;	        /**&#xD;			 *  The callback function to invoke at the scheduled tick.&#xD;			 *  @type  {Function}&#xD;			 */&#xD;	        this.callback = options.callback;&#xD;	        /**&#xD;			 *  The next time the callback is scheduled.&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._nextTick = 0;&#xD;	        /**&#xD;			 *  The last state of the clock.&#xD;			 *  @type  {State}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lastState = Tone.State.Stopped;&#xD;	        /**&#xD;			 *  The rate the callback function should be invoked. &#xD;			 *  @type  {BPM}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.TimelineSignal(options.frequency, Tone.Type.Frequency);&#xD;	        this._readOnly(&apos;frequency&apos;);&#xD;	        /**&#xD;			 *  The number of times the callback was invoked. Starts counting at 0&#xD;			 *  and increments after the callback was invoked. &#xD;			 *  @type {Ticks}&#xD;			 *  @readOnly&#xD;			 */&#xD;	        this.ticks = 0;&#xD;	        /**&#xD;			 *  The state timeline&#xD;			 *  @type {Tone.TimelineState}&#xD;			 *  @private&#xD;			 */&#xD;	        this._state = new Tone.TimelineState(Tone.State.Stopped);&#xD;	        /**&#xD;			 *  The loop function bound to its context. &#xD;			 *  This is necessary to remove the event in the end.&#xD;			 *  @type {Function}&#xD;			 *  @private&#xD;			 */&#xD;	        this._boundLoop = this._loop.bind(this);&#xD;	        //bind a callback to the worker thread&#xD;	        Tone.Clock._worker.addEventListener(&apos;message&apos;, this._boundLoop);&#xD;	    };&#xD;	    Tone.extend(Tone.Clock, Tone.Emitter);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Clock.defaults = {&#xD;	        &apos;callback&apos;: Tone.noOp,&#xD;	        &apos;frequency&apos;: 1,&#xD;	        &apos;lookAhead&apos;: &apos;auto&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source, either "started", "stopped" or "paused".&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.Clock#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.Clock.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._state.getValueAtTime(this.now());&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Start the clock at the given time. Optionally pass in an offset&#xD;		 *  of where to start the tick counter from.&#xD;		 *  @param  {Time}  time    The time the clock should start&#xD;		 *  @param  {Ticks=}  offset  Where the tick counter starts counting from.&#xD;		 *  @return  {Tone.Clock}  this&#xD;		 */&#xD;	    Tone.Clock.prototype.start = function (time, offset) {&#xD;	        time = this.toSeconds(time);&#xD;	        if (this._state.getValueAtTime(time) !== Tone.State.Started) {&#xD;	            this._state.add({&#xD;	                &apos;state&apos;: Tone.State.Started,&#xD;	                &apos;time&apos;: time,&#xD;	                &apos;offset&apos;: offset&#xD;	            });&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the clock. Stopping the clock resets the tick counter to 0.&#xD;		 *  @param {Time} [time=now] The time when the clock should stop.&#xD;		 *  @returns {Tone.Clock} this&#xD;		 *  @example&#xD;		 * clock.stop();&#xD;		 */&#xD;	    Tone.Clock.prototype.stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._state.cancel(time);&#xD;	        this._state.setStateAtTime(Tone.State.Stopped, time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Pause the clock. Pausing does not reset the tick counter.&#xD;		 *  @param {Time} [time=now] The time when the clock should stop.&#xD;		 *  @returns {Tone.Clock} this&#xD;		 */&#xD;	    Tone.Clock.prototype.pause = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        if (this._state.getValueAtTime(time) === Tone.State.Started) {&#xD;	            this._state.setStateAtTime(Tone.State.Paused, time);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The scheduling loop.&#xD;		 *  @param  {Number}  time  The current page time starting from 0&#xD;		 *                          when the page was loaded.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Clock.prototype._loop = function () {&#xD;	        //get the frequency value to compute the value of the next loop&#xD;	        var now = this.now();&#xD;	        //if it&apos;s started&#xD;	        var lookAhead = Tone.Clock.lookAhead;&#xD;	        var updateInterval = Tone.Clock.updateInterval;&#xD;	        var lagCompensation = Tone.Clock.lag * 2;&#xD;	        var loopInterval = now + lookAhead + updateInterval + lagCompensation;&#xD;	        while (loopInterval &gt; this._nextTick &amp;&amp; this._state) {&#xD;	            var currentState = this._state.getValueAtTime(this._nextTick);&#xD;	            if (currentState !== this._lastState) {&#xD;	                this._lastState = currentState;&#xD;	                var event = this._state.get(this._nextTick);&#xD;	                // emit an event&#xD;	                if (currentState === Tone.State.Started) {&#xD;	                    //correct the time&#xD;	                    this._nextTick = event.time;&#xD;	                    if (!this.isUndef(event.offset)) {&#xD;	                        this.ticks = event.offset;&#xD;	                    }&#xD;	                    this.emit(&apos;start&apos;, event.time, this.ticks);&#xD;	                } else if (currentState === Tone.State.Stopped) {&#xD;	                    this.ticks = 0;&#xD;	                    this.emit(&apos;stop&apos;, event.time);&#xD;	                } else if (currentState === Tone.State.Paused) {&#xD;	                    this.emit(&apos;pause&apos;, event.time);&#xD;	                }&#xD;	            }&#xD;	            var tickTime = this._nextTick;&#xD;	            if (this.frequency) {&#xD;	                this._nextTick += 1 / this.frequency.getValueAtTime(this._nextTick);&#xD;	                if (currentState === Tone.State.Started) {&#xD;	                    this.callback(tickTime);&#xD;	                    this.ticks++;&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the scheduled state at the given time.&#xD;		 *  @param  {Time}  time  The time to query.&#xD;		 *  @return  {String}  The name of the state input in setStateAtTime.&#xD;		 *  @example&#xD;		 * clock.start("+0.1");&#xD;		 * clock.getStateAtTime("+0.1"); //returns "started"&#xD;		 */&#xD;	    Tone.Clock.prototype.getStateAtTime = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        return this._state.getValueAtTime(time);&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @returns {Tone.Clock} this&#xD;		 */&#xD;	    Tone.Clock.prototype.dispose = function () {&#xD;	        Tone.Emitter.prototype.dispose.call(this);&#xD;	        Tone.Clock._worker.removeEventListener(&apos;message&apos;, this._boundLoop);&#xD;	        this._writable(&apos;frequency&apos;);&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this._boundLoop = null;&#xD;	        this._nextTick = Infinity;&#xD;	        this.callback = null;&#xD;	        this._state.dispose();&#xD;	        this._state = null;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // WORKER&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //URL Shim&#xD;	    window.URL = window.URL || window.webkitURL;&#xD;	    /**&#xD;		 *  The minimum amount of time events are &#xD;		 *  scheduled in advance.&#xD;		 *  @private&#xD;		 *  @type  {Number}&#xD;		 */&#xD;	    Tone.Clock._lookAhead = 0.1;&#xD;	    /**&#xD;		 *  How often the worker ticks&#xD;		 *  @type  {Seconds}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Clock._updateInterval = Tone.Clock._lookAhead / 3;&#xD;	    /**&#xD;		 *  The script which runs in a web worker&#xD;		 *  @type {Blob}&#xD;		 *  @private&#xD;		 */&#xD;	    var blob = new Blob([//the initial timeout time&#xD;	        &apos;var timeoutTime = &apos; + Tone.Clock._updateInterval * 1000 + &apos;;&apos; + //onmessage callback&#xD;	        &apos;self.onmessage = function(msg){&apos; + &apos;\ttimeoutTime = parseInt(msg.data);&apos; + &apos;};&apos; + //the tick function which posts a message&#xD;	        //and schedules a new tick&#xD;	        &apos;function tick(){&apos; + &apos;\tsetTimeout(tick, timeoutTime);&apos; + &apos;\tself.postMessage(\&apos;tick\&apos;);&apos; + &apos;}&apos; + //call tick initially&#xD;	        &apos;tick();&apos;]);&#xD;	    /**&#xD;		 *  Create a blob url from the Blob&#xD;		 *  @type  {URL}&#xD;		 *  @private&#xD;		 */&#xD;	    var blobUrl = URL.createObjectURL(blob);&#xD;	    /**&#xD;		 *  The Worker which generates a regular callback&#xD;		 *  @type {Worker}&#xD;		 *  @private&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Clock._worker = new Worker(blobUrl);&#xD;	    /**&#xD;		 *  @private&#xD;		 *  @type  {Number}&#xD;		 *  The time of the last update&#xD;		 */&#xD;	    var lastUpdate = -1;&#xD;	    /**&#xD;		 *  The current computed update rate of the clock.&#xD;		 *  @type  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    var computedUpdateInterval = 0;&#xD;	    //listen for message events and update the global clock lookahead&#xD;	    Tone.Clock._worker.addEventListener(&apos;message&apos;, function () {&#xD;	        var now = Tone.now();&#xD;	        if (lastUpdate !== -1) {&#xD;	            var diff = now - lastUpdate;&#xD;	            computedUpdateInterval = Math.max(diff, computedUpdateInterval * 0.97);&#xD;	        }&#xD;	        lastUpdate = now;&#xD;	    });&#xD;	    /**&#xD;		 *  This is the time that the clock is falling behind&#xD;		 *  the scheduled update interval. The Clock automatically&#xD;		 *  adjusts for the lag and schedules further in advance.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Clock&#xD;		 *  @name lag&#xD;		 *  @static&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Clock, &apos;lag&apos;, {&#xD;	        get: function () {&#xD;	            var diff = computedUpdateInterval - Tone.Clock._updateInterval;&#xD;	            diff = Math.max(diff, 0);&#xD;	            return diff;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The amount of time in advance that events are scheduled.&#xD;		 *  The lookAhead will adjust slightly in response to the &#xD;		 *  measured update time to try to avoid clicks.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Clock&#xD;		 *  @name lookAhead&#xD;		 *  @static&#xD;		 */&#xD;	    Object.defineProperty(Tone.Clock, &apos;lookAhead&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.Clock._lookAhead;&#xD;	        },&#xD;	        set: function (lA) {&#xD;	            Tone.Clock._lookAhead = lA;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  How often the Web Worker callback is invoked.&#xD;		 *  This number corresponds to how responsive the scheduling&#xD;		 *  can be. Clock.updateInterval + Clock.lookAhead gives you the&#xD;		 *  total latency between scheduling an event and hearing it.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Clock&#xD;		 *  @name updateInterval&#xD;		 *  @static&#xD;		 */&#xD;	    Object.defineProperty(Tone.Clock, &apos;updateInterval&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.Clock._updateInterval;&#xD;	        },&#xD;	        set: function (interval) {&#xD;	            Tone.Clock._updateInterval = Math.max(interval, 0.01);&#xD;	            Tone.Clock._worker.postMessage(interval * 1000);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The latency hint&#xD;		 *  @private&#xD;		 *  @type {String|Number}&#xD;		 */&#xD;	    var latencyHint = &apos;interactive&apos;;&#xD;	    /**&#xD;		 *  The type of playback, which affects tradeoffs between audio &#xD;		 *  output latency and responsiveness. &#xD;		 *  &#xD;		 *  In addition to setting the value in seconds, the latencyHint also&#xD;		 *  accepts the strings "interactive" (prioritizes low latency), &#xD;		 *  "playback" (prioritizes sustained playback), "balanced" (balances&#xD;		 *  latency and performance), and "fastest" (lowest latency, might glitch more often). &#xD;		 *  @type {String|Seconds}&#xD;		 *  @memberOf Tone.Clock#&#xD;		 *  @name latencyHint&#xD;		 *  @static&#xD;		 *  @example&#xD;		 * //set the lookAhead to 0.3 seconds&#xD;		 * Tone.Clock.latencyHint = 0.3;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Clock, &apos;latencyHint&apos;, {&#xD;	        get: function () {&#xD;	            return latencyHint;&#xD;	        },&#xD;	        set: function (hint) {&#xD;	            var lookAhead = hint;&#xD;	            latencyHint = hint;&#xD;	            if (Tone.prototype.isString(hint)) {&#xD;	                switch (hint) {&#xD;	                case &apos;interactive&apos;:&#xD;	                    lookAhead = 0.1;&#xD;	                    Tone.context.latencyHint = hint;&#xD;	                    break;&#xD;	                case &apos;playback&apos;:&#xD;	                    lookAhead = 0.8;&#xD;	                    Tone.context.latencyHint = hint;&#xD;	                    break;&#xD;	                case &apos;balanced&apos;:&#xD;	                    lookAhead = 0.25;&#xD;	                    Tone.context.latencyHint = hint;&#xD;	                    break;&#xD;	                case &apos;fastest&apos;:&#xD;	                    lookAhead = 0.01;&#xD;	                    break;&#xD;	                }&#xD;	            }&#xD;	            Tone.Clock.lookAhead = lookAhead;&#xD;	            Tone.Clock.updateInterval = lookAhead / 3;&#xD;	        }&#xD;	    });&#xD;	    Tone._initAudioContext(function () {&#xD;	        lastUpdate = -1;&#xD;	        computedUpdateInterval = 0;&#xD;	    });&#xD;	    return Tone.Clock;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Similar to Tone.Timeline, but all events represent&#xD;		 *         intervals with both "time" and "duration" times. The &#xD;		 *         events are placed in a tree structure optimized&#xD;		 *         for querying an intersection point with the timeline&#xD;		 *         events. Internally uses an [Interval Tree](https://en.wikipedia.org/wiki/Interval_tree)&#xD;		 *         to represent the data.&#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.IntervalTimeline = function () {&#xD;	        /**&#xD;			 *  The root node of the inteval tree&#xD;			 *  @type  {IntervalNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._root = null;&#xD;	        /**&#xD;			 *  Keep track of the length of the timeline.&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._length = 0;&#xD;	    };&#xD;	    Tone.extend(Tone.IntervalTimeline);&#xD;	    /**&#xD;		 *  The event to add to the timeline. All events must &#xD;		 *  have a time and duration value&#xD;		 *  @param  {Object}  event  The event to add to the timeline&#xD;		 *  @return  {Tone.IntervalTimeline}  this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.add = function (event) {&#xD;	        if (this.isUndef(event.time) || this.isUndef(event.duration)) {&#xD;	            throw new Error(&apos;Tone.IntervalTimeline: events must have time and duration parameters&apos;);&#xD;	        }&#xD;	        var node = new IntervalNode(event.time, event.time + event.duration, event);&#xD;	        if (this._root === null) {&#xD;	            this._root = node;&#xD;	        } else {&#xD;	            this._root.insert(node);&#xD;	        }&#xD;	        this._length++;&#xD;	        // Restructure tree to be balanced&#xD;	        while (node !== null) {&#xD;	            node.updateHeight();&#xD;	            node.updateMax();&#xD;	            this._rebalance(node);&#xD;	            node = node.parent;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove an event from the timeline.&#xD;		 *  @param  {Object}  event  The event to remove from the timeline&#xD;		 *  @return  {Tone.IntervalTimeline}  this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.remove = function (event) {&#xD;	        if (this._root !== null) {&#xD;	            var results = [];&#xD;	            this._root.search(event.time, results);&#xD;	            for (var i = 0; i &lt; results.length; i++) {&#xD;	                var node = results[i];&#xD;	                if (node.event === event) {&#xD;	                    this._removeNode(node);&#xD;	                    this._length--;&#xD;	                    break;&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The number of items in the timeline.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.IntervalTimeline#&#xD;		 *  @name length&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.IntervalTimeline.prototype, &apos;length&apos;, {&#xD;	        get: function () {&#xD;	            return this._length;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Remove events whose time time is after the given time&#xD;		 *  @param  {Number}  time  The time to query.&#xD;		 *  @returns {Tone.IntervalTimeline} this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.cancel = function (after) {&#xD;	        this.forEachAfter(after, function (event) {&#xD;	            this.remove(event);&#xD;	        }.bind(this));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Set the root node as the given node&#xD;		 *  @param {IntervalNode} node&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._setRoot = function (node) {&#xD;	        this._root = node;&#xD;	        if (this._root !== null) {&#xD;	            this._root.parent = null;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Replace the references to the node in the node&apos;s parent&#xD;		 *  with the replacement node.&#xD;		 *  @param  {IntervalNode}  node        &#xD;		 *  @param  {IntervalNode}  replacement &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._replaceNodeInParent = function (node, replacement) {&#xD;	        if (node.parent !== null) {&#xD;	            if (node.isLeftChild()) {&#xD;	                node.parent.left = replacement;&#xD;	            } else {&#xD;	                node.parent.right = replacement;&#xD;	            }&#xD;	            this._rebalance(node.parent);&#xD;	        } else {&#xD;	            this._setRoot(replacement);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Remove the node from the tree and replace it with &#xD;		 *  a successor which follows the schema.&#xD;		 *  @param  {IntervalNode}  node&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._removeNode = function (node) {&#xD;	        if (node.left === null &amp;&amp; node.right === null) {&#xD;	            this._replaceNodeInParent(node, null);&#xD;	        } else if (node.right === null) {&#xD;	            this._replaceNodeInParent(node, node.left);&#xD;	        } else if (node.left === null) {&#xD;	            this._replaceNodeInParent(node, node.right);&#xD;	        } else {&#xD;	            var balance = node.getBalance();&#xD;	            var replacement, temp;&#xD;	            if (balance &gt; 0) {&#xD;	                if (node.left.right === null) {&#xD;	                    replacement = node.left;&#xD;	                    replacement.right = node.right;&#xD;	                    temp = replacement;&#xD;	                } else {&#xD;	                    replacement = node.left.right;&#xD;	                    while (replacement.right !== null) {&#xD;	                        replacement = replacement.right;&#xD;	                    }&#xD;	                    replacement.parent.right = replacement.left;&#xD;	                    temp = replacement.parent;&#xD;	                    replacement.left = node.left;&#xD;	                    replacement.right = node.right;&#xD;	                }&#xD;	            } else {&#xD;	                if (node.right.left === null) {&#xD;	                    replacement = node.right;&#xD;	                    replacement.left = node.left;&#xD;	                    temp = replacement;&#xD;	                } else {&#xD;	                    replacement = node.right.left;&#xD;	                    while (replacement.left !== null) {&#xD;	                        replacement = replacement.left;&#xD;	                    }&#xD;	                    replacement.parent = replacement.parent;&#xD;	                    replacement.parent.left = replacement.right;&#xD;	                    temp = replacement.parent;&#xD;	                    replacement.left = node.left;&#xD;	                    replacement.right = node.right;&#xD;	                }&#xD;	            }&#xD;	            if (node.parent !== null) {&#xD;	                if (node.isLeftChild()) {&#xD;	                    node.parent.left = replacement;&#xD;	                } else {&#xD;	                    node.parent.right = replacement;&#xD;	                }&#xD;	            } else {&#xD;	                this._setRoot(replacement);&#xD;	            }&#xD;	            // this._replaceNodeInParent(node, replacement);&#xD;	            this._rebalance(temp);&#xD;	        }&#xD;	        node.dispose();&#xD;	    };&#xD;	    /**&#xD;		 *  Rotate the tree to the left&#xD;		 *  @param  {IntervalNode}  node&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._rotateLeft = function (node) {&#xD;	        var parent = node.parent;&#xD;	        var isLeftChild = node.isLeftChild();&#xD;	        // Make node.right the new root of this sub tree (instead of node)&#xD;	        var pivotNode = node.right;&#xD;	        node.right = pivotNode.left;&#xD;	        pivotNode.left = node;&#xD;	        if (parent !== null) {&#xD;	            if (isLeftChild) {&#xD;	                parent.left = pivotNode;&#xD;	            } else {&#xD;	                parent.right = pivotNode;&#xD;	            }&#xD;	        } else {&#xD;	            this._setRoot(pivotNode);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Rotate the tree to the right&#xD;		 *  @param  {IntervalNode}  node&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._rotateRight = function (node) {&#xD;	        var parent = node.parent;&#xD;	        var isLeftChild = node.isLeftChild();&#xD;	        // Make node.left the new root of this sub tree (instead of node)&#xD;	        var pivotNode = node.left;&#xD;	        node.left = pivotNode.right;&#xD;	        pivotNode.right = node;&#xD;	        if (parent !== null) {&#xD;	            if (isLeftChild) {&#xD;	                parent.left = pivotNode;&#xD;	            } else {&#xD;	                parent.right = pivotNode;&#xD;	            }&#xD;	        } else {&#xD;	            this._setRoot(pivotNode);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Balance the BST&#xD;		 *  @param  {IntervalNode}  node&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype._rebalance = function (node) {&#xD;	        var balance = node.getBalance();&#xD;	        if (balance &gt; 1) {&#xD;	            if (node.left.getBalance() &lt; 0) {&#xD;	                this._rotateLeft(node.left);&#xD;	            } else {&#xD;	                this._rotateRight(node);&#xD;	            }&#xD;	        } else if (balance &lt; -1) {&#xD;	            if (node.right.getBalance() &gt; 0) {&#xD;	                this._rotateRight(node.right);&#xD;	            } else {&#xD;	                this._rotateLeft(node);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Get an event whose time and duration span the give time. Will&#xD;		 *  return the match whose "time" value is closest to the given time.&#xD;		 *  @param  {Object}  event  The event to add to the timeline&#xD;		 *  @return  {Object}  The event which spans the desired time&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.get = function (time) {&#xD;	        if (this._root !== null) {&#xD;	            var results = [];&#xD;	            this._root.search(time, results);&#xD;	            if (results.length &gt; 0) {&#xD;	                var max = results[0];&#xD;	                for (var i = 1; i &lt; results.length; i++) {&#xD;	                    if (results[i].low &gt; max.low) {&#xD;	                        max = results[i];&#xD;	                    }&#xD;	                }&#xD;	                return max.event;&#xD;	            }&#xD;	        }&#xD;	        return null;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the timeline.&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.IntervalTimeline} this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.forEach = function (callback) {&#xD;	        if (this._root !== null) {&#xD;	            var allNodes = [];&#xD;	            if (this._root !== null) {&#xD;	                this._root.traverse(function (node) {&#xD;	                    allNodes.push(node);&#xD;	                });&#xD;	            }&#xD;	            for (var i = 0; i &lt; allNodes.length; i++) {&#xD;	                var ev = allNodes[i].event;&#xD;	                if (ev) {&#xD;	                    callback(ev);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array in which the given time&#xD;		 *  overlaps with the time and duration time of the event.&#xD;		 *  @param  {Number}  time The time to check if items are overlapping&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.IntervalTimeline} this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.forEachAtTime = function (time, callback) {&#xD;	        if (this._root !== null) {&#xD;	            var results = [];&#xD;	            this._root.search(time, results);&#xD;	            for (var i = results.length - 1; i &gt;= 0; i--) {&#xD;	                var ev = results[i].event;&#xD;	                if (ev) {&#xD;	                    callback(ev);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over everything in the array in which the time is greater&#xD;		 *  than the given time.&#xD;		 *  @param  {Number}  time The time to check if items are before&#xD;		 *  @param  {Function}  callback The callback to invoke with every item&#xD;		 *  @returns {Tone.IntervalTimeline} this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.forEachAfter = function (time, callback) {&#xD;	        if (this._root !== null) {&#xD;	            var results = [];&#xD;	            this._root.searchAfter(time, results);&#xD;	            for (var i = results.length - 1; i &gt;= 0; i--) {&#xD;	                var ev = results[i].event;&#xD;	                if (ev) {&#xD;	                    callback(ev);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.IntervalTimeline}  this&#xD;		 */&#xD;	    Tone.IntervalTimeline.prototype.dispose = function () {&#xD;	        var allNodes = [];&#xD;	        if (this._root !== null) {&#xD;	            this._root.traverse(function (node) {&#xD;	                allNodes.push(node);&#xD;	            });&#xD;	        }&#xD;	        for (var i = 0; i &lt; allNodes.length; i++) {&#xD;	            allNodes[i].dispose();&#xD;	        }&#xD;	        allNodes = null;&#xD;	        this._root = null;&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	INTERVAL NODE HELPER&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Represents a node in the binary search tree, with the addition&#xD;		 *  of a "high" value which keeps track of the highest value of&#xD;		 *  its children. &#xD;		 *  References: &#xD;		 *  https://brooknovak.wordpress.com/2013/12/07/augmented-interval-tree-in-c/&#xD;		 *  http://www.mif.vu.lt/&#126;valdas/ALGORITMAI/LITERATURA/Cormen/Cormen.pdf&#xD;		 *  @param {Number} low&#xD;		 *  @param {Number} high&#xD;		 *  @private&#xD;		 */&#xD;	    var IntervalNode = function (low, high, event) {&#xD;	        //the event container&#xD;	        this.event = event;&#xD;	        //the low value&#xD;	        this.low = low;&#xD;	        //the high value&#xD;	        this.high = high;&#xD;	        //the high value for this and all child nodes&#xD;	        this.max = this.high;&#xD;	        //the nodes to the left&#xD;	        this._left = null;&#xD;	        //the nodes to the right&#xD;	        this._right = null;&#xD;	        //the parent node&#xD;	        this.parent = null;&#xD;	        //the number of child nodes&#xD;	        this.height = 0;&#xD;	    };&#xD;	    /** &#xD;		 *  Insert a node into the correct spot in the tree&#xD;		 *  @param  {IntervalNode}  node&#xD;		 */&#xD;	    IntervalNode.prototype.insert = function (node) {&#xD;	        if (node.low &lt;= this.low) {&#xD;	            if (this.left === null) {&#xD;	                this.left = node;&#xD;	            } else {&#xD;	                this.left.insert(node);&#xD;	            }&#xD;	        } else {&#xD;	            if (this.right === null) {&#xD;	                this.right = node;&#xD;	            } else {&#xD;	                this.right.insert(node);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Search the tree for nodes which overlap &#xD;		 *  with the given point&#xD;		 *  @param  {Number}  point  The point to query&#xD;		 *  @param  {Array}  results  The array to put the results&#xD;		 */&#xD;	    IntervalNode.prototype.search = function (point, results) {&#xD;	        // If p is to the right of the rightmost point of any interval&#xD;	        // in this node and all children, there won&apos;t be any matches.&#xD;	        if (point &gt; this.max) {&#xD;	            return;&#xD;	        }&#xD;	        // Search left children&#xD;	        if (this.left !== null) {&#xD;	            this.left.search(point, results);&#xD;	        }&#xD;	        // Check this node&#xD;	        if (this.low &lt;= point &amp;&amp; this.high &gt; point) {&#xD;	            results.push(this);&#xD;	        }&#xD;	        // If p is to the left of the time of this interval,&#xD;	        // then it can&apos;t be in any child to the right.&#xD;	        if (this.low &gt; point) {&#xD;	            return;&#xD;	        }&#xD;	        // Search right children&#xD;	        if (this.right !== null) {&#xD;	            this.right.search(point, results);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Search the tree for nodes which are less &#xD;		 *  than the given point&#xD;		 *  @param  {Number}  point  The point to query&#xD;		 *  @param  {Array}  results  The array to put the results&#xD;		 */&#xD;	    IntervalNode.prototype.searchAfter = function (point, results) {&#xD;	        // Check this node&#xD;	        if (this.low &gt;= point) {&#xD;	            results.push(this);&#xD;	            if (this.left !== null) {&#xD;	                this.left.searchAfter(point, results);&#xD;	            }&#xD;	        }&#xD;	        // search the right side&#xD;	        if (this.right !== null) {&#xD;	            this.right.searchAfter(point, results);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Invoke the callback on this element and both it&apos;s branches&#xD;		 *  @param  {Function}  callback&#xD;		 */&#xD;	    IntervalNode.prototype.traverse = function (callback) {&#xD;	        callback(this);&#xD;	        if (this.left !== null) {&#xD;	            this.left.traverse(callback);&#xD;	        }&#xD;	        if (this.right !== null) {&#xD;	            this.right.traverse(callback);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Update the height of the node&#xD;		 */&#xD;	    IntervalNode.prototype.updateHeight = function () {&#xD;	        if (this.left !== null &amp;&amp; this.right !== null) {&#xD;	            this.height = Math.max(this.left.height, this.right.height) + 1;&#xD;	        } else if (this.right !== null) {&#xD;	            this.height = this.right.height + 1;&#xD;	        } else if (this.left !== null) {&#xD;	            this.height = this.left.height + 1;&#xD;	        } else {&#xD;	            this.height = 0;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Update the height of the node&#xD;		 */&#xD;	    IntervalNode.prototype.updateMax = function () {&#xD;	        this.max = this.high;&#xD;	        if (this.left !== null) {&#xD;	            this.max = Math.max(this.max, this.left.max);&#xD;	        }&#xD;	        if (this.right !== null) {&#xD;	            this.max = Math.max(this.max, this.right.max);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  The balance is how the leafs are distributed on the node&#xD;		 *  @return  {Number}  Negative numbers are balanced to the right&#xD;		 */&#xD;	    IntervalNode.prototype.getBalance = function () {&#xD;	        var balance = 0;&#xD;	        if (this.left !== null &amp;&amp; this.right !== null) {&#xD;	            balance = this.left.height - this.right.height;&#xD;	        } else if (this.left !== null) {&#xD;	            balance = this.left.height + 1;&#xD;	        } else if (this.right !== null) {&#xD;	            balance = -(this.right.height + 1);&#xD;	        }&#xD;	        return balance;&#xD;	    };&#xD;	    /**&#xD;		 *  @returns {Boolean} true if this node is the left child&#xD;		 *  of its parent&#xD;		 */&#xD;	    IntervalNode.prototype.isLeftChild = function () {&#xD;	        return this.parent !== null &amp;&amp; this.parent.left === this;&#xD;	    };&#xD;	    /**&#xD;		 *  get/set the left node&#xD;		 *  @type {IntervalNode}&#xD;		 */&#xD;	    Object.defineProperty(IntervalNode.prototype, &apos;left&apos;, {&#xD;	        get: function () {&#xD;	            return this._left;&#xD;	        },&#xD;	        set: function (node) {&#xD;	            this._left = node;&#xD;	            if (node !== null) {&#xD;	                node.parent = this;&#xD;	            }&#xD;	            this.updateHeight();&#xD;	            this.updateMax();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  get/set the right node&#xD;		 *  @type {IntervalNode}&#xD;		 */&#xD;	    Object.defineProperty(IntervalNode.prototype, &apos;right&apos;, {&#xD;	        get: function () {&#xD;	            return this._right;&#xD;	        },&#xD;	        set: function (node) {&#xD;	            this._right = node;&#xD;	            if (node !== null) {&#xD;	                node.parent = this;&#xD;	            }&#xD;	            this.updateHeight();&#xD;	            this.updateMax();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  null out references.&#xD;		 */&#xD;	    IntervalNode.prototype.dispose = function () {&#xD;	        this.parent = null;&#xD;	        this._left = null;&#xD;	        this._right = null;&#xD;	        this.event = null;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	END INTERVAL NODE HELPER&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    return Tone.IntervalTimeline;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Transport for timing musical events.&#xD;		 *          Supports tempo curves and time changes. Unlike browser-based timing (setInterval, requestAnimationFrame)&#xD;		 *          Tone.Transport timing events pass in the exact time of the scheduled event&#xD;		 *          in the argument of the callback function. Pass that time value to the object&#xD;		 *          you&apos;re scheduling. &lt;br&gt;&lt;br&gt;&#xD;		 *          A single transport is created for you when the library is initialized. &#xD;		 *          &lt;br&gt;&lt;br&gt;&#xD;		 *          The transport emits the events: "start", "stop", "pause", and "loop" which are&#xD;		 *          called with the time of that event as the argument. &#xD;		 *&#xD;		 *  @extends {Tone.Emitter}&#xD;		 *  @singleton&#xD;		 *  @example&#xD;		 * //repeated event every 8th note&#xD;		 * Tone.Transport.scheduleRepeat(function(time){&#xD;		 * 	//do something with the time&#xD;		 * }, "8n");&#xD;		 *  @example&#xD;		 * //schedule an event on the 16th measure&#xD;		 * Tone.Transport.schedule(function(time){&#xD;		 * 	//do something with the time&#xD;		 * }, "16:0:0");&#xD;		 */&#xD;	    Tone.Transport = function () {&#xD;	        Tone.Emitter.call(this);&#xD;	        ///////////////////////////////////////////////////////////////////////&#xD;	        //	LOOPING&#xD;	        //////////////////////////////////////////////////////////////////////&#xD;	        /** &#xD;			 * 	If the transport loops or not.&#xD;			 *  @type {boolean}&#xD;			 */&#xD;	        this.loop = false;&#xD;	        /** &#xD;			 * 	The loop start position in ticks&#xD;			 *  @type {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopStart = 0;&#xD;	        /** &#xD;			 * 	The loop end position in ticks&#xD;			 *  @type {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopEnd = 0;&#xD;	        ///////////////////////////////////////////////////////////////////////&#xD;	        //	CLOCK/TEMPO&#xD;	        //////////////////////////////////////////////////////////////////////&#xD;	        /**&#xD;			 *  Pulses per quarter is the number of ticks per quarter note.&#xD;			 *  @private&#xD;			 *  @type  {Number}&#xD;			 */&#xD;	        this._ppq = TransportConstructor.defaults.PPQ;&#xD;	        /**&#xD;			 *  watches the main oscillator for timing ticks&#xD;			 *  initially starts at 120bpm&#xD;			 *  @private&#xD;			 *  @type {Tone.Clock}&#xD;			 */&#xD;	        this._clock = new Tone.Clock({&#xD;	            &apos;callback&apos;: this._processTick.bind(this),&#xD;	            &apos;frequency&apos;: 0&#xD;	        });&#xD;	        this._bindClockEvents();&#xD;	        /**&#xD;			 *  The Beats Per Minute of the Transport. &#xD;			 *  @type {BPM}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * Tone.Transport.bpm.value = 80;&#xD;			 * //ramp the bpm to 120 over 10 seconds&#xD;			 * Tone.Transport.bpm.rampTo(120, 10);&#xD;			 */&#xD;	        this.bpm = this._clock.frequency;&#xD;	        this.bpm._toUnits = this._toUnits.bind(this);&#xD;	        this.bpm._fromUnits = this._fromUnits.bind(this);&#xD;	        this.bpm.units = Tone.Type.BPM;&#xD;	        this.bpm.value = TransportConstructor.defaults.bpm;&#xD;	        this._readOnly(&apos;bpm&apos;);&#xD;	        /**&#xD;			 *  The time signature, or more accurately the numerator&#xD;			 *  of the time signature over a denominator of 4. &#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._timeSignature = TransportConstructor.defaults.timeSignature;&#xD;	        ///////////////////////////////////////////////////////////////////////&#xD;	        //	TIMELINE EVENTS&#xD;	        //////////////////////////////////////////////////////////////////////&#xD;	        /**&#xD;			 *  All the events in an object to keep track by ID&#xD;			 *  @type {Object}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scheduledEvents = {};&#xD;	        /**&#xD;			 *  The event ID counter&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._eventID = 0;&#xD;	        /**&#xD;			 * 	The scheduled events.&#xD;			 *  @type {Tone.Timeline}&#xD;			 *  @private&#xD;			 */&#xD;	        this._timeline = new Tone.Timeline();&#xD;	        /**&#xD;			 *  Repeated events&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._repeatedEvents = new Tone.IntervalTimeline();&#xD;	        /**&#xD;			 *  Events that occur once&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._onceEvents = new Tone.Timeline();&#xD;	        /** &#xD;			 *  All of the synced Signals&#xD;			 *  @private &#xD;			 *  @type {Array}&#xD;			 */&#xD;	        this._syncedSignals = [];&#xD;	        ///////////////////////////////////////////////////////////////////////&#xD;	        //	SWING&#xD;	        //////////////////////////////////////////////////////////////////////&#xD;	        /**&#xD;			 *  The subdivision of the swing&#xD;			 *  @type  {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._swingTicks = TransportConstructor.defaults.PPQ / 2;&#xD;	        //8n&#xD;	        /**&#xD;			 *  The swing amount&#xD;			 *  @type {NormalRange}&#xD;			 *  @private&#xD;			 */&#xD;	        this._swingAmount = 0;&#xD;	    };&#xD;	    Tone.extend(Tone.Transport, Tone.Emitter);&#xD;	    /**&#xD;		 *  the defaults&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Transport.defaults = {&#xD;	        &apos;bpm&apos;: 120,&#xD;	        &apos;swing&apos;: 0,&#xD;	        &apos;swingSubdivision&apos;: &apos;8n&apos;,&#xD;	        &apos;timeSignature&apos;: 4,&#xD;	        &apos;loopStart&apos;: 0,&#xD;	        &apos;loopEnd&apos;: &apos;4m&apos;,&#xD;	        &apos;PPQ&apos;: 192&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	TICKS&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  called on every tick&#xD;		 *  @param   {number} tickTime clock relative tick time&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Transport.prototype._processTick = function (tickTime) {&#xD;	        var ticks = this._clock.ticks;&#xD;	        //handle swing&#xD;	        if (this._swingAmount &gt; 0 &amp;&amp; ticks % this._ppq !== 0 &amp;&amp; //not on a downbeat&#xD;	            ticks % (this._swingTicks * 2) !== 0) {&#xD;	            //add some swing&#xD;	            var progress = ticks % (this._swingTicks * 2) / (this._swingTicks * 2);&#xD;	            var amount = Math.sin(progress * Math.PI) * this._swingAmount;&#xD;	            tickTime += Tone.Time(this._swingTicks * 2 / 3, &apos;i&apos;).eval() * amount;&#xD;	        }&#xD;	        //do the loop test&#xD;	        if (this.loop) {&#xD;	            if (ticks === this._loopEnd) {&#xD;	                this.emit(&apos;loopEnd&apos;, tickTime);&#xD;	                this._clock.ticks = this._loopStart;&#xD;	                ticks = this._loopStart;&#xD;	                this.emit(&apos;loopStart&apos;, tickTime, this.seconds);&#xD;	                this.emit(&apos;loop&apos;, tickTime);&#xD;	            }&#xD;	        }&#xD;	        //process the single occurrence events&#xD;	        this._onceEvents.forEachBefore(ticks, function (event) {&#xD;	            event.callback(tickTime);&#xD;	            //remove the event&#xD;	            delete this._scheduledEvents[event.id.toString()];&#xD;	        }.bind(this));&#xD;	        //and clear the single occurrence timeline&#xD;	        this._onceEvents.cancelBefore(ticks);&#xD;	        //fire the next tick events if their time has come&#xD;	        this._timeline.forEachAtTime(ticks, function (event) {&#xD;	            event.callback(tickTime);&#xD;	        });&#xD;	        //process the repeated events&#xD;	        this._repeatedEvents.forEachAtTime(ticks, function (event) {&#xD;	            if ((ticks - event.time) % event.interval === 0) {&#xD;	                event.callback(tickTime);&#xD;	            }&#xD;	        });&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	SCHEDULABLE EVENTS&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Schedule an event along the timeline.&#xD;		 *  @param {Function} callback The callback to be invoked at the time.&#xD;		 *  @param {TransportTime}  time The time to invoke the callback at.&#xD;		 *  @return {Number} The id of the event which can be used for canceling the event. &#xD;		 *  @example&#xD;		 * //trigger the callback when the Transport reaches the desired time&#xD;		 * Tone.Transport.schedule(function(time){&#xD;		 * 	envelope.triggerAttack(time);&#xD;		 * }, "128i");&#xD;		 */&#xD;	    Tone.Transport.prototype.schedule = function (callback, time) {&#xD;	        var event = {&#xD;	            &apos;time&apos;: this.toTicks(time),&#xD;	            &apos;callback&apos;: callback&#xD;	        };&#xD;	        var id = this._eventID++;&#xD;	        this._scheduledEvents[id.toString()] = {&#xD;	            &apos;event&apos;: event,&#xD;	            &apos;timeline&apos;: this._timeline&#xD;	        };&#xD;	        this._timeline.add(event);&#xD;	        return id;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedule a repeated event along the timeline. The event will fire&#xD;		 *  at the `interval` starting at the `startTime` and for the specified&#xD;		 *  `duration`. &#xD;		 *  @param  {Function}  callback   The callback to invoke.&#xD;		 *  @param  {Time}    interval   The duration between successive&#xD;		 *                               callbacks.&#xD;		 *  @param  {TimelinePosition=}    startTime  When along the timeline the events should&#xD;		 *                               start being invoked.&#xD;		 *  @param {Time} [duration=Infinity] How long the event should repeat. &#xD;		 *  @return  {Number}    The ID of the scheduled event. Use this to cancel&#xD;		 *                           the event. &#xD;		 *  @example&#xD;		 * //a callback invoked every eighth note after the first measure&#xD;		 * Tone.Transport.scheduleRepeat(callback, "8n", "1m");&#xD;		 */&#xD;	    Tone.Transport.prototype.scheduleRepeat = function (callback, interval, startTime, duration) {&#xD;	        if (interval &lt;= 0) {&#xD;	            throw new Error(&apos;Tone.Transport: repeat events must have an interval larger than 0&apos;);&#xD;	        }&#xD;	        var event = {&#xD;	            &apos;time&apos;: this.toTicks(startTime),&#xD;	            &apos;duration&apos;: this.toTicks(this.defaultArg(duration, Infinity)),&#xD;	            &apos;interval&apos;: this.toTicks(interval),&#xD;	            &apos;callback&apos;: callback&#xD;	        };&#xD;	        var id = this._eventID++;&#xD;	        this._scheduledEvents[id.toString()] = {&#xD;	            &apos;event&apos;: event,&#xD;	            &apos;timeline&apos;: this._repeatedEvents&#xD;	        };&#xD;	        this._repeatedEvents.add(event);&#xD;	        return id;&#xD;	    };&#xD;	    /**&#xD;		 *  Schedule an event that will be removed after it is invoked. &#xD;		 *  Note that if the given time is less than the current transport time, &#xD;		 *  the event will be invoked immediately. &#xD;		 *  @param {Function} callback The callback to invoke once.&#xD;		 *  @param {TransportTime} time The time the callback should be invoked.&#xD;		 *  @returns {Number} The ID of the scheduled event. &#xD;		 */&#xD;	    Tone.Transport.prototype.scheduleOnce = function (callback, time) {&#xD;	        var id = this._eventID++;&#xD;	        var event = {&#xD;	            &apos;time&apos;: this.toTicks(time),&#xD;	            &apos;callback&apos;: callback,&#xD;	            &apos;id&apos;: id&#xD;	        };&#xD;	        this._scheduledEvents[id.toString()] = {&#xD;	            &apos;event&apos;: event,&#xD;	            &apos;timeline&apos;: this._onceEvents&#xD;	        };&#xD;	        this._onceEvents.add(event);&#xD;	        return id;&#xD;	    };&#xD;	    /**&#xD;		 *  Clear the passed in event id from the timeline&#xD;		 *  @param {Number} eventId The id of the event.&#xD;		 *  @returns {Tone.Transport} this&#xD;		 */&#xD;	    Tone.Transport.prototype.clear = function (eventId) {&#xD;	        if (this._scheduledEvents.hasOwnProperty(eventId)) {&#xD;	            var item = this._scheduledEvents[eventId.toString()];&#xD;	            item.timeline.remove(item.event);&#xD;	            delete this._scheduledEvents[eventId.toString()];&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove scheduled events from the timeline after&#xD;		 *  the given time. Repeated events will be removed&#xD;		 *  if their startTime is after the given time&#xD;		 *  @param {TransportTime} [after=0] Clear all events after&#xD;		 *                          this time. &#xD;		 *  @returns {Tone.Transport} this&#xD;		 */&#xD;	    Tone.Transport.prototype.cancel = function (after) {&#xD;	        after = this.defaultArg(after, 0);&#xD;	        after = this.toTicks(after);&#xD;	        this._timeline.cancel(after);&#xD;	        this._onceEvents.cancel(after);&#xD;	        this._repeatedEvents.cancel(after);&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	START/STOP/PAUSE&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Bind start/stop/pause events from the clock and emit them.&#xD;		 */&#xD;	    Tone.Transport.prototype._bindClockEvents = function () {&#xD;	        this._clock.on(&apos;start&apos;, function (time, offset) {&#xD;	            offset = Tone.Time(this._clock.ticks, &apos;i&apos;).toSeconds();&#xD;	            this.emit(&apos;start&apos;, time, offset);&#xD;	        }.bind(this));&#xD;	        this._clock.on(&apos;stop&apos;, function (time) {&#xD;	            this.emit(&apos;stop&apos;, time);&#xD;	        }.bind(this));&#xD;	        this._clock.on(&apos;pause&apos;, function (time) {&#xD;	            this.emit(&apos;pause&apos;, time);&#xD;	        }.bind(this));&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source, either "started", "stopped", or "paused"&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._clock.getStateAtTime(this.now());&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Start the transport and all sources synced to the transport.&#xD;		 *  @param  {Time} [time=now] The time when the transport should start.&#xD;		 *  @param  {TransportTime=} offset The timeline offset to start the transport.&#xD;		 *  @returns {Tone.Transport} this&#xD;		 *  @example&#xD;		 * //start the transport in one second starting at beginning of the 5th measure. &#xD;		 * Tone.Transport.start("+1", "4:0:0");&#xD;		 */&#xD;	    Tone.Transport.prototype.start = function (time, offset) {&#xD;	        //start the clock&#xD;	        if (!this.isUndef(offset)) {&#xD;	            offset = this.toTicks(offset);&#xD;	        }&#xD;	        this._clock.start(time, offset);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the transport and all sources synced to the transport.&#xD;		 *  @param  {Time} [time=now] The time when the transport should stop. &#xD;		 *  @returns {Tone.Transport} this&#xD;		 *  @example&#xD;		 * Tone.Transport.stop();&#xD;		 */&#xD;	    Tone.Transport.prototype.stop = function (time) {&#xD;	        this._clock.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Pause the transport and all sources synced to the transport.&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @returns {Tone.Transport} this&#xD;		 */&#xD;	    Tone.Transport.prototype.pause = function (time) {&#xD;	        this._clock.pause(time);&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	SETTERS/GETTERS&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  The time signature as just the numerator over 4. &#xD;		 *  For example 4/4 would be just 4 and 6/8 would be 3.&#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Number|Array}&#xD;		 *  @name timeSignature&#xD;		 *  @example&#xD;		 * //common time&#xD;		 * Tone.Transport.timeSignature = 4;&#xD;		 * // 7/8&#xD;		 * Tone.Transport.timeSignature = [7, 8];&#xD;		 * //this will be reduced to a single number&#xD;		 * Tone.Transport.timeSignature; //returns 3.5&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;timeSignature&apos;, {&#xD;	        get: function () {&#xD;	            return this._timeSignature;&#xD;	        },&#xD;	        set: function (timeSig) {&#xD;	            if (this.isArray(timeSig)) {&#xD;	                timeSig = timeSig[0] / timeSig[1] * 4;&#xD;	            }&#xD;	            this._timeSignature = timeSig;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * When the Tone.Transport.loop = true, this is the starting position of the loop.&#xD;		 * @memberOf Tone.Transport#&#xD;		 * @type {TransportTime}&#xD;		 * @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopStart, &apos;i&apos;).toSeconds();&#xD;	        },&#xD;	        set: function (startPosition) {&#xD;	            this._loopStart = this.toTicks(startPosition);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * When the Tone.Transport.loop = true, this is the ending position of the loop.&#xD;		 * @memberOf Tone.Transport#&#xD;		 * @type {TransportTime}&#xD;		 * @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopEnd, &apos;i&apos;).toSeconds();&#xD;	        },&#xD;	        set: function (endPosition) {&#xD;	            this._loopEnd = this.toTicks(endPosition);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Set the loop start and stop at the same time. &#xD;		 *  @param {TransportTime} startPosition &#xD;		 *  @param {TransportTime} endPosition   &#xD;		 *  @returns {Tone.Transport} this&#xD;		 *  @example&#xD;		 * //loop over the first measure&#xD;		 * Tone.Transport.setLoopPoints(0, "1m");&#xD;		 * Tone.Transport.loop = true;&#xD;		 */&#xD;	    Tone.Transport.prototype.setLoopPoints = function (startPosition, endPosition) {&#xD;	        this.loopStart = startPosition;&#xD;	        this.loopEnd = endPosition;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The swing value. Between 0-1 where 1 equal to &#xD;		 *  the note + half the subdivision.&#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name swing&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;swing&apos;, {&#xD;	        get: function () {&#xD;	            return this._swingAmount;&#xD;	        },&#xD;	        set: function (amount) {&#xD;	            //scale the values to a normal range&#xD;	            this._swingAmount = amount;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Set the subdivision which the swing will be applied to. &#xD;		 *  The default value is an 8th note. Value must be less &#xD;		 *  than a quarter note.&#xD;		 *  &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Time}&#xD;		 *  @name swingSubdivision&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;swingSubdivision&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.Time(this._swingTicks, &apos;i&apos;).toNotation();&#xD;	        },&#xD;	        set: function (subdivision) {&#xD;	            this._swingTicks = this.toTicks(subdivision);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The Transport&apos;s position in Bars:Beats:Sixteenths.&#xD;		 *  Setting the value will jump to that position right away. &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {BarsBeatsSixteenths}&#xD;		 *  @name position&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;position&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this.ticks, &apos;i&apos;).toBarsBeatsSixteenths();&#xD;	        },&#xD;	        set: function (progress) {&#xD;	            var ticks = this.toTicks(progress);&#xD;	            this.ticks = ticks;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The Transport&apos;s position in seconds&#xD;		 *  Setting the value will jump to that position right away. &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Seconds}&#xD;		 *  @name seconds&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;seconds&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this.ticks, &apos;i&apos;).toSeconds();&#xD;	        },&#xD;	        set: function (progress) {&#xD;	            var ticks = this.toTicks(progress);&#xD;	            this.ticks = ticks;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The Transport&apos;s loop position as a normalized value. Always&#xD;		 *  returns 0 if the transport if loop is not true. &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @name progress&#xD;		 *  @type {NormalRange}&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;progress&apos;, {&#xD;	        get: function () {&#xD;	            if (this.loop) {&#xD;	                return (this.ticks - this._loopStart) / (this._loopEnd - this._loopStart);&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The transports current tick position.&#xD;		 *  &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Ticks}&#xD;		 *  @name ticks&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;ticks&apos;, {&#xD;	        get: function () {&#xD;	            return this._clock.ticks;&#xD;	        },&#xD;	        set: function (t) {&#xD;	            var now = this.now();&#xD;	            //stop everything synced to the transport&#xD;	            if (this.state === Tone.State.Started) {&#xD;	                this.emit(&apos;stop&apos;, now);&#xD;	                this._clock.ticks = t;&#xD;	                //restart it with the new time&#xD;	                this.emit(&apos;start&apos;, now, this.seconds);&#xD;	            } else {&#xD;	                this._clock.ticks = t;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Pulses Per Quarter note. This is the smallest resolution&#xD;		 *  the Transport timing supports. This should be set once&#xD;		 *  on initialization and not set again. Changing this value &#xD;		 *  after other objects have been created can cause problems. &#xD;		 *  &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Number}&#xD;		 *  @name PPQ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;PPQ&apos;, {&#xD;	        get: function () {&#xD;	            return this._ppq;&#xD;	        },&#xD;	        set: function (ppq) {&#xD;	            var bpm = this.bpm.value;&#xD;	            this._ppq = ppq;&#xD;	            this.bpm.value = bpm;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The hint to the type of playback. Affects tradeoffs between audio &#xD;		 *  output latency and responsiveness. &#xD;		 *  &#xD;		 *  In addition to setting the value in seconds, the latencyHint also&#xD;		 *  accepts the strings "interactive" (prioritizes low latency), &#xD;		 *  "playback" (prioritizes sustained playback), "balanced" (balances&#xD;		 *  latency and performance), and "fastest" (lowest latency, might glitch more often). &#xD;		 *  @memberOf Tone.Transport#&#xD;		 *  @type {Seconds|String}&#xD;		 *  @name latencyHint&#xD;		 */&#xD;	    Object.defineProperty(Tone.Transport.prototype, &apos;latencyHint&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.Clock.latencyHint;&#xD;	        },&#xD;	        set: function (hint) {&#xD;	            Tone.Clock.latencyHint = hint;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Convert from BPM to frequency (factoring in PPQ)&#xD;		 *  @param  {BPM}  bpm The BPM value to convert to frequency&#xD;		 *  @return  {Frequency}  The BPM as a frequency with PPQ factored in.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Transport.prototype._fromUnits = function (bpm) {&#xD;	        return 1 / (60 / bpm / this.PPQ);&#xD;	    };&#xD;	    /**&#xD;		 *  Convert from frequency (with PPQ) into BPM&#xD;		 *  @param  {Frequency}  freq The clocks frequency to convert to BPM&#xD;		 *  @return  {BPM}  The frequency value as BPM.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Transport.prototype._toUnits = function (freq) {&#xD;	        return freq / this.PPQ * 60;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	SYNCING&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Returns the time aligned to the next subdivision&#xD;		 *  of the Transport. If the Transport is not started,&#xD;		 *  it will return 0.&#xD;		 *  Note: this will not work precisely during tempo ramps.&#xD;		 *  @param  {Time}  subdivision  The subdivision to quantize to&#xD;		 *  @return  {Number}  The context time of the next subdivision.&#xD;		 *  @example&#xD;		 * Tone.Transport.start(); //the transport must be started&#xD;		 * Tone.Transport.nextSubdivision("4n");&#xD;		 */&#xD;	    Tone.Transport.prototype.nextSubdivision = function (subdivision) {&#xD;	        subdivision = this.toSeconds(subdivision);&#xD;	        //if the transport&apos;s not started, return 0&#xD;	        var now;&#xD;	        if (this.state === Tone.State.Started) {&#xD;	            now = this._clock._nextTick;&#xD;	        } else {&#xD;	            return 0;&#xD;	        }&#xD;	        var transportPos = Tone.Time(this.ticks, &apos;i&apos;).eval();&#xD;	        var remainingTime = subdivision - transportPos % subdivision;&#xD;	        if (remainingTime === 0) {&#xD;	            remainingTime = subdivision;&#xD;	        }&#xD;	        return now + remainingTime;&#xD;	    };&#xD;	    /**&#xD;		 *  Attaches the signal to the tempo control signal so that &#xD;		 *  any changes in the tempo will change the signal in the same&#xD;		 *  ratio. &#xD;		 *  &#xD;		 *  @param  {Tone.Signal} signal &#xD;		 *  @param {number=} ratio Optionally pass in the ratio between&#xD;		 *                         the two signals. Otherwise it will be computed&#xD;		 *                         based on their current values. &#xD;		 *  @returns {Tone.Transport} this&#xD;		 */&#xD;	    Tone.Transport.prototype.syncSignal = function (signal, ratio) {&#xD;	        if (!ratio) {&#xD;	            //get the sync ratio&#xD;	            if (signal._param.value !== 0) {&#xD;	                ratio = signal._param.value / this.bpm._param.value;&#xD;	            } else {&#xD;	                ratio = 0;&#xD;	            }&#xD;	        }&#xD;	        var ratioSignal = new Tone.Gain(ratio);&#xD;	        this.bpm.chain(ratioSignal, signal._param);&#xD;	        this._syncedSignals.push({&#xD;	            &apos;ratio&apos;: ratioSignal,&#xD;	            &apos;signal&apos;: signal,&#xD;	            &apos;initial&apos;: signal._param.value&#xD;	        });&#xD;	        signal._param.value = 0;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Unsyncs a previously synced signal from the transport&apos;s control. &#xD;		 *  See Tone.Transport.syncSignal.&#xD;		 *  @param  {Tone.Signal} signal &#xD;		 *  @returns {Tone.Transport} this&#xD;		 */&#xD;	    Tone.Transport.prototype.unsyncSignal = function (signal) {&#xD;	        for (var i = this._syncedSignals.length - 1; i &gt;= 0; i--) {&#xD;	            var syncedSignal = this._syncedSignals[i];&#xD;	            if (syncedSignal.signal === signal) {&#xD;	                syncedSignal.ratio.dispose();&#xD;	                syncedSignal.signal._param.value = syncedSignal.initial;&#xD;	                this._syncedSignals.splice(i, 1);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Transport} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Transport.prototype.dispose = function () {&#xD;	        Tone.Emitter.prototype.dispose.call(this);&#xD;	        this._clock.dispose();&#xD;	        this._clock = null;&#xD;	        this._writable(&apos;bpm&apos;);&#xD;	        this.bpm = null;&#xD;	        this._timeline.dispose();&#xD;	        this._timeline = null;&#xD;	        this._onceEvents.dispose();&#xD;	        this._onceEvents = null;&#xD;	        this._repeatedEvents.dispose();&#xD;	        this._repeatedEvents = null;&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    //	INITIALIZATION&#xD;	    ///////////////////////////////////////////////////////////////////////////////&#xD;	    var TransportConstructor = Tone.Transport;&#xD;	    Tone._initAudioContext(function () {&#xD;	        if (typeof Tone.Transport === &apos;function&apos;) {&#xD;	            //a single transport object&#xD;	            Tone.Transport = new Tone.Transport();&#xD;	        } else {&#xD;	            //stop the clock&#xD;	            Tone.Transport.stop();&#xD;	            //get the previous values&#xD;	            var prevSettings = Tone.Transport.get();&#xD;	            //destory the old transport&#xD;	            Tone.Transport.dispose();&#xD;	            //make new Transport insides&#xD;	            TransportConstructor.call(Tone.Transport);&#xD;	            //set the previous config&#xD;	            Tone.Transport.set(prevSettings);&#xD;	        }&#xD;	    });&#xD;	    return Tone.Transport;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Volume is a simple volume node, useful for creating a volume fader. &#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Decibels} [volume=0] the initial volume&#xD;		 *  @example&#xD;		 * var vol = new Tone.Volume(-12);&#xD;		 * instrument.chain(vol, Tone.Master);&#xD;		 */&#xD;	    Tone.Volume = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;volume&apos;], Tone.Volume.defaults);&#xD;	        /**&#xD;			 * the output node&#xD;			 * @type {GainNode}&#xD;			 * @private&#xD;			 */&#xD;	        this.output = this.input = new Tone.Gain(options.volume, Tone.Type.Decibels);&#xD;	        /**&#xD;			 * The unmuted volume&#xD;			 * @type {Decibels}&#xD;			 * @private&#xD;			 */&#xD;	        this._unmutedVolume = 0;&#xD;	        /**&#xD;			 *  if the volume is muted&#xD;			 *  @type {Boolean}&#xD;			 *  @private&#xD;			 */&#xD;	        this._muted = false;&#xD;	        /**&#xD;			 *  The volume control in decibels. &#xD;			 *  @type {Decibels}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.volume = this.output.gain;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	        //set the mute initially&#xD;	        this.mute = options.mute;&#xD;	    };&#xD;	    Tone.extend(Tone.Volume);&#xD;	    /**&#xD;		 *  Defaults&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Volume.defaults = {&#xD;	        &apos;volume&apos;: 0,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.Volume#&#xD;		 * @type {boolean}&#xD;		 * @name mute&#xD;		 * @example&#xD;		 * //mute the output&#xD;		 * volume.mute = true;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Volume.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._muted;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            if (!this._muted &amp;&amp; mute) {&#xD;	                this._unmutedVolume = this.volume.value;&#xD;	                //maybe it should ramp here?&#xD;	                this.volume.value = -Infinity;&#xD;	            } else if (this._muted &amp;&amp; !mute) {&#xD;	                this.volume.value = this._unmutedVolume;&#xD;	            }&#xD;	            this._muted = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Volume} this&#xD;		 */&#xD;	    Tone.Volume.prototype.dispose = function () {&#xD;	        this.input.dispose();&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable(&apos;volume&apos;);&#xD;	        this.volume.dispose();&#xD;	        this.volume = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Volume;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  A single master output which is connected to the&#xD;		 *          AudioDestinationNode (aka your speakers). &#xD;		 *          It provides useful conveniences such as the ability &#xD;		 *          to set the volume and mute the entire application. &#xD;		 *          It also gives you the ability to apply master effects to your application. &#xD;		 *          &lt;br&gt;&lt;br&gt;&#xD;		 *          Like Tone.Transport, A single Tone.Master is created&#xD;		 *          on initialization and you do not need to explicitly construct one.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @singleton&#xD;		 *  @example&#xD;		 * //the audio will go from the oscillator to the speakers&#xD;		 * oscillator.connect(Tone.Master);&#xD;		 * //a convenience for connecting to the master output is also provided:&#xD;		 * oscillator.toMaster();&#xD;		 * //the above two examples are equivalent.&#xD;		 */&#xD;	    Tone.Master = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        /**&#xD;			 *  The private volume node&#xD;			 *  @type  {Tone.Volume}&#xD;			 *  @private&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume();&#xD;	        /**&#xD;			 * The volume of the master output.&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	        //connections&#xD;	        this.input.chain(this.output, this.context.destination);&#xD;	    };&#xD;	    Tone.extend(Tone.Master);&#xD;	    /**&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Master.defaults = {&#xD;	        &apos;volume&apos;: 0,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.Master#&#xD;		 * @type {boolean}&#xD;		 * @name mute&#xD;		 * @example&#xD;		 * //mute the output&#xD;		 * Tone.Master.mute = true;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Master.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._volume.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._volume.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Add a master effects chain. NOTE: this will disconnect any nodes which were previously &#xD;		 *  chained in the master effects chain. &#xD;		 *  @param {AudioNode|Tone...} args All arguments will be connected in a row&#xD;		 *                                  and the Master will be routed through it.&#xD;		 *  @return  {Tone.Master}  this&#xD;		 *  @example&#xD;		 * //some overall compression to keep the levels in check&#xD;		 * var masterCompressor = new Tone.Compressor({&#xD;		 * 	"threshold" : -6,&#xD;		 * 	"ratio" : 3,&#xD;		 * 	"attack" : 0.5,&#xD;		 * 	"release" : 0.1&#xD;		 * });&#xD;		 * //give a little boost to the lows&#xD;		 * var lowBump = new Tone.Filter(200, "lowshelf");&#xD;		 * //route everything through the filter &#xD;		 * //and compressor before going to the speakers&#xD;		 * Tone.Master.chain(lowBump, masterCompressor);&#xD;		 */&#xD;	    Tone.Master.prototype.chain = function () {&#xD;	        this.input.disconnect();&#xD;	        this.input.chain.apply(this.input, arguments);&#xD;	        arguments[arguments.length - 1].connect(this.output);&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Master}  this&#xD;		 */&#xD;	    Tone.Master.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable(&apos;volume&apos;);&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this.volume = null;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //	AUGMENT TONE&apos;s PROTOTYPE&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *  Connect &apos;this&apos; to the master output. Shorthand for this.connect(Tone.Master)&#xD;		 *  @returns {Tone} this&#xD;		 *  @example&#xD;		 * //connect an oscillator to the master output&#xD;		 * var osc = new Tone.Oscillator().toMaster();&#xD;		 */&#xD;	    Tone.prototype.toMaster = function () {&#xD;	        this.connect(Tone.Master);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Also augment AudioNode&apos;s prototype to include toMaster&#xD;		 *  as a convenience&#xD;		 *  @returns {AudioNode} this&#xD;		 */&#xD;	    AudioNode.prototype.toMaster = function () {&#xD;	        this.connect(Tone.Master);&#xD;	        return this;&#xD;	    };&#xD;	    var MasterConstructor = Tone.Master;&#xD;	    /**&#xD;		 *  initialize the module and listen for new audio contexts&#xD;		 */&#xD;	    Tone._initAudioContext(function () {&#xD;	        //a single master output&#xD;	        if (!Tone.prototype.isUndef(Tone.Master)) {&#xD;	            Tone.Master = new MasterConstructor();&#xD;	        } else {&#xD;	            MasterConstructor.prototype.dispose.call(Tone.Master);&#xD;	            MasterConstructor.call(Tone.Master);&#xD;	        }&#xD;	    });&#xD;	    return Tone.Master;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Base class for sources. Sources have start/stop methods&#xD;		 *          and the ability to be synced to the &#xD;		 *          start/stop of Tone.Transport. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * //Multiple state change events can be chained together,&#xD;		 * //but must be set in the correct order and with ascending times&#xD;		 * &#xD;		 * // OK&#xD;		 * state.start().stop("+0.2");&#xD;		 * // AND&#xD;		 * state.start().stop("+0.2").start("+0.4").stop("+0.7")&#xD;		 *&#xD;		 * // BAD&#xD;		 * state.stop("+0.2").start();&#xD;		 * // OR&#xD;		 * state.start("+0.3").stop("+0.2");&#xD;		 * &#xD;		 */&#xD;	    Tone.Source = function (options) {&#xD;	        // this.createInsOuts(0, 1);&#xD;	        options = this.defaultArg(options, Tone.Source.defaults);&#xD;	        /**&#xD;			 *  The output volume node&#xD;			 *  @type  {Tone.Volume}&#xD;			 *  @private&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume(options.volume);&#xD;	        /**&#xD;			 * The volume of the output in decibels.&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 * @example&#xD;			 * source.volume.value = -6;&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	        /**&#xD;			 * 	Keep track of the scheduled state.&#xD;			 *  @type {Tone.TimelineState}&#xD;			 *  @private&#xD;			 */&#xD;	        this._state = new Tone.TimelineState(Tone.State.Stopped);&#xD;	        this._state.memory = 10;&#xD;	        /**&#xD;			 *  The synced `start` callback function from the transport&#xD;			 *  @type {Function}&#xD;			 *  @private&#xD;			 */&#xD;	        this._synced = false;&#xD;	        /**&#xD;			 *  Keep track of all of the scheduled event ids&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scheduled = [];&#xD;	        //make the output explicitly stereo&#xD;	        this._volume.output.output.channelCount = 2;&#xD;	        this._volume.output.output.channelCountMode = &apos;explicit&apos;;&#xD;	        //mute initially&#xD;	        this.mute = options.mute;&#xD;	    };&#xD;	    Tone.extend(Tone.Source);&#xD;	    /**&#xD;		 *  The default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Source.defaults = {&#xD;	        &apos;volume&apos;: 0,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source, either "started" or "stopped".&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.Source#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.Source.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            if (this._synced) {&#xD;	                if (Tone.Transport.state === Tone.State.Started) {&#xD;	                    return this._state.getValueAtTime(Tone.Transport.seconds);&#xD;	                } else {&#xD;	                    return Tone.State.Stopped;&#xD;	                }&#xD;	            } else {&#xD;	                return this._state.getValueAtTime(this.now());&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.Source#&#xD;		 * @type {boolean}&#xD;		 * @name mute&#xD;		 * @example&#xD;		 * //mute the output&#xD;		 * source.mute = true;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Source.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._volume.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._volume.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    //overwrite these functions&#xD;	    Tone.Source.prototype._start = Tone.noOp;&#xD;	    Tone.Source.prototype._stop = Tone.noOp;&#xD;	    /**&#xD;		 *  Start the source at the specified time. If no time is given, &#xD;		 *  start the source now.&#xD;		 *  @param  {Time} [time=now] When the source should be started.&#xD;		 *  @returns {Tone.Source} this&#xD;		 *  @example&#xD;		 * source.start("+0.5"); //starts the source 0.5 seconds from now&#xD;		 */&#xD;	    Tone.Source.prototype.start = function (time, offset, duration) {&#xD;	        if (this.isUndef(time) &amp;&amp; this._synced) {&#xD;	            time = Tone.Transport.seconds;&#xD;	        } else {&#xD;	            time = this.toSeconds(time);&#xD;	        }&#xD;	        //if it&apos;s started, stop it and restart it&#xD;	        if (!this.retrigger &amp;&amp; this._state.getValueAtTime(time) === Tone.State.Started) {&#xD;	            this.stop(time);&#xD;	        }&#xD;	        this._state.setStateAtTime(Tone.State.Started, time);&#xD;	        if (this._synced) {&#xD;	            // add the offset time to the event&#xD;	            var event = this._state.get(time);&#xD;	            event.offset = this.defaultArg(offset, 0);&#xD;	            event.duration = duration;&#xD;	            var sched = Tone.Transport.schedule(function (t) {&#xD;	                this._start(t, offset, duration);&#xD;	            }.bind(this), time);&#xD;	            this._scheduled.push(sched);&#xD;	        } else {&#xD;	            this._start.apply(this, arguments);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the source at the specified time. If no time is given, &#xD;		 *  stop the source now.&#xD;		 *  @param  {Time} [time=now] When the source should be stopped. &#xD;		 *  @returns {Tone.Source} this&#xD;		 *  @example&#xD;		 * source.stop(); // stops the source immediately&#xD;		 */&#xD;	    Tone.Source.prototype.stop = function (time) {&#xD;	        if (this.isUndef(time) &amp;&amp; this._synced) {&#xD;	            time = Tone.Transport.seconds;&#xD;	        } else {&#xD;	            time = this.toSeconds(time);&#xD;	        }&#xD;	        this._state.cancel(time);&#xD;	        this._state.setStateAtTime(Tone.State.Stopped, time);&#xD;	        if (!this._synced) {&#xD;	            this._stop.apply(this, arguments);&#xD;	        } else {&#xD;	            var sched = Tone.Transport.schedule(this._stop.bind(this), time);&#xD;	            this._scheduled.push(sched);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sync the source to the Transport so that all subsequent&#xD;		 *  calls to `start` and `stop` are synced to the TransportTime&#xD;		 *  instead of the AudioContext time. &#xD;		 *&#xD;		 *  @returns {Tone.Source} this&#xD;		 *  @example&#xD;		 * //sync the source so that it plays between 0 and 0.3 on the Transport&apos;s timeline&#xD;		 * source.sync().start(0).stop(0.3);&#xD;		 * //start the transport.&#xD;		 * Tone.Transport.start();&#xD;		 *&#xD;		 *  @example&#xD;		 * //start the transport with an offset and the sync&apos;ed sources&#xD;		 * //will start in the correct position&#xD;		 * source.sync().start(0.1);&#xD;		 * //the source will be invoked with an offset of 0.4&#xD;		 * Tone.Transport.start("+0.5", 0.5);&#xD;		 */&#xD;	    Tone.Source.prototype.sync = function () {&#xD;	        this._synced = true;&#xD;	        Tone.Transport.on(&apos;start loopStart&apos;, function (time, offset) {&#xD;	            if (offset &gt; 0) {&#xD;	                // get the playback state at that time&#xD;	                var stateEvent = this._state.get(offset);&#xD;	                // listen for start events which may occur in the middle of the sync&apos;ed time&#xD;	                if (stateEvent &amp;&amp; stateEvent.state === Tone.State.Started &amp;&amp; stateEvent.time !== offset) {&#xD;	                    // get the offset&#xD;	                    var startOffset = offset - this.toSeconds(stateEvent.time);&#xD;	                    var duration;&#xD;	                    if (stateEvent.duration) {&#xD;	                        duration = this.toSeconds(stateEvent.duration) - startOffset;&#xD;	                    }&#xD;	                    this._start(time, this.toSeconds(stateEvent.offset) + startOffset, duration);&#xD;	                }&#xD;	            }&#xD;	        }.bind(this));&#xD;	        Tone.Transport.on(&apos;stop pause loopEnd&apos;, function (time) {&#xD;	            if (this._state.getValueAtTime(Tone.Transport.seconds) === Tone.State.Started) {&#xD;	                this._stop(time);&#xD;	            }&#xD;	        }.bind(this));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Unsync the source to the Transport. See Tone.Source.sync&#xD;		 *  @returns {Tone.Source} this&#xD;		 */&#xD;	    Tone.Source.prototype.unsync = function () {&#xD;	        this._synced = false;&#xD;	        Tone.Transport.off(&apos;start stop pause loopEnd loopStart&apos;);&#xD;	        // clear all of the scheduled ids&#xD;	        for (var i = 0; i &lt; this._scheduled.length; i++) {&#xD;	            var id = this._scheduled[i];&#xD;	            Tone.Transport.clear(id);&#xD;	        }&#xD;	        this._scheduled = [];&#xD;	        this._state.cancel(0);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *	Clean up.&#xD;		 *  @return {Tone.Source} this&#xD;		 */&#xD;	    Tone.Source.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this.unsync();&#xD;	        this._scheduled = null;&#xD;	        this._writable(&apos;volume&apos;);&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this.volume = null;&#xD;	        this._state.dispose();&#xD;	        this._state = null;&#xD;	    };&#xD;	    return Tone.Source;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Oscillator supports a number of features including&#xD;		 *         phase rotation, multiple oscillator types (see Tone.Oscillator.type), &#xD;		 *         and Transport syncing (see Tone.Oscillator.syncFrequency).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Source}&#xD;		 *  @param {Frequency} [frequency] Starting frequency&#xD;		 *  @param {string} [type] The oscillator type. Read more about type below.&#xD;		 *  @example&#xD;		 * //make and start a 440hz sine tone&#xD;		 * var osc = new Tone.Oscillator(440, "sine").toMaster().start();&#xD;		 */&#xD;	    Tone.Oscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;&#xD;	        ], Tone.Oscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  the main oscillator&#xD;			 *  @type {OscillatorNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._oscillator = null;&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune control signal.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  the periodic wave&#xD;			 *  @type {PeriodicWave}&#xD;			 *  @private&#xD;			 */&#xD;	        this._wave = null;&#xD;	        /**&#xD;			 *  The partials of the oscillator&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._partials = this.defaultArg(options.partials, [1]);&#xD;	        /**&#xD;			 *  the phase of the oscillator&#xD;			 *  between 0 - 360&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._phase = options.phase;&#xD;	        /**&#xD;			 *  the type of the oscillator&#xD;			 *  @type {string}&#xD;			 *  @private&#xD;			 */&#xD;	        this._type = null;&#xD;	        //setup&#xD;	        this.type = options.type;&#xD;	        this.phase = this._phase;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.Oscillator, Tone.Source);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Oscillator.defaults = {&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;partials&apos;: []&#xD;	    };&#xD;	    /**&#xD;		 *  The Oscillator types&#xD;		 *  @enum {String}&#xD;		 */&#xD;	    Tone.Oscillator.Type = {&#xD;	        Sine: &apos;sine&apos;,&#xD;	        Triangle: &apos;triangle&apos;,&#xD;	        Sawtooth: &apos;sawtooth&apos;,&#xD;	        Square: &apos;square&apos;,&#xD;	        Custom: &apos;custom&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} [time=now] &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Oscillator.prototype._start = function (time) {&#xD;	        //new oscillator with previous values&#xD;	        this._oscillator = this.context.createOscillator();&#xD;	        this._oscillator.setPeriodicWave(this._wave);&#xD;	        //connect the control signal to the oscillator frequency &amp; detune&#xD;	        this._oscillator.connect(this.output);&#xD;	        this.frequency.connect(this._oscillator.frequency);&#xD;	        this.detune.connect(this._oscillator.detune);&#xD;	        //start the oscillator&#xD;	        this._oscillator.start(this.toSeconds(time));&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @private&#xD;		 *  @param  {Time} [time=now] (optional) timing parameter&#xD;		 *  @returns {Tone.Oscillator} this&#xD;		 */&#xD;	    Tone.Oscillator.prototype._stop = function (time) {&#xD;	        if (this._oscillator) {&#xD;	            this._oscillator.stop(this.toSeconds(time));&#xD;	            this._oscillator = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sync the signal to the Transport&apos;s bpm. Any changes to the transports bpm,&#xD;		 *  will also affect the oscillators frequency. &#xD;		 *  @returns {Tone.Oscillator} this&#xD;		 *  @example&#xD;		 * Tone.Transport.bpm.value = 120;&#xD;		 * osc.frequency.value = 440;&#xD;		 * //the ration between the bpm and the frequency will be maintained&#xD;		 * osc.syncFrequency();&#xD;		 * Tone.Transport.bpm.value = 240; &#xD;		 * // the frequency of the oscillator is doubled to 880&#xD;		 */&#xD;	    Tone.Oscillator.prototype.syncFrequency = function () {&#xD;	        Tone.Transport.syncSignal(this.frequency);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Unsync the oscillator&apos;s frequency from the Transport. &#xD;		 *  See Tone.Oscillator.syncFrequency&#xD;		 *  @returns {Tone.Oscillator} this&#xD;		 */&#xD;	    Tone.Oscillator.prototype.unsyncFrequency = function () {&#xD;	        Tone.Transport.unsyncSignal(this.frequency);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * The type of the oscillator: either sine, square, triangle, or sawtooth. Also capable of&#xD;		 * setting the first x number of partials of the oscillator. For example: "sine4" would&#xD;		 * set be the first 4 partials of the sine wave and "triangle8" would set the first&#xD;		 * 8 partials of the triangle wave.&#xD;		 * &lt;br&gt;&lt;br&gt; &#xD;		 * Uses PeriodicWave internally even for native types so that it can set the phase. &#xD;		 * PeriodicWave equations are from the &#xD;		 * [Webkit Web Audio implementation](https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/modules/webaudio/PeriodicWave.cpp&amp;sq=package:chromium).&#xD;		 *  &#xD;		 * @memberOf Tone.Oscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 * @example&#xD;		 * //set it to a square wave&#xD;		 * osc.type = "square";&#xD;		 * @example&#xD;		 * //set the first 6 partials of a sawtooth wave&#xD;		 * osc.type = "sawtooth6";&#xD;		 */&#xD;	    Object.defineProperty(Tone.Oscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            var coefs = this._getRealImaginary(type, this._phase);&#xD;	            var periodicWave = this.context.createPeriodicWave(coefs[0], coefs[1]);&#xD;	            this._wave = periodicWave;&#xD;	            if (this._oscillator !== null) {&#xD;	                this._oscillator.setPeriodicWave(this._wave);&#xD;	            }&#xD;	            this._type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Returns the real and imaginary components based &#xD;		 *  on the oscillator type.&#xD;		 *  @returns {Array} [real, imaginary]&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Oscillator.prototype._getRealImaginary = function (type, phase) {&#xD;	        var fftSize = 4096;&#xD;	        var periodicWaveSize = fftSize / 2;&#xD;	        var real = new Float32Array(periodicWaveSize);&#xD;	        var imag = new Float32Array(periodicWaveSize);&#xD;	        var partialCount = 1;&#xD;	        if (type === Tone.Oscillator.Type.Custom) {&#xD;	            partialCount = this._partials.length + 1;&#xD;	            periodicWaveSize = partialCount;&#xD;	        } else {&#xD;	            var partial = /^(sine|triangle|square|sawtooth)(\d+)$/.exec(type);&#xD;	            if (partial) {&#xD;	                partialCount = parseInt(partial[2]) + 1;&#xD;	                type = partial[1];&#xD;	                partialCount = Math.max(partialCount, 2);&#xD;	                periodicWaveSize = partialCount;&#xD;	            }&#xD;	        }&#xD;	        for (var n = 1; n &lt; periodicWaveSize; ++n) {&#xD;	            var piFactor = 2 / (n * Math.PI);&#xD;	            var b;&#xD;	            switch (type) {&#xD;	            case Tone.Oscillator.Type.Sine:&#xD;	                b = n &lt;= partialCount ? 1 : 0;&#xD;	                break;&#xD;	            case Tone.Oscillator.Type.Square:&#xD;	                b = n &amp; 1 ? 2 * piFactor : 0;&#xD;	                break;&#xD;	            case Tone.Oscillator.Type.Sawtooth:&#xD;	                b = piFactor * (n &amp; 1 ? 1 : -1);&#xD;	                break;&#xD;	            case Tone.Oscillator.Type.Triangle:&#xD;	                if (n &amp; 1) {&#xD;	                    b = 2 * (piFactor * piFactor) * (n - 1 &gt;&gt; 1 &amp; 1 ? -1 : 1);&#xD;	                } else {&#xD;	                    b = 0;&#xD;	                }&#xD;	                break;&#xD;	            case Tone.Oscillator.Type.Custom:&#xD;	                b = this._partials[n - 1];&#xD;	                break;&#xD;	            default:&#xD;	                throw new TypeError(&apos;Tone.Oscillator: invalid type: &apos; + type);&#xD;	            }&#xD;	            if (b !== 0) {&#xD;	                real[n] = -b * Math.sin(phase * n);&#xD;	                imag[n] = b * Math.cos(phase * n);&#xD;	            } else {&#xD;	                real[n] = 0;&#xD;	                imag[n] = 0;&#xD;	            }&#xD;	        }&#xD;	        return [&#xD;	            real,&#xD;	            imag&#xD;	        ];&#xD;	    };&#xD;	    /**&#xD;		 *  Compute the inverse FFT for a given phase.	&#xD;		 *  @param  {Float32Array}  real&#xD;		 *  @param  {Float32Array}  imag &#xD;		 *  @param  {NormalRange}  phase &#xD;		 *  @return  {AudioRange}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Oscillator.prototype._inverseFFT = function (real, imag, phase) {&#xD;	        var sum = 0;&#xD;	        var len = real.length;&#xD;	        for (var i = 0; i &lt; len; i++) {&#xD;	            sum += real[i] * Math.cos(i * phase) + imag[i] * Math.sin(i * phase);&#xD;	        }&#xD;	        return sum;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the initial value of the oscillator.&#xD;		 *  @return  {AudioRange}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Oscillator.prototype._getInitialValue = function () {&#xD;	        var coefs = this._getRealImaginary(this._type, 0);&#xD;	        var real = coefs[0];&#xD;	        var imag = coefs[1];&#xD;	        var maxValue = 0;&#xD;	        var twoPi = Math.PI * 2;&#xD;	        //check for peaks in 8 places&#xD;	        for (var i = 0; i &lt; 8; i++) {&#xD;	            maxValue = Math.max(this._inverseFFT(real, imag, i / 8 * twoPi), maxValue);&#xD;	        }&#xD;	        return -this._inverseFFT(real, imag, this._phase) / maxValue;&#xD;	    };&#xD;	    /**&#xD;		 * The partials of the waveform. A partial represents &#xD;		 * the amplitude at a harmonic. The first harmonic is the &#xD;		 * fundamental frequency, the second is the octave and so on&#xD;		 * following the harmonic series. &#xD;		 * Setting this value will automatically set the type to "custom". &#xD;		 * The value is an empty array when the type is not "custom". &#xD;		 * @memberOf Tone.Oscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @example&#xD;		 * osc.partials = [1, 0.2, 0.01];&#xD;		 */&#xD;	    Object.defineProperty(Tone.Oscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            if (this._type !== Tone.Oscillator.Type.Custom) {&#xD;	                return [];&#xD;	            } else {&#xD;	                return this._partials;&#xD;	            }&#xD;	        },&#xD;	        set: function (partials) {&#xD;	            this._partials = partials;&#xD;	            this.type = Tone.Oscillator.Type.Custom;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees. &#xD;		 * @memberOf Tone.Oscillator#&#xD;		 * @type {Degrees}&#xD;		 * @name phase&#xD;		 * @example&#xD;		 * osc.phase = 180; //flips the phase of the oscillator&#xD;		 */&#xD;	    Object.defineProperty(Tone.Oscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._phase * (180 / Math.PI);&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._phase = phase * Math.PI / 180;&#xD;	            //reset the type&#xD;	            this.type = this._type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Dispose and disconnect.&#xD;		 *  @return {Tone.Oscillator} this&#xD;		 */&#xD;	    Tone.Oscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        if (this._oscillator !== null) {&#xD;	            this._oscillator.disconnect();&#xD;	            this._oscillator = null;&#xD;	        }&#xD;	        this._wave = null;&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this._partials = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Oscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.Zero outputs 0&apos;s at audio-rate. The reason this has to be&#xD;		 *         it&apos;s own class is that many browsers optimize out Tone.Signal&#xD;		 *         with a value of 0 and will not process nodes further down the graph. &#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.Zero = function () {&#xD;	        /**&#xD;			 *  The gain node&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._gain = this.input = this.output = new Tone.Gain();&#xD;	        Tone.Zero._zeros.connect(this._gain);&#xD;	    };&#xD;	    Tone.extend(Tone.Zero);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @return  {Tone.Zero}  this&#xD;		 */&#xD;	    Tone.Zero.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._gain.dispose();&#xD;	        this._gain = null;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Generates a constant output of 0. This is so &#xD;		 *  the processing graph doesn&apos;t optimize out this&#xD;		 *  segment of the graph. &#xD;		 *  @static&#xD;		 *  @private&#xD;		 *  @const&#xD;		 *  @type {AudioBufferSourceNode}&#xD;		 */&#xD;	    Tone.Zero._zeros = null;&#xD;	    /**&#xD;		 *  initializer function&#xD;		 */&#xD;	    Tone._initAudioContext(function (audioContext) {&#xD;	        var buffer = audioContext.createBuffer(1, 128, audioContext.sampleRate);&#xD;	        var arr = buffer.getChannelData(0);&#xD;	        for (var i = 0; i &lt; arr.length; i++) {&#xD;	            arr[i] = 0;&#xD;	        }&#xD;	        Tone.Zero._zeros = audioContext.createBufferSource();&#xD;	        Tone.Zero._zeros.channelCount = 1;&#xD;	        Tone.Zero._zeros.channelCountMode = &apos;explicit&apos;;&#xD;	        Tone.Zero._zeros.buffer = buffer;&#xD;	        Tone.Zero._zeros.loop = true;&#xD;	        Tone.Zero._zeros.start(0);&#xD;	        Tone.Zero._zeros.noGC();&#xD;	    });&#xD;	    return Tone.Zero;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  LFO stands for low frequency oscillator. Tone.LFO produces an output signal &#xD;		 *          which can be attached to an AudioParam or Tone.Signal &#xD;		 *          in order to modulate that parameter with an oscillator. The LFO can &#xD;		 *          also be synced to the transport to start/stop and change when the tempo changes.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @param {Frequency|Object} [frequency] The frequency of the oscillation. Typically, LFOs will be&#xD;		 *                               in the frequency range of 0.1 to 10 hertz. &#xD;		 *  @param {number=} min The minimum output value of the LFO. &#xD;		 *  @param {number=} max The maximum value of the LFO. &#xD;		 *  @example&#xD;		 * var lfo = new Tone.LFO("4n", 400, 4000);&#xD;		 * lfo.connect(filter.frequency);&#xD;		 */&#xD;	    Tone.LFO = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;min&apos;,&#xD;	            &apos;max&apos;&#xD;	        ], Tone.LFO.defaults);&#xD;	        /** &#xD;			 *  The oscillator. &#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._oscillator = new Tone.Oscillator({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;type&apos;: options.type&#xD;	        });&#xD;	        /**&#xD;			 *  the lfo&apos;s frequency&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this._oscillator.frequency;&#xD;	        /**&#xD;			 * The amplitude of the LFO, which controls the output range between&#xD;			 * the min and max output. For example if the min is -10 and the max &#xD;			 * is 10, setting the amplitude to 0.5 would make the LFO modulate&#xD;			 * between -5 and 5. &#xD;			 * @type {Number}&#xD;			 * @signal&#xD;			 */&#xD;	        this.amplitude = this._oscillator.volume;&#xD;	        this.amplitude.units = Tone.Type.NormalRange;&#xD;	        this.amplitude.value = options.amplitude;&#xD;	        /**&#xD;			 *  The signal which is output when the LFO is stopped&#xD;			 *  @type  {Tone.Signal}&#xD;			 *  @private&#xD;			 */&#xD;	        this._stoppedSignal = new Tone.Signal(0, Tone.Type.AudioRange);&#xD;	        /**&#xD;			 *  Just outputs zeros.&#xD;			 *  @type {Tone.Zero}&#xD;			 *  @private&#xD;			 */&#xD;	        this._zeros = new Tone.Zero();&#xD;	        /**&#xD;			 *  The value that the LFO outputs when it&apos;s stopped&#xD;			 *  @type {AudioRange}&#xD;			 *  @private&#xD;			 */&#xD;	        this._stoppedValue = 0;&#xD;	        /**&#xD;			 *  @type {Tone.AudioToGain} &#xD;			 *  @private&#xD;			 */&#xD;	        this._a2g = new Tone.AudioToGain();&#xD;	        /**&#xD;			 *  @type {Tone.Scale} &#xD;			 *  @private&#xD;			 */&#xD;	        this._scaler = this.output = new Tone.Scale(options.min, options.max);&#xD;	        /**&#xD;			 *  the units of the LFO (used for converting)&#xD;			 *  @type {Tone.Type} &#xD;			 *  @private&#xD;			 */&#xD;	        this._units = Tone.Type.Default;&#xD;	        this.units = options.units;&#xD;	        //connect it up&#xD;	        this._oscillator.chain(this._a2g, this._scaler);&#xD;	        this._zeros.connect(this._a2g);&#xD;	        this._stoppedSignal.connect(this._a2g);&#xD;	        this._readOnly([&#xD;	            &apos;amplitude&apos;,&#xD;	            &apos;frequency&apos;&#xD;	        ]);&#xD;	        this.phase = options.phase;&#xD;	    };&#xD;	    Tone.extend(Tone.LFO, Tone.Oscillator);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.LFO.defaults = {&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;min&apos;: 0,&#xD;	        &apos;max&apos;: 1,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;frequency&apos;: &apos;4n&apos;,&#xD;	        &apos;amplitude&apos;: 1,&#xD;	        &apos;units&apos;: Tone.Type.Default&#xD;	    };&#xD;	    /**&#xD;		 *  Start the LFO. &#xD;		 *  @param  {Time} [time=now] the time the LFO will start&#xD;		 *  @returns {Tone.LFO} this&#xD;		 */&#xD;	    Tone.LFO.prototype.start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._stoppedSignal.setValueAtTime(0, time);&#xD;	        this._oscillator.start(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the LFO. &#xD;		 *  @param  {Time} [time=now] the time the LFO will stop&#xD;		 *  @returns {Tone.LFO} this&#xD;		 */&#xD;	    Tone.LFO.prototype.stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._stoppedSignal.setValueAtTime(this._stoppedValue, time);&#xD;	        this._oscillator.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sync the start/stop/pause to the transport &#xD;		 *  and the frequency to the bpm of the transport&#xD;		 *  @returns {Tone.LFO} this&#xD;		 *  @example&#xD;		 *  lfo.frequency.value = "8n";&#xD;		 *  lfo.sync().start(0)&#xD;		 *  //the rate of the LFO will always be an eighth note, &#xD;		 *  //even as the tempo changes&#xD;		 */&#xD;	    Tone.LFO.prototype.sync = function () {&#xD;	        this._oscillator.sync();&#xD;	        this._oscillator.syncFrequency();&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  unsync the LFO from transport control&#xD;		 *  @returns {Tone.LFO} this&#xD;		 */&#xD;	    Tone.LFO.prototype.unsync = function () {&#xD;	        this._oscillator.unsync();&#xD;	        this._oscillator.unsyncFrequency();&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * The miniumum output of the LFO.&#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {number}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;min&apos;, {&#xD;	        get: function () {&#xD;	            return this._toUnits(this._scaler.min);&#xD;	        },&#xD;	        set: function (min) {&#xD;	            min = this._fromUnits(min);&#xD;	            this._scaler.min = min;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The maximum output of the LFO.&#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {number}&#xD;		 * @name max&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;max&apos;, {&#xD;	        get: function () {&#xD;	            return this._toUnits(this._scaler.max);&#xD;	        },&#xD;	        set: function (max) {&#xD;	            max = this._fromUnits(max);&#xD;	            this._scaler.max = max;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The type of the oscillator: sine, square, sawtooth, triangle. &#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._oscillator.type = type;&#xD;	            this._stoppedValue = this._oscillator._getInitialValue();&#xD;	            this._stoppedSignal.value = this._stoppedValue;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the LFO.&#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {number}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._oscillator.phase = phase;&#xD;	            this._stoppedValue = this._oscillator._getInitialValue();&#xD;	            this._stoppedSignal.value = this._stoppedValue;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The output units of the LFO.&#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {Tone.Type}&#xD;		 * @name units&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;units&apos;, {&#xD;	        get: function () {&#xD;	            return this._units;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            var currentMin = this.min;&#xD;	            var currentMax = this.max;&#xD;	            //convert the min and the max&#xD;	            this._units = val;&#xD;	            this.min = currentMin;&#xD;	            this.max = currentMax;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.LFO#&#xD;		 * @type {Boolean}&#xD;		 * @name mute&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._oscillator.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Returns the playback state of the source, either "started" or "stopped".&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.LFO#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.LFO.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.state;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Connect the output of the LFO to an AudioParam, AudioNode, or Tone Node. &#xD;		 *  Tone.LFO will automatically convert to the destination units of the &#xD;		 *  will get the units from the connected node.&#xD;		 *  @param  {Tone | AudioParam | AudioNode} node &#xD;		 *  @param {number} [outputNum=0] optionally which output to connect from&#xD;		 *  @param {number} [inputNum=0] optionally which input to connect to&#xD;		 *  @returns {Tone.LFO} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.LFO.prototype.connect = function (node) {&#xD;	        if (node.constructor === Tone.Signal || node.constructor === Tone.Param || node.constructor === Tone.TimelineSignal) {&#xD;	            this.convert = node.convert;&#xD;	            this.units = node.units;&#xD;	        }&#xD;	        Tone.Signal.prototype.connect.apply(this, arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  private method borrowed from Param converts &#xD;		 *  units from their destination value&#xD;		 *  @function&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.LFO.prototype._fromUnits = Tone.Param.prototype._fromUnits;&#xD;	    /**&#xD;		 *  private method borrowed from Param converts &#xD;		 *  units to their destination value&#xD;		 *  @function&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.LFO.prototype._toUnits = Tone.Param.prototype._toUnits;&#xD;	    /**&#xD;		 *  disconnect and dispose&#xD;		 *  @returns {Tone.LFO} this&#xD;		 */&#xD;	    Tone.LFO.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;amplitude&apos;,&#xD;	            &apos;frequency&apos;&#xD;	        ]);&#xD;	        this._oscillator.dispose();&#xD;	        this._oscillator = null;&#xD;	        this._stoppedSignal.dispose();&#xD;	        this._stoppedSignal = null;&#xD;	        this._zeros.dispose();&#xD;	        this._zeros = null;&#xD;	        this._scaler.dispose();&#xD;	        this._scaler = null;&#xD;	        this._a2g.dispose();&#xD;	        this._a2g = null;&#xD;	        this.frequency = null;&#xD;	        this.amplitude = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.LFO;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Limiter will limit the loudness of an incoming signal. &#xD;		 *         It is composed of a Tone.Compressor with a fast attack &#xD;		 *         and release. Limiters are commonly used to safeguard against &#xD;		 *         signal clipping. Unlike a compressor, limiters do not provide &#xD;		 *         smooth gain reduction and almost completely prevent &#xD;		 *         additional gain above the threshold.&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {number} threshold The theshold above which the limiting is applied. &#xD;		 *  @example&#xD;		 *  var limiter = new Tone.Limiter(-6);&#xD;		 */&#xD;	    Tone.Limiter = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;threshold&apos;], Tone.Limiter.defaults);&#xD;	        /**&#xD;			 *  the compressor&#xD;			 *  @private&#xD;			 *  @type {Tone.Compressor}&#xD;			 */&#xD;	        this._compressor = this.input = this.output = new Tone.Compressor({&#xD;	            &apos;attack&apos;: 0.001,&#xD;	            &apos;decay&apos;: 0.001,&#xD;	            &apos;threshold&apos;: options.threshold&#xD;	        });&#xD;	        /**&#xD;			 * The threshold of of the limiter&#xD;			 * @type {Decibel}&#xD;			 * @signal&#xD;			 */&#xD;	        this.threshold = this._compressor.threshold;&#xD;	        this._readOnly(&apos;threshold&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.Limiter);&#xD;	    /**&#xD;		 *  The default value&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Limiter.defaults = { &apos;threshold&apos;: -12 };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Limiter} this&#xD;		 */&#xD;	    Tone.Limiter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._compressor.dispose();&#xD;	        this._compressor = null;&#xD;	        this._writable(&apos;threshold&apos;);&#xD;	        this.threshold = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Limiter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Lowpass is a lowpass feedback comb filter. It is similar to &#xD;		 *         Tone.FeedbackCombFilter, but includes a lowpass filter.&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Time|Object} [delayTime] The delay time of the comb filter&#xD;		 *  @param {NormalRange=} resonance The resonance (feedback) of the comb filter&#xD;		 *  @param {Frequency=} dampening The cutoff of the lowpass filter dampens the&#xD;		 *                                signal as it is fedback. &#xD;		 */&#xD;	    Tone.LowpassCombFilter = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ], Tone.LowpassCombFilter.defaults);&#xD;	        /**&#xD;			 *  the delay node&#xD;			 *  @type {DelayNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delay = this.input = new Tone.Delay(options.delayTime);&#xD;	        /**&#xD;			 *  The delayTime of the comb filter. &#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = this._delay.delayTime;&#xD;	        /**&#xD;			 *  the lowpass filter&#xD;			 *  @type  {BiquadFilterNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lowpass = this.output = this.context.createBiquadFilter();&#xD;	        this._lowpass.Q.value = -3.0102999566398125;&#xD;	        this._lowpass.type = &apos;lowpass&apos;;&#xD;	        /**&#xD;			 *  The dampening control of the feedback&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.dampening = new Tone.Param({&#xD;	            &apos;param&apos;: this._lowpass.frequency,&#xD;	            &apos;units&apos;: Tone.Type.Frequency,&#xD;	            &apos;value&apos;: options.dampening&#xD;	        });&#xD;	        /**&#xD;			 *  the feedback gain&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedback = new Tone.Gain(options.resonance, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  The amount of feedback of the delayed signal. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.resonance = this._feedback.gain;&#xD;	        //connections&#xD;	        this._delay.chain(this._lowpass, this._feedback, this._delay);&#xD;	        this._readOnly([&#xD;	            &apos;dampening&apos;,&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;delayTime&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.LowpassCombFilter);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.LowpassCombFilter.defaults = {&#xD;	        &apos;delayTime&apos;: 0.1,&#xD;	        &apos;resonance&apos;: 0.5,&#xD;	        &apos;dampening&apos;: 3000&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.LowpassCombFilter} this&#xD;		 */&#xD;	    Tone.LowpassCombFilter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;dampening&apos;,&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;delayTime&apos;&#xD;	        ]);&#xD;	        this.dampening.dispose();&#xD;	        this.dampening = null;&#xD;	        this.resonance.dispose();&#xD;	        this.resonance = null;&#xD;	        this._delay.dispose();&#xD;	        this._delay = null;&#xD;	        this.delayTime = null;&#xD;	        this._lowpass.disconnect();&#xD;	        this._lowpass = null;&#xD;	        this._feedback.disconnect();&#xD;	        this._feedback = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.LowpassCombFilter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Merge brings two signals into the left and right &#xD;		 *          channels of a single stereo channel.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * var merge = new Tone.Merge().toMaster();&#xD;		 * //routing a sine tone in the left channel&#xD;		 * //and noise in the right channel&#xD;		 * var osc = new Tone.Oscillator().connect(merge.left);&#xD;		 * var noise = new Tone.Noise().connect(merge.right);&#xD;		 * //starting our oscillators&#xD;		 * noise.start();&#xD;		 * osc.start();&#xD;		 */&#xD;	    Tone.Merge = function () {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  The left input channel.&#xD;			 *  Alias for &lt;code&gt;input[0]&lt;/code&gt;&#xD;			 *  @type {GainNode}&#xD;			 */&#xD;	        this.left = this.input[0] = new Tone.Gain();&#xD;	        /**&#xD;			 *  The right input channel.&#xD;			 *  Alias for &lt;code&gt;input[1]&lt;/code&gt;.&#xD;			 *  @type {GainNode}&#xD;			 */&#xD;	        this.right = this.input[1] = new Tone.Gain();&#xD;	        /**&#xD;			 *  the merger node for the two channels&#xD;			 *  @type {ChannelMergerNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._merger = this.output = this.context.createChannelMerger(2);&#xD;	        //connections&#xD;	        this.left.connect(this._merger, 0, 0);&#xD;	        this.right.connect(this._merger, 0, 1);&#xD;	        this.left.channelCount = 1;&#xD;	        this.right.channelCount = 1;&#xD;	        this.left.channelCountMode = &apos;explicit&apos;;&#xD;	        this.right.channelCountMode = &apos;explicit&apos;;&#xD;	    };&#xD;	    Tone.extend(Tone.Merge);&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Merge} this&#xD;		 */&#xD;	    Tone.Merge.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this.left.dispose();&#xD;	        this.left = null;&#xD;	        this.right.dispose();&#xD;	        this.right = null;&#xD;	        this._merger.disconnect();&#xD;	        this._merger = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Merge;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Meter gets the [RMS](https://en.wikipedia.org/wiki/Root_mean_square)&#xD;		 *          of an input signal with some averaging applied. It can also get the raw &#xD;		 *          value of the input signal.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {String} type Either "level" or "signal". &#xD;		 *  @param {Number} smoothing The amount of smoothing applied between frames.&#xD;		 *  @example&#xD;		 * var meter = new Tone.Meter();&#xD;		 * var mic = new Tone.UserMedia().start();&#xD;		 * //connect mic to the meter&#xD;		 * mic.connect(meter);&#xD;		 * //the current level of the mic input&#xD;		 * var level = meter.value;&#xD;		 */&#xD;	    Tone.Meter = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;type&apos;,&#xD;	            &apos;smoothing&apos;&#xD;	        ], Tone.Meter.defaults);&#xD;	        /**&#xD;			 *  The type of the meter, either "level" or "signal". &#xD;			 *  A "level" meter will return the volume level (rms) of the &#xD;			 *  input signal and a "signal" meter will return&#xD;			 *  the signal value of the input. &#xD;			 *  @type  {String}&#xD;			 */&#xD;	        this.type = options.type;&#xD;	        /**&#xD;			 *  The analyser node which computes the levels.&#xD;			 *  @private&#xD;			 *  @type  {Tone.Analyser}&#xD;			 */&#xD;	        this.input = this.output = this._analyser = new Tone.Analyser(&apos;waveform&apos;, 512);&#xD;	        this._analyser.returnType = &apos;float&apos;;&#xD;	        /**&#xD;			 *  The amount of carryover between the current and last frame. &#xD;			 *  Only applied meter for "level" type.&#xD;			 *  @type  {Number}&#xD;			 */&#xD;	        this.smoothing = options.smoothing;&#xD;	        /**&#xD;			 *  The last computed value&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lastValue = 0;&#xD;	    };&#xD;	    Tone.extend(Tone.Meter);&#xD;	    /**&#xD;		 *  @private&#xD;		 *  @enum {String}&#xD;		 */&#xD;	    Tone.Meter.Type = {&#xD;	        Level: &apos;level&apos;,&#xD;	        Signal: &apos;signal&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @type {Object}&#xD;		 *  @static&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Meter.defaults = {&#xD;	        &apos;smoothing&apos;: 0.8,&#xD;	        &apos;type&apos;: Tone.Meter.Type.Level&#xD;	    };&#xD;	    /**&#xD;		 * The current value of the meter. A value of 1 is&#xD;		 * "unity".&#xD;		 * @memberOf Tone.Meter#&#xD;		 * @type {Number}&#xD;		 * @name value&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Meter.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            var signal = this._analyser.analyse();&#xD;	            if (this.type === Tone.Meter.Type.Level) {&#xD;	                //rms&#xD;	                var sum = 0;&#xD;	                for (var i = 0; i &lt; signal.length; i++) {&#xD;	                    sum += Math.pow(signal[i], 2);&#xD;	                }&#xD;	                var rms = Math.sqrt(sum / signal.length);&#xD;	                //smooth it&#xD;	                rms = Math.max(rms, this._lastValue * this.smoothing);&#xD;	                this._lastValue = rms;&#xD;	                //scale it&#xD;	                var unity = 0.35;&#xD;	                var val = rms / unity;&#xD;	                //scale the output curve&#xD;	                return Math.sqrt(val);&#xD;	            } else {&#xD;	                return signal[0];&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Meter} this&#xD;		 */&#xD;	    Tone.Meter.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._analyser.dispose();&#xD;	        this._analyser = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Meter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *	@class  Tone.Split splits an incoming signal into left and right channels.&#xD;		 *	&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * var split = new Tone.Split();&#xD;		 * stereoSignal.connect(split);&#xD;		 */&#xD;	    Tone.Split = function () {&#xD;	        this.createInsOuts(0, 2);&#xD;	        /** &#xD;			 *  @type {ChannelSplitterNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._splitter = this.input = this.context.createChannelSplitter(2);&#xD;	        /** &#xD;			 *  Left channel output. &#xD;			 *  Alias for &lt;code&gt;output[0]&lt;/code&gt;&#xD;			 *  @type {Tone.Gain}&#xD;			 */&#xD;	        this.left = this.output[0] = new Tone.Gain();&#xD;	        /**&#xD;			 *  Right channel output.&#xD;			 *  Alias for &lt;code&gt;output[1]&lt;/code&gt;&#xD;			 *  @type {Tone.Gain}&#xD;			 */&#xD;	        this.right = this.output[1] = new Tone.Gain();&#xD;	        //connections&#xD;	        this._splitter.connect(this.left, 0, 0);&#xD;	        this._splitter.connect(this.right, 1, 0);&#xD;	    };&#xD;	    Tone.extend(Tone.Split);&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Split} this&#xD;		 */&#xD;	    Tone.Split.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._splitter.disconnect();&#xD;	        this.left.dispose();&#xD;	        this.left = null;&#xD;	        this.right.dispose();&#xD;	        this.right = null;&#xD;	        this._splitter = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Split;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Mid/Side processing separates the the &apos;mid&apos; signal &#xD;		 *         (which comes out of both the left and the right channel) &#xD;		 *         and the &apos;side&apos; (which only comes out of the the side channels). &lt;br&gt;&lt;br&gt;&#xD;		 *         &lt;code&gt;&#xD;		 *         Mid = (Left+Right)/sqrt(2);   // obtain mid-signal from left and right&lt;br&gt;&#xD;		 *         Side = (Left-Right)/sqrt(2);   // obtain side-signal from left and righ&lt;br&gt;&#xD;		 *         &lt;/code&gt;&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 */&#xD;	    Tone.MidSideSplit = function () {&#xD;	        this.createInsOuts(0, 2);&#xD;	        /**&#xD;			 *  split the incoming signal into left and right channels&#xD;			 *  @type  {Tone.Split}&#xD;			 *  @private&#xD;			 */&#xD;	        this._split = this.input = new Tone.Split();&#xD;	        /**&#xD;			 *  The mid send. Connect to mid processing. Alias for&#xD;			 *  &lt;code&gt;output[0]&lt;/code&gt;&#xD;			 *  @type {Tone.Expr}&#xD;			 */&#xD;	        this.mid = this.output[0] = new Tone.Expr(&apos;($0 + $1) * $2&apos;);&#xD;	        /**&#xD;			 *  The side output. Connect to side processing. Alias for&#xD;			 *  &lt;code&gt;output[1]&lt;/code&gt;&#xD;			 *  @type {Tone.Expr}&#xD;			 */&#xD;	        this.side = this.output[1] = new Tone.Expr(&apos;($0 - $1) * $2&apos;);&#xD;	        this._split.connect(this.mid, 0, 0);&#xD;	        this._split.connect(this.mid, 1, 1);&#xD;	        this._split.connect(this.side, 0, 0);&#xD;	        this._split.connect(this.side, 1, 1);&#xD;	        sqrtTwo.connect(this.mid, 0, 2);&#xD;	        sqrtTwo.connect(this.side, 0, 2);&#xD;	    };&#xD;	    Tone.extend(Tone.MidSideSplit);&#xD;	    /**&#xD;		 *  a constant signal equal to 1 / sqrt(2)&#xD;		 *  @type {Number}&#xD;		 *  @signal&#xD;		 *  @private&#xD;		 *  @static&#xD;		 */&#xD;	    var sqrtTwo = null;&#xD;	    Tone._initAudioContext(function () {&#xD;	        sqrtTwo = new Tone.Signal(1 / Math.sqrt(2));&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.MidSideSplit} this&#xD;		 */&#xD;	    Tone.MidSideSplit.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this.mid.dispose();&#xD;	        this.mid = null;&#xD;	        this.side.dispose();&#xD;	        this.side = null;&#xD;	        this._split.dispose();&#xD;	        this._split = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MidSideSplit;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Mid/Side processing separates the the &apos;mid&apos; signal &#xD;		 *         (which comes out of both the left and the right channel) &#xD;		 *         and the &apos;side&apos; (which only comes out of the the side channels). &#xD;		 *         MidSideMerge merges the mid and side signal after they&apos;ve been seperated&#xD;		 *         by Tone.MidSideSplit.&lt;br&gt;&lt;br&gt;&#xD;		 *         &lt;code&gt;&#xD;		 *         Left = (Mid+Side)/sqrt(2);   // obtain left signal from mid and side&lt;br&gt;&#xD;		 *         Right = (Mid-Side)/sqrt(2);   // obtain right signal from mid and side&lt;br&gt;&#xD;		 *         &lt;/code&gt;&#xD;		 *&#xD;		 *  @extends {Tone.StereoEffect}&#xD;		 *  @constructor&#xD;		 */&#xD;	    Tone.MidSideMerge = function () {&#xD;	        this.createInsOuts(2, 0);&#xD;	        /**&#xD;			 *  The mid signal input. Alias for&#xD;			 *  &lt;code&gt;input[0]&lt;/code&gt;&#xD;			 *  @type  {Tone.Gain}&#xD;			 */&#xD;	        this.mid = this.input[0] = new Tone.Gain();&#xD;	        /**&#xD;			 *  recombine the mid/side into Left&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this._left = new Tone.Expr(&apos;($0 + $1) * $2&apos;);&#xD;	        /**&#xD;			 *  The side signal input. Alias for&#xD;			 *  &lt;code&gt;input[1]&lt;/code&gt;&#xD;			 *  @type  {Tone.Gain}&#xD;			 */&#xD;	        this.side = this.input[1] = new Tone.Gain();&#xD;	        /**&#xD;			 *  recombine the mid/side into Right&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this._right = new Tone.Expr(&apos;($0 - $1) * $2&apos;);&#xD;	        /**&#xD;			 *  Merge the left/right signal back into a stereo signal.&#xD;			 *  @type {Tone.Merge}&#xD;			 *  @private&#xD;			 */&#xD;	        this._merge = this.output = new Tone.Merge();&#xD;	        this.mid.connect(this._left, 0, 0);&#xD;	        this.side.connect(this._left, 0, 1);&#xD;	        this.mid.connect(this._right, 0, 0);&#xD;	        this.side.connect(this._right, 0, 1);&#xD;	        this._left.connect(this._merge, 0, 0);&#xD;	        this._right.connect(this._merge, 0, 1);&#xD;	        sqrtTwo.connect(this._left, 0, 2);&#xD;	        sqrtTwo.connect(this._right, 0, 2);&#xD;	    };&#xD;	    Tone.extend(Tone.MidSideMerge);&#xD;	    /**&#xD;		 *  A constant signal equal to 1 / sqrt(2).&#xD;		 *  @type {Number}&#xD;		 *  @signal&#xD;		 *  @private&#xD;		 *  @static&#xD;		 */&#xD;	    var sqrtTwo = null;&#xD;	    Tone._initAudioContext(function () {&#xD;	        sqrtTwo = new Tone.Signal(1 / Math.sqrt(2));&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.MidSideMerge} this&#xD;		 */&#xD;	    Tone.MidSideMerge.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this.mid.dispose();&#xD;	        this.mid = null;&#xD;	        this.side.dispose();&#xD;	        this.side = null;&#xD;	        this._left.dispose();&#xD;	        this._left = null;&#xD;	        this._right.dispose();&#xD;	        this._right = null;&#xD;	        this._merge.dispose();&#xD;	        this._merge = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MidSideMerge;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.MidSideCompressor applies two different compressors to the mid&#xD;		 *         and side signal components. See Tone.MidSideSplit. &#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Object} options The options that are passed to the mid and side&#xD;		 *                          compressors. &#xD;		 *  @constructor&#xD;		 */&#xD;	    Tone.MidSideCompressor = function (options) {&#xD;	        options = this.defaultArg(options, Tone.MidSideCompressor.defaults);&#xD;	        /**&#xD;			 *  the mid/side split&#xD;			 *  @type  {Tone.MidSideSplit}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midSideSplit = this.input = new Tone.MidSideSplit();&#xD;	        /**&#xD;			 *  the mid/side recombination&#xD;			 *  @type  {Tone.MidSideMerge}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midSideMerge = this.output = new Tone.MidSideMerge();&#xD;	        /**&#xD;			 *  The compressor applied to the mid signal&#xD;			 *  @type  {Tone.Compressor}&#xD;			 */&#xD;	        this.mid = new Tone.Compressor(options.mid);&#xD;	        /**&#xD;			 *  The compressor applied to the side signal&#xD;			 *  @type  {Tone.Compressor}&#xD;			 */&#xD;	        this.side = new Tone.Compressor(options.side);&#xD;	        this._midSideSplit.mid.chain(this.mid, this._midSideMerge.mid);&#xD;	        this._midSideSplit.side.chain(this.side, this._midSideMerge.side);&#xD;	        this._readOnly([&#xD;	            &apos;mid&apos;,&#xD;	            &apos;side&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.MidSideCompressor);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MidSideCompressor.defaults = {&#xD;	        &apos;mid&apos;: {&#xD;	            &apos;ratio&apos;: 3,&#xD;	            &apos;threshold&apos;: -24,&#xD;	            &apos;release&apos;: 0.03,&#xD;	            &apos;attack&apos;: 0.02,&#xD;	            &apos;knee&apos;: 16&#xD;	        },&#xD;	        &apos;side&apos;: {&#xD;	            &apos;ratio&apos;: 6,&#xD;	            &apos;threshold&apos;: -30,&#xD;	            &apos;release&apos;: 0.25,&#xD;	            &apos;attack&apos;: 0.03,&#xD;	            &apos;knee&apos;: 10&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.MidSideCompressor} this&#xD;		 */&#xD;	    Tone.MidSideCompressor.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;mid&apos;,&#xD;	            &apos;side&apos;&#xD;	        ]);&#xD;	        this.mid.dispose();&#xD;	        this.mid = null;&#xD;	        this.side.dispose();&#xD;	        this.side = null;&#xD;	        this._midSideSplit.dispose();&#xD;	        this._midSideSplit = null;&#xD;	        this._midSideMerge.dispose();&#xD;	        this._midSideMerge = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MidSideCompressor;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Mono coerces the incoming mono or stereo signal into a mono signal&#xD;		 *         where both left and right channels have the same value. This can be useful &#xD;		 *         for [stereo imaging](https://en.wikipedia.org/wiki/Stereo_imaging).&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 */&#xD;	    Tone.Mono = function () {&#xD;	        this.createInsOuts(1, 0);&#xD;	        /**&#xD;			 *  merge the signal&#xD;			 *  @type {Tone.Merge}&#xD;			 *  @private&#xD;			 */&#xD;	        this._merge = this.output = new Tone.Merge();&#xD;	        this.input.connect(this._merge, 0, 0);&#xD;	        this.input.connect(this._merge, 0, 1);&#xD;	        this.input.gain.value = this.dbToGain(-10);&#xD;	    };&#xD;	    Tone.extend(Tone.Mono);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Mono} this&#xD;		 */&#xD;	    Tone.Mono.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._merge.dispose();&#xD;	        this._merge = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Mono;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A compressor with seperate controls over low/mid/high dynamics&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {Object} options The low/mid/high compressor settings.&#xD;		 *  @example&#xD;		 *  var multiband = new Tone.MultibandCompressor({&#xD;		 *  	"lowFrequency" : 200,&#xD;		 *  	"highFrequency" : 1300&#xD;		 *  	"low" : {&#xD;		 *  		"threshold" : -12&#xD;		 *  	}&#xD;		 *  })&#xD;		 */&#xD;	    Tone.MultibandCompressor = function (options) {&#xD;	        options = this.defaultArg(arguments, Tone.MultibandCompressor.defaults);&#xD;	        /**&#xD;			 *  split the incoming signal into high/mid/low&#xD;			 *  @type {Tone.MultibandSplit}&#xD;			 *  @private&#xD;			 */&#xD;	        this._splitter = this.input = new Tone.MultibandSplit({&#xD;	            &apos;lowFrequency&apos;: options.lowFrequency,&#xD;	            &apos;highFrequency&apos;: options.highFrequency&#xD;	        });&#xD;	        /**&#xD;			 *  low/mid crossover frequency.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.lowFrequency = this._splitter.lowFrequency;&#xD;	        /**&#xD;			 *  mid/high crossover frequency.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.highFrequency = this._splitter.highFrequency;&#xD;	        /**&#xD;			 *  the output&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  The compressor applied to the low frequencies.&#xD;			 *  @type {Tone.Compressor}&#xD;			 */&#xD;	        this.low = new Tone.Compressor(options.low);&#xD;	        /**&#xD;			 *  The compressor applied to the mid frequencies.&#xD;			 *  @type {Tone.Compressor}&#xD;			 */&#xD;	        this.mid = new Tone.Compressor(options.mid);&#xD;	        /**&#xD;			 *  The compressor applied to the high frequencies.&#xD;			 *  @type {Tone.Compressor}&#xD;			 */&#xD;	        this.high = new Tone.Compressor(options.high);&#xD;	        //connect the compressor&#xD;	        this._splitter.low.chain(this.low, this.output);&#xD;	        this._splitter.mid.chain(this.mid, this.output);&#xD;	        this._splitter.high.chain(this.high, this.output);&#xD;	        this._readOnly([&#xD;	            &apos;high&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;low&apos;,&#xD;	            &apos;highFrequency&apos;,&#xD;	            &apos;lowFrequency&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.MultibandCompressor);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MultibandCompressor.defaults = {&#xD;	        &apos;low&apos;: Tone.Compressor.defaults,&#xD;	        &apos;mid&apos;: Tone.Compressor.defaults,&#xD;	        &apos;high&apos;: Tone.Compressor.defaults,&#xD;	        &apos;lowFrequency&apos;: 250,&#xD;	        &apos;highFrequency&apos;: 2000&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.MultibandCompressor} this&#xD;		 */&#xD;	    Tone.MultibandCompressor.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._splitter.dispose();&#xD;	        this._writable([&#xD;	            &apos;high&apos;,&#xD;	            &apos;mid&apos;,&#xD;	            &apos;low&apos;,&#xD;	            &apos;highFrequency&apos;,&#xD;	            &apos;lowFrequency&apos;&#xD;	        ]);&#xD;	        this.low.dispose();&#xD;	        this.mid.dispose();&#xD;	        this.high.dispose();&#xD;	        this._splitter = null;&#xD;	        this.low = null;&#xD;	        this.mid = null;&#xD;	        this.high = null;&#xD;	        this.lowFrequency = null;&#xD;	        this.highFrequency = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MultibandCompressor;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Panner is an equal power Left/Right Panner and does not&#xD;		 *          support 3D. Panner uses the StereoPannerNode when available. &#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {NormalRange} [initialPan=0] The initail panner value (defaults to 0 = center)&#xD;		 *  @example&#xD;		 *  //pan the input signal hard right. &#xD;		 *  var panner = new Tone.Panner(1);&#xD;		 */&#xD;	    Tone.Panner = function (initialPan) {&#xD;	        if (this._hasStereoPanner) {&#xD;	            /**&#xD;				 *  the panner node&#xD;				 *  @type {StereoPannerNode}&#xD;				 *  @private&#xD;				 */&#xD;	            this._panner = this.input = this.output = this.context.createStereoPanner();&#xD;	            /**&#xD;				 *  The pan control. -1 = hard left, 1 = hard right. &#xD;				 *  @type {NormalRange}&#xD;				 *  @signal&#xD;				 */&#xD;	            this.pan = this._panner.pan;&#xD;	        } else {&#xD;	            /**&#xD;				 *  the dry/wet knob&#xD;				 *  @type {Tone.CrossFade}&#xD;				 *  @private&#xD;				 */&#xD;	            this._crossFade = new Tone.CrossFade();&#xD;	            /**&#xD;				 *  @type {Tone.Merge}&#xD;				 *  @private&#xD;				 */&#xD;	            this._merger = this.output = new Tone.Merge();&#xD;	            /**&#xD;				 *  @type {Tone.Split}&#xD;				 *  @private&#xD;				 */&#xD;	            this._splitter = this.input = new Tone.Split();&#xD;	            /**&#xD;				 *  The pan control. -1 = hard left, 1 = hard right. &#xD;				 *  @type {AudioRange}&#xD;				 *  @signal&#xD;				 */&#xD;	            this.pan = new Tone.Signal(0, Tone.Type.AudioRange);&#xD;	            /**&#xD;				 *  always sends 0&#xD;				 *  @type {Tone.Zero}&#xD;				 *  @private&#xD;				 */&#xD;	            this._zero = new Tone.Zero();&#xD;	            /**&#xD;				 *  The analog to gain conversion&#xD;				 *  @type  {Tone.AudioToGain}&#xD;				 *  @private&#xD;				 */&#xD;	            this._a2g = new Tone.AudioToGain();&#xD;	            //CONNECTIONS:&#xD;	            this._zero.connect(this._a2g);&#xD;	            this.pan.chain(this._a2g, this._crossFade.fade);&#xD;	            //left channel is a, right channel is b&#xD;	            this._splitter.connect(this._crossFade, 0, 0);&#xD;	            this._splitter.connect(this._crossFade, 1, 1);&#xD;	            //merge it back together&#xD;	            this._crossFade.a.connect(this._merger, 0, 0);&#xD;	            this._crossFade.b.connect(this._merger, 0, 1);&#xD;	        }&#xD;	        //initial value&#xD;	        this.pan.value = this.defaultArg(initialPan, 0);&#xD;	        this._readOnly(&apos;pan&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.Panner);&#xD;	    /**&#xD;		 *  indicates if the panner is using the new StereoPannerNode internally&#xD;		 *  @type  {boolean}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Panner.prototype._hasStereoPanner = Tone.prototype.isFunction(Tone.context.createStereoPanner);&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Panner} this&#xD;		 */&#xD;	    Tone.Panner.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable(&apos;pan&apos;);&#xD;	        if (this._hasStereoPanner) {&#xD;	            this._panner.disconnect();&#xD;	            this._panner = null;&#xD;	            this.pan = null;&#xD;	        } else {&#xD;	            this._zero.dispose();&#xD;	            this._zero = null;&#xD;	            this._crossFade.dispose();&#xD;	            this._crossFade = null;&#xD;	            this._splitter.dispose();&#xD;	            this._splitter = null;&#xD;	            this._merger.dispose();&#xD;	            this._merger = null;&#xD;	            this.pan.dispose();&#xD;	            this.pan = null;&#xD;	            this._a2g.dispose();&#xD;	            this._a2g = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Panner;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  A spatialized panner node which supports equalpower or HRTF panning.&#xD;		 *          Tries to normalize the API across various browsers. See Tone.Listener&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Number} positionX The initial x position.&#xD;		 *  @param {Number} positionY The initial y position.&#xD;		 *  @param {Number} positionZ The initial z position.&#xD;		 */&#xD;	    Tone.Panner3D = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;positionX&apos;,&#xD;	            &apos;positionY&apos;,&#xD;	            &apos;positionZ&apos;&#xD;	        ], Tone.Panner3D.defaults);&#xD;	        /**&#xD;			 *  The panner node&#xD;			 *  @type {PannerNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._panner = this.input = this.output = this.context.createPanner();&#xD;	        //set some values&#xD;	        this._panner.panningModel = options.panningModel;&#xD;	        this._panner.maxDistance = options.maxDistance;&#xD;	        this._panner.distanceModel = options.distanceModel;&#xD;	        this._panner.coneOuterGain = options.coneOuterGain;&#xD;	        this._panner.coneOuterAngle = options.coneOuterAngle;&#xD;	        this._panner.coneInnerAngle = options.coneInnerAngle;&#xD;	        this._panner.refDistance = options.refDistance;&#xD;	        this._panner.rolloffFactor = options.rolloffFactor;&#xD;	        /**&#xD;			 *  Holds the current orientation&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._orientation = [&#xD;	            options.orientationX,&#xD;	            options.orientationY,&#xD;	            options.orientationZ&#xD;	        ];&#xD;	        /**&#xD;			 *  Holds the current position&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._position = [&#xD;	            options.positionX,&#xD;	            options.positionY,&#xD;	            options.positionZ&#xD;	        ];&#xD;	        // set the default position/orientation&#xD;	        this.orientationX = options.orientationX;&#xD;	        this.orientationY = options.orientationY;&#xD;	        this.orientationZ = options.orientationZ;&#xD;	        this.positionX = options.positionX;&#xD;	        this.positionY = options.positionY;&#xD;	        this.positionZ = options.positionZ;&#xD;	    };&#xD;	    Tone.extend(Tone.Panner3D);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 *  Defaults according to the specification&#xD;		 */&#xD;	    Tone.Panner3D.defaults = {&#xD;	        &apos;positionX&apos;: 0,&#xD;	        &apos;positionY&apos;: 0,&#xD;	        &apos;positionZ&apos;: 0,&#xD;	        &apos;orientationX&apos;: 0,&#xD;	        &apos;orientationY&apos;: 0,&#xD;	        &apos;orientationZ&apos;: 0,&#xD;	        &apos;panningModel&apos;: &apos;equalpower&apos;,&#xD;	        &apos;maxDistance&apos;: 10000,&#xD;	        &apos;distanceModel&apos;: &apos;inverse&apos;,&#xD;	        &apos;coneOuterGain&apos;: 0,&#xD;	        &apos;coneOuterAngle&apos;: 360,&#xD;	        &apos;coneInnerAngle&apos;: 360,&#xD;	        &apos;refDistance&apos;: 1,&#xD;	        &apos;rolloffFactor&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 * The ramp time which is applied to the setTargetAtTime&#xD;		 * @type {Number}&#xD;		 * @private&#xD;		 */&#xD;	    Tone.Panner3D.prototype._rampTimeConstant = 0.01;&#xD;	    /**&#xD;		 *  Sets the position of the source in 3d space.	&#xD;		 *  @param  {Number}  x&#xD;		 *  @param  {Number}  y&#xD;		 *  @param  {Number}  z&#xD;		 *  @return {Tone.Panner3D} this&#xD;		 */&#xD;	    Tone.Panner3D.prototype.setPosition = function (x, y, z) {&#xD;	        if (this._panner.positionX) {&#xD;	            var now = this.now();&#xD;	            this._panner.positionX.setTargetAtTime(x, now, this._rampTimeConstant);&#xD;	            this._panner.positionY.setTargetAtTime(y, now, this._rampTimeConstant);&#xD;	            this._panner.positionZ.setTargetAtTime(z, now, this._rampTimeConstant);&#xD;	        } else {&#xD;	            this._panner.setPosition(x, y, z);&#xD;	        }&#xD;	        this._position = Array.prototype.slice.call(arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sets the orientation of the source in 3d space.	&#xD;		 *  @param  {Number}  x&#xD;		 *  @param  {Number}  y&#xD;		 *  @param  {Number}  z&#xD;		 *  @return {Tone.Panner3D} this&#xD;		 */&#xD;	    Tone.Panner3D.prototype.setOrientation = function (x, y, z) {&#xD;	        if (this._panner.orientationX) {&#xD;	            var now = this.now();&#xD;	            this._panner.orientationX.setTargetAtTime(x, now, this._rampTimeConstant);&#xD;	            this._panner.orientationY.setTargetAtTime(y, now, this._rampTimeConstant);&#xD;	            this._panner.orientationZ.setTargetAtTime(z, now, this._rampTimeConstant);&#xD;	        } else {&#xD;	            this._panner.setOrientation(x, y, z);&#xD;	        }&#xD;	        this._orientation = Array.prototype.slice.call(arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The x position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name positionX&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;positionX&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[0] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[0];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The y position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name positionY&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;positionY&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[1] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[1];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The z position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name positionZ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;positionZ&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[2] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[2];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The x orientation of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name orientationX&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;orientationX&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[0] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[0];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The y orientation of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name orientationY&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;orientationY&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[1] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[1];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The z orientation of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name orientationZ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Panner3D.prototype, &apos;orientationZ&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[2] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[2];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Proxy a property on the panner to an exposed public propery&#xD;		 *  @param  {String}  prop&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty = function (prop) {&#xD;	        Object.defineProperty(Tone.Panner3D.prototype, prop, {&#xD;	            set: function (val) {&#xD;	                this._panner[prop] = val;&#xD;	            },&#xD;	            get: function () {&#xD;	                return this._panner[prop];&#xD;	            }&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 *  The panning model. Either "equalpower" or "HRTF".&#xD;		 *  @type {String}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name panningModel&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;panningModel&apos;);&#xD;	    /**&#xD;		 *  A reference distance for reducing volume as source move further from the listener&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name refDistance&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;refDistance&apos;);&#xD;	    /**&#xD;		 *  Describes how quickly the volume is reduced as source moves away from listener.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name rolloffFactor&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;rolloffFactor&apos;);&#xD;	    /**&#xD;		 *  The distance model used by,  "linear", "inverse", or "exponential".&#xD;		 *  @type {String}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name distanceModel&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;distanceModel&apos;);&#xD;	    /**&#xD;		 *  The angle, in degrees, inside of which there will be no volume reduction&#xD;		 *  @type {Degrees}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name coneInnerAngle&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;coneInnerAngle&apos;);&#xD;	    /**&#xD;		 *  The angle, in degrees, outside of which the volume will be reduced &#xD;		 *  to a constant value of coneOuterGain&#xD;		 *  @type {Degrees}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name coneOuterAngle&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;coneOuterAngle&apos;);&#xD;	    /**&#xD;		 *  The gain outside of the coneOuterAngle&#xD;		 *  @type {Gain}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name coneOuterGain&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;coneOuterGain&apos;);&#xD;	    /**&#xD;		 *  The maximum distance between source and listener, &#xD;		 *  after which the volume will not be reduced any further.&#xD;		 *  @type {Positive}&#xD;		 *  @memberOf Tone.Panner3D#&#xD;		 *  @name maxDistance&#xD;		 */&#xD;	    Tone.Panner3D._aliasProperty(&apos;maxDistance&apos;);&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Panner3D} this&#xD;		 */&#xD;	    Tone.Panner3D.prototype.dispose = function () {&#xD;	        this._panner.disconnect();&#xD;	        this._panner = null;&#xD;	        this._orientation = null;&#xD;	        this._position = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Panner3D;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.PanVol is a Tone.Panner and Tone.Volume in one.&#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @constructor&#xD;		 *  @param {AudioRange} pan the initial pan&#xD;		 *  @param {number} volume The output volume. &#xD;		 *  @example&#xD;		 * //pan the incoming signal left and drop the volume&#xD;		 * var panVol = new Tone.PanVol(0.25, -12);&#xD;		 */&#xD;	    Tone.PanVol = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;pan&apos;,&#xD;	            &apos;volume&apos;&#xD;	        ], Tone.PanVol.defaults);&#xD;	        /**&#xD;			 *  The panning node&#xD;			 *  @type {Tone.Panner}&#xD;			 *  @private&#xD;			 */&#xD;	        this._panner = this.input = new Tone.Panner(options.pan);&#xD;	        /**&#xD;			 *  The L/R panning control.&#xD;			 *  @type {AudioRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.pan = this._panner.pan;&#xD;	        /**&#xD;			 *  The volume node&#xD;			 *  @type {Tone.Volume}&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume(options.volume);&#xD;	        /**&#xD;			 *  The volume control in decibels. &#xD;			 *  @type {Decibels}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        //connections&#xD;	        this._panner.connect(this._volume);&#xD;	        this._readOnly([&#xD;	            &apos;pan&apos;,&#xD;	            &apos;volume&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.PanVol);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.PanVol.defaults = {&#xD;	        &apos;pan&apos;: 0.5,&#xD;	        &apos;volume&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.PanVol} this&#xD;		 */&#xD;	    Tone.PanVol.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;pan&apos;,&#xD;	            &apos;volume&apos;&#xD;	        ]);&#xD;	        this._panner.dispose();&#xD;	        this._panner = null;&#xD;	        this.pan = null;&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this.volume = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PanVol;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.CtrlInterpolate will interpolate between given values based&#xD;		 *         on the "index" property. Passing in an array or object literal&#xD;		 *         will interpolate each of the parameters. Note (i.e. "C3")&#xD;		 *         and Time (i.e. "4n + 2") can be interpolated. All other values are&#xD;		 *         assumed to be numbers. &#xD;		 *  @example&#xD;		 * var interp = new Tone.CtrlInterpolate([0, 2, 9, 4]);&#xD;		 * interp.index = 0.75;&#xD;		 * interp.value; //returns 1.5&#xD;		 *&#xD;		 *  @example&#xD;		 * var interp = new Tone.CtrlInterpolate([&#xD;		 * 	[2, 4, 5],&#xD;		 * 	[9, 3, 2],&#xD;		 * ]);&#xD;		 * @param {Array} values The array of values to interpolate over&#xD;		 * @param {Positive} index The initial interpolation index.&#xD;		 * @extends {Tone}&#xD;		 */&#xD;	    Tone.CtrlInterpolate = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;values&apos;,&#xD;	            &apos;index&apos;&#xD;	        ], Tone.CtrlInterpolate.defaults);&#xD;	        /**&#xD;			 *  The values to interpolate between&#xD;			 *  @type  {Array}&#xD;			 */&#xD;	        this.values = options.values;&#xD;	        /**&#xD;			 *  The interpolated index between values. For example: a value of 1.5&#xD;			 *  would interpolate equally between the value at index 1&#xD;			 *  and the value at index 2. &#xD;			 *  @example&#xD;			 * interp.index = 0; &#xD;			 * interp.value; //returns the value at 0&#xD;			 * interp.index = 0.5;&#xD;			 * interp.value; //returns the value between indices 0 and 1. &#xD;			 *  @type  {Positive}&#xD;			 */&#xD;	        this.index = options.index;&#xD;	    };&#xD;	    Tone.extend(Tone.CtrlInterpolate);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.CtrlInterpolate.defaults = {&#xD;	        &apos;index&apos;: 0,&#xD;	        &apos;values&apos;: []&#xD;	    };&#xD;	    /**&#xD;		 *  The current interpolated value based on the index&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.CtrlInterpolate#&#xD;		 *  @type {*}&#xD;		 *  @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.CtrlInterpolate.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            var index = this.index;&#xD;	            index = Math.min(index, this.values.length - 1);&#xD;	            var lowerPosition = Math.floor(index);&#xD;	            var lower = this.values[lowerPosition];&#xD;	            var upper = this.values[Math.ceil(index)];&#xD;	            return this._interpolate(index - lowerPosition, lower, upper);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Internal interpolation routine&#xD;		 *  @param  {NormalRange}  index  The index between the lower and upper&#xD;		 *  @param  {*}  lower &#xD;		 *  @param  {*}  upper &#xD;		 *  @return  {*}  The interpolated value&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.CtrlInterpolate.prototype._interpolate = function (index, lower, upper) {&#xD;	        if (this.isArray(lower)) {&#xD;	            var retArray = [];&#xD;	            for (var i = 0; i &lt; lower.length; i++) {&#xD;	                retArray[i] = this._interpolate(index, lower[i], upper[i]);&#xD;	            }&#xD;	            return retArray;&#xD;	        } else if (this.isObject(lower)) {&#xD;	            var retObj = {};&#xD;	            for (var attr in lower) {&#xD;	                retObj[attr] = this._interpolate(index, lower[attr], upper[attr]);&#xD;	            }&#xD;	            return retObj;&#xD;	        } else {&#xD;	            lower = this._toNumber(lower);&#xD;	            upper = this._toNumber(upper);&#xD;	            return (1 - index) * lower + index * upper;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Convert from the given type into a number&#xD;		 *  @param  {Number|String}  value&#xD;		 *  @return  {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.CtrlInterpolate.prototype._toNumber = function (val) {&#xD;	        if (this.isNumber(val)) {&#xD;	            return val;&#xD;	        } else {&#xD;	            //otherwise assume that it&apos;s Time...&#xD;	            return this.toSeconds(val);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.CtrlInterpolate}  this&#xD;		 */&#xD;	    Tone.CtrlInterpolate.prototype.dispose = function () {&#xD;	        this.values = null;&#xD;	    };&#xD;	    return Tone.CtrlInterpolate;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.CtrlMarkov represents a Markov Chain where each call&#xD;		 *         to Tone.CtrlMarkov.next will move to the next state. If the next&#xD;		 *         state choice is an array, the next state is chosen randomly with&#xD;		 *         even probability for all of the choices. For a weighted probability&#xD;		 *         of the next choices, pass in an object with "state" and "probability" attributes. &#xD;		 *         The probabilities will be normalized and then chosen. If no next options&#xD;		 *         are given for the current state, the state will stay there. &#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * var chain = new Tone.CtrlMarkov({&#xD;		 * 	"beginning" : ["end", "middle"],&#xD;		 * 	"middle" : "end"&#xD;		 * });&#xD;		 * chain.value = "beginning";&#xD;		 * chain.next(); //returns "end" or "middle" with 50% probability&#xD;		 *&#xD;		 *  @example&#xD;		 * var chain = new Tone.CtrlMarkov({&#xD;		 * 	"beginning" : [{"value" : "end", "probability" : 0.8}, &#xD;		 * 					{"value" : "middle", "probability" : 0.2}],&#xD;		 * 	"middle" : "end"&#xD;		 * });&#xD;		 * chain.value = "beginning";&#xD;		 * chain.next(); //returns "end" with 80% probability or "middle" with 20%.&#xD;		 *  @param {Object} values An object with the state names as the keys&#xD;		 *                         and the next state(s) as the values. &#xD;		 */&#xD;	    Tone.CtrlMarkov = function (values, initial) {&#xD;	        /**&#xD;			 *  The Markov values with states as the keys&#xD;			 *  and next state(s) as the values. &#xD;			 *  @type {Object}&#xD;			 */&#xD;	        this.values = this.defaultArg(values, {});&#xD;	        /**&#xD;			 *  The current state of the Markov values. The next&#xD;			 *  state will be evaluated and returned when Tone.CtrlMarkov.next&#xD;			 *  is invoked.&#xD;			 *  @type {String}&#xD;			 */&#xD;	        this.value = this.defaultArg(initial, Object.keys(this.values)[0]);&#xD;	    };&#xD;	    Tone.extend(Tone.CtrlMarkov);&#xD;	    /**&#xD;		 *  Returns the next state of the Markov values. &#xD;		 *  @return  {String}&#xD;		 */&#xD;	    Tone.CtrlMarkov.prototype.next = function () {&#xD;	        if (this.values.hasOwnProperty(this.value)) {&#xD;	            var next = this.values[this.value];&#xD;	            if (this.isArray(next)) {&#xD;	                var distribution = this._getProbDistribution(next);&#xD;	                var rand = Math.random();&#xD;	                var total = 0;&#xD;	                for (var i = 0; i &lt; distribution.length; i++) {&#xD;	                    var dist = distribution[i];&#xD;	                    if (rand &gt; total &amp;&amp; rand &lt; total + dist) {&#xD;	                        var chosen = next[i];&#xD;	                        if (this.isObject(chosen)) {&#xD;	                            this.value = chosen.value;&#xD;	                        } else {&#xD;	                            this.value = chosen;&#xD;	                        }&#xD;	                    }&#xD;	                    total += dist;&#xD;	                }&#xD;	            } else {&#xD;	                this.value = next;&#xD;	            }&#xD;	        }&#xD;	        return this.value;&#xD;	    };&#xD;	    /**&#xD;		 *  Choose randomly from an array weighted options in the form &#xD;		 *  {"state" : string, "probability" : number} or an array of values&#xD;		 *  @param  {Array}  options &#xD;		 *  @return  {Array}  The randomly selected choice&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.CtrlMarkov.prototype._getProbDistribution = function (options) {&#xD;	        var distribution = [];&#xD;	        var total = 0;&#xD;	        var needsNormalizing = false;&#xD;	        for (var i = 0; i &lt; options.length; i++) {&#xD;	            var option = options[i];&#xD;	            if (this.isObject(option)) {&#xD;	                needsNormalizing = true;&#xD;	                distribution[i] = option.probability;&#xD;	            } else {&#xD;	                distribution[i] = 1 / options.length;&#xD;	            }&#xD;	            total += distribution[i];&#xD;	        }&#xD;	        if (needsNormalizing) {&#xD;	            //normalize the values&#xD;	            for (var j = 0; j &lt; distribution.length; j++) {&#xD;	                distribution[j] = distribution[j] / total;&#xD;	            }&#xD;	        }&#xD;	        return distribution;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.CtrlMarkov}  this&#xD;		 */&#xD;	    Tone.CtrlMarkov.prototype.dispose = function () {&#xD;	        this.values = null;&#xD;	    };&#xD;	    return Tone.CtrlMarkov;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Generate patterns from an array of values.&#xD;		 *         Has a number of arpeggiation and randomized&#xD;		 *         selection patterns. &#xD;		 *           &lt;ul&gt;&#xD;		 *  	        &lt;li&gt;"up" - cycles upward&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"down" - cycles downward&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"upDown" - up then and down&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"downUp" - cycles down then and up&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"alternateUp" - jump up two and down one&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"alternateDown" - jump down two and up one&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"random" - randomly select an index&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"randomWalk" - randomly moves one index away from the current position&lt;/li&gt;&#xD;		 *  			&lt;li&gt;"randomOnce" - randomly select an index without repeating until all values have been chosen.&lt;/li&gt;&#xD;		 *     		&lt;/ul&gt;&#xD;		 *  @param  {Array}  values   An array of options to choose from.&#xD;		 *  @param  {Tone.CtrlPattern.Type=}  type  The name of the pattern.&#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.CtrlPattern = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;values&apos;,&#xD;	            &apos;type&apos;&#xD;	        ], Tone.CtrlPattern.defaults);&#xD;	        /**&#xD;			 *  The array of values to arpeggiate over&#xD;			 *  @type {Array}&#xD;			 */&#xD;	        this.values = options.values;&#xD;	        /**&#xD;			 *  The current position in the values array&#xD;			 *  @type  {Number}&#xD;			 */&#xD;	        this.index = 0;&#xD;	        /**&#xD;			 *  The type placeholder&#xD;			 *  @type {Tone.CtrlPattern.Type}&#xD;			 *  @private&#xD;			 */&#xD;	        this._type = null;&#xD;	        /**&#xD;			 *  Shuffled values for the RandomOnce type&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._shuffled = null;&#xD;	        /**&#xD;			 *  The direction of the movement&#xD;			 *  @type {String}&#xD;			 *  @private&#xD;			 */&#xD;	        this._direction = null;&#xD;	        this.type = options.type;&#xD;	    };&#xD;	    Tone.extend(Tone.CtrlPattern);&#xD;	    /**&#xD;		 *  The Control Patterns&#xD;		 *  @type  {Object}&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.CtrlPattern.Type = {&#xD;	        Up: &apos;up&apos;,&#xD;	        Down: &apos;down&apos;,&#xD;	        UpDown: &apos;upDown&apos;,&#xD;	        DownUp: &apos;downUp&apos;,&#xD;	        AlternateUp: &apos;alternateUp&apos;,&#xD;	        AlternateDown: &apos;alternateDown&apos;,&#xD;	        Random: &apos;random&apos;,&#xD;	        RandomWalk: &apos;randomWalk&apos;,&#xD;	        RandomOnce: &apos;randomOnce&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  The default values. &#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.CtrlPattern.defaults = {&#xD;	        &apos;type&apos;: Tone.CtrlPattern.Type.Up,&#xD;	        &apos;values&apos;: []&#xD;	    };&#xD;	    /**&#xD;		 *  The value at the current index of the pattern.&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.CtrlPattern#&#xD;		 *  @type {*}&#xD;		 *  @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.CtrlPattern.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            //some safeguards&#xD;	            if (this.values.length === 0) {&#xD;	                return;&#xD;	            } else if (this.values.length === 1) {&#xD;	                return this.values[0];&#xD;	            }&#xD;	            this.index = Math.min(this.index, this.values.length - 1);&#xD;	            var val = this.values[this.index];&#xD;	            if (this.type === Tone.CtrlPattern.Type.RandomOnce) {&#xD;	                if (this.values.length !== this._shuffled.length) {&#xD;	                    this._shuffleValues();&#xD;	                }&#xD;	                val = this.values[this._shuffled[this.index]];&#xD;	            }&#xD;	            return val;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The pattern used to select the next&#xD;		 *  item from the values array&#xD;		 *  @memberOf Tone.CtrlPattern#&#xD;		 *  @type {Tone.CtrlPattern.Type}&#xD;		 *  @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.CtrlPattern.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._type = type;&#xD;	            this._shuffled = null;&#xD;	            //the first index&#xD;	            if (this._type === Tone.CtrlPattern.Type.Up || this._type === Tone.CtrlPattern.Type.UpDown || this._type === Tone.CtrlPattern.Type.RandomOnce || this._type === Tone.CtrlPattern.Type.AlternateUp) {&#xD;	                this.index = 0;&#xD;	            } else if (this._type === Tone.CtrlPattern.Type.Down || this._type === Tone.CtrlPattern.Type.DownUp || this._type === Tone.CtrlPattern.Type.AlternateDown) {&#xD;	                this.index = this.values.length - 1;&#xD;	            }&#xD;	            //the direction&#xD;	            if (this._type === Tone.CtrlPattern.Type.UpDown || this._type === Tone.CtrlPattern.Type.AlternateUp) {&#xD;	                this._direction = Tone.CtrlPattern.Type.Up;&#xD;	            } else if (this._type === Tone.CtrlPattern.Type.DownUp || this._type === Tone.CtrlPattern.Type.AlternateDown) {&#xD;	                this._direction = Tone.CtrlPattern.Type.Down;&#xD;	            }&#xD;	            //randoms&#xD;	            if (this._type === Tone.CtrlPattern.Type.RandomOnce) {&#xD;	                this._shuffleValues();&#xD;	            } else if (this._type === Tone.CtrlPattern.Random) {&#xD;	                this.index = Math.floor(Math.random() * this.values.length);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Return the next value given the current position&#xD;		 *  and pattern.&#xD;		 *  @return {*} The next value&#xD;		 */&#xD;	    Tone.CtrlPattern.prototype.next = function () {&#xD;	        var type = this.type;&#xD;	        //choose the next index&#xD;	        if (type === Tone.CtrlPattern.Type.Up) {&#xD;	            this.index++;&#xD;	            if (this.index &gt;= this.values.length) {&#xD;	                this.index = 0;&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.Down) {&#xD;	            this.index--;&#xD;	            if (this.index &lt; 0) {&#xD;	                this.index = this.values.length - 1;&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.UpDown || type === Tone.CtrlPattern.Type.DownUp) {&#xD;	            if (this._direction === Tone.CtrlPattern.Type.Up) {&#xD;	                this.index++;&#xD;	            } else {&#xD;	                this.index--;&#xD;	            }&#xD;	            if (this.index &lt; 0) {&#xD;	                this.index = 1;&#xD;	                this._direction = Tone.CtrlPattern.Type.Up;&#xD;	            } else if (this.index &gt;= this.values.length) {&#xD;	                this.index = this.values.length - 2;&#xD;	                this._direction = Tone.CtrlPattern.Type.Down;&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.Random) {&#xD;	            this.index = Math.floor(Math.random() * this.values.length);&#xD;	        } else if (type === Tone.CtrlPattern.Type.RandomWalk) {&#xD;	            if (Math.random() &lt; 0.5) {&#xD;	                this.index--;&#xD;	                this.index = Math.max(this.index, 0);&#xD;	            } else {&#xD;	                this.index++;&#xD;	                this.index = Math.min(this.index, this.values.length - 1);&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.RandomOnce) {&#xD;	            this.index++;&#xD;	            if (this.index &gt;= this.values.length) {&#xD;	                this.index = 0;&#xD;	                //reshuffle the values for next time&#xD;	                this._shuffleValues();&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.AlternateUp) {&#xD;	            if (this._direction === Tone.CtrlPattern.Type.Up) {&#xD;	                this.index += 2;&#xD;	                this._direction = Tone.CtrlPattern.Type.Down;&#xD;	            } else {&#xD;	                this.index -= 1;&#xD;	                this._direction = Tone.CtrlPattern.Type.Up;&#xD;	            }&#xD;	            if (this.index &gt;= this.values.length) {&#xD;	                this.index = 0;&#xD;	                this._direction = Tone.CtrlPattern.Type.Up;&#xD;	            }&#xD;	        } else if (type === Tone.CtrlPattern.Type.AlternateDown) {&#xD;	            if (this._direction === Tone.CtrlPattern.Type.Up) {&#xD;	                this.index += 1;&#xD;	                this._direction = Tone.CtrlPattern.Type.Down;&#xD;	            } else {&#xD;	                this.index -= 2;&#xD;	                this._direction = Tone.CtrlPattern.Type.Up;&#xD;	            }&#xD;	            if (this.index &lt; 0) {&#xD;	                this.index = this.values.length - 1;&#xD;	                this._direction = Tone.CtrlPattern.Type.Down;&#xD;	            }&#xD;	        }&#xD;	        return this.value;&#xD;	    };&#xD;	    /**&#xD;		 *  Shuffles the values and places the results into the _shuffled&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.CtrlPattern.prototype._shuffleValues = function () {&#xD;	        var copy = [];&#xD;	        this._shuffled = [];&#xD;	        for (var i = 0; i &lt; this.values.length; i++) {&#xD;	            copy[i] = i;&#xD;	        }&#xD;	        while (copy.length &gt; 0) {&#xD;	            var randVal = copy.splice(Math.floor(copy.length * Math.random()), 1);&#xD;	            this._shuffled.push(randVal[0]);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @returns {Tone.CtrlPattern} this&#xD;		 */&#xD;	    Tone.CtrlPattern.prototype.dispose = function () {&#xD;	        this._shuffled = null;&#xD;	        this.values = null;&#xD;	    };&#xD;	    return Tone.CtrlPattern;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Choose a random value.&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * var randomWalk = new Tone.CtrlRandom({&#xD;		 * 	"min" : 0,&#xD;		 * 	"max" : 10,&#xD;		 * 	"integer" : true&#xD;		 * });&#xD;		 * randomWalk.eval();&#xD;		 *&#xD;		 *  @param {Number|Time=} min The minimum return value.&#xD;		 *  @param {Number|Time=} max The maximum return value.&#xD;		 */&#xD;	    Tone.CtrlRandom = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;min&apos;,&#xD;	            &apos;max&apos;&#xD;	        ], Tone.CtrlRandom.defaults);&#xD;	        /**&#xD;			 *  The minimum return value&#xD;			 *  @type  {Number|Time}&#xD;			 */&#xD;	        this.min = options.min;&#xD;	        /**&#xD;			 *  The maximum return value&#xD;			 *  @type  {Number|Time}&#xD;			 */&#xD;	        this.max = options.max;&#xD;	        /**&#xD;			 *  If the return value should be an integer&#xD;			 *  @type  {Boolean}&#xD;			 */&#xD;	        this.integer = options.integer;&#xD;	    };&#xD;	    Tone.extend(Tone.CtrlRandom);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.CtrlRandom.defaults = {&#xD;	        &apos;min&apos;: 0,&#xD;	        &apos;max&apos;: 1,&#xD;	        &apos;integer&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Return a random value between min and max. &#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.CtrlRandom#&#xD;		 *  @type {*}&#xD;		 *  @name value&#xD;		 */&#xD;	    Object.defineProperty(Tone.CtrlRandom.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            var min = this.toSeconds(this.min);&#xD;	            var max = this.toSeconds(this.max);&#xD;	            var rand = Math.random();&#xD;	            var val = rand * min + (1 - rand) * max;&#xD;	            if (this.integer) {&#xD;	                val = Math.floor(val);&#xD;	            }&#xD;	            return val;&#xD;	        }&#xD;	    });&#xD;	    return Tone.CtrlRandom;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Buffer loading and storage. Tone.Buffer is used internally by all &#xD;		 *          classes that make requests for audio files such as Tone.Player,&#xD;		 *          Tone.Sampler and Tone.Convolver.&#xD;		 *          &lt;br&gt;&lt;br&gt;&#xD;		 *          Aside from load callbacks from individual buffers, Tone.Buffer &#xD;		 *  		provides static methods which keep track of the loading progress &#xD;		 *  		of all of the buffers. These methods are Tone.Buffer.on("load" / "progress" / "error")&#xD;		 *&#xD;		 *  @constructor &#xD;		 *  @extends {Tone}&#xD;		 *  @param {AudioBuffer|string} url The url to load, or the audio buffer to set. &#xD;		 *  @param {Function=} onload A callback which is invoked after the buffer is loaded. &#xD;		 *                            It&apos;s recommended to use Tone.Buffer.onload instead &#xD;		 *                            since it will give you a callback when ALL buffers are loaded.&#xD;		 *  @param {Function=} onerror The callback to invoke if there is an error&#xD;		 *  @example&#xD;		 * var buffer = new Tone.Buffer("path/to/sound.mp3", function(){&#xD;		 * 	//the buffer is now available.&#xD;		 * 	var buff = buffer.get();&#xD;		 * });&#xD;		 */&#xD;	    Tone.Buffer = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;url&apos;,&#xD;	            &apos;onload&apos;,&#xD;	            &apos;onerror&apos;&#xD;	        ], Tone.Buffer.defaults);&#xD;	        /**&#xD;			 *  stores the loaded AudioBuffer&#xD;			 *  @type {AudioBuffer}&#xD;			 *  @private&#xD;			 */&#xD;	        this._buffer = null;&#xD;	        /**&#xD;			 *  indicates if the buffer should be reversed or not&#xD;			 *  @type {Boolean}&#xD;			 *  @private&#xD;			 */&#xD;	        this._reversed = options.reverse;&#xD;	        /**&#xD;			 *  The XHR&#xD;			 *  @type  {XMLHttpRequest}&#xD;			 *  @private&#xD;			 */&#xD;	        this._xhr = null;&#xD;	        if (options.url instanceof AudioBuffer || options.url instanceof Tone.Buffer) {&#xD;	            this.set(options.url);&#xD;	            // invoke the onload callback&#xD;	            if (options.onload) {&#xD;	                options.onload(this);&#xD;	            }&#xD;	        } else if (this.isString(options.url)) {&#xD;	            this.load(options.url, options.onload, options.onerror);&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Buffer);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Buffer.defaults = {&#xD;	        &apos;url&apos;: undefined,&#xD;	        &apos;reverse&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Pass in an AudioBuffer or Tone.Buffer to set the value&#xD;		 *  of this buffer.&#xD;		 *  @param {AudioBuffer|Tone.Buffer} buffer the buffer&#xD;		 *  @returns {Tone.Buffer} this&#xD;		 */&#xD;	    Tone.Buffer.prototype.set = function (buffer) {&#xD;	        if (buffer instanceof Tone.Buffer) {&#xD;	            this._buffer = buffer.get();&#xD;	        } else {&#xD;	            this._buffer = buffer;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  @return {AudioBuffer} The audio buffer stored in the object.&#xD;		 */&#xD;	    Tone.Buffer.prototype.get = function () {&#xD;	        return this._buffer;&#xD;	    };&#xD;	    /**&#xD;		 *  Makes an xhr reqest for the selected url then decodes&#xD;		 *  the file as an audio buffer. Invokes&#xD;		 *  the callback once the audio buffer loads.&#xD;		 *  @param {String} url The url of the buffer to load.&#xD;		 *                      filetype support depends on the&#xD;		 *                      browser.&#xD;		 *  @returns {Promise} returns a Promise which resolves with the Tone.Buffer&#xD;		 */&#xD;	    Tone.Buffer.prototype.load = function (url, onload, onerror) {&#xD;	        var promise = new Promise(function (load, error) {&#xD;	            this._xhr = Tone.Buffer.load(url, //success&#xD;	            function (buff) {&#xD;	                this._xhr = null;&#xD;	                this.set(buff);&#xD;	                load(this);&#xD;	                if (onload) {&#xD;	                    onload(this);&#xD;	                }&#xD;	            }.bind(this), //error&#xD;	            function (err) {&#xD;	                this._xhr = null;&#xD;	                error(err);&#xD;	                if (onerror) {&#xD;	                    onerror(err);&#xD;	                }&#xD;	            }.bind(this));&#xD;	        }.bind(this));&#xD;	        return promise;&#xD;	    };&#xD;	    /**&#xD;		 *  dispose and disconnect&#xD;		 *  @returns {Tone.Buffer} this&#xD;		 */&#xD;	    Tone.Buffer.prototype.dispose = function () {&#xD;	        Tone.Emitter.prototype.dispose.call(this);&#xD;	        this._buffer = null;&#xD;	        if (this._xhr) {&#xD;	            Tone.Buffer._currentDownloads--;&#xD;	            this._xhr.abort();&#xD;	            this._xhr = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * If the buffer is loaded or not&#xD;		 * @memberOf Tone.Buffer#&#xD;		 * @type {Boolean}&#xD;		 * @name loaded&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffer.prototype, &apos;loaded&apos;, {&#xD;	        get: function () {&#xD;	            return this.length &gt; 0;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The duration of the buffer. &#xD;		 * @memberOf Tone.Buffer#&#xD;		 * @type {Number}&#xD;		 * @name duration&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffer.prototype, &apos;duration&apos;, {&#xD;	        get: function () {&#xD;	            if (this._buffer) {&#xD;	                return this._buffer.duration;&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The length of the buffer in samples&#xD;		 * @memberOf Tone.Buffer#&#xD;		 * @type {Number}&#xD;		 * @name length&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffer.prototype, &apos;length&apos;, {&#xD;	        get: function () {&#xD;	            if (this._buffer) {&#xD;	                return this._buffer.length;&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The number of discrete audio channels. Returns 0 if no buffer&#xD;		 * is loaded.&#xD;		 * @memberOf Tone.Buffer#&#xD;		 * @type {Number}&#xD;		 * @name numberOfChannels&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffer.prototype, &apos;numberOfChannels&apos;, {&#xD;	        get: function () {&#xD;	            if (this._buffer) {&#xD;	                return this._buffer.numberOfChannels;&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Set the audio buffer from the array&#xD;		 *  @param {Float32Array} array The array to fill the audio buffer&#xD;		 *  @param {Number} [channels=1] The number of channels contained in the array. &#xD;		 *                               If the channel is more than 1, the input array&#xD;		 *                               is expected to be a multidimensional array&#xD;		 *                               with dimensions equal to the number of channels.&#xD;		 *  @return {Tone.Buffer} this&#xD;		 */&#xD;	    Tone.Buffer.prototype.fromArray = function (array) {&#xD;	        var isMultidimensional = array[0].length &gt; 0;&#xD;	        var channels = isMultidimensional ? array.length : 1;&#xD;	        var len = isMultidimensional ? array[0].length : array.length;&#xD;	        var buffer = this.context.createBuffer(channels, len, this.context.sampleRate);&#xD;	        if (!isMultidimensional &amp;&amp; channels === 1) {&#xD;	            array = [array];&#xD;	        }&#xD;	        for (var c = 0; c &lt; channels; c++) {&#xD;	            if (this.isFunction(buffer.copyToChannel)) {&#xD;	                buffer.copyToChannel(array[c], c);&#xD;	            } else {&#xD;	                var channel = buffer.getChannelData(c);&#xD;	                var channelArray = array[c];&#xD;	                for (var i = 0; i &lt; channelArray.length; i++) {&#xD;	                    channel[i] = channelArray[i];&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        this._buffer = buffer;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * 	Get the buffer as an array. Single channel buffers will return a 1-dimensional &#xD;		 * 	Float32Array, and multichannel buffers will return multidimensional arrays.&#xD;		 *  @param {Number=} channel Optionally only copy a single channel from the array.&#xD;		 *  @return {Array}&#xD;		 */&#xD;	    Tone.Buffer.prototype.toArray = function (channel) {&#xD;	        if (this.isNumber(channel)) {&#xD;	            return this._buffer.getChannelData(channel);&#xD;	        } else {&#xD;	            var ret = [];&#xD;	            for (var c = 0; c &lt; this.numberOfChannels; c++) {&#xD;	                ret[c] = new Float32Array(this.length);&#xD;	                if (this.isFunction(this._buffer.copyFromChannel)) {&#xD;	                    this._buffer.copyFromChannel(ret[c], c);&#xD;	                } else {&#xD;	                    var channelData = this._buffer.getChannelData(c);&#xD;	                    var retArray = ret[c];&#xD;	                    for (var i = 0; i &lt; channelData.length; i++) {&#xD;	                        retArray[i] = channelData[i];&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	            if (ret.length === 1) {&#xD;	                return ret[0];&#xD;	            } else {&#xD;	                return ret;&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Cut a subsection of the array and return a buffer of the&#xD;		 *  subsection. Does not modify the original buffer&#xD;		 *  @param {Time} start The time to start the slice&#xD;		 *  @param {Time=} end The end time to slice. If none is given&#xD;		 *                     will default to the end of the buffer&#xD;		 *  @return {Tone.Buffer} this&#xD;		 */&#xD;	    Tone.Buffer.prototype.slice = function (start, end) {&#xD;	        end = this.defaultArg(end, this.duration);&#xD;	        var startSamples = Math.floor(this.context.sampleRate * this.toSeconds(start));&#xD;	        var endSamples = Math.floor(this.context.sampleRate * this.toSeconds(end));&#xD;	        var replacement = [];&#xD;	        for (var i = 0; i &lt; this.numberOfChannels; i++) {&#xD;	            replacement[i] = this.toArray(i).slice(startSamples, endSamples);&#xD;	        }&#xD;	        var retBuffer = new Tone.Buffer().fromArray(replacement);&#xD;	        return retBuffer;&#xD;	    };&#xD;	    /**&#xD;		 *  Reverse the buffer.&#xD;		 *  @private&#xD;		 *  @return {Tone.Buffer} this&#xD;		 */&#xD;	    Tone.Buffer.prototype._reverse = function () {&#xD;	        if (this.loaded) {&#xD;	            for (var i = 0; i &lt; this._buffer.numberOfChannels; i++) {&#xD;	                Array.prototype.reverse.call(this._buffer.getChannelData(i));&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Reverse the buffer.&#xD;		 * @memberOf Tone.Buffer#&#xD;		 * @type {Boolean}&#xD;		 * @name reverse&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffer.prototype, &apos;reverse&apos;, {&#xD;	        get: function () {&#xD;	            return this._reversed;&#xD;	        },&#xD;	        set: function (rev) {&#xD;	            if (this._reversed !== rev) {&#xD;	                this._reversed = rev;&#xD;	                this._reverse();&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // STATIC METHODS&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    //statically inherits Emitter methods&#xD;	    Tone.Emitter.mixin(Tone.Buffer);&#xD;	    /**&#xD;		 *  the static queue for all of the xhr requests&#xD;		 *  @type {Array}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Buffer._downloadQueue = [];&#xD;	    /**&#xD;		 *  the total number of downloads&#xD;		 *  @type {Number}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Buffer._currentDownloads = 0;&#xD;	    /**&#xD;		 *  A path which is prefixed before every url.&#xD;		 *  @type  {String}&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Buffer.baseUrl = &apos;&apos;;&#xD;	    /**&#xD;		 *  Loads a url using XMLHttpRequest.&#xD;		 *  @param {String} url&#xD;		 *  @param {Function} onload&#xD;		 *  @param {Function} onerror&#xD;		 *  @param {Function} onprogress&#xD;		 *  @return {XMLHttpRequest}&#xD;		 */&#xD;	    Tone.Buffer.load = function (url, onload, onerror) {&#xD;	        //default&#xD;	        onload = onload || Tone.noOp;&#xD;	        function onError(e) {&#xD;	            if (onerror) {&#xD;	                onerror(e);&#xD;	            } else {&#xD;	                throw new Error(e);&#xD;	            }&#xD;	        }&#xD;	        function onProgress() {&#xD;	            //calculate the progress&#xD;	            var totalProgress = 0;&#xD;	            for (var i = 0; i &lt; Tone.Buffer._downloadQueue.length; i++) {&#xD;	                totalProgress += Tone.Buffer._downloadQueue[i].progress;&#xD;	            }&#xD;	            Tone.Buffer.emit(&apos;progress&apos;, totalProgress / Tone.Buffer._downloadQueue.length);&#xD;	        }&#xD;	        var request = new XMLHttpRequest();&#xD;	        request.open(&apos;GET&apos;, Tone.Buffer.baseUrl + url, true);&#xD;	        request.responseType = &apos;arraybuffer&apos;;&#xD;	        //start out as 0&#xD;	        request.progress = 0;&#xD;	        Tone.Buffer._currentDownloads++;&#xD;	        Tone.Buffer._downloadQueue.push(request);&#xD;	        request.addEventListener(&apos;load&apos;, function () {&#xD;	            if (request.status === 200) {&#xD;	                Tone.context.decodeAudioData(request.response, function (buff) {&#xD;	                    request.progress = 1;&#xD;	                    onProgress();&#xD;	                    onload(buff);&#xD;	                    Tone.Buffer._currentDownloads--;&#xD;	                    if (Tone.Buffer._currentDownloads === 0) {&#xD;	                        // clear the downloads&#xD;	                        Tone.Buffer._downloadQueue = [];&#xD;	                        //emit the event at the end&#xD;	                        Tone.Buffer.emit(&apos;load&apos;);&#xD;	                    }&#xD;	                }, function () {&#xD;	                    onError(&apos;Tone.Buffer: could not decode audio data: &apos; + url);&#xD;	                });&#xD;	            } else {&#xD;	                onError(&apos;Tone.Buffer: could not locate file: &apos; + url);&#xD;	            }&#xD;	        });&#xD;	        request.addEventListener(&apos;error&apos;, onError);&#xD;	        request.addEventListener(&apos;progress&apos;, function (event) {&#xD;	            if (event.lengthComputable) {&#xD;	                //only go to 95%, the last 5% is when the audio is decoded&#xD;	                request.progress = event.loaded / event.total * 0.95;&#xD;	                onProgress();&#xD;	            }&#xD;	        });&#xD;	        request.send();&#xD;	        return request;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop all of the downloads in progress&#xD;		 *  @return {Tone.Buffer}&#xD;		 */&#xD;	    Tone.Buffer.stopDownloads = function () {&#xD;	        Tone.Buffer._downloadQueue.forEach(function (request) {&#xD;	            request.abort();&#xD;	        });&#xD;	        Tone.Buffer._currentDownloads = 0;&#xD;	        return Tone.Buffer;&#xD;	    };&#xD;	    /**&#xD;		 *  Checks a url&apos;s extension to see if the current browser can play that file type.&#xD;		 *  @param {String} url The url/extension to test&#xD;		 *  @return {Boolean} If the file extension can be played&#xD;		 *  @static&#xD;		 *  @example&#xD;		 * Tone.Buffer.supportsType("wav"); //returns true&#xD;		 * Tone.Buffer.supportsType("path/to/file.wav"); //returns true&#xD;		 */&#xD;	    Tone.Buffer.supportsType = function (url) {&#xD;	        var extension = url.split(&apos;.&apos;);&#xD;	        extension = extension[extension.length - 1];&#xD;	        var response = document.createElement(&apos;audio&apos;).canPlayType(&apos;audio/&apos; + extension);&#xD;	        return response !== &apos;&apos;;&#xD;	    };&#xD;	    return Tone.Buffer;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class A data structure for holding multiple buffers.&#xD;		 *  &#xD;		 *  @param  {Object|Array}    urls      An object literal or array&#xD;		 *                                      of urls to load.&#xD;		 *  @param  {Function=}  callback  The callback to invoke when&#xD;		 *                                 the buffers are loaded. &#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * //load a whole bank of piano samples&#xD;		 * var pianoSamples = new Tone.Buffers({&#xD;		 * 	"C4" : "path/to/C4.mp3"&#xD;		 * 	"C#4" : "path/to/C#4.mp3"&#xD;		 * 	"D4" : "path/to/D4.mp3"&#xD;		 * 	"D#4" : "path/to/D#4.mp3"&#xD;		 * 	...&#xD;		 * }, function(){&#xD;		 * 	//play one of the samples when they all load&#xD;		 * 	player.buffer = pianoSamples.get("C4");&#xD;		 * 	player.start();&#xD;		 * });&#xD;		 * &#xD;		 */&#xD;	    Tone.Buffers = function (urls, onload, baseUrl) {&#xD;	        /**&#xD;			 *  All of the buffers&#xD;			 *  @type  {Object}&#xD;			 *  @private&#xD;			 */&#xD;	        this._buffers = {};&#xD;	        /**&#xD;			 *  A path which is prefixed before every url.&#xD;			 *  @type  {String}&#xD;			 */&#xD;	        this.baseUrl = this.defaultArg(baseUrl, &apos;&apos;);&#xD;	        urls = this._flattenUrls(urls);&#xD;	        this._loadingCount = 0;&#xD;	        //add each one&#xD;	        for (var key in urls) {&#xD;	            this._loadingCount++;&#xD;	            this.add(key, urls[key], this._bufferLoaded.bind(this, onload));&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Buffers);&#xD;	    /**&#xD;		 *  True if the buffers object has a buffer by that name.&#xD;		 *  @param  {String|Number}  name  The key or index of the &#xD;		 *                                 buffer.&#xD;		 *  @return  {Boolean}&#xD;		 */&#xD;	    Tone.Buffers.prototype.has = function (name) {&#xD;	        return this._buffers.hasOwnProperty(name);&#xD;	    };&#xD;	    /**&#xD;		 *  Get a buffer by name. If an array was loaded, &#xD;		 *  then use the array index.&#xD;		 *  @param  {String|Number}  name  The key or index of the &#xD;		 *                                 buffer.&#xD;		 *  @return  {Tone.Buffer}&#xD;		 */&#xD;	    Tone.Buffers.prototype.get = function (name) {&#xD;	        if (this.has(name)) {&#xD;	            return this._buffers[name];&#xD;	        } else {&#xD;	            throw new Error(&apos;Tone.Buffers: no buffer named &apos; + name);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  A buffer was loaded. decrement the counter.&#xD;		 *  @param  {Function}  callback &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Buffers.prototype._bufferLoaded = function (callback) {&#xD;	        this._loadingCount--;&#xD;	        if (this._loadingCount === 0 &amp;&amp; callback) {&#xD;	            callback(this);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * If the buffers are loaded or not&#xD;		 * @memberOf Tone.Buffers#&#xD;		 * @type {Boolean}&#xD;		 * @name loaded&#xD;		 * @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Buffers.prototype, &apos;loaded&apos;, {&#xD;	        get: function () {&#xD;	            var isLoaded = true;&#xD;	            for (var buffName in this._buffers) {&#xD;	                var buff = this.get(buffName);&#xD;	                isLoaded = isLoaded &amp;&amp; buff.loaded;&#xD;	            }&#xD;	            return isLoaded;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Add a buffer by name and url to the Buffers&#xD;		 *  @param  {String}    name      A unique name to give&#xD;		 *                                the buffer&#xD;		 *  @param  {String|Tone.Buffer|Audiobuffer}  url  Either the url of the bufer, &#xD;		 *                                                 or a buffer which will be added&#xD;		 *                                                 with the given name.&#xD;		 *  @param  {Function=}  callback  The callback to invoke &#xD;		 *                                 when the url is loaded.&#xD;		 */&#xD;	    Tone.Buffers.prototype.add = function (name, url, callback) {&#xD;	        callback = this.defaultArg(callback, Tone.noOp);&#xD;	        if (url instanceof Tone.Buffer) {&#xD;	            this._buffers[name] = url;&#xD;	            callback(this);&#xD;	        } else if (url instanceof AudioBuffer) {&#xD;	            this._buffers[name] = new Tone.Buffer(url);&#xD;	            callback(this);&#xD;	        } else if (this.isString(url)) {&#xD;	            this._buffers[name] = new Tone.Buffer(this.baseUrl + url, callback);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Flatten an object into a single depth object. &#xD;		 *  thanks to https://gist.github.com/penguinboy/762197&#xD;		 *  @param   {Object} ob 	&#xD;		 *  @return  {Object}    &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Buffers.prototype._flattenUrls = function (ob) {&#xD;	        var toReturn = {};&#xD;	        for (var i in ob) {&#xD;	            if (!ob.hasOwnProperty(i))&#xD;	                continue;&#xD;	            if (this.isObject(ob[i])) {&#xD;	                var flatObject = this._flattenUrls(ob[i]);&#xD;	                for (var x in flatObject) {&#xD;	                    if (!flatObject.hasOwnProperty(x))&#xD;	                        continue;&#xD;	                    toReturn[i + &apos;.&apos; + x] = flatObject[x];&#xD;	                }&#xD;	            } else {&#xD;	                toReturn[i] = ob[i];&#xD;	            }&#xD;	        }&#xD;	        return toReturn;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.Buffers} this&#xD;		 */&#xD;	    Tone.Buffers.prototype.dispose = function () {&#xD;	        for (var name in this._buffers) {&#xD;	            this._buffers[name].dispose();&#xD;	        }&#xD;	        this._buffers = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Buffers;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  buses are another way of routing audio&#xD;		 *&#xD;		 *  augments Tone.prototype to include send and recieve&#xD;		 */&#xD;	    /**&#xD;		  *  All of the routes&#xD;		  *  &#xD;		  *  @type {Object}&#xD;		  *  @static&#xD;		  *  @private&#xD;		  */&#xD;	    var Buses = {};&#xD;	    /**&#xD;		 *  Send this signal to the channel name. &#xD;		 *  @param  {string} channelName A named channel to send the signal to.&#xD;		 *  @param  {Decibels} amount The amount of the source to send to the bus. &#xD;		 *  @return {GainNode} The gain node which connects this node to the desired channel. &#xD;		 *                     Can be used to adjust the levels of the send.&#xD;		 *  @example&#xD;		 * source.send("reverb", -12);&#xD;		 */&#xD;	    Tone.prototype.send = function (channelName, amount) {&#xD;	        if (!Buses.hasOwnProperty(channelName)) {&#xD;	            Buses[channelName] = this.context.createGain();&#xD;	        }&#xD;	        amount = this.defaultArg(amount, 0);&#xD;	        var sendKnob = new Tone.Gain(amount, Tone.Type.Decibels);&#xD;	        this.output.chain(sendKnob, Buses[channelName]);&#xD;	        return sendKnob;&#xD;	    };&#xD;	    /**&#xD;		 *  Recieve the input from the desired channelName to the input&#xD;		 *&#xD;		 *  @param  {string} channelName A named channel to send the signal to.&#xD;		 *  @param {AudioNode} [input] If no input is selected, the&#xD;		 *                                         input of the current node is&#xD;		 *                                         chosen. &#xD;		 *  @returns {Tone} this&#xD;		 *  @example&#xD;		 * reverbEffect.receive("reverb");&#xD;		 */&#xD;	    Tone.prototype.receive = function (channelName, input) {&#xD;	        if (!Buses.hasOwnProperty(channelName)) {&#xD;	            Buses[channelName] = this.context.createGain();&#xD;	        }&#xD;	        if (this.isUndef(input)) {&#xD;	            input = this.input;&#xD;	        }&#xD;	        Buses[channelName].connect(input);&#xD;	        return this;&#xD;	    };&#xD;	    //remove all the send/receives when a new audio context is passed in&#xD;	    Tone._initAudioContext(function () {&#xD;	        Buses = {};&#xD;	    });&#xD;	    return Tone;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Draw is useful for synchronizing visuals and audio events.&#xD;		 *         Callbacks from Tone.Transport or any of the Tone.Event classes&#xD;		 *         always happen _before_ the scheduled time and are not synchronized&#xD;		 *         to the animation frame so they are not good for triggering tightly&#xD;		 *         synchronized visuals and sound. Tone.Draw makes it easy to schedule&#xD;		 *         callbacks using the AudioContext time and uses requestAnimationFrame.&#xD;		 *         &#xD;		 *  @singleton&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * Tone.Transport.schedule(function(time){&#xD;		 * 	//use the time argument to schedule a callback with Tone.Draw&#xD;		 * 	Tone.Draw.schedule(function(){&#xD;		 * 		//do drawing or DOM manipulation here&#xD;		 * 	}, time)&#xD;		 * }, "+0.5")&#xD;		 */&#xD;	    Tone.Draw = function () {&#xD;	        /**&#xD;			 *  All of the events.&#xD;			 *  @type  {Tone.Timeline}&#xD;			 *  @private&#xD;			 */&#xD;	        this._events = new Tone.Timeline();&#xD;	        /**&#xD;			 *  The duration after which events are not invoked.&#xD;			 *  @type  {Number}&#xD;			 *  @default 0.25&#xD;			 */&#xD;	        this.expiration = 0.25;&#xD;	        /**&#xD;			 *  The amount of time before the scheduled time &#xD;			 *  that the callback can be invoked. Default is&#xD;			 *  half the time of an animation frame (0.008 seconds).&#xD;			 *  @type  {Number}&#xD;			 *  @default 0.008&#xD;			 */&#xD;	        this.anticipation = 0.008;&#xD;	        /**&#xD;			 *  The draw loop&#xD;			 *  @type  {Function}&#xD;			 *  @private&#xD;			 */&#xD;	        this._boundDrawLoop = this._drawLoop.bind(this);&#xD;	        //start the loop&#xD;	        this._drawLoop();&#xD;	    };&#xD;	    Tone.extend(Tone.Draw);&#xD;	    /**&#xD;		 *  Schedule a function at the given time to be invoked&#xD;		 *  on the nearest animation frame.&#xD;		 *  @param  {Function}  callback  Callback is invoked at the given time.&#xD;		 *  @param  {Time}    time      The time relative to the AudioContext time&#xD;		 *                              to invoke the callback.&#xD;		 *  @return  {Tone.Draw}    this&#xD;		 */&#xD;	    Tone.Draw.prototype.schedule = function (callback, time) {&#xD;	        this._events.add({&#xD;	            callback: callback,&#xD;	            time: this.toSeconds(time)&#xD;	        });&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel events scheduled after the given time&#xD;		 *  @param  {Time=}  after  Time after which scheduled events will &#xD;		 *                          be removed from the scheduling timeline.&#xD;		 *  @return  {Tone.Draw}  this&#xD;		 */&#xD;	    Tone.Draw.prototype.cancel = function (after) {&#xD;	        this._events.cancel(this.toSeconds(after));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The draw loop&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Draw.prototype._drawLoop = function () {&#xD;	        requestAnimationFrame(this._boundDrawLoop);&#xD;	        var now = Tone.now();&#xD;	        while (this._events.length &amp;&amp; this._events.peek().time - this.anticipation &lt;= now) {&#xD;	            var event = this._events.shift();&#xD;	            if (now - event.time &lt;= this.expiration) {&#xD;	                event.callback();&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    //make a singleton&#xD;	    Tone.Draw = new Tone.Draw();&#xD;	    return Tone.Draw;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Both Tone.Panner3D and Tone.Listener have a position in 3D space &#xD;		 *          using a right-handed cartesian coordinate system. &#xD;		 *          The units used in the coordinate system are not defined; &#xD;		 *          these coordinates are independent/invariant of any particular &#xD;		 *          units such as meters or feet. Tone.Panner3D objects have an forward &#xD;		 *          vector representing the direction the sound is projecting. Additionally, &#xD;		 *          they have a sound cone representing how directional the sound is. &#xD;		 *          For example, the sound could be omnidirectional, in which case it would &#xD;		 *          be heard anywhere regardless of its forward, or it can be more directional &#xD;		 *          and heard only if it is facing the listener. Tone.Listener objects &#xD;		 *          (representing a person&apos;s ears) have an forward and up vector &#xD;		 *          representing in which direction the person is facing. Because both the &#xD;		 *          source stream and the listener can be moving, they both have a velocity &#xD;		 *          vector representing both the speed and direction of movement. Taken together, &#xD;		 *          these two velocities can be used to generate a doppler shift effect which changes the pitch.&#xD;		 *          &lt;br&gt;&lt;br&gt;&#xD;		 *          Note: the position of the Listener will have no effect on nodes not connected to a Tone.Panner3D&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @singleton&#xD;		 *  @param {Number} positionX The initial x position.&#xD;		 *  @param {Number} positionY The initial y position.&#xD;		 *  @param {Number} positionZ The initial z position.&#xD;		 */&#xD;	    Tone.Listener = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;positionX&apos;,&#xD;	            &apos;positionY&apos;,&#xD;	            &apos;positionZ&apos;&#xD;	        ], ListenerConstructor.defaults);&#xD;	        /**&#xD;			 *  The listener node&#xD;			 *  @type {AudioListener}&#xD;			 *  @private&#xD;			 */&#xD;	        this._listener = this.context.listener;&#xD;	        /**&#xD;			 *  Holds the current forward orientation&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._orientation = [&#xD;	            options.forwardX,&#xD;	            options.forwardY,&#xD;	            options.forwardZ,&#xD;	            options.upX,&#xD;	            options.upY,&#xD;	            options.upZ&#xD;	        ];&#xD;	        /**&#xD;			 *  Holds the current position&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._position = [&#xD;	            options.positionX,&#xD;	            options.positionY,&#xD;	            options.positionZ&#xD;	        ];&#xD;	        // set the default position/forward&#xD;	        this.forwardX = options.forwardX;&#xD;	        this.forwardY = options.forwardY;&#xD;	        this.forwardZ = options.forwardZ;&#xD;	        this.upX = options.upX;&#xD;	        this.upY = options.upY;&#xD;	        this.upZ = options.upZ;&#xD;	        this.positionX = options.positionX;&#xD;	        this.positionY = options.positionY;&#xD;	        this.positionZ = options.positionZ;&#xD;	    };&#xD;	    Tone.extend(Tone.Listener);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 *  Defaults according to the specification&#xD;		 */&#xD;	    Tone.Listener.defaults = {&#xD;	        &apos;positionX&apos;: 0,&#xD;	        &apos;positionY&apos;: 0,&#xD;	        &apos;positionZ&apos;: 0,&#xD;	        &apos;forwardX&apos;: 0,&#xD;	        &apos;forwardY&apos;: 0,&#xD;	        &apos;forwardZ&apos;: 1,&#xD;	        &apos;upX&apos;: 0,&#xD;	        &apos;upY&apos;: 1,&#xD;	        &apos;upZ&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 * The ramp time which is applied to the setTargetAtTime&#xD;		 * @type {Number}&#xD;		 * @private&#xD;		 */&#xD;	    Tone.Listener.prototype._rampTimeConstant = 0.01;&#xD;	    /**&#xD;		 *  Sets the position of the listener in 3d space.	&#xD;		 *  @param  {Number}  x&#xD;		 *  @param  {Number}  y&#xD;		 *  @param  {Number}  z&#xD;		 *  @return {Tone.Listener} this&#xD;		 */&#xD;	    Tone.Listener.prototype.setPosition = function (x, y, z) {&#xD;	        if (this._listener.positionX) {&#xD;	            var now = this.now();&#xD;	            this._listener.positionX.setTargetAtTime(x, now, this._rampTimeConstant);&#xD;	            this._listener.positionY.setTargetAtTime(y, now, this._rampTimeConstant);&#xD;	            this._listener.positionZ.setTargetAtTime(z, now, this._rampTimeConstant);&#xD;	        } else {&#xD;	            this._listener.setPosition(x, y, z);&#xD;	        }&#xD;	        this._position = Array.prototype.slice.call(arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Sets the orientation of the listener using two vectors, the forward&#xD;		 *  vector (which direction the listener is facing) and the up vector &#xD;		 *  (which the up direction of the listener). An up vector&#xD;		 *  of 0, 0, 1 is equivalent to the listener standing up in the Z direction. &#xD;		 *  @param  {Number}  x&#xD;		 *  @param  {Number}  y&#xD;		 *  @param  {Number}  z&#xD;		 *  @param  {Number}  upX&#xD;		 *  @param  {Number}  upY&#xD;		 *  @param  {Number}  upZ&#xD;		 *  @return {Tone.Listener} this&#xD;		 */&#xD;	    Tone.Listener.prototype.setOrientation = function (x, y, z, upX, upY, upZ) {&#xD;	        if (this._listener.forwardX) {&#xD;	            var now = this.now();&#xD;	            this._listener.forwardX.setTargetAtTime(x, now, this._rampTimeConstant);&#xD;	            this._listener.forwardY.setTargetAtTime(y, now, this._rampTimeConstant);&#xD;	            this._listener.forwardZ.setTargetAtTime(z, now, this._rampTimeConstant);&#xD;	            this._listener.upX.setTargetAtTime(upX, now, this._rampTimeConstant);&#xD;	            this._listener.upY.setTargetAtTime(upY, now, this._rampTimeConstant);&#xD;	            this._listener.upZ.setTargetAtTime(upZ, now, this._rampTimeConstant);&#xD;	        } else {&#xD;	            this._listener.setOrientation(x, y, z, upX, upY, upZ);&#xD;	        }&#xD;	        this._orientation = Array.prototype.slice.call(arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The x position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name positionX&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;positionX&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[0] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[0];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The y position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name positionY&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;positionY&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[1] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[1];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The z position of the panner object.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name positionZ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;positionZ&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._position[2] = pos;&#xD;	            this.setPosition.apply(this, this._position);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._position[2];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The x coordinate of the listeners front direction. i.e. &#xD;		 *  which way they are facing.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name forwardX&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;forwardX&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[0] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[0];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The y coordinate of the listeners front direction. i.e. &#xD;		 *  which way they are facing.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name forwardY&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;forwardY&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[1] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[1];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The z coordinate of the listeners front direction. i.e. &#xD;		 *  which way they are facing.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name forwardZ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;forwardZ&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[2] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[2];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The x coordinate of the listener&apos;s up direction. i.e.&#xD;		 *  the direction the listener is standing in.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name upX&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;upX&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[3] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[3];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The y coordinate of the listener&apos;s up direction. i.e.&#xD;		 *  the direction the listener is standing in.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name upY&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;upY&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[4] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[4];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The z coordinate of the listener&apos;s up direction. i.e.&#xD;		 *  the direction the listener is standing in.&#xD;		 *  @type {Number}&#xD;		 *  @memberOf Tone.Listener#&#xD;		 *  @name upZ&#xD;		 */&#xD;	    Object.defineProperty(Tone.Listener.prototype, &apos;upZ&apos;, {&#xD;	        set: function (pos) {&#xD;	            this._orientation[5] = pos;&#xD;	            this.setOrientation.apply(this, this._orientation);&#xD;	        },&#xD;	        get: function () {&#xD;	            return this._orientation[5];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Listener} this&#xD;		 */&#xD;	    Tone.Listener.prototype.dispose = function () {&#xD;	        this._listener.disconnect();&#xD;	        this._listener = null;&#xD;	        this._orientation = null;&#xD;	        this._position = null;&#xD;	        return this;&#xD;	    };&#xD;	    //SINGLETON SETUP&#xD;	    var ListenerConstructor = Tone.Listener;&#xD;	    Tone._initAudioContext(function () {&#xD;	        if (typeof Tone.Listener === &apos;function&apos;) {&#xD;	            //a single listener object&#xD;	            Tone.Listener = new Tone.Listener();&#xD;	        } else {&#xD;	            //make new Listener insides&#xD;	            ListenerConstructor.call(Tone.Listener);&#xD;	        }&#xD;	    });&#xD;	    //END SINGLETON SETUP&#xD;	    return Tone.Listener;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 * 	@class  Tone.Effect is the base class for effects. Connect the effect between&#xD;		 * 	        the effectSend and effectReturn GainNodes, then control the amount of&#xD;		 * 	        effect which goes to the output using the wet control.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {NormalRange|Object} [wet] The starting wet value. &#xD;		 */&#xD;	    Tone.Effect = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        //get all of the defaults&#xD;	        var options = this.optionsObject(arguments, [&apos;wet&apos;], Tone.Effect.defaults);&#xD;	        /**&#xD;			 *  the drywet knob to control the amount of effect&#xD;			 *  @type {Tone.CrossFade}&#xD;			 *  @private&#xD;			 */&#xD;	        this._dryWet = new Tone.CrossFade(options.wet);&#xD;	        /**&#xD;			 *  The wet control is how much of the effected&#xD;			 *  will pass through to the output. 1 = 100% effected&#xD;			 *  signal, 0 = 100% dry signal. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.wet = this._dryWet.fade;&#xD;	        /**&#xD;			 *  connect the effectSend to the input of hte effect&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectSend = new Tone.Gain();&#xD;	        /**&#xD;			 *  connect the output of the effect to the effectReturn&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectReturn = new Tone.Gain();&#xD;	        //connections&#xD;	        this.input.connect(this._dryWet.a);&#xD;	        this.input.connect(this.effectSend);&#xD;	        this.effectReturn.connect(this._dryWet.b);&#xD;	        this._dryWet.connect(this.output);&#xD;	        this._readOnly([&apos;wet&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Effect.defaults = { &apos;wet&apos;: 1 };&#xD;	    /**&#xD;		 *  chains the effect in between the effectSend and effectReturn&#xD;		 *  @param  {Tone} effect&#xD;		 *  @private&#xD;		 *  @returns {Tone.Effect} this&#xD;		 */&#xD;	    Tone.Effect.prototype.connectEffect = function (effect) {&#xD;	        this.effectSend.chain(effect, this.effectReturn);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Effect} this&#xD;		 */&#xD;	    Tone.Effect.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._dryWet.dispose();&#xD;	        this._dryWet = null;&#xD;	        this.effectSend.dispose();&#xD;	        this.effectSend = null;&#xD;	        this.effectReturn.dispose();&#xD;	        this.effectReturn = null;&#xD;	        this._writable([&apos;wet&apos;]);&#xD;	        this.wet = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Effect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.AutoFilter is a Tone.Filter with a Tone.LFO connected to the filter cutoff frequency.&#xD;		 *         Setting the LFO rate and depth allows for control over the filter modulation rate &#xD;		 *         and depth.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {Time|Object} [frequency] The rate of the LFO.&#xD;		 *  @param {Frequency=} baseFrequency The lower value of the LFOs oscillation&#xD;	 	 *  @param {Frequency=} octaves The number of octaves above the baseFrequency&#xD;		 *  @example&#xD;		 * //create an autofilter and start it&apos;s LFO&#xD;		 * var autoFilter = new Tone.AutoFilter("4n").toMaster().start();&#xD;		 * //route an oscillator through the filter and start it&#xD;		 * var oscillator = new Tone.Oscillator().connect(autoFilter).start();&#xD;		 */&#xD;	    Tone.AutoFilter = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;baseFrequency&apos;,&#xD;	            &apos;octaves&apos;&#xD;	        ], Tone.AutoFilter.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  the lfo which drives the filter cutoff&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfo = new Tone.LFO({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;amplitude&apos;: options.depth&#xD;	        });&#xD;	        /**&#xD;			 * The range of the filter modulating between the min and max frequency. &#xD;			 * 0 = no modulation. 1 = full modulation.&#xD;			 * @type {NormalRange}&#xD;			 * @signal&#xD;			 */&#xD;	        this.depth = this._lfo.amplitude;&#xD;	        /**&#xD;			 * How fast the filter modulates between min and max. &#xD;			 * @type {Frequency}&#xD;			 * @signal&#xD;			 */&#xD;	        this.frequency = this._lfo.frequency;&#xD;	        /**&#xD;			 *  The filter node&#xD;			 *  @type {Tone.Filter}&#xD;			 */&#xD;	        this.filter = new Tone.Filter(options.filter);&#xD;	        /**&#xD;			 *  The octaves placeholder&#xD;			 *  @type {Positive}&#xD;			 *  @private&#xD;			 */&#xD;	        this._octaves = 0;&#xD;	        //connections&#xD;	        this.connectEffect(this.filter);&#xD;	        this._lfo.connect(this.filter.frequency);&#xD;	        this.type = options.type;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this.octaves = options.octaves;&#xD;	        this.baseFrequency = options.baseFrequency;&#xD;	    };&#xD;	    //extend Effect&#xD;	    Tone.extend(Tone.AutoFilter, Tone.Effect);&#xD;	    /**&#xD;		 *  defaults&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.AutoFilter.defaults = {&#xD;	        &apos;frequency&apos;: 1,&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;depth&apos;: 1,&#xD;	        &apos;baseFrequency&apos;: 200,&#xD;	        &apos;octaves&apos;: 2.6,&#xD;	        &apos;filter&apos;: {&#xD;	            &apos;type&apos;: &apos;lowpass&apos;,&#xD;	            &apos;rolloff&apos;: -12,&#xD;	            &apos;Q&apos;: 1&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * Start the effect.&#xD;		 * @param {Time} [time=now] When the LFO will start. &#xD;		 * @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.AutoFilter.prototype.start = function (time) {&#xD;	        this._lfo.start(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Stop the effect.&#xD;		 * @param {Time} [time=now] When the LFO will stop. &#xD;		 * @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.AutoFilter.prototype.stop = function (time) {&#xD;	        this._lfo.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Sync the filter to the transport.&#xD;		 * @param {Time} [delay=0] Delay time before starting the effect after the&#xD;		 *                               Transport has started. &#xD;		 * @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.AutoFilter.prototype.sync = function (delay) {&#xD;	        this._lfo.sync(delay);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Unsync the filter from the transport.&#xD;		 * @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.AutoFilter.prototype.unsync = function () {&#xD;	        this._lfo.unsync();&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Type of oscillator attached to the AutoFilter. &#xD;		 * Possible values: "sine", "square", "triangle", "sawtooth".&#xD;		 * @memberOf Tone.AutoFilter#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoFilter.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfo.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._lfo.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The minimum value of the filter&apos;s cutoff frequency.&#xD;		 * @memberOf Tone.AutoFilter#&#xD;		 * @type {Frequency}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoFilter.prototype, &apos;baseFrequency&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfo.min;&#xD;	        },&#xD;	        set: function (freq) {&#xD;	            this._lfo.min = this.toFrequency(freq);&#xD;	            //and set the max&#xD;	            this.octaves = this._octaves;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The maximum value of the filter&apos;s cutoff frequency. &#xD;		 * @memberOf Tone.AutoFilter#&#xD;		 * @type {Positive}&#xD;		 * @name octaves&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoFilter.prototype, &apos;octaves&apos;, {&#xD;	        get: function () {&#xD;	            return this._octaves;&#xD;	        },&#xD;	        set: function (oct) {&#xD;	            this._octaves = oct;&#xD;	            this._lfo.max = this.baseFrequency * Math.pow(2, oct);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.AutoFilter.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._lfo.dispose();&#xD;	        this._lfo = null;&#xD;	        this.filter.dispose();&#xD;	        this.filter = null;&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this.frequency = null;&#xD;	        this.depth = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AutoFilter;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.AutoPanner is a Tone.Panner with an LFO connected to the pan amount. &#xD;		 *         More on using autopanners [here](https://www.ableton.com/en/blog/autopan-chopper-effect-and-more-liveschool/).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {Frequency|Object} [frequency] Rate of left-right oscillation. &#xD;		 *  @example&#xD;		 * //create an autopanner and start it&apos;s LFO&#xD;		 * var autoPanner = new Tone.AutoPanner("4n").toMaster().start();&#xD;		 * //route an oscillator through the panner and start it&#xD;		 * var oscillator = new Tone.Oscillator().connect(autoPanner).start();&#xD;		 */&#xD;	    Tone.AutoPanner = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;frequency&apos;], Tone.AutoPanner.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  the lfo which drives the panning&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfo = new Tone.LFO({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;amplitude&apos;: options.depth,&#xD;	            &apos;min&apos;: -1,&#xD;	            &apos;max&apos;: 1&#xD;	        });&#xD;	        /**&#xD;			 * The amount of panning between left and right. &#xD;			 * 0 = always center. 1 = full range between left and right. &#xD;			 * @type {NormalRange}&#xD;			 * @signal&#xD;			 */&#xD;	        this.depth = this._lfo.amplitude;&#xD;	        /**&#xD;			 *  the panner node which does the panning&#xD;			 *  @type {Tone.Panner}&#xD;			 *  @private&#xD;			 */&#xD;	        this._panner = new Tone.Panner();&#xD;	        /**&#xD;			 * How fast the panner modulates between left and right. &#xD;			 * @type {Frequency}&#xD;			 * @signal&#xD;			 */&#xD;	        this.frequency = this._lfo.frequency;&#xD;	        //connections&#xD;	        this.connectEffect(this._panner);&#xD;	        this._lfo.connect(this._panner.pan);&#xD;	        this.type = options.type;&#xD;	        this._readOnly([&#xD;	            &apos;depth&apos;,&#xD;	            &apos;frequency&apos;&#xD;	        ]);&#xD;	    };&#xD;	    //extend Effect&#xD;	    Tone.extend(Tone.AutoPanner, Tone.Effect);&#xD;	    /**&#xD;		 *  defaults&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.AutoPanner.defaults = {&#xD;	        &apos;frequency&apos;: 1,&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;depth&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 * Start the effect.&#xD;		 * @param {Time} [time=now] When the LFO will start. &#xD;		 * @returns {Tone.AutoPanner} this&#xD;		 */&#xD;	    Tone.AutoPanner.prototype.start = function (time) {&#xD;	        this._lfo.start(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Stop the effect.&#xD;		 * @param {Time} [time=now] When the LFO will stop. &#xD;		 * @returns {Tone.AutoPanner} this&#xD;		 */&#xD;	    Tone.AutoPanner.prototype.stop = function (time) {&#xD;	        this._lfo.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Sync the panner to the transport.&#xD;		 * @param {Time} [delay=0] Delay time before starting the effect after the&#xD;		 *                               Transport has started. &#xD;		 * @returns {Tone.AutoPanner} this&#xD;		 */&#xD;	    Tone.AutoPanner.prototype.sync = function (delay) {&#xD;	        this._lfo.sync(delay);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Unsync the panner from the transport&#xD;		 * @returns {Tone.AutoPanner} this&#xD;		 */&#xD;	    Tone.AutoPanner.prototype.unsync = function () {&#xD;	        this._lfo.unsync();&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Type of oscillator attached to the AutoFilter. &#xD;		 * Possible values: "sine", "square", "triangle", "sawtooth".&#xD;		 * @memberOf Tone.AutoFilter#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoPanner.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfo.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._lfo.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.AutoPanner} this&#xD;		 */&#xD;	    Tone.AutoPanner.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._lfo.dispose();&#xD;	        this._lfo = null;&#xD;	        this._panner.dispose();&#xD;	        this._panner = null;&#xD;	        this._writable([&#xD;	            &apos;depth&apos;,&#xD;	            &apos;frequency&apos;&#xD;	        ]);&#xD;	        this.frequency = null;&#xD;	        this.depth = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AutoPanner;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.AutoWah connects a Tone.Follower to a bandpass filter (Tone.Filter).&#xD;		 *          The frequency of the filter is adjusted proportionally to the &#xD;		 *          incoming signal&apos;s amplitude. Inspiration from [Tuna.js](https://github.com/Dinahmoe/tuna).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {Frequency|Object} [baseFrequency] The frequency the filter is set &#xD;		 *                                            to at the low point of the wah&#xD;		 *  @param {Positive} [octaves] The number of octaves above the baseFrequency&#xD;		 *                                the filter will sweep to when fully open&#xD;		 *  @param {Decibels} [sensitivity] The decibel threshold sensitivity for &#xD;		 *                                   the incoming signal. Normal range of -40 to 0. &#xD;		 *  @example&#xD;		 * var autoWah = new Tone.AutoWah(50, 6, -30).toMaster();&#xD;		 * //initialize the synth and connect to autowah&#xD;		 * var synth = new Synth.connect(autoWah);&#xD;		 * //Q value influences the effect of the wah - default is 2&#xD;		 * autoWah.Q.value = 6;&#xD;		 * //more audible on higher notes&#xD;		 * synth.triggerAttackRelease("C4", "8n")&#xD;		 */&#xD;	    Tone.AutoWah = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;baseFrequency&apos;,&#xD;	            &apos;octaves&apos;,&#xD;	            &apos;sensitivity&apos;&#xD;	        ], Tone.AutoWah.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  The envelope follower. Set the attack/release&#xD;			 *  timing to adjust how the envelope is followed. &#xD;			 *  @type {Tone.Follower}&#xD;			 *  @private&#xD;			 */&#xD;	        this.follower = new Tone.Follower(options.follower);&#xD;	        /**&#xD;			 *  scales the follower value to the frequency domain&#xD;			 *  @type {Tone}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sweepRange = new Tone.ScaleExp(0, 1, 0.5);&#xD;	        /**&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._baseFrequency = options.baseFrequency;&#xD;	        /**&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._octaves = options.octaves;&#xD;	        /**&#xD;			 *  the input gain to adjust the sensitivity&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._inputBoost = new Tone.Gain();&#xD;	        /**&#xD;			 *  @type {BiquadFilterNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._bandpass = new Tone.Filter({&#xD;	            &apos;rolloff&apos;: -48,&#xD;	            &apos;frequency&apos;: 0,&#xD;	            &apos;Q&apos;: options.Q&#xD;	        });&#xD;	        /**&#xD;			 *  @type {Tone.Filter}&#xD;			 *  @private&#xD;			 */&#xD;	        this._peaking = new Tone.Filter(0, &apos;peaking&apos;);&#xD;	        this._peaking.gain.value = options.gain;&#xD;	        /**&#xD;			 * The gain of the filter.&#xD;			 * @type {Number}&#xD;			 * @signal&#xD;			 */&#xD;	        this.gain = this._peaking.gain;&#xD;	        /**&#xD;			 * The quality of the filter.&#xD;			 * @type {Positive}&#xD;			 * @signal&#xD;			 */&#xD;	        this.Q = this._bandpass.Q;&#xD;	        //the control signal path&#xD;	        this.effectSend.chain(this._inputBoost, this.follower, this._sweepRange);&#xD;	        this._sweepRange.connect(this._bandpass.frequency);&#xD;	        this._sweepRange.connect(this._peaking.frequency);&#xD;	        //the filtered path&#xD;	        this.effectSend.chain(this._bandpass, this._peaking, this.effectReturn);&#xD;	        //set the initial value&#xD;	        this._setSweepRange();&#xD;	        this.sensitivity = options.sensitivity;&#xD;	        this._readOnly([&#xD;	            &apos;gain&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.AutoWah, Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.AutoWah.defaults = {&#xD;	        &apos;baseFrequency&apos;: 100,&#xD;	        &apos;octaves&apos;: 6,&#xD;	        &apos;sensitivity&apos;: 0,&#xD;	        &apos;Q&apos;: 2,&#xD;	        &apos;gain&apos;: 2,&#xD;	        &apos;follower&apos;: {&#xD;	            &apos;attack&apos;: 0.3,&#xD;	            &apos;release&apos;: 0.5&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * The number of octaves that the filter will sweep above the &#xD;		 * baseFrequency. &#xD;		 * @memberOf Tone.AutoWah#&#xD;		 * @type {Number}&#xD;		 * @name octaves&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoWah.prototype, &apos;octaves&apos;, {&#xD;	        get: function () {&#xD;	            return this._octaves;&#xD;	        },&#xD;	        set: function (octaves) {&#xD;	            this._octaves = octaves;&#xD;	            this._setSweepRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The base frequency from which the sweep will start from.&#xD;		 * @memberOf Tone.AutoWah#&#xD;		 * @type {Frequency}&#xD;		 * @name baseFrequency&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoWah.prototype, &apos;baseFrequency&apos;, {&#xD;	        get: function () {&#xD;	            return this._baseFrequency;&#xD;	        },&#xD;	        set: function (baseFreq) {&#xD;	            this._baseFrequency = baseFreq;&#xD;	            this._setSweepRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The sensitivity to control how responsive to the input signal the filter is. &#xD;		 * @memberOf Tone.AutoWah#&#xD;		 * @type {Decibels}&#xD;		 * @name sensitivity&#xD;		 */&#xD;	    Object.defineProperty(Tone.AutoWah.prototype, &apos;sensitivity&apos;, {&#xD;	        get: function () {&#xD;	            return this.gainToDb(1 / this._inputBoost.gain.value);&#xD;	        },&#xD;	        set: function (sensitivy) {&#xD;	            this._inputBoost.gain.value = 1 / this.dbToGain(sensitivy);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  sets the sweep range of the scaler&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.AutoWah.prototype._setSweepRange = function () {&#xD;	        this._sweepRange.min = this._baseFrequency;&#xD;	        this._sweepRange.max = Math.min(this._baseFrequency * Math.pow(2, this._octaves), this.context.sampleRate / 2);&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.AutoWah} this&#xD;		 */&#xD;	    Tone.AutoWah.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this.follower.dispose();&#xD;	        this.follower = null;&#xD;	        this._sweepRange.dispose();&#xD;	        this._sweepRange = null;&#xD;	        this._bandpass.dispose();&#xD;	        this._bandpass = null;&#xD;	        this._peaking.dispose();&#xD;	        this._peaking = null;&#xD;	        this._inputBoost.dispose();&#xD;	        this._inputBoost = null;&#xD;	        this._writable([&#xD;	            &apos;gain&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	        this.gain = null;&#xD;	        this.Q = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AutoWah;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Bitcrusher downsamples the incoming signal to a different bitdepth. &#xD;		 *         Lowering the bitdepth of the signal creates distortion. Read more about Bitcrushing&#xD;		 *         on [Wikipedia](https://en.wikipedia.org/wiki/Bitcrusher).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {Number} bits The number of bits to downsample the signal. Nominal range&#xD;		 *                       of 1 to 8. &#xD;		 *  @example&#xD;		 * //initialize crusher and route a synth through it&#xD;		 * var crusher = new Tone.BitCrusher(4).toMaster();&#xD;		 * var synth = new Tone.MonoSynth().connect(crusher);&#xD;		 */&#xD;	    Tone.BitCrusher = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;bits&apos;], Tone.BitCrusher.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        var invStepSize = 1 / Math.pow(2, options.bits - 1);&#xD;	        /**&#xD;			 *  Subtract the input signal and the modulus of the input signal&#xD;			 *  @type {Tone.Subtract}&#xD;			 *  @private&#xD;			 */&#xD;	        this._subtract = new Tone.Subtract();&#xD;	        /**&#xD;			 *  The mod function&#xD;			 *  @type  {Tone.Modulo}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulo = new Tone.Modulo(invStepSize);&#xD;	        /**&#xD;			 *  keeps track of the bits&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._bits = options.bits;&#xD;	        //connect it up&#xD;	        this.effectSend.fan(this._subtract, this._modulo);&#xD;	        this._modulo.connect(this._subtract, 0, 1);&#xD;	        this._subtract.connect(this.effectReturn);&#xD;	    };&#xD;	    Tone.extend(Tone.BitCrusher, Tone.Effect);&#xD;	    /**&#xD;		 *  the default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.BitCrusher.defaults = { &apos;bits&apos;: 4 };&#xD;	    /**&#xD;		 * The bit depth of the effect. Nominal range of 1-8. &#xD;		 * @memberOf Tone.BitCrusher#&#xD;		 * @type {number}&#xD;		 * @name bits&#xD;		 */&#xD;	    Object.defineProperty(Tone.BitCrusher.prototype, &apos;bits&apos;, {&#xD;	        get: function () {&#xD;	            return this._bits;&#xD;	        },&#xD;	        set: function (bits) {&#xD;	            this._bits = bits;&#xD;	            var invStepSize = 1 / Math.pow(2, bits - 1);&#xD;	            this._modulo.value = invStepSize;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.BitCrusher} this&#xD;		 */&#xD;	    Tone.BitCrusher.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._subtract.dispose();&#xD;	        this._subtract = null;&#xD;	        this._modulo.dispose();&#xD;	        this._modulo = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.BitCrusher;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.ChebyShev is a Chebyshev waveshaper, an effect which is good &#xD;		 *         for making different types of distortion sounds.&#xD;		 *         Note that odd orders sound very different from even ones, &#xD;		 *         and order = 1 is no change. &#xD;		 *         Read more at [music.columbia.edu](http://music.columbia.edu/cmc/musicandcomputers/chapter4/04_06.php).&#xD;		 *&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @constructor&#xD;		 *  @param {Positive|Object} [order] The order of the chebyshev polynomial. Normal range between 1-100. &#xD;		 *  @example&#xD;		 * //create a new cheby&#xD;		 * var cheby = new Tone.Chebyshev(50);&#xD;		 * //create a monosynth connected to our cheby&#xD;		 * synth = new Tone.MonoSynth().connect(cheby);&#xD;		 */&#xD;	    Tone.Chebyshev = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;order&apos;], Tone.Chebyshev.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._shaper = new Tone.WaveShaper(4096);&#xD;	        /**&#xD;			 * holds onto the order of the filter&#xD;			 * @type {number}&#xD;			 * @private&#xD;			 */&#xD;	        this._order = options.order;&#xD;	        this.connectEffect(this._shaper);&#xD;	        this.order = options.order;&#xD;	        this.oversample = options.oversample;&#xD;	    };&#xD;	    Tone.extend(Tone.Chebyshev, Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Chebyshev.defaults = {&#xD;	        &apos;order&apos;: 1,&#xD;	        &apos;oversample&apos;: &apos;none&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  get the coefficient for that degree&#xD;		 *  @param {number} x the x value&#xD;		 *  @param   {number} degree &#xD;		 *  @param {Object} memo memoize the computed value. &#xD;		 *                       this speeds up computation greatly. &#xD;		 *  @return  {number}       the coefficient &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Chebyshev.prototype._getCoefficient = function (x, degree, memo) {&#xD;	        if (memo.hasOwnProperty(degree)) {&#xD;	            return memo[degree];&#xD;	        } else if (degree === 0) {&#xD;	            memo[degree] = 0;&#xD;	        } else if (degree === 1) {&#xD;	            memo[degree] = x;&#xD;	        } else {&#xD;	            memo[degree] = 2 * x * this._getCoefficient(x, degree - 1, memo) - this._getCoefficient(x, degree - 2, memo);&#xD;	        }&#xD;	        return memo[degree];&#xD;	    };&#xD;	    /**&#xD;		 * The order of the Chebyshev polynomial which creates&#xD;		 * the equation which is applied to the incoming &#xD;		 * signal through a Tone.WaveShaper. The equations&#xD;		 * are in the form:&lt;br&gt;&#xD;		 * order 2: 2x^2 + 1&lt;br&gt;&#xD;		 * order 3: 4x^3 + 3x &lt;br&gt;&#xD;		 * @memberOf Tone.Chebyshev#&#xD;		 * @type {Positive}&#xD;		 * @name order&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chebyshev.prototype, &apos;order&apos;, {&#xD;	        get: function () {&#xD;	            return this._order;&#xD;	        },&#xD;	        set: function (order) {&#xD;	            this._order = order;&#xD;	            var curve = new Array(4096);&#xD;	            var len = curve.length;&#xD;	            for (var i = 0; i &lt; len; ++i) {&#xD;	                var x = i * 2 / len - 1;&#xD;	                if (x === 0) {&#xD;	                    //should output 0 when input is 0&#xD;	                    curve[i] = 0;&#xD;	                } else {&#xD;	                    curve[i] = this._getCoefficient(x, order, {});&#xD;	                }&#xD;	            }&#xD;	            this._shaper.curve = curve;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The oversampling of the effect. Can either be "none", "2x" or "4x".&#xD;		 * @memberOf Tone.Chebyshev#&#xD;		 * @type {string}&#xD;		 * @name oversample&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chebyshev.prototype, &apos;oversample&apos;, {&#xD;	        get: function () {&#xD;	            return this._shaper.oversample;&#xD;	        },&#xD;	        set: function (oversampling) {&#xD;	            this._shaper.oversample = oversampling;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Chebyshev} this&#xD;		 */&#xD;	    Tone.Chebyshev.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._shaper.dispose();&#xD;	        this._shaper = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Chebyshev;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Base class for Stereo effects. Provides effectSendL/R and effectReturnL/R. &#xD;		 *&#xD;		 *	@constructor&#xD;		 *	@extends {Tone.Effect}&#xD;		 */&#xD;	    Tone.StereoEffect = function () {&#xD;	        this.createInsOuts(1, 1);&#xD;	        //get the defaults&#xD;	        var options = this.optionsObject(arguments, [&apos;wet&apos;], Tone.Effect.defaults);&#xD;	        /**&#xD;			 *  the drywet knob to control the amount of effect&#xD;			 *  @type {Tone.CrossFade}&#xD;			 *  @private&#xD;			 */&#xD;	        this._dryWet = new Tone.CrossFade(options.wet);&#xD;	        /**&#xD;			 *  The wet control, i.e. how much of the effected&#xD;			 *  will pass through to the output. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.wet = this._dryWet.fade;&#xD;	        /**&#xD;			 *  then split it&#xD;			 *  @type {Tone.Split}&#xD;			 *  @private&#xD;			 */&#xD;	        this._split = new Tone.Split();&#xD;	        /**&#xD;			 *  the effects send LEFT&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectSendL = this._split.left;&#xD;	        /**&#xD;			 *  the effects send RIGHT&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectSendR = this._split.right;&#xD;	        /**&#xD;			 *  the stereo effect merger&#xD;			 *  @type {Tone.Merge}&#xD;			 *  @private&#xD;			 */&#xD;	        this._merge = new Tone.Merge();&#xD;	        /**&#xD;			 *  the effect return LEFT&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectReturnL = this._merge.left;&#xD;	        /**&#xD;			 *  the effect return RIGHT&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.effectReturnR = this._merge.right;&#xD;	        //connections&#xD;	        this.input.connect(this._split);&#xD;	        //dry wet connections&#xD;	        this.input.connect(this._dryWet, 0, 0);&#xD;	        this._merge.connect(this._dryWet, 0, 1);&#xD;	        this._dryWet.connect(this.output);&#xD;	        this._readOnly([&apos;wet&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.StereoEffect, Tone.Effect);&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.StereoEffect} this&#xD;		 */&#xD;	    Tone.StereoEffect.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._dryWet.dispose();&#xD;	        this._dryWet = null;&#xD;	        this._split.dispose();&#xD;	        this._split = null;&#xD;	        this._merge.dispose();&#xD;	        this._merge = null;&#xD;	        this.effectSendL = null;&#xD;	        this.effectSendR = null;&#xD;	        this.effectReturnL = null;&#xD;	        this.effectReturnR = null;&#xD;	        this._writable([&apos;wet&apos;]);&#xD;	        this.wet = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.StereoEffect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 * 	@class  Tone.FeedbackEffect provides a loop between an &#xD;		 * 	        audio source and its own output. This is a base-class&#xD;		 * 	        for feedback effects. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {NormalRange|Object} [feedback] The initial feedback value.&#xD;		 */&#xD;	    Tone.FeedbackEffect = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;feedback&apos;]);&#xD;	        options = this.defaultArg(options, Tone.FeedbackEffect.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  the gain which controls the feedback&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackGain = new Tone.Gain(options.feedback, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  The amount of signal which is fed back into the effect input. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.feedback = this._feedbackGain.gain;&#xD;	        //the feedback loop&#xD;	        this.effectReturn.chain(this._feedbackGain, this.effectSend);&#xD;	        this._readOnly([&apos;feedback&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.FeedbackEffect, Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.FeedbackEffect.defaults = { &apos;feedback&apos;: 0.125 };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.FeedbackEffect} this&#xD;		 */&#xD;	    Tone.FeedbackEffect.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._writable([&apos;feedback&apos;]);&#xD;	        this._feedbackGain.dispose();&#xD;	        this._feedbackGain = null;&#xD;	        this.feedback = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FeedbackEffect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Just like a stereo feedback effect, but the feedback is routed from left to right&#xD;		 *         and right to left instead of on the same channel.&#xD;		 *&#xD;		 *	@constructor&#xD;		 *	@extends {Tone.FeedbackEffect}&#xD;		 */&#xD;	    Tone.StereoXFeedbackEffect = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;feedback&apos;], Tone.FeedbackEffect.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  The amount of feedback from the output&#xD;			 *  back into the input of the effect (routed&#xD;			 *  across left and right channels).&#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.feedback = new Tone.Signal(options.feedback, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  the left side feeback&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackLR = new Tone.Gain();&#xD;	        /**&#xD;			 *  the right side feeback&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackRL = new Tone.Gain();&#xD;	        //connect it up&#xD;	        this.effectReturnL.chain(this._feedbackLR, this.effectSendR);&#xD;	        this.effectReturnR.chain(this._feedbackRL, this.effectSendL);&#xD;	        this.feedback.fan(this._feedbackLR.gain, this._feedbackRL.gain);&#xD;	        this._readOnly([&apos;feedback&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.StereoXFeedbackEffect, Tone.FeedbackEffect);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.StereoXFeedbackEffect} this&#xD;		 */&#xD;	    Tone.StereoXFeedbackEffect.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        this._writable([&apos;feedback&apos;]);&#xD;	        this.feedback.dispose();&#xD;	        this.feedback = null;&#xD;	        this._feedbackLR.dispose();&#xD;	        this._feedbackLR = null;&#xD;	        this._feedbackRL.dispose();&#xD;	        this._feedbackRL = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.StereoXFeedbackEffect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Chorus is a stereo chorus effect with feedback composed of &#xD;		 *         a left and right delay with a Tone.LFO applied to the delayTime of each channel. &#xD;		 *         Inspiration from [Tuna.js](https://github.com/Dinahmoe/tuna/blob/master/tuna.js).&#xD;		 *         Read more on the chorus effect on [SoundOnSound](http://www.soundonsound.com/sos/jun04/articles/synthsecrets.htm).&#xD;		 *&#xD;		 *	@constructor&#xD;		 *	@extends {Tone.StereoXFeedbackEffect}&#xD;		 *	@param {Frequency|Object} [frequency] The frequency of the LFO.&#xD;		 *	@param {Milliseconds} [delayTime] The delay of the chorus effect in ms. &#xD;		 *	@param {NormalRange} [depth] The depth of the chorus.&#xD;		 *	@example&#xD;		 * var chorus = new Tone.Chorus(4, 2.5, 0.5);&#xD;		 * var synth = new Tone.PolySynth(4, Tone.MonoSynth).connect(chorus);&#xD;		 * synth.triggerAttackRelease(["C3","E3","G3"], "8n");&#xD;		 */&#xD;	    Tone.Chorus = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ], Tone.Chorus.defaults);&#xD;	        Tone.StereoXFeedbackEffect.call(this, options);&#xD;	        /**&#xD;			 *  the depth of the chorus&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._depth = options.depth;&#xD;	        /**&#xD;			 *  the delayTime&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayTime = options.delayTime / 1000;&#xD;	        /**&#xD;			 *  the lfo which controls the delayTime&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoL = new Tone.LFO({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: 1&#xD;	        });&#xD;	        /**&#xD;			 *  another LFO for the right side with a 180 degree phase diff&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoR = new Tone.LFO({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: 1,&#xD;	            &apos;phase&apos;: 180&#xD;	        });&#xD;	        /**&#xD;			 *  delay for left&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayNodeL = new Tone.Delay();&#xD;	        /**&#xD;			 *  delay for right&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayNodeR = new Tone.Delay();&#xD;	        /**&#xD;			 * The frequency of the LFO which modulates the delayTime. &#xD;			 * @type {Frequency}&#xD;			 * @signal&#xD;			 */&#xD;	        this.frequency = this._lfoL.frequency;&#xD;	        //connections&#xD;	        this.effectSendL.chain(this._delayNodeL, this.effectReturnL);&#xD;	        this.effectSendR.chain(this._delayNodeR, this.effectReturnR);&#xD;	        //and pass through to make the detune apparent&#xD;	        this.effectSendL.connect(this.effectReturnL);&#xD;	        this.effectSendR.connect(this.effectReturnR);&#xD;	        //lfo setup&#xD;	        this._lfoL.connect(this._delayNodeL.delayTime);&#xD;	        this._lfoR.connect(this._delayNodeR.delayTime);&#xD;	        //start the lfo&#xD;	        this._lfoL.start();&#xD;	        this._lfoR.start();&#xD;	        //have one LFO frequency control the other&#xD;	        this._lfoL.frequency.connect(this._lfoR.frequency);&#xD;	        //set the initial values&#xD;	        this.depth = this._depth;&#xD;	        this.frequency.value = options.frequency;&#xD;	        this.type = options.type;&#xD;	        this._readOnly([&apos;frequency&apos;]);&#xD;	        this.spread = options.spread;&#xD;	    };&#xD;	    Tone.extend(Tone.Chorus, Tone.StereoXFeedbackEffect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Chorus.defaults = {&#xD;	        &apos;frequency&apos;: 1.5,&#xD;	        &apos;delayTime&apos;: 3.5,&#xD;	        &apos;depth&apos;: 0.7,&#xD;	        &apos;feedback&apos;: 0.1,&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;spread&apos;: 180&#xD;	    };&#xD;	    /**&#xD;		 * The depth of the effect. A depth of 1 makes the delayTime&#xD;		 * modulate between 0 and 2*delayTime (centered around the delayTime). &#xD;		 * @memberOf Tone.Chorus#&#xD;		 * @type {NormalRange}&#xD;		 * @name depth&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chorus.prototype, &apos;depth&apos;, {&#xD;	        get: function () {&#xD;	            return this._depth;&#xD;	        },&#xD;	        set: function (depth) {&#xD;	            this._depth = depth;&#xD;	            var deviation = this._delayTime * depth;&#xD;	            this._lfoL.min = Math.max(this._delayTime - deviation, 0);&#xD;	            this._lfoL.max = this._delayTime + deviation;&#xD;	            this._lfoR.min = Math.max(this._delayTime - deviation, 0);&#xD;	            this._lfoR.max = this._delayTime + deviation;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The delayTime in milliseconds of the chorus. A larger delayTime&#xD;		 * will give a more pronounced effect. Nominal range a delayTime&#xD;		 * is between 2 and 20ms. &#xD;		 * @memberOf Tone.Chorus#&#xD;		 * @type {Milliseconds}&#xD;		 * @name delayTime&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chorus.prototype, &apos;delayTime&apos;, {&#xD;	        get: function () {&#xD;	            return this._delayTime * 1000;&#xD;	        },&#xD;	        set: function (delayTime) {&#xD;	            this._delayTime = delayTime / 1000;&#xD;	            this.depth = this._depth;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The oscillator type of the LFO. &#xD;		 * @memberOf Tone.Chorus#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chorus.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfoL.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._lfoL.type = type;&#xD;	            this._lfoR.type = type;&#xD;	        }&#xD;	    });&#xD;	    /** &#xD;		 * Amount of stereo spread. When set to 0, both LFO&apos;s will be panned centrally.&#xD;		 * When set to 180, LFO&apos;s will be panned hard left and right respectively.&#xD;		 * @memberOf Tone.Chorus#&#xD;		 * @type {Degrees}&#xD;		 * @name spread&#xD;		 */&#xD;	    Object.defineProperty(Tone.Chorus.prototype, &apos;spread&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfoR.phase - this._lfoL.phase;    //180&#xD;	        },&#xD;	        set: function (spread) {&#xD;	            this._lfoL.phase = 90 - spread / 2;&#xD;	            this._lfoR.phase = spread / 2 + 90;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Chorus} this&#xD;		 */&#xD;	    Tone.Chorus.prototype.dispose = function () {&#xD;	        Tone.StereoXFeedbackEffect.prototype.dispose.call(this);&#xD;	        this._lfoL.dispose();&#xD;	        this._lfoL = null;&#xD;	        this._lfoR.dispose();&#xD;	        this._lfoR = null;&#xD;	        this._delayNodeL.dispose();&#xD;	        this._delayNodeL = null;&#xD;	        this._delayNodeR.dispose();&#xD;	        this._delayNodeR = null;&#xD;	        this._writable(&apos;frequency&apos;);&#xD;	        this.frequency = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Chorus;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Convolver is a wrapper around the Native Web Audio &#xD;		 *          [ConvolverNode](http://webaudio.github.io/web-audio-api/#the-convolvernode-interface).&#xD;		 *          Convolution is useful for reverb and filter emulation. Read more about convolution reverb on&#xD;		 *          [Wikipedia](https://en.wikipedia.org/wiki/Convolution_reverb).&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {string|Tone.Buffer|Object} [url] The URL of the impulse response or the Tone.Buffer&#xD;		 *                                           contianing the impulse response. &#xD;		 *  @param {Function} onload The callback to invoke when the url is loaded.&#xD;		 *  @example&#xD;		 * //initializing the convolver with an impulse response&#xD;		 * var convolver = new Tone.Convolver("./path/to/ir.wav").toMaster();&#xD;		 */&#xD;	    Tone.Convolver = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;url&apos;,&#xD;	            &apos;onload&apos;&#xD;	        ], Tone.Convolver.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  convolver node&#xD;			 *  @type {ConvolverNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._convolver = this.context.createConvolver();&#xD;	        /**&#xD;			 *  the convolution buffer&#xD;			 *  @type {Tone.Buffer}&#xD;			 *  @private&#xD;			 */&#xD;	        this._buffer = new Tone.Buffer();&#xD;	        if (this.isString(options.url)) {&#xD;	            this._buffer.load(options.url, function (buffer) {&#xD;	                this.buffer = buffer;&#xD;	                options.onload();&#xD;	            }.bind(this));&#xD;	        } else if (options.url) {&#xD;	            this.buffer = options.url;&#xD;	            options.onload();&#xD;	        }&#xD;	        this.connectEffect(this._convolver);&#xD;	    };&#xD;	    Tone.extend(Tone.Convolver, Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Convolver.defaults = { &apos;onload&apos;: Tone.noOp };&#xD;	    /**&#xD;		 *  The convolver&apos;s buffer&#xD;		 *  @memberOf Tone.Convolver#&#xD;		 *  @type {AudioBuffer}&#xD;		 *  @name buffer&#xD;		 */&#xD;	    Object.defineProperty(Tone.Convolver.prototype, &apos;buffer&apos;, {&#xD;	        get: function () {&#xD;	            return this._buffer.get();&#xD;	        },&#xD;	        set: function (buffer) {&#xD;	            this._buffer.set(buffer);&#xD;	            this._convolver.buffer = this._buffer.get();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Load an impulse response url as an audio buffer.&#xD;		 *  Decodes the audio asynchronously and invokes&#xD;		 *  the callback once the audio buffer loads.&#xD;		 *  @param {string} url The url of the buffer to load.&#xD;		 *                      filetype support depends on the&#xD;		 *                      browser.&#xD;		 *  @param  {function=} callback&#xD;		 *  @returns {Promise}&#xD;		 */&#xD;	    Tone.Convolver.prototype.load = function (url, callback) {&#xD;	        return this._buffer.load(url, function (buff) {&#xD;	            this.buffer = buff;&#xD;	            if (callback) {&#xD;	                callback();&#xD;	            }&#xD;	        }.bind(this));&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Convolver} this&#xD;		 */&#xD;	    Tone.Convolver.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._convolver.disconnect();&#xD;	        this._convolver = null;&#xD;	        this._buffer.dispose();&#xD;	        this._buffer = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Convolver;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Distortion is a simple distortion effect using Tone.WaveShaper.&#xD;		 *         Algorithm from [a stackoverflow answer](http://stackoverflow.com/a/22313408).&#xD;		 *&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @constructor&#xD;		 *  @param {Number|Object} [distortion] The amount of distortion (nominal range of 0-1)&#xD;		 *  @example&#xD;		 * var dist = new Tone.Distortion(0.8).toMaster();&#xD;		 * var fm = new Tone.SimpleFM().connect(dist);&#xD;		 * //this sounds good on bass notes&#xD;		 * fm.triggerAttackRelease("A1", "8n");&#xD;		 */&#xD;	    Tone.Distortion = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;distortion&apos;], Tone.Distortion.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  @type {Tone.WaveShaper}&#xD;			 *  @private&#xD;			 */&#xD;	        this._shaper = new Tone.WaveShaper(4096);&#xD;	        /**&#xD;			 * holds the distortion amount&#xD;			 * @type {number}&#xD;			 * @private&#xD;			 */&#xD;	        this._distortion = options.distortion;&#xD;	        this.connectEffect(this._shaper);&#xD;	        this.distortion = options.distortion;&#xD;	        this.oversample = options.oversample;&#xD;	    };&#xD;	    Tone.extend(Tone.Distortion, Tone.Effect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Distortion.defaults = {&#xD;	        &apos;distortion&apos;: 0.4,&#xD;	        &apos;oversample&apos;: &apos;none&apos;&#xD;	    };&#xD;	    /**&#xD;		 * The amount of distortion.&#xD;		 * @memberOf Tone.Distortion#&#xD;		 * @type {NormalRange}&#xD;		 * @name distortion&#xD;		 */&#xD;	    Object.defineProperty(Tone.Distortion.prototype, &apos;distortion&apos;, {&#xD;	        get: function () {&#xD;	            return this._distortion;&#xD;	        },&#xD;	        set: function (amount) {&#xD;	            this._distortion = amount;&#xD;	            var k = amount * 100;&#xD;	            var deg = Math.PI / 180;&#xD;	            this._shaper.setMap(function (x) {&#xD;	                if (Math.abs(x) &lt; 0.001) {&#xD;	                    //should output 0 when input is 0&#xD;	                    return 0;&#xD;	                } else {&#xD;	                    return (3 + k) * x * 20 * deg / (Math.PI + k * Math.abs(x));&#xD;	                }&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The oversampling of the effect. Can either be "none", "2x" or "4x".&#xD;		 * @memberOf Tone.Distortion#&#xD;		 * @type {string}&#xD;		 * @name oversample&#xD;		 */&#xD;	    Object.defineProperty(Tone.Distortion.prototype, &apos;oversample&apos;, {&#xD;	        get: function () {&#xD;	            return this._shaper.oversample;&#xD;	        },&#xD;	        set: function (oversampling) {&#xD;	            this._shaper.oversample = oversampling;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Distortion} this&#xD;		 */&#xD;	    Tone.Distortion.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._shaper.dispose();&#xD;	        this._shaper = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Distortion;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.FeedbackDelay is a DelayNode in which part of output&#xD;		 *          signal is fed back into the delay. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.FeedbackEffect}&#xD;		 *  @param {Time|Object} [delayTime] The delay applied to the incoming signal. &#xD;		 *  @param {NormalRange=} feedback The amount of the effected signal which &#xD;		 *                            is fed back through the delay.&#xD;		 *  @example&#xD;		 * var feedbackDelay = new Tone.FeedbackDelay("8n", 0.5).toMaster();&#xD;		 * var tom = new Tone.DrumSynth({&#xD;		 * 	"octaves" : 4,&#xD;		 * 	"pitchDecay" : 0.1&#xD;		 * }).connect(feedbackDelay);&#xD;		 * tom.triggerAttackRelease("A2","32n");&#xD;		 */&#xD;	    Tone.FeedbackDelay = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;feedback&apos;&#xD;	        ], Tone.FeedbackDelay.defaults);&#xD;	        Tone.FeedbackEffect.call(this, options);&#xD;	        /**&#xD;			 *  the delay node&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayNode = new Tone.Delay(options.delayTime);&#xD;	        /**&#xD;			 *  The delayTime of the DelayNode. &#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = this._delayNode.delayTime;&#xD;	        // connect it up&#xD;	        this.connectEffect(this._delayNode);&#xD;	        this._readOnly([&apos;delayTime&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.FeedbackDelay, Tone.FeedbackEffect);&#xD;	    /**&#xD;		 *  The default values. &#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.FeedbackDelay.defaults = { &apos;delayTime&apos;: 0.25 };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.FeedbackDelay} this&#xD;		 */&#xD;	    Tone.FeedbackDelay.prototype.dispose = function () {&#xD;	        Tone.FeedbackEffect.prototype.dispose.call(this);&#xD;	        this._delayNode.dispose();&#xD;	        this._delayNode = null;&#xD;	        this._writable([&apos;delayTime&apos;]);&#xD;	        this.delayTime = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FeedbackDelay;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  an array of comb filter delay values from Freeverb implementation&#xD;		 *  @static&#xD;		 *  @private&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var combFilterTunings = [&#xD;	        1557 / 44100,&#xD;	        1617 / 44100,&#xD;	        1491 / 44100,&#xD;	        1422 / 44100,&#xD;	        1277 / 44100,&#xD;	        1356 / 44100,&#xD;	        1188 / 44100,&#xD;	        1116 / 44100&#xD;	    ];&#xD;	    /**&#xD;		 *  an array of allpass filter frequency values from Freeverb implementation&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var allpassFilterFrequencies = [&#xD;	        225,&#xD;	        556,&#xD;	        441,&#xD;	        341&#xD;	    ];&#xD;	    /**&#xD;		 *  @class Tone.Freeverb is a reverb based on [Freeverb](https://ccrma.stanford.edu/&#126;jos/pasp/Freeverb.html).&#xD;		 *         Read more on reverb on [SoundOnSound](http://www.soundonsound.com/sos/may00/articles/reverb.htm).&#xD;		 *&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @constructor&#xD;		 *  @param {NormalRange|Object} [roomSize] Correlated to the decay time. &#xD;		 *  @param {Frequency} [dampening] The cutoff frequency of a lowpass filter as part &#xD;		 *                                 of the reverb. &#xD;		 *  @example&#xD;		 * var freeverb = new Tone.Freeverb().toMaster();&#xD;		 * freeverb.dampening.value = 1000;&#xD;		 * //routing synth through the reverb&#xD;		 * var synth = new Tone.AMSynth().connect(freeverb);&#xD;		 */&#xD;	    Tone.Freeverb = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;roomSize&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ], Tone.Freeverb.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  The roomSize value between. A larger roomSize&#xD;			 *  will result in a longer decay. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.roomSize = new Tone.Signal(options.roomSize, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  The amount of dampening of the reverberant signal. &#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.dampening = new Tone.Signal(options.dampening, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  the comb filters&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._combFilters = [];&#xD;	        /**&#xD;			 *  the allpass filters on the left&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._allpassFiltersL = [];&#xD;	        /**&#xD;			 *  the allpass filters on the right&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._allpassFiltersR = [];&#xD;	        //make the allpass filters on teh right&#xD;	        for (var l = 0; l &lt; allpassFilterFrequencies.length; l++) {&#xD;	            var allpassL = this.context.createBiquadFilter();&#xD;	            allpassL.type = &apos;allpass&apos;;&#xD;	            allpassL.frequency.value = allpassFilterFrequencies[l];&#xD;	            this._allpassFiltersL.push(allpassL);&#xD;	        }&#xD;	        //make the allpass filters on the left&#xD;	        for (var r = 0; r &lt; allpassFilterFrequencies.length; r++) {&#xD;	            var allpassR = this.context.createBiquadFilter();&#xD;	            allpassR.type = &apos;allpass&apos;;&#xD;	            allpassR.frequency.value = allpassFilterFrequencies[r];&#xD;	            this._allpassFiltersR.push(allpassR);&#xD;	        }&#xD;	        //make the comb filters&#xD;	        for (var c = 0; c &lt; combFilterTunings.length; c++) {&#xD;	            var lfpf = new Tone.LowpassCombFilter(combFilterTunings[c]);&#xD;	            if (c &lt; combFilterTunings.length / 2) {&#xD;	                this.effectSendL.chain(lfpf, this._allpassFiltersL[0]);&#xD;	            } else {&#xD;	                this.effectSendR.chain(lfpf, this._allpassFiltersR[0]);&#xD;	            }&#xD;	            this.roomSize.connect(lfpf.resonance);&#xD;	            this.dampening.connect(lfpf.dampening);&#xD;	            this._combFilters.push(lfpf);&#xD;	        }&#xD;	        //chain the allpass filters togetehr&#xD;	        this.connectSeries.apply(this, this._allpassFiltersL);&#xD;	        this.connectSeries.apply(this, this._allpassFiltersR);&#xD;	        this._allpassFiltersL[this._allpassFiltersL.length - 1].connect(this.effectReturnL);&#xD;	        this._allpassFiltersR[this._allpassFiltersR.length - 1].connect(this.effectReturnR);&#xD;	        this._readOnly([&#xD;	            &apos;roomSize&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.Freeverb, Tone.StereoEffect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Freeverb.defaults = {&#xD;	        &apos;roomSize&apos;: 0.7,&#xD;	        &apos;dampening&apos;: 3000&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.Freeverb} this&#xD;		 */&#xD;	    Tone.Freeverb.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        for (var al = 0; al &lt; this._allpassFiltersL.length; al++) {&#xD;	            this._allpassFiltersL[al].disconnect();&#xD;	            this._allpassFiltersL[al] = null;&#xD;	        }&#xD;	        this._allpassFiltersL = null;&#xD;	        for (var ar = 0; ar &lt; this._allpassFiltersR.length; ar++) {&#xD;	            this._allpassFiltersR[ar].disconnect();&#xD;	            this._allpassFiltersR[ar] = null;&#xD;	        }&#xD;	        this._allpassFiltersR = null;&#xD;	        for (var cf = 0; cf &lt; this._combFilters.length; cf++) {&#xD;	            this._combFilters[cf].dispose();&#xD;	            this._combFilters[cf] = null;&#xD;	        }&#xD;	        this._combFilters = null;&#xD;	        this._writable([&#xD;	            &apos;roomSize&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ]);&#xD;	        this.roomSize.dispose();&#xD;	        this.roomSize = null;&#xD;	        this.dampening.dispose();&#xD;	        this.dampening = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Freeverb;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  an array of the comb filter delay time values&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var combFilterDelayTimes = [&#xD;	        1687 / 25000,&#xD;	        1601 / 25000,&#xD;	        2053 / 25000,&#xD;	        2251 / 25000&#xD;	    ];&#xD;	    /**&#xD;		 *  the resonances of each of the comb filters&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var combFilterResonances = [&#xD;	        0.773,&#xD;	        0.802,&#xD;	        0.753,&#xD;	        0.733&#xD;	    ];&#xD;	    /**&#xD;		 *  the allpass filter frequencies&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var allpassFilterFreqs = [&#xD;	        347,&#xD;	        113,&#xD;	        37&#xD;	    ];&#xD;	    /**&#xD;		 *  @class Tone.JCReverb is a simple [Schroeder Reverberator](https://ccrma.stanford.edu/&#126;jos/pasp/Schroeder_Reverberators.html)&#xD;		 *         tuned by John Chowning in 1970.&#xD;		 *         It is made up of three allpass filters and four Tone.FeedbackCombFilter. &#xD;		 *         &#xD;		 *&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @constructor&#xD;		 *  @param {NormalRange|Object} [roomSize] Coorelates to the decay time.&#xD;		 *  @example&#xD;		 * var reverb = new Tone.JCReverb(0.4).connect(Tone.Master);&#xD;		 * var delay = new Tone.FeedbackDelay(0.5); &#xD;		 * //connecting the synth to reverb through delay&#xD;		 * var synth = new Tone.DuoSynth().chain(delay, reverb);&#xD;		 * synth.triggerAttackRelease("A4","8n");&#xD;		 */&#xD;	    Tone.JCReverb = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;roomSize&apos;], Tone.JCReverb.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  room size control values between [0,1]&#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.roomSize = new Tone.Signal(options.roomSize, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  scale the room size&#xD;			 *  @type {Tone.Scale}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scaleRoomSize = new Tone.Scale(-0.733, 0.197);&#xD;	        /**&#xD;			 *  a series of allpass filters&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._allpassFilters = [];&#xD;	        /**&#xD;			 *  parallel feedback comb filters&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackCombFilters = [];&#xD;	        //make the allpass filters&#xD;	        for (var af = 0; af &lt; allpassFilterFreqs.length; af++) {&#xD;	            var allpass = this.context.createBiquadFilter();&#xD;	            allpass.type = &apos;allpass&apos;;&#xD;	            allpass.frequency.value = allpassFilterFreqs[af];&#xD;	            this._allpassFilters.push(allpass);&#xD;	        }&#xD;	        //and the comb filters&#xD;	        for (var cf = 0; cf &lt; combFilterDelayTimes.length; cf++) {&#xD;	            var fbcf = new Tone.FeedbackCombFilter(combFilterDelayTimes[cf], 0.1);&#xD;	            this._scaleRoomSize.connect(fbcf.resonance);&#xD;	            fbcf.resonance.value = combFilterResonances[cf];&#xD;	            this._allpassFilters[this._allpassFilters.length - 1].connect(fbcf);&#xD;	            if (cf &lt; combFilterDelayTimes.length / 2) {&#xD;	                fbcf.connect(this.effectReturnL);&#xD;	            } else {&#xD;	                fbcf.connect(this.effectReturnR);&#xD;	            }&#xD;	            this._feedbackCombFilters.push(fbcf);&#xD;	        }&#xD;	        //chain the allpass filters together&#xD;	        this.roomSize.connect(this._scaleRoomSize);&#xD;	        this.connectSeries.apply(this, this._allpassFilters);&#xD;	        this.effectSendL.connect(this._allpassFilters[0]);&#xD;	        this.effectSendR.connect(this._allpassFilters[0]);&#xD;	        this._readOnly([&apos;roomSize&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.JCReverb, Tone.StereoEffect);&#xD;	    /**&#xD;		 *  the default values&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.JCReverb.defaults = { &apos;roomSize&apos;: 0.5 };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.JCReverb} this&#xD;		 */&#xD;	    Tone.JCReverb.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        for (var apf = 0; apf &lt; this._allpassFilters.length; apf++) {&#xD;	            this._allpassFilters[apf].disconnect();&#xD;	            this._allpassFilters[apf] = null;&#xD;	        }&#xD;	        this._allpassFilters = null;&#xD;	        for (var fbcf = 0; fbcf &lt; this._feedbackCombFilters.length; fbcf++) {&#xD;	            this._feedbackCombFilters[fbcf].dispose();&#xD;	            this._feedbackCombFilters[fbcf] = null;&#xD;	        }&#xD;	        this._feedbackCombFilters = null;&#xD;	        this._writable([&apos;roomSize&apos;]);&#xD;	        this.roomSize.dispose();&#xD;	        this.roomSize = null;&#xD;	        this._scaleRoomSize.dispose();&#xD;	        this._scaleRoomSize = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.JCReverb;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Mid/Side processing separates the the &apos;mid&apos; signal &#xD;		 *         (which comes out of both the left and the right channel) &#xD;		 *         and the &apos;side&apos; (which only comes out of the the side channels) &#xD;		 *         and effects them separately before being recombined.&#xD;		 *         Applies a Mid/Side seperation and recombination.&#xD;		 *         Algorithm found in [kvraudio forums](http://www.kvraudio.com/forum/viewtopic.php?t=212587).&#xD;		 *         &lt;br&gt;&lt;br&gt;&#xD;		 *         This is a base-class for Mid/Side Effects. &#xD;		 *&#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @constructor&#xD;		 */&#xD;	    Tone.MidSideEffect = function () {&#xD;	        Tone.Effect.apply(this, arguments);&#xD;	        /**&#xD;			 *  The mid/side split&#xD;			 *  @type  {Tone.MidSideSplit}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midSideSplit = new Tone.MidSideSplit();&#xD;	        /**&#xD;			 *  The mid/side merge&#xD;			 *  @type  {Tone.MidSideMerge}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midSideMerge = new Tone.MidSideMerge();&#xD;	        /**&#xD;			 *  The mid send. Connect to mid processing&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this.midSend = this._midSideSplit.mid;&#xD;	        /**&#xD;			 *  The side send. Connect to side processing&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this.sideSend = this._midSideSplit.side;&#xD;	        /**&#xD;			 *  The mid return connection&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.midReturn = this._midSideMerge.mid;&#xD;	        /**&#xD;			 *  The side return connection&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this.sideReturn = this._midSideMerge.side;&#xD;	        //the connections&#xD;	        this.effectSend.connect(this._midSideSplit);&#xD;	        this._midSideMerge.connect(this.effectReturn);&#xD;	    };&#xD;	    Tone.extend(Tone.MidSideEffect, Tone.Effect);&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.MidSideEffect} this&#xD;		 */&#xD;	    Tone.MidSideEffect.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._midSideSplit.dispose();&#xD;	        this._midSideSplit = null;&#xD;	        this._midSideMerge.dispose();&#xD;	        this._midSideMerge = null;&#xD;	        this.midSend = null;&#xD;	        this.sideSend = null;&#xD;	        this.midReturn = null;&#xD;	        this.sideReturn = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MidSideEffect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Phaser is a phaser effect. Phasers work by changing the phase&#xD;		 *         of different frequency components of an incoming signal. Read more on &#xD;		 *         [Wikipedia](https://en.wikipedia.org/wiki/Phaser_(effect)). &#xD;		 *         Inspiration for this phaser comes from [Tuna.js](https://github.com/Dinahmoe/tuna/).&#xD;		 *&#xD;		 *	@extends {Tone.StereoEffect}&#xD;		 *	@constructor&#xD;		 *	@param {Frequency|Object} [frequency] The speed of the phasing. &#xD;		 *	@param {number} [octaves] The octaves of the effect. &#xD;		 *	@param {Frequency} [baseFrequency] The base frequency of the filters. &#xD;		 *	@example&#xD;		 * var phaser = new Tone.Phaser({&#xD;		 * 	"frequency" : 15, &#xD;		 * 	"octaves" : 5, &#xD;		 * 	"baseFrequency" : 1000&#xD;		 * }).toMaster();&#xD;		 * var synth = new Tone.FMSynth().connect(phaser);&#xD;		 * synth.triggerAttackRelease("E3", "2n");&#xD;		 */&#xD;	    Tone.Phaser = function () {&#xD;	        //set the defaults&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;octaves&apos;,&#xD;	            &apos;baseFrequency&apos;&#xD;	        ], Tone.Phaser.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  the lfo which controls the frequency on the left side&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoL = new Tone.LFO(options.frequency, 0, 1);&#xD;	        /**&#xD;			 *  the lfo which controls the frequency on the right side&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoR = new Tone.LFO(options.frequency, 0, 1);&#xD;	        this._lfoR.phase = 180;&#xD;	        /**&#xD;			 *  the base modulation frequency&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._baseFrequency = options.baseFrequency;&#xD;	        /**&#xD;			 *  the octaves of the phasing&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._octaves = options.octaves;&#xD;	        /**&#xD;			 *  The quality factor of the filters&#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.Q = new Tone.Signal(options.Q, Tone.Type.Positive);&#xD;	        /**&#xD;			 *  the array of filters for the left side&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._filtersL = this._makeFilters(options.stages, this._lfoL, this.Q);&#xD;	        /**&#xD;			 *  the array of filters for the left side&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._filtersR = this._makeFilters(options.stages, this._lfoR, this.Q);&#xD;	        /**&#xD;			 * the frequency of the effect&#xD;			 * @type {Tone.Signal}&#xD;			 */&#xD;	        this.frequency = this._lfoL.frequency;&#xD;	        this.frequency.value = options.frequency;&#xD;	        //connect them up&#xD;	        this.effectSendL.connect(this._filtersL[0]);&#xD;	        this.effectSendR.connect(this._filtersR[0]);&#xD;	        this._filtersL[options.stages - 1].connect(this.effectReturnL);&#xD;	        this._filtersR[options.stages - 1].connect(this.effectReturnR);&#xD;	        //control the frequency with one LFO&#xD;	        this._lfoL.frequency.connect(this._lfoR.frequency);&#xD;	        //set the options&#xD;	        this.baseFrequency = options.baseFrequency;&#xD;	        this.octaves = options.octaves;&#xD;	        //start the lfo&#xD;	        this._lfoL.start();&#xD;	        this._lfoR.start();&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.Phaser, Tone.StereoEffect);&#xD;	    /**&#xD;		 *  defaults&#xD;		 *  @static&#xD;		 *  @type {object}&#xD;		 */&#xD;	    Tone.Phaser.defaults = {&#xD;	        &apos;frequency&apos;: 0.5,&#xD;	        &apos;octaves&apos;: 3,&#xD;	        &apos;stages&apos;: 10,&#xD;	        &apos;Q&apos;: 10,&#xD;	        &apos;baseFrequency&apos;: 350&#xD;	    };&#xD;	    /**&#xD;		 *  @param {number} stages&#xD;		 *  @returns {Array} the number of filters all connected together&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Phaser.prototype._makeFilters = function (stages, connectToFreq, Q) {&#xD;	        var filters = new Array(stages);&#xD;	        //make all the filters&#xD;	        for (var i = 0; i &lt; stages; i++) {&#xD;	            var filter = this.context.createBiquadFilter();&#xD;	            filter.type = &apos;allpass&apos;;&#xD;	            Q.connect(filter.Q);&#xD;	            connectToFreq.connect(filter.frequency);&#xD;	            filters[i] = filter;&#xD;	        }&#xD;	        this.connectSeries.apply(this, filters);&#xD;	        return filters;&#xD;	    };&#xD;	    /**&#xD;		 * The number of octaves the phase goes above&#xD;		 * the baseFrequency&#xD;		 * @memberOf Tone.Phaser#&#xD;		 * @type {Positive}&#xD;		 * @name octaves&#xD;		 */&#xD;	    Object.defineProperty(Tone.Phaser.prototype, &apos;octaves&apos;, {&#xD;	        get: function () {&#xD;	            return this._octaves;&#xD;	        },&#xD;	        set: function (octaves) {&#xD;	            this._octaves = octaves;&#xD;	            var max = this._baseFrequency * Math.pow(2, octaves);&#xD;	            this._lfoL.max = max;&#xD;	            this._lfoR.max = max;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The the base frequency of the filters. &#xD;		 * @memberOf Tone.Phaser#&#xD;		 * @type {number}&#xD;		 * @name baseFrequency&#xD;		 */&#xD;	    Object.defineProperty(Tone.Phaser.prototype, &apos;baseFrequency&apos;, {&#xD;	        get: function () {&#xD;	            return this._baseFrequency;&#xD;	        },&#xD;	        set: function (freq) {&#xD;	            this._baseFrequency = freq;&#xD;	            this._lfoL.min = freq;&#xD;	            this._lfoR.min = freq;&#xD;	            this.octaves = this._octaves;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Phaser} this&#xD;		 */&#xD;	    Tone.Phaser.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;Q&apos;&#xD;	        ]);&#xD;	        this.Q.dispose();&#xD;	        this.Q = null;&#xD;	        this._lfoL.dispose();&#xD;	        this._lfoL = null;&#xD;	        this._lfoR.dispose();&#xD;	        this._lfoR = null;&#xD;	        for (var i = 0; i &lt; this._filtersL.length; i++) {&#xD;	            this._filtersL[i].disconnect();&#xD;	            this._filtersL[i] = null;&#xD;	        }&#xD;	        this._filtersL = null;&#xD;	        for (var j = 0; j &lt; this._filtersR.length; j++) {&#xD;	            this._filtersR[j].disconnect();&#xD;	            this._filtersR[j] = null;&#xD;	        }&#xD;	        this._filtersR = null;&#xD;	        this.frequency = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Phaser;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.PingPongDelay is a feedback delay effect where the echo is heard&#xD;		 *          first in one channel and next in the opposite channel. In a stereo&#xD;		 *          system these are the right and left channels.&#xD;		 *          PingPongDelay in more simplified terms is two Tone.FeedbackDelays &#xD;		 *          with independent delay values. Each delay is routed to one channel&#xD;		 *          (left or right), and the channel triggered second will always &#xD;		 *          trigger at the same interval after the first.&#xD;		 *&#xD;		 * 	@constructor&#xD;		 * 	@extends {Tone.StereoXFeedbackEffect}&#xD;		 *  @param {Time|Object} [delayTime] The delayTime between consecutive echos.&#xD;		 *  @param {NormalRange=} feedback The amount of the effected signal which &#xD;		 *                                 is fed back through the delay.&#xD;		 *  @example&#xD;		 * var pingPong = new Tone.PingPongDelay("4n", 0.2).toMaster();&#xD;		 * var drum = new Tone.DrumSynth().connect(pingPong);&#xD;		 * drum.triggerAttackRelease("C4", "32n");&#xD;		 */&#xD;	    Tone.PingPongDelay = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;delayTime&apos;,&#xD;	            &apos;feedback&apos;&#xD;	        ], Tone.PingPongDelay.defaults);&#xD;	        Tone.StereoXFeedbackEffect.call(this, options);&#xD;	        /**&#xD;			 *  the delay node on the left side&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._leftDelay = new Tone.Delay(0, options.maxDelayTime);&#xD;	        /**&#xD;			 *  the delay node on the right side&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._rightDelay = new Tone.Delay(0, options.maxDelayTime);&#xD;	        /**&#xD;			 *  the predelay on the right side&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._rightPreDelay = new Tone.Delay(0, options.maxDelayTime);&#xD;	        /**&#xD;			 *  the delay time signal&#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = new Tone.Signal(options.delayTime, Tone.Type.Time);&#xD;	        //connect it up&#xD;	        this.effectSendL.chain(this._leftDelay, this.effectReturnL);&#xD;	        this.effectSendR.chain(this._rightPreDelay, this._rightDelay, this.effectReturnR);&#xD;	        this.delayTime.fan(this._leftDelay.delayTime, this._rightDelay.delayTime, this._rightPreDelay.delayTime);&#xD;	        //rearranged the feedback to be after the rightPreDelay&#xD;	        this._feedbackLR.disconnect();&#xD;	        this._feedbackLR.connect(this._rightDelay);&#xD;	        this._readOnly([&apos;delayTime&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.PingPongDelay, Tone.StereoXFeedbackEffect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.PingPongDelay.defaults = {&#xD;	        &apos;delayTime&apos;: 0.25,&#xD;	        &apos;maxDelayTime&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.PingPongDelay} this&#xD;		 */&#xD;	    Tone.PingPongDelay.prototype.dispose = function () {&#xD;	        Tone.StereoXFeedbackEffect.prototype.dispose.call(this);&#xD;	        this._leftDelay.dispose();&#xD;	        this._leftDelay = null;&#xD;	        this._rightDelay.dispose();&#xD;	        this._rightDelay = null;&#xD;	        this._rightPreDelay.dispose();&#xD;	        this._rightPreDelay = null;&#xD;	        this._writable([&apos;delayTime&apos;]);&#xD;	        this.delayTime.dispose();&#xD;	        this.delayTime = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PingPongDelay;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.PitchShift does near-realtime pitch shifting to the incoming signal. &#xD;		 *         The effect is achieved by speeding up or slowing down the delayTime&#xD;		 *         of a DelayNode using a sawtooth wave. &#xD;		 *         Algorithm found in [this pdf](http://dsp-book.narod.ru/soundproc.pdf).&#xD;		 *         Additional reference by [Miller Pucket](http://msp.ucsd.edu/techniques/v0.11/book-html/node115.html).&#xD;		 *         &#xD;		 *  @extends {Tone.FeedbackEffect}&#xD;		 *  @param {Interval=} pitch The interval to transpose the incoming signal by. &#xD;		 */&#xD;	    Tone.PitchShift = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;pitch&apos;], Tone.PitchShift.defaults);&#xD;	        Tone.FeedbackEffect.call(this, options);&#xD;	        /**&#xD;			 *  The pitch signal&#xD;			 *  @type  {Tone.Signal}&#xD;			 *  @private&#xD;			 */&#xD;	        this._frequency = new Tone.Signal(0);&#xD;	        /**&#xD;			 *  Uses two DelayNodes to cover up the jump in&#xD;			 *  the sawtooth wave. &#xD;			 *  @type  {DelayNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayA = new Tone.Delay(0, 1);&#xD;	        /**&#xD;			 *  The first LFO.&#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoA = new Tone.LFO({&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: 0.1,&#xD;	            &apos;type&apos;: &apos;sawtooth&apos;&#xD;	        }).connect(this._delayA.delayTime);&#xD;	        /**&#xD;			 *  The second DelayNode&#xD;			 *  @type  {DelayNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayB = new Tone.Delay(0, 1);&#xD;	        /**&#xD;			 *  The first LFO.&#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoB = new Tone.LFO({&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: 0.1,&#xD;	            &apos;type&apos;: &apos;sawtooth&apos;,&#xD;	            &apos;phase&apos;: 180&#xD;	        }).connect(this._delayB.delayTime);&#xD;	        /**&#xD;			 *  Crossfade quickly between the two delay lines&#xD;			 *  to cover up the jump in the sawtooth wave&#xD;			 *  @type  {Tone.CrossFade}&#xD;			 *  @private&#xD;			 */&#xD;	        this._crossFade = new Tone.CrossFade();&#xD;	        /**&#xD;			 *  LFO which alternates between the two&#xD;			 *  delay lines to cover up the disparity in the&#xD;			 *  sawtooth wave. &#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._crossFadeLFO = new Tone.LFO({&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: 1,&#xD;	            &apos;type&apos;: &apos;triangle&apos;,&#xD;	            &apos;phase&apos;: 90&#xD;	        }).connect(this._crossFade.fade);&#xD;	        /**&#xD;			 *  The delay node&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackDelay = new Tone.Delay(options.delayTime);&#xD;	        /**&#xD;			 *  The amount of delay on the input signal&#xD;			 *  @type {Time}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.delayTime = this._feedbackDelay.delayTime;&#xD;	        this._readOnly(&apos;delayTime&apos;);&#xD;	        /**&#xD;			 *  Hold the current pitch&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._pitch = options.pitch;&#xD;	        /**&#xD;			 *  Hold the current windowSize&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._windowSize = options.windowSize;&#xD;	        //connect the two delay lines up&#xD;	        this._delayA.connect(this._crossFade.a);&#xD;	        this._delayB.connect(this._crossFade.b);&#xD;	        //connect the frequency&#xD;	        this._frequency.fan(this._lfoA.frequency, this._lfoB.frequency, this._crossFadeLFO.frequency);&#xD;	        //route the input&#xD;	        this.effectSend.fan(this._delayA, this._delayB);&#xD;	        this._crossFade.chain(this._feedbackDelay, this.effectReturn);&#xD;	        //start the LFOs at the same time&#xD;	        var now = this.now();&#xD;	        this._lfoA.start(now);&#xD;	        this._lfoB.start(now);&#xD;	        this._crossFadeLFO.start(now);&#xD;	        //set the initial value&#xD;	        this.windowSize = this._windowSize;&#xD;	    };&#xD;	    Tone.extend(Tone.PitchShift, Tone.FeedbackEffect);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.PitchShift.defaults = {&#xD;	        &apos;pitch&apos;: 0,&#xD;	        &apos;windowSize&apos;: 0.1,&#xD;	        &apos;delayTime&apos;: 0,&#xD;	        &apos;feedback&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 * Repitch the incoming signal by some interval (measured&#xD;		 * in semi-tones). &#xD;		 * @memberOf Tone.PitchShift#&#xD;		 * @type {Interval}&#xD;		 * @name pitch&#xD;		 * @example&#xD;		 * pitchShift.pitch = -12; //down one octave&#xD;		 * pitchShift.pitch = 7; //up a fifth&#xD;		 */&#xD;	    Object.defineProperty(Tone.PitchShift.prototype, &apos;pitch&apos;, {&#xD;	        get: function () {&#xD;	            return this._pitch;&#xD;	        },&#xD;	        set: function (interval) {&#xD;	            this._pitch = interval;&#xD;	            var factor = 0;&#xD;	            if (interval &lt; 0) {&#xD;	                this._lfoA.min = 0;&#xD;	                this._lfoA.max = this._windowSize;&#xD;	                this._lfoB.min = 0;&#xD;	                this._lfoB.max = this._windowSize;&#xD;	                factor = this.intervalToFrequencyRatio(interval - 1) + 1;&#xD;	            } else {&#xD;	                this._lfoA.min = this._windowSize;&#xD;	                this._lfoA.max = 0;&#xD;	                this._lfoB.min = this._windowSize;&#xD;	                this._lfoB.max = 0;&#xD;	                factor = this.intervalToFrequencyRatio(interval) - 1;&#xD;	            }&#xD;	            this._frequency.value = factor * (1.2 / this._windowSize);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The window size corresponds roughly to the sample length in a looping sampler. &#xD;		 * Smaller values are desirable for a less noticeable delay time of the pitch shifted&#xD;		 * signal, but larger values will result in smoother pitch shifting for larger intervals. &#xD;		 * A nominal range of 0.03 to 0.1 is recommended. &#xD;		 * @memberOf Tone.PitchShift#&#xD;		 * @type {Time}&#xD;		 * @name windowSize&#xD;		 * @example&#xD;		 * pitchShift.windowSize = 0.1;&#xD;		 */&#xD;	    Object.defineProperty(Tone.PitchShift.prototype, &apos;windowSize&apos;, {&#xD;	        get: function () {&#xD;	            return this._windowSize;&#xD;	        },&#xD;	        set: function (size) {&#xD;	            this._windowSize = this.toSeconds(size);&#xD;	            this.pitch = this._pitch;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.PitchShift}  this&#xD;		 */&#xD;	    Tone.PitchShift.prototype.dispose = function () {&#xD;	        Tone.FeedbackEffect.prototype.dispose.call(this);&#xD;	        this._frequency.dispose();&#xD;	        this._frequency = null;&#xD;	        this._delayA.disconnect();&#xD;	        this._delayA = null;&#xD;	        this._delayB.disconnect();&#xD;	        this._delayB = null;&#xD;	        this._lfoA.dispose();&#xD;	        this._lfoA = null;&#xD;	        this._lfoB.dispose();&#xD;	        this._lfoB = null;&#xD;	        this._crossFade.dispose();&#xD;	        this._crossFade = null;&#xD;	        this._crossFadeLFO.dispose();&#xD;	        this._crossFadeLFO = null;&#xD;	        this._writable(&apos;delayTime&apos;);&#xD;	        this._feedbackDelay.dispose();&#xD;	        this._feedbackDelay = null;&#xD;	        this.delayTime = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PitchShift;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Base class for stereo feedback effects where the effectReturn&#xD;		 *         is fed back into the same channel. &#xD;		 *&#xD;		 *	@constructor&#xD;		 *	@extends {Tone.FeedbackEffect}&#xD;		 */&#xD;	    Tone.StereoFeedbackEffect = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;feedback&apos;], Tone.FeedbackEffect.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  controls the amount of feedback&#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.feedback = new Tone.Signal(options.feedback, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  the left side feeback&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackL = new Tone.Gain();&#xD;	        /**&#xD;			 *  the right side feeback&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._feedbackR = new Tone.Gain();&#xD;	        //connect it up&#xD;	        this.effectReturnL.chain(this._feedbackL, this.effectSendL);&#xD;	        this.effectReturnR.chain(this._feedbackR, this.effectSendR);&#xD;	        this.feedback.fan(this._feedbackL.gain, this._feedbackR.gain);&#xD;	        this._readOnly([&apos;feedback&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.StereoFeedbackEffect, Tone.FeedbackEffect);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.StereoFeedbackEffect} this&#xD;		 */&#xD;	    Tone.StereoFeedbackEffect.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        this._writable([&apos;feedback&apos;]);&#xD;	        this.feedback.dispose();&#xD;	        this.feedback = null;&#xD;	        this._feedbackL.dispose();&#xD;	        this._feedbackL = null;&#xD;	        this._feedbackR.dispose();&#xD;	        this._feedbackR = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.StereoFeedbackEffect;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Applies a width factor to the mid/side seperation. &#xD;		 *         0 is all mid and 1 is all side.&#xD;		 *         Algorithm found in [kvraudio forums](http://www.kvraudio.com/forum/viewtopic.php?t=212587).&#xD;		 *         &lt;br&gt;&lt;br&gt;&#xD;		 *         &lt;code&gt;&#xD;		 *         Mid *= 2*(1-width)&lt;br&gt;&#xD;		 *         Side *= 2*width&#xD;		 *         &lt;/code&gt;&#xD;		 *&#xD;		 *  @extends {Tone.MidSideEffect}&#xD;		 *  @constructor&#xD;		 *  @param {NormalRange|Object} [width] The stereo width. A width of 0 is mono and 1 is stereo. 0.5 is no change.&#xD;		 */&#xD;	    Tone.StereoWidener = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;width&apos;], Tone.StereoWidener.defaults);&#xD;	        Tone.MidSideEffect.call(this, options);&#xD;	        /**&#xD;			 *  The width control. 0 = 100% mid. 1 = 100% side. 0.5 = no change. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.width = new Tone.Signal(options.width, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  Mid multiplier&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this._midMult = new Tone.Expr(&apos;$0 * ($1 * (1 - $2))&apos;);&#xD;	        /**&#xD;			 *  Side multiplier&#xD;			 *  @type {Tone.Expr}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sideMult = new Tone.Expr(&apos;$0 * ($1 * $2)&apos;);&#xD;	        /**&#xD;			 *  constant output of 2&#xD;			 *  @type {Tone}&#xD;			 *  @private&#xD;			 */&#xD;	        this._two = new Tone.Signal(2);&#xD;	        //the mid chain&#xD;	        this._two.connect(this._midMult, 0, 1);&#xD;	        this.width.connect(this._midMult, 0, 2);&#xD;	        //the side chain&#xD;	        this._two.connect(this._sideMult, 0, 1);&#xD;	        this.width.connect(this._sideMult, 0, 2);&#xD;	        //connect it to the effect send/return&#xD;	        this.midSend.chain(this._midMult, this.midReturn);&#xD;	        this.sideSend.chain(this._sideMult, this.sideReturn);&#xD;	        this._readOnly([&apos;width&apos;]);&#xD;	    };&#xD;	    Tone.extend(Tone.StereoWidener, Tone.MidSideEffect);&#xD;	    /**&#xD;		 *  the default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.StereoWidener.defaults = { &apos;width&apos;: 0.5 };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.StereoWidener} this&#xD;		 */&#xD;	    Tone.StereoWidener.prototype.dispose = function () {&#xD;	        Tone.MidSideEffect.prototype.dispose.call(this);&#xD;	        this._writable([&apos;width&apos;]);&#xD;	        this.width.dispose();&#xD;	        this.width = null;&#xD;	        this._midMult.dispose();&#xD;	        this._midMult = null;&#xD;	        this._sideMult.dispose();&#xD;	        this._sideMult = null;&#xD;	        this._two.dispose();&#xD;	        this._two = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.StereoWidener;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Tremolo modulates the amplitude of an incoming signal using a Tone.LFO.&#xD;		 *         The type, frequency, and depth of the LFO is controllable.&#xD;		 *&#xD;		 *  @extends {Tone.StereoEffect}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} [frequency] The rate of the effect.&#xD;		 *  @param {NormalRange} [depth] The depth of the effect.&#xD;		 *  @example&#xD;		 * //create a tremolo and start it&apos;s LFO&#xD;		 * var tremolo = new Tone.Tremolo(9, 0.75).toMaster().start();&#xD;		 * //route an oscillator through the tremolo and start it&#xD;		 * var oscillator = new Tone.Oscillator().connect(tremolo).start();&#xD;		 */&#xD;	    Tone.Tremolo = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ], Tone.Tremolo.defaults);&#xD;	        Tone.StereoEffect.call(this, options);&#xD;	        /**&#xD;			 *  The tremelo LFO in the left channel&#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoL = new Tone.LFO({&#xD;	            &apos;phase&apos;: options.spread,&#xD;	            &apos;min&apos;: 1,&#xD;	            &apos;max&apos;: 0&#xD;	        });&#xD;	        /**&#xD;			 *  The tremelo LFO in the left channel&#xD;			 *  @type  {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfoR = new Tone.LFO({&#xD;	            &apos;phase&apos;: options.spread,&#xD;	            &apos;min&apos;: 1,&#xD;	            &apos;max&apos;: 0&#xD;	        });&#xD;	        /**&#xD;			 *  Where the gain is multiplied&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._amplitudeL = new Tone.Gain();&#xD;	        /**&#xD;			 *  Where the gain is multiplied&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._amplitudeR = new Tone.Gain();&#xD;	        /**&#xD;			 *  The frequency of the tremolo.&#xD;			 *  @type  {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The depth of the effect. A depth of 0, has no effect&#xD;			 *  on the amplitude, and a depth of 1 makes the amplitude&#xD;			 *  modulate fully between 0 and 1.&#xD;			 *  @type  {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.depth = new Tone.Signal(options.depth, Tone.Type.NormalRange);&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this.effectSendL.chain(this._amplitudeL, this.effectReturnL);&#xD;	        this.effectSendR.chain(this._amplitudeR, this.effectReturnR);&#xD;	        this._lfoL.connect(this._amplitudeL.gain);&#xD;	        this._lfoR.connect(this._amplitudeR.gain);&#xD;	        this.frequency.fan(this._lfoL.frequency, this._lfoR.frequency);&#xD;	        this.depth.fan(this._lfoR.amplitude, this._lfoL.amplitude);&#xD;	        this.type = options.type;&#xD;	        this.spread = options.spread;&#xD;	    };&#xD;	    Tone.extend(Tone.Tremolo, Tone.StereoEffect);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Tremolo.defaults = {&#xD;	        &apos;frequency&apos;: 10,&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;depth&apos;: 0.5,&#xD;	        &apos;spread&apos;: 180&#xD;	    };&#xD;	    /**&#xD;		 * Start the tremolo.&#xD;		 * @param {Time} [time=now] When the tremolo begins.&#xD;		 * @returns {Tone.Tremolo} this&#xD;		 */&#xD;	    Tone.Tremolo.prototype.start = function (time) {&#xD;	        this._lfoL.start(time);&#xD;	        this._lfoR.start(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Stop the tremolo.&#xD;		 * @param {Time} [time=now] When the tremolo stops.&#xD;		 * @returns {Tone.Tremolo} this&#xD;		 */&#xD;	    Tone.Tremolo.prototype.stop = function (time) {&#xD;	        this._lfoL.stop(time);&#xD;	        this._lfoR.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Sync the effect to the transport.&#xD;		 * @param {Time} [delay=0] Delay time before starting the effect after the&#xD;		 *                              Transport has started.&#xD;		 * @returns {Tone.AutoFilter} this&#xD;		 */&#xD;	    Tone.Tremolo.prototype.sync = function (delay) {&#xD;	        this._lfoL.sync(delay);&#xD;	        this._lfoR.sync(delay);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * Unsync the filter from the transport&#xD;		 * @returns {Tone.Tremolo} this&#xD;		 */&#xD;	    Tone.Tremolo.prototype.unsync = function () {&#xD;	        this._lfoL.unsync();&#xD;	        this._lfoR.unsync();&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * The Tremolo&apos;s oscillator type.&#xD;		 * @memberOf Tone.Tremolo#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Tremolo.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfoL.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._lfoL.type = type;&#xD;	            this._lfoR.type = type;&#xD;	        }&#xD;	    });&#xD;	    /** &#xD;		 * Amount of stereo spread. When set to 0, both LFO&apos;s will be panned centrally.&#xD;		 * When set to 180, LFO&apos;s will be panned hard left and right respectively.&#xD;		 * @memberOf Tone.Tremolo#&#xD;		 * @type {Degrees}&#xD;		 * @name spread&#xD;		 */&#xD;	    Object.defineProperty(Tone.Tremolo.prototype, &apos;spread&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfoR.phase - this._lfoL.phase;    //180&#xD;	        },&#xD;	        set: function (spread) {&#xD;	            this._lfoL.phase = 90 - spread / 2;&#xD;	            this._lfoR.phase = spread / 2 + 90;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Tremolo} this&#xD;		 */&#xD;	    Tone.Tremolo.prototype.dispose = function () {&#xD;	        Tone.StereoEffect.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this._lfoL.dispose();&#xD;	        this._lfoL = null;&#xD;	        this._lfoR.dispose();&#xD;	        this._lfoR = null;&#xD;	        this._amplitudeL.dispose();&#xD;	        this._amplitudeL = null;&#xD;	        this._amplitudeR.dispose();&#xD;	        this._amplitudeR = null;&#xD;	        this.frequency = null;&#xD;	        this.depth = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Tremolo;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A Vibrato effect composed of a Tone.Delay and a Tone.LFO. The LFO&#xD;		 *         modulates the delayTime of the delay, causing the pitch to rise&#xD;		 *         and fall. &#xD;		 *  @extends {Tone.Effect}&#xD;		 *  @param {Frequency} frequency The frequency of the vibrato.&#xD;		 *  @param {NormalRange} depth The amount the pitch is modulated.&#xD;		 */&#xD;	    Tone.Vibrato = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ], Tone.Vibrato.defaults);&#xD;	        Tone.Effect.call(this, options);&#xD;	        /**&#xD;			 *  The delay node used for the vibrato effect&#xD;			 *  @type {Tone.Delay}&#xD;			 *  @private&#xD;			 */&#xD;	        this._delayNode = new Tone.Delay(0, options.maxDelay);&#xD;	        /**&#xD;			 *  The LFO used to control the vibrato&#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfo = new Tone.LFO({&#xD;	            &apos;type&apos;: options.type,&#xD;	            &apos;min&apos;: 0,&#xD;	            &apos;max&apos;: options.maxDelay,&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;phase&apos;: -90    //offse the phase so the resting position is in the center&#xD;	        }).start().connect(this._delayNode.delayTime);&#xD;	        /**&#xD;			 *  The frequency of the vibrato&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this._lfo.frequency;&#xD;	        /**&#xD;			 *  The depth of the vibrato. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.depth = this._lfo.amplitude;&#xD;	        this.depth.value = options.depth;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this.effectSend.chain(this._delayNode, this.effectReturn);&#xD;	    };&#xD;	    Tone.extend(Tone.Vibrato, Tone.Effect);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Vibrato.defaults = {&#xD;	        &apos;maxDelay&apos;: 0.005,&#xD;	        &apos;frequency&apos;: 5,&#xD;	        &apos;depth&apos;: 0.1,&#xD;	        &apos;type&apos;: &apos;sine&apos;&#xD;	    };&#xD;	    /**&#xD;		 * Type of oscillator attached to the Vibrato.&#xD;		 * @memberOf Tone.Vibrato#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.Vibrato.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._lfo.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._lfo.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Vibrato} this&#xD;		 */&#xD;	    Tone.Vibrato.prototype.dispose = function () {&#xD;	        Tone.Effect.prototype.dispose.call(this);&#xD;	        this._delayNode.dispose();&#xD;	        this._delayNode = null;&#xD;	        this._lfo.dispose();&#xD;	        this._lfo = null;&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;depth&apos;&#xD;	        ]);&#xD;	        this.frequency = null;&#xD;	        this.depth = null;&#xD;	    };&#xD;	    return Tone.Vibrato;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Event abstracts away Tone.Transport.schedule and provides a schedulable&#xD;		 *          callback for a single or repeatable events along the timeline. &#xD;		 *&#xD;		 *  @extends {Tone}&#xD;		 *  @param {function} callback The callback to invoke at the time. &#xD;		 *  @param {*} value The value or values which should be passed to&#xD;		 *                      the callback function on invocation.  &#xD;		 *  @example&#xD;		 * var chord = new Tone.Event(function(time, chord){&#xD;		 * 	//the chord as well as the exact time of the event&#xD;		 * 	//are passed in as arguments to the callback function&#xD;		 * }, ["D4", "E4", "F4"]);&#xD;		 * //start the chord at the beginning of the transport timeline&#xD;		 * chord.start();&#xD;		 * //loop it every measure for 8 measures&#xD;		 * chord.loop = 8;&#xD;		 * chord.loopEnd = "1m";&#xD;		 */&#xD;	    Tone.Event = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;value&apos;&#xD;	        ], Tone.Event.defaults);&#xD;	        /**&#xD;			 *  Loop value&#xD;			 *  @type  {Boolean|Positive}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loop = options.loop;&#xD;	        /**&#xD;			 *  The callback to invoke. &#xD;			 *  @type  {Function}&#xD;			 */&#xD;	        this.callback = options.callback;&#xD;	        /**&#xD;			 *  The value which is passed to the&#xD;			 *  callback function.&#xD;			 *  @type  {*}&#xD;			 *  @private&#xD;			 */&#xD;	        this.value = options.value;&#xD;	        /**&#xD;			 *  When the note is scheduled to start.&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopStart = this.toTicks(options.loopStart);&#xD;	        /**&#xD;			 *  When the note is scheduled to start.&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopEnd = this.toTicks(options.loopEnd);&#xD;	        /**&#xD;			 *  Tracks the scheduled events&#xD;			 *  @type {Tone.TimelineState}&#xD;			 *  @private&#xD;			 */&#xD;	        this._state = new Tone.TimelineState(Tone.State.Stopped);&#xD;	        /**&#xD;			 *  The playback speed of the note. A speed of 1&#xD;			 *  is no change. &#xD;			 *  @private&#xD;			 *  @type {Positive}&#xD;			 */&#xD;	        this._playbackRate = 1;&#xD;	        /**&#xD;			 *  A delay time from when the event is scheduled to start&#xD;			 *  @type {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._startOffset = 0;&#xD;	        /**&#xD;			 *  The probability that the callback will be invoked&#xD;			 *  at the scheduled time. &#xD;			 *  @type {NormalRange}&#xD;			 *  @example&#xD;			 * //the callback will be invoked 50% of the time&#xD;			 * event.probability = 0.5;&#xD;			 */&#xD;	        this.probability = options.probability;&#xD;	        /**&#xD;			 *  If set to true, will apply small (+/-0.02 seconds) random variation&#xD;			 *  to the callback time. If the value is given as a time, it will randomize&#xD;			 *  by that amount.&#xD;			 *  @example&#xD;			 * event.humanize = true;&#xD;			 *  @type {Boolean|Time}&#xD;			 */&#xD;	        this.humanize = options.humanize;&#xD;	        /**&#xD;			 *  If mute is true, the callback won&apos;t be&#xD;			 *  invoked.&#xD;			 *  @type {Boolean}&#xD;			 */&#xD;	        this.mute = options.mute;&#xD;	        //set the initial values&#xD;	        this.playbackRate = options.playbackRate;&#xD;	    };&#xD;	    Tone.extend(Tone.Event);&#xD;	    /**&#xD;		 *  The default values&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Event.defaults = {&#xD;	        &apos;callback&apos;: Tone.noOp,&#xD;	        &apos;loop&apos;: false,&#xD;	        &apos;loopEnd&apos;: &apos;1m&apos;,&#xD;	        &apos;loopStart&apos;: 0,&#xD;	        &apos;playbackRate&apos;: 1,&#xD;	        &apos;value&apos;: null,&#xD;	        &apos;probability&apos;: 1,&#xD;	        &apos;mute&apos;: false,&#xD;	        &apos;humanize&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Reschedule all of the events along the timeline&#xD;		 *  with the updated values.&#xD;		 *  @param {Time} after Only reschedules events after the given time.&#xD;		 *  @return  {Tone.Event}  this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Event.prototype._rescheduleEvents = function (after) {&#xD;	        //if no argument is given, schedules all of the events&#xD;	        after = this.defaultArg(after, -1);&#xD;	        this._state.forEachFrom(after, function (event) {&#xD;	            var duration;&#xD;	            if (event.state === Tone.State.Started) {&#xD;	                if (!this.isUndef(event.id)) {&#xD;	                    Tone.Transport.clear(event.id);&#xD;	                }&#xD;	                var startTick = event.time + Math.round(this.startOffset / this._playbackRate);&#xD;	                if (this._loop) {&#xD;	                    duration = Infinity;&#xD;	                    if (this.isNumber(this._loop)) {&#xD;	                        duration = this._loop * this._getLoopDuration();&#xD;	                    }&#xD;	                    var nextEvent = this._state.getAfter(startTick);&#xD;	                    if (nextEvent !== null) {&#xD;	                        duration = Math.min(duration, nextEvent.time - startTick);&#xD;	                    }&#xD;	                    if (duration !== Infinity) {&#xD;	                        //schedule a stop since it&apos;s finite duration&#xD;	                        this._state.setStateAtTime(Tone.State.Stopped, startTick + duration + 1);&#xD;	                        duration = Tone.Time(duration, &apos;i&apos;);&#xD;	                    }&#xD;	                    var interval = Tone.Time(this._getLoopDuration(), &apos;i&apos;);&#xD;	                    event.id = Tone.Transport.scheduleRepeat(this._tick.bind(this), interval, Tone.TransportTime(startTick, &apos;i&apos;), duration);&#xD;	                } else {&#xD;	                    event.id = Tone.Transport.schedule(this._tick.bind(this), startTick + &apos;i&apos;);&#xD;	                }&#xD;	            }&#xD;	        }.bind(this));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the note, either "started" or "stopped".&#xD;		 *  @type {String}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._state.getValueAtTime(Tone.Transport.ticks);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The start from the scheduled start time&#xD;		 *  @type {Ticks}&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @name startOffset&#xD;		 *  @private&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;startOffset&apos;, {&#xD;	        get: function () {&#xD;	            return this._startOffset;&#xD;	        },&#xD;	        set: function (offset) {&#xD;	            this._startOffset = offset;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Start the note at the given time. &#xD;		 *  @param  {TimelinePosition}  time  When the note should start.&#xD;		 *  @return  {Tone.Event}  this&#xD;		 */&#xD;	    Tone.Event.prototype.start = function (time) {&#xD;	        time = this.toTicks(time);&#xD;	        if (this._state.getValueAtTime(time) === Tone.State.Stopped) {&#xD;	            this._state.add({&#xD;	                &apos;state&apos;: Tone.State.Started,&#xD;	                &apos;time&apos;: time,&#xD;	                &apos;id&apos;: undefined&#xD;	            });&#xD;	            this._rescheduleEvents(time);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the Event at the given time.&#xD;		 *  @param  {TimelinePosition}  time  When the note should stop.&#xD;		 *  @return  {Tone.Event}  this&#xD;		 */&#xD;	    Tone.Event.prototype.stop = function (time) {&#xD;	        this.cancel(time);&#xD;	        time = this.toTicks(time);&#xD;	        if (this._state.getValueAtTime(time) === Tone.State.Started) {&#xD;	            this._state.setStateAtTime(Tone.State.Stopped, time);&#xD;	            var previousEvent = this._state.getBefore(time);&#xD;	            var reschedulTime = time;&#xD;	            if (previousEvent !== null) {&#xD;	                reschedulTime = previousEvent.time;&#xD;	            }&#xD;	            this._rescheduleEvents(reschedulTime);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel all scheduled events greater than or equal to the given time&#xD;		 *  @param  {TimelinePosition}  [time=0]  The time after which events will be cancel.&#xD;		 *  @return  {Tone.Event}  this&#xD;		 */&#xD;	    Tone.Event.prototype.cancel = function (time) {&#xD;	        time = this.defaultArg(time, -Infinity);&#xD;	        time = this.toTicks(time);&#xD;	        this._state.forEachFrom(time, function (event) {&#xD;	            Tone.Transport.clear(event.id);&#xD;	        });&#xD;	        this._state.cancel(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The callback function invoker. Also &#xD;		 *  checks if the Event is done playing&#xD;		 *  @param  {Number}  time  The time of the event in seconds&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Event.prototype._tick = function (time) {&#xD;	        if (!this.mute &amp;&amp; this._state.getValueAtTime(Tone.Transport.ticks) === Tone.State.Started) {&#xD;	            if (this.probability &lt; 1 &amp;&amp; Math.random() &gt; this.probability) {&#xD;	                return;&#xD;	            }&#xD;	            if (this.humanize) {&#xD;	                var variation = 0.02;&#xD;	                if (!this.isBoolean(this.humanize)) {&#xD;	                    variation = this.toSeconds(this.humanize);&#xD;	                }&#xD;	                time += (Math.random() * 2 - 1) * variation;&#xD;	            }&#xD;	            this.callback(time, this.value);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Get the duration of the loop.&#xD;		 *  @return  {Ticks}&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Event.prototype._getLoopDuration = function () {&#xD;	        return Math.round((this._loopEnd - this._loopStart) / this._playbackRate);&#xD;	    };&#xD;	    /**&#xD;		 *  If the note should loop or not&#xD;		 *  between Tone.Event.loopStart and &#xD;		 *  Tone.Event.loopEnd. An integer&#xD;		 *  value corresponds to the number of&#xD;		 *  loops the Event does after it starts.&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @type {Boolean|Positive}&#xD;		 *  @name loop&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;loop&apos;, {&#xD;	        get: function () {&#xD;	            return this._loop;&#xD;	        },&#xD;	        set: function (loop) {&#xD;	            this._loop = loop;&#xD;	            this._rescheduleEvents();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	The playback rate of the note. Defaults to 1.&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @type {Positive}&#xD;		 *  @name playbackRate&#xD;		 *  @example&#xD;		 * note.loop = true;&#xD;		 * //repeat the note twice as fast&#xD;		 * note.playbackRate = 2;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._playbackRate = rate;&#xD;	            this._rescheduleEvents();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The loopEnd point is the time the event will loop&#xD;		 *  if Tone.Event.loop is true.&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @type {TransportTime}&#xD;		 *  @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopEnd, &apos;i&apos;).toNotation();&#xD;	        },&#xD;	        set: function (loopEnd) {&#xD;	            this._loopEnd = this.toTicks(loopEnd);&#xD;	            if (this._loop) {&#xD;	                this._rescheduleEvents();&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The time when the loop should start. &#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @type {TransportTime}&#xD;		 *  @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopStart, &apos;i&apos;).toNotation();&#xD;	        },&#xD;	        set: function (loopStart) {&#xD;	            this._loopStart = this.toTicks(loopStart);&#xD;	            if (this._loop) {&#xD;	                this._rescheduleEvents();&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The current progress of the loop interval.&#xD;		 *  Returns 0 if the event is not started yet or&#xD;		 *  it is not set to loop.&#xD;		 *  @memberOf Tone.Event#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name progress&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Event.prototype, &apos;progress&apos;, {&#xD;	        get: function () {&#xD;	            if (this._loop) {&#xD;	                var ticks = Tone.Transport.ticks;&#xD;	                var lastEvent = this._state.get(ticks);&#xD;	                if (lastEvent !== null &amp;&amp; lastEvent.state === Tone.State.Started) {&#xD;	                    var loopDuration = this._getLoopDuration();&#xD;	                    var progress = (ticks - lastEvent.time) % loopDuration;&#xD;	                    return progress / loopDuration;&#xD;	                } else {&#xD;	                    return 0;&#xD;	                }&#xD;	            } else {&#xD;	                return 0;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Event}  this&#xD;		 */&#xD;	    Tone.Event.prototype.dispose = function () {&#xD;	        this.cancel();&#xD;	        this._state.dispose();&#xD;	        this._state = null;&#xD;	        this.callback = null;&#xD;	        this.value = null;&#xD;	    };&#xD;	    return Tone.Event;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.Loop creates a looped callback at the &#xD;		 *         specified interval. The callback can be &#xD;		 *         started, stopped and scheduled along&#xD;		 *         the Transport&apos;s timeline. &#xD;		 *  @example&#xD;		 * var loop = new Tone.Loop(function(time){&#xD;		 * 	//triggered every eighth note. &#xD;		 * 	console.log(time);&#xD;		 * }, "8n").start(0);&#xD;		 * Tone.Transport.start();&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Function} callback The callback to invoke with the event.&#xD;		 *  @param {Time} interval The time between successive callback calls. &#xD;		 */&#xD;	    Tone.Loop = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;interval&apos;&#xD;	        ], Tone.Loop.defaults);&#xD;	        /**&#xD;			 *  The event which produces the callbacks&#xD;			 */&#xD;	        this._event = new Tone.Event({&#xD;	            &apos;callback&apos;: this._tick.bind(this),&#xD;	            &apos;loop&apos;: true,&#xD;	            &apos;loopEnd&apos;: options.interval,&#xD;	            &apos;playbackRate&apos;: options.playbackRate,&#xD;	            &apos;probability&apos;: options.probability&#xD;	        });&#xD;	        /**&#xD;			 *  The callback to invoke with the next event in the pattern&#xD;			 *  @type {Function}&#xD;			 */&#xD;	        this.callback = options.callback;&#xD;	        //set the iterations&#xD;	        this.iterations = options.iterations;&#xD;	    };&#xD;	    Tone.extend(Tone.Loop);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Loop.defaults = {&#xD;	        &apos;interval&apos;: &apos;4n&apos;,&#xD;	        &apos;callback&apos;: Tone.noOp,&#xD;	        &apos;playbackRate&apos;: 1,&#xD;	        &apos;iterations&apos;: Infinity,&#xD;	        &apos;probability&apos;: true,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Start the loop at the specified time along the Transport&apos;s&#xD;		 *  timeline.&#xD;		 *  @param  {TimelinePosition=}  time  When to start the Loop.&#xD;		 *  @return  {Tone.Loop}  this&#xD;		 */&#xD;	    Tone.Loop.prototype.start = function (time) {&#xD;	        this._event.start(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the loop at the given time.&#xD;		 *  @param  {TimelinePosition=}  time  When to stop the Arpeggio&#xD;		 *  @return  {Tone.Loop}  this&#xD;		 */&#xD;	    Tone.Loop.prototype.stop = function (time) {&#xD;	        this._event.stop(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel all scheduled events greater than or equal to the given time&#xD;		 *  @param  {TimelinePosition}  [time=0]  The time after which events will be cancel.&#xD;		 *  @return  {Tone.Loop}  this&#xD;		 */&#xD;	    Tone.Loop.prototype.cancel = function (time) {&#xD;	        this._event.cancel(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Internal function called when the notes should be called&#xD;		 *  @param  {Number}  time  The time the event occurs&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Loop.prototype._tick = function (time) {&#xD;	        this.callback(time);&#xD;	    };&#xD;	    /**&#xD;		 *  The state of the Loop, either started or stopped.&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {String}&#xD;		 *  @name state&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.state;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The progress of the loop as a value between 0-1. 0, when&#xD;		 *  the loop is stopped or done iterating. &#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name progress&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;progress&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.progress;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The time between successive callbacks. &#xD;		 *  @example&#xD;		 * loop.interval = "8n"; //loop every 8n&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {Time}&#xD;		 *  @name interval&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;interval&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.loopEnd;&#xD;	        },&#xD;	        set: function (interval) {&#xD;	            this._event.loopEnd = interval;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The playback rate of the loop. The normal playback rate is 1 (no change). &#xD;		 *  A `playbackRate` of 2 would be twice as fast. &#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {Time}&#xD;		 *  @name playbackRate&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._event.playbackRate = rate;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Random variation +/-0.01s to the scheduled time. &#xD;		 *  Or give it a time value which it will randomize by.&#xD;		 *  @type {Boolean|Time}&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @name humanize&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;humanize&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.humanize;&#xD;	        },&#xD;	        set: function (variation) {&#xD;	            this._event.humanize = variation;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The probably of the callback being invoked.&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name probability&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;probability&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.probability;&#xD;	        },&#xD;	        set: function (prob) {&#xD;	            this._event.probability = prob;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Muting the Loop means that no callbacks are invoked.&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {Boolean}&#xD;		 *  @name mute&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._event.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._event.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The number of iterations of the loop. The default&#xD;		 *  value is Infinity (loop forever).&#xD;		 *  @memberOf Tone.Loop#&#xD;		 *  @type {Positive}&#xD;		 *  @name iterations&#xD;		 */&#xD;	    Object.defineProperty(Tone.Loop.prototype, &apos;iterations&apos;, {&#xD;	        get: function () {&#xD;	            if (this._event.loop === true) {&#xD;	                return Infinity;&#xD;	            } else {&#xD;	                return this._event.loop;&#xD;	            }&#xD;	            return this._pattern.index;&#xD;	        },&#xD;	        set: function (iters) {&#xD;	            if (iters === Infinity) {&#xD;	                this._event.loop = true;&#xD;	            } else {&#xD;	                this._event.loop = iters;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Loop}  this&#xD;		 */&#xD;	    Tone.Loop.prototype.dispose = function () {&#xD;	        this._event.dispose();&#xD;	        this._event = null;&#xD;	        this.callback = null;&#xD;	    };&#xD;	    return Tone.Loop;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.Part is a collection Tone.Events which can be&#xD;		 *         started/stoped and looped as a single unit.&#xD;		 *&#xD;		 *  @extends {Tone.Event}&#xD;		 *  @param {Function} callback The callback to invoke on each event&#xD;		 *  @param {Array} events the array of events&#xD;		 *  @example&#xD;		 * var part = new Tone.Part(function(time, note){&#xD;		 * 	//the notes given as the second element in the array&#xD;		 * 	//will be passed in as the second argument&#xD;		 * 	synth.triggerAttackRelease(note, "8n", time);&#xD;		 * }, [[0, "C2"], ["0:2", "C3"], ["0:3:2", "G2"]]);&#xD;		 *  @example&#xD;		 * //use an array of objects as long as the object has a "time" attribute&#xD;		 * var part = new Tone.Part(function(time, value){&#xD;		 * 	//the value is an object which contains both the note and the velocity&#xD;		 * 	synth.triggerAttackRelease(value.note, "8n", time, value.velocity);&#xD;		 * }, [{"time" : 0, "note" : "C3", "velocity": 0.9}, &#xD;		 * 	   {"time" : "0:2", "note" : "C4", "velocity": 0.5}&#xD;		 * ]).start(0);&#xD;		 */&#xD;	    Tone.Part = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;events&apos;&#xD;	        ], Tone.Part.defaults);&#xD;	        /**&#xD;			 *  If the part is looping or not&#xD;			 *  @type  {Boolean|Positive}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loop = options.loop;&#xD;	        /**&#xD;			 *  When the note is scheduled to start.&#xD;			 *  @type  {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopStart = this.toTicks(options.loopStart);&#xD;	        /**&#xD;			 *  When the note is scheduled to start.&#xD;			 *  @type  {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopEnd = this.toTicks(options.loopEnd);&#xD;	        /**&#xD;			 *  The playback rate of the part&#xD;			 *  @type  {Positive}&#xD;			 *  @private&#xD;			 */&#xD;	        this._playbackRate = options.playbackRate;&#xD;	        /**&#xD;			 *  private holder of probability value&#xD;			 *  @type {NormalRange}&#xD;			 *  @private&#xD;			 */&#xD;	        this._probability = options.probability;&#xD;	        /**&#xD;			 *  the amount of variation from the&#xD;			 *  given time. &#xD;			 *  @type {Boolean|Time}&#xD;			 *  @private&#xD;			 */&#xD;	        this._humanize = options.humanize;&#xD;	        /**&#xD;			 *  The start offset&#xD;			 *  @type {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._startOffset = 0;&#xD;	        /**&#xD;			 *  Keeps track of the current state&#xD;			 *  @type {Tone.TimelineState}&#xD;			 *  @private&#xD;			 */&#xD;	        this._state = new Tone.TimelineState(Tone.State.Stopped);&#xD;	        /**&#xD;			 *  An array of Objects. &#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._events = [];&#xD;	        /**&#xD;			 *  The callback to invoke at all the scheduled events.&#xD;			 *  @type {Function}&#xD;			 */&#xD;	        this.callback = options.callback;&#xD;	        /**&#xD;			 *  If mute is true, the callback won&apos;t be&#xD;			 *  invoked.&#xD;			 *  @type {Boolean}&#xD;			 */&#xD;	        this.mute = options.mute;&#xD;	        //add the events&#xD;	        var events = this.defaultArg(options.events, []);&#xD;	        if (!this.isUndef(options.events)) {&#xD;	            for (var i = 0; i &lt; events.length; i++) {&#xD;	                if (Array.isArray(events[i])) {&#xD;	                    this.add(events[i][0], events[i][1]);&#xD;	                } else {&#xD;	                    this.add(events[i]);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Part, Tone.Event);&#xD;	    /**&#xD;		 *  The default values&#xD;		 *  @type  {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.Part.defaults = {&#xD;	        &apos;callback&apos;: Tone.noOp,&#xD;	        &apos;loop&apos;: false,&#xD;	        &apos;loopEnd&apos;: &apos;1m&apos;,&#xD;	        &apos;loopStart&apos;: 0,&#xD;	        &apos;playbackRate&apos;: 1,&#xD;	        &apos;probability&apos;: 1,&#xD;	        &apos;humanize&apos;: false,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Start the part at the given time. &#xD;		 *  @param  {TransportTime}  time    When to start the part.&#xD;		 *  @param  {Time=}  offset  The offset from the start of the part&#xD;		 *                           to begin playing at.&#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.start = function (time, offset) {&#xD;	        var ticks = this.toTicks(time);&#xD;	        if (this._state.getValueAtTime(ticks) !== Tone.State.Started) {&#xD;	            if (this._loop) {&#xD;	                offset = this.defaultArg(offset, this._loopStart);&#xD;	            } else {&#xD;	                offset = this.defaultArg(offset, 0);&#xD;	            }&#xD;	            offset = this.toTicks(offset);&#xD;	            this._state.add({&#xD;	                &apos;state&apos;: Tone.State.Started,&#xD;	                &apos;time&apos;: ticks,&#xD;	                &apos;offset&apos;: offset&#xD;	            });&#xD;	            this._forEach(function (event) {&#xD;	                this._startNote(event, ticks, offset);&#xD;	            });&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start the event in the given event at the correct time given&#xD;		 *  the ticks and offset and looping.&#xD;		 *  @param  {Tone.Event}  event &#xD;		 *  @param  {Ticks}  ticks&#xD;		 *  @param  {Ticks}  offset&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._startNote = function (event, ticks, offset) {&#xD;	        ticks -= offset;&#xD;	        if (this._loop) {&#xD;	            if (event.startOffset &gt;= this._loopStart &amp;&amp; event.startOffset &lt; this._loopEnd) {&#xD;	                if (event.startOffset &lt; offset) {&#xD;	                    //start it on the next loop&#xD;	                    ticks += this._getLoopDuration();&#xD;	                }&#xD;	                event.start(Tone.TransportTime(ticks, &apos;i&apos;));&#xD;	            } else if (event.startOffset &lt; this._loopStart &amp;&amp; event.startOffset &gt;= offset) {&#xD;	                event.loop = false;&#xD;	                event.start(Tone.TransportTime(ticks, &apos;i&apos;));&#xD;	            }&#xD;	        } else {&#xD;	            if (event.startOffset &gt;= offset) {&#xD;	                event.start(Tone.TransportTime(ticks, &apos;i&apos;));&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  The start from the scheduled start time&#xD;		 *  @type {Ticks}&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @name startOffset&#xD;		 *  @private&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;startOffset&apos;, {&#xD;	        get: function () {&#xD;	            return this._startOffset;&#xD;	        },&#xD;	        set: function (offset) {&#xD;	            this._startOffset = offset;&#xD;	            this._forEach(function (event) {&#xD;	                event.startOffset += this._startOffset;&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Stop the part at the given time.&#xD;		 *  @param  {TimelinePosition}  time  When to stop the part.&#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.stop = function (time) {&#xD;	        var ticks = this.toTicks(time);&#xD;	        this._state.cancel(ticks);&#xD;	        this._state.setStateAtTime(Tone.State.Stopped, ticks);&#xD;	        this._forEach(function (event) {&#xD;	            event.stop(time);&#xD;	        });&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get/Set an Event&apos;s value at the given time. &#xD;		 *  If a value is passed in and no event exists at&#xD;		 *  the given time, one will be created with that value. &#xD;		 *  If two events are at the same time, the first one will&#xD;		 *  be returned.&#xD;		 *  @example&#xD;		 * part.at("1m"); //returns the part at the first measure&#xD;		 *&#xD;		 * part.at("2m", "C2"); //set the value at "2m" to C2. &#xD;		 * //if an event didn&apos;t exist at that time, it will be created.&#xD;		 *  @param {TransportTime} time The time of the event to get or set.&#xD;		 *  @param {*=} value If a value is passed in, the value of the&#xD;		 *                    event at the given time will be set to it.&#xD;		 *  @return {Tone.Event} the event at the time&#xD;		 */&#xD;	    Tone.Part.prototype.at = function (time, value) {&#xD;	        time = Tone.TransportTime(time);&#xD;	        var tickTime = Tone.Time(1, &apos;i&apos;).toSeconds();&#xD;	        for (var i = 0; i &lt; this._events.length; i++) {&#xD;	            var event = this._events[i];&#xD;	            if (Math.abs(time.toTicks() - event.startOffset) &lt; tickTime) {&#xD;	                if (!this.isUndef(value)) {&#xD;	                    event.value = value;&#xD;	                }&#xD;	                return event;&#xD;	            }&#xD;	        }&#xD;	        //if there was no event at that time, create one&#xD;	        if (!this.isUndef(value)) {&#xD;	            this.add(time, value);&#xD;	            //return the new event&#xD;	            return this._events[this._events.length - 1];&#xD;	        } else {&#xD;	            return null;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Add a an event to the part. &#xD;		 *  @param {Time} time The time the note should start.&#xD;		 *                            If an object is passed in, it should&#xD;		 *                            have a &apos;time&apos; attribute and the rest&#xD;		 *                            of the object will be used as the &apos;value&apos;.&#xD;		 *  @param  {Tone.Event|*}  value &#xD;		 *  @returns {Tone.Part} this&#xD;		 *  @example&#xD;		 * part.add("1m", "C#+11");&#xD;		 */&#xD;	    Tone.Part.prototype.add = function (time, value) {&#xD;	        //extract the parameters&#xD;	        if (time.hasOwnProperty(&apos;time&apos;)) {&#xD;	            value = time;&#xD;	            time = value.time;&#xD;	        }&#xD;	        time = this.toTicks(time);&#xD;	        var event;&#xD;	        if (value instanceof Tone.Event) {&#xD;	            event = value;&#xD;	            event.callback = this._tick.bind(this);&#xD;	        } else {&#xD;	            event = new Tone.Event({&#xD;	                &apos;callback&apos;: this._tick.bind(this),&#xD;	                &apos;value&apos;: value&#xD;	            });&#xD;	        }&#xD;	        //the start offset&#xD;	        event.startOffset = time;&#xD;	        //initialize the values&#xD;	        event.set({&#xD;	            &apos;loopEnd&apos;: this.loopEnd,&#xD;	            &apos;loopStart&apos;: this.loopStart,&#xD;	            &apos;loop&apos;: this.loop,&#xD;	            &apos;humanize&apos;: this.humanize,&#xD;	            &apos;playbackRate&apos;: this.playbackRate,&#xD;	            &apos;probability&apos;: this.probability&#xD;	        });&#xD;	        this._events.push(event);&#xD;	        //start the note if it should be played right now&#xD;	        this._restartEvent(event);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Restart the given event&#xD;		 *  @param  {Tone.Event}  event &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._restartEvent = function (event) {&#xD;	        this._state.forEach(function (stateEvent) {&#xD;	            if (stateEvent.state === Tone.State.Started) {&#xD;	                this._startNote(event, stateEvent.time, stateEvent.offset);&#xD;	            } else {&#xD;	                //stop the note&#xD;	                event.stop(Tone.TransportTime(stateEvent.time, &apos;i&apos;));&#xD;	            }&#xD;	        }.bind(this));&#xD;	    };&#xD;	    /**&#xD;		 *  Remove an event from the part. Will recursively iterate&#xD;		 *  into nested parts to find the event.&#xD;		 *  @param {Time} time The time of the event&#xD;		 *  @param {*} value Optionally select only a specific event value&#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.remove = function (time, value) {&#xD;	        //extract the parameters&#xD;	        if (time.hasOwnProperty(&apos;time&apos;)) {&#xD;	            value = time;&#xD;	            time = value.time;&#xD;	        }&#xD;	        time = this.toTicks(time);&#xD;	        for (var i = this._events.length - 1; i &gt;= 0; i--) {&#xD;	            var event = this._events[i];&#xD;	            if (event instanceof Tone.Part) {&#xD;	                event.remove(time, value);&#xD;	            } else {&#xD;	                if (event.startOffset === time) {&#xD;	                    if (this.isUndef(value) || !this.isUndef(value) &amp;&amp; event.value === value) {&#xD;	                        this._events.splice(i, 1);&#xD;	                        event.dispose();&#xD;	                    }&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove all of the notes from the group. &#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.removeAll = function () {&#xD;	        this._forEach(function (event) {&#xD;	            event.dispose();&#xD;	        });&#xD;	        this._events = [];&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Cancel scheduled state change events: i.e. "start" and "stop".&#xD;		 *  @param {TimelinePosition} after The time after which to cancel the scheduled events.&#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.cancel = function (after) {&#xD;	        after = this.toTicks(after);&#xD;	        this._forEach(function (event) {&#xD;	            event.cancel(after);&#xD;	        });&#xD;	        this._state.cancel(after);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over all of the events&#xD;		 *  @param {Function} callback&#xD;		 *  @param {Object} ctx The context&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._forEach = function (callback, ctx) {&#xD;	        ctx = this.defaultArg(ctx, this);&#xD;	        for (var i = this._events.length - 1; i &gt;= 0; i--) {&#xD;	            var e = this._events[i];&#xD;	            if (e instanceof Tone.Part) {&#xD;	                e._forEach(callback, ctx);&#xD;	            } else {&#xD;	                callback.call(ctx, e);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Set the attribute of all of the events&#xD;		 *  @param  {String}  attr  the attribute to set&#xD;		 *  @param  {*}  value      The value to set it to&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._setAll = function (attr, value) {&#xD;	        this._forEach(function (event) {&#xD;	            event[attr] = value;&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 *  Internal tick method&#xD;		 *  @param  {Number}  time  The time of the event in seconds&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._tick = function (time, value) {&#xD;	        if (!this.mute) {&#xD;	            this.callback(time, value);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Determine if the event should be currently looping&#xD;		 *  given the loop boundries of this Part.&#xD;		 *  @param  {Tone.Event}  event  The event to test&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Part.prototype._testLoopBoundries = function (event) {&#xD;	        if (event.startOffset &lt; this._loopStart || event.startOffset &gt;= this._loopEnd) {&#xD;	            event.cancel(0);&#xD;	        } else {&#xD;	            //reschedule it if it&apos;s stopped&#xD;	            if (event.state === Tone.State.Stopped) {&#xD;	                this._restartEvent(event);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  The probability of the notes being triggered.&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {NormalRange}&#xD;		 *  @name probability&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;probability&apos;, {&#xD;	        get: function () {&#xD;	            return this._probability;&#xD;	        },&#xD;	        set: function (prob) {&#xD;	            this._probability = prob;&#xD;	            this._setAll(&apos;probability&apos;, prob);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  If set to true, will apply small random variation&#xD;		 *  to the callback time. If the value is given as a time, it will randomize&#xD;		 *  by that amount.&#xD;		 *  @example&#xD;		 * event.humanize = true;&#xD;		 *  @type {Boolean|Time}&#xD;		 *  @name humanize&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;humanize&apos;, {&#xD;	        get: function () {&#xD;	            return this._humanize;&#xD;	        },&#xD;	        set: function (variation) {&#xD;	            this._humanize = variation;&#xD;	            this._setAll(&apos;humanize&apos;, variation);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  If the part should loop or not&#xD;		 *  between Tone.Part.loopStart and &#xD;		 *  Tone.Part.loopEnd. An integer&#xD;		 *  value corresponds to the number of&#xD;		 *  loops the Part does after it starts.&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {Boolean|Positive}&#xD;		 *  @name loop&#xD;		 *  @example&#xD;		 * //loop the part 8 times&#xD;		 * part.loop = 8;&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;loop&apos;, {&#xD;	        get: function () {&#xD;	            return this._loop;&#xD;	        },&#xD;	        set: function (loop) {&#xD;	            this._loop = loop;&#xD;	            this._forEach(function (event) {&#xD;	                event._loopStart = this._loopStart;&#xD;	                event._loopEnd = this._loopEnd;&#xD;	                event.loop = loop;&#xD;	                this._testLoopBoundries(event);&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The loopEnd point determines when it will &#xD;		 *  loop if Tone.Part.loop is true.&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {TransportTime}&#xD;		 *  @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopEnd, &apos;i&apos;).toNotation();&#xD;	        },&#xD;	        set: function (loopEnd) {&#xD;	            this._loopEnd = this.toTicks(loopEnd);&#xD;	            if (this._loop) {&#xD;	                this._forEach(function (event) {&#xD;	                    event.loopEnd = loopEnd;&#xD;	                    this._testLoopBoundries(event);&#xD;	                });&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The loopStart point determines when it will &#xD;		 *  loop if Tone.Part.loop is true.&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {TransportTime}&#xD;		 *  @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.TransportTime(this._loopStart, &apos;i&apos;).toNotation();&#xD;	        },&#xD;	        set: function (loopStart) {&#xD;	            this._loopStart = this.toTicks(loopStart);&#xD;	            if (this._loop) {&#xD;	                this._forEach(function (event) {&#xD;	                    event.loopStart = this.loopStart;&#xD;	                    this._testLoopBoundries(event);&#xD;	                });&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	The playback rate of the part&#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {Positive}&#xD;		 *  @name playbackRate&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._playbackRate = rate;&#xD;	            this._setAll(&apos;playbackRate&apos;, rate);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	The number of scheduled notes in the part. &#xD;		 *  @memberOf Tone.Part#&#xD;		 *  @type {Positive}&#xD;		 *  @name length&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Part.prototype, &apos;length&apos;, {&#xD;	        get: function () {&#xD;	            return this._events.length;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Part}  this&#xD;		 */&#xD;	    Tone.Part.prototype.dispose = function () {&#xD;	        this.removeAll();&#xD;	        this._state.dispose();&#xD;	        this._state = null;&#xD;	        this.callback = null;&#xD;	        this._events = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Part;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.Pattern arpeggiates between the given notes&#xD;		 *         in a number of patterns. See Tone.CtrlPattern for&#xD;		 *         a full list of patterns.&#xD;		 *  @example&#xD;		 * var pattern = new Tone.Pattern(function(time, note){&#xD;		 *   //the order of the notes passed in depends on the pattern&#xD;		 * }, ["C2", "D4", "E5", "A6"], "upDown");&#xD;		 *  @extends {Tone.Loop}&#xD;		 *  @param {Function} callback The callback to invoke with the&#xD;		 *                             event.&#xD;		 *  @param {Array} values The values to arpeggiate over.&#xD;		 */&#xD;	    Tone.Pattern = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;values&apos;,&#xD;	            &apos;pattern&apos;&#xD;	        ], Tone.Pattern.defaults);&#xD;	        Tone.Loop.call(this, options);&#xD;	        /**&#xD;			 *  The pattern manager&#xD;			 *  @type {Tone.CtrlPattern}&#xD;			 *  @private&#xD;			 */&#xD;	        this._pattern = new Tone.CtrlPattern({&#xD;	            &apos;values&apos;: options.values,&#xD;	            &apos;type&apos;: options.pattern,&#xD;	            &apos;index&apos;: options.index&#xD;	        });&#xD;	    };&#xD;	    Tone.extend(Tone.Pattern, Tone.Loop);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Pattern.defaults = {&#xD;	        &apos;pattern&apos;: Tone.CtrlPattern.Type.Up,&#xD;	        &apos;values&apos;: []&#xD;	    };&#xD;	    /**&#xD;		 *  Internal function called when the notes should be called&#xD;		 *  @param  {Number}  time  The time the event occurs&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Pattern.prototype._tick = function (time) {&#xD;	        this.callback(time, this._pattern.value);&#xD;	        this._pattern.next();&#xD;	    };&#xD;	    /**&#xD;		 *  The current index in the values array.&#xD;		 *  @memberOf Tone.Pattern#&#xD;		 *  @type {Positive}&#xD;		 *  @name index&#xD;		 */&#xD;	    Object.defineProperty(Tone.Pattern.prototype, &apos;index&apos;, {&#xD;	        get: function () {&#xD;	            return this._pattern.index;&#xD;	        },&#xD;	        set: function (i) {&#xD;	            this._pattern.index = i;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The array of events.&#xD;		 *  @memberOf Tone.Pattern#&#xD;		 *  @type {Array}&#xD;		 *  @name values&#xD;		 */&#xD;	    Object.defineProperty(Tone.Pattern.prototype, &apos;values&apos;, {&#xD;	        get: function () {&#xD;	            return this._pattern.values;&#xD;	        },&#xD;	        set: function (vals) {&#xD;	            this._pattern.values = vals;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The current value of the pattern.&#xD;		 *  @memberOf Tone.Pattern#&#xD;		 *  @type {*}&#xD;		 *  @name value&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Pattern.prototype, &apos;value&apos;, {&#xD;	        get: function () {&#xD;	            return this._pattern.value;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The pattern type. See Tone.CtrlPattern for the full list of patterns.&#xD;		 *  @memberOf Tone.Pattern#&#xD;		 *  @type {String}&#xD;		 *  @name pattern&#xD;		 */&#xD;	    Object.defineProperty(Tone.Pattern.prototype, &apos;pattern&apos;, {&#xD;	        get: function () {&#xD;	            return this._pattern.type;&#xD;	        },&#xD;	        set: function (pattern) {&#xD;	            this._pattern.type = pattern;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @return  {Tone.Pattern}  this&#xD;		 */&#xD;	    Tone.Pattern.prototype.dispose = function () {&#xD;	        Tone.Loop.prototype.dispose.call(this);&#xD;	        this._pattern.dispose();&#xD;	        this._pattern = null;&#xD;	    };&#xD;	    return Tone.Pattern;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class A sequence is an alternate notation of a part. Instead&#xD;		 *         of passing in an array of [time, event] pairs, pass&#xD;		 *         in an array of events which will be spaced at the&#xD;		 *         given subdivision. Sub-arrays will subdivide that beat&#xD;		 *         by the number of items are in the array. &#xD;		 *         Sequence notation inspiration from [Tidal](http://yaxu.org/tidal/)&#xD;		 *  @param  {Function}  callback  The callback to invoke with every note&#xD;		 *  @param  {Array}    events  The sequence&#xD;		 *  @param  {Time} subdivision  The subdivision between which events are placed. &#xD;		 *  @extends {Tone.Part}&#xD;		 *  @example&#xD;		 * var seq = new Tone.Sequence(function(time, note){&#xD;		 * 	console.log(note);&#xD;		 * //straight quater notes&#xD;		 * }, ["C4", "E4", "G4", "A4"], "4n");&#xD;		 *  @example&#xD;		 * var seq = new Tone.Sequence(function(time, note){&#xD;		 * 	console.log(note);&#xD;		 * //subdivisions are given as subarrays&#xD;		 * }, ["C4", ["E4", "D4", "E4"], "G4", ["A4", "G4"]]);&#xD;		 */&#xD;	    Tone.Sequence = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;callback&apos;,&#xD;	            &apos;events&apos;,&#xD;	            &apos;subdivision&apos;&#xD;	        ], Tone.Sequence.defaults);&#xD;	        //remove the events&#xD;	        var events = options.events;&#xD;	        delete options.events;&#xD;	        Tone.Part.call(this, options);&#xD;	        /**&#xD;			 *  The subdivison of each note&#xD;			 *  @type  {Ticks}&#xD;			 *  @private&#xD;			 */&#xD;	        this._subdivision = this.toTicks(options.subdivision);&#xD;	        //if no time was passed in, the loop end is the end of the cycle&#xD;	        if (this.isUndef(options.loopEnd) &amp;&amp; !this.isUndef(events)) {&#xD;	            this._loopEnd = events.length * this._subdivision;&#xD;	        }&#xD;	        //defaults to looping&#xD;	        this._loop = true;&#xD;	        //add all of the events&#xD;	        if (!this.isUndef(events)) {&#xD;	            for (var i = 0; i &lt; events.length; i++) {&#xD;	                this.add(i, events[i]);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    Tone.extend(Tone.Sequence, Tone.Part);&#xD;	    /**&#xD;		 *  The default values.&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.Sequence.defaults = { &apos;subdivision&apos;: &apos;4n&apos; };&#xD;	    /**&#xD;		 *  The subdivision of the sequence. This can only be &#xD;		 *  set in the constructor. The subdivision is the &#xD;		 *  interval between successive steps. &#xD;		 *  @type {Time}&#xD;		 *  @memberOf Tone.Sequence#&#xD;		 *  @name subdivision&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.Sequence.prototype, &apos;subdivision&apos;, {&#xD;	        get: function () {&#xD;	            return Tone.Time(this._subdivision, &apos;i&apos;).toNotation();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Get/Set an index of the sequence. If the index contains a subarray, &#xD;		 *  a Tone.Sequence representing that sub-array will be returned. &#xD;		 *  @example&#xD;		 * var sequence = new Tone.Sequence(playNote, ["E4", "C4", "F#4", ["A4", "Bb3"]])&#xD;		 * sequence.at(0)// =&gt; returns "E4"&#xD;		 * //set a value&#xD;		 * sequence.at(0, "G3");&#xD;		 * //get a nested sequence&#xD;		 * sequence.at(3).at(1)// =&gt; returns "Bb3"&#xD;		 * @param {Positive} index The index to get or set&#xD;		 * @param {*} value Optionally pass in the value to set at the given index.&#xD;		 */&#xD;	    Tone.Sequence.prototype.at = function (index, value) {&#xD;	        //if the value is an array, &#xD;	        if (this.isArray(value)) {&#xD;	            //remove the current event at that index&#xD;	            this.remove(index);&#xD;	        }&#xD;	        //call the parent&apos;s method&#xD;	        return Tone.Part.prototype.at.call(this, this._indexTime(index), value);&#xD;	    };&#xD;	    /**&#xD;		 *  Add an event at an index, if there&apos;s already something&#xD;		 *  at that index, overwrite it. If `value` is an array, &#xD;		 *  it will be parsed as a subsequence.&#xD;		 *  @param {Number} index The index to add the event to&#xD;		 *  @param {*} value The value to add at that index&#xD;		 *  @returns {Tone.Sequence} this&#xD;		 */&#xD;	    Tone.Sequence.prototype.add = function (index, value) {&#xD;	        if (value === null) {&#xD;	            return this;&#xD;	        }&#xD;	        if (this.isArray(value)) {&#xD;	            //make a subsequence and add that to the sequence&#xD;	            var subSubdivision = Math.round(this._subdivision / value.length);&#xD;	            value = new Tone.Sequence(this._tick.bind(this), value, Tone.Time(subSubdivision, &apos;i&apos;));&#xD;	        }&#xD;	        Tone.Part.prototype.add.call(this, this._indexTime(index), value);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Remove a value from the sequence by index&#xD;		 *  @param {Number} index The index of the event to remove&#xD;		 *  @returns {Tone.Sequence} this&#xD;		 */&#xD;	    Tone.Sequence.prototype.remove = function (index, value) {&#xD;	        Tone.Part.prototype.remove.call(this, this._indexTime(index), value);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get the time of the index given the Sequence&apos;s subdivision&#xD;		 *  @param  {Number}  index &#xD;		 *  @return  {Time}  The time of that index&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Sequence.prototype._indexTime = function (index) {&#xD;	        if (index instanceof Tone.TransportTime) {&#xD;	            return index;&#xD;	        } else {&#xD;	            return Tone.TransportTime(index * this._subdivision + this.startOffset, &apos;i&apos;);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.Sequence} this&#xD;		 */&#xD;	    Tone.Sequence.prototype.dispose = function () {&#xD;	        Tone.Part.prototype.dispose.call(this);&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Sequence;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.PulseOscillator is a pulse oscillator with control over pulse width,&#xD;		 *         also known as the duty cycle. At 50% duty cycle (width = 0.5) the wave is &#xD;		 *         a square and only odd-numbered harmonics are present. At all other widths &#xD;		 *         even-numbered harmonics are present. Read more &#xD;		 *         [here](https://wigglewave.wordpress.com/2014/08/16/pulse-waveforms-and-harmonics/).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @param {Frequency} [frequency] The frequency of the oscillator&#xD;		 *  @param {NormalRange} [width] The width of the pulse&#xD;		 *  @example&#xD;		 * var pulse = new Tone.PulseOscillator("E5", 0.4).toMaster().start();&#xD;		 */&#xD;	    Tone.PulseOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;width&apos;&#xD;	        ], Tone.Oscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  The width of the pulse. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.width = new Tone.Signal(options.width, Tone.Type.NormalRange);&#xD;	        /**&#xD;			 *  gate the width amount&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._widthGate = new Tone.Gain();&#xD;	        /**&#xD;			 *  the sawtooth oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sawtooth = new Tone.Oscillator({&#xD;	            frequency: options.frequency,&#xD;	            detune: options.detune,&#xD;	            type: &apos;sawtooth&apos;,&#xD;	            phase: options.phase&#xD;	        });&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this._sawtooth.frequency;&#xD;	        /**&#xD;			 *  The detune in cents. &#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this._sawtooth.detune;&#xD;	        /**&#xD;			 *  Threshold the signal to turn it into a square&#xD;			 *  @type {Tone.WaveShaper}&#xD;			 *  @private&#xD;			 */&#xD;	        this._thresh = new Tone.WaveShaper(function (val) {&#xD;	            if (val &lt; 0) {&#xD;	                return -1;&#xD;	            } else {&#xD;	                return 1;&#xD;	            }&#xD;	        });&#xD;	        //connections&#xD;	        this._sawtooth.chain(this._thresh, this.output);&#xD;	        this.width.chain(this._widthGate, this._thresh);&#xD;	        this._readOnly([&#xD;	            &apos;width&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.PulseOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  The default parameters.&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.PulseOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;width&apos;: 0.2&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} time &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.PulseOscillator.prototype._start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._sawtooth.start(time);&#xD;	        this._widthGate.gain.setValueAtTime(1, time);&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @param  {Time} time &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.PulseOscillator.prototype._stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._sawtooth.stop(time);&#xD;	        //the width is still connected to the output. &#xD;	        //that needs to be stopped also&#xD;	        this._widthGate.gain.setValueAtTime(0, time);&#xD;	    };&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees.&#xD;		 * @memberOf Tone.PulseOscillator#&#xD;		 * @type {Degrees}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.PulseOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._sawtooth.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._sawtooth.phase = phase;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The type of the oscillator. Always returns "pulse".&#xD;		 * @readOnly&#xD;		 * @memberOf Tone.PulseOscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.PulseOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return &apos;pulse&apos;;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the waveform. Cannot set partials for this waveform type&#xD;		 * @memberOf Tone.PulseOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @private&#xD;		 */&#xD;	    Object.defineProperty(Tone.PulseOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return [];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up method.&#xD;		 *  @return {Tone.PulseOscillator} this&#xD;		 */&#xD;	    Tone.PulseOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._sawtooth.dispose();&#xD;	        this._sawtooth = null;&#xD;	        this._writable([&#xD;	            &apos;width&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this.width.dispose();&#xD;	        this.width = null;&#xD;	        this._widthGate.dispose();&#xD;	        this._widthGate = null;&#xD;	        this._thresh.dispose();&#xD;	        this._thresh = null;&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PulseOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.PWMOscillator modulates the width of a Tone.PulseOscillator &#xD;		 *         at the modulationFrequency. This has the effect of continuously&#xD;		 *         changing the timbre of the oscillator by altering the harmonics &#xD;		 *         generated.&#xD;		 *&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} frequency The starting frequency of the oscillator. &#xD;		 *  @param {Frequency} modulationFrequency The modulation frequency of the width of the pulse. &#xD;		 *  @example&#xD;		 *  var pwm = new Tone.PWMOscillator("Ab3", 0.3).toMaster().start();&#xD;		 */&#xD;	    Tone.PWMOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;modulationFrequency&apos;&#xD;	        ], Tone.PWMOscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  the pulse oscillator&#xD;			 *  @type {Tone.PulseOscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._pulse = new Tone.PulseOscillator(options.modulationFrequency);&#xD;	        //change the pulse oscillator type&#xD;	        this._pulse._sawtooth.type = &apos;sine&apos;;&#xD;	        /**&#xD;			 *  the modulator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulator = new Tone.Oscillator({&#xD;	            &apos;frequency&apos;: options.frequency,&#xD;	            &apos;detune&apos;: options.detune,&#xD;	            &apos;phase&apos;: options.phase&#xD;	        });&#xD;	        /**&#xD;			 *  Scale the oscillator so it doesn&apos;t go silent &#xD;			 *  at the extreme values.&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._scale = new Tone.Multiply(2);&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this._modulator.frequency;&#xD;	        /**&#xD;			 *  The detune of the oscillator.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this._modulator.detune;&#xD;	        /**&#xD;			 *  The modulation rate of the oscillator. &#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.modulationFrequency = this._pulse.frequency;&#xD;	        //connections&#xD;	        this._modulator.chain(this._scale, this._pulse.width);&#xD;	        this._pulse.connect(this.output);&#xD;	        this._readOnly([&#xD;	            &apos;modulationFrequency&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.PWMOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.PWMOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;modulationFrequency&apos;: 0.4&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.PWMOscillator.prototype._start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.start(time);&#xD;	        this._pulse.start(time);&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @param  {Time} time (optional) timing parameter&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.PWMOscillator.prototype._stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.stop(time);&#xD;	        this._pulse.stop(time);&#xD;	    };&#xD;	    /**&#xD;		 * The type of the oscillator. Always returns "pwm".&#xD;		 * @readOnly&#xD;		 * @memberOf Tone.PWMOscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.PWMOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return &apos;pwm&apos;;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the waveform. Cannot set partials for this waveform type&#xD;		 * @memberOf Tone.PWMOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @private&#xD;		 */&#xD;	    Object.defineProperty(Tone.PWMOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return [];&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees.&#xD;		 * @memberOf Tone.PWMOscillator#&#xD;		 * @type {number}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.PWMOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._modulator.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._modulator.phase = phase;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.PWMOscillator} this&#xD;		 */&#xD;	    Tone.PWMOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._pulse.dispose();&#xD;	        this._pulse = null;&#xD;	        this._scale.dispose();&#xD;	        this._scale = null;&#xD;	        this._modulator.dispose();&#xD;	        this._modulator = null;&#xD;	        this._writable([&#xD;	            &apos;modulationFrequency&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        this.modulationFrequency = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PWMOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.FMOscillator &#xD;		 *&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} frequency The starting frequency of the oscillator. &#xD;		 *  @param {String} type The type of the carrier oscillator.&#xD;		 *  @param {String} modulationType The type of the modulator oscillator.&#xD;		 *  @example&#xD;		 * //a sine oscillator frequency-modulated by a square wave&#xD;		 * var fmOsc = new Tone.FMOscillator("Ab3", "sine", "square").toMaster().start();&#xD;		 */&#xD;	    Tone.FMOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;,&#xD;	            &apos;modulationType&apos;&#xD;	        ], Tone.FMOscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  The carrier oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._carrier = new Tone.Oscillator(options.frequency, options.type);&#xD;	        /**&#xD;			 *  The oscillator&apos;s frequency&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune control signal.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this._carrier.detune;&#xD;	        this.detune.value = options.detune;&#xD;	        /**&#xD;			 *  The modulation index which is in essence the depth or amount of the modulation. In other terms it is the &#xD;			 *  ratio of the frequency of the modulating signal (mf) to the amplitude of the &#xD;			 *  modulating signal (ma) -- as in ma/mf. &#xD;			 *	@type {Positive}&#xD;			 *	@signal&#xD;			 */&#xD;	        this.modulationIndex = new Tone.Multiply(options.modulationIndex);&#xD;	        this.modulationIndex.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  The modulating oscillator&#xD;			 *  @type  {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulator = new Tone.Oscillator(options.frequency, options.modulationType);&#xD;	        /**&#xD;			 *  Harmonicity is the frequency ratio between the carrier and the modulator oscillators. &#xD;			 *  A harmonicity of 1 gives both oscillators the same frequency. &#xD;			 *  Harmonicity = 2 means a change of an octave. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * //pitch the modulator an octave below carrier&#xD;			 * synth.harmonicity.value = 0.5;&#xD;			 */&#xD;	        this.harmonicity = new Tone.Multiply(options.harmonicity);&#xD;	        this.harmonicity.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  the node where the modulation happens&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationNode = new Tone.Gain(0);&#xD;	        //connections&#xD;	        this.frequency.connect(this._carrier.frequency);&#xD;	        this.frequency.chain(this.harmonicity, this._modulator.frequency);&#xD;	        this.frequency.chain(this.modulationIndex, this._modulationNode);&#xD;	        this._modulator.connect(this._modulationNode.gain);&#xD;	        this._modulationNode.connect(this._carrier.frequency);&#xD;	        this._carrier.connect(this.output);&#xD;	        this.detune.connect(this._modulator.detune);&#xD;	        this.phase = options.phase;&#xD;	        this._readOnly([&#xD;	            &apos;modulationIndex&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;harmonicity&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.FMOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.FMOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;modulationIndex&apos;: 2,&#xD;	        &apos;modulationType&apos;: &apos;square&apos;,&#xD;	        &apos;harmonicity&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FMOscillator.prototype._start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.start(time);&#xD;	        this._carrier.start(time);&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @param  {Time} time (optional) timing parameter&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FMOscillator.prototype._stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.stop(time);&#xD;	        this._carrier.stop(time);&#xD;	    };&#xD;	    /**&#xD;		 * The type of the carrier oscillator&#xD;		 * @memberOf Tone.FMOscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.FMOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._carrier.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The type of the modulator oscillator&#xD;		 * @memberOf Tone.FMOscillator#&#xD;		 * @type {String}&#xD;		 * @name modulationType&#xD;		 */&#xD;	    Object.defineProperty(Tone.FMOscillator.prototype, &apos;modulationType&apos;, {&#xD;	        get: function () {&#xD;	            return this._modulator.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._modulator.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees.&#xD;		 * @memberOf Tone.FMOscillator#&#xD;		 * @type {number}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.FMOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._carrier.phase = phase;&#xD;	            this._modulator.phase = phase;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the carrier waveform. A partial represents &#xD;		 * the amplitude at a harmonic. The first harmonic is the &#xD;		 * fundamental frequency, the second is the octave and so on&#xD;		 * following the harmonic series. &#xD;		 * Setting this value will automatically set the type to "custom". &#xD;		 * The value is an empty array when the type is not "custom". &#xD;		 * @memberOf Tone.FMOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @example&#xD;		 * osc.partials = [1, 0.2, 0.01];&#xD;		 */&#xD;	    Object.defineProperty(Tone.FMOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.partials;&#xD;	        },&#xD;	        set: function (partials) {&#xD;	            this._carrier.partials = partials;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.FMOscillator} this&#xD;		 */&#xD;	    Tone.FMOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;modulationIndex&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;harmonicity&apos;&#xD;	        ]);&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        this.harmonicity.dispose();&#xD;	        this.harmonicity = null;&#xD;	        this._carrier.dispose();&#xD;	        this._carrier = null;&#xD;	        this._modulator.dispose();&#xD;	        this._modulator = null;&#xD;	        this._modulationNode.dispose();&#xD;	        this._modulationNode = null;&#xD;	        this.modulationIndex.dispose();&#xD;	        this.modulationIndex = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FMOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.AMOscillator &#xD;		 *&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} frequency The starting frequency of the oscillator. &#xD;		 *  @param {String} type The type of the carrier oscillator.&#xD;		 *  @param {String} modulationType The type of the modulator oscillator.&#xD;		 *  @example&#xD;		 * //a sine oscillator frequency-modulated by a square wave&#xD;		 * var fmOsc = new Tone.AMOscillator("Ab3", "sine", "square").toMaster().start();&#xD;		 */&#xD;	    Tone.AMOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;,&#xD;	            &apos;modulationType&apos;&#xD;	        ], Tone.AMOscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  The carrier oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._carrier = new Tone.Oscillator(options.frequency, options.type);&#xD;	        /**&#xD;			 *  The oscillator&apos;s frequency&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this._carrier.frequency;&#xD;	        /**&#xD;			 *  The detune control signal.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this._carrier.detune;&#xD;	        this.detune.value = options.detune;&#xD;	        /**&#xD;			 *  The modulating oscillator&#xD;			 *  @type  {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulator = new Tone.Oscillator(options.frequency, options.modulationType);&#xD;	        /**&#xD;			 *  convert the -1,1 output to 0,1&#xD;			 *  @type {Tone.AudioToGain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationScale = new Tone.AudioToGain();&#xD;	        /**&#xD;			 *  Harmonicity is the frequency ratio between the carrier and the modulator oscillators. &#xD;			 *  A harmonicity of 1 gives both oscillators the same frequency. &#xD;			 *  Harmonicity = 2 means a change of an octave. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * //pitch the modulator an octave below carrier&#xD;			 * synth.harmonicity.value = 0.5;&#xD;			 */&#xD;	        this.harmonicity = new Tone.Multiply(options.harmonicity);&#xD;	        this.harmonicity.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  the node where the modulation happens&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationNode = new Tone.Gain(0);&#xD;	        //connections&#xD;	        this.frequency.chain(this.harmonicity, this._modulator.frequency);&#xD;	        this.detune.connect(this._modulator.detune);&#xD;	        this._modulator.chain(this._modulationScale, this._modulationNode.gain);&#xD;	        this._carrier.chain(this._modulationNode, this.output);&#xD;	        this.phase = options.phase;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;harmonicity&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.AMOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.AMOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;modulationType&apos;: &apos;square&apos;,&#xD;	        &apos;harmonicity&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.AMOscillator.prototype._start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.start(time);&#xD;	        this._carrier.start(time);&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @param  {Time} time (optional) timing parameter&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.AMOscillator.prototype._stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._modulator.stop(time);&#xD;	        this._carrier.stop(time);&#xD;	    };&#xD;	    /**&#xD;		 * The type of the carrier oscillator&#xD;		 * @memberOf Tone.AMOscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.AMOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._carrier.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The type of the modulator oscillator&#xD;		 * @memberOf Tone.AMOscillator#&#xD;		 * @type {string}&#xD;		 * @name modulationType&#xD;		 */&#xD;	    Object.defineProperty(Tone.AMOscillator.prototype, &apos;modulationType&apos;, {&#xD;	        get: function () {&#xD;	            return this._modulator.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._modulator.type = type;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees.&#xD;		 * @memberOf Tone.AMOscillator#&#xD;		 * @type {number}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.AMOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._carrier.phase = phase;&#xD;	            this._modulator.phase = phase;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the carrier waveform. A partial represents &#xD;		 * the amplitude at a harmonic. The first harmonic is the &#xD;		 * fundamental frequency, the second is the octave and so on&#xD;		 * following the harmonic series. &#xD;		 * Setting this value will automatically set the type to "custom". &#xD;		 * The value is an empty array when the type is not "custom". &#xD;		 * @memberOf Tone.AMOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @example&#xD;		 * osc.partials = [1, 0.2, 0.01];&#xD;		 */&#xD;	    Object.defineProperty(Tone.AMOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return this._carrier.partials;&#xD;	        },&#xD;	        set: function (partials) {&#xD;	            this._carrier.partials = partials;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.AMOscillator} this&#xD;		 */&#xD;	    Tone.AMOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;harmonicity&apos;&#xD;	        ]);&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        this.harmonicity.dispose();&#xD;	        this.harmonicity = null;&#xD;	        this._carrier.dispose();&#xD;	        this._carrier = null;&#xD;	        this._modulator.dispose();&#xD;	        this._modulator = null;&#xD;	        this._modulationNode.dispose();&#xD;	        this._modulationNode = null;&#xD;	        this._modulationScale.dispose();&#xD;	        this._modulationScale = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AMOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.FatOscillator &#xD;		 *&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} frequency The starting frequency of the oscillator. &#xD;		 *  @param {String} type The type of the carrier oscillator.&#xD;		 *  @param {String} modulationType The type of the modulator oscillator.&#xD;		 *  @example&#xD;		 * //a sine oscillator frequency-modulated by a square wave&#xD;		 * var fmOsc = new Tone.FatOscillator("Ab3", "sine", "square").toMaster().start();&#xD;		 */&#xD;	    Tone.FatOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;,&#xD;	            &apos;spread&apos;&#xD;	        ], Tone.FatOscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  The oscillator&apos;s frequency&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune control signal.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  The array of oscillators&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._oscillators = [];&#xD;	        /**&#xD;			 *  The total spread of the oscillators&#xD;			 *  @type  {Cents}&#xD;			 *  @private&#xD;			 */&#xD;	        this._spread = options.spread;&#xD;	        /**&#xD;			 *  The type of the oscillator&#xD;			 *  @type {String}&#xD;			 *  @private&#xD;			 */&#xD;	        this._type = options.type;&#xD;	        /**&#xD;			 *  The phase of the oscillators&#xD;			 *  @type {Degrees}&#xD;			 *  @private&#xD;			 */&#xD;	        this._phase = options.phase;&#xD;	        /**&#xD;			 *  The partials array&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._partials = this.defaultArg(options.partials, []);&#xD;	        //set the count initially&#xD;	        this.count = options.count;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.FatOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.FatOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;phase&apos;: 0,&#xD;	        &apos;spread&apos;: 20,&#xD;	        &apos;count&apos;: 3,&#xD;	        &apos;type&apos;: &apos;sawtooth&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FatOscillator.prototype._start = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._forEach(function (osc) {&#xD;	            osc.start(time);&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 *  stop the oscillator&#xD;		 *  @param  {Time} time (optional) timing parameter&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FatOscillator.prototype._stop = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this._forEach(function (osc) {&#xD;	            osc.stop(time);&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 *  Iterate over all of the oscillators&#xD;		 *  @param  {Function}  iterator  The iterator function&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FatOscillator.prototype._forEach = function (iterator) {&#xD;	        for (var i = 0; i &lt; this._oscillators.length; i++) {&#xD;	            iterator.call(this, this._oscillators[i], i);&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * The type of the carrier oscillator&#xD;		 * @memberOf Tone.FatOscillator#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 */&#xD;	    Object.defineProperty(Tone.FatOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            return this._type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            this._type = type;&#xD;	            this._forEach(function (osc) {&#xD;	                osc.type = type;&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The detune spread between the oscillators. If "count" is&#xD;		 * set to 3 oscillators and the "spread" is set to 40,&#xD;		 * the three oscillators would be detuned like this: [-20, 0, 20]&#xD;		 * for a total detune spread of 40 cents.&#xD;		 * @memberOf Tone.FatOscillator#&#xD;		 * @type {Cents}&#xD;		 * @name spread&#xD;		 */&#xD;	    Object.defineProperty(Tone.FatOscillator.prototype, &apos;spread&apos;, {&#xD;	        get: function () {&#xD;	            return this._spread;&#xD;	        },&#xD;	        set: function (spread) {&#xD;	            this._spread = spread;&#xD;	            if (this._oscillators.length &gt; 1) {&#xD;	                var start = -spread / 2;&#xD;	                var step = spread / (this._oscillators.length - 1);&#xD;	                this._forEach(function (osc, i) {&#xD;	                    osc.detune.value = start + step * i;&#xD;	                });&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The number of detuned oscillators&#xD;		 * @memberOf Tone.FatOscillator#&#xD;		 * @type {Number}&#xD;		 * @name count&#xD;		 */&#xD;	    Object.defineProperty(Tone.FatOscillator.prototype, &apos;count&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillators.length;&#xD;	        },&#xD;	        set: function (count) {&#xD;	            count = Math.max(count, 1);&#xD;	            if (this._oscillators.length !== count) {&#xD;	                // var partials = this.partials;&#xD;	                // var type = this.type;&#xD;	                //dispose the previous oscillators&#xD;	                this._forEach(function (osc) {&#xD;	                    osc.dispose();&#xD;	                });&#xD;	                this._oscillators = [];&#xD;	                for (var i = 0; i &lt; count; i++) {&#xD;	                    var osc = new Tone.Oscillator();&#xD;	                    if (this.type === Tone.Oscillator.Type.Custom) {&#xD;	                        osc.partials = this._partials;&#xD;	                    } else {&#xD;	                        osc.type = this._type;&#xD;	                    }&#xD;	                    osc.phase = this._phase;&#xD;	                    osc.volume.value = -6 - count;&#xD;	                    this.frequency.connect(osc.frequency);&#xD;	                    this.detune.connect(osc.detune);&#xD;	                    osc.connect(this.output);&#xD;	                    this._oscillators[i] = osc;&#xD;	                }&#xD;	                //set the spread&#xD;	                this.spread = this._spread;&#xD;	                if (this.state === Tone.State.Started) {&#xD;	                    this._forEach(function (osc) {&#xD;	                        osc.start();&#xD;	                    });&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees.&#xD;		 * @memberOf Tone.FatOscillator#&#xD;		 * @type {Number}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.FatOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._phase = phase;&#xD;	            this._forEach(function (osc) {&#xD;	                osc.phase = phase;&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the carrier waveform. A partial represents &#xD;		 * the amplitude at a harmonic. The first harmonic is the &#xD;		 * fundamental frequency, the second is the octave and so on&#xD;		 * following the harmonic series. &#xD;		 * Setting this value will automatically set the type to "custom". &#xD;		 * The value is an empty array when the type is not "custom". &#xD;		 * @memberOf Tone.FatOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @example&#xD;		 * osc.partials = [1, 0.2, 0.01];&#xD;		 */&#xD;	    Object.defineProperty(Tone.FatOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return this._partials;&#xD;	        },&#xD;	        set: function (partials) {&#xD;	            this._partials = partials;&#xD;	            this._type = Tone.Oscillator.Type.Custom;&#xD;	            this._forEach(function (osc) {&#xD;	                osc.partials = partials;&#xD;	            });&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.FatOscillator} this&#xD;		 */&#xD;	    Tone.FatOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this._forEach(function (osc) {&#xD;	            osc.dispose();&#xD;	        });&#xD;	        this._oscillators = null;&#xD;	        this._partials = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FatOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Tone.OmniOscillator aggregates Tone.Oscillator, Tone.PulseOscillator,&#xD;		 *         Tone.PWMOscillator, Tone.FMOscillator, Tone.AMOscillator, and Tone.FatOscillator&#xD;		 *         into one class. The oscillator class can be changed by setting the `type`. &#xD;		 *         `omniOsc.type = "pwm"` will set it to the Tone.PWMOscillator. Prefixing&#xD;		 *         any of the basic types ("sine", "square4", etc.) with "fm", "am", or "fat"&#xD;		 *         will use the FMOscillator, AMOscillator or FatOscillator respectively. &#xD;		 *         For example: `omniOsc.type = "fatsawtooth"` will create set the oscillator&#xD;		 *         to a FatOscillator of type "sawtooth". &#xD;		 *&#xD;		 *  @extends {Tone.Oscillator}&#xD;		 *  @constructor&#xD;		 *  @param {Frequency} frequency The initial frequency of the oscillator.&#xD;		 *  @param {String} type The type of the oscillator.&#xD;		 *  @example&#xD;		 *  var omniOsc = new Tone.OmniOscillator("C#4", "pwm");&#xD;		 */&#xD;	    Tone.OmniOscillator = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;type&apos;&#xD;	        ], Tone.OmniOscillator.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune control&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  the type of the oscillator source&#xD;			 *  @type {String}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sourceType = undefined;&#xD;	        /**&#xD;			 *  the oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 *  @private&#xD;			 */&#xD;	        this._oscillator = null;&#xD;	        //set the oscillator&#xD;	        this.type = options.type;&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        //set the options&#xD;	        this.set(options);&#xD;	    };&#xD;	    Tone.extend(Tone.OmniOscillator, Tone.Oscillator);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 *  @const&#xD;		 */&#xD;	    Tone.OmniOscillator.defaults = {&#xD;	        &apos;frequency&apos;: 440,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;type&apos;: &apos;sine&apos;,&#xD;	        &apos;phase&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 *  @enum {String}&#xD;		 *  @private&#xD;		 */&#xD;	    var OmniOscType = {&#xD;	        Pulse: &apos;PulseOscillator&apos;,&#xD;	        PWM: &apos;PWMOscillator&apos;,&#xD;	        Osc: &apos;Oscillator&apos;,&#xD;	        FM: &apos;FMOscillator&apos;,&#xD;	        AM: &apos;AMOscillator&apos;,&#xD;	        Fat: &apos;FatOscillator&apos;&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param {Time} [time=now] the time to start the oscillator&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.OmniOscillator.prototype._start = function (time) {&#xD;	        this._oscillator.start(time);&#xD;	    };&#xD;	    /**&#xD;		 *  start the oscillator&#xD;		 *  @param {Time} [time=now] the time to start the oscillator&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.OmniOscillator.prototype._stop = function (time) {&#xD;	        this._oscillator.stop(time);&#xD;	    };&#xD;	    /**&#xD;		 * The type of the oscillator. Can be any of the basic types: sine, square, triangle, sawtooth. Or&#xD;		 * prefix the basic types with "fm", "am", or "fat" to use the FMOscillator, AMOscillator or FatOscillator&#xD;		 * types. The oscillator could also be set to "pwm" or "pulse". All of the parameters of the&#xD;		 * oscillator&apos;s class are accessible when the oscillator is set to that type, but throws an error &#xD;		 * when it&apos;s not.&#xD;		 * &#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {String}&#xD;		 * @name type&#xD;		 * @example&#xD;		 * omniOsc.type = "pwm";&#xD;		 * //modulationFrequency is parameter which is available&#xD;		 * //only when the type is "pwm". &#xD;		 * omniOsc.modulationFrequency.value = 0.5;&#xD;		 * @example&#xD;		 * //an square wave frequency modulated by a sawtooth&#xD;		 * omniOsc.type = "fmsquare";&#xD;		 * omniOsc.modulationType = "sawtooth";&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            var prefix = &apos;&apos;;&#xD;	            if (this._sourceType === OmniOscType.FM) {&#xD;	                prefix = &apos;fm&apos;;&#xD;	            } else if (this._sourceType === OmniOscType.AM) {&#xD;	                prefix = &apos;am&apos;;&#xD;	            } else if (this._sourceType === OmniOscType.Fat) {&#xD;	                prefix = &apos;fat&apos;;&#xD;	            }&#xD;	            return prefix + this._oscillator.type;&#xD;	        },&#xD;	        set: function (type) {&#xD;	            if (type.substr(0, 2) === &apos;fm&apos;) {&#xD;	                this._createNewOscillator(OmniOscType.FM);&#xD;	                this._oscillator.type = type.substr(2);&#xD;	            } else if (type.substr(0, 2) === &apos;am&apos;) {&#xD;	                this._createNewOscillator(OmniOscType.AM);&#xD;	                this._oscillator.type = type.substr(2);&#xD;	            } else if (type.substr(0, 3) === &apos;fat&apos;) {&#xD;	                this._createNewOscillator(OmniOscType.Fat);&#xD;	                this._oscillator.type = type.substr(3);&#xD;	            } else if (type === &apos;pwm&apos;) {&#xD;	                this._createNewOscillator(OmniOscType.PWM);&#xD;	            } else if (type === &apos;pulse&apos;) {&#xD;	                this._createNewOscillator(OmniOscType.Pulse);&#xD;	            } else {&#xD;	                this._createNewOscillator(OmniOscType.Osc);&#xD;	                this._oscillator.type = type;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The partials of the waveform. A partial represents &#xD;		 * the amplitude at a harmonic. The first harmonic is the &#xD;		 * fundamental frequency, the second is the octave and so on&#xD;		 * following the harmonic series. &#xD;		 * Setting this value will automatically set the type to "custom". &#xD;		 * The value is an empty array when the type is not "custom". &#xD;		 * This is not available on "pwm" and "pulse" oscillator types.&#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {Array}&#xD;		 * @name partials&#xD;		 * @example&#xD;		 * osc.partials = [1, 0.2, 0.01];&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;partials&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.partials;&#xD;	        },&#xD;	        set: function (partials) {&#xD;	            this._oscillator.partials = partials;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Set a member/attribute of the oscillator. &#xD;		 *  @param {Object|String} params&#xD;		 *  @param {number=} value&#xD;		 *  @param {Time=} rampTime&#xD;		 *  @returns {Tone.OmniOscillator} this&#xD;		 */&#xD;	    Tone.OmniOscillator.prototype.set = function (params, value) {&#xD;	        //make sure the type is set first&#xD;	        if (params === &apos;type&apos;) {&#xD;	            this.type = value;&#xD;	        } else if (this.isObject(params) &amp;&amp; params.hasOwnProperty(&apos;type&apos;)) {&#xD;	            this.type = params.type;&#xD;	        }&#xD;	        //then set the rest&#xD;	        Tone.prototype.set.apply(this, arguments);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  connect the oscillator to the frequency and detune signals&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.OmniOscillator.prototype._createNewOscillator = function (oscType) {&#xD;	        if (oscType !== this._sourceType) {&#xD;	            this._sourceType = oscType;&#xD;	            var OscillatorConstructor = Tone[oscType];&#xD;	            //short delay to avoid clicks on the change&#xD;	            var now = this.now() + this.blockTime;&#xD;	            if (this._oscillator !== null) {&#xD;	                var oldOsc = this._oscillator;&#xD;	                oldOsc.stop(now);&#xD;	                //dispose the old one&#xD;	                setTimeout(function () {&#xD;	                    oldOsc.dispose();&#xD;	                    oldOsc = null;&#xD;	                }, this.blockTime * 1000);&#xD;	            }&#xD;	            this._oscillator = new OscillatorConstructor();&#xD;	            this.frequency.connect(this._oscillator.frequency);&#xD;	            this.detune.connect(this._oscillator.detune);&#xD;	            this._oscillator.connect(this.output);&#xD;	            if (this.state === Tone.State.Started) {&#xD;	                this._oscillator.start(now);&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * The phase of the oscillator in degrees. &#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {Degrees}&#xD;		 * @name phase&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;phase&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillator.phase;&#xD;	        },&#xD;	        set: function (phase) {&#xD;	            this._oscillator.phase = phase;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The width of the oscillator (only if the oscillator is set to "pulse")&#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {NormalRange}&#xD;		 * @signal&#xD;		 * @name width&#xD;		 * @example&#xD;		 * var omniOsc = new Tone.OmniOscillator(440, "pulse");&#xD;		 * //can access the width attribute only if type === "pulse"&#xD;		 * omniOsc.width.value = 0.2; &#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;width&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.Pulse) {&#xD;	                return this._oscillator.width;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The number of detuned oscillators&#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {Number}&#xD;		 * @name count&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;count&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.Fat) {&#xD;	                return this._oscillator.count;&#xD;	            }&#xD;	        },&#xD;	        set: function (count) {&#xD;	            if (this._sourceType === OmniOscType.Fat) {&#xD;	                this._oscillator.count = count;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The detune spread between the oscillators. If "count" is&#xD;		 * set to 3 oscillators and the "spread" is set to 40,&#xD;		 * the three oscillators would be detuned like this: [-20, 0, 20]&#xD;		 * for a total detune spread of 40 cents. See Tone.FatOscillator&#xD;		 * for more info.&#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {Cents}&#xD;		 * @name spread&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;spread&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.Fat) {&#xD;	                return this._oscillator.spread;&#xD;	            }&#xD;	        },&#xD;	        set: function (spread) {&#xD;	            if (this._sourceType === OmniOscType.Fat) {&#xD;	                this._oscillator.spread = spread;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The type of the modulator oscillator. Only if the oscillator&#xD;		 * is set to "am" or "fm" types. see. Tone.AMOscillator or Tone.FMOscillator&#xD;		 * for more info. &#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {String}&#xD;		 * @name modulationType&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;modulationType&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.FM || this._sourceType === OmniOscType.AM) {&#xD;	                return this._oscillator.modulationType;&#xD;	            }&#xD;	        },&#xD;	        set: function (mType) {&#xD;	            if (this._sourceType === OmniOscType.FM || this._sourceType === OmniOscType.AM) {&#xD;	                this._oscillator.modulationType = mType;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The modulation index which is in essence the depth or amount of the modulation. In other terms it is the &#xD;		 * ratio of the frequency of the modulating signal (mf) to the amplitude of the &#xD;		 * modulating signal (ma) -- as in ma/mf. &#xD;		 * See Tone.FMOscillator for more info. &#xD;		 * @type {Positive}&#xD;		 * @signal&#xD;		 * @name modulationIndex&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;modulationIndex&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.FM) {&#xD;	                return this._oscillator.modulationIndex;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Harmonicity is the frequency ratio between the carrier and the modulator oscillators. &#xD;		 *  A harmonicity of 1 gives both oscillators the same frequency. &#xD;		 *  Harmonicity = 2 means a change of an octave. See Tone.AMOscillator or Tone.FMOscillator&#xD;		 *  for more info. &#xD;		 *  @memberOf Tone.OmniOscillator#&#xD;		 *  @signal&#xD;		 *  @type {Positive}&#xD;		 *  @name harmonicity&#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;harmonicity&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.FM || this._sourceType === OmniOscType.AM) {&#xD;	                return this._oscillator.harmonicity;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The modulationFrequency Signal of the oscillator &#xD;		 * (only if the oscillator type is set to pwm). See &#xD;		 * Tone.PWMOscillator for more info. &#xD;		 * @memberOf Tone.OmniOscillator#&#xD;		 * @type {Frequency}&#xD;		 * @signal&#xD;		 * @name modulationFrequency&#xD;		 * @example&#xD;		 * var omniOsc = new Tone.OmniOscillator(440, "pwm");&#xD;		 * //can access the modulationFrequency attribute only if type === "pwm"&#xD;		 * omniOsc.modulationFrequency.value = 0.2; &#xD;		 */&#xD;	    Object.defineProperty(Tone.OmniOscillator.prototype, &apos;modulationFrequency&apos;, {&#xD;	        get: function () {&#xD;	            if (this._sourceType === OmniOscType.PWM) {&#xD;	                return this._oscillator.modulationFrequency;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return {Tone.OmniOscillator} this&#xD;		 */&#xD;	    Tone.OmniOscillator.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this._oscillator.dispose();&#xD;	        this._oscillator = null;&#xD;	        this._sourceType = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.OmniOscillator;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Base-class for all instruments&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 */&#xD;	    Tone.Instrument = function (options) {&#xD;	        //get the defaults&#xD;	        options = this.defaultArg(options, Tone.Instrument.defaults);&#xD;	        /**&#xD;			 *  The output and volume triming node&#xD;			 *  @type  {Tone.Volume}&#xD;			 *  @private&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume(options.volume);&#xD;	        /**&#xD;			 * The volume of the output in decibels.&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 * @example&#xD;			 * source.volume.value = -6;&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	    };&#xD;	    Tone.extend(Tone.Instrument);&#xD;	    /**&#xD;		 *  the default attributes&#xD;		 *  @type {object}&#xD;		 */&#xD;	    Tone.Instrument.defaults = {&#xD;	        /** the volume of the output in decibels */&#xD;	        &apos;volume&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 *  @abstract&#xD;		 *  @param {string|number} note the note to trigger&#xD;		 *  @param {Time} [time=now] the time to trigger the ntoe&#xD;		 *  @param {number} [velocity=1] the velocity to trigger the note&#xD;		 */&#xD;	    Tone.Instrument.prototype.triggerAttack = Tone.noOp;&#xD;	    /**&#xD;		 *  @abstract&#xD;		 *  @param {Time} [time=now] when to trigger the release&#xD;		 */&#xD;	    Tone.Instrument.prototype.triggerRelease = Tone.noOp;&#xD;	    /**&#xD;		 *  Trigger the attack and then the release after the duration. &#xD;		 *  @param  {Frequency} note     The note to trigger.&#xD;		 *  @param  {Time} duration How long the note should be held for before&#xD;		 *                          triggering the release.&#xD;		 *  @param {Time} [time=now]  When the note should be triggered.&#xD;		 *  @param  {NormalRange} [velocity=1] The velocity the note should be triggered at.&#xD;		 *  @returns {Tone.Instrument} this&#xD;		 *  @example&#xD;		 * //trigger "C4" for the duration of an 8th note&#xD;		 * synth.triggerAttackRelease("C4", "8n");&#xD;		 */&#xD;	    Tone.Instrument.prototype.triggerAttackRelease = function (note, duration, time, velocity) {&#xD;	        if (this.isUndef(time)) {&#xD;	            time = this.now() + this.blockTime;&#xD;	        } else {&#xD;	            time = this.toSeconds(time);&#xD;	        }&#xD;	        duration = this.toSeconds(duration);&#xD;	        this.triggerAttack(note, time, velocity);&#xD;	        this.triggerRelease(time + duration);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Instrument} this&#xD;		 */&#xD;	    Tone.Instrument.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this._writable([&apos;volume&apos;]);&#xD;	        this.volume = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Instrument;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  This is an abstract base class for other monophonic instruments to &#xD;		 *          extend. IMPORTANT: It does not make any sound on its own and&#xD;		 *          shouldn&apos;t be directly instantiated.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @abstract&#xD;		 *  @extends {Tone.Instrument}&#xD;		 */&#xD;	    Tone.Monophonic = function (options) {&#xD;	        //get the defaults&#xD;	        options = this.defaultArg(options, Tone.Monophonic.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  The glide time between notes. &#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.portamento = options.portamento;&#xD;	    };&#xD;	    Tone.extend(Tone.Monophonic, Tone.Instrument);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Monophonic.defaults = { &apos;portamento&apos;: 0 };&#xD;	    /**&#xD;		 *  Trigger the attack of the note optionally with a given velocity. &#xD;		 *  &#xD;		 *  &#xD;		 *  @param  {Frequency} note     The note to trigger.&#xD;		 *  @param  {Time} [time=now]     When the note should start.&#xD;		 *  @param  {number} [velocity=1] velocity The velocity scaler &#xD;		 *                                determines how "loud" the note &#xD;		 *                                will be triggered.&#xD;		 *  @returns {Tone.Monophonic} this&#xD;		 *  @example&#xD;		 * synth.triggerAttack("C4");&#xD;		 *  @example&#xD;		 * //trigger the note a half second from now at half velocity&#xD;		 * synth.triggerAttack("C4", "+0.5", 0.5);&#xD;		 */&#xD;	    Tone.Monophonic.prototype.triggerAttack = function (note, time, velocity) {&#xD;	        if (this.isUndef(time)) {&#xD;	            time = this.now() + this.blockTime;&#xD;	        } else {&#xD;	            time = this.toSeconds(time);&#xD;	        }&#xD;	        this._triggerEnvelopeAttack(time, velocity);&#xD;	        this.setNote(note, time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the release portion of the envelope&#xD;		 *  @param  {Time} [time=now] If no time is given, the release happens immediatly&#xD;		 *  @returns {Tone.Monophonic} this&#xD;		 *  @example&#xD;		 * synth.triggerRelease();&#xD;		 */&#xD;	    Tone.Monophonic.prototype.triggerRelease = function (time) {&#xD;	        if (this.isUndef(time)) {&#xD;	            time = this.now() + this.blockTime;&#xD;	        } else {&#xD;	            time = this.toSeconds(time);&#xD;	        }&#xD;	        this._triggerEnvelopeRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  override this method with the actual method&#xD;		 *  @abstract&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Monophonic.prototype._triggerEnvelopeAttack = function () {&#xD;	    };&#xD;	    /**&#xD;		 *  override this method with the actual method&#xD;		 *  @abstract&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Monophonic.prototype._triggerEnvelopeRelease = function () {&#xD;	    };&#xD;	    /**&#xD;		 *  Set the note at the given time. If no time is given, the note&#xD;		 *  will set immediately. &#xD;		 *  @param {Frequency} note The note to change to.&#xD;		 *  @param  {Time} [time=now] The time when the note should be set. &#xD;		 *  @returns {Tone.Monophonic} this&#xD;		 * @example&#xD;		 * //change to F#6 in one quarter note from now.&#xD;		 * synth.setNote("F#6", "+4n");&#xD;		 * @example&#xD;		 * //change to Bb4 right now&#xD;		 * synth.setNote("Bb4");&#xD;		 */&#xD;	    Tone.Monophonic.prototype.setNote = function (note, time) {&#xD;	        time = this.toSeconds(time);&#xD;	        if (this.portamento &gt; 0) {&#xD;	            var currentNote = this.frequency.value;&#xD;	            this.frequency.setValueAtTime(currentNote, time);&#xD;	            var portTime = this.toSeconds(this.portamento);&#xD;	            this.frequency.exponentialRampToValueAtTime(note, time + portTime);&#xD;	        } else {&#xD;	            this.frequency.setValueAtTime(note, time);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Monophonic;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Synth is composed simply of a Tone.OmniOscillator&#xD;		 *          routed through a Tone.AmplitudeEnvelope. &#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1-1_0YW2Z1J2EPI36P8fNCMcZG7N1w1GZluPs4og4evo/pub?w=1163&amp;h=231"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Monophonic}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 *  @example&#xD;		 * var synth = new Tone.Synth().toMaster();&#xD;		 * synth.triggerAttackRelease("C4", "8n");&#xD;		 */&#xD;	    Tone.Synth = function (options) {&#xD;	        //get the defaults&#xD;	        options = this.defaultArg(options, Tone.Synth.defaults);&#xD;	        Tone.Monophonic.call(this, options);&#xD;	        /**&#xD;			 *  The oscillator.&#xD;			 *  @type {Tone.OmniOscillator}&#xD;			 */&#xD;	        this.oscillator = new Tone.OmniOscillator(options.oscillator);&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this.oscillator.frequency;&#xD;	        /**&#xD;			 *  The detune control.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this.oscillator.detune;&#xD;	        /**&#xD;			 *  The amplitude envelope.&#xD;			 *  @type {Tone.AmplitudeEnvelope}&#xD;			 */&#xD;	        this.envelope = new Tone.AmplitudeEnvelope(options.envelope);&#xD;	        //connect the oscillators to the output&#xD;	        this.oscillator.chain(this.envelope, this.output);&#xD;	        //start the oscillators&#xD;	        this.oscillator.start();&#xD;	        this._readOnly([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.Synth, Tone.Monophonic);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Synth.defaults = {&#xD;	        &apos;oscillator&apos;: { &apos;type&apos;: &apos;triangle&apos; },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.005,&#xD;	            &apos;decay&apos;: 0.1,&#xD;	            &apos;sustain&apos;: 0.3,&#xD;	            &apos;release&apos;: 1&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  start the attack portion of the envelope&#xD;		 *  @param {Time} [time=now] the time the attack should start&#xD;		 *  @param {number} [velocity=1] the velocity of the note (0-1)&#xD;		 *  @returns {Tone.Synth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Synth.prototype._triggerEnvelopeAttack = function (time, velocity) {&#xD;	        //the envelopes&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  start the release portion of the envelope&#xD;		 *  @param {Time} [time=now] the time the release should start&#xD;		 *  @returns {Tone.Synth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Synth.prototype._triggerEnvelopeRelease = function (time) {&#xD;	        this.envelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Synth} this&#xD;		 */&#xD;	    Tone.Synth.prototype.dispose = function () {&#xD;	        Tone.Monophonic.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.oscillator.dispose();&#xD;	        this.oscillator = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Synth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  AMSynth uses the output of one Tone.Synth to modulate the&#xD;		 *          amplitude of another Tone.Synth. The harmonicity (the ratio between&#xD;		 *          the two signals) affects the timbre of the output signal greatly.&#xD;		 *          Read more about Amplitude Modulation Synthesis on &#xD;		 *          [SoundOnSound](http://www.soundonsound.com/sos/mar00/articles/synthsecrets.htm).&#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1TQu8Ed4iFr1YTLKpB3U1_hur-UwBrh5gdBXc8BxfGKw/pub?w=1009&amp;h=457"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Monophonic}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                            see defaults below&#xD;		 *  @example&#xD;		 * var synth = new Tone.AMSynth().toMaster();&#xD;		 * synth.triggerAttackRelease("C4", "4n");&#xD;		 */&#xD;	    Tone.AMSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.AMSynth.defaults);&#xD;	        Tone.Monophonic.call(this, options);&#xD;	        /**&#xD;			 *  The carrier voice. &#xD;			 *  @type {Tone.Synth}&#xD;			 *  @private&#xD;			 */&#xD;	        this._carrier = new Tone.Synth();&#xD;	        this._carrier.volume.value = -10;&#xD;	        /**&#xD;			 *  The carrier&apos;s oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.oscillator = this._carrier.oscillator;&#xD;	        /**&#xD;			 *  The carrier&apos;s envelope&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.envelope = this._carrier.envelope.set(options.envelope);&#xD;	        /**&#xD;			 *  The modulator voice. &#xD;			 *  @type {Tone.Synth}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulator = new Tone.Synth();&#xD;	        this._modulator.volume.value = -10;&#xD;	        /**&#xD;			 *  The modulator&apos;s oscillator which is applied&#xD;			 *  to the amplitude of the oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.modulation = this._modulator.oscillator.set(options.modulation);&#xD;	        /**&#xD;			 *  The modulator&apos;s envelope&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.modulationEnvelope = this._modulator.envelope.set(options.modulationEnvelope);&#xD;	        /**&#xD;			 *  The frequency.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(440, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune in cents&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  Harmonicity is the ratio between the two voices. A harmonicity of&#xD;			 *  1 is no change. Harmonicity = 2 means a change of an octave. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * //pitch voice1 an octave below voice0&#xD;			 * synth.harmonicity.value = 0.5;&#xD;			 */&#xD;	        this.harmonicity = new Tone.Multiply(options.harmonicity);&#xD;	        this.harmonicity.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  convert the -1,1 output to 0,1&#xD;			 *  @type {Tone.AudioToGain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationScale = new Tone.AudioToGain();&#xD;	        /**&#xD;			 *  the node where the modulation happens&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationNode = new Tone.Gain();&#xD;	        //control the two voices frequency&#xD;	        this.frequency.connect(this._carrier.frequency);&#xD;	        this.frequency.chain(this.harmonicity, this._modulator.frequency);&#xD;	        this.detune.fan(this._carrier.detune, this._modulator.detune);&#xD;	        this._modulator.chain(this._modulationScale, this._modulationNode.gain);&#xD;	        this._carrier.chain(this._modulationNode, this.output);&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;harmonicity&apos;,&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;,&#xD;	            &apos;modulation&apos;,&#xD;	            &apos;modulationEnvelope&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.AMSynth, Tone.Monophonic);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.AMSynth.defaults = {&#xD;	        &apos;harmonicity&apos;: 3,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;oscillator&apos;: { &apos;type&apos;: &apos;sine&apos; },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.01,&#xD;	            &apos;decay&apos;: 0.01,&#xD;	            &apos;sustain&apos;: 1,&#xD;	            &apos;release&apos;: 0.5&#xD;	        },&#xD;	        &apos;modulation&apos;: { &apos;type&apos;: &apos;square&apos; },&#xD;	        &apos;modulationEnvelope&apos;: {&#xD;	            &apos;attack&apos;: 0.5,&#xD;	            &apos;decay&apos;: 0,&#xD;	            &apos;sustain&apos;: 1,&#xD;	            &apos;release&apos;: 0.5&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  trigger the attack portion of the note&#xD;		 *  &#xD;		 *  @param  {Time} [time=now] the time the note will occur&#xD;		 *  @param {NormalRange} [velocity=1] the velocity of the note&#xD;		 *  @private&#xD;		 *  @returns {Tone.AMSynth} this&#xD;		 */&#xD;	    Tone.AMSynth.prototype._triggerEnvelopeAttack = function (time, velocity) {&#xD;	        //the port glide&#xD;	        time = this.toSeconds(time);&#xD;	        //the envelopes&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        this.modulationEnvelope.triggerAttack(time, velocity);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  trigger the release portion of the note&#xD;		 *  &#xD;		 *  @param  {Time} [time=now] the time the note will release&#xD;		 *  @private&#xD;		 *  @returns {Tone.AMSynth} this&#xD;		 */&#xD;	    Tone.AMSynth.prototype._triggerEnvelopeRelease = function (time) {&#xD;	        this.envelope.triggerRelease(time);&#xD;	        this.modulationEnvelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.AMSynth} this&#xD;		 */&#xD;	    Tone.AMSynth.prototype.dispose = function () {&#xD;	        Tone.Monophonic.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;harmonicity&apos;,&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;,&#xD;	            &apos;modulation&apos;,&#xD;	            &apos;modulationEnvelope&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this._carrier.dispose();&#xD;	        this._carrier = null;&#xD;	        this._modulator.dispose();&#xD;	        this._modulator = null;&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this.harmonicity.dispose();&#xD;	        this.harmonicity = null;&#xD;	        this._modulationScale.dispose();&#xD;	        this._modulationScale = null;&#xD;	        this._modulationNode.dispose();&#xD;	        this._modulationNode = null;&#xD;	        this.oscillator = null;&#xD;	        this.envelope = null;&#xD;	        this.modulationEnvelope = null;&#xD;	        this.modulation = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.AMSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.MonoSynth is composed of one oscillator, one filter, and two envelopes.&#xD;		 *          The amplitude of the Tone.Oscillator and the cutoff frequency of the &#xD;		 *          Tone.Filter are controlled by Tone.Envelopes. &#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1gaY1DF9_Hzkodqf8JI1Cg2VZfwSElpFQfI94IQwad38/pub?w=924&amp;h=240"&gt;&#xD;		 *          &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Monophonic}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 *  @example&#xD;		 * var synth = new Tone.MonoSynth({&#xD;		 * 	"oscillator" : {&#xD;		 * 		"type" : "square"&#xD;		 *  },&#xD;		 *  "envelope" : {&#xD;		 *  	"attack" : 0.1&#xD;		 *  }&#xD;		 * }).toMaster();&#xD;		 * synth.triggerAttackRelease("C4", "8n");&#xD;		 */&#xD;	    Tone.MonoSynth = function (options) {&#xD;	        //get the defaults&#xD;	        options = this.defaultArg(options, Tone.MonoSynth.defaults);&#xD;	        Tone.Monophonic.call(this, options);&#xD;	        /**&#xD;			 *  The oscillator.&#xD;			 *  @type {Tone.OmniOscillator}&#xD;			 */&#xD;	        this.oscillator = new Tone.OmniOscillator(options.oscillator);&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = this.oscillator.frequency;&#xD;	        /**&#xD;			 *  The detune control.&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = this.oscillator.detune;&#xD;	        /**&#xD;			 *  The filter.&#xD;			 *  @type {Tone.Filter}&#xD;			 */&#xD;	        this.filter = new Tone.Filter(options.filter);&#xD;	        /**&#xD;			 *  The filter envelope.&#xD;			 *  @type {Tone.FrequencyEnvelope}&#xD;			 */&#xD;	        this.filterEnvelope = new Tone.FrequencyEnvelope(options.filterEnvelope);&#xD;	        /**&#xD;			 *  The amplitude envelope.&#xD;			 *  @type {Tone.AmplitudeEnvelope}&#xD;			 */&#xD;	        this.envelope = new Tone.AmplitudeEnvelope(options.envelope);&#xD;	        //connect the oscillators to the output&#xD;	        this.oscillator.chain(this.filter, this.envelope, this.output);&#xD;	        //start the oscillators&#xD;	        this.oscillator.start();&#xD;	        //connect the filter envelope&#xD;	        this.filterEnvelope.connect(this.filter.frequency);&#xD;	        this._readOnly([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;filter&apos;,&#xD;	            &apos;filterEnvelope&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.MonoSynth, Tone.Monophonic);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MonoSynth.defaults = {&#xD;	        &apos;frequency&apos;: &apos;C4&apos;,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;oscillator&apos;: { &apos;type&apos;: &apos;square&apos; },&#xD;	        &apos;filter&apos;: {&#xD;	            &apos;Q&apos;: 6,&#xD;	            &apos;type&apos;: &apos;lowpass&apos;,&#xD;	            &apos;rolloff&apos;: -24&#xD;	        },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.005,&#xD;	            &apos;decay&apos;: 0.1,&#xD;	            &apos;sustain&apos;: 0.9,&#xD;	            &apos;release&apos;: 1&#xD;	        },&#xD;	        &apos;filterEnvelope&apos;: {&#xD;	            &apos;attack&apos;: 0.06,&#xD;	            &apos;decay&apos;: 0.2,&#xD;	            &apos;sustain&apos;: 0.5,&#xD;	            &apos;release&apos;: 2,&#xD;	            &apos;baseFrequency&apos;: 200,&#xD;	            &apos;octaves&apos;: 7,&#xD;	            &apos;exponent&apos;: 2&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  start the attack portion of the envelope&#xD;		 *  @param {Time} [time=now] the time the attack should start&#xD;		 *  @param {NormalRange} [velocity=1] the velocity of the note (0-1)&#xD;		 *  @returns {Tone.MonoSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.MonoSynth.prototype._triggerEnvelopeAttack = function (time, velocity) {&#xD;	        //the envelopes&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        this.filterEnvelope.triggerAttack(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  start the release portion of the envelope&#xD;		 *  @param {Time} [time=now] the time the release should start&#xD;		 *  @returns {Tone.MonoSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.MonoSynth.prototype._triggerEnvelopeRelease = function (time) {&#xD;	        this.envelope.triggerRelease(time);&#xD;	        this.filterEnvelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.MonoSynth} this&#xD;		 */&#xD;	    Tone.MonoSynth.prototype.dispose = function () {&#xD;	        Tone.Monophonic.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;detune&apos;,&#xD;	            &apos;filter&apos;,&#xD;	            &apos;filterEnvelope&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.oscillator.dispose();&#xD;	        this.oscillator = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        this.filterEnvelope.dispose();&#xD;	        this.filterEnvelope = null;&#xD;	        this.filter.dispose();&#xD;	        this.filter = null;&#xD;	        this.frequency = null;&#xD;	        this.detune = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MonoSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.DuoSynth is a monophonic synth composed of two &#xD;		 *          MonoSynths run in parallel with control over the &#xD;		 *          frequency ratio between the two voices and vibrato effect.&#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1bL4GXvfRMMlqS7XyBm9CjL9KJPSUKbcdBNpqOlkFLxk/pub?w=1012&amp;h=448"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Monophonic}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 *  @example&#xD;		 * var duoSynth = new Tone.DuoSynth().toMaster();&#xD;		 * duoSynth.triggerAttackRelease("C4", "2n");&#xD;		 */&#xD;	    Tone.DuoSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.DuoSynth.defaults);&#xD;	        Tone.Monophonic.call(this, options);&#xD;	        /**&#xD;			 *  the first voice&#xD;			 *  @type {Tone.MonoSynth}&#xD;			 */&#xD;	        this.voice0 = new Tone.MonoSynth(options.voice0);&#xD;	        this.voice0.volume.value = -10;&#xD;	        /**&#xD;			 *  the second voice&#xD;			 *  @type {Tone.MonoSynth}&#xD;			 */&#xD;	        this.voice1 = new Tone.MonoSynth(options.voice1);&#xD;	        this.voice1.volume.value = -10;&#xD;	        /**&#xD;			 *  The vibrato LFO. &#xD;			 *  @type {Tone.LFO}&#xD;			 *  @private&#xD;			 */&#xD;	        this._vibrato = new Tone.LFO(options.vibratoRate, -50, 50);&#xD;	        this._vibrato.start();&#xD;	        /**&#xD;			 * the vibrato frequency&#xD;			 * @type {Frequency}&#xD;			 * @signal&#xD;			 */&#xD;	        this.vibratoRate = this._vibrato.frequency;&#xD;	        /**&#xD;			 *  the vibrato gain&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._vibratoGain = new Tone.Gain(options.vibratoAmount, Tone.Type.Positive);&#xD;	        /**&#xD;			 * The amount of vibrato&#xD;			 * @type {Positive}&#xD;			 * @signal&#xD;			 */&#xD;	        this.vibratoAmount = this._vibratoGain.gain;&#xD;	        /**&#xD;			 *  the frequency control&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(440, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  Harmonicity is the ratio between the two voices. A harmonicity of&#xD;			 *  1 is no change. Harmonicity = 2 means a change of an octave. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * //pitch voice1 an octave below voice0&#xD;			 * duoSynth.harmonicity.value = 0.5;&#xD;			 */&#xD;	        this.harmonicity = new Tone.Multiply(options.harmonicity);&#xD;	        this.harmonicity.units = Tone.Type.Positive;&#xD;	        //control the two voices frequency&#xD;	        this.frequency.connect(this.voice0.frequency);&#xD;	        this.frequency.chain(this.harmonicity, this.voice1.frequency);&#xD;	        this._vibrato.connect(this._vibratoGain);&#xD;	        this._vibratoGain.fan(this.voice0.detune, this.voice1.detune);&#xD;	        this.voice0.connect(this.output);&#xD;	        this.voice1.connect(this.output);&#xD;	        this._readOnly([&#xD;	            &apos;voice0&apos;,&#xD;	            &apos;voice1&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;vibratoAmount&apos;,&#xD;	            &apos;vibratoRate&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.DuoSynth, Tone.Monophonic);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.DuoSynth.defaults = {&#xD;	        &apos;vibratoAmount&apos;: 0.5,&#xD;	        &apos;vibratoRate&apos;: 5,&#xD;	        &apos;harmonicity&apos;: 1.5,&#xD;	        &apos;voice0&apos;: {&#xD;	            &apos;volume&apos;: -10,&#xD;	            &apos;portamento&apos;: 0,&#xD;	            &apos;oscillator&apos;: { &apos;type&apos;: &apos;sine&apos; },&#xD;	            &apos;filterEnvelope&apos;: {&#xD;	                &apos;attack&apos;: 0.01,&#xD;	                &apos;decay&apos;: 0,&#xD;	                &apos;sustain&apos;: 1,&#xD;	                &apos;release&apos;: 0.5&#xD;	            },&#xD;	            &apos;envelope&apos;: {&#xD;	                &apos;attack&apos;: 0.01,&#xD;	                &apos;decay&apos;: 0,&#xD;	                &apos;sustain&apos;: 1,&#xD;	                &apos;release&apos;: 0.5&#xD;	            }&#xD;	        },&#xD;	        &apos;voice1&apos;: {&#xD;	            &apos;volume&apos;: -10,&#xD;	            &apos;portamento&apos;: 0,&#xD;	            &apos;oscillator&apos;: { &apos;type&apos;: &apos;sine&apos; },&#xD;	            &apos;filterEnvelope&apos;: {&#xD;	                &apos;attack&apos;: 0.01,&#xD;	                &apos;decay&apos;: 0,&#xD;	                &apos;sustain&apos;: 1,&#xD;	                &apos;release&apos;: 0.5&#xD;	            },&#xD;	            &apos;envelope&apos;: {&#xD;	                &apos;attack&apos;: 0.01,&#xD;	                &apos;decay&apos;: 0,&#xD;	                &apos;sustain&apos;: 1,&#xD;	                &apos;release&apos;: 0.5&#xD;	            }&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  start the attack portion of the envelopes&#xD;		 *  &#xD;		 *  @param {Time} [time=now] the time the attack should start&#xD;		 *  @param {NormalRange} [velocity=1] the velocity of the note (0-1)&#xD;		 *  @returns {Tone.DuoSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.DuoSynth.prototype._triggerEnvelopeAttack = function (time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.voice0.envelope.triggerAttack(time, velocity);&#xD;	        this.voice1.envelope.triggerAttack(time, velocity);&#xD;	        this.voice0.filterEnvelope.triggerAttack(time);&#xD;	        this.voice1.filterEnvelope.triggerAttack(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  start the release portion of the envelopes&#xD;		 *  &#xD;		 *  @param {Time} [time=now] the time the release should start&#xD;		 *  @returns {Tone.DuoSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.DuoSynth.prototype._triggerEnvelopeRelease = function (time) {&#xD;	        this.voice0.triggerRelease(time);&#xD;	        this.voice1.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.DuoSynth} this&#xD;		 */&#xD;	    Tone.DuoSynth.prototype.dispose = function () {&#xD;	        Tone.Monophonic.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;voice0&apos;,&#xD;	            &apos;voice1&apos;,&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;vibratoAmount&apos;,&#xD;	            &apos;vibratoRate&apos;&#xD;	        ]);&#xD;	        this.voice0.dispose();&#xD;	        this.voice0 = null;&#xD;	        this.voice1.dispose();&#xD;	        this.voice1 = null;&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this._vibratoGain.dispose();&#xD;	        this._vibratoGain = null;&#xD;	        this._vibrato = null;&#xD;	        this.harmonicity.dispose();&#xD;	        this.harmonicity = null;&#xD;	        this.vibratoAmount.dispose();&#xD;	        this.vibratoAmount = null;&#xD;	        this.vibratoRate = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.DuoSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  FMSynth is composed of two Tone.Synths where one Tone.Synth modulates&#xD;		 *          the frequency of a second Tone.Synth. A lot of spectral content &#xD;		 *          can be explored using the modulationIndex parameter. Read more about&#xD;		 *          frequency modulation synthesis on [SoundOnSound](http://www.soundonsound.com/sos/apr00/articles/synthsecrets.htm).&#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1h0PUDZXPgi4Ikx6bVT6oncrYPLluFKy7lj53puxj-DM/pub?w=902&amp;h=462"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Monophonic}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 *  @example&#xD;		 * var fmSynth = new Tone.FMSynth().toMaster();&#xD;		 * fmSynth.triggerAttackRelease("C5", "4n");&#xD;		 */&#xD;	    Tone.FMSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.FMSynth.defaults);&#xD;	        Tone.Monophonic.call(this, options);&#xD;	        /**&#xD;			 *  The carrier voice.&#xD;			 *  @type {Tone.Synth}&#xD;			 *  @private&#xD;			 */&#xD;	        this._carrier = new Tone.Synth(options.carrier);&#xD;	        this._carrier.volume.value = -10;&#xD;	        /**&#xD;			 *  The carrier&apos;s oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.oscillator = this._carrier.oscillator;&#xD;	        /**&#xD;			 *  The carrier&apos;s envelope&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.envelope = this._carrier.envelope.set(options.envelope);&#xD;	        /**&#xD;			 *  The modulator voice.&#xD;			 *  @type {Tone.Synth}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulator = new Tone.Synth(options.modulator);&#xD;	        this._modulator.volume.value = -10;&#xD;	        /**&#xD;			 *  The modulator&apos;s oscillator which is applied&#xD;			 *  to the amplitude of the oscillator&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.modulation = this._modulator.oscillator.set(options.modulation);&#xD;	        /**&#xD;			 *  The modulator&apos;s envelope&#xD;			 *  @type {Tone.Oscillator}&#xD;			 */&#xD;	        this.modulationEnvelope = this._modulator.envelope.set(options.modulationEnvelope);&#xD;	        /**&#xD;			 *  The frequency control.&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(440, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The detune in cents&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        /**&#xD;			 *  Harmonicity is the ratio between the two voices. A harmonicity of&#xD;			 *  1 is no change. Harmonicity = 2 means a change of an octave. &#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 *  @example&#xD;			 * //pitch voice1 an octave below voice0&#xD;			 * synth.harmonicity.value = 0.5;&#xD;			 */&#xD;	        this.harmonicity = new Tone.Multiply(options.harmonicity);&#xD;	        this.harmonicity.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  The modulation index which essentially the depth or amount of the modulation. It is the &#xD;			 *  ratio of the frequency of the modulating signal (mf) to the amplitude of the &#xD;			 *  modulating signal (ma) -- as in ma/mf. &#xD;			 *	@type {Positive}&#xD;			 *	@signal&#xD;			 */&#xD;	        this.modulationIndex = new Tone.Multiply(options.modulationIndex);&#xD;	        this.modulationIndex.units = Tone.Type.Positive;&#xD;	        /**&#xD;			 *  the node where the modulation happens&#xD;			 *  @type {GainNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._modulationNode = new Tone.Gain(0);&#xD;	        //control the two voices frequency&#xD;	        this.frequency.connect(this._carrier.frequency);&#xD;	        this.frequency.chain(this.harmonicity, this._modulator.frequency);&#xD;	        this.frequency.chain(this.modulationIndex, this._modulationNode);&#xD;	        this.detune.fan(this._carrier.detune, this._modulator.detune);&#xD;	        this._modulator.connect(this._modulationNode.gain);&#xD;	        this._modulationNode.connect(this._carrier.frequency);&#xD;	        this._carrier.connect(this.output);&#xD;	        this._readOnly([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;harmonicity&apos;,&#xD;	            &apos;modulationIndex&apos;,&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;,&#xD;	            &apos;modulation&apos;,&#xD;	            &apos;modulationEnvelope&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.FMSynth, Tone.Monophonic);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.FMSynth.defaults = {&#xD;	        &apos;harmonicity&apos;: 3,&#xD;	        &apos;modulationIndex&apos;: 10,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;oscillator&apos;: { &apos;type&apos;: &apos;sine&apos; },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.01,&#xD;	            &apos;decay&apos;: 0.01,&#xD;	            &apos;sustain&apos;: 1,&#xD;	            &apos;release&apos;: 0.5&#xD;	        },&#xD;	        &apos;modulation&apos;: { &apos;type&apos;: &apos;square&apos; },&#xD;	        &apos;modulationEnvelope&apos;: {&#xD;	            &apos;attack&apos;: 0.5,&#xD;	            &apos;decay&apos;: 0,&#xD;	            &apos;sustain&apos;: 1,&#xD;	            &apos;release&apos;: 0.5&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 * 	trigger the attack portion of the note&#xD;		 *  &#xD;		 *  @param  {Time} [time=now] the time the note will occur&#xD;		 *  @param {number} [velocity=1] the velocity of the note&#xD;		 *  @returns {Tone.FMSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FMSynth.prototype._triggerEnvelopeAttack = function (time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        //the envelopes&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        this.modulationEnvelope.triggerAttack(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  trigger the release portion of the note&#xD;		 *  &#xD;		 *  @param  {Time} [time=now] the time the note will release&#xD;		 *  @returns {Tone.FMSynth} this&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.FMSynth.prototype._triggerEnvelopeRelease = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.envelope.triggerRelease(time);&#xD;	        this.modulationEnvelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.FMSynth} this&#xD;		 */&#xD;	    Tone.FMSynth.prototype.dispose = function () {&#xD;	        Tone.Monophonic.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;frequency&apos;,&#xD;	            &apos;harmonicity&apos;,&#xD;	            &apos;modulationIndex&apos;,&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;,&#xD;	            &apos;modulation&apos;,&#xD;	            &apos;modulationEnvelope&apos;,&#xD;	            &apos;detune&apos;&#xD;	        ]);&#xD;	        this._carrier.dispose();&#xD;	        this._carrier = null;&#xD;	        this._modulator.dispose();&#xD;	        this._modulator = null;&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this.modulationIndex.dispose();&#xD;	        this.modulationIndex = null;&#xD;	        this.harmonicity.dispose();&#xD;	        this.harmonicity = null;&#xD;	        this._modulationNode.dispose();&#xD;	        this._modulationNode = null;&#xD;	        this.oscillator = null;&#xD;	        this.envelope = null;&#xD;	        this.modulationEnvelope = null;&#xD;	        this.modulation = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.FMSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.MembraneSynth makes kick and tom sounds using a single oscillator&#xD;		 *          with an amplitude envelope and frequency ramp. A Tone.OmniOscillator&#xD;		 *          is routed through a Tone.AmplitudeEnvelope to the output. The drum&#xD;		 *          quality of the sound comes from the frequency envelope applied&#xD;		 *          during during Tone.MembraneSynth.triggerAttack(note). The frequency&#xD;		 *          envelope starts at &lt;code&gt;note * .octaves&lt;/code&gt; and ramps to &#xD;		 *          &lt;code&gt;note&lt;/code&gt; over the duration of &lt;code&gt;.pitchDecay&lt;/code&gt;. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 *  @example&#xD;		 * var synth = new Tone.MembraneSynth().toMaster();&#xD;		 * synth.triggerAttackRelease("C2", "8n");&#xD;		 */&#xD;	    Tone.MembraneSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.MembraneSynth.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  The oscillator.&#xD;			 *  @type {Tone.OmniOscillator}&#xD;			 */&#xD;	        this.oscillator = new Tone.OmniOscillator(options.oscillator).start();&#xD;	        /**&#xD;			 *  The amplitude envelope.&#xD;			 *  @type {Tone.AmplitudeEnvelope}&#xD;			 */&#xD;	        this.envelope = new Tone.AmplitudeEnvelope(options.envelope);&#xD;	        /**&#xD;			 *  The number of octaves the pitch envelope ramps.&#xD;			 *  @type {Positive}&#xD;			 */&#xD;	        this.octaves = options.octaves;&#xD;	        /**&#xD;			 *  The amount of time the frequency envelope takes. &#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.pitchDecay = options.pitchDecay;&#xD;	        this.oscillator.chain(this.envelope, this.output);&#xD;	        this._readOnly([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.MembraneSynth, Tone.Instrument);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MembraneSynth.defaults = {&#xD;	        &apos;pitchDecay&apos;: 0.05,&#xD;	        &apos;octaves&apos;: 10,&#xD;	        &apos;oscillator&apos;: { &apos;type&apos;: &apos;sine&apos; },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.001,&#xD;	            &apos;decay&apos;: 0.4,&#xD;	            &apos;sustain&apos;: 0.01,&#xD;	            &apos;release&apos;: 1.4,&#xD;	            &apos;attackCurve&apos;: &apos;exponential&apos;&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the note at the given time with the given velocity. &#xD;		 *  &#xD;		 *  @param  {Frequency} note     the note&#xD;		 *  @param  {Time} [time=now]     the time, if not given is now&#xD;		 *  @param  {number} [velocity=1] velocity defaults to 1&#xD;		 *  @returns {Tone.MembraneSynth} this&#xD;		 *  @example&#xD;		 *  kick.triggerAttack(60);&#xD;		 */&#xD;	    Tone.MembraneSynth.prototype.triggerAttack = function (note, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        note = this.toFrequency(note);&#xD;	        var maxNote = note * this.octaves;&#xD;	        this.oscillator.frequency.setValueAtTime(maxNote, time);&#xD;	        this.oscillator.frequency.exponentialRampToValueAtTime(note, time + this.toSeconds(this.pitchDecay));&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the release portion of the note.&#xD;		 *  &#xD;		 *  @param  {Time} [time=now] the time the note will release&#xD;		 *  @returns {Tone.MembraneSynth} this&#xD;		 */&#xD;	    Tone.MembraneSynth.prototype.triggerRelease = function (time) {&#xD;	        this.envelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.MembraneSynth} this&#xD;		 */&#xD;	    Tone.MembraneSynth.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;oscillator&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.oscillator.dispose();&#xD;	        this.oscillator = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MembraneSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  Inharmonic ratio of frequencies based on the Roland TR-808&#xD;		 *  Taken from https://ccrma.stanford.edu/papers/tr-808-cymbal-physically-informed-circuit-bendable-digital-model&#xD;		 *  @private&#xD;		 *  @static&#xD;		 *  @type {Array}&#xD;		 */&#xD;	    var inharmRatios = [&#xD;	        1,&#xD;	        1.483,&#xD;	        1.932,&#xD;	        2.546,&#xD;	        2.63,&#xD;	        3.897&#xD;	    ];&#xD;	    /**&#xD;		 *  @class  A highly inharmonic and spectrally complex source with a highpass filter&#xD;		 *          and amplitude envelope which is good for making metalophone sounds. Based&#xD;		 *          on CymbalSynth by [@polyrhythmatic](https://github.com/polyrhythmatic).&#xD;		 *          Inspiration from [Sound on Sound](http://www.soundonsound.com/sos/jul02/articles/synthsecrets0702.asp).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {Object} [options] The options availble for the synth&#xD;		 *                             see defaults below&#xD;		 */&#xD;	    Tone.MetalSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.MetalSynth.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  The frequency of the cymbal&#xD;			 *  @type  {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.frequency = new Tone.Signal(options.frequency, Tone.Type.Frequency);&#xD;	        /**&#xD;			 *  The array of FMOscillators&#xD;			 *  @type  {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._oscillators = [];&#xD;	        /**&#xD;			 *  The frequency multipliers&#xD;			 *  @type {Array}&#xD;			 *  @private&#xD;			 */&#xD;	        this._freqMultipliers = [];&#xD;	        /**&#xD;			 *  The amplitude for the body&#xD;			 *  @type {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._amplitue = new Tone.Gain(0).connect(this.output);&#xD;	        /**&#xD;			 *  highpass the output&#xD;			 *  @type {Tone.Filter}&#xD;			 *  @private&#xD;			 */&#xD;	        this._highpass = new Tone.Filter({&#xD;	            &apos;type&apos;: &apos;highpass&apos;,&#xD;	            &apos;Q&apos;: -3.0102999566398125&#xD;	        }).connect(this._amplitue);&#xD;	        /**&#xD;			 *  The number of octaves the highpass&#xD;			 *  filter frequency ramps&#xD;			 *  @type {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._octaves = options.octaves;&#xD;	        /**&#xD;			 *  Scale the body envelope&#xD;			 *  for the bandpass&#xD;			 *  @type {Tone.Scale}&#xD;			 *  @private&#xD;			 */&#xD;	        this._filterFreqScaler = new Tone.Scale(options.resonance, 7000);&#xD;	        /**&#xD;			 *  The envelope which is connected both to the &#xD;			 *  amplitude and highpass filter&apos;s cutoff frequency&#xD;			 *  @type  {Tone.Envelope}&#xD;			 */&#xD;	        this.envelope = new Tone.Envelope({&#xD;	            &apos;attack&apos;: options.envelope.attack,&#xD;	            &apos;attackCurve&apos;: &apos;linear&apos;,&#xD;	            &apos;decay&apos;: options.envelope.decay,&#xD;	            &apos;sustain&apos;: 0,&#xD;	            &apos;release&apos;: options.envelope.release&#xD;	        }).chain(this._filterFreqScaler, this._highpass.frequency);&#xD;	        this.envelope.connect(this._amplitue.gain);&#xD;	        for (var i = 0; i &lt; inharmRatios.length; i++) {&#xD;	            var osc = new Tone.FMOscillator({&#xD;	                &apos;type&apos;: &apos;square&apos;,&#xD;	                &apos;modulationType&apos;: &apos;square&apos;,&#xD;	                &apos;harmonicity&apos;: options.harmonicity,&#xD;	                &apos;modulationIndex&apos;: options.modulationIndex&#xD;	            });&#xD;	            osc.connect(this._highpass).start(0);&#xD;	            this._oscillators[i] = osc;&#xD;	            var mult = new Tone.Multiply(inharmRatios[i]);&#xD;	            this._freqMultipliers[i] = mult;&#xD;	            this.frequency.chain(mult, osc.frequency);&#xD;	        }&#xD;	        //set the octaves&#xD;	        this.octaves = options.octaves;&#xD;	    };&#xD;	    Tone.extend(Tone.MetalSynth, Tone.Instrument);&#xD;	    /**&#xD;		 *  default values&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.MetalSynth.defaults = {&#xD;	        &apos;frequency&apos;: 200,&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.001,&#xD;	            &apos;decay&apos;: 1.4,&#xD;	            &apos;release&apos;: 0.2&#xD;	        },&#xD;	        &apos;harmonicity&apos;: 5.1,&#xD;	        &apos;modulationIndex&apos;: 32,&#xD;	        &apos;resonance&apos;: 4000,&#xD;	        &apos;octaves&apos;: 1.5&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack.&#xD;		 *  @param  {Time}  time      When the attack should be triggered.&#xD;		 *  @param  {NormalRange=1}  velocity  The velocity that the envelope should be triggered at.&#xD;		 *  @return  {Tone.MetalSynth}  this&#xD;		 */&#xD;	    Tone.MetalSynth.prototype.triggerAttack = function (time, vel) {&#xD;	        time = this.toSeconds(time);&#xD;	        vel = this.defaultArg(vel, 1);&#xD;	        this.envelope.triggerAttack(time, vel);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the release of the envelope.&#xD;		 *  @param  {Time}  time      When the release should be triggered.&#xD;		 *  @return  {Tone.MetalSynth}  this&#xD;		 */&#xD;	    Tone.MetalSynth.prototype.triggerRelease = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.envelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack and release of the envelope after the given &#xD;		 *  duration. &#xD;		 *  @param  {Time}  duration  The duration before triggering the release&#xD;		 *  @param  {Time}  time      When the attack should be triggered.&#xD;		 *  @param  {NormalRange=1}  velocity  The velocity that the envelope should be triggered at.&#xD;		 *  @return  {Tone.MetalSynth}  this&#xD;		 */&#xD;	    Tone.MetalSynth.prototype.triggerAttackRelease = function (duration, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        duration = this.toSeconds(duration);&#xD;	        this.triggerAttack(time, velocity);&#xD;	        this.triggerRelease(time + duration);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The modulationIndex of the oscillators which make up the source.&#xD;		 *  see Tone.FMOscillator.modulationIndex&#xD;		 *  @memberOf Tone.MetalSynth#&#xD;		 *  @type {Positive}&#xD;		 *  @name  modulationIndex&#xD;		 */&#xD;	    Object.defineProperty(Tone.MetalSynth.prototype, &apos;modulationIndex&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillators[0].modulationIndex.value;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            for (var i = 0; i &lt; this._oscillators.length; i++) {&#xD;	                this._oscillators[i].modulationIndex.value = val;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The harmonicity of the oscillators which make up the source.&#xD;		 *  see Tone.FMOscillator.harmonicity&#xD;		 *  @memberOf Tone.MetalSynth#&#xD;		 *  @type {Positive}&#xD;		 *  @name  harmonicity&#xD;		 */&#xD;	    Object.defineProperty(Tone.MetalSynth.prototype, &apos;harmonicity&apos;, {&#xD;	        get: function () {&#xD;	            return this._oscillators[0].harmonicity.value;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            for (var i = 0; i &lt; this._oscillators.length; i++) {&#xD;	                this._oscillators[i].harmonicity.value = val;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The frequency of the highpass filter attached to the envelope&#xD;		 *  @memberOf Tone.MetalSynth#&#xD;		 *  @type {Frequency}&#xD;		 *  @name  resonance&#xD;		 */&#xD;	    Object.defineProperty(Tone.MetalSynth.prototype, &apos;resonance&apos;, {&#xD;	        get: function () {&#xD;	            return this._filterFreqScaler.min;&#xD;	        },&#xD;	        set: function (val) {&#xD;	            this._filterFreqScaler.min = val;&#xD;	            this.octaves = this._octaves;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The number of octaves above the "resonance" frequency&#xD;		 *  that the filter ramps during the attack/decay envelope&#xD;		 *  @memberOf Tone.MetalSynth#&#xD;		 *  @type {Number}&#xD;		 *  @name  octaves&#xD;		 */&#xD;	    Object.defineProperty(Tone.MetalSynth.prototype, &apos;octaves&apos;, {&#xD;	        get: function () {&#xD;	            return this._octaves;&#xD;	        },&#xD;	        set: function (octs) {&#xD;	            this._octaves = octs;&#xD;	            this._filterFreqScaler.max = this._filterFreqScaler.min * Math.pow(2, octs);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up&#xD;		 *  @returns {Tone.MetalSynth} this&#xD;		 */&#xD;	    Tone.MetalSynth.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        for (var i = 0; i &lt; this._oscillators.length; i++) {&#xD;	            this._oscillators[i].dispose();&#xD;	            this._freqMultipliers[i].dispose();&#xD;	        }&#xD;	        this._oscillators = null;&#xD;	        this._freqMultipliers = null;&#xD;	        this.frequency.dispose();&#xD;	        this.frequency = null;&#xD;	        this._filterFreqScaler.dispose();&#xD;	        this._filterFreqScaler = null;&#xD;	        this._amplitue.dispose();&#xD;	        this._amplitue = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        this._highpass.dispose();&#xD;	        this._highpass = null;&#xD;	    };&#xD;	    return Tone.MetalSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Noise is a noise generator. It uses looped noise buffers to save on performance.&#xD;		 *          Tone.Noise supports the noise types: "pink", "white", and "brown". Read more about&#xD;		 *          colors of noise on [Wikipedia](https://en.wikipedia.org/wiki/Colors_of_noise).&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Source}&#xD;		 *  @param {string} type the noise type (white|pink|brown)&#xD;		 *  @example&#xD;		 * //initialize the noise and start&#xD;		 * var noise = new Tone.Noise("pink").start();&#xD;		 * &#xD;		 * //make an autofilter to shape the noise&#xD;		 * var autoFilter = new Tone.AutoFilter({&#xD;		 * 	"frequency" : "8m", &#xD;		 * 	"min" : 800, &#xD;		 * 	"max" : 15000&#xD;		 * }).connect(Tone.Master);&#xD;		 * &#xD;		 * //connect the noise&#xD;		 * noise.connect(autoFilter);&#xD;		 * //start the autofilter LFO&#xD;		 * autoFilter.start()&#xD;		 */&#xD;	    Tone.Noise = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;type&apos;], Tone.Noise.defaults);&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {AudioBufferSourceNode}&#xD;			 */&#xD;	        this._source = null;&#xD;	        /**&#xD;			 *  the buffer&#xD;			 *  @private&#xD;			 *  @type {AudioBuffer}&#xD;			 */&#xD;	        this._buffer = null;&#xD;	        /**&#xD;			 *  The playback rate of the noise. Affects&#xD;			 *  the "frequency" of the noise.&#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 */&#xD;	        this._playbackRate = options.playbackRate;&#xD;	        this.type = options.type;&#xD;	    };&#xD;	    Tone.extend(Tone.Noise, Tone.Source);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Noise.defaults = {&#xD;	        &apos;type&apos;: &apos;white&apos;,&#xD;	        &apos;playbackRate&apos;: 1&#xD;	    };&#xD;	    /**&#xD;		 * The type of the noise. Can be "white", "brown", or "pink". &#xD;		 * @memberOf Tone.Noise#&#xD;		 * @type {string}&#xD;		 * @name type&#xD;		 * @example&#xD;		 * noise.type = "white";&#xD;		 */&#xD;	    Object.defineProperty(Tone.Noise.prototype, &apos;type&apos;, {&#xD;	        get: function () {&#xD;	            if (this._buffer === _whiteNoise) {&#xD;	                return &apos;white&apos;;&#xD;	            } else if (this._buffer === _brownNoise) {&#xD;	                return &apos;brown&apos;;&#xD;	            } else if (this._buffer === _pinkNoise) {&#xD;	                return &apos;pink&apos;;&#xD;	            }&#xD;	        },&#xD;	        set: function (type) {&#xD;	            if (this.type !== type) {&#xD;	                switch (type) {&#xD;	                case &apos;white&apos;:&#xD;	                    this._buffer = _whiteNoise;&#xD;	                    break;&#xD;	                case &apos;pink&apos;:&#xD;	                    this._buffer = _pinkNoise;&#xD;	                    break;&#xD;	                case &apos;brown&apos;:&#xD;	                    this._buffer = _brownNoise;&#xD;	                    break;&#xD;	                default:&#xD;	                    throw new TypeError(&apos;Tone.Noise: invalid type: &apos; + type);&#xD;	                }&#xD;	                //if it&apos;s playing, stop and restart it&#xD;	                if (this.state === Tone.State.Started) {&#xD;	                    var now = this.now() + this.blockTime;&#xD;	                    //remove the listener&#xD;	                    this._stop(now);&#xD;	                    this._start(now);&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  The playback rate of the noise. Affects&#xD;		 *  the "frequency" of the noise.&#xD;		 *  @type {Positive}&#xD;		 *  @signal&#xD;		 */&#xD;	    Object.defineProperty(Tone.Noise.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._playbackRate = rate;&#xD;	            if (this._source) {&#xD;	                this._source.playbackRate.value = rate;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  internal start method&#xD;		 *&#xD;		 *  @param {Time} time&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Noise.prototype._start = function (time) {&#xD;	        this._source = this.context.createBufferSource();&#xD;	        this._source.buffer = this._buffer;&#xD;	        this._source.loop = true;&#xD;	        this._source.playbackRate.value = this._playbackRate;&#xD;	        this._source.connect(this.output);&#xD;	        this._source.start(this.toSeconds(time), Math.random() * (this._buffer.duration - 0.001));&#xD;	    };&#xD;	    /**&#xD;		 *  internal stop method&#xD;		 *&#xD;		 *  @param {Time} time&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Noise.prototype._stop = function (time) {&#xD;	        if (this._source) {&#xD;	            this._source.stop(this.toSeconds(time));&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Noise} this&#xD;		 */&#xD;	    Tone.Noise.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        if (this._source !== null) {&#xD;	            this._source.disconnect();&#xD;	            this._source = null;&#xD;	        }&#xD;	        this._buffer = null;&#xD;	        return this;&#xD;	    };&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    // THE BUFFERS&#xD;	    // borrowed heavily from http://noisehack.com/generate-noise-web-audio-api/&#xD;	    ///////////////////////////////////////////////////////////////////////////&#xD;	    /**&#xD;		 *	static noise buffers&#xD;		 *&#xD;		 *  @static&#xD;		 *  @private&#xD;		 *  @type {AudioBuffer}&#xD;		 */&#xD;	    var _pinkNoise = null, _brownNoise = null, _whiteNoise = null;&#xD;	    Tone._initAudioContext(function (audioContext) {&#xD;	        var sampleRate = audioContext.sampleRate;&#xD;	        //four seconds per buffer&#xD;	        var bufferLength = sampleRate * 4;&#xD;	        //fill the buffers&#xD;	        _pinkNoise = function () {&#xD;	            var buffer = audioContext.createBuffer(2, bufferLength, sampleRate);&#xD;	            for (var channelNum = 0; channelNum &lt; buffer.numberOfChannels; channelNum++) {&#xD;	                var channel = buffer.getChannelData(channelNum);&#xD;	                var b0, b1, b2, b3, b4, b5, b6;&#xD;	                b0 = b1 = b2 = b3 = b4 = b5 = b6 = 0;&#xD;	                for (var i = 0; i &lt; bufferLength; i++) {&#xD;	                    var white = Math.random() * 2 - 1;&#xD;	                    b0 = 0.99886 * b0 + white * 0.0555179;&#xD;	                    b1 = 0.99332 * b1 + white * 0.0750759;&#xD;	                    b2 = 0.969 * b2 + white * 0.153852;&#xD;	                    b3 = 0.8665 * b3 + white * 0.3104856;&#xD;	                    b4 = 0.55 * b4 + white * 0.5329522;&#xD;	                    b5 = -0.7616 * b5 - white * 0.016898;&#xD;	                    channel[i] = b0 + b1 + b2 + b3 + b4 + b5 + b6 + white * 0.5362;&#xD;	                    channel[i] *= 0.11;&#xD;	                    // (roughly) compensate for gain&#xD;	                    b6 = white * 0.115926;&#xD;	                }&#xD;	            }&#xD;	            return buffer;&#xD;	        }();&#xD;	        _brownNoise = function () {&#xD;	            var buffer = audioContext.createBuffer(2, bufferLength, sampleRate);&#xD;	            for (var channelNum = 0; channelNum &lt; buffer.numberOfChannels; channelNum++) {&#xD;	                var channel = buffer.getChannelData(channelNum);&#xD;	                var lastOut = 0;&#xD;	                for (var i = 0; i &lt; bufferLength; i++) {&#xD;	                    var white = Math.random() * 2 - 1;&#xD;	                    channel[i] = (lastOut + 0.02 * white) / 1.02;&#xD;	                    lastOut = channel[i];&#xD;	                    channel[i] *= 3.5;    // (roughly) compensate for gain&#xD;	                }&#xD;	            }&#xD;	            return buffer;&#xD;	        }();&#xD;	        _whiteNoise = function () {&#xD;	            var buffer = audioContext.createBuffer(2, bufferLength, sampleRate);&#xD;	            for (var channelNum = 0; channelNum &lt; buffer.numberOfChannels; channelNum++) {&#xD;	                var channel = buffer.getChannelData(channelNum);&#xD;	                for (var i = 0; i &lt; bufferLength; i++) {&#xD;	                    channel[i] = Math.random() * 2 - 1;&#xD;	                }&#xD;	            }&#xD;	            return buffer;&#xD;	        }();&#xD;	    });&#xD;	    return Tone.Noise;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.NoiseSynth is composed of a noise generator (Tone.Noise), one filter (Tone.Filter), &#xD;		 *          and two envelopes (Tone.Envelop). One envelope controls the amplitude&#xD;		 *          of the noise and the other is controls the cutoff frequency of the filter. &#xD;		 *          &lt;img src="https://docs.google.com/drawings/d/1rqzuX9rBlhT50MRvD2TKml9bnZhcZmzXF1rf_o7vdnE/pub?w=918&amp;h=242"&gt;&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {Object} [options] the options available for the synth &#xD;		 *                          see defaults below&#xD;		 * @example&#xD;		 * var noiseSynth = new Tone.NoiseSynth().toMaster();&#xD;		 * noiseSynth.triggerAttackRelease("8n");&#xD;		 */&#xD;	    Tone.NoiseSynth = function (options) {&#xD;	        //get the defaults&#xD;	        options = this.defaultArg(options, Tone.NoiseSynth.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  The noise source.&#xD;			 *  @type {Tone.Noise}&#xD;			 *  @example&#xD;			 * noiseSynth.set("noise.type", "brown");&#xD;			 */&#xD;	        this.noise = new Tone.Noise();&#xD;	        /**&#xD;			 *  The amplitude envelope. &#xD;			 *  @type {Tone.AmplitudeEnvelope}&#xD;			 */&#xD;	        this.envelope = new Tone.AmplitudeEnvelope(options.envelope);&#xD;	        //connect the noise to the output&#xD;	        this.noise.chain(this.envelope, this.output);&#xD;	        //start the noise&#xD;	        this.noise.start();&#xD;	        this._readOnly([&#xD;	            &apos;noise&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.NoiseSynth, Tone.Instrument);&#xD;	    /**&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.NoiseSynth.defaults = {&#xD;	        &apos;noise&apos;: { &apos;type&apos;: &apos;white&apos; },&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.005,&#xD;	            &apos;decay&apos;: 0.1,&#xD;	            &apos;sustain&apos;: 0&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Start the attack portion of the envelopes. Unlike other &#xD;		 *  instruments, Tone.NoiseSynth doesn&apos;t have a note. &#xD;		 *  @param {Time} [time=now] the time the attack should start&#xD;		 *  @param {number} [velocity=1] the velocity of the note (0-1)&#xD;		 *  @returns {Tone.NoiseSynth} this&#xD;		 *  @example&#xD;		 * noiseSynth.triggerAttack();&#xD;		 */&#xD;	    Tone.NoiseSynth.prototype.triggerAttack = function (time, velocity) {&#xD;	        //the envelopes&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start the release portion of the envelopes.&#xD;		 *  @param {Time} [time=now] the time the release should start&#xD;		 *  @returns {Tone.NoiseSynth} this&#xD;		 */&#xD;	    Tone.NoiseSynth.prototype.triggerRelease = function (time) {&#xD;	        this.envelope.triggerRelease(time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack and then the release. &#xD;		 *  @param  {Time} duration the duration of the note&#xD;		 *  @param  {Time} [time=now]     the time of the attack&#xD;		 *  @param  {number} [velocity=1] the velocity&#xD;		 *  @returns {Tone.NoiseSynth} this&#xD;		 */&#xD;	    Tone.NoiseSynth.prototype.triggerAttackRelease = function (duration, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        duration = this.toSeconds(duration);&#xD;	        this.triggerAttack(time, velocity);&#xD;	        this.triggerRelease(time + duration);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.NoiseSynth} this&#xD;		 */&#xD;	    Tone.NoiseSynth.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;noise&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.noise.dispose();&#xD;	        this.noise = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.NoiseSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Karplus-String string synthesis. Often out of tune. &#xD;		 *         Will change when the AudioWorkerNode is available across&#xD;		 *         browsers. &#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {Object} [options] see the defaults&#xD;		 *  @example&#xD;		 * var plucky = new Tone.PluckSynth().toMaster();&#xD;		 * plucky.triggerAttack("C4");&#xD;		 */&#xD;	    Tone.PluckSynth = function (options) {&#xD;	        options = this.defaultArg(options, Tone.PluckSynth.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  @type {Tone.Noise}&#xD;			 *  @private&#xD;			 */&#xD;	        this._noise = new Tone.Noise(&apos;pink&apos;);&#xD;	        /**&#xD;			 *  The amount of noise at the attack. &#xD;			 *  Nominal range of [0.1, 20]&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this.attackNoise = options.attackNoise;&#xD;	        /**&#xD;			 *  the LFCF&#xD;			 *  @type {Tone.LowpassCombFilter}&#xD;			 *  @private&#xD;			 */&#xD;	        this._lfcf = new Tone.LowpassCombFilter({&#xD;	            &apos;resonance&apos;: options.resonance,&#xD;	            &apos;dampening&apos;: options.dampening&#xD;	        });&#xD;	        /**&#xD;			 *  The resonance control. &#xD;			 *  @type {NormalRange}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.resonance = this._lfcf.resonance;&#xD;	        /**&#xD;			 *  The dampening control. i.e. the lowpass filter frequency of the comb filter&#xD;			 *  @type {Frequency}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.dampening = this._lfcf.dampening;&#xD;	        //connections&#xD;	        this._noise.connect(this._lfcf);&#xD;	        this._lfcf.connect(this.output);&#xD;	        this._readOnly([&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ]);&#xD;	    };&#xD;	    Tone.extend(Tone.PluckSynth, Tone.Instrument);&#xD;	    /**&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.PluckSynth.defaults = {&#xD;	        &apos;attackNoise&apos;: 1,&#xD;	        &apos;dampening&apos;: 4000,&#xD;	        &apos;resonance&apos;: 0.9&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the note. &#xD;		 *  @param {Frequency} note The note to trigger.&#xD;		 *  @param {Time} [time=now] When the note should be triggered.&#xD;		 *  @returns {Tone.PluckSynth} this&#xD;		 */&#xD;	    Tone.PluckSynth.prototype.triggerAttack = function (note, time) {&#xD;	        note = this.toFrequency(note);&#xD;	        time = this.toSeconds(time);&#xD;	        var delayAmount = 1 / note;&#xD;	        this._lfcf.delayTime.setValueAtTime(delayAmount, time);&#xD;	        this._noise.start(time);&#xD;	        this._noise.stop(time + delayAmount * this.attackNoise);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up. &#xD;		 *  @returns {Tone.PluckSynth} this&#xD;		 */&#xD;	    Tone.PluckSynth.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        this._noise.dispose();&#xD;	        this._lfcf.dispose();&#xD;	        this._noise = null;&#xD;	        this._lfcf = null;&#xD;	        this._writable([&#xD;	            &apos;resonance&apos;,&#xD;	            &apos;dampening&apos;&#xD;	        ]);&#xD;	        this.dampening = null;&#xD;	        this.resonance = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.PluckSynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.PolySynth handles voice creation and allocation for any&#xD;		 *          instruments passed in as the second paramter. PolySynth is &#xD;		 *          not a synthesizer by itself, it merely manages voices of &#xD;		 *          one of the other types of synths, allowing any of the &#xD;		 *          monophonic synthesizers to be polyphonic. &#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {number|Object} [polyphony=4] The number of voices to create&#xD;		 *  @param {function} [voice=Tone.Synth] The constructor of the voices&#xD;		 *                                            uses Tone.Synth by default. &#xD;		 *  @example&#xD;		 * //a polysynth composed of 6 Voices of Synth&#xD;		 * var synth = new Tone.PolySynth(6, Tone.Synth).toMaster();&#xD;		 * //set the attributes using the set interface&#xD;		 * synth.set("detune", -1200);&#xD;		 * //play a chord&#xD;		 * synth.triggerAttackRelease(["C4", "E4", "A4"], "4n");&#xD;		 */&#xD;	    Tone.PolySynth = function () {&#xD;	        Tone.Instrument.call(this);&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;polyphony&apos;,&#xD;	            &apos;voice&apos;&#xD;	        ], Tone.PolySynth.defaults);&#xD;	        options = this.defaultArg(options, Tone.Instrument.defaults);&#xD;	        //max polyphony&#xD;	        options.polyphony = Math.min(Tone.PolySynth.MAX_POLYPHONY, options.polyphony);&#xD;	        /**&#xD;			 *  the array of voices&#xD;			 *  @type {Array}&#xD;			 */&#xD;	        this.voices = new Array(options.polyphony);&#xD;	        /**&#xD;			 *  The queue of voices with data about last trigger&#xD;			 *  and the triggered note&#xD;			 *  @private&#xD;			 *  @type {Array}&#xD;			 */&#xD;	        this._triggers = new Array(options.polyphony);&#xD;	        /**&#xD;			 *  The detune in cents&#xD;			 *  @type {Cents}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.detune = new Tone.Signal(options.detune, Tone.Type.Cents);&#xD;	        this._readOnly(&apos;detune&apos;);&#xD;	        //create the voices&#xD;	        for (var i = 0; i &lt; options.polyphony; i++) {&#xD;	            var v = new options.voice(arguments[2], arguments[3]);&#xD;	            this.voices[i] = v;&#xD;	            v.connect(this.output);&#xD;	            if (v.hasOwnProperty(&apos;detune&apos;)) {&#xD;	                this.detune.connect(v.detune);&#xD;	            }&#xD;	            this._triggers[i] = {&#xD;	                release: -1,&#xD;	                note: null,&#xD;	                voice: v&#xD;	            };&#xD;	        }&#xD;	        //set the volume initially&#xD;	        this.volume.value = options.volume;&#xD;	    };&#xD;	    Tone.extend(Tone.PolySynth, Tone.Instrument);&#xD;	    /**&#xD;		 *  the defaults&#xD;		 *  @const&#xD;		 *  @static&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.PolySynth.defaults = {&#xD;	        &apos;polyphony&apos;: 4,&#xD;	        &apos;volume&apos;: 0,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;voice&apos;: Tone.Synth&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack portion of the note&#xD;		 *  @param  {Frequency|Array} notes The notes to play. Accepts a single&#xD;		 *                                  Frequency or an array of frequencies.&#xD;		 *  @param  {Time} [time=now]  The start time of the note.&#xD;		 *  @param {number} [velocity=1] The velocity of the note.&#xD;		 *  @returns {Tone.PolySynth} this&#xD;		 *  @example&#xD;		 * //trigger a chord immediately with a velocity of 0.2&#xD;		 * poly.triggerAttack(["Ab3", "C4", "F5"], undefined, 0.2);&#xD;		 */&#xD;	    Tone.PolySynth.prototype.triggerAttack = function (notes, time, velocity) {&#xD;	        if (!Array.isArray(notes)) {&#xD;	            notes = [notes];&#xD;	        }&#xD;	        time = this.toSeconds(time);&#xD;	        for (var i = 0; i &lt; notes.length; i++) {&#xD;	            var val = notes[i];&#xD;	            //trigger the oldest voice&#xD;	            var oldest = this._triggers[0];&#xD;	            var oldestIndex = 0;&#xD;	            for (var j = 1; j &lt; this._triggers.length; j++) {&#xD;	                if (this._triggers[j].release &lt; oldest.release) {&#xD;	                    oldest = this._triggers[j];&#xD;	                    oldestIndex = j;&#xD;	                }&#xD;	            }&#xD;	            oldest.release = Infinity;&#xD;	            oldest.note = JSON.stringify(val);&#xD;	            oldest.voice.triggerAttack(val, time, velocity);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack and release after the specified duration&#xD;		 *  &#xD;		 *  @param  {Frequency|Array} notes The notes to play. Accepts a single&#xD;		 *                                  Frequency or an array of frequencies.&#xD;		 *  @param  {Time} duration the duration of the note&#xD;		 *  @param  {Time} [time=now]     if no time is given, defaults to now&#xD;		 *  @param  {number} [velocity=1] the velocity of the attack (0-1)&#xD;		 *  @returns {Tone.PolySynth} this&#xD;		 *  @example&#xD;		 * //trigger a chord for a duration of a half note &#xD;		 * poly.triggerAttackRelease(["Eb3", "G4", "C5"], "2n");&#xD;		 *  @example&#xD;		 * //can pass in an array of durations as well&#xD;		 * poly.triggerAttackRelease(["Eb3", "G4", "C5"], ["2n", "4n", "4n"]);&#xD;		 */&#xD;	    Tone.PolySynth.prototype.triggerAttackRelease = function (notes, duration, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.triggerAttack(notes, time, velocity);&#xD;	        if (this.isArray(duration) &amp;&amp; this.isArray(notes)) {&#xD;	            for (var i = 0; i &lt; notes.length; i++) {&#xD;	                var d = duration[Math.min(i, duration.length - 1)];&#xD;	                this.triggerRelease(notes[i], time + this.toSeconds(d));&#xD;	            }&#xD;	        } else {&#xD;	            this.triggerRelease(notes, time + this.toSeconds(duration));&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the release of the note. Unlike monophonic instruments, &#xD;		 *  a note (or array of notes) needs to be passed in as the first argument.&#xD;		 *  @param  {Frequency|Array} notes The notes to play. Accepts a single&#xD;		 *                                  Frequency or an array of frequencies.&#xD;		 *  @param  {Time} [time=now]  When the release will be triggered. &#xD;		 *  @returns {Tone.PolySynth} this&#xD;		 *  @example&#xD;		 * poly.triggerRelease(["Ab3", "C4", "F5"], "+2n");&#xD;		 */&#xD;	    Tone.PolySynth.prototype.triggerRelease = function (notes, time) {&#xD;	        if (!Array.isArray(notes)) {&#xD;	            notes = [notes];&#xD;	        }&#xD;	        time = this.toSeconds(time);&#xD;	        for (var i = 0; i &lt; notes.length; i++) {&#xD;	            //get the voice&#xD;	            var stringified = JSON.stringify(notes[i]);&#xD;	            for (var v = 0; v &lt; this._triggers.length; v++) {&#xD;	                var desc = this._triggers[v];&#xD;	                if (desc.note === stringified &amp;&amp; desc.release &gt; time) {&#xD;	                    desc.voice.triggerRelease(time);&#xD;	                    desc.release = time;&#xD;	                }&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Set a member/attribute of the voices. &#xD;		 *  @param {Object|string} params&#xD;		 *  @param {number=} value&#xD;		 *  @param {Time=} rampTime&#xD;		 *  @returns {Tone.PolySynth} this&#xD;		 *  @example&#xD;		 * poly.set({&#xD;		 * 	"filter" : {&#xD;		 * 		"type" : "highpass"&#xD;		 * 	},&#xD;		 * 	"envelope" : {&#xD;		 * 		"attack" : 0.25&#xD;		 * 	}&#xD;		 * });&#xD;		 */&#xD;	    Tone.PolySynth.prototype.set = function (params, value, rampTime) {&#xD;	        for (var i = 0; i &lt; this.voices.length; i++) {&#xD;	            this.voices[i].set(params, value, rampTime);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Get the synth&apos;s attributes. Given no arguments get&#xD;		 *  will return all available object properties and their corresponding&#xD;		 *  values. Pass in a single attribute to retrieve or an array&#xD;		 *  of attributes. The attribute strings can also include a "."&#xD;		 *  to access deeper properties.&#xD;		 *  @param {Array=} params the parameters to get, otherwise will return &#xD;		 *  					   all available.&#xD;		 */&#xD;	    Tone.PolySynth.prototype.get = function (params) {&#xD;	        return this.voices[0].get(params);&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the release portion of all the currently active voices.&#xD;		 *  @param {Time} [time=now] When the notes should be released.&#xD;		 *  @return {Tone.PolySynth} this&#xD;		 */&#xD;	    Tone.PolySynth.prototype.releaseAll = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        for (var i = 0; i &lt; this._triggers.length; i++) {&#xD;	            var desc = this._triggers[i];&#xD;	            if (desc.release &gt; time) {&#xD;	                desc.release = time;&#xD;	                desc.voice.triggerRelease(time);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.PolySynth} this&#xD;		 */&#xD;	    Tone.PolySynth.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        for (var i = 0; i &lt; this.voices.length; i++) {&#xD;	            this.voices[i].dispose();&#xD;	            this.voices[i] = null;&#xD;	        }&#xD;	        this._writable(&apos;detune&apos;);&#xD;	        this.detune.dispose();&#xD;	        this.detune = null;&#xD;	        this.voices = null;&#xD;	        this._triggers = null;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  The maximum number of notes that can be allocated &#xD;		 *  to a polysynth. &#xD;		 *  @type  {Number}&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.PolySynth.MAX_POLYPHONY = 20;&#xD;	    return Tone.PolySynth;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.Player is an audio file player with start, loop, and stop functions.&#xD;		 *  &#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Source} &#xD;		 *  @param {string|AudioBuffer} url Either the AudioBuffer or the url from&#xD;		 *                                  which to load the AudioBuffer&#xD;		 *  @param {function=} onload The function to invoke when the buffer is loaded. &#xD;		 *                            Recommended to use Tone.Buffer.on(&apos;load&apos;) instead.&#xD;		 *  @example&#xD;		 * var player = new Tone.Player("./path/to/sample.mp3").toMaster();&#xD;		 * //play as soon as the buffer is loaded&#xD;		 * player.autostart = true;&#xD;		 */&#xD;	    Tone.Player = function (url) {&#xD;	        var options;&#xD;	        if (url instanceof Tone.Buffer) {&#xD;	            url = url.get();&#xD;	            options = Tone.Player.defaults;&#xD;	        } else {&#xD;	            options = this.optionsObject(arguments, [&#xD;	                &apos;url&apos;,&#xD;	                &apos;onload&apos;&#xD;	            ], Tone.Player.defaults);&#xD;	        }&#xD;	        Tone.Source.call(this, options);&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {AudioBufferSourceNode}&#xD;			 */&#xD;	        this._source = null;&#xD;	        /**&#xD;			 *  If the file should play as soon&#xD;			 *  as the buffer is loaded. &#xD;			 *  @type {boolean}&#xD;			 *  @example&#xD;			 * //will play as soon as it&apos;s loaded&#xD;			 * var player = new Tone.Player({&#xD;			 * 	"url" : "./path/to/sample.mp3",&#xD;			 * 	"autostart" : true,&#xD;			 * }).toMaster();&#xD;			 */&#xD;	        this.autostart = options.autostart;&#xD;	        /**&#xD;			 *  the buffer&#xD;			 *  @private&#xD;			 *  @type {Tone.Buffer}&#xD;			 */&#xD;	        this._buffer = new Tone.Buffer({&#xD;	            &apos;url&apos;: options.url,&#xD;	            &apos;onload&apos;: this._onload.bind(this, options.onload),&#xD;	            &apos;reverse&apos;: options.reverse&#xD;	        });&#xD;	        if (url instanceof AudioBuffer) {&#xD;	            this._buffer.set(url);&#xD;	        }&#xD;	        /**&#xD;			 *  if the buffer should loop once it&apos;s over&#xD;			 *  @type {boolean}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loop = options.loop;&#xD;	        /**&#xD;			 *  if &apos;loop&apos; is true, the loop will start at this position&#xD;			 *  @type {Time}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopStart = options.loopStart;&#xD;	        /**&#xD;			 *  if &apos;loop&apos; is true, the loop will end at this position&#xD;			 *  @type {Time}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopEnd = options.loopEnd;&#xD;	        /**&#xD;			 *  the playback rate&#xD;			 *  @private&#xD;			 *  @type {number}&#xD;			 */&#xD;	        this._playbackRate = options.playbackRate;&#xD;	        /**&#xD;			 *  Enabling retrigger will allow a player to be restarted&#xD;			 *  before the the previous &apos;start&apos; is done playing. Otherwise, &#xD;			 *  successive calls to Tone.Player.start will only start&#xD;			 *  the sample if it had played all the way through. &#xD;			 *  @type {boolean}&#xD;			 */&#xD;	        this.retrigger = options.retrigger;&#xD;	    };&#xD;	    Tone.extend(Tone.Player, Tone.Source);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.Player.defaults = {&#xD;	        &apos;onload&apos;: Tone.noOp,&#xD;	        &apos;playbackRate&apos;: 1,&#xD;	        &apos;loop&apos;: false,&#xD;	        &apos;autostart&apos;: false,&#xD;	        &apos;loopStart&apos;: 0,&#xD;	        &apos;loopEnd&apos;: 0,&#xD;	        &apos;retrigger&apos;: false,&#xD;	        &apos;reverse&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Load the audio file as an audio buffer.&#xD;		 *  Decodes the audio asynchronously and invokes&#xD;		 *  the callback once the audio buffer loads. &#xD;		 *  Note: this does not need to be called if a url&#xD;		 *  was passed in to the constructor. Only use this&#xD;		 *  if you want to manually load a new url. &#xD;		 * @param {string} url The url of the buffer to load.&#xD;		 *                     Filetype support depends on the&#xD;		 *                     browser.&#xD;		 *  @param  {function=} callback The function to invoke once&#xD;		 *                               the sample is loaded.&#xD;		 *  @returns {Promise}&#xD;		 */&#xD;	    Tone.Player.prototype.load = function (url, callback) {&#xD;	        return this._buffer.load(url, this._onload.bind(this, callback));&#xD;	    };&#xD;	    /**&#xD;		 * Internal callback when the buffer is loaded.&#xD;		 * @private&#xD;		 */&#xD;	    Tone.Player.prototype._onload = function (callback) {&#xD;	        callback = this.defaultArg(callback, Tone.noOp);&#xD;	        callback(this);&#xD;	        if (this.autostart) {&#xD;	            this.start();&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Play the buffer at the given startTime. Optionally add an offset&#xD;		 *  and/or duration which will play the buffer from a position&#xD;		 *  within the buffer for the given duration. &#xD;		 *  &#xD;		 *  @param  {Time} [startTime=now] When the player should start.&#xD;		 *  @param  {Time} [offset=0] The offset from the beginning of the sample&#xD;		 *                                 to start at. &#xD;		 *  @param  {Time=} duration How long the sample should play. If no duration&#xD;		 *                                is given, it will default to the full length &#xD;		 *                                of the sample (minus any offset)&#xD;		 *  @returns {Tone.Player} this&#xD;		 *  @memberOf Tone.Player#&#xD;		 *  @method start&#xD;		 *  @name start&#xD;		 */&#xD;	    /**&#xD;		 *  Internal start method&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Player.prototype._start = function (startTime, offset, duration) {&#xD;	        if (this._buffer.loaded) {&#xD;	            //if it&apos;s a loop the default offset is the loopstart point&#xD;	            if (this._loop) {&#xD;	                offset = this.defaultArg(offset, this._loopStart);&#xD;	            } else {&#xD;	                //otherwise the default offset is 0&#xD;	                offset = this.defaultArg(offset, 0);&#xD;	            }&#xD;	            offset = this.toSeconds(offset);&#xD;	            //make sure it has a positive duration&#xD;	            duration = this.defaultArg(duration, Math.max(this._buffer.duration - offset, 0));&#xD;	            duration = this.toSeconds(duration);&#xD;	            //the values in seconds&#xD;	            startTime = this.toSeconds(startTime);&#xD;	            //make the source&#xD;	            this._source = this.context.createBufferSource();&#xD;	            this._source.buffer = this._buffer.get();&#xD;	            //set the looping properties&#xD;	            if (this._loop) {&#xD;	                this._source.loop = this._loop;&#xD;	                this._source.loopStart = this.toSeconds(this._loopStart);&#xD;	                this._source.loopEnd = this.toSeconds(this._loopEnd);&#xD;	            } else {&#xD;	                //if it&apos;s not looping, set the state change at the end of the sample&#xD;	                this._state.setStateAtTime(Tone.State.Stopped, startTime + duration);&#xD;	            }&#xD;	            //and other properties&#xD;	            this._source.playbackRate.value = this._playbackRate;&#xD;	            this._source.connect(this.output);&#xD;	            //start it&#xD;	            if (this._loop) {&#xD;	                //modify the offset if it&apos;s greater than the loop time&#xD;	                var loopEnd = this._source.loopEnd || this._buffer.duration;&#xD;	                var loopStart = this._source.loopStart;&#xD;	                var loopDuration = loopEnd - loopStart;&#xD;	                if (offset &gt; loopEnd) {&#xD;	                    //move the offset back&#xD;	                    while (offset &gt; loopEnd) {&#xD;	                        offset -= loopDuration;&#xD;	                    }&#xD;	                }&#xD;	                this._source.start(startTime, offset);&#xD;	            } else {&#xD;	                this._source.start(startTime, offset, duration);&#xD;	            }&#xD;	        } else {&#xD;	            throw Error(&apos;Tone.Player: tried to start Player before the buffer was loaded&apos;);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop playback.&#xD;		 *  @private&#xD;		 *  @param  {Time} [time=now]&#xD;		 *  @returns {Tone.Player} this&#xD;		 */&#xD;	    Tone.Player.prototype._stop = function (time) {&#xD;	        if (this._source) {&#xD;	            this._source.stop(this.toSeconds(time));&#xD;	            this._source = null;&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Seek to a specific time in the player&apos;s buffer. If the &#xD;		 *  source is no longer playing at that time, it will stop.&#xD;		 *  If you seek to a time that &#xD;		 *  @param {Time} offset The time to seek to.&#xD;		 *  @param {Time=} time The time for the seek event to occur.&#xD;		 *  @return {Tone.Player} this&#xD;		 *  @example&#xD;		 * source.start(0.2);&#xD;		 * source.stop(0.4);&#xD;		 */&#xD;	    Tone.Player.prototype.seek = function (offset, time) {&#xD;	        time = this.toSeconds(time);&#xD;	        if (this._state.getValueAtTime(time) === Tone.State.Started) {&#xD;	            offset = this.toSeconds(offset);&#xD;	            // if it&apos;s currently playing, stop it&#xD;	            this._stop(time);&#xD;	            //restart it at the given time&#xD;	            this._start(time, offset);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Set the loop start and end. Will only loop if loop is &#xD;		 *  set to true. &#xD;		 *  @param {Time} loopStart The loop end time&#xD;		 *  @param {Time} loopEnd The loop end time&#xD;		 *  @returns {Tone.Player} this&#xD;		 *  @example&#xD;		 * //loop 0.1 seconds of the file. &#xD;		 * player.setLoopPoints(0.2, 0.3);&#xD;		 * player.loop = true;&#xD;		 */&#xD;	    Tone.Player.prototype.setLoopPoints = function (loopStart, loopEnd) {&#xD;	        this.loopStart = loopStart;&#xD;	        this.loopEnd = loopEnd;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * If loop is true, the loop will start at this position. &#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {Time}&#xD;		 * @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return this._loopStart;&#xD;	        },&#xD;	        set: function (loopStart) {&#xD;	            this._loopStart = loopStart;&#xD;	            if (this._source) {&#xD;	                this._source.loopStart = this.toSeconds(loopStart);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * If loop is true, the loop will end at this position.&#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {Time}&#xD;		 * @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return this._loopEnd;&#xD;	        },&#xD;	        set: function (loopEnd) {&#xD;	            this._loopEnd = loopEnd;&#xD;	            if (this._source) {&#xD;	                this._source.loopEnd = this.toSeconds(loopEnd);&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The audio buffer belonging to the player. &#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {Tone.Buffer}&#xD;		 * @name buffer&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;buffer&apos;, {&#xD;	        get: function () {&#xD;	            return this._buffer;&#xD;	        },&#xD;	        set: function (buffer) {&#xD;	            this._buffer.set(buffer);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * If the buffer should loop once it&apos;s over. &#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {boolean}&#xD;		 * @name loop&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;loop&apos;, {&#xD;	        get: function () {&#xD;	            return this._loop;&#xD;	        },&#xD;	        set: function (loop) {&#xD;	            this._loop = loop;&#xD;	            if (this._source) {&#xD;	                this._source.loop = loop;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The playback speed. 1 is normal speed. This is not a signal because&#xD;		 * Safari and iOS currently don&apos;t support playbackRate as a signal.&#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {number}&#xD;		 * @name playbackRate&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._playbackRate = rate;&#xD;	            if (this._source) {&#xD;	                this._source.playbackRate.value = rate;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The direction the buffer should play in&#xD;		 * @memberOf Tone.Player#&#xD;		 * @type {boolean}&#xD;		 * @name reverse&#xD;		 */&#xD;	    Object.defineProperty(Tone.Player.prototype, &apos;reverse&apos;, {&#xD;	        get: function () {&#xD;	            return this._buffer.reverse;&#xD;	        },&#xD;	        set: function (rev) {&#xD;	            this._buffer.reverse = rev;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Dispose and disconnect.&#xD;		 *  @return {Tone.Player} this&#xD;		 */&#xD;	    Tone.Player.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        if (this._source !== null) {&#xD;	            this._source.disconnect();&#xD;	            this._source = null;&#xD;	        }&#xD;	        this._buffer.dispose();&#xD;	        this._buffer = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Player;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Sampler wraps Tone.Player in an AmplitudeEnvelope.&#xD;		 *&#xD;		 *  @constructor&#xD;		 *  @extends {Tone.Instrument}&#xD;		 *  @param {String} url the url of the audio file&#xD;		 *  @param {Function=} onload The callback to invoke when the sample is loaded.&#xD;		 *  @example&#xD;		 * var sampler = new Sampler("./audio/casio/A1.mp3", function(){&#xD;		 * 	//repitch the sample down a half step&#xD;		 * 	sampler.triggerAttack(-1);&#xD;		 * }).toMaster();&#xD;		 */&#xD;	    Tone.Sampler = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;url&apos;,&#xD;	            &apos;onload&apos;&#xD;	        ], Tone.Sampler.defaults);&#xD;	        Tone.Instrument.call(this, options);&#xD;	        /**&#xD;			 *  The sample player.&#xD;			 *  @type {Tone.Player}&#xD;			 */&#xD;	        this.player = new Tone.Player(options.url, options.onload);&#xD;	        this.player.retrigger = true;&#xD;	        /**&#xD;			 *  The amplitude envelope. &#xD;			 *  @type {Tone.AmplitudeEnvelope}&#xD;			 */&#xD;	        this.envelope = new Tone.AmplitudeEnvelope(options.envelope);&#xD;	        this.player.chain(this.envelope, this.output);&#xD;	        this._readOnly([&#xD;	            &apos;player&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.loop = options.loop;&#xD;	        this.reverse = options.reverse;&#xD;	    };&#xD;	    Tone.extend(Tone.Sampler, Tone.Instrument);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 */&#xD;	    Tone.Sampler.defaults = {&#xD;	        &apos;onload&apos;: Tone.noOp,&#xD;	        &apos;loop&apos;: false,&#xD;	        &apos;reverse&apos;: false,&#xD;	        &apos;envelope&apos;: {&#xD;	            &apos;attack&apos;: 0.001,&#xD;	            &apos;decay&apos;: 0,&#xD;	            &apos;sustain&apos;: 1,&#xD;	            &apos;release&apos;: 0.1&#xD;	        }&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the start of the sample. &#xD;		 *  @param {Interval} [pitch=0] The amount the sample should&#xD;		 *                              be repitched. &#xD;		 *  @param {Time} [time=now] The time when the sample should start&#xD;		 *  @param {NormalRange} [velocity=1] The velocity of the note&#xD;		 *  @returns {Tone.Sampler} this&#xD;		 *  @example&#xD;		 * sampler.triggerAttack(0, "+0.1", 0.5);&#xD;		 */&#xD;	    Tone.Sampler.prototype.triggerAttack = function (pitch, time, velocity) {&#xD;	        time = this.toSeconds(time);&#xD;	        pitch = this.defaultArg(pitch, 0);&#xD;	        this.player.playbackRate = this.intervalToFrequencyRatio(pitch);&#xD;	        this.player.start(time);&#xD;	        this.envelope.triggerAttack(time, velocity);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start the release portion of the sample. Will stop the sample once the &#xD;		 *  envelope has fully released. &#xD;		 *  &#xD;		 *  @param {Time} [time=now] The time when the note should release&#xD;		 *  @returns {Tone.Sampler} this&#xD;		 *  @example&#xD;		 * sampler.triggerRelease();&#xD;		 */&#xD;	    Tone.Sampler.prototype.triggerRelease = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        this.envelope.triggerRelease(time);&#xD;	        this.player.stop(this.toSeconds(this.envelope.release) + time);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Trigger the attack and then the release after the duration. &#xD;		 *  @param  {Interval} interval     The interval in half-steps that the&#xD;		 *                                  sample should be pitch shifted.&#xD;		 *  @param  {Time} duration How long the note should be held for before&#xD;		 *                          triggering the release.&#xD;		 *  @param {Time} [time=now]  When the note should be triggered.&#xD;		 *  @param  {NormalRange} [velocity=1] The velocity the note should be triggered at.&#xD;		 *  @returns {Tone.Sampler} this&#xD;		 *  @example&#xD;		 * //trigger the unpitched note for the duration of an 8th note&#xD;		 * synth.triggerAttackRelease(0, "8n");&#xD;		 *  @memberOf Tone.Sampler#&#xD;		 *  @name triggerAttackRelease&#xD;		 *  @method triggerAttackRelease&#xD;		 */&#xD;	    /**&#xD;		 * If the output sample should loop or not.&#xD;		 * @memberOf Tone.Sampler#&#xD;		 * @type {number|string}&#xD;		 * @name loop&#xD;		 */&#xD;	    Object.defineProperty(Tone.Sampler.prototype, &apos;loop&apos;, {&#xD;	        get: function () {&#xD;	            return this.player.loop;&#xD;	        },&#xD;	        set: function (loop) {&#xD;	            this.player.loop = loop;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The direction the buffer should play in&#xD;		 * @memberOf Tone.Sampler#&#xD;		 * @type {boolean}&#xD;		 * @name reverse&#xD;		 */&#xD;	    Object.defineProperty(Tone.Sampler.prototype, &apos;reverse&apos;, {&#xD;	        get: function () {&#xD;	            return this.player.reverse;&#xD;	        },&#xD;	        set: function (rev) {&#xD;	            this.player.reverse = rev;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The buffer to play.&#xD;		 * @memberOf Tone.Sampler#&#xD;		 * @type {Tone.Buffer}&#xD;		 * @name buffer&#xD;		 */&#xD;	    Object.defineProperty(Tone.Sampler.prototype, &apos;buffer&apos;, {&#xD;	        get: function () {&#xD;	            return this.player.buffer;&#xD;	        },&#xD;	        set: function (buff) {&#xD;	            this.player.buffer = buff;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @returns {Tone.Sampler} this&#xD;		 */&#xD;	    Tone.Sampler.prototype.dispose = function () {&#xD;	        Tone.Instrument.prototype.dispose.call(this);&#xD;	        this._writable([&#xD;	            &apos;player&apos;,&#xD;	            &apos;envelope&apos;&#xD;	        ]);&#xD;	        this.player.dispose();&#xD;	        this.player = null;&#xD;	        this.envelope.dispose();&#xD;	        this.envelope = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Sampler;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Maps a NormalRange [0, 1] to an AudioRange [-1, 1]. &#xD;		 *         See also Tone.AudioToGain. &#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @example&#xD;		 * var g2a = new Tone.GainToAudio();&#xD;		 */&#xD;	    Tone.GainToAudio = function () {&#xD;	        /**&#xD;			 *  @type {WaveShaperNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._norm = this.input = this.output = new Tone.WaveShaper(function (x) {&#xD;	            return Math.abs(x) * 2 - 1;&#xD;	        });&#xD;	    };&#xD;	    Tone.extend(Tone.GainToAudio, Tone.SignalBase);&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.GainToAudio} this&#xD;		 */&#xD;	    Tone.GainToAudio.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._norm.dispose();&#xD;	        this._norm = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.GainToAudio;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class Normalize takes an input min and max and maps it linearly to NormalRange [0,1]&#xD;		 *&#xD;		 *  @extends {Tone.SignalBase}&#xD;		 *  @constructor&#xD;		 *  @param {number} inputMin the min input value&#xD;		 *  @param {number} inputMax the max input value&#xD;		 *  @example&#xD;		 * var norm = new Tone.Normalize(2, 4);&#xD;		 * var sig = new Tone.Signal(3).connect(norm);&#xD;		 * //output of norm is 0.5. &#xD;		 */&#xD;	    Tone.Normalize = function (inputMin, inputMax) {&#xD;	        /**&#xD;			 *  the min input value&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._inputMin = this.defaultArg(inputMin, 0);&#xD;	        /**&#xD;			 *  the max input value&#xD;			 *  @type {number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._inputMax = this.defaultArg(inputMax, 1);&#xD;	        /**&#xD;			 *  subtract the min from the input&#xD;			 *  @type {Tone.Add}&#xD;			 *  @private&#xD;			 */&#xD;	        this._sub = this.input = new Tone.Add(0);&#xD;	        /**&#xD;			 *  divide by the difference between the input and output&#xD;			 *  @type {Tone.Multiply}&#xD;			 *  @private&#xD;			 */&#xD;	        this._div = this.output = new Tone.Multiply(1);&#xD;	        this._sub.connect(this._div);&#xD;	        this._setRange();&#xD;	    };&#xD;	    Tone.extend(Tone.Normalize, Tone.SignalBase);&#xD;	    /**&#xD;		 * The minimum value the input signal will reach.&#xD;		 * @memberOf Tone.Normalize#&#xD;		 * @type {number}&#xD;		 * @name min&#xD;		 */&#xD;	    Object.defineProperty(Tone.Normalize.prototype, &apos;min&apos;, {&#xD;	        get: function () {&#xD;	            return this._inputMin;&#xD;	        },&#xD;	        set: function (min) {&#xD;	            this._inputMin = min;&#xD;	            this._setRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The maximum value the input signal will reach.&#xD;		 * @memberOf Tone.Normalize#&#xD;		 * @type {number}&#xD;		 * @name max&#xD;		 */&#xD;	    Object.defineProperty(Tone.Normalize.prototype, &apos;max&apos;, {&#xD;	        get: function () {&#xD;	            return this._inputMax;&#xD;	        },&#xD;	        set: function (max) {&#xD;	            this._inputMax = max;&#xD;	            this._setRange();&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  set the values&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.Normalize.prototype._setRange = function () {&#xD;	        this._sub.value = -this._inputMin;&#xD;	        this._div.value = 1 / (this._inputMax - this._inputMin);&#xD;	    };&#xD;	    /**&#xD;		 *  clean up&#xD;		 *  @returns {Tone.Normalize} this&#xD;		 */&#xD;	    Tone.Normalize.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._sub.dispose();&#xD;	        this._sub = null;&#xD;	        this._div.dispose();&#xD;	        this._div = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.Normalize;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Wrapper around the native BufferSourceNode.&#xD;		 *  @param  {AudioBuffer|Tone.Buffer}  buffer   The buffer to play&#xD;		 *  @param  {Function}  onended  The callback to invoke when the &#xD;		 *                               buffer is done playing.&#xD;		 */&#xD;	    Tone.BufferSource = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;buffer&apos;,&#xD;	            &apos;onended&apos;&#xD;	        ], Tone.BufferSource.defaults);&#xD;	        /**&#xD;			 *  The callback to invoke after the &#xD;			 *  buffer source is done playing. &#xD;			 *  @type  {Function}&#xD;			 */&#xD;	        this.onended = options.onended;&#xD;	        /**&#xD;			 *  The time that the buffer was started.&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._startTime = -1;&#xD;	        /**&#xD;			 *  The time that the buffer is scheduled to stop.&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._stopTime = -1;&#xD;	        /**&#xD;			 *  The gain node which envelopes the BufferSource&#xD;			 *  @type  {Tone.Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._gainNode = this.output = new Tone.Gain();&#xD;	        /**&#xD;			 *  The buffer source&#xD;			 *  @type  {AudioBufferSourceNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._source = this.context.createBufferSource();&#xD;	        this._source.connect(this._gainNode);&#xD;	        /**&#xD;			 *  The playbackRate of the buffer&#xD;			 *  @type {Positive}&#xD;			 *  @signal&#xD;			 */&#xD;	        this.playbackRate = new Tone.Param(this._source.playbackRate, Tone.Type.Positive);&#xD;	        /**&#xD;			 *  The fadeIn time of the amplitude envelope.&#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.fadeIn = options.fadeIn;&#xD;	        /**&#xD;			 *  The fadeOut time of the amplitude envelope.&#xD;			 *  @type {Time}&#xD;			 */&#xD;	        this.fadeOut = options.fadeOut;&#xD;	        /**&#xD;			 *  The value that the buffer ramps to&#xD;			 *  @type {Gain}&#xD;			 *  @private&#xD;			 */&#xD;	        this._gain = 1;&#xD;	        /**&#xD;			 * The onended timeout&#xD;			 * @type {Number}&#xD;			 * @private&#xD;			 */&#xD;	        this._onendedTimeout = -1;&#xD;	        //set the buffer initially&#xD;	        if (!this.isUndef(options.buffer)) {&#xD;	            this.buffer = options.buffer;&#xD;	        }&#xD;	        this.loop = options.loop;&#xD;	    };&#xD;	    Tone.extend(Tone.BufferSource);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @const&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.BufferSource.defaults = {&#xD;	        &apos;onended&apos;: Tone.noOp,&#xD;	        &apos;fadeIn&apos;: 0,&#xD;	        &apos;fadeOut&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source, either "started" or "stopped".&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.BufferSource#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.BufferSource.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            var now = this.now();&#xD;	            if (this._startTime !== -1 &amp;&amp; now &gt;= this._startTime &amp;&amp; now &lt; this._stopTime) {&#xD;	                return Tone.State.Started;&#xD;	            } else {&#xD;	                return Tone.State.Stopped;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Start the buffer&#xD;		 *  @param  {Time} [startTime=now] When the player should start.&#xD;		 *  @param  {Time} [offset=0] The offset from the beginning of the sample&#xD;		 *                                 to start at. &#xD;		 *  @param  {Time=} duration How long the sample should play. If no duration&#xD;		 *                                is given, it will default to the full length &#xD;		 *                                of the sample (minus any offset)&#xD;		 *  @param  {Gain}  [gain=1]  The gain to play the buffer back at.&#xD;		 *  @param  {Time=}  fadeInTime  The optional fadeIn ramp time.&#xD;		 *  @return  {Tone.BufferSource}  this&#xD;		 */&#xD;	    Tone.BufferSource.prototype.start = function (time, offset, duration, gain, fadeInTime) {&#xD;	        if (this._startTime !== -1) {&#xD;	            throw new Error(&apos;Tone.BufferSource: can only be started once.&apos;);&#xD;	        }&#xD;	        if (this.buffer) {&#xD;	            time = this.toSeconds(time);&#xD;	            //if it&apos;s a loop the default offset is the loopstart point&#xD;	            if (this.loop) {&#xD;	                offset = this.defaultArg(offset, this.loopStart);&#xD;	            } else {&#xD;	                //otherwise the default offset is 0&#xD;	                offset = this.defaultArg(offset, 0);&#xD;	            }&#xD;	            offset = this.toSeconds(offset);&#xD;	            //the values in seconds&#xD;	            time = this.toSeconds(time);&#xD;	            this._source.start(time, offset);&#xD;	            gain = this.defaultArg(gain, 1);&#xD;	            this._gain = gain;&#xD;	            //the fadeIn time&#xD;	            if (this.isUndef(fadeInTime)) {&#xD;	                fadeInTime = this.toSeconds(this.fadeIn);&#xD;	            } else {&#xD;	                fadeInTime = this.toSeconds(fadeInTime);&#xD;	            }&#xD;	            if (fadeInTime &gt; 0) {&#xD;	                this._gainNode.gain.setValueAtTime(0, time);&#xD;	                this._gainNode.gain.linearRampToValueAtTime(this._gain, time + fadeInTime);&#xD;	            } else {&#xD;	                this._gainNode.gain.setValueAtTime(gain, time);&#xD;	            }&#xD;	            this._startTime = time + fadeInTime;&#xD;	            if (!this.isUndef(duration)) {&#xD;	                duration = this.defaultArg(duration, this.buffer.duration - offset);&#xD;	                duration = this.toSeconds(duration);&#xD;	                this.stop(time + duration + fadeInTime, fadeInTime);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the buffer. Optionally add a ramp time to fade the &#xD;		 *  buffer out. &#xD;		 *  @param  {Time=}  time         The time the buffer should stop.&#xD;		 *  @param  {Time=}  fadeOutTime  How long the gain should fade out for&#xD;		 *  @return  {Tone.BufferSource}  this&#xD;		 */&#xD;	    Tone.BufferSource.prototype.stop = function (time, fadeOutTime) {&#xD;	        if (this.buffer) {&#xD;	            time = this.toSeconds(time);&#xD;	            //the fadeOut time&#xD;	            if (this.isUndef(fadeOutTime)) {&#xD;	                fadeOutTime = this.toSeconds(this.fadeOut);&#xD;	            } else {&#xD;	                fadeOutTime = this.toSeconds(fadeOutTime);&#xD;	            }&#xD;	            this._stopTime = time + fadeOutTime;&#xD;	            //cancel the end curve&#xD;	            this._gainNode.gain.cancelScheduledValues(this._startTime + this.sampleTime);&#xD;	            //set a new one&#xD;	            if (fadeOutTime &gt; 0) {&#xD;	                this._gainNode.gain.setValueAtTime(this._gain, time);&#xD;	                this._gainNode.gain.linearRampToValueAtTime(0, time + fadeOutTime);&#xD;	                time += fadeOutTime;&#xD;	            } else {&#xD;	                this._gainNode.gain.setValueAtTime(0, time);&#xD;	            }&#xD;	            // fix for safari bug and old FF&#xD;	            if (!this.isNumber(this._source.playbackState) || this._source.playbackState === 2) {&#xD;	                this._source.stop(time);&#xD;	            }&#xD;	            clearTimeout(this._onendedTimeout);&#xD;	            this._onendedTimeout = setTimeout(this._onended.bind(this), (this._stopTime - this.now()) * 1000);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Internal callback when the buffer is ended. &#xD;		 *  Invokes `onended` and disposes the node.&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.BufferSource.prototype._onended = function () {&#xD;	        this.onended(this);&#xD;	        this.dispose();&#xD;	    };&#xD;	    /**&#xD;		 * If loop is true, the loop will start at this position. &#xD;		 * @memberOf Tone.BufferSource#&#xD;		 * @type {Time}&#xD;		 * @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.BufferSource.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return this._source.loopStart;&#xD;	        },&#xD;	        set: function (loopStart) {&#xD;	            this._source.loopStart = this.toSeconds(loopStart);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * If loop is true, the loop will end at this position.&#xD;		 * @memberOf Tone.BufferSource#&#xD;		 * @type {Time}&#xD;		 * @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.BufferSource.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return this._source.loopEnd;&#xD;	        },&#xD;	        set: function (loopEnd) {&#xD;	            this._source.loopEnd = this.toSeconds(loopEnd);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The audio buffer belonging to the player. &#xD;		 * @memberOf Tone.BufferSource#&#xD;		 * @type {AudioBuffer}&#xD;		 * @name buffer&#xD;		 */&#xD;	    Object.defineProperty(Tone.BufferSource.prototype, &apos;buffer&apos;, {&#xD;	        get: function () {&#xD;	            if (this._source) {&#xD;	                return this._source.buffer;&#xD;	            } else {&#xD;	                return null;&#xD;	            }&#xD;	        },&#xD;	        set: function (buffer) {&#xD;	            if (buffer instanceof Tone.Buffer) {&#xD;	                this._source.buffer = buffer.get();&#xD;	            } else {&#xD;	                this._source.buffer = buffer;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * If the buffer should loop once it&apos;s over. &#xD;		 * @memberOf Tone.BufferSource#&#xD;		 * @type {boolean}&#xD;		 * @name loop&#xD;		 */&#xD;	    Object.defineProperty(Tone.BufferSource.prototype, &apos;loop&apos;, {&#xD;	        get: function () {&#xD;	            return this._source.loop;&#xD;	        },&#xD;	        set: function (loop) {&#xD;	            this._source.loop = loop;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.BufferSource}  this&#xD;		 */&#xD;	    Tone.BufferSource.prototype.dispose = function () {&#xD;	        this.onended = null;&#xD;	        if (this._source) {&#xD;	            this._source.disconnect();&#xD;	            this._source = null;&#xD;	        }&#xD;	        if (this._gainNode) {&#xD;	            this._gainNode.dispose();&#xD;	            this._gainNode = null;&#xD;	        }&#xD;	        this._startTime = -1;&#xD;	        this.playbackRate = null;&#xD;	        this.output = null;&#xD;	        clearTimeout(this._onendedTimeout);&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.BufferSource;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 *  @class Tone.MultiPlayer is well suited for one-shots, multi-sampled instruments&#xD;		 *         or any time you need to play a bunch of audio buffers. &#xD;		 *  @param  {Object|Array|Tone.Buffers}  buffers  The buffers which are available&#xD;		 *                                                to the MultiPlayer&#xD;		 *  @param {Function} onload The callback to invoke when all of the buffers are loaded.&#xD;		 *  @extends {Tone}&#xD;		 *  @example&#xD;		 * var multiPlayer = new MultiPlayer({&#xD;		 * 	"kick" : "path/to/kick.mp3",&#xD;		 * 	"snare" : "path/to/snare.mp3",&#xD;		 * }, function(){&#xD;		 * 	multiPlayer.start("kick");&#xD;		 * });&#xD;		 *  @example&#xD;		 * //can also store the values in an array&#xD;		 * var multiPlayer = new MultiPlayer(["path/to/kick.mp3", "path/to/snare.mp3"], &#xD;		 * function(){&#xD;		 * 	//if an array is passed in, the samples are referenced to by index&#xD;		 * 	multiPlayer.start(1);&#xD;		 * });&#xD;		 */&#xD;	    Tone.MultiPlayer = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;urls&apos;,&#xD;	            &apos;onload&apos;&#xD;	        ], Tone.MultiPlayer.defaults);&#xD;	        if (options.urls instanceof Tone.Buffers) {&#xD;	            /**&#xD;				 *  All the buffers belonging to the player.&#xD;				 *  @type  {Tone.Buffers}&#xD;				 */&#xD;	            this.buffers = options.urls;&#xD;	        } else {&#xD;	            this.buffers = new Tone.Buffers(options.urls, options.onload);&#xD;	        }&#xD;	        /**&#xD;			 *  Keeps track of the currently playing sources.&#xD;			 *  @type  {Object}&#xD;			 *  @private&#xD;			 */&#xD;	        this._activeSources = {};&#xD;	        /**&#xD;			 *  The fade in envelope which is applied&#xD;			 *  to the beginning of the BufferSource&#xD;			 *  @type  {Time}&#xD;			 */&#xD;	        this.fadeIn = options.fadeIn;&#xD;	        /**&#xD;			 *  The fade out envelope which is applied&#xD;			 *  to the end of the BufferSource&#xD;			 *  @type  {Time}&#xD;			 */&#xD;	        this.fadeOut = options.fadeOut;&#xD;	        /**&#xD;			 *  The output volume node&#xD;			 *  @type  {Tone.Volume}&#xD;			 *  @private&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume(options.volume);&#xD;	        /**&#xD;			 * The volume of the output in decibels.&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 * @example&#xD;			 * source.volume.value = -6;&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	        //make the output explicitly stereo&#xD;	        this._volume.output.output.channelCount = 2;&#xD;	        this._volume.output.output.channelCountMode = &apos;explicit&apos;;&#xD;	        //mute initially&#xD;	        this.mute = options.mute;&#xD;	    };&#xD;	    Tone.extend(Tone.MultiPlayer, Tone.Source);&#xD;	    /**&#xD;		 *  The defaults&#xD;		 *  @type  {Object}&#xD;		 */&#xD;	    Tone.MultiPlayer.defaults = {&#xD;	        &apos;onload&apos;: Tone.noOp,&#xD;	        &apos;fadeIn&apos;: 0,&#xD;	        &apos;fadeOut&apos;: 0&#xD;	    };&#xD;	    /**&#xD;		 * Make the source from the buffername&#xD;		 * @param  {String} bufferName&#xD;		 * @return {Tone.BufferSource}&#xD;		 * @private&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype._makeSource = function (bufferName) {&#xD;	        var buffer;&#xD;	        if (this.isString(bufferName) || this.isNumber(bufferName)) {&#xD;	            buffer = this.buffers.get(bufferName).get();&#xD;	        } else if (bufferName instanceof Tone.Buffer) {&#xD;	            buffer = bufferName.get();&#xD;	        } else if (bufferName instanceof AudioBuffer) {&#xD;	            buffer = bufferName;&#xD;	        }&#xD;	        var source = new Tone.BufferSource(buffer).connect(this.output);&#xD;	        if (!this._activeSources.hasOwnProperty(bufferName)) {&#xD;	            this._activeSources[bufferName] = [];&#xD;	        }&#xD;	        this._activeSources[bufferName].push(source);&#xD;	        return source;&#xD;	    };&#xD;	    /**&#xD;		 *  Start a buffer by name. The `start` method allows a number of options&#xD;		 *  to be passed in such as offset, interval, and gain. This is good for multi-sampled &#xD;		 *  instruments and sound sprites where samples are repitched played back at different velocities.&#xD;		 *  @param  {String}  bufferName    The name of the buffer to start.&#xD;		 *  @param  {Time}  time      When to start the buffer.&#xD;		 *  @param  {Time}  [offset=0]    The offset into the buffer to play from.&#xD;		 *  @param  {Time=}  duration   How long to play the buffer for.&#xD;		 *  @param  {Interval}  [pitch=0]  The interval to repitch the buffer.&#xD;		 *  @param  {Gain}  [gain=1]      The gain to play the sample at.&#xD;		 *  @return  {Tone.MultiPlayer}  this&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.start = function (bufferName, time, offset, duration, pitch, gain) {&#xD;	        time = this.toSeconds(time);&#xD;	        var source = this._makeSource(bufferName);&#xD;	        source.start(time, offset, duration, this.defaultArg(gain, 1), this.fadeIn);&#xD;	        if (duration) {&#xD;	            source.stop(time + this.toSeconds(duration), this.fadeOut);&#xD;	        }&#xD;	        pitch = this.defaultArg(pitch, 0);&#xD;	        source.playbackRate.value = this.intervalToFrequencyRatio(pitch);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Start a looping buffer by name. Similar to `start`, but the buffer&#xD;		 *  is looped instead of played straight through. Can still be stopped with `stop`. &#xD;		 *  @param  {String}  bufferName    The name of the buffer to start.&#xD;		 *  @param  {Time}  time      When to start the buffer.&#xD;		 *  @param  {Time}  [offset=0]    The offset into the buffer to play from.&#xD;		 *  @param  {Time=}  loopStart   The start of the loop.&#xD;		 *  @param  {Time=}  loopEnd	The end of the loop.&#xD;		 *  @param  {Interval}  [pitch=0]  The interval to repitch the buffer.&#xD;		 *  @param  {Gain}  [gain=1]      The gain to play the sample at.&#xD;		 *  @return  {Tone.MultiPlayer}  this&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.startLoop = function (bufferName, time, offset, loopStart, loopEnd, pitch, gain) {&#xD;	        time = this.toSeconds(time);&#xD;	        var source = this._makeSource(bufferName);&#xD;	        source.loop = true;&#xD;	        source.loopStart = this.toSeconds(this.defaultArg(loopStart, 0));&#xD;	        source.loopEnd = this.toSeconds(this.defaultArg(loopEnd, 0));&#xD;	        source.start(time, offset, undefined, this.defaultArg(gain, 1), this.fadeIn);&#xD;	        pitch = this.defaultArg(pitch, 0);&#xD;	        source.playbackRate.value = this.intervalToFrequencyRatio(pitch);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop the first played instance of the buffer name.&#xD;		 *  @param  {String}  bufferName  The buffer to stop.&#xD;		 *  @param  {Time=}  time    When to stop the buffer&#xD;		 *  @return  {Tone.MultiPlayer}  this&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.stop = function (bufferName, time) {&#xD;	        if (this._activeSources[bufferName] &amp;&amp; this._activeSources[bufferName].length) {&#xD;	            time = this.toSeconds(time);&#xD;	            this._activeSources[bufferName].shift().stop(time, this.fadeOut);&#xD;	        } else {&#xD;	            throw new Error(&apos;Tone.MultiPlayer: cannot stop a buffer that hasn\&apos;t been started or is already stopped&apos;);&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Stop all currently playing buffers at the given time.&#xD;		 *  @param  {Time=}  time  When to stop the buffers.&#xD;		 *  @return  {Tone.MultiPlayer}  this&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.stopAll = function (time) {&#xD;	        time = this.toSeconds(time);&#xD;	        for (var bufferName in this._activeSources) {&#xD;	            var sources = this._activeSources[bufferName];&#xD;	            for (var i = 0; i &lt; sources.length; i++) {&#xD;	                sources[i].stop(time);&#xD;	            }&#xD;	        }&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Add another buffer to the available buffers.&#xD;		 *  @param {String} name The name to that the buffer is refered&#xD;		 *                       to in start/stop methods. &#xD;		 *  @param {String|Tone.Buffer} url The url of the buffer to load&#xD;		 *                                  or the buffer.&#xD;		 *  @param {Function} callback The function to invoke after the buffer is loaded.&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.add = function (name, url, callback) {&#xD;	        this.buffers.add(name, url, callback);&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source. "started"&#xD;		 *  if there are any buffers playing. "stopped" otherwise.&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.MultiPlayer#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.MultiPlayer.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._activeSources.length &gt; 0 ? Tone.State.Started : Tone.State.Stopped;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.MultiPlayer#&#xD;		 * @type {boolean}&#xD;		 * @name mute&#xD;		 * @example&#xD;		 * //mute the output&#xD;		 * source.mute = true;&#xD;		 */&#xD;	    Object.defineProperty(Tone.MultiPlayer.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._volume.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._volume.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 *  Clean up.&#xD;		 *  @return  {Tone.MultiPlayer}  this&#xD;		 */&#xD;	    Tone.MultiPlayer.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this._writable(&apos;volume&apos;);&#xD;	        this.volume = null;&#xD;	        for (var bufferName in this._activeSources) {&#xD;	            this._activeSources[bufferName].forEach(function (source) {&#xD;	                source.dispose();&#xD;	            });&#xD;	        }&#xD;	        this.buffers.dispose();&#xD;	        this.buffers = null;&#xD;	        this._activeSources = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.MultiPlayer;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    /**&#xD;		 * @class Tone.GrainPlayer implements [granular synthesis](https://en.wikipedia.org/wiki/Granular_synthesis).&#xD;		 *        Granular Synthesis enables you to adjust pitch and playback rate independently. The grainSize is the &#xD;		 *        amount of time each small chunk of audio is played for and the overlap is the &#xD;		 *        amount of crossfading transition time between successive grains.&#xD;		 * @extends {Tone}&#xD;		 * @param {String|Tone.Buffer} url	The url to load, or the Tone.Buffer to play.&#xD;		 * @param {Function=} callback The callback to invoke after the url is loaded.&#xD;		 */&#xD;	    Tone.GrainPlayer = function () {&#xD;	        var options = this.optionsObject(arguments, [&#xD;	            &apos;url&apos;,&#xD;	            &apos;onload&apos;&#xD;	        ], Tone.GrainPlayer.defaults);&#xD;	        Tone.Source.call(this);&#xD;	        /**&#xD;			 *  The audio buffer belonging to the player.&#xD;			 *  @type  {Tone.Buffer}&#xD;			 */&#xD;	        this.buffer = new Tone.Buffer(options.url, options.onload);&#xD;	        /**&#xD;			 *  Plays the buffer with a small envelope&#xD;			 *  @type  {Tone.MultiPlayer}&#xD;			 *  @private&#xD;			 */&#xD;	        this._player = this.output = new Tone.MultiPlayer();&#xD;	        /**&#xD;			 *  Create a repeating tick to schedule&#xD;			 *  the grains.&#xD;			 *  @type  {Tone.Clock}&#xD;			 *  @private&#xD;			 */&#xD;	        this._clock = new Tone.Clock(this._tick.bind(this), 1);&#xD;	        /**&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopStart = 0;&#xD;	        /**&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._loopEnd = 0;&#xD;	        /**&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._playbackRate = options.playbackRate;&#xD;	        /**&#xD;			 *  @type  {Number}&#xD;			 *  @private&#xD;			 */&#xD;	        this._grainSize = options.grainSize;&#xD;	        /**&#xD;			 *  @private&#xD;			 *  @type {Number}&#xD;			 */&#xD;	        this._overlap = options.overlap;&#xD;	        /**&#xD;			 *  Adjust the pitch independently of the playbackRate.&#xD;			 *  @type  {Cents}&#xD;			 */&#xD;	        this.detune = options.detune;&#xD;	        /**&#xD;			 *  The amount of time randomly added&#xD;			 *  or subtracted from the grain&apos;s offset&#xD;			 *  @type  {Time}&#xD;			 */&#xD;	        this.drift = options.drift;&#xD;	        //setup&#xD;	        this.overlap = options.overlap;&#xD;	        this.loop = options.loop;&#xD;	        this.playbackRate = options.playbackRate;&#xD;	        this.grainSize = options.grainSize;&#xD;	        this.loopStart = options.loopStart;&#xD;	        this.loopEnd = options.loopEnd;&#xD;	        this.reverse = options.reverse;&#xD;	    };&#xD;	    Tone.extend(Tone.GrainPlayer, Tone.Source);&#xD;	    /**&#xD;		 *  the default parameters&#xD;		 *  @static&#xD;		 *  @const&#xD;		 *  @type {Object}&#xD;		 */&#xD;	    Tone.GrainPlayer.defaults = {&#xD;	        &apos;onload&apos;: Tone.noOp,&#xD;	        &apos;overlap&apos;: 0.1,&#xD;	        &apos;grainSize&apos;: 0.2,&#xD;	        &apos;drift&apos;: 0,&#xD;	        &apos;playbackRate&apos;: 1,&#xD;	        &apos;detune&apos;: 0,&#xD;	        &apos;loop&apos;: false,&#xD;	        &apos;loopStart&apos;: 0,&#xD;	        &apos;loopEnd&apos;: 0,&#xD;	        &apos;reverse&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Play the buffer at the given startTime. Optionally add an offset&#xD;		 *  from the start of the buffer to play from.&#xD;		 *  &#xD;		 *  @param  {Time} [startTime=now] When the player should start.&#xD;		 *  @param  {Time} [offset=0] The offset from the beginning of the sample&#xD;		 *                                 to start at. &#xD;		 * @return {Tone.GrainPlayer} this&#xD;		 */&#xD;	    /**&#xD;		 *  Internal start method&#xD;		 *  @param {Time} time&#xD;		 *  @param {Time} offset&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.GrainPlayer.prototype._start = function (time, offset) {&#xD;	        offset = this.defaultArg(offset, 0);&#xD;	        offset = this.toSeconds(offset);&#xD;	        time = this.toSeconds(time);&#xD;	        this._offset = offset;&#xD;	        this._clock.start(time);&#xD;	    };&#xD;	    /**&#xD;		 *  Internal start method&#xD;		 *  @param {Time} time&#xD;		 *  @private&#xD;		 */&#xD;	    Tone.GrainPlayer.prototype._stop = function (time) {&#xD;	        this._clock.stop(time);&#xD;	        this._player.stop(this.buffer, time);&#xD;	        this._offset = 0;&#xD;	    };&#xD;	    /**&#xD;		 *  Invoked on each clock tick. scheduled a new&#xD;		 *  grain at this time.&#xD;		 *  @param  {Time}  time &#xD;		 *  @private&#xD;		 */&#xD;	    Tone.GrainPlayer.prototype._tick = function (time) {&#xD;	        var bufferDuration = this.buffer.duration;&#xD;	        if (this.loop &amp;&amp; this._loopEnd &gt; 0) {&#xD;	            bufferDuration = this._loopEnd;&#xD;	        }&#xD;	        var drift = (Math.random() * 2 - 1) * this.drift;&#xD;	        var offset = this._offset - this._overlap + drift;&#xD;	        var detune = this.detune / 100;&#xD;	        var originalFadeIn = this._player.fadeIn;&#xD;	        if (this.loop &amp;&amp; this._offset &gt; bufferDuration) {&#xD;	            //play the end&#xD;	            var endSegmentDuration = this._offset - bufferDuration;&#xD;	            this._player.start(this.buffer, time, offset, endSegmentDuration + this._overlap, detune);&#xD;	            //and play the beginning &#xD;	            offset = this._offset % bufferDuration;&#xD;	            this._offset = this._loopStart;&#xD;	            this._player.fadeIn = 0;&#xD;	            this._player.start(this.buffer, time + endSegmentDuration, this._offset, offset + this._overlap, detune);&#xD;	        } else if (this._offset &gt; bufferDuration) {&#xD;	            //set the state to stopped. &#xD;	            this.stop(time);&#xD;	        } else {&#xD;	            if (offset &lt; 0) {&#xD;	                this._player.fadeIn = Math.max(this._player.fadeIn + offset, 0);&#xD;	                offset = 0;&#xD;	            }&#xD;	            this._player.start(this.buffer, time, offset, this.grainSize + this._overlap, detune);&#xD;	        }&#xD;	        this._player.fadeIn = originalFadeIn;&#xD;	        //increment the offset&#xD;	        var duration = this._clock._nextTick - time;&#xD;	        this._offset += duration * this._playbackRate;&#xD;	    };&#xD;	    /**&#xD;		 *  Jump to a specific time and play it.&#xD;		 *  @param  {Time}  offset  The offset to jump to.&#xD;		 *  @param {Time=} time When to make the jump.&#xD;		 *  @return  {[type]}  [description]&#xD;		 */&#xD;	    Tone.GrainPlayer.prototype.scrub = function (offset, time) {&#xD;	        this._offset = this.toSeconds(offset);&#xD;	        this._tick(this.toSeconds(time));&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 * The playback rate of the sample&#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {Positive}&#xD;		 * @name playbackRate&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;playbackRate&apos;, {&#xD;	        get: function () {&#xD;	            return this._playbackRate;&#xD;	        },&#xD;	        set: function (rate) {&#xD;	            this._playbackRate = rate;&#xD;	            this.grainSize = this._grainSize;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The loop start time. &#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {Time}&#xD;		 * @name loopStart&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;loopStart&apos;, {&#xD;	        get: function () {&#xD;	            return this._loopStart;&#xD;	        },&#xD;	        set: function (time) {&#xD;	            this._loopStart = this.toSeconds(time);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The loop end time. &#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {Time}&#xD;		 * @name loopEnd&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;loopEnd&apos;, {&#xD;	        get: function () {&#xD;	            return this._loopEnd;&#xD;	        },&#xD;	        set: function (time) {&#xD;	            this._loopEnd = this.toSeconds(time);&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The direction the buffer should play in&#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {boolean}&#xD;		 * @name reverse&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;reverse&apos;, {&#xD;	        get: function () {&#xD;	            return this.buffer.reverse;&#xD;	        },&#xD;	        set: function (rev) {&#xD;	            this.buffer.reverse = rev;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * The size of each chunk of audio that the &#xD;		 * buffer is chopped into and played back at.&#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {Time}&#xD;		 * @name grainSize&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;grainSize&apos;, {&#xD;	        get: function () {&#xD;	            return this._grainSize;&#xD;	        },&#xD;	        set: function (size) {&#xD;	            this._grainSize = this.toSeconds(size);&#xD;	            this._clock.frequency.value = this._playbackRate / this._grainSize;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * This is the duration of the cross-fade between &#xD;		 * sucessive grains.&#xD;		 * @memberOf Tone.GrainPlayer#&#xD;		 * @type {Time}&#xD;		 * @name overlap&#xD;		 */&#xD;	    Object.defineProperty(Tone.GrainPlayer.prototype, &apos;overlap&apos;, {&#xD;	        get: function () {&#xD;	            return this._overlap;&#xD;	        },&#xD;	        set: function (time) {&#xD;	            time = this.toSeconds(time);&#xD;	            this._overlap = time;&#xD;	            if (this._overlap &lt; 0) {&#xD;	                this._player.fadeIn = 0.01;&#xD;	                this._player.fadeOut = 0.01;&#xD;	            } else {&#xD;	                this._player.fadeIn = time;&#xD;	                this._player.fadeOut = time;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Clean up&#xD;		 * @return {Tone.GrainPlayer} this&#xD;		 */&#xD;	    Tone.GrainPlayer.prototype.dispose = function () {&#xD;	        Tone.Source.prototype.dispose.call(this);&#xD;	        this.buffer.dispose();&#xD;	        this.buffer = null;&#xD;	        this._player.dispose();&#xD;	        this._player = null;&#xD;	        this._clock.dispose();&#xD;	        this._clock = null;&#xD;	        return this;&#xD;	    };&#xD;	    return Tone.GrainPlayer;&#xD;	});&#xD;	Module(function (Tone) {&#xD;	    &#xD;	    /**&#xD;		 *  @class  Tone.UserMedia uses MediaDevices.getUserMedia to open up&#xD;		 *          and external microphone or audio input. Check &#xD;		 *          [MediaDevices API Support](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)&#xD;		 *          to see which browsers are supported. Access to an external input&#xD;		 *          is limited to secure (HTTPS) connections.&#xD;		 *         &#xD;		 *  @constructor&#xD;		 *  @extends {Tone}&#xD;		 *  @param {Decibels=} volume The level of the input&#xD;		 *  @example&#xD;		 * //list the inputs and open the third one&#xD;		 * var motu = new Tone.UserMedia();&#xD;		 * &#xD;		 * //opening the input asks the user to activate their mic&#xD;		 * motu.open().then(function(){&#xD;		 * 	//opening is activates the microphone&#xD;		 * 	//starting lets audio through&#xD;		 * 	motu.start(10);&#xD;		 * });&#xD;		 */&#xD;	    Tone.UserMedia = function () {&#xD;	        var options = this.optionsObject(arguments, [&apos;volume&apos;], Tone.UserMedia.defaults);&#xD;	        /**&#xD;			 *  The MediaStreamNode &#xD;			 *  @type {MediaStreamAudioSourceNode}&#xD;			 *  @private&#xD;			 */&#xD;	        this._mediaStream = null;&#xD;	        /**&#xD;			 *  The media stream created by getUserMedia.&#xD;			 *  @type {LocalMediaStream}&#xD;			 *  @private&#xD;			 */&#xD;	        this._stream = null;&#xD;	        /**&#xD;			 *  The open device&#xD;			 *  @type  {MediaDeviceInfo}&#xD;			 *  @private&#xD;			 */&#xD;	        this._device = null;&#xD;	        /**&#xD;			 *  The output volume node&#xD;			 *  @type  {Tone.Volume}&#xD;			 *  @private&#xD;			 */&#xD;	        this._volume = this.output = new Tone.Volume(options.volume);&#xD;	        /**&#xD;			 * The volume of the output in decibels.&#xD;			 * @type {Decibels}&#xD;			 * @signal&#xD;			 * @example&#xD;			 * input.volume.value = -6;&#xD;			 */&#xD;	        this.volume = this._volume.volume;&#xD;	        this._readOnly(&apos;volume&apos;);&#xD;	        this.mute = options.mute;&#xD;	    };&#xD;	    Tone.extend(Tone.UserMedia);&#xD;	    /**&#xD;		 * the default parameters&#xD;		 * @type {Object}&#xD;		 */&#xD;	    Tone.UserMedia.defaults = {&#xD;	        &apos;volume&apos;: 0,&#xD;	        &apos;mute&apos;: false&#xD;	    };&#xD;	    /**&#xD;		 *  Open the media stream. If a string is passed in, it is assumed&#xD;		 *  to be the label or id of the stream, if a number is passed in,&#xD;		 *  it is the input number of the stream.&#xD;		 *  @param  {String|Number} [labelOrId="default"] The label or id of the audio input media device. &#xD;		 *                                                With no argument, the default stream is opened.&#xD;		 *  @return {Promise} The promise is resolved when the stream is open.&#xD;		 */&#xD;	    Tone.UserMedia.prototype.open = function (labelOrId) {&#xD;	        labelOrId = this.defaultArg(labelOrId, &apos;default&apos;);&#xD;	        return this.enumerateDevices().then(function (devices) {&#xD;	            var device;&#xD;	            if (this.isNumber(labelOrId)) {&#xD;	                device = devices[labelOrId];&#xD;	            } else {&#xD;	                device = devices.find(function (device) {&#xD;	                    return device.label === labelOrId || device.deviceId === labelOrId;&#xD;	                });&#xD;	                if (!device) {&#xD;	                    //otherwise just take the first one&#xD;	                    device = devices[0];&#xD;	                }&#xD;	            }&#xD;	            //didn&apos;t find a matching device&#xD;	            if (!device) {&#xD;	                throw new Error(&apos;Tone.UserMedia: no matching audio inputs.&apos;);&#xD;	            }&#xD;	            this._device = device;&#xD;	            //do getUserMedia&#xD;	            var constraints = {&#xD;	                audio: {&#xD;	                    &apos;deviceId&apos;: device.deviceId,&#xD;	                    &apos;echoCancellation&apos;: false,&#xD;	                    &apos;sampleRate&apos;: this.context.sampleRate&#xD;	                }&#xD;	            };&#xD;	            return navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {&#xD;	                //start a new source only if the previous one is closed&#xD;	                if (!this._stream) {&#xD;	                    this._stream = stream;&#xD;	                    //Wrap a MediaStreamSourceNode around the live input stream.&#xD;	                    this._mediaStream = this.context.createMediaStreamSource(stream);&#xD;	                    //Connect the MediaStreamSourceNode to a gate gain node&#xD;	                    this._mediaStream.connect(this.output);&#xD;	                }&#xD;	                return this;&#xD;	            }.bind(this));&#xD;	        }.bind(this));&#xD;	    };&#xD;	    /**&#xD;		 *  Close the media stream&#xD;		 *  @return {Tone.UserMedia} this&#xD;		 */&#xD;	    Tone.UserMedia.prototype.close = function () {&#xD;	        if (this._stream) {&#xD;	            this._stream.getAudioTracks().forEach(function (track) {&#xD;	                track.stop();&#xD;	            });&#xD;	            this._stream = null;&#xD;	            //remove the old media stream&#xD;	            this._mediaStream.disconnect();&#xD;	            this._mediaStream = null;&#xD;	        }&#xD;	        this._device = null;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  Returns a promise which resolves with the list of audio input devices available.&#xD;		 *  @return {Promise} The promise that is resolved with the devices&#xD;		 *  @example&#xD;		 * extInput.enumerateDevices().then(function(devices){&#xD;		 * 	console.log(devices)&#xD;		 * })&#xD;		 */&#xD;	    Tone.UserMedia.prototype.enumerateDevices = function () {&#xD;	        return navigator.mediaDevices.enumerateDevices().then(function (devices) {&#xD;	            return devices.filter(function (device) {&#xD;	                return device.kind === &apos;audioinput&apos;;&#xD;	            });&#xD;	        });&#xD;	    };&#xD;	    /**&#xD;		 *  Returns the playback state of the source, "started" when the microphone is open&#xD;		 *  and "stopped" when the mic is closed.&#xD;		 *  @type {Tone.State}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.UserMedia#&#xD;		 *  @name state&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia.prototype, &apos;state&apos;, {&#xD;	        get: function () {&#xD;	            return this._stream &amp;&amp; this._stream.active ? Tone.State.Started : Tone.State.Stopped;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	Returns an identifier for the represented device that is &#xD;		 * 	persisted across sessions. It is un-guessable by other applications and &#xD;		 * 	unique to the origin of the calling application. It is reset when the &#xD;		 * 	user clears cookies (for Private Browsing, a different identifier is &#xD;		 * 	used that is not persisted across sessions). Returns undefined when the &#xD;		 * 	device is not open.&#xD;		 *  @type {String}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.UserMedia#&#xD;		 *  @name deviceId&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia.prototype, &apos;deviceId&apos;, {&#xD;	        get: function () {&#xD;	            if (this._device) {&#xD;	                return this._device.deviceId;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	Returns a group identifier. Two devices have the &#xD;		 * 	same group identifier if they belong to the same physical device.&#xD;		 * 	Returns undefined when the device is not open.&#xD;		 *  @type {String}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.UserMedia#&#xD;		 *  @name groupId&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia.prototype, &apos;groupId&apos;, {&#xD;	        get: function () {&#xD;	            if (this._device) {&#xD;	                return this._device.groupId;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * 	Returns a label describing this device (for example "Built-in Microphone"). &#xD;		 * 	Returns undefined when the device is not open or label is not available&#xD;		 * 	because of permissions.&#xD;		 *  @type {String}&#xD;		 *  @readOnly&#xD;		 *  @memberOf Tone.UserMedia#&#xD;		 *  @name groupId&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia.prototype, &apos;label&apos;, {&#xD;	        get: function () {&#xD;	            if (this._device) {&#xD;	                return this._device.label;&#xD;	            }&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Mute the output. &#xD;		 * @memberOf Tone.UserMedia#&#xD;		 * @type {boolean}&#xD;		 * @name mute&#xD;		 * @example&#xD;		 * //mute the output&#xD;		 * userMedia.mute = true;&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia.prototype, &apos;mute&apos;, {&#xD;	        get: function () {&#xD;	            return this._volume.mute;&#xD;	        },&#xD;	        set: function (mute) {&#xD;	            this._volume.mute = mute;&#xD;	        }&#xD;	    });&#xD;	    /**&#xD;		 * Clean up.&#xD;		 * @return {Tone.UserMedia} this&#xD;		 */&#xD;	    Tone.UserMedia.prototype.dispose = function () {&#xD;	        Tone.prototype.dispose.call(this);&#xD;	        this.close();&#xD;	        this._writable(&apos;volume&apos;);&#xD;	        this._volume.dispose();&#xD;	        this._volume = null;&#xD;	        this.volume = null;&#xD;	        return this;&#xD;	    };&#xD;	    /**&#xD;		 *  If getUserMedia is supported by the browser.&#xD;		 *  @type  {Boolean}&#xD;		 *  @memberOf Tone.UserMedia#&#xD;		 *  @name supported&#xD;		 *  @static&#xD;		 *  @readOnly&#xD;		 */&#xD;	    Object.defineProperty(Tone.UserMedia, &apos;supported&apos;, {&#xD;	        get: function () {&#xD;	            return !Tone.prototype.isUndef(navigator.mediaDevices) &amp;&amp; Tone.prototype.isFunction(navigator.mediaDevices.getUserMedia);&#xD;	        }&#xD;	    });&#xD;	    return Tone.UserMedia;&#xD;	});&#xD;	&#xD;	return Tone;&#xD;}));&#xD;&#xD;/***/ }),&#xD;/* 1 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var microee = __webpack_require__(20);&#xD;&#xD;// Implements a subset of Node&apos;s stream.Transform - in a cross-platform manner.&#xD;function Transform() {}&#xD;&#xD;microee.mixin(Transform);&#xD;&#xD;// The write() signature is different from Node&apos;s&#xD;// --&gt; makes it much easier to work with objects in logs.&#xD;// One of the lessons from v1 was that it&apos;s better to target&#xD;// a good browser rather than the lowest common denominator&#xD;// internally.&#xD;// If you want to use external streams, pipe() to ./stringify.js first.&#xD;Transform.prototype.write = function(name, level, args) {&#xD;  this.emit(&apos;item&apos;, name, level, args);&#xD;};&#xD;&#xD;Transform.prototype.end = function() {&#xD;  this.emit(&apos;end&apos;);&#xD;  this.removeAllListeners();&#xD;};&#xD;&#xD;Transform.prototype.pipe = function(dest) {&#xD;  var s = this;&#xD;  // prevent double piping&#xD;  s.emit(&apos;unpipe&apos;, dest);&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, s);&#xD;&#xD;  function onItem() {&#xD;    dest.write.apply(dest, Array.prototype.slice.call(arguments));&#xD;  }&#xD;  function onEnd() { !dest._isStdio &amp;&amp; dest.end(); }&#xD;&#xD;  s.on(&apos;item&apos;, onItem);&#xD;  s.on(&apos;end&apos;, onEnd);&#xD;&#xD;  s.when(&apos;unpipe&apos;, function(from) {&#xD;    var match = (from === dest) || typeof from == &apos;undefined&apos;;&#xD;    if(match) {&#xD;      s.removeListener(&apos;item&apos;, onItem);&#xD;      s.removeListener(&apos;end&apos;, onEnd);&#xD;      dest.emit(&apos;unpipe&apos;);&#xD;    }&#xD;    return match;&#xD;  });&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;Transform.prototype.unpipe = function(from) {&#xD;  this.emit(&apos;unpipe&apos;, from);&#xD;  return this;&#xD;};&#xD;&#xD;Transform.prototype.format = function(dest) {&#xD;  throw new Error([&#xD;    &apos;Warning: .format() is deprecated in Minilog v2! Use .pipe() instead. For example:&apos;,&#xD;    &apos;var Minilog = require(\&apos;minilog\&apos;);&apos;,&#xD;    &apos;Minilog&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console.formatClean)&apos;,&#xD;    &apos;  .pipe(Minilog.backends.console);&apos;].join(&apos;\n&apos;));&#xD;};&#xD;&#xD;Transform.mixin = function(dest) {&#xD;  var o = Transform.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Transform;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 2 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var minilog = __webpack_require__(28);&#xD;minilog.enable();&#xD;&#xD;module.exports = minilog(&apos;scratch-audioengine&apos;);&#xD;&#xD;/***/ }),&#xD;/* 3 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;var log = __webpack_require__(2);&#xD;&#xD;/**&#xD; * A SoundPlayer stores an audio buffer, and plays it&#xD; */&#xD;&#xD;var SoundPlayer = function () {&#xD;    function SoundPlayer() {&#xD;        _classCallCheck(this, SoundPlayer);&#xD;&#xD;        this.outputNode = null;&#xD;        this.buffer = new Tone.Buffer();&#xD;        this.bufferSource = null;&#xD;        this.playbackRate = 1;&#xD;        this.isPlaying = false;&#xD;    }&#xD;&#xD;    /**&#xD;     * Connect the SoundPlayer to an output node&#xD;     * @param  {Tone.Gain} node - an output node to connect to&#xD;     */&#xD;&#xD;&#xD;    _createClass(SoundPlayer, [{&#xD;        key: &apos;connect&apos;,&#xD;        value: function connect(node) {&#xD;            this.outputNode = node;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set an audio buffer&#xD;         * @param {Tone.Buffer} buffer Buffer to set&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setBuffer&apos;,&#xD;        value: function setBuffer(buffer) {&#xD;            this.buffer = buffer;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the playback rate for the sound&#xD;         * @param {number} playbackRate - a ratio where 1 is normal playback, 0.5 is half speed, 2 is double speed, etc.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setPlaybackRate&apos;,&#xD;        value: function setPlaybackRate(playbackRate) {&#xD;            this.playbackRate = playbackRate;&#xD;            if (this.bufferSource &amp;&amp; this.bufferSource.playbackRate) {&#xD;                this.bufferSource.playbackRate.value = this.playbackRate;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop the sound&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stop&apos;,&#xD;        value: function stop() {&#xD;            if (this.bufferSource) {&#xD;                this.bufferSource.stop();&#xD;            }&#xD;            this.isPlaying = false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Start playing the sound&#xD;         * The web audio framework requires a new audio buffer source node for each playback&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;start&apos;,&#xD;        value: function start() {&#xD;            if (!this.buffer || !this.buffer.loaded) {&#xD;                log.warn(&apos;tried to play a sound that was not loaded yet&apos;);&#xD;                return;&#xD;            }&#xD;&#xD;            this.bufferSource = Tone.context.createBufferSource();&#xD;            this.bufferSource.buffer = this.buffer.get();&#xD;            this.bufferSource.playbackRate.value = this.playbackRate;&#xD;            this.bufferSource.connect(this.outputNode);&#xD;            this.bufferSource.start();&#xD;&#xD;            this.isPlaying = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * The sound has finished playing. This is called at the correct time even if the playback rate&#xD;         * has been changed&#xD;         * @return {Promise} a Promise that resolves when the sound finishes playing&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;finished&apos;,&#xD;        value: function finished() {&#xD;            var storedContext = this;&#xD;            return new Promise(function (resolve) {&#xD;                storedContext.bufferSource.onended = function () {&#xD;                    this.isPlaying = false;&#xD;                    resolve();&#xD;                }.bind(storedContext);&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return SoundPlayer;&#xD;}();&#xD;&#xD;module.exports = SoundPlayer;&#xD;&#xD;/***/ }),&#xD;/* 4 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var hex = {&#xD;  black: &apos;#000&apos;,&#xD;  red: &apos;#c23621&apos;,&#xD;  green: &apos;#25bc26&apos;,&#xD;  yellow: &apos;#bbbb00&apos;,&#xD;  blue:  &apos;#492ee1&apos;,&#xD;  magenta: &apos;#d338d3&apos;,&#xD;  cyan: &apos;#33bbc8&apos;,&#xD;  gray: &apos;#808080&apos;,&#xD;  purple: &apos;#708&apos;&#xD;};&#xD;function color(fg, isInverse) {&#xD;  if(isInverse) {&#xD;    return &apos;color: #fff; background: &apos;+hex[fg]+&apos;;&apos;;&#xD;  } else {&#xD;    return &apos;color: &apos;+hex[fg]+&apos;;&apos;;&#xD;  }&#xD;}&#xD;&#xD;module.exports = color;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 5 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var ArrayBufferStream = __webpack_require__(18);&#xD;var Tone = __webpack_require__(0);&#xD;var log = __webpack_require__(2);&#xD;&#xD;/**&#xD; * Decode wav audio files that have been compressed with the ADPCM format.&#xD; * This is necessary because, while web browsers have native decoders for many audio&#xD; * formats, ADPCM is a non-standard format used by Scratch since its early days.&#xD; * This decoder is based on code from Scratch-Flash:&#xD; * https://github.com/LLK/scratch-flash/blob/master/src/sound/WAVFile.as&#xD; */&#xD;&#xD;var ADPCMSoundDecoder = function () {&#xD;    function ADPCMSoundDecoder() {&#xD;        _classCallCheck(this, ADPCMSoundDecoder);&#xD;    }&#xD;&#xD;    _createClass(ADPCMSoundDecoder, [{&#xD;        key: &apos;decode&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Decode an ADPCM sound stored in an ArrayBuffer and return a promise&#xD;         * with the decoded audio buffer.&#xD;         * @param  {ArrayBuffer} audioData - containing ADPCM encoded wav audio&#xD;         * @return {Tone.Buffer} the decoded audio buffer&#xD;         */&#xD;        value: function decode(audioData) {&#xD;            var _this = this;&#xD;&#xD;            return new Promise(function (resolve, reject) {&#xD;                var stream = new ArrayBufferStream(audioData);&#xD;&#xD;                var riffStr = stream.readUint8String(4);&#xD;                if (riffStr !== &apos;RIFF&apos;) {&#xD;                    log.warn(&apos;incorrect adpcm wav header&apos;);&#xD;                    reject();&#xD;                }&#xD;&#xD;                var lengthInHeader = stream.readInt32();&#xD;                if (lengthInHeader + 8 !== audioData.byteLength) {&#xD;                    log.warn(&apos;adpcm wav length in header: &apos; + lengthInHeader + &apos; is incorrect&apos;);&#xD;                }&#xD;&#xD;                var wavStr = stream.readUint8String(4);&#xD;                if (wavStr !== &apos;WAVE&apos;) {&#xD;                    log.warn(&apos;incorrect adpcm wav header&apos;);&#xD;                    reject();&#xD;                }&#xD;&#xD;                var formatChunk = _this.extractChunk(&apos;fmt &apos;, stream);&#xD;                _this.encoding = formatChunk.readUint16();&#xD;                _this.channels = formatChunk.readUint16();&#xD;                _this.samplesPerSecond = formatChunk.readUint32();&#xD;                _this.bytesPerSecond = formatChunk.readUint32();&#xD;                _this.blockAlignment = formatChunk.readUint16();&#xD;                _this.bitsPerSample = formatChunk.readUint16();&#xD;                formatChunk.position += 2; // skip extra header byte count&#xD;                _this.samplesPerBlock = formatChunk.readUint16();&#xD;                _this.adpcmBlockSize = (_this.samplesPerBlock - 1) / 2 + 4; // block size in bytes&#xD;&#xD;                var samples = _this.imaDecompress(_this.extractChunk(&apos;data&apos;, stream), _this.adpcmBlockSize);&#xD;&#xD;                // @todo this line is the only place Tone is used here, should be possible to remove&#xD;                var buffer = Tone.context.createBuffer(1, samples.length, _this.samplesPerSecond);&#xD;&#xD;                // @todo optimize this? e.g. replace the divide by storing 1/32768 and multiply?&#xD;                for (var i = 0; i &lt; samples.length; i++) {&#xD;                    buffer.getChannelData(0)[i] = samples[i] / 32768;&#xD;                }&#xD;&#xD;                resolve(buffer);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Extract a chunk of audio data from the stream, consisting of a set of audio data bytes&#xD;         * @param  {string} chunkType - the type of chunk to extract. &apos;data&apos; or &apos;fmt&apos; (format)&#xD;         * @param  {ArrayBufferStream} stream - an stream containing the audio data&#xD;         * @return {ArrayBufferStream} a stream containing the desired chunk&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;extractChunk&apos;,&#xD;        value: function extractChunk(chunkType, stream) {&#xD;            stream.position = 12;&#xD;            while (stream.position &lt; stream.getLength() - 8) {&#xD;                var typeStr = stream.readUint8String(4);&#xD;                var chunkSize = stream.readInt32();&#xD;                if (typeStr === chunkType) {&#xD;                    var chunk = stream.extract(chunkSize);&#xD;                    return chunk;&#xD;                }&#xD;                stream.position += chunkSize;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Decompress sample data using the IMA ADPCM algorithm.&#xD;         * Note: Handles only one channel, 4-bits per sample.&#xD;         * @param  {ArrayBufferStream} compressedData - a stream of compressed audio samples&#xD;         * @param  {number} blockSize - the number of bytes in the stream&#xD;         * @return {Int16Array} the uncompressed audio samples&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;imaDecompress&apos;,&#xD;        value: function imaDecompress(compressedData, blockSize) {&#xD;            var sample = void 0;&#xD;            var step = void 0;&#xD;            var code = void 0;&#xD;            var delta = void 0;&#xD;            var index = 0;&#xD;            var lastByte = -1; // -1 indicates that there is no saved lastByte&#xD;            var out = [];&#xD;&#xD;            // Bail and return no samples if we have no data&#xD;            if (!compressedData) return out;&#xD;&#xD;            compressedData.position = 0;&#xD;&#xD;            // @todo Update this loop ported from Scratch 2.0 to use a condition or a for loop.&#xD;            while (true) {&#xD;                // eslint-disable-line no-constant-condition&#xD;                if (compressedData.position % blockSize === 0 &amp;&amp; lastByte &lt; 0) {&#xD;                    // read block header&#xD;                    if (compressedData.getBytesAvailable() === 0) break;&#xD;                    sample = compressedData.readInt16();&#xD;                    index = compressedData.readUint8();&#xD;                    compressedData.position++; // skip extra header byte&#xD;                    if (index &gt; 88) index = 88;&#xD;                    out.push(sample);&#xD;                } else {&#xD;                    // read 4-bit code and compute delta from previous sample&#xD;                    if (lastByte &lt; 0) {&#xD;                        if (compressedData.getBytesAvailable() === 0) break;&#xD;                        lastByte = compressedData.readUint8();&#xD;                        code = lastByte &amp; 0xF;&#xD;                    } else {&#xD;                        code = lastByte &gt;&gt; 4 &amp; 0xF;&#xD;                        lastByte = -1;&#xD;                    }&#xD;                    step = ADPCMSoundDecoder.STEP_TABLE[index];&#xD;                    delta = 0;&#xD;                    if (code &amp; 4) delta += step;&#xD;                    if (code &amp; 2) delta += step &gt;&gt; 1;&#xD;                    if (code &amp; 1) delta += step &gt;&gt; 2;&#xD;                    delta += step &gt;&gt; 3;&#xD;                    // compute next index&#xD;                    index += ADPCMSoundDecoder.INDEX_TABLE[code];&#xD;                    if (index &gt; 88) index = 88;&#xD;                    if (index &lt; 0) index = 0;&#xD;                    // compute and output sample&#xD;                    sample += code &amp; 8 ? -delta : delta;&#xD;                    if (sample &gt; 32767) sample = 32767;&#xD;                    if (sample &lt; -32768) sample = -32768;&#xD;                    out.push(sample);&#xD;                }&#xD;            }&#xD;            var samples = Int16Array.from(out);&#xD;            return samples;&#xD;        }&#xD;    }], [{&#xD;        key: &apos;STEP_TABLE&apos;,&#xD;&#xD;        /**&#xD;         * Data used by the decompression algorithm&#xD;         * @type {Array}&#xD;         */&#xD;        get: function get() {&#xD;            return [7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767];&#xD;        }&#xD;&#xD;        /**&#xD;         * Data used by the decompression algorithm&#xD;         * @type {Array}&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;INDEX_TABLE&apos;,&#xD;        get: function get() {&#xD;            return [-1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8];&#xD;        }&#xD;    }]);&#xD;&#xD;    return ADPCMSoundDecoder;&#xD;}();&#xD;&#xD;module.exports = ADPCMSoundDecoder;&#xD;&#xD;/***/ }),&#xD;/* 6 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var SoundPlayer = __webpack_require__(3);&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;var DrumPlayer = function () {&#xD;    /**&#xD;     * A prototype for the drum sound functionality that can load drum sounds, play, and stop them.&#xD;     * @param {Tone.Gain} outputNode - a webAudio node that the drum sounds will send their output to&#xD;     * @constructor&#xD;     */&#xD;    function DrumPlayer(outputNode) {&#xD;        _classCallCheck(this, DrumPlayer);&#xD;&#xD;        this.outputNode = outputNode;&#xD;&#xD;        var baseUrl = &apos;https://raw.githubusercontent.com/LLK/scratch-audio/develop/sound-files/drums/&apos;;&#xD;        var fileNames = [&apos;SnareDrum(1)&apos;, &apos;BassDrum(1b)&apos;, &apos;SideStick(1)&apos;, &apos;Crash(2)&apos;, &apos;HiHatOpen(2)&apos;, &apos;HiHatClosed(1)&apos;, &apos;Tambourine(3)&apos;, &apos;Clap(1)&apos;, &apos;Claves(1)&apos;, &apos;WoodBlock(1)&apos;, &apos;Cowbell(3)&apos;, &apos;Triangle(1)&apos;, &apos;Bongo&apos;, &apos;Conga(1)&apos;, &apos;Cabasa(1)&apos;, &apos;GuiroLong(1)&apos;, &apos;Vibraslap(1)&apos;, &apos;Cuica(2)&apos;];&#xD;&#xD;        this.drumSounds = [];&#xD;&#xD;        for (var i = 0; i &lt; fileNames.length; i++) {&#xD;            var url = baseUrl + fileNames[i] + &apos;_22k.wav&apos;;&#xD;            this.drumSounds[i] = new SoundPlayer(this.outputNode);&#xD;            this.drumSounds[i].setBuffer(new Tone.Buffer(url));&#xD;        }&#xD;    }&#xD;&#xD;    /**&#xD;     * Play a drum sound.&#xD;     * The parameter for output node allows sprites or clones to send the drum sound&#xD;     * to their individual audio effect chains.&#xD;     * @param  {number} drum - the drum number to play (0-indexed)&#xD;     * @param  {Tone.Gain} outputNode - a node to send the output to&#xD;     */&#xD;&#xD;&#xD;    _createClass(DrumPlayer, [{&#xD;        key: &apos;play&apos;,&#xD;        value: function play(drum, outputNode) {&#xD;            this.drumSounds[drum].outputNode = outputNode;&#xD;            this.drumSounds[drum].start();&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop all drum sounds.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopAll&apos;,&#xD;        value: function stopAll() {&#xD;            for (var i = 0; i &lt; this.drumSounds.length; i++) {&#xD;                this.drumSounds[i].stop();&#xD;            }&#xD;        }&#xD;    }]);&#xD;&#xD;    return DrumPlayer;&#xD;}();&#xD;&#xD;module.exports = DrumPlayer;&#xD;&#xD;/***/ }),&#xD;/* 7 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;var Soundfont = __webpack_require__(39);&#xD;&#xD;var InstrumentPlayer = function () {&#xD;    /**&#xD;     * A prototype for the instrument sound functionality that can play notes.&#xD;     * This prototype version (which will be replaced at some point) uses an&#xD;     * existing soundfont library that creates several limitations:&#xD;     * The sound files are high quality but large, so they are loaded &apos;on demand,&apos; at the time the&#xD;     * play note or set instrument block runs, causing a delay of a few seconds.&#xD;     * Using this library we don&apos;t have a way to set the volume, sustain the note beyond the sample&#xD;     * duration, or run it through the sprite-specific audio effects.&#xD;     * @param {Tone.Gain} outputNode - a webAudio node that the instrument will send its output to&#xD;     * @constructor&#xD;     */&#xD;    function InstrumentPlayer(outputNode) {&#xD;        _classCallCheck(this, InstrumentPlayer);&#xD;&#xD;        this.outputNode = outputNode;&#xD;&#xD;        // Instrument names used by Musyng Kite soundfont, in order to&#xD;        // match scratch instruments&#xD;        this.instrumentNames = [&apos;acoustic_grand_piano&apos;, &apos;electric_piano_1&apos;, &apos;drawbar_organ&apos;, &apos;acoustic_guitar_nylon&apos;, &apos;electric_guitar_clean&apos;, &apos;acoustic_bass&apos;, &apos;pizzicato_strings&apos;, &apos;cello&apos;, &apos;trombone&apos;, &apos;clarinet&apos;, &apos;tenor_sax&apos;, &apos;flute&apos;, &apos;pan_flute&apos;, &apos;bassoon&apos;, &apos;choir_aahs&apos;, &apos;vibraphone&apos;, &apos;music_box&apos;, &apos;steel_drums&apos;, &apos;marimba&apos;, &apos;lead_1_square&apos;, &apos;fx_4_atmosphere&apos;];&#xD;&#xD;        this.instruments = [];&#xD;    }&#xD;&#xD;    /**&#xD;     * Play a note for some number of seconds with a particular instrument.&#xD;     * Load the instrument first, if it has not already been loaded.&#xD;     * The duration is in seconds because the AudioEngine manages the tempo,&#xD;     * and converts beats to seconds.&#xD;     * @param  {number} note - a MIDI note number&#xD;     * @param  {number} sec - a duration in seconds&#xD;     * @param  {number} instrumentNum - an instrument number (0-indexed)&#xD;     * @param  {number} vol - a volume level (0-100%)&#xD;     */&#xD;&#xD;&#xD;    _createClass(InstrumentPlayer, [{&#xD;        key: &apos;playNoteForSecWithInstAndVol&apos;,&#xD;        value: function playNoteForSecWithInstAndVol(note, sec, instrumentNum, vol) {&#xD;            var _this = this;&#xD;&#xD;            var gain = vol / 100;&#xD;            this.loadInstrument(instrumentNum).then(function () {&#xD;                _this.instruments[instrumentNum].play(note, Tone.context.currentTime, {&#xD;                    duration: sec,&#xD;                    gain: gain&#xD;                });&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Load an instrument by number&#xD;         * @param  {number} instrumentNum - an instrument number (0-indexed)&#xD;         * @return {Promise} a Promise that resolves once the instrument audio data has been loaded&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;loadInstrument&apos;,&#xD;        value: function loadInstrument(instrumentNum) {&#xD;            var _this2 = this;&#xD;&#xD;            if (this.instruments[instrumentNum]) {&#xD;                return Promise.resolve();&#xD;            }&#xD;            return Soundfont.instrument(Tone.context, this.instrumentNames[instrumentNum]).then(function (inst) {&#xD;                inst.connect(_this2.outputNode);&#xD;                _this2.instruments[instrumentNum] = inst;&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop all notes being played on all instruments&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopAll&apos;,&#xD;        value: function stopAll() {&#xD;            for (var i = 0; i &lt; this.instruments.length; i++) {&#xD;                if (this.instruments[i]) {&#xD;                    this.instruments[i].stop();&#xD;                }&#xD;            }&#xD;        }&#xD;    }]);&#xD;&#xD;    return InstrumentPlayer;&#xD;}();&#xD;&#xD;module.exports = InstrumentPlayer;&#xD;&#xD;/***/ }),&#xD;/* 8 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* An echo effect (aka &apos;delay effect&apos; in audio terms)&#xD;* Effect value of 0 mutes the effect&#xD;* Values up to 100 set the echo feedback amount,&#xD;* increasing the time it takes the echo to fade away&#xD;* Clamped 0-100&#xD;*/&#xD;&#xD;var EchoEffect = function (_Tone$Effect) {&#xD;    _inherits(EchoEffect, _Tone$Effect);&#xD;&#xD;    function EchoEffect() {&#xD;        _classCallCheck(this, EchoEffect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (EchoEffect.__proto__ || Object.getPrototypeOf(EchoEffect)).call(this));&#xD;&#xD;        _this.value = 0;&#xD;        _this.delay = new Tone.FeedbackDelay(0.25, 0.5);&#xD;        _this.effectSend.chain(_this.delay, _this.effectReturn);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    */&#xD;&#xD;&#xD;    _createClass(EchoEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val) {&#xD;            this.value = this.clamp(val, 0, 100);&#xD;&#xD;            // mute the effect if value is 0&#xD;            if (this.value === 0) {&#xD;                this.wet.value = 0;&#xD;            } else {&#xD;                this.wet.value = 0.5;&#xD;            }&#xD;&#xD;            var feedback = this.value / 100 * 0.75;&#xD;            this.delay.feedback.rampTo(feedback, 1 / 60);&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val) {&#xD;            this.set(this.value + val);&#xD;        }&#xD;&#xD;        /**&#xD;        * Clamp the input to a range&#xD;        * @param {number} input - the input to clamp&#xD;        * @param {number} min - the min value to clamp to&#xD;        * @param {number} max - the max value to clamp to&#xD;        * @return {number} the clamped value&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;clamp&apos;,&#xD;        value: function clamp(input, min, max) {&#xD;            return Math.min(Math.max(input, min), max);&#xD;        }&#xD;    }]);&#xD;&#xD;    return EchoEffect;&#xD;}(Tone.Effect);&#xD;&#xD;module.exports = EchoEffect;&#xD;&#xD;/***/ }),&#xD;/* 9 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* A fuzz effect (aka &apos;distortion effect&apos; in audio terms)&#xD;* Effect value controls the wet/dry amount:&#xD;* 0 passes through none of the effect, 100 passes through all effect&#xD;* Clamped 0-100&#xD;*/&#xD;&#xD;var FuzzEffect = function (_Tone$Effect) {&#xD;    _inherits(FuzzEffect, _Tone$Effect);&#xD;&#xD;    function FuzzEffect() {&#xD;        _classCallCheck(this, FuzzEffect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (FuzzEffect.__proto__ || Object.getPrototypeOf(FuzzEffect)).call(this));&#xD;&#xD;        _this.value = 0;&#xD;        _this.distortion = new Tone.Distortion(1);&#xD;        _this.effectSend.chain(_this.distortion, _this.effectReturn);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    */&#xD;&#xD;&#xD;    _createClass(FuzzEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val) {&#xD;            this.value = this.clamp(val, 0, 100);&#xD;            this.distortion.wet.value = this.value / 100;&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val) {&#xD;            this.set(this.value + val);&#xD;        }&#xD;&#xD;        /**&#xD;        * @param {number} input - the input to clamp&#xD;        * @param {number} min - the min value to clamp to&#xD;        * @param {number} max - the max value to clamp to&#xD;        * @return {number} the clamped value&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;clamp&apos;,&#xD;        value: function clamp(input, min, max) {&#xD;            return Math.min(Math.max(input, min), max);&#xD;        }&#xD;    }]);&#xD;&#xD;    return FuzzEffect;&#xD;}(Tone.Effect);&#xD;&#xD;module.exports = FuzzEffect;&#xD;&#xD;/***/ }),&#xD;/* 10 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* A pan effect, which moves the sound to the left or right between the speakers&#xD;* Effect value of -100 puts the audio entirely on the left channel,&#xD;* 0 centers it, 100 puts it on the right.&#xD;* Clamped -100 to 100&#xD;*/&#xD;&#xD;var PanEffect = function (_Tone$Effect) {&#xD;    _inherits(PanEffect, _Tone$Effect);&#xD;&#xD;    function PanEffect() {&#xD;        _classCallCheck(this, PanEffect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (PanEffect.__proto__ || Object.getPrototypeOf(PanEffect)).call(this));&#xD;&#xD;        _this.value = 0;&#xD;        _this.panner = new Tone.Panner();&#xD;        _this.effectSend.chain(_this.panner, _this.effectReturn);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    */&#xD;&#xD;&#xD;    _createClass(PanEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val) {&#xD;            this.value = this.clamp(val, -100, 100);&#xD;            this.panner.pan.value = this.value / 100;&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val) {&#xD;            this.set(this.value + val);&#xD;        }&#xD;&#xD;        /**&#xD;        * Clamp the input to a range&#xD;        * @param {number} input - the input to clamp&#xD;        * @param {number} min - the min value to clamp to&#xD;        * @param {number} max - the max value to clamp to&#xD;        * @return {number} the clamped value&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;clamp&apos;,&#xD;        value: function clamp(input, min, max) {&#xD;            return Math.min(Math.max(input, min), max);&#xD;        }&#xD;    }]);&#xD;&#xD;    return PanEffect;&#xD;}(Tone.Effect);&#xD;&#xD;module.exports = PanEffect;&#xD;&#xD;/***/ }),&#xD;/* 11 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* A pitch change effect, which changes the playback rate of the sound in order&#xD;* to change its pitch: reducing the playback rate lowers the pitch, increasing the rate&#xD;* raises the pitch. The duration of the sound is also changed.&#xD;*&#xD;* Changing the value of the pitch effect by 10 causes a change in pitch by 1 semitone&#xD;* (i.e. a musical half-step, such as the difference between C and C#)&#xD;* Changing the pitch effect by 120 changes the pitch by one octave (12 semitones)&#xD;*&#xD;* The value of this effect is not clamped (i.e. it is typically between -120 and 120,&#xD;* but can be set much higher or much lower, with weird and fun results).&#xD;* We should consider what extreme values to use for clamping it.&#xD;*&#xD;* Note that this effect functions differently from the other audio effects. It is&#xD;* not part of a chain of audio nodes. Instead, it provides a way to set the playback&#xD;* on one SoundPlayer or a group of them.&#xD;*/&#xD;&#xD;var PitchEffect = function () {&#xD;    function PitchEffect() {&#xD;        _classCallCheck(this, PitchEffect);&#xD;&#xD;        this.value = 0; // effect value&#xD;        this.ratio = 1; // the playback rate ratio&#xD;        this.tone = new Tone();&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    * @param {object} players - a dictionary of SoundPlayer objects to apply the effect to, indexed by md5&#xD;    */&#xD;&#xD;&#xD;    _createClass(PitchEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val, players) {&#xD;            this.value = val;&#xD;            this.ratio = this.getRatio(this.value);&#xD;            this.updatePlayers(players);&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        * @param {object} players - a dictionary of SoundPlayer objects indexed by md5&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val, players) {&#xD;            this.set(this.value + val, players);&#xD;        }&#xD;&#xD;        /**&#xD;        * Compute the playback ratio for an effect value.&#xD;        * The playback ratio is scaled so that a change of 10 in the effect value&#xD;        * gives a change of 1 semitone in the ratio.&#xD;        * @param {number} val - an effect value&#xD;        * @returns {number} a playback ratio&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;getRatio&apos;,&#xD;        value: function getRatio(val) {&#xD;            return this.tone.intervalToFrequencyRatio(val / 10);&#xD;        }&#xD;&#xD;        /**&#xD;        * Update a sound player&apos;s playback rate using the current ratio for the effect&#xD;        * @param {object} player - a SoundPlayer object&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;updatePlayer&apos;,&#xD;        value: function updatePlayer(player) {&#xD;            player.setPlaybackRate(this.ratio);&#xD;        }&#xD;&#xD;        /**&#xD;        * Update a sound player&apos;s playback rate using the current ratio for the effect&#xD;        * @param {object} players - a dictionary of SoundPlayer objects to update, indexed by md5&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;updatePlayers&apos;,&#xD;        value: function updatePlayers(players) {&#xD;            if (!players) return;&#xD;&#xD;            for (var md5 in players) {&#xD;                if (players.hasOwnProperty(md5)) {&#xD;                    this.updatePlayer(players[md5]);&#xD;                }&#xD;            }&#xD;        }&#xD;    }]);&#xD;&#xD;    return PitchEffect;&#xD;}();&#xD;&#xD;module.exports = PitchEffect;&#xD;&#xD;/***/ }),&#xD;/* 12 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* A reverb effect, simulating reverberation in a room&#xD;* Effect value controls the wet/dry amount:&#xD;* 0 passes through none of the effect, 100 passes through all effect&#xD;* Clamped 0 to 100&#xD;*/&#xD;&#xD;var ReverbEffect = function (_Tone$Effect) {&#xD;    _inherits(ReverbEffect, _Tone$Effect);&#xD;&#xD;    function ReverbEffect() {&#xD;        _classCallCheck(this, ReverbEffect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (ReverbEffect.__proto__ || Object.getPrototypeOf(ReverbEffect)).call(this));&#xD;&#xD;        _this.value = 0;&#xD;        _this.reverb = new Tone.Freeverb();&#xD;        _this.effectSend.chain(_this.reverb, _this.effectReturn);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    */&#xD;&#xD;&#xD;    _createClass(ReverbEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val) {&#xD;            this.value = this.clamp(val, 0, 100);&#xD;            this.reverb.wet.value = this.value / 100;&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val) {&#xD;            this.set(this.value + val);&#xD;        }&#xD;&#xD;        /**&#xD;        * Clamp the input to a range&#xD;        * @param {number} input - the input to clamp&#xD;        * @param {number} min - the min value to clamp to&#xD;        * @param {number} max - the max value to clamp to&#xD;        * @return {number} the clamped value&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;clamp&apos;,&#xD;        value: function clamp(input, min, max) {&#xD;            return Math.min(Math.max(input, min), max);&#xD;        }&#xD;    }]);&#xD;&#xD;    return ReverbEffect;&#xD;}(Tone.Effect);&#xD;&#xD;module.exports = ReverbEffect;&#xD;&#xD;/***/ }),&#xD;/* 13 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;/**&#xD;* A "robotic" effect that adds a low-pitched buzzing to the sound, reminiscent of the&#xD;* voice of the daleks from Dr. Who.&#xD;* In audio terms it is a feedback comb filter with a short delay time.&#xD;* The effect value controls the length of this delay time, changing the pitch of the buzz&#xD;* A value of 0 mutes the effect.&#xD;* Other values change the pitch of the effect, in units of 10 steps per semitone.&#xD;* The effect value is not clamped (but probably should be).&#xD;* Exterminate.&#xD;*/&#xD;&#xD;var RoboticEffect = function (_Tone$Effect) {&#xD;    _inherits(RoboticEffect, _Tone$Effect);&#xD;&#xD;    function RoboticEffect() {&#xD;        _classCallCheck(this, RoboticEffect);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (RoboticEffect.__proto__ || Object.getPrototypeOf(RoboticEffect)).call(this));&#xD;&#xD;        _this.value = 0;&#xD;&#xD;        var time = _this._delayTimeForValue(100);&#xD;        _this.feedbackCombFilter = new Tone.FeedbackCombFilter(time, 0.9);&#xD;&#xD;        _this.effectSend.chain(_this.feedbackCombFilter, _this.effectReturn);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;    * Set the effect value&#xD;    * @param {number} val - the new value to set the effect to&#xD;    */&#xD;&#xD;&#xD;    _createClass(RoboticEffect, [{&#xD;        key: &apos;set&apos;,&#xD;        value: function set(val) {&#xD;            this.value = val;&#xD;&#xD;            // mute the effect if value is 0&#xD;            if (this.value === 0) {&#xD;                this.wet.value = 0;&#xD;            } else {&#xD;                this.wet.value = 1;&#xD;            }&#xD;&#xD;            // set delay time using the value&#xD;            var time = this._delayTimeForValue(this.value);&#xD;            this.feedbackCombFilter.delayTime.rampTo(time, 1 / 60);&#xD;        }&#xD;&#xD;        /**&#xD;        * Change the effect value&#xD;        * @param {number} val - the value to change the effect by&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;changeBy&apos;,&#xD;        value: function changeBy(val) {&#xD;            this.set(this.value + val);&#xD;        }&#xD;&#xD;        /**&#xD;        * Compute the delay time for an effect value.&#xD;        * Convert the effect value to a musical note (in units of 10 per semitone),&#xD;        * and return the period (single cycle duration) of the frequency of that note.&#xD;        * @param {number} val - the effect value&#xD;        * @returns {number} a delay time in seconds&#xD;        */&#xD;&#xD;    }, {&#xD;        key: &apos;_delayTimeForValue&apos;,&#xD;        value: function _delayTimeForValue(val) {&#xD;            var midiNote = (val - 100) / 10 + 36;&#xD;            var freq = Tone.Frequency(midiNote, &apos;midi&apos;).eval();&#xD;            return 1 / freq;&#xD;        }&#xD;    }]);&#xD;&#xD;    return RoboticEffect;&#xD;}(Tone.Effect);&#xD;&#xD;module.exports = RoboticEffect;&#xD;&#xD;/***/ }),&#xD;/* 14 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = ADSR&#xD;&#xD;function ADSR(audioContext){&#xD;  var node = audioContext.createGain()&#xD;&#xD;  var voltage = node._voltage = getVoltage(audioContext)&#xD;  var value = scale(voltage)&#xD;  var startValue = scale(voltage)&#xD;  var endValue = scale(voltage)&#xD;&#xD;  node._startAmount = scale(startValue)&#xD;  node._endAmount = scale(endValue)&#xD;&#xD;  node._multiplier = scale(value)&#xD;  node._multiplier.connect(node)&#xD;  node._startAmount.connect(node)&#xD;  node._endAmount.connect(node)&#xD;&#xD;  node.value = value.gain&#xD;  node.startValue = startValue.gain&#xD;  node.endValue = endValue.gain&#xD;&#xD;  node.startValue.value = 0&#xD;  node.endValue.value = 0&#xD;&#xD;  Object.defineProperties(node, props)&#xD;  return node&#xD;}&#xD;&#xD;var props = {&#xD;&#xD;  attack: { value: 0, writable: true },&#xD;  decay: { value: 0, writable: true },&#xD;  sustain: { value: 1, writable: true },&#xD;  release: {value: 0, writable: true },&#xD;&#xD;  getReleaseDuration: {&#xD;    value: function(){&#xD;      return this.release&#xD;    }&#xD;  },&#xD;&#xD;  start: {&#xD;    value: function(at){&#xD;      var target = this._multiplier.gain&#xD;      var startAmount = this._startAmount.gain&#xD;      var endAmount = this._endAmount.gain&#xD;&#xD;      this._voltage.start(at)&#xD;      this._decayFrom = this._decayFrom = at+this.attack&#xD;      this._startedAt = at&#xD;&#xD;      var sustain = this.sustain&#xD;&#xD;      target.cancelScheduledValues(at)&#xD;      startAmount.cancelScheduledValues(at)&#xD;      endAmount.cancelScheduledValues(at)&#xD;&#xD;      endAmount.setValueAtTime(0, at)&#xD;&#xD;      if (this.attack){&#xD;        target.setValueAtTime(0, at)&#xD;        target.linearRampToValueAtTime(1, at + this.attack)&#xD;&#xD;        startAmount.setValueAtTime(1, at)&#xD;        startAmount.linearRampToValueAtTime(0, at + this.attack)&#xD;      } else {&#xD;        target.setValueAtTime(1, at)&#xD;        startAmount.setValueAtTime(0, at)&#xD;      }&#xD;&#xD;      if (this.decay){&#xD;        target.setTargetAtTime(sustain, this._decayFrom, getTimeConstant(this.decay))&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  stop: {&#xD;    value: function(at, isTarget){&#xD;      if (isTarget){&#xD;        at = at - this.release&#xD;      }&#xD;&#xD;      var endTime = at + this.release&#xD;      if (this.release){&#xD;&#xD;        var target = this._multiplier.gain&#xD;        var startAmount = this._startAmount.gain&#xD;        var endAmount = this._endAmount.gain&#xD;&#xD;        target.cancelScheduledValues(at)&#xD;        startAmount.cancelScheduledValues(at)&#xD;        endAmount.cancelScheduledValues(at)&#xD;&#xD;        var expFalloff = getTimeConstant(this.release)&#xD;&#xD;        // truncate attack (required as linearRamp is removed by cancelScheduledValues)&#xD;        if (this.attack &amp;&amp; at &lt; this._decayFrom){&#xD;          var valueAtTime = getValue(0, 1, this._startedAt, this._decayFrom, at)&#xD;          target.linearRampToValueAtTime(valueAtTime, at)&#xD;          startAmount.linearRampToValueAtTime(1-valueAtTime, at)&#xD;          startAmount.setTargetAtTime(0, at, expFalloff)&#xD;        }&#xD;&#xD;        endAmount.setTargetAtTime(1, at, expFalloff)&#xD;        target.setTargetAtTime(0, at, expFalloff)&#xD;      }&#xD;&#xD;      this._voltage.stop(endTime)&#xD;      return endTime&#xD;    }&#xD;  },&#xD;&#xD;  onended: {&#xD;    get: function(){&#xD;      return this._voltage.onended&#xD;    },&#xD;    set: function(value){&#xD;      this._voltage.onended = value&#xD;    }&#xD;  }&#xD;&#xD;}&#xD;&#xD;var flat = new Float32Array([1,1])&#xD;function getVoltage(context){&#xD;  var voltage = context.createBufferSource()&#xD;  var buffer = context.createBuffer(1, 2, context.sampleRate)&#xD;  buffer.getChannelData(0).set(flat)&#xD;  voltage.buffer = buffer&#xD;  voltage.loop = true&#xD;  return voltage&#xD;}&#xD;&#xD;function scale(node){&#xD;  var gain = node.context.createGain()&#xD;  node.connect(gain)&#xD;  return gain&#xD;}&#xD;&#xD;function getTimeConstant(time){&#xD;  return Math.log(time+1)/Math.log(100)&#xD;}&#xD;&#xD;function getValue(start, end, fromTime, toTime, at){&#xD;  var difference = end - start&#xD;  var time = toTime - fromTime&#xD;  var truncateTime = at - fromTime&#xD;  var phase = truncateTime / time&#xD;  var value = start + phase * difference&#xD;&#xD;  if (value &lt;= start) {&#xD;      value = start&#xD;  }&#xD;  if (value &gt;= end) {&#xD;      value = end&#xD;  }&#xD;&#xD;  return value&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 15 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;// DECODE UTILITIES&#xD;function b64ToUint6 (nChr) {&#xD;  return nChr &gt; 64 &amp;&amp; nChr &lt; 91 ? nChr - 65&#xD;    : nChr &gt; 96 &amp;&amp; nChr &lt; 123 ? nChr - 71&#xD;    : nChr &gt; 47 &amp;&amp; nChr &lt; 58 ? nChr + 4&#xD;    : nChr === 43 ? 62&#xD;    : nChr === 47 ? 63&#xD;    : 0&#xD;}&#xD;&#xD;// Decode Base64 to Uint8Array&#xD;// ---------------------------&#xD;function decode (sBase64, nBlocksSize) {&#xD;  var sB64Enc = sBase64.replace(/[^A-Za-z0-9\+\/]/g, &apos;&apos;)&#xD;  var nInLen = sB64Enc.length&#xD;  var nOutLen = nBlocksSize&#xD;    ? Math.ceil((nInLen * 3 + 1 &gt;&gt; 2) / nBlocksSize) * nBlocksSize&#xD;    : nInLen * 3 + 1 &gt;&gt; 2&#xD;  var taBytes = new Uint8Array(nOutLen)&#xD;&#xD;  for (var nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx &lt; nInLen; nInIdx++) {&#xD;    nMod4 = nInIdx &amp; 3&#xD;    nUint24 |= b64ToUint6(sB64Enc.charCodeAt(nInIdx)) &lt;&lt; 18 - 6 * nMod4&#xD;    if (nMod4 === 3 || nInLen - nInIdx === 1) {&#xD;      for (nMod3 = 0; nMod3 &lt; 3 &amp;&amp; nOutIdx &lt; nOutLen; nMod3++, nOutIdx++) {&#xD;        taBytes[nOutIdx] = nUint24 &gt;&gt;&gt; (16 &gt;&gt;&gt; nMod3 &amp; 24) &amp; 255&#xD;      }&#xD;      nUint24 = 0&#xD;    }&#xD;  }&#xD;  return taBytes&#xD;}&#xD;&#xD;module.exports = { decode: decode }&#xD;&#xD;&#xD;/***/ }),&#xD;/* 16 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* global XMLHttpRequest */&#xD;&#xD;&#xD;/**&#xD; * Given a url and a return type, returns a promise to the content of the url&#xD; * Basically it wraps a XMLHttpRequest into a Promise&#xD; *&#xD; * @param {String} url&#xD; * @param {String} type - can be &apos;text&apos; or &apos;arraybuffer&apos;&#xD; * @return {Promise}&#xD; */&#xD;module.exports = function (url, type) {&#xD;  return new Promise(function (done, reject) {&#xD;    var req = new XMLHttpRequest()&#xD;    if (type) req.responseType = type&#xD;&#xD;    req.open(&apos;GET&apos;, url)&#xD;    req.onload = function () {&#xD;      req.status === 200 ? done(req.response) : reject(Error(req.statusText))&#xD;    }&#xD;    req.onerror = function () { reject(Error(&apos;Network Error&apos;)) }&#xD;    req.send()&#xD;  })&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 17 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var base64 = __webpack_require__(15)&#xD;var fetch = __webpack_require__(16)&#xD;&#xD;// Given a regex, return a function that test if against a string&#xD;function fromRegex (r) {&#xD;  return function (o) { return typeof o === &apos;string&apos; &amp;&amp; r.test(o) }&#xD;}&#xD;// Try to apply a prefix to a name&#xD;function prefix (pre, name) {&#xD;  return typeof pre === &apos;string&apos; ? pre + name&#xD;    : typeof pre === &apos;function&apos; ? pre(name)&#xD;    : name&#xD;}&#xD;&#xD;/**&#xD; * Load one or more audio files&#xD; *&#xD; *&#xD; * Possible option keys:&#xD; *&#xD; * - __from__ {Function|String}: a function or string to convert from file names to urls.&#xD; * If is a string it will be prefixed to the name:&#xD; * `load(ac, &apos;snare.mp3&apos;, { from: &apos;http://audio.net/samples/&apos; })`&#xD; * If it&apos;s a function it receives the file name and should return the url as string.&#xD; * - __only__ {Array} - when loading objects, if provided, only the given keys&#xD; * will be included in the decoded object:&#xD; * `load(ac, &apos;piano.json&apos;, { only: [&apos;C2&apos;, &apos;D2&apos;] })`&#xD; *&#xD; * @param {AudioContext} ac - the audio context&#xD; * @param {Object} source - the object to be loaded&#xD; * @param {Object} options - (Optional) the load options for that object&#xD; * @param {Object} defaultValue - (Optional) the default value to return as&#xD; * in a promise if not valid loader found&#xD; */&#xD;function load (ac, source, options, defVal) {&#xD;  var loader =&#xD;    // Basic audio loading&#xD;      isArrayBuffer(source) ? loadArrayBuffer&#xD;    : isAudioFileName(source) ? loadAudioFile&#xD;    : isPromise(source) ? loadPromise&#xD;    // Compound objects&#xD;    : isArray(source) ? loadArrayData&#xD;    : isObject(source) ? loadObjectData&#xD;    : isJsonFileName(source) ? loadJsonFile&#xD;    // Base64 encoded audio&#xD;    : isBase64Audio(source) ? loadBase64Audio&#xD;    : isJsFileName(source) ? loadMidiJSFile&#xD;    : null&#xD;&#xD;  var opts = options || {}&#xD;  return loader ? loader(ac, source, opts)&#xD;    : defVal ? Promise.resolve(defVal)&#xD;    : Promise.reject(&apos;Source not valid (&apos; + source + &apos;)&apos;)&#xD;}&#xD;load.fetch = fetch&#xD;&#xD;// BASIC AUDIO LOADING&#xD;// ===================&#xD;&#xD;// Load (decode) an array buffer&#xD;function isArrayBuffer (o) { return o instanceof ArrayBuffer }&#xD;function loadArrayBuffer (ac, array, options) {&#xD;  return new Promise(function (done, reject) {&#xD;    ac.decodeAudioData(array,&#xD;      function (buffer) { done(buffer) },&#xD;      function () { reject("Can&apos;t decode audio data (" + array.slice(0, 30) + &apos;...)&apos;) }&#xD;    )&#xD;  })&#xD;}&#xD;&#xD;// Load an audio filename&#xD;var isAudioFileName = fromRegex(/\.(mp3|wav|ogg)(\?.*)?$/i)&#xD;function loadAudioFile (ac, name, options) {&#xD;  var url = prefix(options.from, name)&#xD;  return load(ac, load.fetch(url, &apos;arraybuffer&apos;), options)&#xD;}&#xD;&#xD;// Load the result of a promise&#xD;function isPromise (o) { return o &amp;&amp; typeof o.then === &apos;function&apos; }&#xD;function loadPromise (ac, promise, options) {&#xD;  return promise.then(function (value) {&#xD;    return load(ac, value, options)&#xD;  })&#xD;}&#xD;&#xD;// COMPOUND OBJECTS&#xD;// ================&#xD;&#xD;// Try to load all the items of an array&#xD;var isArray = Array.isArray&#xD;function loadArrayData (ac, array, options) {&#xD;  return Promise.all(array.map(function (data) {&#xD;    return load(ac, data, options, data)&#xD;  }))&#xD;}&#xD;&#xD;// Try to load all the values of a key/value object&#xD;function isObject (o) { return o &amp;&amp; typeof o === &apos;object&apos; }&#xD;function loadObjectData (ac, obj, options) {&#xD;  var dest = {}&#xD;  var promises = Object.keys(obj).map(function (key) {&#xD;    if (options.only &amp;&amp; options.only.indexOf(key) === -1) return null&#xD;    var value = obj[key]&#xD;    return load(ac, value, options, value).then(function (audio) {&#xD;      dest[key] = audio&#xD;    })&#xD;  })&#xD;  return Promise.all(promises).then(function () { return dest })&#xD;}&#xD;&#xD;// Load the content of a JSON file&#xD;var isJsonFileName = fromRegex(/\.json(\?.*)?$/i)&#xD;function loadJsonFile (ac, name, options) {&#xD;  var url = prefix(options.from, name)&#xD;  return load(ac, load.fetch(url, &apos;text&apos;).then(JSON.parse), options)&#xD;}&#xD;&#xD;// BASE64 ENCODED FORMATS&#xD;// ======================&#xD;&#xD;// Load strings with Base64 encoded audio&#xD;var isBase64Audio = fromRegex(/^data:audio/)&#xD;function loadBase64Audio (ac, source, options) {&#xD;  var i = source.indexOf(&apos;,&apos;)&#xD;  return load(ac, base64.decode(source.slice(i + 1)).buffer, options)&#xD;}&#xD;&#xD;// Load .js files with MidiJS soundfont prerendered audio&#xD;var isJsFileName = fromRegex(/\.js(\?.*)?$/i)&#xD;function loadMidiJSFile (ac, name, options) {&#xD;  var url = prefix(options.from, name)&#xD;  return load(ac, load.fetch(url, &apos;text&apos;).then(midiJsToJson), options)&#xD;}&#xD;&#xD;// convert a MIDI.js javascript soundfont file to json&#xD;function midiJsToJson (data) {&#xD;  var begin = data.indexOf(&apos;MIDI.Soundfont.&apos;)&#xD;  if (begin &lt; 0) throw Error(&apos;Invalid MIDI.js Soundfont format&apos;)&#xD;  begin = data.indexOf(&apos;=&apos;, begin) + 2&#xD;  var end = data.lastIndexOf(&apos;,&apos;)&#xD;  return JSON.parse(data.slice(begin, end) + &apos;}&apos;)&#xD;}&#xD;&#xD;if (typeof module === &apos;object&apos; &amp;&amp; module.exports) module.exports = load&#xD;if (typeof window !== &apos;undefined&apos;) window.loadAudio = load&#xD;&#xD;&#xD;/***/ }),&#xD;/* 18 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var ArrayBufferStream = function () {&#xD;    /**&#xD;     * ArrayBufferStream wraps the built-in javascript ArrayBuffer, adding the ability to access&#xD;     * data in it like a stream, tracking its position.&#xD;     * You can request to read a value from the front of the array, and it will keep track of the position&#xD;     * within the byte array, so that successive reads are consecutive.&#xD;     * The available types to read include:&#xD;     * Uint8, Uint8String, Int16, Uint16, Int32, Uint32&#xD;     * @param {ArrayBuffer} arrayBuffer - array to use as a stream&#xD;     * @constructor&#xD;     */&#xD;    function ArrayBufferStream(arrayBuffer) {&#xD;        _classCallCheck(this, ArrayBufferStream);&#xD;&#xD;        this.arrayBuffer = arrayBuffer;&#xD;        this.position = 0;&#xD;    }&#xD;&#xD;    /**&#xD;     * Return a new ArrayBufferStream that is a slice of the existing one&#xD;     * @param  {number} length - the number of bytes of extract&#xD;     * @return {ArrayBufferStream} the extracted stream&#xD;     */&#xD;&#xD;&#xD;    _createClass(ArrayBufferStream, [{&#xD;        key: &apos;extract&apos;,&#xD;        value: function extract(length) {&#xD;            var slicedArrayBuffer = this.arrayBuffer.slice(this.position, this.position + length);&#xD;            var newStream = new ArrayBufferStream(slicedArrayBuffer);&#xD;            return newStream;&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {number} the length of the stream in bytes&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getLength&apos;,&#xD;        value: function getLength() {&#xD;            return this.arrayBuffer.byteLength;&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {number} the number of bytes available after the current position in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getBytesAvailable&apos;,&#xD;        value: function getBytesAvailable() {&#xD;            return this.arrayBuffer.byteLength - this.position;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read an unsigned 8 bit integer from the stream&#xD;         * @return {number} the next 8 bit integer in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readUint8&apos;,&#xD;        value: function readUint8() {&#xD;            var val = new Uint8Array(this.arrayBuffer, this.position, 1)[0];&#xD;            this.position += 1;&#xD;            return val;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read a sequence of bytes of the given length and convert to a string.&#xD;         * This is a convenience method for use with short strings.&#xD;         * @param {number} length - the number of bytes to convert&#xD;         * @return {string} a String made by concatenating the chars in the input&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readUint8String&apos;,&#xD;        value: function readUint8String(length) {&#xD;            var arr = new Uint8Array(this.arrayBuffer, this.position, length);&#xD;            this.position += length;&#xD;            var str = &apos;&apos;;&#xD;            for (var i = 0; i &lt; arr.length; i++) {&#xD;                str += String.fromCharCode(arr[i]);&#xD;            }&#xD;            return str;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read a 16 bit integer from the stream&#xD;         * @return {number} the next 16 bit integer in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readInt16&apos;,&#xD;        value: function readInt16() {&#xD;            var val = new Int16Array(this.arrayBuffer, this.position, 1)[0];&#xD;            this.position += 2; // one 16 bit int is 2 bytes&#xD;            return val;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read an unsigned 16 bit integer from the stream&#xD;         * @return {number} the next unsigned 16 bit integer in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readUint16&apos;,&#xD;        value: function readUint16() {&#xD;            var val = new Uint16Array(this.arrayBuffer, this.position, 1)[0];&#xD;            this.position += 2; // one 16 bit int is 2 bytes&#xD;            return val;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read a 32 bit integer from the stream&#xD;         * @return {number} the next 32 bit integer in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readInt32&apos;,&#xD;        value: function readInt32() {&#xD;            var val = new Int32Array(this.arrayBuffer, this.position, 1)[0];&#xD;            this.position += 4; // one 32 bit int is 4 bytes&#xD;            return val;&#xD;        }&#xD;&#xD;        /**&#xD;         * Read an unsigned 32 bit integer from the stream&#xD;         * @return {number} the next unsigned 32 bit integer in the stream&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;readUint32&apos;,&#xD;        value: function readUint32() {&#xD;            var val = new Uint32Array(this.arrayBuffer, this.position, 1)[0];&#xD;            this.position += 4; // one 32 bit int is 4 bytes&#xD;            return val;&#xD;        }&#xD;    }]);&#xD;&#xD;    return ArrayBufferStream;&#xD;}();&#xD;&#xD;module.exports = ArrayBufferStream;&#xD;&#xD;/***/ }),&#xD;/* 19 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var log = __webpack_require__(2);&#xD;var Tone = __webpack_require__(0);&#xD;&#xD;var PitchEffect = __webpack_require__(11);&#xD;var PanEffect = __webpack_require__(10);&#xD;&#xD;var RoboticEffect = __webpack_require__(13);&#xD;var FuzzEffect = __webpack_require__(9);&#xD;var EchoEffect = __webpack_require__(8);&#xD;var ReverbEffect = __webpack_require__(12);&#xD;&#xD;var SoundPlayer = __webpack_require__(3);&#xD;var ADPCMSoundDecoder = __webpack_require__(5);&#xD;var InstrumentPlayer = __webpack_require__(7);&#xD;var DrumPlayer = __webpack_require__(6);&#xD;&#xD;/**&#xD; * @fileOverview Scratch Audio is divided into a single AudioEngine,&#xD; * that handles global functionality, and AudioPlayers, belonging to individual sprites and clones.&#xD; */&#xD;&#xD;var AudioPlayer = function () {&#xD;    /**&#xD;     * Each sprite or clone has an audio player&#xD;     * the audio player handles sound playback, volume, and the sprite-specific audio effects:&#xD;     * pitch and pan&#xD;     * @param {AudioEngine} audioEngine AudioEngine for player&#xD;     * @constructor&#xD;     */&#xD;    function AudioPlayer(audioEngine) {&#xD;        _classCallCheck(this, AudioPlayer);&#xD;&#xD;        this.audioEngine = audioEngine;&#xD;&#xD;        // effects setup&#xD;        this.pitchEffect = new PitchEffect();&#xD;        this.panEffect = new PanEffect();&#xD;&#xD;        // the effects are chained to an effects node for this player, then to the main audio engine&#xD;        // audio is sent from each soundplayer, through the effects in order, then to the global effects&#xD;        // note that the pitch effect works differently - it sets the playback rate for each soundplayer&#xD;        this.effectsNode = new Tone.Gain();&#xD;        this.effectsNode.chain(this.panEffect, this.audioEngine.input);&#xD;&#xD;        // reset effects to their default parameters&#xD;        this.clearEffects();&#xD;&#xD;        // sound players that are currently playing, indexed by the sound&apos;s md5&#xD;        this.activeSoundPlayers = {};&#xD;    }&#xD;&#xD;    /**&#xD;     * Play a sound&#xD;     * @param  {string} md5 - the md5 id of a sound file&#xD;     * @return {Promise} a Promise that resolves when the sound finishes playing&#xD;     */&#xD;&#xD;&#xD;    _createClass(AudioPlayer, [{&#xD;        key: &apos;playSound&apos;,&#xD;        value: function playSound(md5) {&#xD;            // if this sound is not in the audio engine, return&#xD;            if (!this.audioEngine.audioBuffers[md5]) {&#xD;                return;&#xD;            }&#xD;&#xD;            // if this sprite or clone is already playing this sound, stop it first&#xD;            if (this.activeSoundPlayers[md5]) {&#xD;                this.activeSoundPlayers[md5].stop();&#xD;            }&#xD;&#xD;            // create a new soundplayer to play the sound&#xD;            var player = new SoundPlayer();&#xD;            player.setBuffer(this.audioEngine.audioBuffers[md5]);&#xD;            player.connect(this.effectsNode);&#xD;            this.pitchEffect.updatePlayer(player);&#xD;            player.start();&#xD;&#xD;            // add it to the list of active sound players&#xD;            this.activeSoundPlayers[md5] = player;&#xD;&#xD;            // remove sounds that are not playing from the active sound players array&#xD;            for (var id in this.activeSoundPlayers) {&#xD;                if (this.activeSoundPlayers.hasOwnProperty(id)) {&#xD;                    if (!this.activeSoundPlayers[id].isPlaying) {&#xD;                        delete this.activeSoundPlayers[id];&#xD;                    }&#xD;                }&#xD;            }&#xD;&#xD;            return player.finished();&#xD;        }&#xD;&#xD;        /**&#xD;         * Play a drum sound. The AudioEngine contains the DrumPlayer, but the AudioPlayer&#xD;         * calls this function so that it can pass a reference to its own effects node.&#xD;         * @param  {number} drum - a drum number (0-indexed)&#xD;         * @param  {number} beats - a duration in beats&#xD;         * @return {Promise} a Promise that resolves after the duration has elapsed&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;playDrumForBeats&apos;,&#xD;        value: function playDrumForBeats(drum, beats) {&#xD;            this.audioEngine.drumPlayer.play(drum, this.effectsNode);&#xD;            return this.audioEngine.waitForBeats(beats);&#xD;        }&#xD;&#xD;        /**&#xD;         * Stop all sounds, notes and drums that are playing&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;stopAllSounds&apos;,&#xD;        value: function stopAllSounds() {&#xD;            // stop all active sound players&#xD;            for (var md5 in this.activeSoundPlayers) {&#xD;                this.activeSoundPlayers[md5].stop();&#xD;            }&#xD;&#xD;            // stop all instruments&#xD;            this.audioEngine.instrumentPlayer.stopAll();&#xD;&#xD;            // stop drum notes&#xD;            this.audioEngine.drumPlayer.stopAll();&#xD;        }&#xD;&#xD;        /**&#xD;         * Set an audio effect to a value&#xD;         * @param {string} effect - the name of the effect&#xD;         * @param {number} value - the value to set the effect to&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setEffect&apos;,&#xD;        value: function setEffect(effect, value) {&#xD;            switch (effect) {&#xD;                case this.audioEngine.EFFECT_NAMES.pitch:&#xD;                    this.pitchEffect.set(value, this.activeSoundPlayers);&#xD;                    break;&#xD;                case this.audioEngine.EFFECT_NAMES.pan:&#xD;                    this.panEffect.set(value);&#xD;                    break;&#xD;                case this.audioEngine.EFFECT_NAMES.echo:&#xD;                    this.audioEngine.echoEffect.set(value);&#xD;                    break;&#xD;                case this.audioEngine.EFFECT_NAMES.reverb:&#xD;                    this.audioEngine.reverbEffect.set(value);&#xD;                    break;&#xD;                case this.audioEngine.EFFECT_NAMES.fuzz:&#xD;                    this.audioEngine.fuzzEffect.set(value);&#xD;                    break;&#xD;                case this.audioEngine.EFFECT_NAMES.robot:&#xD;                    this.audioEngine.roboticEffect.set(value);&#xD;                    break;&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear all audio effects&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clearEffects&apos;,&#xD;        value: function clearEffects() {&#xD;            this.panEffect.set(0);&#xD;            this.pitchEffect.set(0, this.activeSoundPlayers);&#xD;            this.effectsNode.gain.value = 1;&#xD;&#xD;            this.audioEngine.echoEffect.set(0);&#xD;            this.audioEngine.reverbEffect.set(0);&#xD;            this.audioEngine.fuzzEffect.set(0);&#xD;            this.audioEngine.roboticEffect.set(0);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the volume for sounds played by this AudioPlayer&#xD;         * @param {number} value - the volume in range 0-100&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setVolume&apos;,&#xD;        value: function setVolume(value) {&#xD;            this.effectsNode.gain.value = value / 100;&#xD;        }&#xD;    }]);&#xD;&#xD;    return AudioPlayer;&#xD;}();&#xD;&#xD;/**&#xD; * There is a single instance of the AudioEngine. It handles global audio properties and effects,&#xD; * loads all the audio buffers for sounds belonging to sprites, and creates a single instrument player&#xD; * and a drum player, used by all play note and play drum blocks.&#xD; */&#xD;&#xD;&#xD;var AudioEngine = function () {&#xD;    function AudioEngine() {&#xD;        _classCallCheck(this, AudioEngine);&#xD;&#xD;        // create the global audio effects&#xD;        this.roboticEffect = new RoboticEffect();&#xD;        this.fuzzEffect = new FuzzEffect();&#xD;        this.echoEffect = new EchoEffect();&#xD;        this.reverbEffect = new ReverbEffect();&#xD;&#xD;        // chain the global effects to the output&#xD;        this.input = new Tone.Gain();&#xD;        this.input.chain(this.roboticEffect, this.fuzzEffect, this.echoEffect, this.reverbEffect, Tone.Master);&#xD;&#xD;        // global tempo in bpm (beats per minute)&#xD;        this.currentTempo = 60;&#xD;&#xD;        // instrument player for play note blocks&#xD;        this.instrumentPlayer = new InstrumentPlayer(this.input);&#xD;        this.numInstruments = this.instrumentPlayer.instrumentNames.length;&#xD;&#xD;        // drum player for play drum blocks&#xD;        this.drumPlayer = new DrumPlayer(this.input);&#xD;        this.numDrums = this.drumPlayer.drumSounds.length;&#xD;&#xD;        // a map of md5s to audio buffers, holding sounds for all sprites&#xD;        this.audioBuffers = {};&#xD;&#xD;        // microphone, for measuring loudness, with a level meter analyzer&#xD;        this.mic = null;&#xD;        this.micMeter = null;&#xD;    }&#xD;&#xD;    /**&#xD;     * Names of the audio effects.&#xD;     * @enum {string}&#xD;     */&#xD;&#xD;&#xD;    _createClass(AudioEngine, [{&#xD;        key: &apos;decodeSound&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Decode a sound, decompressing it into audio samples.&#xD;         * Store a reference to it the sound in the audioBuffers dictionary, indexed by md5&#xD;         * @param  {object} sound - an object containing audio data and metadata for a sound&#xD;         * @property {Buffer} data - sound data loaded from scratch-storage.&#xD;         * @property {string} format - format type, either empty or adpcm.&#xD;         * @property {string} md5 - the MD5 and extension of the sound.&#xD;         * @returns {?Promise} - a promise which will resolve after the audio buffer is stored, or null on error.&#xD;         */&#xD;        value: function decodeSound(sound) {&#xD;&#xD;            var loaderPromise = null;&#xD;&#xD;            switch (sound.format) {&#xD;                case &apos;&apos;:&#xD;                    loaderPromise = Tone.context.decodeAudioData(sound.data.buffer);&#xD;                    break;&#xD;                case &apos;adpcm&apos;:&#xD;                    loaderPromise = new ADPCMSoundDecoder().decode(sound.data.buffer);&#xD;                    break;&#xD;                default:&#xD;                    return log.warn(&apos;unknown sound format&apos;, sound.format);&#xD;            }&#xD;&#xD;            var storedContext = this;&#xD;            return loaderPromise.then(function (decodedAudio) {&#xD;                storedContext.audioBuffers[sound.md5] = new Tone.Buffer(decodedAudio);&#xD;            }, function (error) {&#xD;                log.warn(&apos;audio data could not be decoded&apos;, error);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * An older version of the AudioEngine had this function to load all sounds&#xD;         * This is a stub to provide a warning when it is called&#xD;         * @todo remove this&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;loadSounds&apos;,&#xD;        value: function loadSounds() {&#xD;            log.warn(&apos;The loadSounds function is no longer available. Please use Scratch Storage.&apos;);&#xD;        }&#xD;&#xD;        /**&#xD;         * Play a note for a duration on an instrument with a volume&#xD;         * @param  {number} note - a MIDI note number&#xD;         * @param  {number} beats - a duration in beats&#xD;         * @param  {number} inst - an instrument number (0-indexed)&#xD;         * @param  {number} vol - a volume level (0-100%)&#xD;         * @return {Promise} a Promise that resolves after the duration has elapsed&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;playNoteForBeatsWithInstAndVol&apos;,&#xD;        value: function playNoteForBeatsWithInstAndVol(note, beats, inst, vol) {&#xD;            var sec = this.beatsToSec(beats);&#xD;            this.instrumentPlayer.playNoteForSecWithInstAndVol(note, sec, inst, vol);&#xD;            return this.waitForBeats(beats);&#xD;        }&#xD;&#xD;        /**&#xD;         * Convert a number of beats to a number of seconds, using the current tempo&#xD;         * @param  {number} beats number of beats to convert to secs&#xD;         * @return {number} seconds number of seconds `beats` will last&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;beatsToSec&apos;,&#xD;        value: function beatsToSec(beats) {&#xD;            return 60 / this.currentTempo * beats;&#xD;        }&#xD;&#xD;        /**&#xD;         * Wait for some number of beats&#xD;         * @param  {number} beats number of beats to wait for&#xD;         * @return {Promise} a Promise that resolves after the duration has elapsed&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;waitForBeats&apos;,&#xD;        value: function waitForBeats(beats) {&#xD;            var storedContext = this;&#xD;            return new Promise(function (resolve) {&#xD;                setTimeout(function () {&#xD;                    resolve();&#xD;                }, storedContext.beatsToSec(beats) * 1000);&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the global tempo in bpm (beats per minute)&#xD;         * @param {number} value - the new tempo to set&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setTempo&apos;,&#xD;        value: function setTempo(value) {&#xD;            this.currentTempo = value;&#xD;        }&#xD;&#xD;        /**&#xD;         * Change the tempo by some number of bpm (beats per minute)&#xD;         * @param  {number} value - the number of bpm to change the tempo by&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;changeTempo&apos;,&#xD;        value: function changeTempo(value) {&#xD;            this.setTempo(this.currentTempo + value);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the current loudness of sound received by the microphone.&#xD;         * Sound is measured in RMS and smoothed.&#xD;         * @return {number} loudness scaled 0 to 100&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getLoudness&apos;,&#xD;        value: function getLoudness() {&#xD;            if (!this.mic) {&#xD;                this.mic = new Tone.UserMedia();&#xD;                this.micMeter = new Tone.Meter(&apos;level&apos;, 0.5);&#xD;                this.mic.open();&#xD;                this.mic.connect(this.micMeter);&#xD;            }&#xD;            if (this.mic &amp;&amp; this.mic.state === &apos;started&apos;) {&#xD;                return this.micMeter.value * 100;&#xD;            }&#xD;            return -1;&#xD;        }&#xD;&#xD;        /**&#xD;         * Create an AudioPlayer. Each sprite or clone has an AudioPlayer.&#xD;         * It includes a reference to the AudioEngine so it can use global&#xD;         * functionality such as playing notes.&#xD;         * @return {AudioPlayer} new AudioPlayer instance&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createPlayer&apos;,&#xD;        value: function createPlayer() {&#xD;            return new AudioPlayer(this);&#xD;        }&#xD;    }, {&#xD;        key: &apos;EFFECT_NAMES&apos;,&#xD;        get: function get() {&#xD;            return {&#xD;                pitch: &apos;pitch&apos;,&#xD;                pan: &apos;pan&apos;,&#xD;                echo: &apos;echo&apos;,&#xD;                reverb: &apos;reverb&apos;,&#xD;                fuzz: &apos;fuzz&apos;,&#xD;                robot: &apos;robot&apos;&#xD;            };&#xD;        }&#xD;    }]);&#xD;&#xD;    return AudioEngine;&#xD;}();&#xD;&#xD;module.exports = AudioEngine;&#xD;&#xD;/***/ }),&#xD;/* 20 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function M() { this._events = {}; }&#xD;M.prototype = {&#xD;  on: function(ev, cb) {&#xD;    this._events || (this._events = {});&#xD;    var e = this._events;&#xD;    (e[ev] || (e[ev] = [])).push(cb);&#xD;    return this;&#xD;  },&#xD;  removeListener: function(ev, cb) {&#xD;    var e = this._events[ev] || [], i;&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }&#xD;    }&#xD;  },&#xD;  removeAllListeners: function(ev) {&#xD;    if(!ev) { this._events = {}; }&#xD;    else { this._events[ev] &amp;&amp; (this._events[ev] = []); }&#xD;  },&#xD;  listeners: function(ev) {&#xD;    return (this._events ? this._events[ev] || [] : []);&#xD;  },&#xD;  emit: function(ev) {&#xD;    this._events || (this._events = {});&#xD;    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      e[i].apply(this, args);&#xD;    }&#xD;    return this;&#xD;  },&#xD;  when: function(ev, cb) {&#xD;    return this.once(ev, cb, true);&#xD;  },&#xD;  once: function(ev, cb, when) {&#xD;    if(!cb) return this;&#xD;    function c() {&#xD;      if(!when) this.removeListener(ev, c);&#xD;      if(cb.apply(this, arguments) &amp;&amp; when) this.removeListener(ev, c);&#xD;    }&#xD;    c.cb = cb;&#xD;    this.on(ev, c);&#xD;    return this;&#xD;  }&#xD;};&#xD;M.mixin = function(dest) {&#xD;  var o = M.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;module.exports = M;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 21 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var require;(function(e){if(true){module.exports=e()}else if(typeof define==="function"&amp;&amp;define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.midimessage=e()}})(function(){var e,t,s;return function o(e,t,s){function a(n,i){if(!t[n]){if(!e[n]){var l=typeof require=="function"&amp;&amp;require;if(!i&amp;&amp;l)return l(n,!0);if(r)return require(n,!0);var h=new Error("Cannot find module &apos;"+n+"&apos;");throw h.code="MODULE_NOT_FOUND",h}var c=t[n]={exports:{}};e[n][0].call(c.exports,function(t){var s=e[n][1][t];return a(s?s:t)},c,c.exports,o,e,t,s)}return t[n].exports}var r=typeof require=="function"&amp;&amp;require;for(var n=0;n&lt;s.length;n++)a(s[n]);return a}({1:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:true});s["default"]=function(e){function t(e){this._event=e;this._data=e.data;this.receivedTime=e.receivedTime;if(this._data&amp;&amp;this._data.length&lt;2){console.warn("Illegal MIDI message of length",this._data.length);return}this._messageCode=e.data[0]&amp;240;this.channel=e.data[0]&amp;15;switch(this._messageCode){case 128:this.messageType="noteoff";this.key=e.data[1]&amp;127;this.velocity=e.data[2]&amp;127;break;case 144:this.messageType="noteon";this.key=e.data[1]&amp;127;this.velocity=e.data[2]&amp;127;break;case 160:this.messageType="keypressure";this.key=e.data[1]&amp;127;this.pressure=e.data[2]&amp;127;break;case 176:this.messageType="controlchange";this.controllerNumber=e.data[1]&amp;127;this.controllerValue=e.data[2]&amp;127;if(this.controllerNumber===120&amp;&amp;this.controllerValue===0){this.channelModeMessage="allsoundoff"}else if(this.controllerNumber===121){this.channelModeMessage="resetallcontrollers"}else if(this.controllerNumber===122){if(this.controllerValue===0){this.channelModeMessage="localcontroloff"}else{this.channelModeMessage="localcontrolon"}}else if(this.controllerNumber===123&amp;&amp;this.controllerValue===0){this.channelModeMessage="allnotesoff"}else if(this.controllerNumber===124&amp;&amp;this.controllerValue===0){this.channelModeMessage="omnimodeoff"}else if(this.controllerNumber===125&amp;&amp;this.controllerValue===0){this.channelModeMessage="omnimodeon"}else if(this.controllerNumber===126){this.channelModeMessage="monomodeon"}else if(this.controllerNumber===127){this.channelModeMessage="polymodeon"}break;case 192:this.messageType="programchange";this.program=e.data[1];break;case 208:this.messageType="channelpressure";this.pressure=e.data[1]&amp;127;break;case 224:this.messageType="pitchbendchange";var t=e.data[2]&amp;127;var s=e.data[1]&amp;127;this.pitchBend=(t&lt;&lt;8)+s;break}}return new t(e)};t.exports=s["default"]},{}]},{},[1])(1)});&#xD;//# sourceMappingURL=dist/index.js.map&#xD;&#xD;/***/ }),&#xD;/* 22 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// default filter&#xD;var Transform = __webpack_require__(1);&#xD;&#xD;var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };&#xD;&#xD;function Filter() {&#xD;  this.enabled = true;&#xD;  this.defaultResult = true;&#xD;  this.clear();&#xD;}&#xD;&#xD;Transform.mixin(Filter);&#xD;&#xD;// allow all matching, with level &gt;= given level&#xD;Filter.prototype.allow = function(name, level) {&#xD;  this._white.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;// deny all matching, with level &lt;= given level&#xD;Filter.prototype.deny = function(name, level) {&#xD;  this._black.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;Filter.prototype.clear = function() {&#xD;  this._white = [];&#xD;  this._black = [];&#xD;  return this;&#xD;};&#xD;&#xD;function test(rule, name) {&#xD;  // use .test for RegExps&#xD;  return (rule.n.test ? rule.n.test(name) : rule.n == name);&#xD;};&#xD;&#xD;Filter.prototype.test = function(name, level) {&#xD;  var i, len = Math.max(this._white.length, this._black.length);&#xD;  for(i = 0; i &lt; len; i++) {&#xD;    if(this._white[i] &amp;&amp; test(this._white[i], name) &amp;&amp; levelMap[level] &gt;= this._white[i].l) {&#xD;      return true;&#xD;    }&#xD;    if(this._black[i] &amp;&amp; test(this._black[i], name) &amp;&amp; levelMap[level] &lt;= this._black[i].l) {&#xD;      return false;&#xD;    }&#xD;  }&#xD;  return this.defaultResult;&#xD;};&#xD;&#xD;Filter.prototype.write = function(name, level, args) {&#xD;  if(!this.enabled || this.test(name, level)) {&#xD;    return this.emit(&apos;item&apos;, name, level, args);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Filter;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 23 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1),&#xD;    Filter = __webpack_require__(22);&#xD;&#xD;var log = new Transform(),&#xD;    slice = Array.prototype.slice;&#xD;&#xD;exports = module.exports = function create(name) {&#xD;  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };&#xD;  o.debug = function() { log.write(name, &apos;debug&apos;, slice.call(arguments)); return o; };&#xD;  o.info  = function() { log.write(name, &apos;info&apos;,  slice.call(arguments)); return o; };&#xD;  o.warn  = function() { log.write(name, &apos;warn&apos;,  slice.call(arguments)); return o; };&#xD;  o.error = function() { log.write(name, &apos;error&apos;, slice.call(arguments)); return o; };&#xD;  o.log   = o.debug; // for interface compliance with Node and browser consoles&#xD;  o.suggest = exports.suggest;&#xD;  o.format = log.format;&#xD;  return o;&#xD;};&#xD;&#xD;// filled in separately&#xD;exports.defaultBackend = exports.defaultFormatter = null;&#xD;&#xD;exports.pipe = function(dest) {&#xD;  return log.pipe(dest);&#xD;};&#xD;&#xD;exports.end = exports.unpipe = exports.disable = function(from) {&#xD;  return log.unpipe(from);&#xD;};&#xD;&#xD;exports.Transform = Transform;&#xD;exports.Filter = Filter;&#xD;// this is the default filter that&apos;s applied when .enable() is called normally&#xD;// you can bypass it completely and set up your own pipes&#xD;exports.suggest = new Filter();&#xD;&#xD;exports.enable = function() {&#xD;  if(exports.defaultFormatter) {&#xD;    return log.pipe(exports.suggest) // filter&#xD;              .pipe(exports.defaultFormatter) // formatter&#xD;              .pipe(exports.defaultBackend); // backend&#xD;  }&#xD;  return log.pipe(exports.suggest) // filter&#xD;            .pipe(exports.defaultBackend); // formatter&#xD;};&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 24 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1),&#xD;    cache = [ ];&#xD;&#xD;var logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  cache.push([ name, level, args ]);&#xD;};&#xD;&#xD;// utility functions&#xD;logger.get = function() { return cache; };&#xD;logger.empty = function() { cache = []; };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 25 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1);&#xD;&#xD;var newlines = /\n+$/,&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var i = args.length-1;&#xD;  if (typeof console === &apos;undefined&apos; || !console.log) {&#xD;    return;&#xD;  }&#xD;  if(console.log.apply) {&#xD;    return console.log.apply(console, [name, level].concat(args));&#xD;  } else if(JSON &amp;&amp; JSON.stringify) {&#xD;    // console.log.apply is undefined in IE8 and IE9&#xD;    // for IE8/9: make console.log at least a bit less awful&#xD;    if(args[i] &amp;&amp; typeof args[i] == &apos;string&apos;) {&#xD;      args[i] = args[i].replace(newlines, &apos;&apos;);&#xD;    }&#xD;    try {&#xD;      for(i = 0; i &lt; args.length; i++) {&#xD;        args[i] = JSON.stringify(args[i]);&#xD;      }&#xD;    } catch(e) {}&#xD;    console.log(args.join(&apos; &apos;));&#xD;  }&#xD;};&#xD;&#xD;logger.formatters = [&apos;color&apos;, &apos;minilog&apos;];&#xD;logger.color = __webpack_require__(26);&#xD;logger.minilog = __webpack_require__(27);&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 26 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1),&#xD;    color = __webpack_require__(4);&#xD;&#xD;var colors = { debug: [&apos;cyan&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(console[level] &amp;&amp; console[level].apply) {&#xD;    fn = console[level];&#xD;    fn.apply(console, [ &apos;%c&apos;+name+&apos; %c&apos;+level, color(&apos;gray&apos;), color.apply(color, colors[level])].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 27 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1),&#xD;    color = __webpack_require__(4),&#xD;    colors = { debug: [&apos;gray&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(level != &apos;debug&apos; &amp;&amp; console[level]) {&#xD;    fn = console[level];&#xD;  }&#xD;&#xD;  var subset = [], i = 0;&#xD;  if(level != &apos;info&apos;) {&#xD;    for(; i &lt; args.length; i++) {&#xD;      if(typeof args[i] != &apos;string&apos;) break;&#xD;    }&#xD;    fn.apply(console, [ &apos;%c&apos;+name +&apos; &apos;+ args.slice(0, i).join(&apos; &apos;), color.apply(color, colors[level]) ].concat(args.slice(i)));&#xD;  } else {&#xD;    fn.apply(console, [ &apos;%c&apos;+name, color.apply(color, colors[level]) ].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 28 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Minilog = __webpack_require__(23);&#xD;&#xD;var oldEnable = Minilog.enable,&#xD;    oldDisable = Minilog.disable,&#xD;    isChrome = (typeof navigator != &apos;undefined&apos; &amp;&amp; /chrome/i.test(navigator.userAgent)),&#xD;    console = __webpack_require__(25);&#xD;&#xD;// Use a more capable logging backend if on Chrome&#xD;Minilog.defaultBackend = (isChrome ? console.minilog : console);&#xD;&#xD;// apply enable inputs from localStorage and from the URL&#xD;if(typeof window != &apos;undefined&apos;) {&#xD;  try {&#xD;    Minilog.enable(JSON.parse(window.localStorage[&apos;minilogSettings&apos;]));&#xD;  } catch(e) {}&#xD;  if(window.location &amp;&amp; window.location.search) {&#xD;    var match = RegExp(&apos;[?&amp;]minilog=([^&amp;]*)&apos;).exec(window.location.search);&#xD;    match &amp;&amp; Minilog.enable(decodeURIComponent(match[1]));&#xD;  }&#xD;}&#xD;&#xD;// Make enable also add to localStorage&#xD;Minilog.enable = function() {&#xD;  oldEnable.call(Minilog, true);&#xD;  try { window.localStorage[&apos;minilogSettings&apos;] = JSON.stringify(true); } catch(e) {}&#xD;  return this;&#xD;};&#xD;&#xD;Minilog.disable = function() {&#xD;  oldDisable.call(Minilog);&#xD;  try { delete window.localStorage.minilogSettings; } catch(e) {}&#xD;  return this;&#xD;};&#xD;&#xD;exports = module.exports = Minilog;&#xD;&#xD;exports.backends = {&#xD;  array: __webpack_require__(24),&#xD;  browser: Minilog.defaultBackend,&#xD;  localStorage: __webpack_require__(30),&#xD;  jQuery: __webpack_require__(29)&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 29 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1);&#xD;&#xD;var cid = new Date().valueOf().toString(36);&#xD;&#xD;function AjaxLogger(options) {&#xD;  this.url = options.url || &apos;&apos;;&#xD;  this.cache = [];&#xD;  this.timer = null;&#xD;  this.interval = options.interval || 30*1000;&#xD;  this.enabled = true;&#xD;  this.jQuery = window.jQuery;&#xD;  this.extras = {};&#xD;}&#xD;&#xD;Transform.mixin(AjaxLogger);&#xD;&#xD;AjaxLogger.prototype.write = function(name, level, args) {&#xD;  if(!this.timer) { this.init(); }&#xD;  this.cache.push([name, level].concat(args));&#xD;};&#xD;&#xD;AjaxLogger.prototype.init = function() {&#xD;  if(!this.enabled || !this.jQuery) return;&#xD;  var self = this;&#xD;  this.timer = setTimeout(function() {&#xD;    var i, logs = [], ajaxData, url = self.url;&#xD;    if(self.cache.length == 0) return self.init();&#xD;    // Test each log line and only log the ones that are valid (e.g. don&apos;t have circular references).&#xD;    // Slight performance hit but benefit is we log all valid lines.&#xD;    for(i = 0; i &lt; self.cache.length; i++) {&#xD;      try {&#xD;        JSON.stringify(self.cache[i]);&#xD;        logs.push(self.cache[i]);&#xD;      } catch(e) { }&#xD;    }&#xD;    if(self.jQuery.isEmptyObject(self.extras)) {&#xD;        ajaxData = JSON.stringify({ logs: logs });&#xD;        url = self.url + &apos;?client_id=&apos; + cid;&#xD;    } else {&#xD;        ajaxData = JSON.stringify(self.jQuery.extend({logs: logs}, self.extras));&#xD;    }&#xD;&#xD;    self.jQuery.ajax(url, {&#xD;      type: &apos;POST&apos;,&#xD;      cache: false,&#xD;      processData: false,&#xD;      data: ajaxData,&#xD;      contentType: &apos;application/json&apos;,&#xD;      timeout: 10000&#xD;    }).success(function(data, status, jqxhr) {&#xD;      if(data.interval) {&#xD;        self.interval = Math.max(1000, data.interval);&#xD;      }&#xD;    }).error(function() {&#xD;      self.interval = 30000;&#xD;    }).always(function() {&#xD;      self.init();&#xD;    });&#xD;    self.cache = [];&#xD;  }, this.interval);&#xD;};&#xD;&#xD;AjaxLogger.prototype.end = function() {};&#xD;&#xD;// wait until jQuery is defined. Useful if you don&apos;t control the load order.&#xD;AjaxLogger.jQueryWait = function(onDone) {&#xD;  if(typeof window !== &apos;undefined&apos; &amp;&amp; (window.jQuery || window.$)) {&#xD;    return onDone(window.jQuery || window.$);&#xD;  } else if (typeof window !== &apos;undefined&apos;) {&#xD;    setTimeout(function() { AjaxLogger.jQueryWait(onDone); }, 200);&#xD;  }&#xD;};&#xD;&#xD;module.exports = AjaxLogger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 30 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(1),&#xD;    cache = false;&#xD;&#xD;var logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  if(typeof window == &apos;undefined&apos; || typeof JSON == &apos;undefined&apos; || !JSON.stringify || !JSON.parse) return;&#xD;  try {&#xD;    if(!cache) { cache = (window.localStorage.minilog ? JSON.parse(window.localStorage.minilog) : []); }&#xD;    cache.push([ new Date().toString(), name, level, args ]);&#xD;    window.localStorage.minilog = JSON.stringify(cache);&#xD;  } catch(e) {}&#xD;};&#xD;&#xD;module.exports = logger;&#xD;&#xD;/***/ }),&#xD;/* 31 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;Object.defineProperty(__webpack_exports__, "__esModule", { value: true });&#xD;/* harmony export (immutable) */ __webpack_exports__["regex"] = regex;&#xD;/* harmony export (immutable) */ __webpack_exports__["parse"] = parse;&#xD;/* harmony export (immutable) */ __webpack_exports__["build"] = build;&#xD;/* harmony export (immutable) */ __webpack_exports__["midi"] = midi;&#xD;/* harmony export (immutable) */ __webpack_exports__["freq"] = freq;&#xD;/* harmony export (immutable) */ __webpack_exports__["letter"] = letter;&#xD;/* harmony export (immutable) */ __webpack_exports__["acc"] = acc;&#xD;/* harmony export (immutable) */ __webpack_exports__["pc"] = pc;&#xD;/* harmony export (immutable) */ __webpack_exports__["step"] = step;&#xD;/* harmony export (immutable) */ __webpack_exports__["alt"] = alt;&#xD;/* harmony export (immutable) */ __webpack_exports__["chroma"] = chroma;&#xD;/* harmony export (immutable) */ __webpack_exports__["oct"] = oct;&#xD;&#xD;&#xD;// util&#xD;function fillStr (s, num) { return Array(num + 1).join(s) }&#xD;function isNum (x) { return typeof x === &apos;number&apos; }&#xD;function isStr (x) { return typeof x === &apos;string&apos; }&#xD;function isDef (x) { return typeof x !== &apos;undefined&apos; }&#xD;function midiToFreq (midi, tuning) {&#xD;  return Math.pow(2, (midi - 69) / 12) * (tuning || 440)&#xD;}&#xD;&#xD;var REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)\s*$/&#xD;/**&#xD; * A regex for matching note strings in scientific notation.&#xD; *&#xD; * @name regex&#xD; * @function&#xD; * @return {RegExp} the regexp used to parse the note name&#xD; *&#xD; * The note string should have the form `letter[accidentals][octave][element]`&#xD; * where:&#xD; *&#xD; * - letter: (Required) is a letter from A to G either upper or lower case&#xD; * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).&#xD; * They can NOT be mixed.&#xD; * - octave: (Optional) a positive or negative integer&#xD; * - element: (Optional) additionally anything after the duration is considered to&#xD; * be the element name (for example: &apos;C2 dorian&apos;)&#xD; *&#xD; * The executed regex contains (by array index):&#xD; *&#xD; * - 0: the complete string&#xD; * - 1: the note letter&#xD; * - 2: the optional accidentals&#xD; * - 3: the optional octave&#xD; * - 4: the rest of the string (trimmed)&#xD; *&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.regex.exec(&apos;c#4&apos;)&#xD; * // =&gt; [&apos;c#4&apos;, &apos;c&apos;, &apos;#&apos;, &apos;4&apos;, &apos;&apos;]&#xD; * parser.regex.exec(&apos;c#4 major&apos;)&#xD; * // =&gt; [&apos;c#4major&apos;, &apos;c&apos;, &apos;#&apos;, &apos;4&apos;, &apos;major&apos;]&#xD; * parser.regex().exec(&apos;CMaj7&apos;)&#xD; * // =&gt; [&apos;CMaj7&apos;, &apos;C&apos;, &apos;&apos;, &apos;&apos;, &apos;Maj7&apos;]&#xD; */&#xD;function regex () { return REGEX }&#xD;&#xD;var SEMITONES = [0, 2, 4, 5, 7, 9, 11]&#xD;/**&#xD; * Parse a note name in scientific notation an return it&apos;s components,&#xD; * and some numeric properties including midi number and frequency.&#xD; *&#xD; * @name parse&#xD; * @function&#xD; * @param {String} note - the note string to be parsed&#xD; * @param {Boolean} isTonic - true the strings it&apos;s supposed to contain a note number&#xD; * and some category (for example an scale: &apos;C# major&apos;). It&apos;s false by default,&#xD; * but when true, en extra tonicOf property is returned with the category (&apos;major&apos;)&#xD; * @param {Float} tunning - The frequency of A4 note to calculate frequencies.&#xD; * By default it 440.&#xD; * @return {Object} the parsed note name or null if not a valid note&#xD; *&#xD; * The parsed note name object will ALWAYS contains:&#xD; * - letter: the uppercase letter of the note&#xD; * - acc: the accidentals of the note (only sharps or flats)&#xD; * - pc: the pitch class (letter + acc)&#xD; * - step: s a numeric representation of the letter. It&apos;s an integer from 0 to 6&#xD; * where 0 = C, 1 = D ... 6 = B&#xD; * - alt: a numeric representation of the accidentals. 0 means no alteration,&#xD; * positive numbers are for sharps and negative for flats&#xD; * - chroma: a numeric representation of the pitch class. It&apos;s like midi for&#xD; * pitch classes. 0 = C, 1 = C#, 2 = D ... 11 = B. Can be used to find enharmonics&#xD; * since, for example, chroma of &apos;Cb&apos; and &apos;B&apos; are both 11&#xD; *&#xD; * If the note has octave, the parser object will contain:&#xD; * - oct: the octave number (as integer)&#xD; * - midi: the midi number&#xD; * - freq: the frequency (using tuning parameter as base)&#xD; *&#xD; * If the parameter `isTonic` is set to true, the parsed object will contain:&#xD; * - tonicOf: the rest of the string that follows note name (left and right trimmed)&#xD; *&#xD; * @example&#xD; * var parse = require(&apos;note-parser&apos;).parse&#xD; * parse(&apos;Cb4&apos;)&#xD; * // =&gt; { letter: &apos;C&apos;, acc: &apos;b&apos;, pc: &apos;Cb&apos;, step: 0, alt: -1, chroma: -1,&#xD; *         oct: 4, midi: 59, freq: 246.94165062806206 }&#xD; * // if no octave, no midi, no freq&#xD; * parse(&apos;fx&apos;)&#xD; * // =&gt; { letter: &apos;F&apos;, acc: &apos;##&apos;, pc: &apos;F##&apos;, step: 3, alt: 2, chroma: 7 })&#xD; */&#xD;function parse (str, isTonic, tuning) {&#xD;  if (typeof str !== &apos;string&apos;) return null&#xD;  var m = REGEX.exec(str)&#xD;  if (!m || (!isTonic &amp;&amp; m[4])) return null&#xD;&#xD;  var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, &apos;##&apos;) }&#xD;  p.pc = p.letter + p.acc&#xD;  p.step = (p.letter.charCodeAt(0) + 3) % 7&#xD;  p.alt = p.acc[0] === &apos;b&apos; ? -p.acc.length : p.acc.length&#xD;  var pos = SEMITONES[p.step] + p.alt&#xD;  p.chroma = pos &lt; 0 ? 12 + pos : pos % 12&#xD;  if (m[3]) { // has octave&#xD;    p.oct = +m[3]&#xD;    p.midi = pos + 12 * (p.oct + 1)&#xD;    p.freq = midiToFreq(p.midi, tuning)&#xD;  }&#xD;  if (isTonic) p.tonicOf = m[4]&#xD;  return p&#xD;}&#xD;&#xD;var LETTERS = &apos;CDEFGAB&apos;&#xD;function accStr (n) { return !isNum(n) ? &apos;&apos; : n &lt; 0 ? fillStr(&apos;b&apos;, -n) : fillStr(&apos;#&apos;, n) }&#xD;function octStr (n) { return !isNum(n) ? &apos;&apos; : &apos;&apos; + n }&#xD;&#xD;/**&#xD; * Create a string from a parsed object or `step, alteration, octave` parameters&#xD; * @param {Object} obj - the parsed data object&#xD; * @return {String} a note string or null if not valid parameters&#xD; * @since 1.2&#xD; * @example&#xD; * parser.build(parser.parse(&apos;cb2&apos;)) // =&gt; &apos;Cb2&apos;&#xD; *&#xD; * @example&#xD; * // it accepts (step, alteration, octave) parameters:&#xD; * parser.build(3) // =&gt; &apos;F&apos;&#xD; * parser.build(3, -1) // =&gt; &apos;Fb&apos;&#xD; * parser.build(3, -1, 4) // =&gt; &apos;Fb4&apos;&#xD; */&#xD;function build (s, a, o) {&#xD;  if (s === null || typeof s === &apos;undefined&apos;) return null&#xD;  if (s.step) return build(s.step, s.alt, s.oct)&#xD;  if (s &lt; 0 || s &gt; 6) return null&#xD;  return LETTERS.charAt(s) + accStr(a) + octStr(o)&#xD;}&#xD;&#xD;/**&#xD; * Get midi of a note&#xD; *&#xD; * @name midi&#xD; * @function&#xD; * @param {String|Integer} note - the note name or midi number&#xD; * @return {Integer} the midi number of the note or null if not a valid note&#xD; * or the note does NOT contains octave&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.midi(&apos;A4&apos;) // =&gt; 69&#xD; * parser.midi(&apos;A&apos;) // =&gt; null&#xD; * @example&#xD; * // midi numbers are bypassed (even as strings)&#xD; * parser.midi(60) // =&gt; 60&#xD; * parser.midi(&apos;60&apos;) // =&gt; 60&#xD; */&#xD;function midi (note) {&#xD;  if ((isNum(note) || isStr(note)) &amp;&amp; note &gt;= 0 &amp;&amp; note &lt; 128) return +note&#xD;  var p = parse(note)&#xD;  return p &amp;&amp; isDef(p.midi) ? p.midi : null&#xD;}&#xD;&#xD;/**&#xD; * Get freq of a note in hertzs (in a well tempered 440Hz A4)&#xD; *&#xD; * @name freq&#xD; * @function&#xD; * @param {String} note - the note name or note midi number&#xD; * @param {String} tuning - (Optional) the A4 frequency (440 by default)&#xD; * @return {Float} the freq of the number if hertzs or null if not valid note&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.freq(&apos;A4&apos;) // =&gt; 440&#xD; * parser.freq(&apos;A&apos;) // =&gt; null&#xD; * @example&#xD; * // can change tuning (440 by default)&#xD; * parser.freq(&apos;A4&apos;, 444) // =&gt; 444&#xD; * parser.freq(&apos;A3&apos;, 444) // =&gt; 222&#xD; * @example&#xD; * // it accepts midi numbers (as numbers and as strings)&#xD; * parser.freq(69) // =&gt; 440&#xD; * parser.freq(&apos;69&apos;, 442) // =&gt; 442&#xD; */&#xD;function freq (note, tuning) {&#xD;  var m = midi(note)&#xD;  return m === null ? null : midiToFreq(m, tuning)&#xD;}&#xD;&#xD;function letter (src) { return (parse(src) || {}).letter }&#xD;function acc (src) { return (parse(src) || {}).acc }&#xD;function pc (src) { return (parse(src) || {}).pc }&#xD;function step (src) { return (parse(src) || {}).step }&#xD;function alt (src) { return (parse(src) || {}).alt }&#xD;function chroma (src) { return (parse(src) || {}).chroma }&#xD;function oct (src) { return (parse(src) || {}).oct }&#xD;&#xD;&#xD;/***/ }),&#xD;/* 32 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;&#xD;module.exports = function (player) {&#xD;  /**&#xD;   * Adds a listener of an event&#xD;   * @chainable&#xD;   * @param {String} event - the event name&#xD;   * @param {Function} callback - the event handler&#xD;   * @return {SamplePlayer} the player&#xD;   * @example&#xD;   * player.on(&apos;start&apos;, function(time, note) {&#xD;   *   console.log(time, note)&#xD;   * })&#xD;   */&#xD;  player.on = function (event, cb) {&#xD;    if (arguments.length === 1 &amp;&amp; typeof event === &apos;function&apos;) return player.on(&apos;event&apos;, event)&#xD;    var prop = &apos;on&apos; + event&#xD;    var old = player[prop]&#xD;    player[prop] = old ? chain(old, cb) : cb&#xD;    return player&#xD;  }&#xD;  return player&#xD;}&#xD;&#xD;function chain (fn1, fn2) {&#xD;  return function (a, b, c, d) { fn1(a, b, c, d); fn2(a, b, c, d) }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 33 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var player = __webpack_require__(36)&#xD;var events = __webpack_require__(32)&#xD;var notes = __webpack_require__(35)&#xD;var scheduler = __webpack_require__(37)&#xD;var midi = __webpack_require__(34)&#xD;&#xD;function SamplePlayer (ac, source, options) {&#xD;  return midi(scheduler(notes(events(player(ac, source, options)))))&#xD;}&#xD;&#xD;if (typeof module === &apos;object&apos; &amp;&amp; module.exports) module.exports = SamplePlayer&#xD;if (typeof window !== &apos;undefined&apos;) window.SamplePlayer = SamplePlayer&#xD;&#xD;&#xD;/***/ }),&#xD;/* 34 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var midimessage = __webpack_require__(21)&#xD;&#xD;module.exports = function (player) {&#xD;  /**&#xD;  * Connect a player to a midi input&#xD;  *&#xD;  * The options accepts:&#xD;  *&#xD;  * - channel: the channel to listen to. Listen to all channels by default.&#xD;  *&#xD;  * @param {MIDIInput} input&#xD;  * @param {Object} options - (Optional)&#xD;  * @return {SamplePlayer} the player&#xD;  * @example&#xD;  * var piano = player(...)&#xD;  * window.navigator.requestMIDIAccess().then(function (midiAccess) {&#xD;  *   midiAccess.inputs.forEach(function (midiInput) {&#xD;  *     piano.listenToMidi(midiInput)&#xD;  *   })&#xD;  * })&#xD;  */&#xD;  player.listenToMidi = function (input, options) {&#xD;    var started = {}&#xD;    var opts = options || {}&#xD;    var gain = opts.gain || function (vel) { return vel / 127 }&#xD;&#xD;    input.onmidimessage = function (msg) {&#xD;      var mm = msg.messageType ? msg : midimessage(msg)&#xD;      if (mm.messageType === &apos;noteon&apos; &amp;&amp; mm.velocity === 0) {&#xD;        mm.messageType = &apos;noteoff&apos;&#xD;      }&#xD;      if (opts.channel &amp;&amp; mm.channel !== opts.channel) return&#xD;&#xD;      switch (mm.messageType) {&#xD;        case &apos;noteon&apos;:&#xD;          started[mm.key] = player.play(mm.key, 0, { gain: gain(mm.velocity) })&#xD;          break&#xD;        case &apos;noteoff&apos;:&#xD;          if (started[mm.key]) {&#xD;            started[mm.key].stop()&#xD;            delete started[mm.key]&#xD;          }&#xD;          break&#xD;      }&#xD;    }&#xD;    return player&#xD;  }&#xD;  return player&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 35 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var note = __webpack_require__(38)&#xD;var isMidi = function (n) { return n !== null &amp;&amp; n !== [] &amp;&amp; n &gt;= 0 &amp;&amp; n &lt; 129 }&#xD;var toMidi = function (n) { return isMidi(n) ? +n : note.midi(n) }&#xD;&#xD;// Adds note name to midi conversion&#xD;module.exports = function (player) {&#xD;  if (player.buffers) {&#xD;    var map = player.opts.map&#xD;    var toKey = typeof map === &apos;function&apos; ? map : toMidi&#xD;    var mapper = function (name) {&#xD;      return name ? toKey(name) || name : null&#xD;    }&#xD;&#xD;    player.buffers = mapBuffers(player.buffers, mapper)&#xD;    var start = player.start&#xD;    player.start = function (name, when, options) {&#xD;      var key = mapper(name)&#xD;      var dec = key % 1&#xD;      if (dec) {&#xD;        key = Math.floor(key)&#xD;        options = Object.assign(options || {}, { cents: Math.floor(dec * 100) })&#xD;      }&#xD;      return start(key, when, options)&#xD;    }&#xD;  }&#xD;  return player&#xD;}&#xD;&#xD;function mapBuffers (buffers, toKey) {&#xD;  return Object.keys(buffers).reduce(function (mapped, name) {&#xD;    mapped[toKey(name)] = buffers[name]&#xD;    return mapped&#xD;  }, {})&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 36 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* global AudioBuffer */&#xD;&#xD;&#xD;var ADSR = __webpack_require__(14)&#xD;&#xD;var EMPTY = {}&#xD;var DEFAULTS = {&#xD;  gain: 1,&#xD;  attack: 0.01,&#xD;  decay: 0.1,&#xD;  sustain: 0.9,&#xD;  release: 0.3,&#xD;  loop: false,&#xD;  cents: 0,&#xD;  loopStart: 0,&#xD;  loopEnd: 0&#xD;}&#xD;&#xD;/**&#xD; * Create a sample player.&#xD; *&#xD; * @param {AudioContext} ac - the audio context&#xD; * @param {ArrayBuffer|Object&lt;String,ArrayBuffer&gt;} source&#xD; * @param {Onject} options - (Optional) an options object&#xD; * @return {player} the player&#xD; * @example&#xD; * var SamplePlayer = require(&apos;sample-player&apos;)&#xD; * var ac = new AudioContext()&#xD; * var snare = SamplePlayer(ac, &lt;AudioBuffer&gt;)&#xD; * snare.play()&#xD; */&#xD;function SamplePlayer (ac, source, options) {&#xD;  var connected = false&#xD;  var nextId = 0&#xD;  var tracked = {}&#xD;  var out = ac.createGain()&#xD;  out.gain.value = 1&#xD;&#xD;  var opts = Object.assign({}, DEFAULTS, options)&#xD;&#xD;  /**&#xD;   * @namespace&#xD;   */&#xD;  var player = { context: ac, out: out, opts: opts }&#xD;  if (source instanceof AudioBuffer) player.buffer = source&#xD;  else player.buffers = source&#xD;&#xD;  /**&#xD;   * Start a sample buffer.&#xD;   *&#xD;   * The returned object has a function `stop(when)` to stop the sound.&#xD;   *&#xD;   * @param {String} name - the name of the buffer. If the source of the&#xD;   * SamplePlayer is one sample buffer, this parameter is not required&#xD;   * @param {Float} when - (Optional) when to start (current time if by default)&#xD;   * @param {Object} options - additional sample playing options&#xD;   * @return {AudioNode} an audio node with a `stop` function&#xD;   * @example&#xD;   * var sample = player(ac, &lt;AudioBuffer&gt;).connect(ac.destination)&#xD;   * sample.start()&#xD;   * sample.start(5, { gain: 0.7 }) // name not required since is only one AudioBuffer&#xD;   * @example&#xD;   * var drums = player(ac, { snare: &lt;AudioBuffer&gt;, kick: &lt;AudioBuffer&gt;, ... }).connect(ac.destination)&#xD;   * drums.start(&apos;snare&apos;)&#xD;   * drums.start(&apos;snare&apos;, 0, { gain: 0.3 })&#xD;   */&#xD;  player.start = function (name, when, options) {&#xD;    // if only one buffer, reorder arguments&#xD;    if (player.buffer &amp;&amp; name !== null) return player.start(null, name, when)&#xD;&#xD;    var buffer = name ? player.buffers[name] : player.buffer&#xD;    if (!buffer) {&#xD;      console.warn(&apos;Buffer &apos; + name + &apos; not found.&apos;)&#xD;      return&#xD;    } else if (!connected) {&#xD;      console.warn(&apos;SamplePlayer not connected to any node.&apos;)&#xD;      return&#xD;    }&#xD;&#xD;    var opts = options || EMPTY&#xD;    when = Math.max(ac.currentTime, when || 0)&#xD;    player.emit(&apos;start&apos;, when, name, opts)&#xD;    var node = createNode(name, buffer, opts)&#xD;    node.id = track(name, node)&#xD;    node.env.start(when)&#xD;    node.source.start(when)&#xD;    player.emit(&apos;started&apos;, when, node.id, node)&#xD;    if (opts.duration) node.stop(when + opts.duration)&#xD;    return node&#xD;  }&#xD;&#xD;  // NOTE: start will be override so we can&apos;t copy the function reference&#xD;  // this is obviously not a good design, so this code will be gone soon.&#xD;  /**&#xD;   * An alias for `player.start`&#xD;   * @see player.start&#xD;   * @since 0.3.0&#xD;   */&#xD;  player.play = function (name, when, options) {&#xD;    return player.start(name, when, options)&#xD;  }&#xD;&#xD;  /**&#xD;   * Stop some or all samples&#xD;   *&#xD;   * @param {Float} when - (Optional) an absolute time in seconds (or currentTime&#xD;   * if not specified)&#xD;   * @param {Array} nodes - (Optional) an array of nodes or nodes ids to stop&#xD;   * @return {Array} an array of ids of the stoped samples&#xD;   *&#xD;   * @example&#xD;   * var longSound = player(ac, &lt;AudioBuffer&gt;).connect(ac.destination)&#xD;   * longSound.start(ac.currentTime)&#xD;   * longSound.start(ac.currentTime + 1)&#xD;   * longSound.start(ac.currentTime + 2)&#xD;   * longSound.stop(ac.currentTime + 3) // stop the three sounds&#xD;   */&#xD;  player.stop = function (when, ids) {&#xD;    var node&#xD;    ids = ids || Object.keys(tracked)&#xD;    return ids.map(function (id) {&#xD;      node = tracked[id]&#xD;      if (!node) return null&#xD;      node.stop(when)&#xD;      return node.id&#xD;    })&#xD;  }&#xD;  /**&#xD;   * Connect the player to a destination node&#xD;   *&#xD;   * @param {AudioNode} destination - the destination node&#xD;   * @return {AudioPlayer} the player&#xD;   * @chainable&#xD;   * @example&#xD;   * var sample = player(ac, &lt;AudioBuffer&gt;).connect(ac.destination)&#xD;   */&#xD;  player.connect = function (dest) {&#xD;    connected = true&#xD;    out.connect(dest)&#xD;    return player&#xD;  }&#xD;&#xD;  player.emit = function (event, when, obj, opts) {&#xD;    if (player.onevent) player.onevent(event, when, obj, opts)&#xD;    var fn = player[&apos;on&apos; + event]&#xD;    if (fn) fn(when, obj, opts)&#xD;  }&#xD;&#xD;  return player&#xD;&#xD;  // =============== PRIVATE FUNCTIONS ============== //&#xD;&#xD;  function track (name, node) {&#xD;    node.id = nextId++&#xD;    tracked[node.id] = node&#xD;    node.source.onended = function () {&#xD;      var now = ac.currentTime&#xD;      node.source.disconnect()&#xD;      node.env.disconnect()&#xD;      node.disconnect()&#xD;      player.emit(&apos;ended&apos;, now, node.id, node)&#xD;    }&#xD;    return node.id&#xD;  }&#xD;&#xD;  function createNode (name, buffer, options) {&#xD;    var node = ac.createGain()&#xD;    node.gain.value = 0 // the envelope will control the gain&#xD;    node.connect(out)&#xD;&#xD;    node.env = envelope(ac, options, opts)&#xD;    node.env.connect(node.gain)&#xD;&#xD;    node.source = ac.createBufferSource()&#xD;    node.source.buffer = buffer&#xD;    node.source.connect(node)&#xD;    node.source.loop = options.loop || opts.loop&#xD;    node.source.playbackRate.value = centsToRate(options.cents || opts.cents)&#xD;    node.source.loopStart = options.loopStart || opts.loopStart&#xD;    node.source.loopEnd = options.loopEnd || opts.loopEnd&#xD;    node.stop = function (when) {&#xD;      var time = when || ac.currentTime&#xD;      player.emit(&apos;stop&apos;, time, name)&#xD;      var stopAt = node.env.stop(time)&#xD;      node.source.stop(stopAt)&#xD;    }&#xD;    return node&#xD;  }&#xD;}&#xD;&#xD;function isNum (x) { return typeof x === &apos;number&apos; }&#xD;var PARAMS = [&apos;attack&apos;, &apos;decay&apos;, &apos;sustain&apos;, &apos;release&apos;]&#xD;function envelope (ac, options, opts) {&#xD;  var env = ADSR(ac)&#xD;  var adsr = options.adsr || opts.adsr&#xD;  PARAMS.forEach(function (name, i) {&#xD;    if (adsr) env[name] = adsr[i]&#xD;    else env[name] = options[name] || opts[name]&#xD;  })&#xD;  env.value.value = isNum(options.gain) ? options.gain&#xD;    : isNum(opts.gain) ? opts.gain : 1&#xD;  return env&#xD;}&#xD;&#xD;/*&#xD; * Get playback rate for a given pitch change (in cents)&#xD; * Basic [math](http://www.birdsoft.demon.co.uk/music/samplert.htm):&#xD; * f2 = f1 * 2^( C / 1200 )&#xD; */&#xD;function centsToRate (cents) { return cents ? Math.pow(2, cents / 1200) : 1 }&#xD;&#xD;module.exports = SamplePlayer&#xD;&#xD;&#xD;/***/ }),&#xD;/* 37 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var isArr = Array.isArray&#xD;var isObj = function (o) { return o &amp;&amp; typeof o === &apos;object&apos; }&#xD;var OPTS = {}&#xD;&#xD;module.exports = function (player) {&#xD;  /**&#xD;   * Schedule a list of events to be played at specific time.&#xD;   *&#xD;   * It supports three formats of events for the events list:&#xD;   *&#xD;   * - An array with [time, note]&#xD;   * - An array with [time, object]&#xD;   * - An object with { time: ?, [name|note|midi|key]: ? }&#xD;   *&#xD;   * @param {Float} time - an absolute time to start (or AudioContext&apos;s&#xD;   * currentTime if provided number is 0)&#xD;   * @param {Array} events - the events list.&#xD;   * @return {Array} an array of ids&#xD;   *&#xD;   * @example&#xD;   * // Event format: [time, note]&#xD;   * var piano = player(ac, ...).connect(ac.destination)&#xD;   * piano.schedule(0, [ [0, &apos;C2&apos;], [0.5, &apos;C3&apos;], [1, &apos;C4&apos;] ])&#xD;   *&#xD;   * @example&#xD;   * // Event format: an object { time: ?, name: ? }&#xD;   * var drums = player(ac, ...).connect(ac.destination)&#xD;   * drums.schedule(0, [&#xD;   *   { name: &apos;kick&apos;, time: 0 },&#xD;   *   { name: &apos;snare&apos;, time: 0.5 },&#xD;   *   { name: &apos;kick&apos;, time: 1 },&#xD;   *   { name: &apos;snare&apos;, time: 1.5 }&#xD;   * ])&#xD;   */&#xD;  player.schedule = function (time, events) {&#xD;    var now = player.context.currentTime&#xD;    var when = time &lt; now ? now : time&#xD;    player.emit(&apos;schedule&apos;, when, events)&#xD;    var t, o, note, opts&#xD;    return events.map(function (event) {&#xD;      if (!event) return null&#xD;      else if (isArr(event)) {&#xD;        t = event[0]; o = event[1]&#xD;      } else {&#xD;        t = event.time; o = event&#xD;      }&#xD;&#xD;      if (isObj(o)) {&#xD;        note = o.name || o.key || o.note || o.midi || null&#xD;        opts = o&#xD;      } else {&#xD;        note = o&#xD;        opts = OPTS&#xD;      }&#xD;&#xD;      return player.start(note, when + (t || 0), opts)&#xD;    })&#xD;  }&#xD;  return player&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 38 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var REGEX = /^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)\s*$/&#xD;/**&#xD; * A regex for matching note strings in scientific notation.&#xD; *&#xD; * @name regex&#xD; * @function&#xD; * @return {RegExp} the regexp used to parse the note name&#xD; *&#xD; * The note string should have the form `letter[accidentals][octave][element]`&#xD; * where:&#xD; *&#xD; * - letter: (Required) is a letter from A to G either upper or lower case&#xD; * - accidentals: (Optional) can be one or more `b` (flats), `#` (sharps) or `x` (double sharps).&#xD; * They can NOT be mixed.&#xD; * - octave: (Optional) a positive or negative integer&#xD; * - element: (Optional) additionally anything after the duration is considered to&#xD; * be the element name (for example: &apos;C2 dorian&apos;)&#xD; *&#xD; * The executed regex contains (by array index):&#xD; *&#xD; * - 0: the complete string&#xD; * - 1: the note letter&#xD; * - 2: the optional accidentals&#xD; * - 3: the optional octave&#xD; * - 4: the rest of the string (trimmed)&#xD; *&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.regex.exec(&apos;c#4&apos;)&#xD; * // =&gt; [&apos;c#4&apos;, &apos;c&apos;, &apos;#&apos;, &apos;4&apos;, &apos;&apos;]&#xD; * parser.regex.exec(&apos;c#4 major&apos;)&#xD; * // =&gt; [&apos;c#4major&apos;, &apos;c&apos;, &apos;#&apos;, &apos;4&apos;, &apos;major&apos;]&#xD; * parser.regex().exec(&apos;CMaj7&apos;)&#xD; * // =&gt; [&apos;CMaj7&apos;, &apos;C&apos;, &apos;&apos;, &apos;&apos;, &apos;Maj7&apos;]&#xD; */&#xD;function regex () { return REGEX }&#xD;&#xD;var SEMITONES = [0, 2, 4, 5, 7, 9, 11]&#xD;/**&#xD; * Parse a note name in scientific notation an return it&apos;s components,&#xD; * and some numeric properties including midi number and frequency.&#xD; *&#xD; * @name parse&#xD; * @function&#xD; * @param {String} note - the note string to be parsed&#xD; * @param {Boolean} isTonic - true if the note is the tonic of something.&#xD; * If true, en extra tonicOf property is returned. It&apos;s false by default.&#xD; * @param {Float} tunning - The frequency of A4 note to calculate frequencies.&#xD; * By default it 440.&#xD; * @return {Object} the parsed note name or null if not a valid note&#xD; *&#xD; * The parsed note name object will ALWAYS contains:&#xD; * - letter: the uppercase letter of the note&#xD; * - acc: the accidentals of the note (only sharps or flats)&#xD; * - pc: the pitch class (letter + acc)&#xD; * - step: s a numeric representation of the letter. It&apos;s an integer from 0 to 6&#xD; * where 0 = C, 1 = D ... 6 = B&#xD; * - alt: a numeric representation of the accidentals. 0 means no alteration,&#xD; * positive numbers are for sharps and negative for flats&#xD; * - chroma: a numeric representation of the pitch class. It&apos;s like midi for&#xD; * pitch classes. 0 = C, 1 = C#, 2 = D ... It can have negative values: -1 = Cb.&#xD; * Can detect pitch class enhramonics.&#xD; *&#xD; * If the note has octave, the parser object will contain:&#xD; * - oct: the octave number (as integer)&#xD; * - midi: the midi number&#xD; * - freq: the frequency (using tuning parameter as base)&#xD; *&#xD; * If the parameter `isTonic` is set to true, the parsed object will contain:&#xD; * - tonicOf: the rest of the string that follows note name (left and right trimmed)&#xD; *&#xD; * @example&#xD; * var parse = require(&apos;note-parser&apos;).parse&#xD; * parse(&apos;Cb4&apos;)&#xD; * // =&gt; { letter: &apos;C&apos;, acc: &apos;b&apos;, pc: &apos;Cb&apos;, step: 0, alt: -1, chroma: -1,&#xD; *         oct: 4, midi: 59, freq: 246.94165062806206 }&#xD; * // if no octave, no midi, no freq&#xD; * parse(&apos;fx&apos;)&#xD; * // =&gt; { letter: &apos;F&apos;, acc: &apos;##&apos;, pc: &apos;F##&apos;, step: 3, alt: 2, chroma: 7 })&#xD; */&#xD;function parse (str, isTonic, tuning) {&#xD;  if (typeof str !== &apos;string&apos;) return null&#xD;  var m = REGEX.exec(str)&#xD;  if (!m || !isTonic &amp;&amp; m[4]) return null&#xD;&#xD;  var p = { letter: m[1].toUpperCase(), acc: m[2].replace(/x/g, &apos;##&apos;) }&#xD;  p.pc = p.letter + p.acc&#xD;  p.step = (p.letter.charCodeAt(0) + 3) % 7&#xD;  p.alt = p.acc[0] === &apos;b&apos; ? -p.acc.length : p.acc.length&#xD;  p.chroma = SEMITONES[p.step] + p.alt&#xD;  if (m[3]) {&#xD;    p.oct = +m[3]&#xD;    p.midi = p.chroma + 12 * (p.oct + 1)&#xD;    p.freq = midiToFreq(p.midi, tuning)&#xD;  }&#xD;  if (isTonic) p.tonicOf = m[4]&#xD;  return p&#xD;}&#xD;&#xD;/**&#xD; * Given a midi number, return its frequency&#xD; * @param {Integer} midi - midi note number&#xD; * @param {Float} tuning - (Optional) the A4 tuning (440Hz by default)&#xD; * @return {Float} frequency in hertzs&#xD; */&#xD;function midiToFreq (midi, tuning) {&#xD;  return Math.pow(2, (midi - 69) / 12) * (tuning || 440)&#xD;}&#xD;&#xD;var parser = { parse: parse, regex: regex, midiToFreq: midiToFreq }&#xD;var FNS = [&apos;letter&apos;, &apos;acc&apos;, &apos;pc&apos;, &apos;step&apos;, &apos;alt&apos;, &apos;chroma&apos;, &apos;oct&apos;, &apos;midi&apos;, &apos;freq&apos;]&#xD;FNS.forEach(function (name) {&#xD;  parser[name] = function (src) {&#xD;    var p = parse(src)&#xD;    return p &amp;&amp; (typeof p[name] !== &apos;undefined&apos;) ? p[name] : null&#xD;  }&#xD;})&#xD;&#xD;module.exports = parser&#xD;&#xD;// extra API docs&#xD;/**&#xD; * Get midi of a note&#xD; *&#xD; * @name midi&#xD; * @function&#xD; * @param {String} note - the note name&#xD; * @return {Integer} the midi number of the note or null if not a valid note&#xD; * or the note does NOT contains octave&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.midi(&apos;A4&apos;) // =&gt; 69&#xD; * parser.midi(&apos;A&apos;) // =&gt; null&#xD; */&#xD;/**&#xD; * Get freq of a note in hertzs (in a well tempered 440Hz A4)&#xD; *&#xD; * @name freq&#xD; * @function&#xD; * @param {String} note - the note name&#xD; * @return {Float} the freq of the number if hertzs or null if not valid note&#xD; * or the note does NOT contains octave&#xD; * @example&#xD; * var parser = require(&apos;note-parser&apos;)&#xD; * parser.freq(&apos;A4&apos;) // =&gt; 440&#xD; * parser.freq(&apos;A&apos;) // =&gt; null&#xD; */&#xD;&#xD;&#xD;/***/ }),&#xD;/* 39 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var load = __webpack_require__(17)&#xD;var player = __webpack_require__(33)&#xD;&#xD;/**&#xD; * Load a soundfont instrument. It returns a promise that resolves to a&#xD; * instrument object.&#xD; *&#xD; * The instrument object returned by the promise has the following properties:&#xD; *&#xD; * - name: the instrument name&#xD; * - play: A function to play notes from the buffer with the signature&#xD; * `play(note, time, duration, options)`&#xD; *&#xD; *&#xD; * The valid options are:&#xD; *&#xD; * - `format`: the soundfont format. &apos;mp3&apos; by default. Can be &apos;ogg&apos;&#xD; * - `soundfont`: the soundfont name. &apos;MusyngKite&apos; by default. Can be &apos;FluidR3_GM&apos;&#xD; * - `nameToUrl` &lt;Function&gt;: a function to convert from instrument names to URL&#xD; * - `destination`: by default Soundfont uses the `audioContext.destination` but you can override it.&#xD; * - `gain`: the gain of the player (1 by default)&#xD; * - `notes`: an array of the notes to decode. It can be an array of strings&#xD; * with note names or an array of numbers with midi note numbers. This is a&#xD; * performance option: since decoding mp3 is a cpu intensive process, you can limit&#xD; * limit the number of notes you want and reduce the time to load the instrument.&#xD; *&#xD; * @param {AudioContext} ac - the audio context&#xD; * @param {String} name - the instrument name. For example: &apos;acoustic_grand_piano&apos;&#xD; * @param {Object} options - (Optional) the same options as Soundfont.loadBuffers&#xD; * @return {Promise}&#xD; *&#xD; * @example&#xD; * var Soundfont = require(&apos;sounfont-player&apos;)&#xD; * Soundfont.instrument(&apos;marimba&apos;).then(function (marimba) {&#xD; *   marimba.play(&apos;C4&apos;)&#xD; * })&#xD; */&#xD;function instrument (ac, name, options) {&#xD;  if (arguments.length === 1) return function (n, o) { return instrument(ac, n, o) }&#xD;  var opts = options || {}&#xD;  var isUrl = opts.isSoundfontURL || isSoundfontURL&#xD;  var toUrl = opts.nameToUrl || nameToUrl&#xD;  var url = isUrl(name) ? name : toUrl(name, opts.soundfont, opts.format)&#xD;&#xD;  return load(ac, url, { only: opts.only || opts.notes }).then(function (buffers) {&#xD;    var p = player(ac, buffers, opts).connect(ac.destination)&#xD;    p.url = url&#xD;    p.name = name&#xD;    return p&#xD;  })&#xD;}&#xD;&#xD;function isSoundfontURL (name) {&#xD;  return /\.js(\?.*)?$/i.test(name)&#xD;}&#xD;&#xD;/**&#xD; * Given an instrument name returns a URL to to the Benjamin Gleitzman&apos;s&#xD; * package of [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)&#xD; *&#xD; * @param {String} name - instrument name&#xD; * @param {String} soundfont - (Optional) the soundfont name. One of &apos;FluidR3_GM&apos;&#xD; * or &apos;MusyngKite&apos; (&apos;MusyngKite&apos; by default)&#xD; * @param {String} format - (Optional) Can be &apos;mp3&apos; or &apos;ogg&apos; (mp3 by default)&#xD; * @returns {String} the Soundfont file url&#xD; * @example&#xD; * var Soundfont = require(&apos;soundfont-player&apos;)&#xD; * Soundfont.nameToUrl(&apos;marimba&apos;, &apos;mp3&apos;)&#xD; */&#xD;function nameToUrl (name, sf, format) {&#xD;  format = format === &apos;ogg&apos; ? format : &apos;mp3&apos;&#xD;  sf = sf === &apos;FluidR3_GM&apos; ? sf : &apos;MusyngKite&apos;&#xD;  return &apos;https://gleitz.github.io/midi-js-soundfonts/&apos; + sf + &apos;/&apos; + name + &apos;-&apos; + format + &apos;.js&apos;&#xD;}&#xD;&#xD;// In the 1.0.0 release it will be:&#xD;// var Soundfont = {}&#xD;var Soundfont = __webpack_require__(40)&#xD;Soundfont.instrument = instrument&#xD;Soundfont.nameToUrl = nameToUrl&#xD;&#xD;if (typeof module === &apos;object&apos; &amp;&amp; module.exports) module.exports = Soundfont&#xD;if (typeof window !== &apos;undefined&apos;) window.Soundfont = Soundfont&#xD;&#xD;&#xD;/***/ }),&#xD;/* 40 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var parser = __webpack_require__(31)&#xD;&#xD;/**&#xD; * Create a Soundfont object&#xD; *&#xD; * @param {AudioContext} context - the [audio context](https://developer.mozilla.org/en/docs/Web/API/AudioContext)&#xD; * @param {Function} nameToUrl - (Optional) a function that maps the sound font name to the url&#xD; * @return {Soundfont} a soundfont object&#xD; */&#xD;function Soundfont (ctx, nameToUrl) {&#xD;  console.warn(&apos;new Soundfont() is deprected&apos;)&#xD;  console.log(&apos;Please use Soundfont.instrument() instead of new Soundfont().instrument()&apos;)&#xD;  if (!(this instanceof Soundfont)) return new Soundfont(ctx)&#xD;&#xD;  this.nameToUrl = nameToUrl || Soundfont.nameToUrl&#xD;  this.ctx = ctx&#xD;  this.instruments = {}&#xD;  this.promises = []&#xD;}&#xD;&#xD;Soundfont.prototype.onready = function (callback) {&#xD;  console.warn(&apos;deprecated API&apos;)&#xD;  console.log(&apos;Please use Promise.all(Soundfont.instrument(), Soundfont.instrument()).then() instead of new Soundfont().onready()&apos;)&#xD;  Promise.all(this.promises).then(callback)&#xD;}&#xD;&#xD;Soundfont.prototype.instrument = function (name, options) {&#xD;  console.warn(&apos;new Soundfont().instrument() is deprecated.&apos;)&#xD;  console.log(&apos;Please use Soundfont.instrument() instead.&apos;)&#xD;  var ctx = this.ctx&#xD;  name = name || &apos;default&apos;&#xD;  if (name in this.instruments) return this.instruments[name]&#xD;  var inst = {name: name, play: oscillatorPlayer(ctx, options)}&#xD;  this.instruments[name] = inst&#xD;  if (name !== &apos;default&apos;) {&#xD;    var promise = Soundfont.instrument(ctx, name, options).then(function (instrument) {&#xD;      inst.play = instrument.play&#xD;      return inst&#xD;    })&#xD;    this.promises.push(promise)&#xD;    inst.onready = function (cb) {&#xD;      console.warn(&apos;onready is deprecated. Use Soundfont.instrument().then()&apos;)&#xD;      promise.then(cb)&#xD;    }&#xD;  } else {&#xD;    inst.onready = function (cb) {&#xD;      console.warn(&apos;onready is deprecated. Use Soundfont.instrument().then()&apos;)&#xD;      cb()&#xD;    }&#xD;  }&#xD;  return inst&#xD;}&#xD;&#xD;/*&#xD; * Load the buffers of a given instrument name. It returns a promise that resolves&#xD; * to a hash with midi note numbers as keys, and audio buffers as values.&#xD; *&#xD; * @param {AudioContext} ac - the audio context&#xD; * @param {String} name - the instrument name (it accepts an url if starts with "http")&#xD; * @param {Object} options - (Optional) options object&#xD; * @return {Promise} a promise that resolves to a Hash of { midiNoteNum: &lt;AudioBuffer&gt; }&#xD; *&#xD; * The options object accepts the following keys:&#xD; *&#xD; * - nameToUrl {Function}: a function to convert from instrument names to urls.&#xD; * By default it uses Benjamin Gleitzman&apos;s package of&#xD; * [pre-rendered sound fonts](https://github.com/gleitz/midi-js-soundfonts)&#xD; * - notes {Array}: the list of note names to be decoded (all by default)&#xD; *&#xD; * @example&#xD; * var Soundfont = require(&apos;soundfont-player&apos;)&#xD; * Soundfont.loadBuffers(ctx, &apos;acoustic_grand_piano&apos;).then(function(buffers) {&#xD; *  buffers[60] // =&gt; An &lt;AudioBuffer&gt; corresponding to note C4&#xD; * })&#xD; */&#xD;function loadBuffers (ac, name, options) {&#xD;  console.warn(&apos;Soundfont.loadBuffers is deprecate.&apos;)&#xD;  console.log(&apos;Use Soundfont.instrument(..) and get buffers properties from the result.&apos;)&#xD;  return Soundfont.instrument(ac, name, options).then(function (inst) {&#xD;    return inst.buffers&#xD;  })&#xD;}&#xD;Soundfont.loadBuffers = loadBuffers&#xD;&#xD;/**&#xD; * Returns a function that plays an oscillator&#xD; *&#xD; * @param {AudioContext} ac - the audio context&#xD; * @param {Hash} defaultOptions - (Optional) a hash of options:&#xD; * - vcoType: the oscillator type (default: &apos;sine&apos;)&#xD; * - gain: the output gain value (default: 0.4)&#xD;  * - destination: the player destination (default: ac.destination)&#xD; */&#xD;function oscillatorPlayer (ctx, defaultOptions) {&#xD;  defaultOptions = defaultOptions || {}&#xD;  return function (note, time, duration, options) {&#xD;    console.warn(&apos;The oscillator player is deprecated.&apos;)&#xD;    console.log(&apos;Starting with version 0.9.0 you will have to wait until the soundfont is loaded to play sounds.&apos;)&#xD;    var midi = note &gt; 0 &amp;&amp; note &lt; 129 ? +note : parser.midi(note)&#xD;    var freq = midi ? parser.midiToFreq(midi, 440) : null&#xD;    if (!freq) return&#xD;&#xD;    duration = duration || 0.2&#xD;&#xD;    options = options || {}&#xD;    var destination = options.destination || defaultOptions.destination || ctx.destination&#xD;    var vcoType = options.vcoType || defaultOptions.vcoType || &apos;sine&apos;&#xD;    var gain = options.gain || defaultOptions.gain || 0.4&#xD;&#xD;    var vco = ctx.createOscillator()&#xD;    vco.type = vcoType&#xD;    vco.frequency.value = freq&#xD;&#xD;    /* VCA */&#xD;    var vca = ctx.createGain()&#xD;    vca.gain.value = gain&#xD;&#xD;    /* Connections */&#xD;    vco.connect(vca)&#xD;    vca.connect(destination)&#xD;&#xD;    vco.start(time)&#xD;    if (duration &gt; 0) vco.stop(time + duration)&#xD;    return vco&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Given a note name, return the note midi number&#xD; *&#xD; * @name noteToMidi&#xD; * @function&#xD; * @param {String} noteName&#xD; * @return {Integer} the note midi number or null if not a valid note name&#xD; */&#xD;Soundfont.noteToMidi = parser.midi&#xD;&#xD;module.exports = Soundfont&#xD;&#xD;&#xD;/***/ })&#xD;/******/ ]);&#xD;//# sourceMappingURL=dist.js.map&#xD;&#xD;/***/ }),&#xD;/* 195 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {/**&#xD; * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined&#xD; * in FIPS 180-2&#xD; * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.&#xD; * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&#xD; *&#xD; */&#xD;&#xD;var inherits = __webpack_require__(5)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var K = [&#xD;  0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,&#xD;  0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,&#xD;  0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,&#xD;  0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,&#xD;  0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,&#xD;  0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,&#xD;  0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,&#xD;  0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,&#xD;  0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,&#xD;  0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,&#xD;  0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,&#xD;  0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,&#xD;  0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,&#xD;  0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,&#xD;  0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,&#xD;  0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2&#xD;]&#xD;&#xD;var W = new Array(64)&#xD;&#xD;function Sha256 () {&#xD;  this.init()&#xD;&#xD;  this._w = W // new Array(64)&#xD;&#xD;  Hash.call(this, 64, 56)&#xD;}&#xD;&#xD;inherits(Sha256, Hash)&#xD;&#xD;Sha256.prototype.init = function () {&#xD;  this._a = 0x6a09e667&#xD;  this._b = 0xbb67ae85&#xD;  this._c = 0x3c6ef372&#xD;  this._d = 0xa54ff53a&#xD;  this._e = 0x510e527f&#xD;  this._f = 0x9b05688c&#xD;  this._g = 0x1f83d9ab&#xD;  this._h = 0x5be0cd19&#xD;&#xD;  return this&#xD;}&#xD;&#xD;function ch (x, y, z) {&#xD;  return z ^ (x &amp; (y ^ z))&#xD;}&#xD;&#xD;function maj (x, y, z) {&#xD;  return (x &amp; y) | (z &amp; (x | y))&#xD;}&#xD;&#xD;function sigma0 (x) {&#xD;  return (x &gt;&gt;&gt; 2 | x &lt;&lt; 30) ^ (x &gt;&gt;&gt; 13 | x &lt;&lt; 19) ^ (x &gt;&gt;&gt; 22 | x &lt;&lt; 10)&#xD;}&#xD;&#xD;function sigma1 (x) {&#xD;  return (x &gt;&gt;&gt; 6 | x &lt;&lt; 26) ^ (x &gt;&gt;&gt; 11 | x &lt;&lt; 21) ^ (x &gt;&gt;&gt; 25 | x &lt;&lt; 7)&#xD;}&#xD;&#xD;function gamma0 (x) {&#xD;  return (x &gt;&gt;&gt; 7 | x &lt;&lt; 25) ^ (x &gt;&gt;&gt; 18 | x &lt;&lt; 14) ^ (x &gt;&gt;&gt; 3)&#xD;}&#xD;&#xD;function gamma1 (x) {&#xD;  return (x &gt;&gt;&gt; 17 | x &lt;&lt; 15) ^ (x &gt;&gt;&gt; 19 | x &lt;&lt; 13) ^ (x &gt;&gt;&gt; 10)&#xD;}&#xD;&#xD;Sha256.prototype._update = function (M) {&#xD;  var W = this._w&#xD;&#xD;  var a = this._a | 0&#xD;  var b = this._b | 0&#xD;  var c = this._c | 0&#xD;  var d = this._d | 0&#xD;  var e = this._e | 0&#xD;  var f = this._f | 0&#xD;  var g = this._g | 0&#xD;  var h = this._h | 0&#xD;&#xD;  for (var i = 0; i &lt; 16; ++i) W[i] = M.readInt32BE(i * 4)&#xD;  for (; i &lt; 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0&#xD;&#xD;  for (var j = 0; j &lt; 64; ++j) {&#xD;    var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0&#xD;    var T2 = (sigma0(a) + maj(a, b, c)) | 0&#xD;&#xD;    h = g&#xD;    g = f&#xD;    f = e&#xD;    e = (d + T1) | 0&#xD;    d = c&#xD;    c = b&#xD;    b = a&#xD;    a = (T1 + T2) | 0&#xD;  }&#xD;&#xD;  this._a = (a + this._a) | 0&#xD;  this._b = (b + this._b) | 0&#xD;  this._c = (c + this._c) | 0&#xD;  this._d = (d + this._d) | 0&#xD;  this._e = (e + this._e) | 0&#xD;  this._f = (f + this._f) | 0&#xD;  this._g = (g + this._g) | 0&#xD;  this._h = (h + this._h) | 0&#xD;}&#xD;&#xD;Sha256.prototype._hash = function () {&#xD;  var H = new Buffer(32)&#xD;&#xD;  H.writeInt32BE(this._a, 0)&#xD;  H.writeInt32BE(this._b, 4)&#xD;  H.writeInt32BE(this._c, 8)&#xD;  H.writeInt32BE(this._d, 12)&#xD;  H.writeInt32BE(this._e, 16)&#xD;  H.writeInt32BE(this._f, 20)&#xD;  H.writeInt32BE(this._g, 24)&#xD;  H.writeInt32BE(this._h, 28)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha256&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 196 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var inherits = __webpack_require__(5)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var K = [&#xD;  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,&#xD;  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,&#xD;  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,&#xD;  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,&#xD;  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,&#xD;  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,&#xD;  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,&#xD;  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,&#xD;  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,&#xD;  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,&#xD;  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,&#xD;  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,&#xD;  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,&#xD;  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,&#xD;  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,&#xD;  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,&#xD;  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,&#xD;  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,&#xD;  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,&#xD;  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,&#xD;  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,&#xD;  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,&#xD;  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,&#xD;  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,&#xD;  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,&#xD;  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,&#xD;  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,&#xD;  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,&#xD;  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,&#xD;  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,&#xD;  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,&#xD;  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,&#xD;  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,&#xD;  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,&#xD;  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,&#xD;  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,&#xD;  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,&#xD;  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,&#xD;  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,&#xD;  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817&#xD;]&#xD;&#xD;var W = new Array(160)&#xD;&#xD;function Sha512 () {&#xD;  this.init()&#xD;  this._w = W&#xD;&#xD;  Hash.call(this, 128, 112)&#xD;}&#xD;&#xD;inherits(Sha512, Hash)&#xD;&#xD;Sha512.prototype.init = function () {&#xD;  this._ah = 0x6a09e667&#xD;  this._bh = 0xbb67ae85&#xD;  this._ch = 0x3c6ef372&#xD;  this._dh = 0xa54ff53a&#xD;  this._eh = 0x510e527f&#xD;  this._fh = 0x9b05688c&#xD;  this._gh = 0x1f83d9ab&#xD;  this._hh = 0x5be0cd19&#xD;&#xD;  this._al = 0xf3bcc908&#xD;  this._bl = 0x84caa73b&#xD;  this._cl = 0xfe94f82b&#xD;  this._dl = 0x5f1d36f1&#xD;  this._el = 0xade682d1&#xD;  this._fl = 0x2b3e6c1f&#xD;  this._gl = 0xfb41bd6b&#xD;  this._hl = 0x137e2179&#xD;&#xD;  return this&#xD;}&#xD;&#xD;function Ch (x, y, z) {&#xD;  return z ^ (x &amp; (y ^ z))&#xD;}&#xD;&#xD;function maj (x, y, z) {&#xD;  return (x &amp; y) | (z &amp; (x | y))&#xD;}&#xD;&#xD;function sigma0 (x, xl) {&#xD;  return (x &gt;&gt;&gt; 28 | xl &lt;&lt; 4) ^ (xl &gt;&gt;&gt; 2 | x &lt;&lt; 30) ^ (xl &gt;&gt;&gt; 7 | x &lt;&lt; 25)&#xD;}&#xD;&#xD;function sigma1 (x, xl) {&#xD;  return (x &gt;&gt;&gt; 14 | xl &lt;&lt; 18) ^ (x &gt;&gt;&gt; 18 | xl &lt;&lt; 14) ^ (xl &gt;&gt;&gt; 9 | x &lt;&lt; 23)&#xD;}&#xD;&#xD;function Gamma0 (x, xl) {&#xD;  return (x &gt;&gt;&gt; 1 | xl &lt;&lt; 31) ^ (x &gt;&gt;&gt; 8 | xl &lt;&lt; 24) ^ (x &gt;&gt;&gt; 7)&#xD;}&#xD;&#xD;function Gamma0l (x, xl) {&#xD;  return (x &gt;&gt;&gt; 1 | xl &lt;&lt; 31) ^ (x &gt;&gt;&gt; 8 | xl &lt;&lt; 24) ^ (x &gt;&gt;&gt; 7 | xl &lt;&lt; 25)&#xD;}&#xD;&#xD;function Gamma1 (x, xl) {&#xD;  return (x &gt;&gt;&gt; 19 | xl &lt;&lt; 13) ^ (xl &gt;&gt;&gt; 29 | x &lt;&lt; 3) ^ (x &gt;&gt;&gt; 6)&#xD;}&#xD;&#xD;function Gamma1l (x, xl) {&#xD;  return (x &gt;&gt;&gt; 19 | xl &lt;&lt; 13) ^ (xl &gt;&gt;&gt; 29 | x &lt;&lt; 3) ^ (x &gt;&gt;&gt; 6 | xl &lt;&lt; 26)&#xD;}&#xD;&#xD;function getCarry (a, b) {&#xD;  return (a &gt;&gt;&gt; 0) &lt; (b &gt;&gt;&gt; 0) ? 1 : 0&#xD;}&#xD;&#xD;Sha512.prototype._update = function (M) {&#xD;  var W = this._w&#xD;&#xD;  var ah = this._ah | 0&#xD;  var bh = this._bh | 0&#xD;  var ch = this._ch | 0&#xD;  var dh = this._dh | 0&#xD;  var eh = this._eh | 0&#xD;  var fh = this._fh | 0&#xD;  var gh = this._gh | 0&#xD;  var hh = this._hh | 0&#xD;&#xD;  var al = this._al | 0&#xD;  var bl = this._bl | 0&#xD;  var cl = this._cl | 0&#xD;  var dl = this._dl | 0&#xD;  var el = this._el | 0&#xD;  var fl = this._fl | 0&#xD;  var gl = this._gl | 0&#xD;  var hl = this._hl | 0&#xD;&#xD;  for (var i = 0; i &lt; 32; i += 2) {&#xD;    W[i] = M.readInt32BE(i * 4)&#xD;    W[i + 1] = M.readInt32BE(i * 4 + 4)&#xD;  }&#xD;  for (; i &lt; 160; i += 2) {&#xD;    var xh = W[i - 15 * 2]&#xD;    var xl = W[i - 15 * 2 + 1]&#xD;    var gamma0 = Gamma0(xh, xl)&#xD;    var gamma0l = Gamma0l(xl, xh)&#xD;&#xD;    xh = W[i - 2 * 2]&#xD;    xl = W[i - 2 * 2 + 1]&#xD;    var gamma1 = Gamma1(xh, xl)&#xD;    var gamma1l = Gamma1l(xl, xh)&#xD;&#xD;    // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]&#xD;    var Wi7h = W[i - 7 * 2]&#xD;    var Wi7l = W[i - 7 * 2 + 1]&#xD;&#xD;    var Wi16h = W[i - 16 * 2]&#xD;    var Wi16l = W[i - 16 * 2 + 1]&#xD;&#xD;    var Wil = (gamma0l + Wi7l) | 0&#xD;    var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0&#xD;    Wil = (Wil + gamma1l) | 0&#xD;    Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0&#xD;    Wil = (Wil + Wi16l) | 0&#xD;    Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0&#xD;&#xD;    W[i] = Wih&#xD;    W[i + 1] = Wil&#xD;  }&#xD;&#xD;  for (var j = 0; j &lt; 160; j += 2) {&#xD;    Wih = W[j]&#xD;    Wil = W[j + 1]&#xD;&#xD;    var majh = maj(ah, bh, ch)&#xD;    var majl = maj(al, bl, cl)&#xD;&#xD;    var sigma0h = sigma0(ah, al)&#xD;    var sigma0l = sigma0(al, ah)&#xD;    var sigma1h = sigma1(eh, el)&#xD;    var sigma1l = sigma1(el, eh)&#xD;&#xD;    // t1 = h + sigma1 + ch + K[j] + W[j]&#xD;    var Kih = K[j]&#xD;    var Kil = K[j + 1]&#xD;&#xD;    var chh = Ch(eh, fh, gh)&#xD;    var chl = Ch(el, fl, gl)&#xD;&#xD;    var t1l = (hl + sigma1l) | 0&#xD;    var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0&#xD;    t1l = (t1l + chl) | 0&#xD;    t1h = (t1h + chh + getCarry(t1l, chl)) | 0&#xD;    t1l = (t1l + Kil) | 0&#xD;    t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0&#xD;    t1l = (t1l + Wil) | 0&#xD;    t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0&#xD;&#xD;    // t2 = sigma0 + maj&#xD;    var t2l = (sigma0l + majl) | 0&#xD;    var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0&#xD;&#xD;    hh = gh&#xD;    hl = gl&#xD;    gh = fh&#xD;    gl = fl&#xD;    fh = eh&#xD;    fl = el&#xD;    el = (dl + t1l) | 0&#xD;    eh = (dh + t1h + getCarry(el, dl)) | 0&#xD;    dh = ch&#xD;    dl = cl&#xD;    ch = bh&#xD;    cl = bl&#xD;    bh = ah&#xD;    bl = al&#xD;    al = (t1l + t2l) | 0&#xD;    ah = (t1h + t2h + getCarry(al, t1l)) | 0&#xD;  }&#xD;&#xD;  this._al = (this._al + al) | 0&#xD;  this._bl = (this._bl + bl) | 0&#xD;  this._cl = (this._cl + cl) | 0&#xD;  this._dl = (this._dl + dl) | 0&#xD;  this._el = (this._el + el) | 0&#xD;  this._fl = (this._fl + fl) | 0&#xD;  this._gl = (this._gl + gl) | 0&#xD;  this._hl = (this._hl + hl) | 0&#xD;&#xD;  this._ah = (this._ah + ah + getCarry(this._al, al)) | 0&#xD;  this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0&#xD;  this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0&#xD;  this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0&#xD;  this._eh = (this._eh + eh + getCarry(this._el, el)) | 0&#xD;  this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0&#xD;  this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0&#xD;  this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0&#xD;}&#xD;&#xD;Sha512.prototype._hash = function () {&#xD;  var H = new Buffer(64)&#xD;&#xD;  function writeInt64BE (h, l, offset) {&#xD;    H.writeInt32BE(h, offset)&#xD;    H.writeInt32BE(l, offset + 4)&#xD;  }&#xD;&#xD;  writeInt64BE(this._ah, this._al, 0)&#xD;  writeInt64BE(this._bh, this._bl, 8)&#xD;  writeInt64BE(this._ch, this._cl, 16)&#xD;  writeInt64BE(this._dh, this._dl, 24)&#xD;  writeInt64BE(this._eh, this._el, 32)&#xD;  writeInt64BE(this._fh, this._fl, 40)&#xD;  writeInt64BE(this._gh, this._gl, 48)&#xD;  writeInt64BE(this._hh, this._hl, 56)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha512&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 197 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {var ClientRequest = __webpack_require__(515)&#xD;var extend = __webpack_require__(202)&#xD;var statusCodes = __webpack_require__(271)&#xD;var url = __webpack_require__(200)&#xD;&#xD;var http = exports&#xD;&#xD;http.request = function (opts, cb) {&#xD;	if (typeof opts === &apos;string&apos;)&#xD;		opts = url.parse(opts)&#xD;	else&#xD;		opts = extend(opts)&#xD;&#xD;	// Normally, the page is loaded from http or https, so not specifying a protocol&#xD;	// will result in a (valid) protocol-relative url. However, this won&apos;t work if&#xD;	// the protocol is something else, like &apos;file:&apos;&#xD;	var defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? &apos;http:&apos; : &apos;&apos;&#xD;&#xD;	var protocol = opts.protocol || defaultProtocol&#xD;	var host = opts.hostname || opts.host&#xD;	var port = opts.port&#xD;	var path = opts.path || &apos;/&apos;&#xD;&#xD;	// Necessary for IPv6 addresses&#xD;	if (host &amp;&amp; host.indexOf(&apos;:&apos;) !== -1)&#xD;		host = &apos;[&apos; + host + &apos;]&apos;&#xD;&#xD;	// This may be a relative url. The browser should always be able to interpret it correctly.&#xD;	opts.url = (host ? (protocol + &apos;//&apos; + host) : &apos;&apos;) + (port ? &apos;:&apos; + port : &apos;&apos;) + path&#xD;	opts.method = (opts.method || &apos;GET&apos;).toUpperCase()&#xD;	opts.headers = opts.headers || {}&#xD;&#xD;	// Also valid opts.auth, opts.mode&#xD;&#xD;	var req = new ClientRequest(opts)&#xD;	if (cb)&#xD;		req.on(&apos;response&apos;, cb)&#xD;	return req&#xD;}&#xD;&#xD;http.get = function get (opts, cb) {&#xD;	var req = http.request(opts, cb)&#xD;	req.end()&#xD;	return req&#xD;}&#xD;&#xD;http.Agent = function () {}&#xD;http.Agent.defaultMaxSockets = 4&#xD;&#xD;http.STATUS_CODES = statusCodes&#xD;&#xD;http.METHODS = [&#xD;	&apos;CHECKOUT&apos;,&#xD;	&apos;CONNECT&apos;,&#xD;	&apos;COPY&apos;,&#xD;	&apos;DELETE&apos;,&#xD;	&apos;GET&apos;,&#xD;	&apos;HEAD&apos;,&#xD;	&apos;LOCK&apos;,&#xD;	&apos;M-SEARCH&apos;,&#xD;	&apos;MERGE&apos;,&#xD;	&apos;MKACTIVITY&apos;,&#xD;	&apos;MKCOL&apos;,&#xD;	&apos;MOVE&apos;,&#xD;	&apos;NOTIFY&apos;,&#xD;	&apos;OPTIONS&apos;,&#xD;	&apos;PATCH&apos;,&#xD;	&apos;POST&apos;,&#xD;	&apos;PROPFIND&apos;,&#xD;	&apos;PROPPATCH&apos;,&#xD;	&apos;PURGE&apos;,&#xD;	&apos;PUT&apos;,&#xD;	&apos;REPORT&apos;,&#xD;	&apos;SEARCH&apos;,&#xD;	&apos;SUBSCRIBE&apos;,&#xD;	&apos;TRACE&apos;,&#xD;	&apos;UNLOCK&apos;,&#xD;	&apos;UNSUBSCRIBE&apos;&#xD;]&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 198 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {exports.fetch = isFunction(global.fetch) &amp;&amp; isFunction(global.ReadableStream)&#xD;&#xD;exports.blobConstructor = false&#xD;try {&#xD;	new Blob([new ArrayBuffer(1)])&#xD;	exports.blobConstructor = true&#xD;} catch (e) {}&#xD;&#xD;// The xhr request to example.com may violate some restrictive CSP configurations,&#xD;// so if we&apos;re running in a browser that supports `fetch`, avoid calling getXHR()&#xD;// and assume support for certain features below.&#xD;var xhr&#xD;function getXHR () {&#xD;	// Cache the xhr value&#xD;	if (xhr !== undefined) return xhr&#xD;&#xD;	if (global.XMLHttpRequest) {&#xD;		xhr = new global.XMLHttpRequest()&#xD;		// If XDomainRequest is available (ie only, where xhr might not work&#xD;		// cross domain), use the page location. Otherwise use example.com&#xD;		// Note: this doesn&apos;t actually make an http request.&#xD;		try {&#xD;			xhr.open(&apos;GET&apos;, global.XDomainRequest ? &apos;/&apos; : &apos;https://example.com&apos;)&#xD;		} catch(e) {&#xD;			xhr = null&#xD;		}&#xD;	} else {&#xD;		// Service workers don&apos;t have XHR&#xD;		xhr = null&#xD;	}&#xD;	return xhr&#xD;}&#xD;&#xD;function checkTypeSupport (type) {&#xD;	var xhr = getXHR()&#xD;	if (!xhr) return false&#xD;	try {&#xD;		xhr.responseType = type&#xD;		return xhr.responseType === type&#xD;	} catch (e) {}&#xD;	return false&#xD;}&#xD;&#xD;// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === &apos;object&apos;.&#xD;// Safari 7.1 appears to have fixed this bug.&#xD;var haveArrayBuffer = typeof global.ArrayBuffer !== &apos;undefined&apos;&#xD;var haveSlice = haveArrayBuffer &amp;&amp; isFunction(global.ArrayBuffer.prototype.slice)&#xD;&#xD;// If fetch is supported, then arraybuffer will be supported too. Skip calling&#xD;// checkTypeSupport(), since that calls getXHR().&#xD;exports.arraybuffer = exports.fetch || (haveArrayBuffer &amp;&amp; checkTypeSupport(&apos;arraybuffer&apos;))&#xD;&#xD;// These next two tests unavoidably show warnings in Chrome. Since fetch will always&#xD;// be used if it&apos;s available, just return false for these to avoid the warnings.&#xD;exports.msstream = !exports.fetch &amp;&amp; haveSlice &amp;&amp; checkTypeSupport(&apos;ms-stream&apos;)&#xD;exports.mozchunkedarraybuffer = !exports.fetch &amp;&amp; haveArrayBuffer &amp;&amp;&#xD;	checkTypeSupport(&apos;moz-chunked-arraybuffer&apos;)&#xD;&#xD;// If fetch is supported, then overrideMimeType will be supported too. Skip calling&#xD;// getXHR().&#xD;exports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)&#xD;&#xD;exports.vbArray = isFunction(global.VBArray)&#xD;&#xD;function isFunction (value) {&#xD;	return typeof value === &apos;function&apos;&#xD;}&#xD;&#xD;xhr = null // Help gc&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 199 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg xmlns=&apos;http://www.w3.org/2000/svg&apos; version=&apos;1&apos; width=&apos;400pt&apos; height=&apos;400pt&apos; viewBox=&apos;0 0 75 75&apos;%3E%3Cg stroke=&apos;%23111&apos; stroke-width=&apos;5&apos;%3E%3Cpath stroke-linejoin=&apos;round&apos; fill=&apos;%23111&apos; d=&apos;M39.389 13.769L22.235 28.606H6v19.093h15.989l17.4 15.051V13.769z&apos;/%3E%3Cpath d=&apos;M48.128 49.03a20.087 20.087 0 0 0-.085-21.453M55.082 20.537a29.86 29.86 0 0 1 5.884 17.84 29.83 29.83 0 0 1-5.788 17.699M61.71 62.611a38.952 38.952 0 0 0 8.418-24.233 38.968 38.968 0 0 0-8.519-24.368&apos; fill=&apos;none&apos; stroke-linecap=&apos;round&apos;/%3E%3C/g%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 200 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;&#xD;&#xD;var punycode = __webpack_require__(391);&#xD;var util = __webpack_require__(557);&#xD;&#xD;exports.parse = urlParse;&#xD;exports.resolve = urlResolve;&#xD;exports.resolveObject = urlResolveObject;&#xD;exports.format = urlFormat;&#xD;&#xD;exports.Url = Url;&#xD;&#xD;function Url() {&#xD;  this.protocol = null;&#xD;  this.slashes = null;&#xD;  this.auth = null;&#xD;  this.host = null;&#xD;  this.port = null;&#xD;  this.hostname = null;&#xD;  this.hash = null;&#xD;  this.search = null;&#xD;  this.query = null;&#xD;  this.pathname = null;&#xD;  this.path = null;&#xD;  this.href = null;&#xD;}&#xD;&#xD;// Reference: RFC 3986, RFC 1808, RFC 2396&#xD;&#xD;// define these here so at least they only have to be&#xD;// compiled once on the first module load.&#xD;var protocolPattern = /^([a-z0-9.+-]+:)/i,&#xD;    portPattern = /:[0-9]*$/,&#xD;&#xD;    // Special case for a simple path URL&#xD;    simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,&#xD;&#xD;    // RFC 2396: characters reserved for delimiting URLs.&#xD;    // We actually just auto-escape these.&#xD;    delims = [&apos;&lt;&apos;, &apos;&gt;&apos;, &apos;"&apos;, &apos;`&apos;, &apos; &apos;, &apos;\r&apos;, &apos;\n&apos;, &apos;\t&apos;],&#xD;&#xD;    // RFC 2396: characters not allowed for various reasons.&#xD;    unwise = [&apos;{&apos;, &apos;}&apos;, &apos;|&apos;, &apos;\\&apos;, &apos;^&apos;, &apos;`&apos;].concat(delims),&#xD;&#xD;    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.&#xD;    autoEscape = [&apos;\&apos;&apos;].concat(unwise),&#xD;    // Characters that are never ever allowed in a hostname.&#xD;    // Note that any invalid chars are also handled, but these&#xD;    // are the ones that are *expected* to be seen, so we fast-path&#xD;    // them.&#xD;    nonHostChars = [&apos;%&apos;, &apos;/&apos;, &apos;?&apos;, &apos;;&apos;, &apos;#&apos;].concat(autoEscape),&#xD;    hostEndingChars = [&apos;/&apos;, &apos;?&apos;, &apos;#&apos;],&#xD;    hostnameMaxLen = 255,&#xD;    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,&#xD;    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,&#xD;    // protocols that can allow "unsafe" and "unwise" chars.&#xD;    unsafeProtocol = {&#xD;      &apos;javascript&apos;: true,&#xD;      &apos;javascript:&apos;: true&#xD;    },&#xD;    // protocols that never have a hostname.&#xD;    hostlessProtocol = {&#xD;      &apos;javascript&apos;: true,&#xD;      &apos;javascript:&apos;: true&#xD;    },&#xD;    // protocols that always contain a // bit.&#xD;    slashedProtocol = {&#xD;      &apos;http&apos;: true,&#xD;      &apos;https&apos;: true,&#xD;      &apos;ftp&apos;: true,&#xD;      &apos;gopher&apos;: true,&#xD;      &apos;file&apos;: true,&#xD;      &apos;http:&apos;: true,&#xD;      &apos;https:&apos;: true,&#xD;      &apos;ftp:&apos;: true,&#xD;      &apos;gopher:&apos;: true,&#xD;      &apos;file:&apos;: true&#xD;    },&#xD;    querystring = __webpack_require__(153);&#xD;&#xD;function urlParse(url, parseQueryString, slashesDenoteHost) {&#xD;  if (url &amp;&amp; util.isObject(url) &amp;&amp; url instanceof Url) return url;&#xD;&#xD;  var u = new Url;&#xD;  u.parse(url, parseQueryString, slashesDenoteHost);&#xD;  return u;&#xD;}&#xD;&#xD;Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {&#xD;  if (!util.isString(url)) {&#xD;    throw new TypeError("Parameter &apos;url&apos; must be a string, not " + typeof url);&#xD;  }&#xD;&#xD;  // Copy chrome, IE, opera backslash-handling behavior.&#xD;  // Back slashes before the query string get converted to forward slashes&#xD;  // See: https://code.google.com/p/chromium/issues/detail?id=25916&#xD;  var queryIndex = url.indexOf(&apos;?&apos;),&#xD;      splitter =&#xD;          (queryIndex !== -1 &amp;&amp; queryIndex &lt; url.indexOf(&apos;#&apos;)) ? &apos;?&apos; : &apos;#&apos;,&#xD;      uSplit = url.split(splitter),&#xD;      slashRegex = /\\/g;&#xD;  uSplit[0] = uSplit[0].replace(slashRegex, &apos;/&apos;);&#xD;  url = uSplit.join(splitter);&#xD;&#xD;  var rest = url;&#xD;&#xD;  // trim before proceeding.&#xD;  // This is to support parse stuff like "  http://foo.com  \n"&#xD;  rest = rest.trim();&#xD;&#xD;  if (!slashesDenoteHost &amp;&amp; url.split(&apos;#&apos;).length === 1) {&#xD;    // Try fast path regexp&#xD;    var simplePath = simplePathPattern.exec(rest);&#xD;    if (simplePath) {&#xD;      this.path = rest;&#xD;      this.href = rest;&#xD;      this.pathname = simplePath[1];&#xD;      if (simplePath[2]) {&#xD;        this.search = simplePath[2];&#xD;        if (parseQueryString) {&#xD;          this.query = querystring.parse(this.search.substr(1));&#xD;        } else {&#xD;          this.query = this.search.substr(1);&#xD;        }&#xD;      } else if (parseQueryString) {&#xD;        this.search = &apos;&apos;;&#xD;        this.query = {};&#xD;      }&#xD;      return this;&#xD;    }&#xD;  }&#xD;&#xD;  var proto = protocolPattern.exec(rest);&#xD;  if (proto) {&#xD;    proto = proto[0];&#xD;    var lowerProto = proto.toLowerCase();&#xD;    this.protocol = lowerProto;&#xD;    rest = rest.substr(proto.length);&#xD;  }&#xD;&#xD;  // figure out if it&apos;s got a host&#xD;  // user@server is *always* interpreted as a hostname, and url&#xD;  // resolution will treat //foo/bar as host=foo,path=bar because that&apos;s&#xD;  // how the browser resolves relative URLs.&#xD;  if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {&#xD;    var slashes = rest.substr(0, 2) === &apos;//&apos;;&#xD;    if (slashes &amp;&amp; !(proto &amp;&amp; hostlessProtocol[proto])) {&#xD;      rest = rest.substr(2);&#xD;      this.slashes = true;&#xD;    }&#xD;  }&#xD;&#xD;  if (!hostlessProtocol[proto] &amp;&amp;&#xD;      (slashes || (proto &amp;&amp; !slashedProtocol[proto]))) {&#xD;&#xD;    // there&apos;s a hostname.&#xD;    // the first instance of /, ?, ;, or # ends the host.&#xD;    //&#xD;    // If there is an @ in the hostname, then non-host chars *are* allowed&#xD;    // to the left of the last @ sign, unless some host-ending character&#xD;    // comes *before* the @-sign.&#xD;    // URLs are obnoxious.&#xD;    //&#xD;    // ex:&#xD;    // http://a@b@c/ =&gt; user:a@b host:c&#xD;    // http://a@b?@c =&gt; user:a host:c path:/?@c&#xD;&#xD;    // v0.12 TODO(isaacs): This is not quite how Chrome does things.&#xD;    // Review our test case against browsers more comprehensively.&#xD;&#xD;    // find the first instance of any hostEndingChars&#xD;    var hostEnd = -1;&#xD;    for (var i = 0; i &lt; hostEndingChars.length; i++) {&#xD;      var hec = rest.indexOf(hostEndingChars[i]);&#xD;      if (hec !== -1 &amp;&amp; (hostEnd === -1 || hec &lt; hostEnd))&#xD;        hostEnd = hec;&#xD;    }&#xD;&#xD;    // at this point, either we have an explicit point where the&#xD;    // auth portion cannot go past, or the last @ char is the decider.&#xD;    var auth, atSign;&#xD;    if (hostEnd === -1) {&#xD;      // atSign can be anywhere.&#xD;      atSign = rest.lastIndexOf(&apos;@&apos;);&#xD;    } else {&#xD;      // atSign must be in auth portion.&#xD;      // http://a@b/c@d =&gt; host:b auth:a path:/c@d&#xD;      atSign = rest.lastIndexOf(&apos;@&apos;, hostEnd);&#xD;    }&#xD;&#xD;    // Now we have a portion which is definitely the auth.&#xD;    // Pull that off.&#xD;    if (atSign !== -1) {&#xD;      auth = rest.slice(0, atSign);&#xD;      rest = rest.slice(atSign + 1);&#xD;      this.auth = decodeURIComponent(auth);&#xD;    }&#xD;&#xD;    // the host is the remaining to the left of the first non-host char&#xD;    hostEnd = -1;&#xD;    for (var i = 0; i &lt; nonHostChars.length; i++) {&#xD;      var hec = rest.indexOf(nonHostChars[i]);&#xD;      if (hec !== -1 &amp;&amp; (hostEnd === -1 || hec &lt; hostEnd))&#xD;        hostEnd = hec;&#xD;    }&#xD;    // if we still have not hit it, then the entire thing is a host.&#xD;    if (hostEnd === -1)&#xD;      hostEnd = rest.length;&#xD;&#xD;    this.host = rest.slice(0, hostEnd);&#xD;    rest = rest.slice(hostEnd);&#xD;&#xD;    // pull out port.&#xD;    this.parseHost();&#xD;&#xD;    // we&apos;ve indicated that there is a hostname,&#xD;    // so even if it&apos;s empty, it has to be present.&#xD;    this.hostname = this.hostname || &apos;&apos;;&#xD;&#xD;    // if hostname begins with [ and ends with ]&#xD;    // assume that it&apos;s an IPv6 address.&#xD;    var ipv6Hostname = this.hostname[0] === &apos;[&apos; &amp;&amp;&#xD;        this.hostname[this.hostname.length - 1] === &apos;]&apos;;&#xD;&#xD;    // validate a little.&#xD;    if (!ipv6Hostname) {&#xD;      var hostparts = this.hostname.split(/\./);&#xD;      for (var i = 0, l = hostparts.length; i &lt; l; i++) {&#xD;        var part = hostparts[i];&#xD;        if (!part) continue;&#xD;        if (!part.match(hostnamePartPattern)) {&#xD;          var newpart = &apos;&apos;;&#xD;          for (var j = 0, k = part.length; j &lt; k; j++) {&#xD;            if (part.charCodeAt(j) &gt; 127) {&#xD;              // we replace non-ASCII char with a temporary placeholder&#xD;              // we need this to make sure size of hostname is not&#xD;              // broken by replacing non-ASCII by nothing&#xD;              newpart += &apos;x&apos;;&#xD;            } else {&#xD;              newpart += part[j];&#xD;            }&#xD;          }&#xD;          // we test again with ASCII char only&#xD;          if (!newpart.match(hostnamePartPattern)) {&#xD;            var validParts = hostparts.slice(0, i);&#xD;            var notHost = hostparts.slice(i + 1);&#xD;            var bit = part.match(hostnamePartStart);&#xD;            if (bit) {&#xD;              validParts.push(bit[1]);&#xD;              notHost.unshift(bit[2]);&#xD;            }&#xD;            if (notHost.length) {&#xD;              rest = &apos;/&apos; + notHost.join(&apos;.&apos;) + rest;&#xD;            }&#xD;            this.hostname = validParts.join(&apos;.&apos;);&#xD;            break;&#xD;          }&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    if (this.hostname.length &gt; hostnameMaxLen) {&#xD;      this.hostname = &apos;&apos;;&#xD;    } else {&#xD;      // hostnames are always lower case.&#xD;      this.hostname = this.hostname.toLowerCase();&#xD;    }&#xD;&#xD;    if (!ipv6Hostname) {&#xD;      // IDNA Support: Returns a punycoded representation of "domain".&#xD;      // It only converts parts of the domain name that&#xD;      // have non-ASCII characters, i.e. it doesn&apos;t matter if&#xD;      // you call it with a domain that already is ASCII-only.&#xD;      this.hostname = punycode.toASCII(this.hostname);&#xD;    }&#xD;&#xD;    var p = this.port ? &apos;:&apos; + this.port : &apos;&apos;;&#xD;    var h = this.hostname || &apos;&apos;;&#xD;    this.host = h + p;&#xD;    this.href += this.host;&#xD;&#xD;    // strip [ and ] from the hostname&#xD;    // the host field still retains them, though&#xD;    if (ipv6Hostname) {&#xD;      this.hostname = this.hostname.substr(1, this.hostname.length - 2);&#xD;      if (rest[0] !== &apos;/&apos;) {&#xD;        rest = &apos;/&apos; + rest;&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  // now rest is set to the post-host stuff.&#xD;  // chop off any delim chars.&#xD;  if (!unsafeProtocol[lowerProto]) {&#xD;&#xD;    // First, make 100% sure that any "autoEscape" chars get&#xD;    // escaped, even if encodeURIComponent doesn&apos;t think they&#xD;    // need to be.&#xD;    for (var i = 0, l = autoEscape.length; i &lt; l; i++) {&#xD;      var ae = autoEscape[i];&#xD;      if (rest.indexOf(ae) === -1)&#xD;        continue;&#xD;      var esc = encodeURIComponent(ae);&#xD;      if (esc === ae) {&#xD;        esc = escape(ae);&#xD;      }&#xD;      rest = rest.split(ae).join(esc);&#xD;    }&#xD;  }&#xD;&#xD;&#xD;  // chop off from the tail first.&#xD;  var hash = rest.indexOf(&apos;#&apos;);&#xD;  if (hash !== -1) {&#xD;    // got a fragment string.&#xD;    this.hash = rest.substr(hash);&#xD;    rest = rest.slice(0, hash);&#xD;  }&#xD;  var qm = rest.indexOf(&apos;?&apos;);&#xD;  if (qm !== -1) {&#xD;    this.search = rest.substr(qm);&#xD;    this.query = rest.substr(qm + 1);&#xD;    if (parseQueryString) {&#xD;      this.query = querystring.parse(this.query);&#xD;    }&#xD;    rest = rest.slice(0, qm);&#xD;  } else if (parseQueryString) {&#xD;    // no query string, but parseQueryString still requested&#xD;    this.search = &apos;&apos;;&#xD;    this.query = {};&#xD;  }&#xD;  if (rest) this.pathname = rest;&#xD;  if (slashedProtocol[lowerProto] &amp;&amp;&#xD;      this.hostname &amp;&amp; !this.pathname) {&#xD;    this.pathname = &apos;/&apos;;&#xD;  }&#xD;&#xD;  //to support http.request&#xD;  if (this.pathname || this.search) {&#xD;    var p = this.pathname || &apos;&apos;;&#xD;    var s = this.search || &apos;&apos;;&#xD;    this.path = p + s;&#xD;  }&#xD;&#xD;  // finally, reconstruct the href based on what has been validated.&#xD;  this.href = this.format();&#xD;  return this;&#xD;};&#xD;&#xD;// format a parsed object into a url string&#xD;function urlFormat(obj) {&#xD;  // ensure it&apos;s an object, and not a string url.&#xD;  // If it&apos;s an obj, this is a no-op.&#xD;  // this way, you can call url_format() on strings&#xD;  // to clean up potentially wonky urls.&#xD;  if (util.isString(obj)) obj = urlParse(obj);&#xD;  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);&#xD;  return obj.format();&#xD;}&#xD;&#xD;Url.prototype.format = function() {&#xD;  var auth = this.auth || &apos;&apos;;&#xD;  if (auth) {&#xD;    auth = encodeURIComponent(auth);&#xD;    auth = auth.replace(/%3A/i, &apos;:&apos;);&#xD;    auth += &apos;@&apos;;&#xD;  }&#xD;&#xD;  var protocol = this.protocol || &apos;&apos;,&#xD;      pathname = this.pathname || &apos;&apos;,&#xD;      hash = this.hash || &apos;&apos;,&#xD;      host = false,&#xD;      query = &apos;&apos;;&#xD;&#xD;  if (this.host) {&#xD;    host = auth + this.host;&#xD;  } else if (this.hostname) {&#xD;    host = auth + (this.hostname.indexOf(&apos;:&apos;) === -1 ?&#xD;        this.hostname :&#xD;        &apos;[&apos; + this.hostname + &apos;]&apos;);&#xD;    if (this.port) {&#xD;      host += &apos;:&apos; + this.port;&#xD;    }&#xD;  }&#xD;&#xD;  if (this.query &amp;&amp;&#xD;      util.isObject(this.query) &amp;&amp;&#xD;      Object.keys(this.query).length) {&#xD;    query = querystring.stringify(this.query);&#xD;  }&#xD;&#xD;  var search = this.search || (query &amp;&amp; (&apos;?&apos; + query)) || &apos;&apos;;&#xD;&#xD;  if (protocol &amp;&amp; protocol.substr(-1) !== &apos;:&apos;) protocol += &apos;:&apos;;&#xD;&#xD;  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.&#xD;  // unless they had them to begin with.&#xD;  if (this.slashes ||&#xD;      (!protocol || slashedProtocol[protocol]) &amp;&amp; host !== false) {&#xD;    host = &apos;//&apos; + (host || &apos;&apos;);&#xD;    if (pathname &amp;&amp; pathname.charAt(0) !== &apos;/&apos;) pathname = &apos;/&apos; + pathname;&#xD;  } else if (!host) {&#xD;    host = &apos;&apos;;&#xD;  }&#xD;&#xD;  if (hash &amp;&amp; hash.charAt(0) !== &apos;#&apos;) hash = &apos;#&apos; + hash;&#xD;  if (search &amp;&amp; search.charAt(0) !== &apos;?&apos;) search = &apos;?&apos; + search;&#xD;&#xD;  pathname = pathname.replace(/[?#]/g, function(match) {&#xD;    return encodeURIComponent(match);&#xD;  });&#xD;  search = search.replace(&apos;#&apos;, &apos;%23&apos;);&#xD;&#xD;  return protocol + host + pathname + search + hash;&#xD;};&#xD;&#xD;function urlResolve(source, relative) {&#xD;  return urlParse(source, false, true).resolve(relative);&#xD;}&#xD;&#xD;Url.prototype.resolve = function(relative) {&#xD;  return this.resolveObject(urlParse(relative, false, true)).format();&#xD;};&#xD;&#xD;function urlResolveObject(source, relative) {&#xD;  if (!source) return relative;&#xD;  return urlParse(source, false, true).resolveObject(relative);&#xD;}&#xD;&#xD;Url.prototype.resolveObject = function(relative) {&#xD;  if (util.isString(relative)) {&#xD;    var rel = new Url();&#xD;    rel.parse(relative, false, true);&#xD;    relative = rel;&#xD;  }&#xD;&#xD;  var result = new Url();&#xD;  var tkeys = Object.keys(this);&#xD;  for (var tk = 0; tk &lt; tkeys.length; tk++) {&#xD;    var tkey = tkeys[tk];&#xD;    result[tkey] = this[tkey];&#xD;  }&#xD;&#xD;  // hash is always overridden, no matter what.&#xD;  // even href="" will remove it.&#xD;  result.hash = relative.hash;&#xD;&#xD;  // if the relative url is empty, then there&apos;s nothing left to do here.&#xD;  if (relative.href === &apos;&apos;) {&#xD;    result.href = result.format();&#xD;    return result;&#xD;  }&#xD;&#xD;  // hrefs like //foo/bar always cut to the protocol.&#xD;  if (relative.slashes &amp;&amp; !relative.protocol) {&#xD;    // take everything except the protocol from relative&#xD;    var rkeys = Object.keys(relative);&#xD;    for (var rk = 0; rk &lt; rkeys.length; rk++) {&#xD;      var rkey = rkeys[rk];&#xD;      if (rkey !== &apos;protocol&apos;)&#xD;        result[rkey] = relative[rkey];&#xD;    }&#xD;&#xD;    //urlParse appends trailing / to urls like http://www.example.com&#xD;    if (slashedProtocol[result.protocol] &amp;&amp;&#xD;        result.hostname &amp;&amp; !result.pathname) {&#xD;      result.path = result.pathname = &apos;/&apos;;&#xD;    }&#xD;&#xD;    result.href = result.format();&#xD;    return result;&#xD;  }&#xD;&#xD;  if (relative.protocol &amp;&amp; relative.protocol !== result.protocol) {&#xD;    // if it&apos;s a known url protocol, then changing&#xD;    // the protocol does weird things&#xD;    // first, if it&apos;s not file:, then we MUST have a host,&#xD;    // and if there was a path&#xD;    // to begin with, then we MUST have a path.&#xD;    // if it is file:, then the host is dropped,&#xD;    // because that&apos;s known to be hostless.&#xD;    // anything else is assumed to be absolute.&#xD;    if (!slashedProtocol[relative.protocol]) {&#xD;      var keys = Object.keys(relative);&#xD;      for (var v = 0; v &lt; keys.length; v++) {&#xD;        var k = keys[v];&#xD;        result[k] = relative[k];&#xD;      }&#xD;      result.href = result.format();&#xD;      return result;&#xD;    }&#xD;&#xD;    result.protocol = relative.protocol;&#xD;    if (!relative.host &amp;&amp; !hostlessProtocol[relative.protocol]) {&#xD;      var relPath = (relative.pathname || &apos;&apos;).split(&apos;/&apos;);&#xD;      while (relPath.length &amp;&amp; !(relative.host = relPath.shift()));&#xD;      if (!relative.host) relative.host = &apos;&apos;;&#xD;      if (!relative.hostname) relative.hostname = &apos;&apos;;&#xD;      if (relPath[0] !== &apos;&apos;) relPath.unshift(&apos;&apos;);&#xD;      if (relPath.length &lt; 2) relPath.unshift(&apos;&apos;);&#xD;      result.pathname = relPath.join(&apos;/&apos;);&#xD;    } else {&#xD;      result.pathname = relative.pathname;&#xD;    }&#xD;    result.search = relative.search;&#xD;    result.query = relative.query;&#xD;    result.host = relative.host || &apos;&apos;;&#xD;    result.auth = relative.auth;&#xD;    result.hostname = relative.hostname || relative.host;&#xD;    result.port = relative.port;&#xD;    // to support http.request&#xD;    if (result.pathname || result.search) {&#xD;      var p = result.pathname || &apos;&apos;;&#xD;      var s = result.search || &apos;&apos;;&#xD;      result.path = p + s;&#xD;    }&#xD;    result.slashes = result.slashes || relative.slashes;&#xD;    result.href = result.format();&#xD;    return result;&#xD;  }&#xD;&#xD;  var isSourceAbs = (result.pathname &amp;&amp; result.pathname.charAt(0) === &apos;/&apos;),&#xD;      isRelAbs = (&#xD;          relative.host ||&#xD;          relative.pathname &amp;&amp; relative.pathname.charAt(0) === &apos;/&apos;&#xD;      ),&#xD;      mustEndAbs = (isRelAbs || isSourceAbs ||&#xD;                    (result.host &amp;&amp; relative.pathname)),&#xD;      removeAllDots = mustEndAbs,&#xD;      srcPath = result.pathname &amp;&amp; result.pathname.split(&apos;/&apos;) || [],&#xD;      relPath = relative.pathname &amp;&amp; relative.pathname.split(&apos;/&apos;) || [],&#xD;      psychotic = result.protocol &amp;&amp; !slashedProtocol[result.protocol];&#xD;&#xD;  // if the url is a non-slashed url, then relative&#xD;  // links like ../.. should be able&#xD;  // to crawl up to the hostname, as well.  This is strange.&#xD;  // result.protocol has already been set by now.&#xD;  // Later on, put the first path part into the host field.&#xD;  if (psychotic) {&#xD;    result.hostname = &apos;&apos;;&#xD;    result.port = null;&#xD;    if (result.host) {&#xD;      if (srcPath[0] === &apos;&apos;) srcPath[0] = result.host;&#xD;      else srcPath.unshift(result.host);&#xD;    }&#xD;    result.host = &apos;&apos;;&#xD;    if (relative.protocol) {&#xD;      relative.hostname = null;&#xD;      relative.port = null;&#xD;      if (relative.host) {&#xD;        if (relPath[0] === &apos;&apos;) relPath[0] = relative.host;&#xD;        else relPath.unshift(relative.host);&#xD;      }&#xD;      relative.host = null;&#xD;    }&#xD;    mustEndAbs = mustEndAbs &amp;&amp; (relPath[0] === &apos;&apos; || srcPath[0] === &apos;&apos;);&#xD;  }&#xD;&#xD;  if (isRelAbs) {&#xD;    // it&apos;s absolute.&#xD;    result.host = (relative.host || relative.host === &apos;&apos;) ?&#xD;                  relative.host : result.host;&#xD;    result.hostname = (relative.hostname || relative.hostname === &apos;&apos;) ?&#xD;                      relative.hostname : result.hostname;&#xD;    result.search = relative.search;&#xD;    result.query = relative.query;&#xD;    srcPath = relPath;&#xD;    // fall through to the dot-handling below.&#xD;  } else if (relPath.length) {&#xD;    // it&apos;s relative&#xD;    // throw away the existing file, and take the new path instead.&#xD;    if (!srcPath) srcPath = [];&#xD;    srcPath.pop();&#xD;    srcPath = srcPath.concat(relPath);&#xD;    result.search = relative.search;&#xD;    result.query = relative.query;&#xD;  } else if (!util.isNullOrUndefined(relative.search)) {&#xD;    // just pull out the search.&#xD;    // like href=&apos;?foo&apos;.&#xD;    // Put this after the other two cases because it simplifies the booleans&#xD;    if (psychotic) {&#xD;      result.hostname = result.host = srcPath.shift();&#xD;      //occationaly the auth can get stuck only in host&#xD;      //this especially happens in cases like&#xD;      //url.resolveObject(&apos;mailto:local1@domain1&apos;, &apos;local2@domain2&apos;)&#xD;      var authInHost = result.host &amp;&amp; result.host.indexOf(&apos;@&apos;) &gt; 0 ?&#xD;                       result.host.split(&apos;@&apos;) : false;&#xD;      if (authInHost) {&#xD;        result.auth = authInHost.shift();&#xD;        result.host = result.hostname = authInHost.shift();&#xD;      }&#xD;    }&#xD;    result.search = relative.search;&#xD;    result.query = relative.query;&#xD;    //to support http.request&#xD;    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {&#xD;      result.path = (result.pathname ? result.pathname : &apos;&apos;) +&#xD;                    (result.search ? result.search : &apos;&apos;);&#xD;    }&#xD;    result.href = result.format();&#xD;    return result;&#xD;  }&#xD;&#xD;  if (!srcPath.length) {&#xD;    // no path at all.  easy.&#xD;    // we&apos;ve already handled the other stuff above.&#xD;    result.pathname = null;&#xD;    //to support http.request&#xD;    if (result.search) {&#xD;      result.path = &apos;/&apos; + result.search;&#xD;    } else {&#xD;      result.path = null;&#xD;    }&#xD;    result.href = result.format();&#xD;    return result;&#xD;  }&#xD;&#xD;  // if a url ENDs in . or .., then it must get a trailing slash.&#xD;  // however, if it ends in anything else non-slashy,&#xD;  // then it must NOT get a trailing slash.&#xD;  var last = srcPath.slice(-1)[0];&#xD;  var hasTrailingSlash = (&#xD;      (result.host || relative.host || srcPath.length &gt; 1) &amp;&amp;&#xD;      (last === &apos;.&apos; || last === &apos;..&apos;) || last === &apos;&apos;);&#xD;&#xD;  // strip single dots, resolve double dots to parent dir&#xD;  // if the path tries to go above the root, `up` ends up &gt; 0&#xD;  var up = 0;&#xD;  for (var i = srcPath.length; i &gt;= 0; i--) {&#xD;    last = srcPath[i];&#xD;    if (last === &apos;.&apos;) {&#xD;      srcPath.splice(i, 1);&#xD;    } else if (last === &apos;..&apos;) {&#xD;      srcPath.splice(i, 1);&#xD;      up++;&#xD;    } else if (up) {&#xD;      srcPath.splice(i, 1);&#xD;      up--;&#xD;    }&#xD;  }&#xD;&#xD;  // if the path is allowed to go above the root, restore leading ..s&#xD;  if (!mustEndAbs &amp;&amp; !removeAllDots) {&#xD;    for (; up--; up) {&#xD;      srcPath.unshift(&apos;..&apos;);&#xD;    }&#xD;  }&#xD;&#xD;  if (mustEndAbs &amp;&amp; srcPath[0] !== &apos;&apos; &amp;&amp;&#xD;      (!srcPath[0] || srcPath[0].charAt(0) !== &apos;/&apos;)) {&#xD;    srcPath.unshift(&apos;&apos;);&#xD;  }&#xD;&#xD;  if (hasTrailingSlash &amp;&amp; (srcPath.join(&apos;/&apos;).substr(-1) !== &apos;/&apos;)) {&#xD;    srcPath.push(&apos;&apos;);&#xD;  }&#xD;&#xD;  var isAbsolute = srcPath[0] === &apos;&apos; ||&#xD;      (srcPath[0] &amp;&amp; srcPath[0].charAt(0) === &apos;/&apos;);&#xD;&#xD;  // put the host back&#xD;  if (psychotic) {&#xD;    result.hostname = result.host = isAbsolute ? &apos;&apos; :&#xD;                                    srcPath.length ? srcPath.shift() : &apos;&apos;;&#xD;    //occationaly the auth can get stuck only in host&#xD;    //this especially happens in cases like&#xD;    //url.resolveObject(&apos;mailto:local1@domain1&apos;, &apos;local2@domain2&apos;)&#xD;    var authInHost = result.host &amp;&amp; result.host.indexOf(&apos;@&apos;) &gt; 0 ?&#xD;                     result.host.split(&apos;@&apos;) : false;&#xD;    if (authInHost) {&#xD;      result.auth = authInHost.shift();&#xD;      result.host = result.hostname = authInHost.shift();&#xD;    }&#xD;  }&#xD;&#xD;  mustEndAbs = mustEndAbs || (result.host &amp;&amp; srcPath.length);&#xD;&#xD;  if (mustEndAbs &amp;&amp; !isAbsolute) {&#xD;    srcPath.unshift(&apos;&apos;);&#xD;  }&#xD;&#xD;  if (!srcPath.length) {&#xD;    result.pathname = null;&#xD;    result.path = null;&#xD;  } else {&#xD;    result.pathname = srcPath.join(&apos;/&apos;);&#xD;  }&#xD;&#xD;  //to support request.http&#xD;  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {&#xD;    result.path = (result.pathname ? result.pathname : &apos;&apos;) +&#xD;                  (result.search ? result.search : &apos;&apos;);&#xD;  }&#xD;  result.auth = relative.auth || result.auth;&#xD;  result.slashes = result.slashes || relative.slashes;&#xD;  result.href = result.format();&#xD;  return result;&#xD;};&#xD;&#xD;Url.prototype.parseHost = function() {&#xD;  var host = this.host;&#xD;  var port = portPattern.exec(host);&#xD;  if (port) {&#xD;    port = port[0];&#xD;    if (port !== &apos;:&apos;) {&#xD;      this.port = port.substr(1);&#xD;    }&#xD;    host = host.substr(0, host.length - port.length);&#xD;  }&#xD;  if (host) this.hostname = host;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 201 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;var window = __webpack_require__(340)&#xD;var isFunction = __webpack_require__(136)&#xD;var parseHeaders = __webpack_require__(385)&#xD;var xtend = __webpack_require__(202)&#xD;&#xD;module.exports = createXHR&#xD;createXHR.XMLHttpRequest = window.XMLHttpRequest || noop&#xD;createXHR.XDomainRequest = "withCredentials" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest&#xD;&#xD;forEachArray(["get", "put", "post", "patch", "head", "delete"], function(method) {&#xD;    createXHR[method === "delete" ? "del" : method] = function(uri, options, callback) {&#xD;        options = initParams(uri, options, callback)&#xD;        options.method = method.toUpperCase()&#xD;        return _createXHR(options)&#xD;    }&#xD;})&#xD;&#xD;function forEachArray(array, iterator) {&#xD;    for (var i = 0; i &lt; array.length; i++) {&#xD;        iterator(array[i])&#xD;    }&#xD;}&#xD;&#xD;function isEmpty(obj){&#xD;    for(var i in obj){&#xD;        if(obj.hasOwnProperty(i)) return false&#xD;    }&#xD;    return true&#xD;}&#xD;&#xD;function initParams(uri, options, callback) {&#xD;    var params = uri&#xD;&#xD;    if (isFunction(options)) {&#xD;        callback = options&#xD;        if (typeof uri === "string") {&#xD;            params = {uri:uri}&#xD;        }&#xD;    } else {&#xD;        params = xtend(options, {uri: uri})&#xD;    }&#xD;&#xD;    params.callback = callback&#xD;    return params&#xD;}&#xD;&#xD;function createXHR(uri, options, callback) {&#xD;    options = initParams(uri, options, callback)&#xD;    return _createXHR(options)&#xD;}&#xD;&#xD;function _createXHR(options) {&#xD;    if(typeof options.callback === "undefined"){&#xD;        throw new Error("callback argument missing")&#xD;    }&#xD;&#xD;    var called = false&#xD;    var callback = function cbOnce(err, response, body){&#xD;        if(!called){&#xD;            called = true&#xD;            options.callback(err, response, body)&#xD;        }&#xD;    }&#xD;&#xD;    function readystatechange() {&#xD;        if (xhr.readyState === 4) {&#xD;            setTimeout(loadFunc, 0)&#xD;        }&#xD;    }&#xD;&#xD;    function getBody() {&#xD;        // Chrome with requestType=blob throws errors arround when even testing access to responseText&#xD;        var body = undefined&#xD;&#xD;        if (xhr.response) {&#xD;            body = xhr.response&#xD;        } else {&#xD;            body = xhr.responseText || getXml(xhr)&#xD;        }&#xD;&#xD;        if (isJson) {&#xD;            try {&#xD;                body = JSON.parse(body)&#xD;            } catch (e) {}&#xD;        }&#xD;&#xD;        return body&#xD;    }&#xD;&#xD;    function errorFunc(evt) {&#xD;        clearTimeout(timeoutTimer)&#xD;        if(!(evt instanceof Error)){&#xD;            evt = new Error("" + (evt || "Unknown XMLHttpRequest Error") )&#xD;        }&#xD;        evt.statusCode = 0&#xD;        return callback(evt, failureResponse)&#xD;    }&#xD;&#xD;    // will load the data &amp; process the response in a special response object&#xD;    function loadFunc() {&#xD;        if (aborted) return&#xD;        var status&#xD;        clearTimeout(timeoutTimer)&#xD;        if(options.useXDR &amp;&amp; xhr.status===undefined) {&#xD;            //IE8 CORS GET successful response doesn&apos;t have a status field, but body is fine&#xD;            status = 200&#xD;        } else {&#xD;            status = (xhr.status === 1223 ? 204 : xhr.status)&#xD;        }&#xD;        var response = failureResponse&#xD;        var err = null&#xD;&#xD;        if (status !== 0){&#xD;            response = {&#xD;                body: getBody(),&#xD;                statusCode: status,&#xD;                method: method,&#xD;                headers: {},&#xD;                url: uri,&#xD;                rawRequest: xhr&#xD;            }&#xD;            if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE&#xD;                response.headers = parseHeaders(xhr.getAllResponseHeaders())&#xD;            }&#xD;        } else {&#xD;            err = new Error("Internal XMLHttpRequest Error")&#xD;        }&#xD;        return callback(err, response, response.body)&#xD;    }&#xD;&#xD;    var xhr = options.xhr || null&#xD;&#xD;    if (!xhr) {&#xD;        if (options.cors || options.useXDR) {&#xD;            xhr = new createXHR.XDomainRequest()&#xD;        }else{&#xD;            xhr = new createXHR.XMLHttpRequest()&#xD;        }&#xD;    }&#xD;&#xD;    var key&#xD;    var aborted&#xD;    var uri = xhr.url = options.uri || options.url&#xD;    var method = xhr.method = options.method || "GET"&#xD;    var body = options.body || options.data&#xD;    var headers = xhr.headers = options.headers || {}&#xD;    var sync = !!options.sync&#xD;    var isJson = false&#xD;    var timeoutTimer&#xD;    var failureResponse = {&#xD;        body: undefined,&#xD;        headers: {},&#xD;        statusCode: 0,&#xD;        method: method,&#xD;        url: uri,&#xD;        rawRequest: xhr&#xD;    }&#xD;&#xD;    if ("json" in options &amp;&amp; options.json !== false) {&#xD;        isJson = true&#xD;        headers["accept"] || headers["Accept"] || (headers["Accept"] = "application/json") //Don&apos;t override existing accept header declared by user&#xD;        if (method !== "GET" &amp;&amp; method !== "HEAD") {&#xD;            headers["content-type"] || headers["Content-Type"] || (headers["Content-Type"] = "application/json") //Don&apos;t override existing accept header declared by user&#xD;            body = JSON.stringify(options.json === true ? body : options.json)&#xD;        }&#xD;    }&#xD;&#xD;    xhr.onreadystatechange = readystatechange&#xD;    xhr.onload = loadFunc&#xD;    xhr.onerror = errorFunc&#xD;    // IE9 must have onprogress be set to a unique function.&#xD;    xhr.onprogress = function () {&#xD;        // IE must die&#xD;    }&#xD;    xhr.onabort = function(){&#xD;        aborted = true;&#xD;    }&#xD;    xhr.ontimeout = errorFunc&#xD;    xhr.open(method, uri, !sync, options.username, options.password)&#xD;    //has to be after open&#xD;    if(!sync) {&#xD;        xhr.withCredentials = !!options.withCredentials&#xD;    }&#xD;    // Cannot set timeout with sync request&#xD;    // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly&#xD;    // both npm&apos;s request and jquery 1.x use this kind of timeout, so this is being consistent&#xD;    if (!sync &amp;&amp; options.timeout &gt; 0 ) {&#xD;        timeoutTimer = setTimeout(function(){&#xD;            if (aborted) return&#xD;            aborted = true//IE9 may still call readystatechange&#xD;            xhr.abort("timeout")&#xD;            var e = new Error("XMLHttpRequest timeout")&#xD;            e.code = "ETIMEDOUT"&#xD;            errorFunc(e)&#xD;        }, options.timeout )&#xD;    }&#xD;&#xD;    if (xhr.setRequestHeader) {&#xD;        for(key in headers){&#xD;            if(headers.hasOwnProperty(key)){&#xD;                xhr.setRequestHeader(key, headers[key])&#xD;            }&#xD;        }&#xD;    } else if (options.headers &amp;&amp; !isEmpty(options.headers)) {&#xD;        throw new Error("Headers cannot be set on an XDomainRequest object")&#xD;    }&#xD;&#xD;    if ("responseType" in options) {&#xD;        xhr.responseType = options.responseType&#xD;    }&#xD;&#xD;    if ("beforeSend" in options &amp;&amp;&#xD;        typeof options.beforeSend === "function"&#xD;    ) {&#xD;        options.beforeSend(xhr)&#xD;    }&#xD;&#xD;    // Microsoft Edge browser sends "undefined" when send is called with undefined value.&#xD;    // XMLHttpRequest spec says to pass null as body to indicate no body&#xD;    // See https://github.com/naugtur/xhr/issues/100.&#xD;    xhr.send(body || null)&#xD;&#xD;    return xhr&#xD;&#xD;&#xD;}&#xD;&#xD;function getXml(xhr) {&#xD;    if (xhr.responseType === "document") {&#xD;        return xhr.responseXML&#xD;    }&#xD;    var firefoxBugTakenEffect = xhr.responseXML &amp;&amp; xhr.responseXML.documentElement.nodeName === "parsererror"&#xD;    if (xhr.responseType === "" &amp;&amp; !firefoxBugTakenEffect) {&#xD;        return xhr.responseXML&#xD;    }&#xD;&#xD;    return null&#xD;}&#xD;&#xD;function noop() {}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 202 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = extend&#xD;&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;&#xD;function extend() {&#xD;    var target = {}&#xD;&#xD;    for (var i = 0; i &lt; arguments.length; i++) {&#xD;        var source = arguments[i]&#xD;&#xD;        for (var key in source) {&#xD;            if (hasOwnProperty.call(source, key)) {&#xD;                target[key] = source[key]&#xD;            }&#xD;        }&#xD;    }&#xD;&#xD;    return target&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 203 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;var bindAll = __webpack_require__(9);&#xD;&#xD;var vmListenerHOC = __webpack_require__(256);&#xD;&#xD;var GUIComponent = __webpack_require__(220);&#xD;&#xD;var GUI = function (_React$Component) {&#xD;    _inherits(GUI, _React$Component);&#xD;&#xD;    function GUI(props) {&#xD;        _classCallCheck(this, GUI);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (GUI.__proto__ || Object.getPrototypeOf(GUI)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleTabSelect&apos;]);&#xD;        _this.state = { tabIndex: 0 };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(GUI, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.props.vm.loadProject(this.props.projectData);&#xD;            this.props.vm.setCompatibilityMode(true);&#xD;            this.props.vm.start();&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillReceiveProps&apos;,&#xD;        value: function componentWillReceiveProps(nextProps) {&#xD;            if (this.props.projectData !== nextProps.projectData) {&#xD;                this.props.vm.loadProject(nextProps.projectData);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            this.props.vm.stopAll();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleTabSelect&apos;,&#xD;        value: function handleTabSelect(tabIndex) {&#xD;            this.setState({ tabIndex: tabIndex });&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                projectData = _props.projectData,&#xD;                vm = _props.vm,&#xD;                componentProps = _objectWithoutProperties(_props, [&apos;projectData&apos;, &apos;vm&apos;]);&#xD;&#xD;            return React.createElement(GUIComponent, _extends({&#xD;                tabIndex: this.state.tabIndex,&#xD;                vm: vm,&#xD;                onTabSelect: this.handleTabSelect&#xD;            }, componentProps));&#xD;        }&#xD;    }]);&#xD;&#xD;    return GUI;&#xD;}(React.Component);&#xD;&#xD;GUI.propTypes = _extends({}, GUIComponent.propTypes, {&#xD;    projectData: PropTypes.string,&#xD;    vm: PropTypes.instanceOf(VM)&#xD;});&#xD;&#xD;GUI.defaultProps = GUIComponent.defaultProps;&#xD;&#xD;module.exports = vmListenerHOC(GUI);&#xD;&#xD;/***/ }),&#xD;/* 204 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var xhr = __webpack_require__(201);&#xD;&#xD;var log = __webpack_require__(107);&#xD;&#xD;var ProjectLoader = function () {&#xD;    function ProjectLoader() {&#xD;        _classCallCheck(this, ProjectLoader);&#xD;&#xD;        this.DEFAULT_PROJECT_DATA = ProjectLoader.DEFAULT_PROJECT_DATA;&#xD;    }&#xD;&#xD;    _createClass(ProjectLoader, [{&#xD;        key: &apos;load&apos;,&#xD;        value: function load(id, callback) {&#xD;            callback = callback || function (err) {&#xD;                return log.error(err);&#xD;            };&#xD;            xhr({&#xD;                uri: &apos;https://projects.scratch.mit.edu/internalapi/project/&apos; + id + &apos;/get/&apos;&#xD;            }, function (err, res, body) {&#xD;                if (err) return callback(err);&#xD;                callback(null, body);&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return ProjectLoader;&#xD;}();&#xD;&#xD;ProjectLoader.DEFAULT_PROJECT_DATA = __webpack_require__(562);&#xD;&#xD;module.exports = new ProjectLoader();&#xD;&#xD;/***/ }),&#xD;/* 205 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _require = __webpack_require__(76),&#xD;    combineReducers = _require.combineReducers;&#xD;&#xD;module.exports = combineReducers({&#xD;    modals: __webpack_require__(55),&#xD;    monitors: __webpack_require__(117),&#xD;    targets: __webpack_require__(118),&#xD;    vm: __webpack_require__(257)&#xD;});&#xD;&#xD;/***/ }),&#xD;/* 206 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;Object.defineProperty(exports, "__esModule", {&#xD;  value: true&#xD;});&#xD;exports.FLUSH = exports.CANCEL = undefined;&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol ? "symbol" : typeof obj; };&#xD;&#xD;exports.default = middleware;&#xD;&#xD;var _lodash = __webpack_require__(363);&#xD;&#xD;var _lodash2 = _interopRequireDefault(_lodash);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;var CANCEL = exports.CANCEL = &apos;redux-throttle/CANCEL&apos;;&#xD;var FLUSH = exports.FLUSH = &apos;redux-throttle/FLUSH&apos;;&#xD;&#xD;function map(throttled, action, method) {&#xD;  if (action.payload &amp;&amp; action.payload.type) {&#xD;    var _ret = function () {&#xD;      var types = action.payload.type;&#xD;      if (!Array.isArray(types)) {&#xD;        types = [types];&#xD;      }&#xD;      Object.keys(throttled).filter(function (t) {&#xD;        return types.includes(t);&#xD;      }).forEach(function (t) {&#xD;        return throttled[t][method]();&#xD;      });&#xD;      return {&#xD;        v: void 0&#xD;      };&#xD;    }();&#xD;&#xD;    if ((typeof _ret === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(_ret)) === "object") return _ret.v;&#xD;  }&#xD;  Object.keys(throttled).forEach(function (t) {&#xD;    return throttled[t][method]();&#xD;  });&#xD;  return;&#xD;}&#xD;&#xD;function middleware() {&#xD;  var defaultWait = arguments.length &lt;= 0 || arguments[0] === undefined ? 300 : arguments[0];&#xD;  var defaultThrottleOption = arguments.length &lt;= 1 || arguments[1] === undefined ? {} : arguments[1];&#xD;&#xD;  var throttled = {};&#xD;  return function (store) {&#xD;    return function (next) {&#xD;      return function (action) {&#xD;        if (action.type === CANCEL) {&#xD;          map(throttled, action, &apos;cancel&apos;);&#xD;          return next(action);&#xD;        }&#xD;&#xD;        if (action.type === FLUSH) {&#xD;          map(throttled, action, &apos;flush&apos;);&#xD;          return next(action);&#xD;        }&#xD;&#xD;        var shouldThrottle = (action.meta || {}).throttle;&#xD;&#xD;        // check if we don&apos;t need to throttle the action&#xD;        if (!shouldThrottle) {&#xD;          return next(action);&#xD;        }&#xD;&#xD;        if (throttled[action.type]) {&#xD;          // if it&apos;s a action which was throttled already&#xD;          return throttled[action.type](action);&#xD;        }&#xD;&#xD;        var wait = defaultWait;&#xD;        var options = defaultThrottleOption;&#xD;&#xD;        if (!isNaN(shouldThrottle) &amp;&amp; shouldThrottle !== true) {&#xD;          wait = shouldThrottle;&#xD;        } else if ((typeof shouldThrottle === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(shouldThrottle)) === &apos;object&apos;) {&#xD;          wait = shouldThrottle.wait || defaultWait;&#xD;          options = _extends({}, defaultThrottleOption, shouldThrottle);&#xD;        }&#xD;&#xD;        throttled[action.type] = (0, _lodash2.default)(next, wait, options);&#xD;&#xD;        return throttled[action.type](action);&#xD;      };&#xD;    };&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 207 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(300);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../node_modules/css-loader/index.js??ref--1-1!../node_modules/postcss-loader/lib/index.js??postcss!./index.css", function() {&#xD;			var newContent = require("!!../node_modules/css-loader/index.js??ref--1-1!../node_modules/postcss-loader/lib/index.js??postcss!./index.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 208 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var asn1 = __webpack_require__(45);&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var api = exports;&#xD;&#xD;api.define = function define(name, body) {&#xD;  return new Entity(name, body);&#xD;};&#xD;&#xD;function Entity(name, body) {&#xD;  this.name = name;&#xD;  this.body = body;&#xD;&#xD;  this.decoders = {};&#xD;  this.encoders = {};&#xD;};&#xD;&#xD;Entity.prototype._createNamed = function createNamed(base) {&#xD;  var named;&#xD;  try {&#xD;    named = __webpack_require__(561).runInThisContext(&#xD;      &apos;(function &apos; + this.name + &apos;(entity) {\n&apos; +&#xD;      &apos;  this._initNamed(entity);\n&apos; +&#xD;      &apos;})&apos;&#xD;    );&#xD;  } catch (e) {&#xD;    named = function (entity) {&#xD;      this._initNamed(entity);&#xD;    };&#xD;  }&#xD;  inherits(named, base);&#xD;  named.prototype._initNamed = function initnamed(entity) {&#xD;    base.call(this, entity);&#xD;  };&#xD;&#xD;  return new named(this);&#xD;};&#xD;&#xD;Entity.prototype._getDecoder = function _getDecoder(enc) {&#xD;  enc = enc || &apos;der&apos;;&#xD;  // Lazily create decoder&#xD;  if (!this.decoders.hasOwnProperty(enc))&#xD;    this.decoders[enc] = this._createNamed(asn1.decoders[enc]);&#xD;  return this.decoders[enc];&#xD;};&#xD;&#xD;Entity.prototype.decode = function decode(data, enc, options) {&#xD;  return this._getDecoder(enc).decode(data, options);&#xD;};&#xD;&#xD;Entity.prototype._getEncoder = function _getEncoder(enc) {&#xD;  enc = enc || &apos;der&apos;;&#xD;  // Lazily create encoder&#xD;  if (!this.encoders.hasOwnProperty(enc))&#xD;    this.encoders[enc] = this._createNamed(asn1.encoders[enc]);&#xD;  return this.encoders[enc];&#xD;};&#xD;&#xD;Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) {&#xD;  return this._getEncoder(enc).encode(data, reporter);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 209 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Reporter = __webpack_require__(46).Reporter;&#xD;var EncoderBuffer = __webpack_require__(46).EncoderBuffer;&#xD;var DecoderBuffer = __webpack_require__(46).DecoderBuffer;&#xD;var assert = __webpack_require__(32);&#xD;&#xD;// Supported tags&#xD;var tags = [&#xD;  &apos;seq&apos;, &apos;seqof&apos;, &apos;set&apos;, &apos;setof&apos;, &apos;objid&apos;, &apos;bool&apos;,&#xD;  &apos;gentime&apos;, &apos;utctime&apos;, &apos;null_&apos;, &apos;enum&apos;, &apos;int&apos;, &apos;objDesc&apos;,&#xD;  &apos;bitstr&apos;, &apos;bmpstr&apos;, &apos;charstr&apos;, &apos;genstr&apos;, &apos;graphstr&apos;, &apos;ia5str&apos;, &apos;iso646str&apos;,&#xD;  &apos;numstr&apos;, &apos;octstr&apos;, &apos;printstr&apos;, &apos;t61str&apos;, &apos;unistr&apos;, &apos;utf8str&apos;, &apos;videostr&apos;&#xD;];&#xD;&#xD;// Public methods list&#xD;var methods = [&#xD;  &apos;key&apos;, &apos;obj&apos;, &apos;use&apos;, &apos;optional&apos;, &apos;explicit&apos;, &apos;implicit&apos;, &apos;def&apos;, &apos;choice&apos;,&#xD;  &apos;any&apos;, &apos;contains&apos;&#xD;].concat(tags);&#xD;&#xD;// Overrided methods list&#xD;var overrided = [&#xD;  &apos;_peekTag&apos;, &apos;_decodeTag&apos;, &apos;_use&apos;,&#xD;  &apos;_decodeStr&apos;, &apos;_decodeObjid&apos;, &apos;_decodeTime&apos;,&#xD;  &apos;_decodeNull&apos;, &apos;_decodeInt&apos;, &apos;_decodeBool&apos;, &apos;_decodeList&apos;,&#xD;&#xD;  &apos;_encodeComposite&apos;, &apos;_encodeStr&apos;, &apos;_encodeObjid&apos;, &apos;_encodeTime&apos;,&#xD;  &apos;_encodeNull&apos;, &apos;_encodeInt&apos;, &apos;_encodeBool&apos;&#xD;];&#xD;&#xD;function Node(enc, parent) {&#xD;  var state = {};&#xD;  this._baseState = state;&#xD;&#xD;  state.enc = enc;&#xD;&#xD;  state.parent = parent || null;&#xD;  state.children = null;&#xD;&#xD;  // State&#xD;  state.tag = null;&#xD;  state.args = null;&#xD;  state.reverseArgs = null;&#xD;  state.choice = null;&#xD;  state.optional = false;&#xD;  state.any = false;&#xD;  state.obj = false;&#xD;  state.use = null;&#xD;  state.useDecoder = null;&#xD;  state.key = null;&#xD;  state[&apos;default&apos;] = null;&#xD;  state.explicit = null;&#xD;  state.implicit = null;&#xD;  state.contains = null;&#xD;&#xD;  // Should create new instance on each method&#xD;  if (!state.parent) {&#xD;    state.children = [];&#xD;    this._wrap();&#xD;  }&#xD;}&#xD;module.exports = Node;&#xD;&#xD;var stateProps = [&#xD;  &apos;enc&apos;, &apos;parent&apos;, &apos;children&apos;, &apos;tag&apos;, &apos;args&apos;, &apos;reverseArgs&apos;, &apos;choice&apos;,&#xD;  &apos;optional&apos;, &apos;any&apos;, &apos;obj&apos;, &apos;use&apos;, &apos;alteredUse&apos;, &apos;key&apos;, &apos;default&apos;, &apos;explicit&apos;,&#xD;  &apos;implicit&apos;, &apos;contains&apos;&#xD;];&#xD;&#xD;Node.prototype.clone = function clone() {&#xD;  var state = this._baseState;&#xD;  var cstate = {};&#xD;  stateProps.forEach(function(prop) {&#xD;    cstate[prop] = state[prop];&#xD;  });&#xD;  var res = new this.constructor(cstate.parent);&#xD;  res._baseState = cstate;&#xD;  return res;&#xD;};&#xD;&#xD;Node.prototype._wrap = function wrap() {&#xD;  var state = this._baseState;&#xD;  methods.forEach(function(method) {&#xD;    this[method] = function _wrappedMethod() {&#xD;      var clone = new this.constructor(this);&#xD;      state.children.push(clone);&#xD;      return clone[method].apply(clone, arguments);&#xD;    };&#xD;  }, this);&#xD;};&#xD;&#xD;Node.prototype._init = function init(body) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.parent === null);&#xD;  body.call(this);&#xD;&#xD;  // Filter children&#xD;  state.children = state.children.filter(function(child) {&#xD;    return child._baseState.parent === this;&#xD;  }, this);&#xD;  assert.equal(state.children.length, 1, &apos;Root node can have only one child&apos;);&#xD;};&#xD;&#xD;Node.prototype._useArgs = function useArgs(args) {&#xD;  var state = this._baseState;&#xD;&#xD;  // Filter children and args&#xD;  var children = args.filter(function(arg) {&#xD;    return arg instanceof this.constructor;&#xD;  }, this);&#xD;  args = args.filter(function(arg) {&#xD;    return !(arg instanceof this.constructor);&#xD;  }, this);&#xD;&#xD;  if (children.length !== 0) {&#xD;    assert(state.children === null);&#xD;    state.children = children;&#xD;&#xD;    // Replace parent to maintain backward link&#xD;    children.forEach(function(child) {&#xD;      child._baseState.parent = this;&#xD;    }, this);&#xD;  }&#xD;  if (args.length !== 0) {&#xD;    assert(state.args === null);&#xD;    state.args = args;&#xD;    state.reverseArgs = args.map(function(arg) {&#xD;      if (typeof arg !== &apos;object&apos; || arg.constructor !== Object)&#xD;        return arg;&#xD;&#xD;      var res = {};&#xD;      Object.keys(arg).forEach(function(key) {&#xD;        if (key == (key | 0))&#xD;          key |= 0;&#xD;        var value = arg[key];&#xD;        res[value] = key;&#xD;      });&#xD;      return res;&#xD;    });&#xD;  }&#xD;};&#xD;&#xD;//&#xD;// Overrided methods&#xD;//&#xD;&#xD;overrided.forEach(function(method) {&#xD;  Node.prototype[method] = function _overrided() {&#xD;    var state = this._baseState;&#xD;    throw new Error(method + &apos; not implemented for encoding: &apos; + state.enc);&#xD;  };&#xD;});&#xD;&#xD;//&#xD;// Public methods&#xD;//&#xD;&#xD;tags.forEach(function(tag) {&#xD;  Node.prototype[tag] = function _tagMethod() {&#xD;    var state = this._baseState;&#xD;    var args = Array.prototype.slice.call(arguments);&#xD;&#xD;    assert(state.tag === null);&#xD;    state.tag = tag;&#xD;&#xD;    this._useArgs(args);&#xD;&#xD;    return this;&#xD;  };&#xD;});&#xD;&#xD;Node.prototype.use = function use(item) {&#xD;  assert(item);&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.use === null);&#xD;  state.use = item;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.optional = function optional() {&#xD;  var state = this._baseState;&#xD;&#xD;  state.optional = true;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.def = function def(val) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state[&apos;default&apos;] === null);&#xD;  state[&apos;default&apos;] = val;&#xD;  state.optional = true;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.explicit = function explicit(num) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.explicit === null &amp;&amp; state.implicit === null);&#xD;  state.explicit = num;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.implicit = function implicit(num) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.explicit === null &amp;&amp; state.implicit === null);&#xD;  state.implicit = num;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.obj = function obj() {&#xD;  var state = this._baseState;&#xD;  var args = Array.prototype.slice.call(arguments);&#xD;&#xD;  state.obj = true;&#xD;&#xD;  if (args.length !== 0)&#xD;    this._useArgs(args);&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.key = function key(newKey) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.key === null);&#xD;  state.key = newKey;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.any = function any() {&#xD;  var state = this._baseState;&#xD;&#xD;  state.any = true;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.choice = function choice(obj) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.choice === null);&#xD;  state.choice = obj;&#xD;  this._useArgs(Object.keys(obj).map(function(key) {&#xD;    return obj[key];&#xD;  }));&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;Node.prototype.contains = function contains(item) {&#xD;  var state = this._baseState;&#xD;&#xD;  assert(state.use === null);&#xD;  state.contains = item;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;//&#xD;// Decoding&#xD;//&#xD;&#xD;Node.prototype._decode = function decode(input, options) {&#xD;  var state = this._baseState;&#xD;&#xD;  // Decode root node&#xD;  if (state.parent === null)&#xD;    return input.wrapResult(state.children[0]._decode(input, options));&#xD;&#xD;  var result = state[&apos;default&apos;];&#xD;  var present = true;&#xD;&#xD;  var prevKey = null;&#xD;  if (state.key !== null)&#xD;    prevKey = input.enterKey(state.key);&#xD;&#xD;  // Check if tag is there&#xD;  if (state.optional) {&#xD;    var tag = null;&#xD;    if (state.explicit !== null)&#xD;      tag = state.explicit;&#xD;    else if (state.implicit !== null)&#xD;      tag = state.implicit;&#xD;    else if (state.tag !== null)&#xD;      tag = state.tag;&#xD;&#xD;    if (tag === null &amp;&amp; !state.any) {&#xD;      // Trial and Error&#xD;      var save = input.save();&#xD;      try {&#xD;        if (state.choice === null)&#xD;          this._decodeGeneric(state.tag, input, options);&#xD;        else&#xD;          this._decodeChoice(input, options);&#xD;        present = true;&#xD;      } catch (e) {&#xD;        present = false;&#xD;      }&#xD;      input.restore(save);&#xD;    } else {&#xD;      present = this._peekTag(input, tag, state.any);&#xD;&#xD;      if (input.isError(present))&#xD;        return present;&#xD;    }&#xD;  }&#xD;&#xD;  // Push object on stack&#xD;  var prevObj;&#xD;  if (state.obj &amp;&amp; present)&#xD;    prevObj = input.enterObject();&#xD;&#xD;  if (present) {&#xD;    // Unwrap explicit values&#xD;    if (state.explicit !== null) {&#xD;      var explicit = this._decodeTag(input, state.explicit);&#xD;      if (input.isError(explicit))&#xD;        return explicit;&#xD;      input = explicit;&#xD;    }&#xD;&#xD;    var start = input.offset;&#xD;&#xD;    // Unwrap implicit and normal values&#xD;    if (state.use === null &amp;&amp; state.choice === null) {&#xD;      if (state.any)&#xD;        var save = input.save();&#xD;      var body = this._decodeTag(&#xD;        input,&#xD;        state.implicit !== null ? state.implicit : state.tag,&#xD;        state.any&#xD;      );&#xD;      if (input.isError(body))&#xD;        return body;&#xD;&#xD;      if (state.any)&#xD;        result = input.raw(save);&#xD;      else&#xD;        input = body;&#xD;    }&#xD;&#xD;    if (options &amp;&amp; options.track &amp;&amp; state.tag !== null)&#xD;      options.track(input.path(), start, input.length, &apos;tagged&apos;);&#xD;&#xD;    if (options &amp;&amp; options.track &amp;&amp; state.tag !== null)&#xD;      options.track(input.path(), input.offset, input.length, &apos;content&apos;);&#xD;&#xD;    // Select proper method for tag&#xD;    if (state.any)&#xD;      result = result;&#xD;    else if (state.choice === null)&#xD;      result = this._decodeGeneric(state.tag, input, options);&#xD;    else&#xD;      result = this._decodeChoice(input, options);&#xD;&#xD;    if (input.isError(result))&#xD;      return result;&#xD;&#xD;    // Decode children&#xD;    if (!state.any &amp;&amp; state.choice === null &amp;&amp; state.children !== null) {&#xD;      state.children.forEach(function decodeChildren(child) {&#xD;        // NOTE: We are ignoring errors here, to let parser continue with other&#xD;        // parts of encoded data&#xD;        child._decode(input, options);&#xD;      });&#xD;    }&#xD;&#xD;    // Decode contained/encoded by schema, only in bit or octet strings&#xD;    if (state.contains &amp;&amp; (state.tag === &apos;octstr&apos; || state.tag === &apos;bitstr&apos;)) {&#xD;      var data = new DecoderBuffer(result);&#xD;      result = this._getUse(state.contains, input._reporterState.obj)&#xD;          ._decode(data, options);&#xD;    }&#xD;  }&#xD;&#xD;  // Pop object&#xD;  if (state.obj &amp;&amp; present)&#xD;    result = input.leaveObject(prevObj);&#xD;&#xD;  // Set key&#xD;  if (state.key !== null &amp;&amp; (result !== null || present === true))&#xD;    input.leaveKey(prevKey, state.key, result);&#xD;  else if (prevKey !== null)&#xD;    input.exitKey(prevKey);&#xD;&#xD;  return result;&#xD;};&#xD;&#xD;Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {&#xD;  var state = this._baseState;&#xD;&#xD;  if (tag === &apos;seq&apos; || tag === &apos;set&apos;)&#xD;    return null;&#xD;  if (tag === &apos;seqof&apos; || tag === &apos;setof&apos;)&#xD;    return this._decodeList(input, tag, state.args[0], options);&#xD;  else if (/str$/.test(tag))&#xD;    return this._decodeStr(input, tag, options);&#xD;  else if (tag === &apos;objid&apos; &amp;&amp; state.args)&#xD;    return this._decodeObjid(input, state.args[0], state.args[1], options);&#xD;  else if (tag === &apos;objid&apos;)&#xD;    return this._decodeObjid(input, null, null, options);&#xD;  else if (tag === &apos;gentime&apos; || tag === &apos;utctime&apos;)&#xD;    return this._decodeTime(input, tag, options);&#xD;  else if (tag === &apos;null_&apos;)&#xD;    return this._decodeNull(input, options);&#xD;  else if (tag === &apos;bool&apos;)&#xD;    return this._decodeBool(input, options);&#xD;  else if (tag === &apos;objDesc&apos;)&#xD;    return this._decodeStr(input, tag, options);&#xD;  else if (tag === &apos;int&apos; || tag === &apos;enum&apos;)&#xD;    return this._decodeInt(input, state.args &amp;&amp; state.args[0], options);&#xD;&#xD;  if (state.use !== null) {&#xD;    return this._getUse(state.use, input._reporterState.obj)&#xD;        ._decode(input, options);&#xD;  } else {&#xD;    return input.error(&apos;unknown tag: &apos; + tag);&#xD;  }&#xD;};&#xD;&#xD;Node.prototype._getUse = function _getUse(entity, obj) {&#xD;&#xD;  var state = this._baseState;&#xD;  // Create altered use decoder if implicit is set&#xD;  state.useDecoder = this._use(entity, obj);&#xD;  assert(state.useDecoder._baseState.parent === null);&#xD;  state.useDecoder = state.useDecoder._baseState.children[0];&#xD;  if (state.implicit !== state.useDecoder._baseState.implicit) {&#xD;    state.useDecoder = state.useDecoder.clone();&#xD;    state.useDecoder._baseState.implicit = state.implicit;&#xD;  }&#xD;  return state.useDecoder;&#xD;};&#xD;&#xD;Node.prototype._decodeChoice = function decodeChoice(input, options) {&#xD;  var state = this._baseState;&#xD;  var result = null;&#xD;  var match = false;&#xD;&#xD;  Object.keys(state.choice).some(function(key) {&#xD;    var save = input.save();&#xD;    var node = state.choice[key];&#xD;    try {&#xD;      var value = node._decode(input, options);&#xD;      if (input.isError(value))&#xD;        return false;&#xD;&#xD;      result = { type: key, value: value };&#xD;      match = true;&#xD;    } catch (e) {&#xD;      input.restore(save);&#xD;      return false;&#xD;    }&#xD;    return true;&#xD;  }, this);&#xD;&#xD;  if (!match)&#xD;    return input.error(&apos;Choice not matched&apos;);&#xD;&#xD;  return result;&#xD;};&#xD;&#xD;//&#xD;// Encoding&#xD;//&#xD;&#xD;Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) {&#xD;  return new EncoderBuffer(data, this.reporter);&#xD;};&#xD;&#xD;Node.prototype._encode = function encode(data, reporter, parent) {&#xD;  var state = this._baseState;&#xD;  if (state[&apos;default&apos;] !== null &amp;&amp; state[&apos;default&apos;] === data)&#xD;    return;&#xD;&#xD;  var result = this._encodeValue(data, reporter, parent);&#xD;  if (result === undefined)&#xD;    return;&#xD;&#xD;  if (this._skipDefault(result, reporter, parent))&#xD;    return;&#xD;&#xD;  return result;&#xD;};&#xD;&#xD;Node.prototype._encodeValue = function encode(data, reporter, parent) {&#xD;  var state = this._baseState;&#xD;&#xD;  // Decode root node&#xD;  if (state.parent === null)&#xD;    return state.children[0]._encode(data, reporter || new Reporter());&#xD;&#xD;  var result = null;&#xD;&#xD;  // Set reporter to share it with a child class&#xD;  this.reporter = reporter;&#xD;&#xD;  // Check if data is there&#xD;  if (state.optional &amp;&amp; data === undefined) {&#xD;    if (state[&apos;default&apos;] !== null)&#xD;      data = state[&apos;default&apos;]&#xD;    else&#xD;      return;&#xD;  }&#xD;&#xD;  // Encode children first&#xD;  var content = null;&#xD;  var primitive = false;&#xD;  if (state.any) {&#xD;    // Anything that was given is translated to buffer&#xD;    result = this._createEncoderBuffer(data);&#xD;  } else if (state.choice) {&#xD;    result = this._encodeChoice(data, reporter);&#xD;  } else if (state.contains) {&#xD;    content = this._getUse(state.contains, parent)._encode(data, reporter);&#xD;    primitive = true;&#xD;  } else if (state.children) {&#xD;    content = state.children.map(function(child) {&#xD;      if (child._baseState.tag === &apos;null_&apos;)&#xD;        return child._encode(null, reporter, data);&#xD;&#xD;      if (child._baseState.key === null)&#xD;        return reporter.error(&apos;Child should have a key&apos;);&#xD;      var prevKey = reporter.enterKey(child._baseState.key);&#xD;&#xD;      if (typeof data !== &apos;object&apos;)&#xD;        return reporter.error(&apos;Child expected, but input is not object&apos;);&#xD;&#xD;      var res = child._encode(data[child._baseState.key], reporter, data);&#xD;      reporter.leaveKey(prevKey);&#xD;&#xD;      return res;&#xD;    }, this).filter(function(child) {&#xD;      return child;&#xD;    });&#xD;    content = this._createEncoderBuffer(content);&#xD;  } else {&#xD;    if (state.tag === &apos;seqof&apos; || state.tag === &apos;setof&apos;) {&#xD;      // TODO(indutny): this should be thrown on DSL level&#xD;      if (!(state.args &amp;&amp; state.args.length === 1))&#xD;        return reporter.error(&apos;Too many args for : &apos; + state.tag);&#xD;&#xD;      if (!Array.isArray(data))&#xD;        return reporter.error(&apos;seqof/setof, but data is not Array&apos;);&#xD;&#xD;      var child = this.clone();&#xD;      child._baseState.implicit = null;&#xD;      content = this._createEncoderBuffer(data.map(function(item) {&#xD;        var state = this._baseState;&#xD;&#xD;        return this._getUse(state.args[0], data)._encode(item, reporter);&#xD;      }, child));&#xD;    } else if (state.use !== null) {&#xD;      result = this._getUse(state.use, parent)._encode(data, reporter);&#xD;    } else {&#xD;      content = this._encodePrimitive(state.tag, data);&#xD;      primitive = true;&#xD;    }&#xD;  }&#xD;&#xD;  // Encode data itself&#xD;  var result;&#xD;  if (!state.any &amp;&amp; state.choice === null) {&#xD;    var tag = state.implicit !== null ? state.implicit : state.tag;&#xD;    var cls = state.implicit === null ? &apos;universal&apos; : &apos;context&apos;;&#xD;&#xD;    if (tag === null) {&#xD;      if (state.use === null)&#xD;        reporter.error(&apos;Tag could be ommited only for .use()&apos;);&#xD;    } else {&#xD;      if (state.use === null)&#xD;        result = this._encodeComposite(tag, primitive, cls, content);&#xD;    }&#xD;  }&#xD;&#xD;  // Wrap in explicit&#xD;  if (state.explicit !== null)&#xD;    result = this._encodeComposite(state.explicit, false, &apos;context&apos;, result);&#xD;&#xD;  return result;&#xD;};&#xD;&#xD;Node.prototype._encodeChoice = function encodeChoice(data, reporter) {&#xD;  var state = this._baseState;&#xD;&#xD;  var node = state.choice[data.type];&#xD;  if (!node) {&#xD;    assert(&#xD;        false,&#xD;        data.type + &apos; not found in &apos; +&#xD;            JSON.stringify(Object.keys(state.choice)));&#xD;  }&#xD;  return node._encode(data.value, reporter);&#xD;};&#xD;&#xD;Node.prototype._encodePrimitive = function encodePrimitive(tag, data) {&#xD;  var state = this._baseState;&#xD;&#xD;  if (/str$/.test(tag))&#xD;    return this._encodeStr(data, tag);&#xD;  else if (tag === &apos;objid&apos; &amp;&amp; state.args)&#xD;    return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);&#xD;  else if (tag === &apos;objid&apos;)&#xD;    return this._encodeObjid(data, null, null);&#xD;  else if (tag === &apos;gentime&apos; || tag === &apos;utctime&apos;)&#xD;    return this._encodeTime(data, tag);&#xD;  else if (tag === &apos;null_&apos;)&#xD;    return this._encodeNull();&#xD;  else if (tag === &apos;int&apos; || tag === &apos;enum&apos;)&#xD;    return this._encodeInt(data, state.args &amp;&amp; state.reverseArgs[0]);&#xD;  else if (tag === &apos;bool&apos;)&#xD;    return this._encodeBool(data);&#xD;  else if (tag === &apos;objDesc&apos;)&#xD;    return this._encodeStr(data, tag);&#xD;  else&#xD;    throw new Error(&apos;Unsupported tag: &apos; + tag);&#xD;};&#xD;&#xD;Node.prototype._isNumstr = function isNumstr(str) {&#xD;  return /^[0-9 ]*$/.test(str);&#xD;};&#xD;&#xD;Node.prototype._isPrintstr = function isPrintstr(str) {&#xD;  return /^[A-Za-z0-9 &apos;\(\)\+,\-\.\/:=\?]*$/.test(str);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 210 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;function Reporter(options) {&#xD;  this._reporterState = {&#xD;    obj: null,&#xD;    path: [],&#xD;    options: options || {},&#xD;    errors: []&#xD;  };&#xD;}&#xD;exports.Reporter = Reporter;&#xD;&#xD;Reporter.prototype.isError = function isError(obj) {&#xD;  return obj instanceof ReporterError;&#xD;};&#xD;&#xD;Reporter.prototype.save = function save() {&#xD;  var state = this._reporterState;&#xD;&#xD;  return { obj: state.obj, pathLen: state.path.length };&#xD;};&#xD;&#xD;Reporter.prototype.restore = function restore(data) {&#xD;  var state = this._reporterState;&#xD;&#xD;  state.obj = data.obj;&#xD;  state.path = state.path.slice(0, data.pathLen);&#xD;};&#xD;&#xD;Reporter.prototype.enterKey = function enterKey(key) {&#xD;  return this._reporterState.path.push(key);&#xD;};&#xD;&#xD;Reporter.prototype.exitKey = function exitKey(index) {&#xD;  var state = this._reporterState;&#xD;&#xD;  state.path = state.path.slice(0, index - 1);&#xD;};&#xD;&#xD;Reporter.prototype.leaveKey = function leaveKey(index, key, value) {&#xD;  var state = this._reporterState;&#xD;&#xD;  this.exitKey(index);&#xD;  if (state.obj !== null)&#xD;    state.obj[key] = value;&#xD;};&#xD;&#xD;Reporter.prototype.path = function path() {&#xD;  return this._reporterState.path.join(&apos;/&apos;);&#xD;};&#xD;&#xD;Reporter.prototype.enterObject = function enterObject() {&#xD;  var state = this._reporterState;&#xD;&#xD;  var prev = state.obj;&#xD;  state.obj = {};&#xD;  return prev;&#xD;};&#xD;&#xD;Reporter.prototype.leaveObject = function leaveObject(prev) {&#xD;  var state = this._reporterState;&#xD;&#xD;  var now = state.obj;&#xD;  state.obj = prev;&#xD;  return now;&#xD;};&#xD;&#xD;Reporter.prototype.error = function error(msg) {&#xD;  var err;&#xD;  var state = this._reporterState;&#xD;&#xD;  var inherited = msg instanceof ReporterError;&#xD;  if (inherited) {&#xD;    err = msg;&#xD;  } else {&#xD;    err = new ReporterError(state.path.map(function(elem) {&#xD;      return &apos;[&apos; + JSON.stringify(elem) + &apos;]&apos;;&#xD;    }).join(&apos;&apos;), msg.message || msg, msg.stack);&#xD;  }&#xD;&#xD;  if (!state.options.partial)&#xD;    throw err;&#xD;&#xD;  if (!inherited)&#xD;    state.errors.push(err);&#xD;&#xD;  return err;&#xD;};&#xD;&#xD;Reporter.prototype.wrapResult = function wrapResult(result) {&#xD;  var state = this._reporterState;&#xD;  if (!state.options.partial)&#xD;    return result;&#xD;&#xD;  return {&#xD;    result: this.isError(result) ? null : result,&#xD;    errors: state.errors&#xD;  };&#xD;};&#xD;&#xD;function ReporterError(path, msg) {&#xD;  this.path = path;&#xD;  this.rethrow(msg);&#xD;};&#xD;inherits(ReporterError, Error);&#xD;&#xD;ReporterError.prototype.rethrow = function rethrow(msg) {&#xD;  this.message = msg + &apos; at: &apos; + (this.path || &apos;(shallow)&apos;);&#xD;  if (Error.captureStackTrace)&#xD;    Error.captureStackTrace(this, ReporterError);&#xD;&#xD;  if (!this.stack) {&#xD;    try {&#xD;      // IE only adds stack when thrown&#xD;      throw new Error(this.message);&#xD;    } catch (e) {&#xD;      this.stack = e.stack;&#xD;    }&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 211 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var constants = __webpack_require__(109);&#xD;&#xD;exports.tagClass = {&#xD;  0: &apos;universal&apos;,&#xD;  1: &apos;application&apos;,&#xD;  2: &apos;context&apos;,&#xD;  3: &apos;private&apos;&#xD;};&#xD;exports.tagClassByName = constants._reverse(exports.tagClass);&#xD;&#xD;exports.tag = {&#xD;  0x00: &apos;end&apos;,&#xD;  0x01: &apos;bool&apos;,&#xD;  0x02: &apos;int&apos;,&#xD;  0x03: &apos;bitstr&apos;,&#xD;  0x04: &apos;octstr&apos;,&#xD;  0x05: &apos;null_&apos;,&#xD;  0x06: &apos;objid&apos;,&#xD;  0x07: &apos;objDesc&apos;,&#xD;  0x08: &apos;external&apos;,&#xD;  0x09: &apos;real&apos;,&#xD;  0x0a: &apos;enum&apos;,&#xD;  0x0b: &apos;embed&apos;,&#xD;  0x0c: &apos;utf8str&apos;,&#xD;  0x0d: &apos;relativeOid&apos;,&#xD;  0x10: &apos;seq&apos;,&#xD;  0x11: &apos;set&apos;,&#xD;  0x12: &apos;numstr&apos;,&#xD;  0x13: &apos;printstr&apos;,&#xD;  0x14: &apos;t61str&apos;,&#xD;  0x15: &apos;videostr&apos;,&#xD;  0x16: &apos;ia5str&apos;,&#xD;  0x17: &apos;utctime&apos;,&#xD;  0x18: &apos;gentime&apos;,&#xD;  0x19: &apos;graphstr&apos;,&#xD;  0x1a: &apos;iso646str&apos;,&#xD;  0x1b: &apos;genstr&apos;,&#xD;  0x1c: &apos;unistr&apos;,&#xD;  0x1d: &apos;charstr&apos;,&#xD;  0x1e: &apos;bmpstr&apos;&#xD;};&#xD;exports.tagByName = constants._reverse(exports.tag);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 212 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var decoders = exports;&#xD;&#xD;decoders.der = __webpack_require__(110);&#xD;decoders.pem = __webpack_require__(213);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 213 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;&#xD;var DERDecoder = __webpack_require__(110);&#xD;&#xD;function PEMDecoder(entity) {&#xD;  DERDecoder.call(this, entity);&#xD;  this.enc = &apos;pem&apos;;&#xD;};&#xD;inherits(PEMDecoder, DERDecoder);&#xD;module.exports = PEMDecoder;&#xD;&#xD;PEMDecoder.prototype.decode = function decode(data, options) {&#xD;  var lines = data.toString().split(/[\r\n]+/g);&#xD;&#xD;  var label = options.label.toUpperCase();&#xD;&#xD;  var re = /^-----(BEGIN|END) ([^-]+)-----$/;&#xD;  var start = -1;&#xD;  var end = -1;&#xD;  for (var i = 0; i &lt; lines.length; i++) {&#xD;    var match = lines[i].match(re);&#xD;    if (match === null)&#xD;      continue;&#xD;&#xD;    if (match[2] !== label)&#xD;      continue;&#xD;&#xD;    if (start === -1) {&#xD;      if (match[1] !== &apos;BEGIN&apos;)&#xD;        break;&#xD;      start = i;&#xD;    } else {&#xD;      if (match[1] !== &apos;END&apos;)&#xD;        break;&#xD;      end = i;&#xD;      break;&#xD;    }&#xD;  }&#xD;  if (start === -1 || end === -1)&#xD;    throw new Error(&apos;PEM section not found for: &apos; + label);&#xD;&#xD;  var base64 = lines.slice(start + 1, end).join(&apos;&apos;);&#xD;  // Remove excessive symbols&#xD;  base64.replace(/[^a-z0-9\+\/=]+/gi, &apos;&apos;);&#xD;&#xD;  var input = new Buffer(base64, &apos;base64&apos;);&#xD;  return DERDecoder.prototype.decode.call(this, input, options);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 214 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var encoders = exports;&#xD;&#xD;encoders.der = __webpack_require__(111);&#xD;encoders.pem = __webpack_require__(215);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 215 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var DEREncoder = __webpack_require__(111);&#xD;&#xD;function PEMEncoder(entity) {&#xD;  DEREncoder.call(this, entity);&#xD;  this.enc = &apos;pem&apos;;&#xD;};&#xD;inherits(PEMEncoder, DEREncoder);&#xD;module.exports = PEMEncoder;&#xD;&#xD;PEMEncoder.prototype.encode = function encode(data, options) {&#xD;  var buf = DEREncoder.prototype.encode.call(this, data);&#xD;&#xD;  var p = buf.toString(&apos;base64&apos;);&#xD;  var out = [ &apos;-----BEGIN &apos; + options.label + &apos;-----&apos; ];&#xD;  for (var i = 0; i &lt; p.length; i += 64)&#xD;    out.push(p.slice(i, i + 64));&#xD;  out.push(&apos;-----END &apos; + options.label + &apos;-----&apos;);&#xD;  return out.join(&apos;\n&apos;);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 216 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global) {&#xD;&#xD;// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js&#xD;// original notice:&#xD;&#xD;/*!&#xD; * The buffer module from node.js, for the browser.&#xD; *&#xD; * @author   Feross Aboukhadijeh &lt;feross@feross.org&gt; &lt;http://feross.org&gt;&#xD; * @license  MIT&#xD; */&#xD;function compare(a, b) {&#xD;  if (a === b) {&#xD;    return 0;&#xD;  }&#xD;&#xD;  var x = a.length;&#xD;  var y = b.length;&#xD;&#xD;  for (var i = 0, len = Math.min(x, y); i &lt; len; ++i) {&#xD;    if (a[i] !== b[i]) {&#xD;      x = a[i];&#xD;      y = b[i];&#xD;      break;&#xD;    }&#xD;  }&#xD;&#xD;  if (x &lt; y) {&#xD;    return -1;&#xD;  }&#xD;  if (y &lt; x) {&#xD;    return 1;&#xD;  }&#xD;  return 0;&#xD;}&#xD;function isBuffer(b) {&#xD;  if (global.Buffer &amp;&amp; typeof global.Buffer.isBuffer === &apos;function&apos;) {&#xD;    return global.Buffer.isBuffer(b);&#xD;  }&#xD;  return !!(b != null &amp;&amp; b._isBuffer);&#xD;}&#xD;&#xD;// based on node assert, original notice:&#xD;&#xD;// http://wiki.commonjs.org/wiki/Unit_Testing/1.0&#xD;//&#xD;// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!&#xD;//&#xD;// Originally from narwhal.js (http://narwhaljs.org)&#xD;// Copyright (c) 2009 Thomas Robinson &lt;280north.com&gt;&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;// of this software and associated documentation files (the &apos;Software&apos;), to&#xD;// deal in the Software without restriction, including without limitation the&#xD;// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or&#xD;// sell copies of the Software, and to permit persons to whom the Software is&#xD;// furnished to do so, subject to the following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included in&#xD;// all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED &apos;AS IS&apos;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN&#xD;// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION&#xD;// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;var util = __webpack_require__(74);&#xD;var hasOwn = Object.prototype.hasOwnProperty;&#xD;var pSlice = Array.prototype.slice;&#xD;var functionsHaveNames = (function () {&#xD;  return function foo() {}.name === &apos;foo&apos;;&#xD;}());&#xD;function pToString (obj) {&#xD;  return Object.prototype.toString.call(obj);&#xD;}&#xD;function isView(arrbuf) {&#xD;  if (isBuffer(arrbuf)) {&#xD;    return false;&#xD;  }&#xD;  if (typeof global.ArrayBuffer !== &apos;function&apos;) {&#xD;    return false;&#xD;  }&#xD;  if (typeof ArrayBuffer.isView === &apos;function&apos;) {&#xD;    return ArrayBuffer.isView(arrbuf);&#xD;  }&#xD;  if (!arrbuf) {&#xD;    return false;&#xD;  }&#xD;  if (arrbuf instanceof DataView) {&#xD;    return true;&#xD;  }&#xD;  if (arrbuf.buffer &amp;&amp; arrbuf.buffer instanceof ArrayBuffer) {&#xD;    return true;&#xD;  }&#xD;  return false;&#xD;}&#xD;// 1. The assert module provides functions that throw&#xD;// AssertionError&apos;s when particular conditions are not met. The&#xD;// assert module must conform to the following interface.&#xD;&#xD;var assert = module.exports = ok;&#xD;&#xD;// 2. The AssertionError is defined in assert.&#xD;// new assert.AssertionError({ message: message,&#xD;//                             actual: actual,&#xD;//                             expected: expected })&#xD;&#xD;var regex = /\s*function\s+([^\(\s]*)\s*/;&#xD;// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js&#xD;function getName(func) {&#xD;  if (!util.isFunction(func)) {&#xD;    return;&#xD;  }&#xD;  if (functionsHaveNames) {&#xD;    return func.name;&#xD;  }&#xD;  var str = func.toString();&#xD;  var match = str.match(regex);&#xD;  return match &amp;&amp; match[1];&#xD;}&#xD;assert.AssertionError = function AssertionError(options) {&#xD;  this.name = &apos;AssertionError&apos;;&#xD;  this.actual = options.actual;&#xD;  this.expected = options.expected;&#xD;  this.operator = options.operator;&#xD;  if (options.message) {&#xD;    this.message = options.message;&#xD;    this.generatedMessage = false;&#xD;  } else {&#xD;    this.message = getMessage(this);&#xD;    this.generatedMessage = true;&#xD;  }&#xD;  var stackStartFunction = options.stackStartFunction || fail;&#xD;  if (Error.captureStackTrace) {&#xD;    Error.captureStackTrace(this, stackStartFunction);&#xD;  } else {&#xD;    // non v8 browsers so we can have a stacktrace&#xD;    var err = new Error();&#xD;    if (err.stack) {&#xD;      var out = err.stack;&#xD;&#xD;      // try to strip useless frames&#xD;      var fn_name = getName(stackStartFunction);&#xD;      var idx = out.indexOf(&apos;\n&apos; + fn_name);&#xD;      if (idx &gt;= 0) {&#xD;        // once we have located the function frame&#xD;        // we need to strip out everything before it (and its line)&#xD;        var next_line = out.indexOf(&apos;\n&apos;, idx + 1);&#xD;        out = out.substring(next_line + 1);&#xD;      }&#xD;&#xD;      this.stack = out;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;// assert.AssertionError instanceof Error&#xD;util.inherits(assert.AssertionError, Error);&#xD;&#xD;function truncate(s, n) {&#xD;  if (typeof s === &apos;string&apos;) {&#xD;    return s.length &lt; n ? s : s.slice(0, n);&#xD;  } else {&#xD;    return s;&#xD;  }&#xD;}&#xD;function inspect(something) {&#xD;  if (functionsHaveNames || !util.isFunction(something)) {&#xD;    return util.inspect(something);&#xD;  }&#xD;  var rawname = getName(something);&#xD;  var name = rawname ? &apos;: &apos; + rawname : &apos;&apos;;&#xD;  return &apos;[Function&apos; +  name + &apos;]&apos;;&#xD;}&#xD;function getMessage(self) {&#xD;  return truncate(inspect(self.actual), 128) + &apos; &apos; +&#xD;         self.operator + &apos; &apos; +&#xD;         truncate(inspect(self.expected), 128);&#xD;}&#xD;&#xD;// At present only the three keys mentioned above are used and&#xD;// understood by the spec. Implementations or sub modules can pass&#xD;// other keys to the AssertionError&apos;s constructor - they will be&#xD;// ignored.&#xD;&#xD;// 3. All of the following functions must throw an AssertionError&#xD;// when a corresponding condition is not met, with a message that&#xD;// may be undefined if not provided.  All assertion methods provide&#xD;// both the actual and expected values to the assertion error for&#xD;// display purposes.&#xD;&#xD;function fail(actual, expected, message, operator, stackStartFunction) {&#xD;  throw new assert.AssertionError({&#xD;    message: message,&#xD;    actual: actual,&#xD;    expected: expected,&#xD;    operator: operator,&#xD;    stackStartFunction: stackStartFunction&#xD;  });&#xD;}&#xD;&#xD;// EXTENSION! allows for well behaved errors defined elsewhere.&#xD;assert.fail = fail;&#xD;&#xD;// 4. Pure assertion tests whether a value is truthy, as determined&#xD;// by !!guard.&#xD;// assert.ok(guard, message_opt);&#xD;// This statement is equivalent to assert.equal(true, !!guard,&#xD;// message_opt);. To test strictly for the value true, use&#xD;// assert.strictEqual(true, guard, message_opt);.&#xD;&#xD;function ok(value, message) {&#xD;  if (!value) fail(value, true, message, &apos;==&apos;, assert.ok);&#xD;}&#xD;assert.ok = ok;&#xD;&#xD;// 5. The equality assertion tests shallow, coercive equality with&#xD;// ==.&#xD;// assert.equal(actual, expected, message_opt);&#xD;&#xD;assert.equal = function equal(actual, expected, message) {&#xD;  if (actual != expected) fail(actual, expected, message, &apos;==&apos;, assert.equal);&#xD;};&#xD;&#xD;// 6. The non-equality assertion tests for whether two objects are not equal&#xD;// with != assert.notEqual(actual, expected, message_opt);&#xD;&#xD;assert.notEqual = function notEqual(actual, expected, message) {&#xD;  if (actual == expected) {&#xD;    fail(actual, expected, message, &apos;!=&apos;, assert.notEqual);&#xD;  }&#xD;};&#xD;&#xD;// 7. The equivalence assertion tests a deep equality relation.&#xD;// assert.deepEqual(actual, expected, message_opt);&#xD;&#xD;assert.deepEqual = function deepEqual(actual, expected, message) {&#xD;  if (!_deepEqual(actual, expected, false)) {&#xD;    fail(actual, expected, message, &apos;deepEqual&apos;, assert.deepEqual);&#xD;  }&#xD;};&#xD;&#xD;assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {&#xD;  if (!_deepEqual(actual, expected, true)) {&#xD;    fail(actual, expected, message, &apos;deepStrictEqual&apos;, assert.deepStrictEqual);&#xD;  }&#xD;};&#xD;&#xD;function _deepEqual(actual, expected, strict, memos) {&#xD;  // 7.1. All identical values are equivalent, as determined by ===.&#xD;  if (actual === expected) {&#xD;    return true;&#xD;  } else if (isBuffer(actual) &amp;&amp; isBuffer(expected)) {&#xD;    return compare(actual, expected) === 0;&#xD;&#xD;  // 7.2. If the expected value is a Date object, the actual value is&#xD;  // equivalent if it is also a Date object that refers to the same time.&#xD;  } else if (util.isDate(actual) &amp;&amp; util.isDate(expected)) {&#xD;    return actual.getTime() === expected.getTime();&#xD;&#xD;  // 7.3 If the expected value is a RegExp object, the actual value is&#xD;  // equivalent if it is also a RegExp object with the same source and&#xD;  // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).&#xD;  } else if (util.isRegExp(actual) &amp;&amp; util.isRegExp(expected)) {&#xD;    return actual.source === expected.source &amp;&amp;&#xD;           actual.global === expected.global &amp;&amp;&#xD;           actual.multiline === expected.multiline &amp;&amp;&#xD;           actual.lastIndex === expected.lastIndex &amp;&amp;&#xD;           actual.ignoreCase === expected.ignoreCase;&#xD;&#xD;  // 7.4. Other pairs that do not both pass typeof value == &apos;object&apos;,&#xD;  // equivalence is determined by ==.&#xD;  } else if ((actual === null || typeof actual !== &apos;object&apos;) &amp;&amp;&#xD;             (expected === null || typeof expected !== &apos;object&apos;)) {&#xD;    return strict ? actual === expected : actual == expected;&#xD;&#xD;  // If both values are instances of typed arrays, wrap their underlying&#xD;  // ArrayBuffers in a Buffer each to increase performance&#xD;  // This optimization requires the arrays to have the same type as checked by&#xD;  // Object.prototype.toString (aka pToString). Never perform binary&#xD;  // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their&#xD;  // bit patterns are not identical.&#xD;  } else if (isView(actual) &amp;&amp; isView(expected) &amp;&amp;&#xD;             pToString(actual) === pToString(expected) &amp;&amp;&#xD;             !(actual instanceof Float32Array ||&#xD;               actual instanceof Float64Array)) {&#xD;    return compare(new Uint8Array(actual.buffer),&#xD;                   new Uint8Array(expected.buffer)) === 0;&#xD;&#xD;  // 7.5 For all other Object pairs, including Array objects, equivalence is&#xD;  // determined by having the same number of owned properties (as verified&#xD;  // with Object.prototype.hasOwnProperty.call), the same set of keys&#xD;  // (although not necessarily the same order), equivalent values for every&#xD;  // corresponding key, and an identical &apos;prototype&apos; property. Note: this&#xD;  // accounts for both named and indexed properties on Arrays.&#xD;  } else if (isBuffer(actual) !== isBuffer(expected)) {&#xD;    return false;&#xD;  } else {&#xD;    memos = memos || {actual: [], expected: []};&#xD;&#xD;    var actualIndex = memos.actual.indexOf(actual);&#xD;    if (actualIndex !== -1) {&#xD;      if (actualIndex === memos.expected.indexOf(expected)) {&#xD;        return true;&#xD;      }&#xD;    }&#xD;&#xD;    memos.actual.push(actual);&#xD;    memos.expected.push(expected);&#xD;&#xD;    return objEquiv(actual, expected, strict, memos);&#xD;  }&#xD;}&#xD;&#xD;function isArguments(object) {&#xD;  return Object.prototype.toString.call(object) == &apos;[object Arguments]&apos;;&#xD;}&#xD;&#xD;function objEquiv(a, b, strict, actualVisitedObjects) {&#xD;  if (a === null || a === undefined || b === null || b === undefined)&#xD;    return false;&#xD;  // if one is a primitive, the other must be same&#xD;  if (util.isPrimitive(a) || util.isPrimitive(b))&#xD;    return a === b;&#xD;  if (strict &amp;&amp; Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))&#xD;    return false;&#xD;  var aIsArgs = isArguments(a);&#xD;  var bIsArgs = isArguments(b);&#xD;  if ((aIsArgs &amp;&amp; !bIsArgs) || (!aIsArgs &amp;&amp; bIsArgs))&#xD;    return false;&#xD;  if (aIsArgs) {&#xD;    a = pSlice.call(a);&#xD;    b = pSlice.call(b);&#xD;    return _deepEqual(a, b, strict);&#xD;  }&#xD;  var ka = objectKeys(a);&#xD;  var kb = objectKeys(b);&#xD;  var key, i;&#xD;  // having the same number of owned properties (keys incorporates&#xD;  // hasOwnProperty)&#xD;  if (ka.length !== kb.length)&#xD;    return false;&#xD;  //the same set of keys (although not necessarily the same order),&#xD;  ka.sort();&#xD;  kb.sort();&#xD;  //&#126;&#126;&#126;cheap key test&#xD;  for (i = ka.length - 1; i &gt;= 0; i--) {&#xD;    if (ka[i] !== kb[i])&#xD;      return false;&#xD;  }&#xD;  //equivalent values for every corresponding key, and&#xD;  //&#126;&#126;&#126;possibly expensive deep test&#xD;  for (i = ka.length - 1; i &gt;= 0; i--) {&#xD;    key = ka[i];&#xD;    if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))&#xD;      return false;&#xD;  }&#xD;  return true;&#xD;}&#xD;&#xD;// 8. The non-equivalence assertion tests for any deep inequality.&#xD;// assert.notDeepEqual(actual, expected, message_opt);&#xD;&#xD;assert.notDeepEqual = function notDeepEqual(actual, expected, message) {&#xD;  if (_deepEqual(actual, expected, false)) {&#xD;    fail(actual, expected, message, &apos;notDeepEqual&apos;, assert.notDeepEqual);&#xD;  }&#xD;};&#xD;&#xD;assert.notDeepStrictEqual = notDeepStrictEqual;&#xD;function notDeepStrictEqual(actual, expected, message) {&#xD;  if (_deepEqual(actual, expected, true)) {&#xD;    fail(actual, expected, message, &apos;notDeepStrictEqual&apos;, notDeepStrictEqual);&#xD;  }&#xD;}&#xD;&#xD;&#xD;// 9. The strict equality assertion tests strict equality, as determined by ===.&#xD;// assert.strictEqual(actual, expected, message_opt);&#xD;&#xD;assert.strictEqual = function strictEqual(actual, expected, message) {&#xD;  if (actual !== expected) {&#xD;    fail(actual, expected, message, &apos;===&apos;, assert.strictEqual);&#xD;  }&#xD;};&#xD;&#xD;// 10. The strict non-equality assertion tests for strict inequality, as&#xD;// determined by !==.  assert.notStrictEqual(actual, expected, message_opt);&#xD;&#xD;assert.notStrictEqual = function notStrictEqual(actual, expected, message) {&#xD;  if (actual === expected) {&#xD;    fail(actual, expected, message, &apos;!==&apos;, assert.notStrictEqual);&#xD;  }&#xD;};&#xD;&#xD;function expectedException(actual, expected) {&#xD;  if (!actual || !expected) {&#xD;    return false;&#xD;  }&#xD;&#xD;  if (Object.prototype.toString.call(expected) == &apos;[object RegExp]&apos;) {&#xD;    return expected.test(actual);&#xD;  }&#xD;&#xD;  try {&#xD;    if (actual instanceof expected) {&#xD;      return true;&#xD;    }&#xD;  } catch (e) {&#xD;    // Ignore.  The instanceof check doesn&apos;t work for arrow functions.&#xD;  }&#xD;&#xD;  if (Error.isPrototypeOf(expected)) {&#xD;    return false;&#xD;  }&#xD;&#xD;  return expected.call({}, actual) === true;&#xD;}&#xD;&#xD;function _tryBlock(block) {&#xD;  var error;&#xD;  try {&#xD;    block();&#xD;  } catch (e) {&#xD;    error = e;&#xD;  }&#xD;  return error;&#xD;}&#xD;&#xD;function _throws(shouldThrow, block, expected, message) {&#xD;  var actual;&#xD;&#xD;  if (typeof block !== &apos;function&apos;) {&#xD;    throw new TypeError(&apos;"block" argument must be a function&apos;);&#xD;  }&#xD;&#xD;  if (typeof expected === &apos;string&apos;) {&#xD;    message = expected;&#xD;    expected = null;&#xD;  }&#xD;&#xD;  actual = _tryBlock(block);&#xD;&#xD;  message = (expected &amp;&amp; expected.name ? &apos; (&apos; + expected.name + &apos;).&apos; : &apos;.&apos;) +&#xD;            (message ? &apos; &apos; + message : &apos;.&apos;);&#xD;&#xD;  if (shouldThrow &amp;&amp; !actual) {&#xD;    fail(actual, expected, &apos;Missing expected exception&apos; + message);&#xD;  }&#xD;&#xD;  var userProvidedMessage = typeof message === &apos;string&apos;;&#xD;  var isUnwantedException = !shouldThrow &amp;&amp; util.isError(actual);&#xD;  var isUnexpectedException = !shouldThrow &amp;&amp; actual &amp;&amp; !expected;&#xD;&#xD;  if ((isUnwantedException &amp;&amp;&#xD;      userProvidedMessage &amp;&amp;&#xD;      expectedException(actual, expected)) ||&#xD;      isUnexpectedException) {&#xD;    fail(actual, expected, &apos;Got unwanted exception&apos; + message);&#xD;  }&#xD;&#xD;  if ((shouldThrow &amp;&amp; actual &amp;&amp; expected &amp;&amp;&#xD;      !expectedException(actual, expected)) || (!shouldThrow &amp;&amp; actual)) {&#xD;    throw actual;&#xD;  }&#xD;}&#xD;&#xD;// 11. Expected to throw an error:&#xD;// assert.throws(block, Error_opt, message_opt);&#xD;&#xD;assert.throws = function(block, /*optional*/error, /*optional*/message) {&#xD;  _throws(true, block, error, message);&#xD;};&#xD;&#xD;// EXTENSION! This is annoying to write outside this module.&#xD;assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {&#xD;  _throws(false, block, error, message);&#xD;};&#xD;&#xD;assert.ifError = function(err) { if (err) throw err; };&#xD;&#xD;var objectKeys = Object.keys || function (obj) {&#xD;  var keys = [];&#xD;  for (var key in obj) {&#xD;    if (hasOwn.call(obj, key)) keys.push(key);&#xD;  }&#xD;  return keys;&#xD;};&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 217 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var SpriteSelectorItem = __webpack_require__(116);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var styles = __webpack_require__(520);&#xD;&#xD;var Selector = function Selector(props) {&#xD;    var items = props.items,&#xD;        newText = props.newText,&#xD;        selectedItemIndex = props.selectedItemIndex,&#xD;        onDeleteClick = props.onDeleteClick,&#xD;        onItemClick = props.onItemClick,&#xD;        onNewClick = props.onNewClick;&#xD;&#xD;&#xD;    return React.createElement(&#xD;        Box,&#xD;        { className: styles.wrapper },&#xD;        React.createElement(&#xD;            Box,&#xD;            {&#xD;                className: styles.newItem,&#xD;                onClick: onNewClick&#xD;            },&#xD;            newText&#xD;        ),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.listArea },&#xD;            items.map(function (item, index) {&#xD;                return React.createElement(SpriteSelectorItem, {&#xD;                    assetId: item.assetId,&#xD;                    className: styles.listItem,&#xD;                    costumeURL: item.url,&#xD;                    id: index,&#xD;                    key: &apos;asset-&apos; + index,&#xD;                    name: item.name,&#xD;                    selected: index === selectedItemIndex,&#xD;                    onClick: onItemClick,&#xD;                    onDeleteButtonClick: onDeleteClick&#xD;                });&#xD;            })&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;Selector.propTypes = {&#xD;    items: PropTypes.arrayOf(PropTypes.shape({&#xD;        url: PropTypes.string,&#xD;        name: PropTypes.string.isRequired&#xD;    })),&#xD;    newText: PropTypes.string.isRequired,&#xD;    onDeleteClick: PropTypes.func.isRequired,&#xD;    onItemClick: PropTypes.func.isRequired,&#xD;    onNewClick: PropTypes.func,&#xD;    selectedItemIndex: PropTypes.number.isRequired&#xD;};&#xD;&#xD;module.exports = Selector;&#xD;&#xD;/***/ }),&#xD;/* 218 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var Box = __webpack_require__(16);&#xD;var styles = __webpack_require__(521);&#xD;&#xD;var BlocksComponent = function BlocksComponent(props) {&#xD;    var componentRef = props.componentRef,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;componentRef&apos;]);&#xD;&#xD;    return React.createElement(Box, _extends({&#xD;        className: styles.blocks,&#xD;        componentRef: componentRef&#xD;    }, componentProps));&#xD;};&#xD;BlocksComponent.propTypes = {&#xD;    componentRef: PropTypes.func&#xD;};&#xD;module.exports = BlocksComponent;&#xD;&#xD;/***/ }),&#xD;/* 219 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var greenFlagIcon = __webpack_require__(544);&#xD;var styles = __webpack_require__(525);&#xD;&#xD;var GreenFlagComponent = function GreenFlagComponent(props) {&#xD;    var _classNames;&#xD;&#xD;    var active = props.active,&#xD;        onClick = props.onClick,&#xD;        title = props.title,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;active&apos;, &apos;onClick&apos;, &apos;title&apos;]);&#xD;&#xD;    return React.createElement(&apos;img&apos;, _extends({&#xD;        className: classNames((_classNames = {}, _defineProperty(_classNames, styles.greenFlag, true), _defineProperty(_classNames, styles.isActive, active), _classNames)),&#xD;        src: greenFlagIcon,&#xD;        title: title,&#xD;        onClick: onClick&#xD;    }, componentProps));&#xD;};&#xD;GreenFlagComponent.propTypes = {&#xD;    active: PropTypes.bool,&#xD;    onClick: PropTypes.func.isRequired,&#xD;    title: PropTypes.string&#xD;};&#xD;GreenFlagComponent.defaultProps = {&#xD;    active: false,&#xD;    title: &apos;Go&apos;&#xD;};&#xD;module.exports = GreenFlagComponent;&#xD;&#xD;/***/ }),&#xD;/* 220 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(484),&#xD;    Tab = _require.Tab,&#xD;    Tabs = _require.Tabs,&#xD;    TabList = _require.TabList,&#xD;    TabPanel = _require.TabPanel;&#xD;&#xD;var tabStyles = __webpack_require__(518);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var Blocks = __webpack_require__(236);&#xD;var CostumeTab = __webpack_require__(238);&#xD;var GreenFlag = __webpack_require__(239);&#xD;var TargetPane = __webpack_require__(252);&#xD;var SoundTab = __webpack_require__(246);&#xD;var Stage = __webpack_require__(250);&#xD;var StopAll = __webpack_require__(251);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var MenuBar = __webpack_require__(223);&#xD;&#xD;var styles = __webpack_require__(526);&#xD;&#xD;var GUIComponent = function GUIComponent(props) {&#xD;    var basePath = props.basePath,&#xD;        children = props.children,&#xD;        vm = props.vm,&#xD;        onTabSelect = props.onTabSelect,&#xD;        tabIndex = props.tabIndex,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;basePath&apos;, &apos;children&apos;, &apos;vm&apos;, &apos;onTabSelect&apos;, &apos;tabIndex&apos;]);&#xD;&#xD;    if (children) {&#xD;        return React.createElement(&#xD;            Box,&#xD;            componentProps,&#xD;            children&#xD;        );&#xD;    }&#xD;&#xD;    var tabClassNames = {&#xD;        tabs: styles.tabs,&#xD;        tab: classNames(tabStyles.reactTabsTab, styles.tab),&#xD;        tabList: classNames(tabStyles.reactTabsTabList, styles.tabList),&#xD;        tabPanel: classNames(tabStyles.reactTabsTabPanel, styles.tabPanel),&#xD;        tabPanelSelected: classNames(tabStyles.reactTabsTabPanelSelected, styles.isSelected),&#xD;        tabSelected: classNames(tabStyles.reactTabsTabSelected, styles.isSelected)&#xD;    };&#xD;&#xD;    return React.createElement(&#xD;        Box,&#xD;        _extends({&#xD;            className: styles.pageWrapper&#xD;        }, componentProps),&#xD;        React.createElement(MenuBar, null),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.bodyWrapper },&#xD;            React.createElement(&#xD;                Box,&#xD;                { className: styles.flexWrapper },&#xD;                React.createElement(&#xD;                    Box,&#xD;                    { className: styles.editorWrapper },&#xD;                    React.createElement(&#xD;                        Tabs,&#xD;                        {&#xD;                            className: tabClassNames.tabs,&#xD;                            forceRenderTabPanel: true // eslint-disable-line react/jsx-boolean-value&#xD;                            , selectedTabClassName: tabClassNames.tabSelected,&#xD;                            selectedTabPanelClassName: tabClassNames.tabPanelSelected,&#xD;                            onSelect: onTabSelect&#xD;                        },&#xD;                        React.createElement(&#xD;                            TabList,&#xD;                            { className: tabClassNames.tabList },&#xD;                            React.createElement(&#xD;                                Tab,&#xD;                                { className: tabClassNames.tab },&#xD;                                &apos;Scripts&apos;&#xD;                            ),&#xD;                            React.createElement(&#xD;                                Tab,&#xD;                                { className: tabClassNames.tab },&#xD;                                &apos;Costumes&apos;&#xD;                            ),&#xD;                            React.createElement(&#xD;                                Tab,&#xD;                                { className: tabClassNames.tab },&#xD;                                &apos;Sounds&apos;&#xD;                            )&#xD;                        ),&#xD;                        React.createElement(&#xD;                            TabPanel,&#xD;                            { className: tabClassNames.tabPanel },&#xD;                            React.createElement(&#xD;                                Box,&#xD;                                { className: styles.blocksWrapper },&#xD;                                React.createElement(Blocks, {&#xD;                                    grow: 1,&#xD;                                    isVisible: tabIndex === 0 // Scripts tab&#xD;                                    , options: {&#xD;                                        media: basePath + &apos;static/blocks-media/&apos;&#xD;                                    },&#xD;                                    vm: vm&#xD;                                })&#xD;                            )&#xD;                        ),&#xD;                        React.createElement(&#xD;                            TabPanel,&#xD;                            { className: tabClassNames.tabPanel },&#xD;                            React.createElement(CostumeTab, { vm: vm })&#xD;                        ),&#xD;                        React.createElement(&#xD;                            TabPanel,&#xD;                            { className: tabClassNames.tabPanel },&#xD;                            React.createElement(SoundTab, { vm: vm })&#xD;                        )&#xD;                    )&#xD;                ),&#xD;                React.createElement(&#xD;                    Box,&#xD;                    { className: styles.stageAndTargetWrapper },&#xD;                    React.createElement(&#xD;                        Box,&#xD;                        { className: styles.stageMenuWrapper },&#xD;                        React.createElement(GreenFlag, { vm: vm }),&#xD;                        React.createElement(StopAll, { vm: vm })&#xD;                    ),&#xD;                    React.createElement(&#xD;                        Box,&#xD;                        { className: styles.stageWrapper },&#xD;                        React.createElement(Stage, {&#xD;                            shrink: 0,&#xD;                            vm: vm&#xD;                        })&#xD;                    ),&#xD;                    React.createElement(&#xD;                        Box,&#xD;                        { className: styles.targetWrapper },&#xD;                        React.createElement(TargetPane, {&#xD;                            vm: vm&#xD;                        })&#xD;                    )&#xD;                )&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;GUIComponent.propTypes = {&#xD;    basePath: PropTypes.string,&#xD;    children: PropTypes.node,&#xD;    onTabSelect: PropTypes.func,&#xD;    tabIndex: PropTypes.number,&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;GUIComponent.defaultProps = {&#xD;    basePath: &apos;/&apos;&#xD;};&#xD;module.exports = GUIComponent;&#xD;&#xD;/***/ }),&#xD;/* 221 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var styles = __webpack_require__(527);&#xD;&#xD;var LibraryItem = function (_React$Component) {&#xD;    _inherits(LibraryItem, _React$Component);&#xD;&#xD;    function LibraryItem(props) {&#xD;        _classCallCheck(this, LibraryItem);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (LibraryItem.__proto__ || Object.getPrototypeOf(LibraryItem)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;, &apos;handleMouseEnter&apos;, &apos;handleMouseLeave&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(LibraryItem, [{&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick(e) {&#xD;            this.props.onSelect(this.props.id);&#xD;            e.preventDefault();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleMouseEnter&apos;,&#xD;        value: function handleMouseEnter() {&#xD;            this.props.onMouseEnter(this.props.id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleMouseLeave&apos;,&#xD;        value: function handleMouseLeave() {&#xD;            this.props.onMouseLeave(this.props.id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(&#xD;                Box,&#xD;                {&#xD;                    className: styles.libraryItem,&#xD;                    onClick: this.handleClick,&#xD;                    onMouseEnter: this.handleMouseEnter,&#xD;                    onMouseLeave: this.handleMouseLeave&#xD;                },&#xD;                React.createElement(&#xD;                    Box,&#xD;                    { className: styles.libraryItemImageContainer },&#xD;                    React.createElement(&apos;img&apos;, {&#xD;                        className: styles.libraryItemImage,&#xD;                        src: this.props.iconURL&#xD;                    })&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;span&apos;,&#xD;                    { className: styles.libraryItemName },&#xD;                    this.props.name&#xD;                )&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return LibraryItem;&#xD;}(React.Component);&#xD;&#xD;LibraryItem.propTypes = {&#xD;    iconURL: PropTypes.string.isRequired,&#xD;    id: PropTypes.number.isRequired,&#xD;    name: PropTypes.string.isRequired,&#xD;    onMouseEnter: PropTypes.func.isRequired,&#xD;    onMouseLeave: PropTypes.func.isRequired,&#xD;    onSelect: PropTypes.func.isRequired&#xD;};&#xD;&#xD;module.exports = LibraryItem;&#xD;&#xD;/***/ }),&#xD;/* 222 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var ButtonComponent = __webpack_require__(113);&#xD;&#xD;var styles = __webpack_require__(529);&#xD;&#xD;var LoadButtonComponent = function LoadButtonComponent(_ref) {&#xD;    var inputRef = _ref.inputRef,&#xD;        onChange = _ref.onChange,&#xD;        onClick = _ref.onClick,&#xD;        title = _ref.title,&#xD;        props = _objectWithoutProperties(_ref, [&apos;inputRef&apos;, &apos;onChange&apos;, &apos;onClick&apos;, &apos;title&apos;]);&#xD;&#xD;    return React.createElement(&#xD;        &apos;span&apos;,&#xD;        props,&#xD;        React.createElement(&#xD;            ButtonComponent,&#xD;            { onClick: onClick },&#xD;            title&#xD;        ),&#xD;        React.createElement(&apos;input&apos;, {&#xD;            className: styles.fileInput,&#xD;            ref: inputRef,&#xD;            type: &apos;file&apos;,&#xD;            onChange: onChange&#xD;        })&#xD;    );&#xD;};&#xD;&#xD;LoadButtonComponent.propTypes = {&#xD;    className: PropTypes.string,&#xD;    inputRef: PropTypes.func.isRequired,&#xD;    onChange: PropTypes.func.isRequired,&#xD;    onClick: PropTypes.func.isRequired,&#xD;    title: PropTypes.string&#xD;};&#xD;LoadButtonComponent.defaultProps = {&#xD;    title: &apos;Load&apos;&#xD;};&#xD;module.exports = LoadButtonComponent;&#xD;&#xD;/***/ }),&#xD;/* 223 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var LoadButton = __webpack_require__(240);&#xD;var SaveButton = __webpack_require__(244);&#xD;&#xD;var styles = __webpack_require__(530);&#xD;var scratchLogo = __webpack_require__(545);&#xD;&#xD;var MenuBar = function MenuBar() {&#xD;    return React.createElement(&#xD;        Box,&#xD;        {&#xD;            className: classNames(_defineProperty({}, styles.menuBar, true))&#xD;        },&#xD;        React.createElement(&#xD;            &apos;div&apos;,&#xD;            { className: classNames(styles.logoWrapper, styles.menuItem) },&#xD;            React.createElement(&apos;img&apos;, {&#xD;                className: styles.scratchLogo,&#xD;                src: scratchLogo&#xD;            })&#xD;        ),&#xD;        React.createElement(SaveButton, { className: styles.menuItem }),&#xD;        React.createElement(LoadButton, { className: styles.menuItem })&#xD;    );&#xD;};&#xD;&#xD;module.exports = MenuBar;&#xD;&#xD;/***/ }),&#xD;/* 224 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var ReactModal = __webpack_require__(176);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var CloseButton = __webpack_require__(114);&#xD;&#xD;var styles = __webpack_require__(531);&#xD;&#xD;var ModalComponent = function (_React$Component) {&#xD;    _inherits(ModalComponent, _React$Component);&#xD;&#xD;    function ModalComponent() {&#xD;        _classCallCheck(this, ModalComponent);&#xD;&#xD;        return _possibleConstructorReturn(this, (ModalComponent.__proto__ || Object.getPrototypeOf(ModalComponent)).apply(this, arguments));&#xD;    }&#xD;&#xD;    _createClass(ModalComponent, [{&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _this2 = this;&#xD;&#xD;            return React.createElement(&#xD;                ReactModal,&#xD;                {&#xD;                    className: styles.modalContent,&#xD;                    contentLabel: this.props.contentLabel,&#xD;                    isOpen: this.props.visible,&#xD;                    overlayClassName: styles.modalOverlay,&#xD;                    ref: function ref(m) {&#xD;                        return _this2.modal = m;&#xD;                    },&#xD;                    onRequestClose: this.props.onRequestClose&#xD;                },&#xD;                React.createElement(CloseButton, {&#xD;                    className: styles.closeButton,&#xD;                    onClick: this.props.onRequestClose&#xD;                }),&#xD;                React.createElement(&#xD;                    Box,&#xD;                    {&#xD;                        className: styles.modalChildren,&#xD;                        direction: &apos;column&apos;&#xD;                    },&#xD;                    this.props.children&#xD;                )&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return ModalComponent;&#xD;}(React.Component);&#xD;&#xD;ModalComponent.propTypes = {&#xD;    children: PropTypes.node,&#xD;    contentLabel: PropTypes.string.isRequired,&#xD;    onRequestClose: PropTypes.func.isRequired,&#xD;    visible: PropTypes.bool.isRequired&#xD;};&#xD;&#xD;module.exports = ModalComponent;&#xD;&#xD;/***/ }),&#xD;/* 225 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var React = __webpack_require__(0);&#xD;var Box = __webpack_require__(16);&#xD;var Monitor = __webpack_require__(242);&#xD;var PropTypes = __webpack_require__(2);&#xD;&#xD;var styles = __webpack_require__(532);&#xD;&#xD;var MonitorList = function MonitorList(props) {&#xD;    return React.createElement(&#xD;        Box,&#xD;        {&#xD;            className: styles.monitorList&#xD;        },&#xD;        props.monitors.map(function (monitorData) {&#xD;            return React.createElement(Monitor, _extends({}, monitorData, {&#xD;                key: monitorData.id,&#xD;                onDragEnd: props.onMonitorChange&#xD;            }));&#xD;        })&#xD;    );&#xD;};&#xD;&#xD;MonitorList.propTypes = {&#xD;    monitors: PropTypes.arrayOf(PropTypes.shape({&#xD;        color: PropTypes.string,&#xD;        label: PropTypes.string.isRequired,&#xD;        value: PropTypes.string.isRequired,&#xD;        x: PropTypes.number,&#xD;        y: PropTypes.number&#xD;    })),&#xD;    onMonitorChange: PropTypes.func.isRequired&#xD;};&#xD;&#xD;module.exports = MonitorList;&#xD;&#xD;/***/ }),&#xD;/* 226 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var React = __webpack_require__(0);&#xD;var PropTypes = __webpack_require__(2);&#xD;var Draggable = __webpack_require__(464);&#xD;var Box = __webpack_require__(16);&#xD;var styles = __webpack_require__(533);&#xD;&#xD;var categories = {&#xD;    data: &apos;#FF8C1A&apos;,&#xD;    sensing: &apos;#5CB1D6&apos;,&#xD;    sounds: &apos;#CF63CF&apos;,&#xD;    looks: &apos;#9966FF&apos;,&#xD;    motion: &apos;#4C97FF&apos;&#xD;};&#xD;&#xD;var MonitorComponent = function MonitorComponent(props) {&#xD;    return React.createElement(&#xD;        Draggable,&#xD;        {&#xD;            bounds: &apos;parent&apos;,&#xD;            defaultClassNameDragging: styles.dragging,&#xD;            defaultPosition: {&#xD;                x: props.x,&#xD;                y: props.y&#xD;            },&#xD;            onStop: props.onDragEnd&#xD;        },&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.monitor },&#xD;            React.createElement(&#xD;                Box,&#xD;                { className: styles.label },&#xD;                props.label&#xD;            ),&#xD;            React.createElement(&#xD;                Box,&#xD;                {&#xD;                    className: styles.value,&#xD;                    style: { background: categories[props.category] }&#xD;                },&#xD;                props.value&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;MonitorComponent.categories = categories;&#xD;&#xD;MonitorComponent.propTypes = {&#xD;    category: PropTypes.oneOf(Object.keys(categories)),&#xD;    label: PropTypes.string.isRequired,&#xD;    onDragEnd: PropTypes.func.isRequired,&#xD;    value: PropTypes.string.isRequired,&#xD;    x: PropTypes.number,&#xD;    y: PropTypes.number&#xD;};&#xD;&#xD;MonitorComponent.defaultProps = {&#xD;    category: &apos;data&apos;,&#xD;    x: 0,&#xD;    y: 0&#xD;};&#xD;&#xD;module.exports = MonitorComponent;&#xD;&#xD;/***/ }),&#xD;/* 227 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var ReactModal = __webpack_require__(176);&#xD;var Box = __webpack_require__(16);&#xD;&#xD;var styles = __webpack_require__(534);&#xD;&#xD;var PromptComponent = function PromptComponent(props) {&#xD;    return React.createElement(&#xD;        ReactModal,&#xD;        {&#xD;            isOpen: true,&#xD;            className: styles.modalContent,&#xD;            contentLabel: props.title,&#xD;            overlayClassName: styles.modalOverlay,&#xD;            onRequestClose: props.onCancel&#xD;        },&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.header },&#xD;            props.title&#xD;        ),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.body },&#xD;            React.createElement(&#xD;                Box,&#xD;                { className: styles.label },&#xD;                props.label&#xD;            ),&#xD;            React.createElement(&#xD;                Box,&#xD;                null,&#xD;                React.createElement(&apos;input&apos;, {&#xD;                    autoFocus: true,&#xD;                    className: styles.input,&#xD;                    placeholder: props.placeholder,&#xD;                    onChange: props.onChange,&#xD;                    onKeyPress: props.onKeyPress&#xD;                })&#xD;            ),&#xD;            React.createElement(&#xD;                Box,&#xD;                { className: styles.buttonRow },&#xD;                React.createElement(&#xD;                    &apos;button&apos;,&#xD;                    {&#xD;                        className: styles.cancelButton,&#xD;                        onClick: props.onCancel&#xD;                    },&#xD;                    &apos;Cancel&apos;&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;button&apos;,&#xD;                    {&#xD;                        className: styles.okButton,&#xD;                        onClick: props.onOk&#xD;                    },&#xD;                    &apos;OK&apos;&#xD;                )&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;PromptComponent.propTypes = {&#xD;    label: PropTypes.string.isRequired,&#xD;    onCancel: PropTypes.func.isRequired,&#xD;    onChange: PropTypes.func.isRequired,&#xD;    onKeyPress: PropTypes.func.isRequired,&#xD;    onOk: PropTypes.func.isRequired,&#xD;    placeholder: PropTypes.string,&#xD;    title: PropTypes.string.isRequired&#xD;};&#xD;&#xD;module.exports = PromptComponent;&#xD;&#xD;/***/ }),&#xD;/* 228 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var styles = __webpack_require__(535);&#xD;&#xD;var xIcon = __webpack_require__(548);&#xD;var yIcon = __webpack_require__(549);&#xD;var showIcon = __webpack_require__(547);&#xD;var hideIcon = __webpack_require__(546);&#xD;&#xD;var ROTATION_STYLES = [&apos;left-right&apos;, &apos;don\&apos;t rotate&apos;, &apos;all around&apos;];&#xD;&#xD;var SpriteInfo = function (_React$Component) {&#xD;    _inherits(SpriteInfo, _React$Component);&#xD;&#xD;    function SpriteInfo() {&#xD;        _classCallCheck(this, SpriteInfo);&#xD;&#xD;        return _possibleConstructorReturn(this, (SpriteInfo.__proto__ || Object.getPrototypeOf(SpriteInfo)).apply(this, arguments));&#xD;    }&#xD;&#xD;    _createClass(SpriteInfo, [{&#xD;        key: &apos;shouldComponentUpdate&apos;,&#xD;        value: function shouldComponentUpdate(nextProps) {&#xD;            return this.props.direction !== nextProps.direction || this.props.disabled !== nextProps.disabled || this.props.name !== nextProps.name || this.props.rotationStyle !== nextProps.rotationStyle || this.props.visible !== nextProps.visible || this.props.x !== nextProps.x || this.props.y !== nextProps.y;&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _classNames, _classNames2;&#xD;&#xD;            return React.createElement(&#xD;                Box,&#xD;                {&#xD;                    className: styles.spriteInfo&#xD;                },&#xD;                React.createElement(&#xD;                    &apos;div&apos;,&#xD;                    { className: classNames(styles.row, styles.rowPrimary) },&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabel },&#xD;                            &apos;Sprite&apos;&#xD;                        ),&#xD;                        React.createElement(&apos;input&apos;, {&#xD;                            className: classNames(styles.inputForm, styles.spriteName),&#xD;                            disabled: this.props.disabled,&#xD;                            placeholder: &apos;Name&apos;,&#xD;                            tabIndex: &apos;1&apos;,&#xD;                            type: &apos;text&apos;,&#xD;                            value: this.props.disabled ? &apos;&apos; : this.props.name,&#xD;                            onBlur: this.props.onBlurName,&#xD;                            onChange: this.props.onChangeName,&#xD;                            onKeyPress: this.props.onKeyPress&#xD;                        })&#xD;                    ),&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;div&apos;,&#xD;                            { className: styles.iconWrapper },&#xD;                            React.createElement(&apos;img&apos;, {&#xD;                                className: classNames(styles.xIcon, styles.icon),&#xD;                                src: xIcon&#xD;                            })&#xD;                        ),&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabel },&#xD;                            &apos;x&apos;&#xD;                        ),&#xD;                        React.createElement(&apos;input&apos;, {&#xD;                            className: classNames(styles.inputForm, styles.x),&#xD;                            disabled: this.props.disabled,&#xD;                            placeholder: &apos;x&apos;,&#xD;                            tabIndex: &apos;2&apos;,&#xD;                            type: &apos;text&apos;,&#xD;                            value: this.props.disabled ? &apos;&apos; : this.props.x,&#xD;                            onBlur: this.props.onBlurX,&#xD;                            onChange: this.props.onChangeX,&#xD;                            onKeyPress: this.props.onKeyPress&#xD;                        })&#xD;                    ),&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;div&apos;,&#xD;                            { className: styles.iconWrapper },&#xD;                            React.createElement(&apos;img&apos;, {&#xD;                                className: classNames(styles.yIcon, styles.icon),&#xD;                                src: yIcon&#xD;                            })&#xD;                        ),&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabel },&#xD;                            &apos;y&apos;&#xD;                        ),&#xD;                        React.createElement(&apos;input&apos;, {&#xD;                            className: classNames(styles.inputForm, styles.y),&#xD;                            disabled: this.props.disabled,&#xD;                            placeholder: &apos;y&apos;,&#xD;                            tabIndex: &apos;3&apos;,&#xD;                            type: &apos;text&apos;,&#xD;                            value: this.props.disabled ? &apos;&apos; : this.props.y,&#xD;                            onBlur: this.props.onBlurY,&#xD;                            onChange: this.props.onChangeY,&#xD;                            onKeyPress: this.props.onKeyPress&#xD;                        })&#xD;                    )&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;div&apos;,&#xD;                    { className: classNames(styles.row, styles.rowSecondary) },&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabelSecondary },&#xD;                            &apos;Show&apos;&#xD;                        ),&#xD;                        React.createElement(&#xD;                            &apos;div&apos;,&#xD;                            null,&#xD;                            React.createElement(&#xD;                                &apos;div&apos;,&#xD;                                {&#xD;                                    className: classNames(styles.radio, styles.radioLeft, styles.iconWrapper, (_classNames = {}, _defineProperty(_classNames, styles.isActive, this.props.visible &amp;&amp; !this.props.disabled), _defineProperty(_classNames, styles.isDisabled, this.props.disabled), _classNames)),&#xD;                                    tabIndex: &apos;4&apos;,&#xD;                                    onClick: this.props.onClickVisible&#xD;                                },&#xD;                                React.createElement(&apos;img&apos;, {&#xD;                                    className: styles.icon,&#xD;                                    src: showIcon&#xD;                                })&#xD;                            ),&#xD;                            React.createElement(&#xD;                                &apos;div&apos;,&#xD;                                {&#xD;                                    className: classNames(styles.radio, styles.radioRight, styles.iconWrapper, (_classNames2 = {}, _defineProperty(_classNames2, styles.isActive, !this.props.visible &amp;&amp; !this.props.disabled), _defineProperty(_classNames2, styles.isDisabled, this.props.disabled), _classNames2)),&#xD;                                    tabIndex: &apos;4&apos;,&#xD;                                    onClick: this.props.onClickNotVisible&#xD;                                },&#xD;                                React.createElement(&apos;img&apos;, {&#xD;                                    className: styles.icon,&#xD;                                    src: hideIcon&#xD;                                })&#xD;                            )&#xD;                        )&#xD;                    ),&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabelSecondary },&#xD;                            &apos;Direction&apos;&#xD;                        ),&#xD;                        React.createElement(&apos;input&apos;, {&#xD;                            className: classNames(styles.inputForm, styles.direction),&#xD;                            disabled: this.props.disabled,&#xD;                            tabIndex: &apos;5&apos;,&#xD;                            type: &apos;text&apos;,&#xD;                            value: this.props.disabled ? &apos;&apos; : this.props.direction,&#xD;                            onBlur: this.props.onBlurDirection,&#xD;                            onChange: this.props.onChangeDirection,&#xD;                            onKeyPress: this.props.onKeyPress&#xD;                        })&#xD;                    ),&#xD;                    React.createElement(&#xD;                        &apos;div&apos;,&#xD;                        { className: styles.group },&#xD;                        React.createElement(&#xD;                            &apos;span&apos;,&#xD;                            { className: styles.inputLabelSecondary },&#xD;                            &apos;Rotation&apos;&#xD;                        ),&#xD;                        React.createElement(&#xD;                            &apos;select&apos;,&#xD;                            {&#xD;                                className: classNames(styles.selectForm, styles.rotationSelect),&#xD;                                disabled: this.props.disabled,&#xD;                                value: this.props.rotationStyle,&#xD;                                onChange: this.props.onChangeRotationStyle&#xD;                            },&#xD;                            ROTATION_STYLES.map(function (style) {&#xD;                                return React.createElement(&#xD;                                    &apos;option&apos;,&#xD;                                    {&#xD;                                        key: style,&#xD;                                        value: style&#xD;                                    },&#xD;                                    style&#xD;                                );&#xD;                            })&#xD;                        )&#xD;                    )&#xD;                )&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return SpriteInfo;&#xD;}(React.Component);&#xD;&#xD;SpriteInfo.propTypes = {&#xD;    direction: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),&#xD;    disabled: PropTypes.bool,&#xD;    name: PropTypes.string,&#xD;    onBlurDirection: PropTypes.func,&#xD;    onBlurName: PropTypes.func,&#xD;    onBlurX: PropTypes.func,&#xD;    onBlurY: PropTypes.func,&#xD;    onChangeDirection: PropTypes.func,&#xD;    onChangeName: PropTypes.func,&#xD;    onChangeRotationStyle: PropTypes.func,&#xD;    onChangeX: PropTypes.func,&#xD;    onChangeY: PropTypes.func,&#xD;    onClickNotVisible: PropTypes.func,&#xD;    onClickVisible: PropTypes.func,&#xD;    onKeyPress: PropTypes.func,&#xD;    rotationStyle: PropTypes.oneOf(ROTATION_STYLES),&#xD;    visible: PropTypes.bool,&#xD;    x: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),&#xD;    y: PropTypes.oneOfType([PropTypes.string, PropTypes.number])&#xD;};&#xD;&#xD;module.exports = SpriteInfo;&#xD;&#xD;/***/ }),&#xD;/* 229 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var CostumeCanvas = __webpack_require__(115);&#xD;var CloseButton = __webpack_require__(114);&#xD;var styles = __webpack_require__(536);&#xD;&#xD;var SpriteSelectorItem = function SpriteSelectorItem(props) {&#xD;    return React.createElement(&#xD;        Box,&#xD;        {&#xD;            className: classNames(props.className, styles.spriteSelectorItem, _defineProperty({}, styles.isSelected, props.selected)),&#xD;            onClick: props.onClick&#xD;        },&#xD;        props.selected ? React.createElement(CloseButton, {&#xD;            className: styles.deleteButton,&#xD;            size: CloseButton.SIZE_SMALL,&#xD;            onClick: props.onDeleteButtonClick&#xD;        }) : null,&#xD;        props.costumeURL ? React.createElement(CostumeCanvas, {&#xD;            className: styles.spriteImage,&#xD;            height: 32,&#xD;            url: props.costumeURL,&#xD;            width: 32&#xD;        }) : null,&#xD;        React.createElement(&#xD;            &apos;div&apos;,&#xD;            { className: styles.spriteName },&#xD;            props.name&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;SpriteSelectorItem.propTypes = {&#xD;    className: PropTypes.string,&#xD;    costumeURL: PropTypes.string,&#xD;    name: PropTypes.string.isRequired,&#xD;    onClick: PropTypes.func,&#xD;    onDeleteButtonClick: PropTypes.func,&#xD;    selected: PropTypes.bool.isRequired&#xD;};&#xD;&#xD;module.exports = SpriteSelectorItem;&#xD;&#xD;/***/ }),&#xD;/* 230 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var SpriteInfo = __webpack_require__(247);&#xD;var SpriteSelectorItem = __webpack_require__(116);&#xD;var styles = __webpack_require__(537);&#xD;&#xD;var SpriteSelectorComponent = function SpriteSelectorComponent(props) {&#xD;    var onChangeSpriteDirection = props.onChangeSpriteDirection,&#xD;        onChangeSpriteName = props.onChangeSpriteName,&#xD;        onChangeSpriteRotationStyle = props.onChangeSpriteRotationStyle,&#xD;        onChangeSpriteVisibility = props.onChangeSpriteVisibility,&#xD;        onChangeSpriteX = props.onChangeSpriteX,&#xD;        onChangeSpriteY = props.onChangeSpriteY,&#xD;        onDeleteSprite = props.onDeleteSprite,&#xD;        onSelectSprite = props.onSelectSprite,&#xD;        selectedId = props.selectedId,&#xD;        sprites = props.sprites,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;onChangeSpriteDirection&apos;, &apos;onChangeSpriteName&apos;, &apos;onChangeSpriteRotationStyle&apos;, &apos;onChangeSpriteVisibility&apos;, &apos;onChangeSpriteX&apos;, &apos;onChangeSpriteY&apos;, &apos;onDeleteSprite&apos;, &apos;onSelectSprite&apos;, &apos;selectedId&apos;, &apos;sprites&apos;]);&#xD;&#xD;    var selectedSprite = sprites[selectedId];&#xD;    var spriteInfoDisabled = false;&#xD;    if (typeof selectedSprite === &apos;undefined&apos;) {&#xD;        selectedSprite = {};&#xD;        spriteInfoDisabled = true;&#xD;    }&#xD;    return React.createElement(&#xD;        Box,&#xD;        _extends({&#xD;            className: styles.spriteSelector&#xD;        }, componentProps),&#xD;        React.createElement(SpriteInfo, {&#xD;            direction: selectedSprite.direction,&#xD;            disabled: spriteInfoDisabled,&#xD;            name: selectedSprite.name,&#xD;            rotationStyle: selectedSprite.rotationStyle,&#xD;            visible: selectedSprite.visible,&#xD;            x: selectedSprite.x,&#xD;            y: selectedSprite.y,&#xD;            onChangeDirection: onChangeSpriteDirection,&#xD;            onChangeName: onChangeSpriteName,&#xD;            onChangeRotationStyle: onChangeSpriteRotationStyle,&#xD;            onChangeVisibility: onChangeSpriteVisibility,&#xD;            onChangeX: onChangeSpriteX,&#xD;            onChangeY: onChangeSpriteY&#xD;        }),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.scrollWrapper },&#xD;            React.createElement(&#xD;                Box,&#xD;                { className: styles.itemsWrapper },&#xD;                Object.keys(sprites)&#xD;                // Re-order by list order&#xD;                .sort(function (id1, id2) {&#xD;                    return sprites[id1].order - sprites[id2].order;&#xD;                }).map(function (id) {&#xD;                    return sprites[id];&#xD;                }).map(function (sprite) {&#xD;                    return React.createElement(SpriteSelectorItem, {&#xD;                        assetId: sprite.costume &amp;&amp; sprite.costume.assetId,&#xD;                        className: styles.sprite,&#xD;                        id: sprite.id,&#xD;                        key: sprite.id,&#xD;                        name: sprite.name,&#xD;                        selected: sprite.id === selectedId,&#xD;                        onClick: onSelectSprite,&#xD;                        onDeleteButtonClick: onDeleteSprite&#xD;                    });&#xD;                })&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;SpriteSelectorComponent.propTypes = {&#xD;    onChangeSpriteDirection: PropTypes.func,&#xD;    onChangeSpriteName: PropTypes.func,&#xD;    onChangeSpriteRotationStyle: PropTypes.func,&#xD;    onChangeSpriteVisibility: PropTypes.func,&#xD;    onChangeSpriteX: PropTypes.func,&#xD;    onChangeSpriteY: PropTypes.func,&#xD;    onDeleteSprite: PropTypes.func,&#xD;    onSelectSprite: PropTypes.func,&#xD;    selectedId: PropTypes.string,&#xD;    sprites: PropTypes.shape({&#xD;        id: PropTypes.shape({&#xD;            costume: PropTypes.shape({&#xD;                url: PropTypes.string,&#xD;                name: PropTypes.string.isRequired,&#xD;                bitmapResolution: PropTypes.number.isRequired,&#xD;                rotationCenterX: PropTypes.number.isRequired,&#xD;                rotationCenterY: PropTypes.number.isRequired&#xD;            }),&#xD;            name: PropTypes.string.isRequired,&#xD;            order: PropTypes.number.isRequired&#xD;        })&#xD;    })&#xD;};&#xD;&#xD;module.exports = SpriteSelectorComponent;&#xD;&#xD;/***/ }),&#xD;/* 231 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var CostumeCanvas = __webpack_require__(115);&#xD;var styles = __webpack_require__(538);&#xD;&#xD;var StageSelector = function StageSelector(props) {&#xD;    var _classNames;&#xD;&#xD;    var backdropCount = props.backdropCount,&#xD;        selected = props.selected,&#xD;        url = props.url,&#xD;        onClick = props.onClick,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;backdropCount&apos;, &apos;selected&apos;, &apos;url&apos;, &apos;onClick&apos;]);&#xD;&#xD;    return React.createElement(&#xD;        Box,&#xD;        _extends({&#xD;            className: styles.stageSelector,&#xD;            onClick: onClick&#xD;        }, componentProps),&#xD;        React.createElement(&#xD;            &apos;div&apos;,&#xD;            { className: styles.header },&#xD;            React.createElement(&#xD;                &apos;div&apos;,&#xD;                { className: styles.headerTitle },&#xD;                &apos;Stage&apos;&#xD;            )&#xD;        ),&#xD;        React.createElement(&#xD;            &apos;div&apos;,&#xD;            { className: styles.body },&#xD;            React.createElement(&#xD;                &apos;div&apos;,&#xD;                {&#xD;                    className: classNames((_classNames = {}, _defineProperty(_classNames, styles.flexWrapper, true), _defineProperty(_classNames, styles.isSelected, selected), _classNames))&#xD;                },&#xD;                url ? React.createElement(CostumeCanvas, {&#xD;                    className: styles.costumeCanvas,&#xD;                    height: 42,&#xD;                    url: url,&#xD;                    width: 56&#xD;                }) : null,&#xD;                React.createElement(&#xD;                    &apos;div&apos;,&#xD;                    { className: styles.label },&#xD;                    &apos;Backdrops&apos;&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;div&apos;,&#xD;                    { className: styles.count },&#xD;                    backdropCount&#xD;                )&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;StageSelector.propTypes = {&#xD;    backdropCount: PropTypes.number.isRequired,&#xD;    onClick: PropTypes.func,&#xD;    selected: PropTypes.bool.isRequired,&#xD;    url: PropTypes.string&#xD;};&#xD;module.exports = StageSelector;&#xD;&#xD;/***/ }),&#xD;/* 232 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var MonitorList = __webpack_require__(241);&#xD;var styles = __webpack_require__(539);&#xD;&#xD;var StageComponent = function StageComponent(props) {&#xD;    var canvasRef = props.canvasRef,&#xD;        width = props.width,&#xD;        height = props.height,&#xD;        boxProps = _objectWithoutProperties(props, [&apos;canvasRef&apos;, &apos;width&apos;, &apos;height&apos;]);&#xD;&#xD;    return React.createElement(&#xD;        Box,&#xD;        { className: styles.stageWrapper },&#xD;        React.createElement(Box, _extends({&#xD;            className: styles.stage,&#xD;            componentRef: canvasRef,&#xD;            element: &apos;canvas&apos;,&#xD;            height: height,&#xD;            width: width&#xD;        }, boxProps)),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.monitorWrapper },&#xD;            React.createElement(MonitorList, null)&#xD;        )&#xD;    );&#xD;};&#xD;StageComponent.propTypes = {&#xD;    canvasRef: PropTypes.func,&#xD;    height: PropTypes.number,&#xD;    width: PropTypes.number&#xD;};&#xD;StageComponent.defaultProps = {&#xD;    canvasRef: function canvasRef() {},&#xD;    width: 480,&#xD;    height: 360&#xD;};&#xD;module.exports = StageComponent;&#xD;&#xD;/***/ }),&#xD;/* 233 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var stopAllIcon = __webpack_require__(550);&#xD;var styles = __webpack_require__(540);&#xD;&#xD;var StopAllComponent = function StopAllComponent(props) {&#xD;    var _classNames;&#xD;&#xD;    var active = props.active,&#xD;        onClick = props.onClick,&#xD;        title = props.title,&#xD;        componentProps = _objectWithoutProperties(props, [&apos;active&apos;, &apos;onClick&apos;, &apos;title&apos;]);&#xD;&#xD;    return React.createElement(&apos;img&apos;, _extends({&#xD;        className: classNames((_classNames = {}, _defineProperty(_classNames, styles.stopAll, true), _defineProperty(_classNames, styles.isActive, active), _classNames)),&#xD;        src: stopAllIcon,&#xD;        title: title,&#xD;        onClick: onClick&#xD;    }, componentProps));&#xD;};&#xD;&#xD;StopAllComponent.propTypes = {&#xD;    active: PropTypes.bool,&#xD;    onClick: PropTypes.func.isRequired,&#xD;    title: PropTypes.string&#xD;};&#xD;&#xD;StopAllComponent.defaultProps = {&#xD;    active: false,&#xD;    title: &apos;Stop&apos;&#xD;};&#xD;&#xD;module.exports = StopAllComponent;&#xD;&#xD;/***/ }),&#xD;/* 234 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;var classNames = __webpack_require__(17);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var Box = __webpack_require__(16);&#xD;var BackdropLibrary = __webpack_require__(235);&#xD;var CostumeLibrary = __webpack_require__(237);&#xD;var SoundLibrary = __webpack_require__(245);&#xD;var SpriteLibrary = __webpack_require__(248);&#xD;var SpriteSelectorComponent = __webpack_require__(230);&#xD;var StageSelector = __webpack_require__(249);&#xD;&#xD;var styles = __webpack_require__(541);&#xD;var addIcon = __webpack_require__(551);&#xD;&#xD;/*&#xD; * Pane that contains the sprite selector, sprite info, stage selector,&#xD; * and the new sprite, costume and backdrop buttons&#xD; * @param {object} props Props for the component&#xD; * @returns {React.Component} rendered component&#xD; */&#xD;var TargetPane = function TargetPane(_ref) {&#xD;    var editingTarget = _ref.editingTarget,&#xD;        backdropLibraryVisible = _ref.backdropLibraryVisible,&#xD;        costumeLibraryVisible = _ref.costumeLibraryVisible,&#xD;        soundLibraryVisible = _ref.soundLibraryVisible,&#xD;        spriteLibraryVisible = _ref.spriteLibraryVisible,&#xD;        onChangeSpriteDirection = _ref.onChangeSpriteDirection,&#xD;        onChangeSpriteName = _ref.onChangeSpriteName,&#xD;        onChangeSpriteRotationStyle = _ref.onChangeSpriteRotationStyle,&#xD;        onChangeSpriteVisibility = _ref.onChangeSpriteVisibility,&#xD;        onChangeSpriteX = _ref.onChangeSpriteX,&#xD;        onChangeSpriteY = _ref.onChangeSpriteY,&#xD;        onDeleteSprite = _ref.onDeleteSprite,&#xD;        onNewSpriteClick = _ref.onNewSpriteClick,&#xD;        onNewBackdropClick = _ref.onNewBackdropClick,&#xD;        onRequestCloseBackdropLibrary = _ref.onRequestCloseBackdropLibrary,&#xD;        onRequestCloseCostumeLibrary = _ref.onRequestCloseCostumeLibrary,&#xD;        onRequestCloseSoundLibrary = _ref.onRequestCloseSoundLibrary,&#xD;        onRequestCloseSpriteLibrary = _ref.onRequestCloseSpriteLibrary,&#xD;        onSelectSprite = _ref.onSelectSprite,&#xD;        stage = _ref.stage,&#xD;        sprites = _ref.sprites,&#xD;        vm = _ref.vm,&#xD;        componentProps = _objectWithoutProperties(_ref, [&apos;editingTarget&apos;, &apos;backdropLibraryVisible&apos;, &apos;costumeLibraryVisible&apos;, &apos;soundLibraryVisible&apos;, &apos;spriteLibraryVisible&apos;, &apos;onChangeSpriteDirection&apos;, &apos;onChangeSpriteName&apos;, &apos;onChangeSpriteRotationStyle&apos;, &apos;onChangeSpriteVisibility&apos;, &apos;onChangeSpriteX&apos;, &apos;onChangeSpriteY&apos;, &apos;onDeleteSprite&apos;, &apos;onNewSpriteClick&apos;, &apos;onNewBackdropClick&apos;, &apos;onRequestCloseBackdropLibrary&apos;, &apos;onRequestCloseCostumeLibrary&apos;, &apos;onRequestCloseSoundLibrary&apos;, &apos;onRequestCloseSpriteLibrary&apos;, &apos;onSelectSprite&apos;, &apos;stage&apos;, &apos;sprites&apos;, &apos;vm&apos;]);&#xD;&#xD;    return React.createElement(&#xD;        Box,&#xD;        _extends({&#xD;            className: styles.targetPane&#xD;        }, componentProps),&#xD;        React.createElement(SpriteSelectorComponent, {&#xD;            selectedId: editingTarget,&#xD;            sprites: sprites,&#xD;            onChangeSpriteDirection: onChangeSpriteDirection,&#xD;            onChangeSpriteName: onChangeSpriteName,&#xD;            onChangeSpriteRotationStyle: onChangeSpriteRotationStyle,&#xD;            onChangeSpriteVisibility: onChangeSpriteVisibility,&#xD;            onChangeSpriteX: onChangeSpriteX,&#xD;            onChangeSpriteY: onChangeSpriteY,&#xD;            onDeleteSprite: onDeleteSprite,&#xD;            onSelectSprite: onSelectSprite&#xD;        }),&#xD;        React.createElement(&#xD;            Box,&#xD;            { className: styles.stageSelectorWrapper },&#xD;            stage.id &amp;&amp; React.createElement(StageSelector, {&#xD;                assetId: stage.costume &amp;&amp; stage.costume.assetId,&#xD;                backdropCount: stage.costumeCount,&#xD;                id: stage.id,&#xD;                selected: stage.id === editingTarget,&#xD;                onSelect: onSelectSprite&#xD;            }),&#xD;            React.createElement(&#xD;                Box,&#xD;                null,&#xD;                React.createElement(&#xD;                    &apos;button&apos;,&#xD;                    {&#xD;                        className: classNames(styles.addButtonWrapper, styles.addButtonWrapperSprite),&#xD;                        onClick: onNewSpriteClick&#xD;                    },&#xD;                    React.createElement(&apos;img&apos;, {&#xD;                        className: styles.addButton,&#xD;                        src: addIcon&#xD;                    })&#xD;                ),&#xD;                React.createElement(&#xD;                    &apos;button&apos;,&#xD;                    {&#xD;                        className: classNames(styles.addButtonWrapper, styles.addButtonWrapperStage),&#xD;                        onClick: onNewBackdropClick&#xD;                    },&#xD;                    React.createElement(&apos;img&apos;, {&#xD;                        className: styles.addButton,&#xD;                        src: addIcon&#xD;                    })&#xD;                ),&#xD;                React.createElement(SpriteLibrary, {&#xD;                    visible: spriteLibraryVisible,&#xD;                    vm: vm,&#xD;                    onRequestClose: onRequestCloseSpriteLibrary&#xD;                }),&#xD;                React.createElement(CostumeLibrary, {&#xD;                    visible: costumeLibraryVisible,&#xD;                    vm: vm,&#xD;                    onRequestClose: onRequestCloseCostumeLibrary&#xD;                }),&#xD;                React.createElement(SoundLibrary, {&#xD;                    visible: soundLibraryVisible,&#xD;                    vm: vm,&#xD;                    onRequestClose: onRequestCloseSoundLibrary&#xD;                }),&#xD;                React.createElement(BackdropLibrary, {&#xD;                    visible: backdropLibraryVisible,&#xD;                    vm: vm,&#xD;                    onRequestClose: onRequestCloseBackdropLibrary&#xD;                })&#xD;            )&#xD;        )&#xD;    );&#xD;};&#xD;&#xD;var spriteShape = PropTypes.shape({&#xD;    costume: PropTypes.shape({&#xD;        url: PropTypes.string,&#xD;        name: PropTypes.string.isRequired,&#xD;        bitmapResolution: PropTypes.number.isRequired,&#xD;        rotationCenterX: PropTypes.number.isRequired,&#xD;        rotationCenterY: PropTypes.number.isRequired&#xD;    }),&#xD;    direction: PropTypes.number,&#xD;    id: PropTypes.string,&#xD;    name: PropTypes.string,&#xD;    order: PropTypes.number,&#xD;    rotationStyle: PropTypes.string,&#xD;    visibility: PropTypes.bool,&#xD;    x: PropTypes.number,&#xD;    y: PropTypes.number&#xD;});&#xD;&#xD;TargetPane.propTypes = {&#xD;    backdropLibraryVisible: PropTypes.bool,&#xD;    costumeLibraryVisible: PropTypes.bool,&#xD;    editingTarget: PropTypes.string,&#xD;    onChangeSpriteDirection: PropTypes.func,&#xD;    onChangeSpriteName: PropTypes.func,&#xD;    onChangeSpriteRotationStyle: PropTypes.func,&#xD;    onChangeSpriteVisibility: PropTypes.func,&#xD;    onChangeSpriteX: PropTypes.func,&#xD;    onChangeSpriteY: PropTypes.func,&#xD;    onDeleteSprite: PropTypes.func,&#xD;    onNewBackdropClick: PropTypes.func,&#xD;    onNewSpriteClick: PropTypes.func,&#xD;    onRequestCloseBackdropLibrary: PropTypes.func,&#xD;    onRequestCloseCostumeLibrary: PropTypes.func,&#xD;    onRequestCloseSoundLibrary: PropTypes.func,&#xD;    onRequestCloseSpriteLibrary: PropTypes.func,&#xD;    onSelectSprite: PropTypes.func,&#xD;    soundLibraryVisible: PropTypes.bool,&#xD;    spriteLibraryVisible: PropTypes.bool,&#xD;    sprites: PropTypes.objectOf(spriteShape),&#xD;    stage: spriteShape,&#xD;    vm: PropTypes.instanceOf(VM)&#xD;};&#xD;&#xD;module.exports = TargetPane;&#xD;&#xD;/***/ }),&#xD;/* 235 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var backdropLibraryContent = __webpack_require__(563);&#xD;var LibraryComponent = __webpack_require__(54);&#xD;&#xD;var BackdropLibrary = function (_React$Component) {&#xD;    _inherits(BackdropLibrary, _React$Component);&#xD;&#xD;    function BackdropLibrary(props) {&#xD;        _classCallCheck(this, BackdropLibrary);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (BackdropLibrary.__proto__ || Object.getPrototypeOf(BackdropLibrary)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleItemSelect&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(BackdropLibrary, [{&#xD;        key: &apos;handleItemSelect&apos;,&#xD;        value: function handleItemSelect(item) {&#xD;            var vmBackdrop = {&#xD;                name: item.name,&#xD;                rotationCenterX: item.info[0] &amp;&amp; item.info[0] / 2,&#xD;                rotationCenterY: item.info[1] &amp;&amp; item.info[1] / 2,&#xD;                bitmapResolution: item.info.length &gt; 2 ? item.info[2] : 1,&#xD;                skinId: null&#xD;            };&#xD;            this.props.vm.addBackdrop(item.md5, vmBackdrop);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(LibraryComponent, {&#xD;                data: backdropLibraryContent,&#xD;                title: &apos;Backdrop Library&apos;,&#xD;                visible: this.props.visible,&#xD;                onItemSelected: this.handleItemSelect,&#xD;                onRequestClose: this.props.onRequestClose&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return BackdropLibrary;&#xD;}(React.Component);&#xD;&#xD;BackdropLibrary.propTypes = {&#xD;    onRequestClose: PropTypes.func,&#xD;    visible: PropTypes.bool,&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;module.exports = BackdropLibrary;&#xD;&#xD;/***/ }),&#xD;/* 236 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var defaultsDeep = __webpack_require__(362);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VMScratchBlocks = __webpack_require__(254);&#xD;var VM = __webpack_require__(18);&#xD;var Prompt = __webpack_require__(243);&#xD;var BlocksComponent = __webpack_require__(218);&#xD;&#xD;var addFunctionListener = function addFunctionListener(object, property, callback) {&#xD;    var oldFn = object[property];&#xD;    object[property] = function () {&#xD;        var result = oldFn.apply(this, arguments);&#xD;        callback.apply(this, result);&#xD;        return result;&#xD;    };&#xD;};&#xD;&#xD;var Blocks = function (_React$Component) {&#xD;    _inherits(Blocks, _React$Component);&#xD;&#xD;    function Blocks(props) {&#xD;        _classCallCheck(this, Blocks);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (Blocks.__proto__ || Object.getPrototypeOf(Blocks)).call(this, props));&#xD;&#xD;        _this.ScratchBlocks = VMScratchBlocks(props.vm);&#xD;        bindAll(_this, [&apos;attachVM&apos;, &apos;detachVM&apos;, &apos;handlePromptStart&apos;, &apos;handlePromptCallback&apos;, &apos;handlePromptClose&apos;, &apos;onScriptGlowOn&apos;, &apos;onScriptGlowOff&apos;, &apos;onBlockGlowOn&apos;, &apos;onBlockGlowOff&apos;, &apos;onVisualReport&apos;, &apos;onWorkspaceUpdate&apos;, &apos;onWorkspaceMetricsChange&apos;, &apos;setBlocks&apos;]);&#xD;        _this.ScratchBlocks.prompt = _this.handlePromptStart;&#xD;        _this.state = {&#xD;            workspaceMetrics: {},&#xD;            prompt: null&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(Blocks, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            var workspaceConfig = defaultsDeep({}, Blocks.defaultOptions, this.props.options);&#xD;            this.workspace = this.ScratchBlocks.inject(this.blocks, workspaceConfig);&#xD;&#xD;            // @todo change this when blockly supports UI events&#xD;            addFunctionListener(this.workspace, &apos;translate&apos;, this.onWorkspaceMetricsChange);&#xD;            addFunctionListener(this.workspace, &apos;zoom&apos;, this.onWorkspaceMetricsChange);&#xD;&#xD;            this.attachVM();&#xD;        }&#xD;    }, {&#xD;        key: &apos;shouldComponentUpdate&apos;,&#xD;        value: function shouldComponentUpdate(nextProps, nextState) {&#xD;            return this.state.prompt !== nextState.prompt || this.props.isVisible !== nextProps.isVisible;&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentDidUpdate&apos;,&#xD;        value: function componentDidUpdate(prevProps) {&#xD;            if (this.props.isVisible === prevProps.isVisible) {&#xD;                return;&#xD;            }&#xD;&#xD;            // @todo hack to resize blockly manually in case resize happened while hidden&#xD;            if (this.props.isVisible) {&#xD;                // Scripts tab&#xD;                window.dispatchEvent(new Event(&apos;resize&apos;));&#xD;                this.workspace.setVisible(true);&#xD;                this.workspace.toolbox_.refreshSelection();&#xD;            } else {&#xD;                this.workspace.setVisible(false);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            this.detachVM();&#xD;            this.workspace.dispose();&#xD;        }&#xD;    }, {&#xD;        key: &apos;attachVM&apos;,&#xD;        value: function attachVM() {&#xD;            this.workspace.addChangeListener(this.props.vm.blockListener);&#xD;            this.flyoutWorkspace = this.workspace.getFlyout().getWorkspace();&#xD;            this.flyoutWorkspace.addChangeListener(this.props.vm.flyoutBlockListener);&#xD;            this.flyoutWorkspace.addChangeListener(this.props.vm.monitorBlockListener);&#xD;            this.props.vm.addListener(&apos;SCRIPT_GLOW_ON&apos;, this.onScriptGlowOn);&#xD;            this.props.vm.addListener(&apos;SCRIPT_GLOW_OFF&apos;, this.onScriptGlowOff);&#xD;            this.props.vm.addListener(&apos;BLOCK_GLOW_ON&apos;, this.onBlockGlowOn);&#xD;            this.props.vm.addListener(&apos;BLOCK_GLOW_OFF&apos;, this.onBlockGlowOff);&#xD;            this.props.vm.addListener(&apos;VISUAL_REPORT&apos;, this.onVisualReport);&#xD;            this.props.vm.addListener(&apos;workspaceUpdate&apos;, this.onWorkspaceUpdate);&#xD;        }&#xD;    }, {&#xD;        key: &apos;detachVM&apos;,&#xD;        value: function detachVM() {&#xD;            this.props.vm.removeListener(&apos;SCRIPT_GLOW_ON&apos;, this.onScriptGlowOn);&#xD;            this.props.vm.removeListener(&apos;SCRIPT_GLOW_OFF&apos;, this.onScriptGlowOff);&#xD;            this.props.vm.removeListener(&apos;BLOCK_GLOW_ON&apos;, this.onBlockGlowOn);&#xD;            this.props.vm.removeListener(&apos;BLOCK_GLOW_OFF&apos;, this.onBlockGlowOff);&#xD;            this.props.vm.removeListener(&apos;VISUAL_REPORT&apos;, this.onVisualReport);&#xD;            this.props.vm.removeListener(&apos;workspaceUpdate&apos;, this.onWorkspaceUpdate);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onWorkspaceMetricsChange&apos;,&#xD;        value: function onWorkspaceMetricsChange() {&#xD;            var target = this.props.vm.editingTarget;&#xD;            if (target &amp;&amp; target.id) {&#xD;                var workspaceMetrics = Object.assign({}, this.state.workspaceMetrics, _defineProperty({}, target.id, {&#xD;                    scrollX: this.workspace.scrollX,&#xD;                    scrollY: this.workspace.scrollY,&#xD;                    scale: this.workspace.scale&#xD;                }));&#xD;                this.setState({ workspaceMetrics: workspaceMetrics });&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;onScriptGlowOn&apos;,&#xD;        value: function onScriptGlowOn(data) {&#xD;            this.workspace.glowStack(data.id, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onScriptGlowOff&apos;,&#xD;        value: function onScriptGlowOff(data) {&#xD;            this.workspace.glowStack(data.id, false);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onBlockGlowOn&apos;,&#xD;        value: function onBlockGlowOn(data) {&#xD;            this.workspace.glowBlock(data.id, true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onBlockGlowOff&apos;,&#xD;        value: function onBlockGlowOff(data) {&#xD;            this.workspace.glowBlock(data.id, false);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onVisualReport&apos;,&#xD;        value: function onVisualReport(data) {&#xD;            this.workspace.reportValue(data.id, data.value);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onWorkspaceUpdate&apos;,&#xD;        value: function onWorkspaceUpdate(data) {&#xD;            if (this.props.vm.editingTarget &amp;&amp; !this.state.workspaceMetrics[this.props.vm.editingTarget.id]) {&#xD;                this.onWorkspaceMetricsChange();&#xD;            }&#xD;&#xD;            this.ScratchBlocks.Events.disable();&#xD;            this.workspace.clear();&#xD;&#xD;            var dom = this.ScratchBlocks.Xml.textToDom(data.xml);&#xD;            this.ScratchBlocks.Xml.domToWorkspace(dom, this.workspace);&#xD;            this.ScratchBlocks.Events.enable();&#xD;            this.workspace.toolbox_.refreshSelection();&#xD;&#xD;            if (this.props.vm.editingTarget &amp;&amp; this.state.workspaceMetrics[this.props.vm.editingTarget.id]) {&#xD;                var _state$workspaceMetri = this.state.workspaceMetrics[this.props.vm.editingTarget.id],&#xD;                    scrollX = _state$workspaceMetri.scrollX,&#xD;                    scrollY = _state$workspaceMetri.scrollY,&#xD;                    scale = _state$workspaceMetri.scale;&#xD;&#xD;                this.workspace.scrollX = scrollX;&#xD;                this.workspace.scrollY = scrollY;&#xD;                this.workspace.scale = scale;&#xD;                this.workspace.resize();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;setBlocks&apos;,&#xD;        value: function setBlocks(blocks) {&#xD;            this.blocks = blocks;&#xD;        }&#xD;    }, {&#xD;        key: &apos;handlePromptStart&apos;,&#xD;        value: function handlePromptStart(message, defaultValue, callback) {&#xD;            this.setState({ prompt: { callback: callback, message: message, defaultValue: defaultValue } });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handlePromptCallback&apos;,&#xD;        value: function handlePromptCallback(data) {&#xD;            this.state.prompt.callback(data);&#xD;            this.handlePromptClose();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handlePromptClose&apos;,&#xD;        value: function handlePromptClose() {&#xD;            this.setState({ prompt: null });&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                options = _props.options,&#xD;                vm = _props.vm,&#xD;                isVisible = _props.isVisible,&#xD;                props = _objectWithoutProperties(_props, [&apos;options&apos;, &apos;vm&apos;, &apos;isVisible&apos;]);&#xD;&#xD;            return React.createElement(&#xD;                &apos;div&apos;,&#xD;                null,&#xD;                React.createElement(BlocksComponent, _extends({&#xD;                    componentRef: this.setBlocks&#xD;                }, props)),&#xD;                this.state.prompt ? React.createElement(Prompt, {&#xD;                    label: this.state.prompt.message,&#xD;                    placeholder: this.state.prompt.defaultValue,&#xD;                    title: &apos;New Variable&apos; // @todo the only prompt is for new variables&#xD;                    , onCancel: this.handlePromptClose,&#xD;                    onOk: this.handlePromptCallback&#xD;                }) : null&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return Blocks;&#xD;}(React.Component);&#xD;&#xD;Blocks.propTypes = {&#xD;    isVisible: PropTypes.bool.isRequired,&#xD;    options: PropTypes.shape({&#xD;        media: PropTypes.string,&#xD;        zoom: PropTypes.shape({&#xD;            controls: PropTypes.bool,&#xD;            wheel: PropTypes.bool,&#xD;            startScale: PropTypes.number&#xD;        }),&#xD;        colours: PropTypes.shape({&#xD;            workspace: PropTypes.string,&#xD;            flyout: PropTypes.string,&#xD;            toolbox: PropTypes.string,&#xD;            toolboxSelected: PropTypes.string,&#xD;            scrollbar: PropTypes.string,&#xD;            scrollbarHover: PropTypes.string,&#xD;            insertionMarker: PropTypes.string,&#xD;            insertionMarkerOpacity: PropTypes.number,&#xD;            fieldShadow: PropTypes.string,&#xD;            dragShadowOpacity: PropTypes.number&#xD;        })&#xD;    }),&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;Blocks.defaultOptions = {&#xD;    zoom: {&#xD;        controls: true,&#xD;        wheel: true,&#xD;        startScale: 0.75&#xD;    },&#xD;    grid: {&#xD;        spacing: 40,&#xD;        length: 2,&#xD;        colour: &apos;#7C8083&apos;&#xD;    },&#xD;    colours: {&#xD;        workspace: &apos;#7C8083&apos;,&#xD;        flyout: &apos;#C0C3C6&apos;,&#xD;        toolbox: &apos;#6A6A6A&apos;,&#xD;        toolboxSelected: &apos;#5498C7&apos;,&#xD;        scrollbar: &apos;#C0C3C6&apos;,&#xD;        scrollbarHover: &apos;#CECDCE&apos;,&#xD;        insertionMarker: &apos;#21211F&apos;,&#xD;        insertionMarkerOpacity: 0.2,&#xD;        fieldShadow: &apos;rgba(255, 255, 255, 0.3)&apos;,&#xD;        dragShadowOpacity: 0.6&#xD;    }&#xD;};&#xD;&#xD;Blocks.defaultProps = {&#xD;    options: Blocks.defaultOptions&#xD;};&#xD;&#xD;module.exports = Blocks;&#xD;&#xD;/***/ }),&#xD;/* 237 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var costumeLibraryContent = __webpack_require__(564);&#xD;var LibraryComponent = __webpack_require__(54);&#xD;&#xD;var CostumeLibrary = function (_React$Component) {&#xD;    _inherits(CostumeLibrary, _React$Component);&#xD;&#xD;    function CostumeLibrary(props) {&#xD;        _classCallCheck(this, CostumeLibrary);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (CostumeLibrary.__proto__ || Object.getPrototypeOf(CostumeLibrary)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleItemSelected&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(CostumeLibrary, [{&#xD;        key: &apos;handleItemSelected&apos;,&#xD;        value: function handleItemSelected(item) {&#xD;            var vmCostume = {&#xD;                name: item.name,&#xD;                rotationCenterX: item.info[0],&#xD;                rotationCenterY: item.info[1],&#xD;                bitmapResolution: item.info.length &gt; 2 ? item.info[2] : 1,&#xD;                skinId: null&#xD;            };&#xD;            this.props.vm.addCostume(item.md5, vmCostume);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(LibraryComponent, {&#xD;                data: costumeLibraryContent,&#xD;                title: &apos;Costume Library&apos;,&#xD;                visible: this.props.visible,&#xD;                onItemSelected: this.handleItemSelected,&#xD;                onRequestClose: this.props.onRequestClose&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return CostumeLibrary;&#xD;}(React.Component);&#xD;&#xD;CostumeLibrary.propTypes = {&#xD;    onRequestClose: PropTypes.func,&#xD;    visible: PropTypes.bool,&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;module.exports = CostumeLibrary;&#xD;&#xD;/***/ }),&#xD;/* 238 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var bindAll = __webpack_require__(9);&#xD;&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var AssetPanel = __webpack_require__(112);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var _require2 = __webpack_require__(55),&#xD;    openCostumeLibrary = _require2.openCostumeLibrary,&#xD;    openBackdropLibrary = _require2.openBackdropLibrary;&#xD;&#xD;var CostumeTab = function (_React$Component) {&#xD;    _inherits(CostumeTab, _React$Component);&#xD;&#xD;    function CostumeTab(props) {&#xD;        _classCallCheck(this, CostumeTab);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (CostumeTab.__proto__ || Object.getPrototypeOf(CostumeTab)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleSelectCostume&apos;, &apos;handleDeleteCostume&apos;]);&#xD;        _this.state = { selectedCostumeIndex: 0 };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(CostumeTab, [{&#xD;        key: &apos;componentWillReceiveProps&apos;,&#xD;        value: function componentWillReceiveProps(nextProps) {&#xD;            var editingTarget = nextProps.editingTarget,&#xD;                sprites = nextProps.sprites,&#xD;                stage = nextProps.stage;&#xD;&#xD;&#xD;            var target = editingTarget &amp;&amp; sprites[editingTarget] ? sprites[editingTarget] : stage;&#xD;            if (target &amp;&amp; target.costumes &amp;&amp; this.state.selectedCostumeIndex &gt; target.costumes.length - 1) {&#xD;                this.setState({ selectedCostumeIndex: target.costumes.length - 1 });&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleSelectCostume&apos;,&#xD;        value: function handleSelectCostume(costumeIndex) {&#xD;            this.setState({ selectedCostumeIndex: costumeIndex });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleDeleteCostume&apos;,&#xD;        value: function handleDeleteCostume(costumeIndex) {&#xD;            this.props.vm.deleteCostume(costumeIndex);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                editingTarget = _props.editingTarget,&#xD;                sprites = _props.sprites,&#xD;                stage = _props.stage,&#xD;                onNewCostumeClick = _props.onNewCostumeClick,&#xD;                onNewBackdropClick = _props.onNewBackdropClick;&#xD;&#xD;&#xD;            var target = editingTarget &amp;&amp; sprites[editingTarget] ? sprites[editingTarget] : stage;&#xD;&#xD;            if (!target) {&#xD;                return null;&#xD;            }&#xD;&#xD;            var addText = target.isStage ? &apos;Add Backdrop&apos; : &apos;Add Costume&apos;;&#xD;            var addFunc = target.isStage ? onNewBackdropClick : onNewCostumeClick;&#xD;&#xD;            return React.createElement(AssetPanel, {&#xD;                items: target.costumes || [],&#xD;                newText: addText,&#xD;                selectedItemIndex: this.state.selectedCostumeIndex,&#xD;                onDeleteClick: this.handleDeleteCostume,&#xD;                onItemClick: this.handleSelectCostume,&#xD;                onNewClick: addFunc&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return CostumeTab;&#xD;}(React.Component);&#xD;&#xD;CostumeTab.propTypes = {&#xD;    editingTarget: PropTypes.string,&#xD;    onNewBackdropClick: PropTypes.func.isRequired,&#xD;    onNewCostumeClick: PropTypes.func.isRequired,&#xD;    sprites: PropTypes.shape({&#xD;        id: PropTypes.shape({&#xD;            costumes: PropTypes.arrayOf(PropTypes.shape({&#xD;                url: PropTypes.string,&#xD;                name: PropTypes.string.isRequired&#xD;            }))&#xD;        })&#xD;    }),&#xD;    stage: PropTypes.shape({&#xD;        sounds: PropTypes.arrayOf(PropTypes.shape({&#xD;            name: PropTypes.string.isRequired&#xD;        }))&#xD;    }),&#xD;    vm: PropTypes.instanceOf(VM)&#xD;};&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        editingTarget: state.targets.editingTarget,&#xD;        sprites: state.targets.sprites,&#xD;        stage: state.targets.stage,&#xD;        costumeLibraryVisible: state.modals.costumeLibrary,&#xD;        backdropLibraryVisible: state.modals.backdropLibrary&#xD;    };&#xD;};&#xD;&#xD;var mapDispatchToProps = function mapDispatchToProps(dispatch) {&#xD;    return {&#xD;        onNewBackdropClick: function onNewBackdropClick(e) {&#xD;            e.preventDefault();&#xD;            dispatch(openBackdropLibrary());&#xD;        },&#xD;        onNewCostumeClick: function onNewCostumeClick(e) {&#xD;            e.preventDefault();&#xD;            dispatch(openCostumeLibrary());&#xD;        }&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, mapDispatchToProps)(CostumeTab);&#xD;&#xD;/***/ }),&#xD;/* 239 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var GreenFlagComponent = __webpack_require__(219);&#xD;&#xD;var GreenFlag = function (_React$Component) {&#xD;    _inherits(GreenFlag, _React$Component);&#xD;&#xD;    function GreenFlag(props) {&#xD;        _classCallCheck(this, GreenFlag);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (GreenFlag.__proto__ || Object.getPrototypeOf(GreenFlag)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;, &apos;handleKeyDown&apos;, &apos;handleKeyUp&apos;, &apos;onProjectRunStart&apos;, &apos;onProjectRunStop&apos;]);&#xD;        _this.state = { projectRunning: false, shiftKeyDown: false };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(GreenFlag, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.props.vm.addListener(&apos;PROJECT_RUN_START&apos;, this.onProjectRunStart);&#xD;            this.props.vm.addListener(&apos;PROJECT_RUN_STOP&apos;, this.onProjectRunStop);&#xD;            document.addEventListener(&apos;keydown&apos;, this.handleKeyDown);&#xD;            document.addEventListener(&apos;keyup&apos;, this.handleKeyUp);&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            this.props.vm.removeListener(&apos;PROJECT_RUN_START&apos;, this.onProjectRunStart);&#xD;            this.props.vm.removeListener(&apos;PROJECT_RUN_STOP&apos;, this.onProjectRunStop);&#xD;            document.removeEventListener(&apos;keydown&apos;, this.handleKeyDown);&#xD;            document.removeEventListener(&apos;keyup&apos;, this.handleKeyUp);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onProjectRunStart&apos;,&#xD;        value: function onProjectRunStart() {&#xD;            this.setState({ projectRunning: true });&#xD;        }&#xD;    }, {&#xD;        key: &apos;onProjectRunStop&apos;,&#xD;        value: function onProjectRunStop() {&#xD;            this.setState({ projectRunning: false });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleKeyDown&apos;,&#xD;        value: function handleKeyDown(e) {&#xD;            this.setState({ shiftKeyDown: e.shiftKey });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleKeyUp&apos;,&#xD;        value: function handleKeyUp(e) {&#xD;            this.setState({ shiftKeyDown: e.shiftKey });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick(e) {&#xD;            e.preventDefault();&#xD;            if (this.state.shiftKeyDown) {&#xD;                this.props.vm.setTurboMode(!this.props.vm.runtime.turboMode);&#xD;            } else {&#xD;                this.props.vm.greenFlag();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                vm = _props.vm,&#xD;                props = _objectWithoutProperties(_props, [&apos;vm&apos;]);&#xD;&#xD;            return React.createElement(GreenFlagComponent, _extends({&#xD;                active: this.state.projectRunning,&#xD;                onClick: this.handleClick&#xD;            }, props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return GreenFlag;&#xD;}(React.Component);&#xD;&#xD;GreenFlag.propTypes = {&#xD;    vm: PropTypes.instanceOf(VM)&#xD;};&#xD;&#xD;module.exports = GreenFlag;&#xD;&#xD;/***/ }),&#xD;/* 240 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var LoadButtonComponent = __webpack_require__(222);&#xD;&#xD;var LoadButton = function (_React$Component) {&#xD;    _inherits(LoadButton, _React$Component);&#xD;&#xD;    function LoadButton(props) {&#xD;        _classCallCheck(this, LoadButton);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (LoadButton.__proto__ || Object.getPrototypeOf(LoadButton)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;setFileInput&apos;, &apos;handleChange&apos;, &apos;handleClick&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(LoadButton, [{&#xD;        key: &apos;handleChange&apos;,&#xD;        value: function handleChange(e) {&#xD;            var _this2 = this;&#xD;&#xD;            var reader = new FileReader();&#xD;            reader.onload = function () {&#xD;                return _this2.props.loadProject(reader.result);&#xD;            };&#xD;            reader.readAsText(e.target.files[0]);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick() {&#xD;            this.fileInput.click();&#xD;        }&#xD;    }, {&#xD;        key: &apos;setFileInput&apos;,&#xD;        value: function setFileInput(input) {&#xD;            this.fileInput = input;&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                loadProject = _props.loadProject,&#xD;                props = _objectWithoutProperties(_props, [&apos;loadProject&apos;]);&#xD;&#xD;            return React.createElement(LoadButtonComponent, _extends({&#xD;                inputRef: this.setFileInput,&#xD;                onChange: this.handleChange,&#xD;                onClick: this.handleClick&#xD;            }, props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return LoadButton;&#xD;}(React.Component);&#xD;&#xD;LoadButton.propTypes = {&#xD;    loadProject: PropTypes.func.isRequired&#xD;};&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        loadProject: state.vm.fromJSON.bind(state.vm)&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, function () {&#xD;    return {};&#xD;} // omit dispatch prop&#xD;)(LoadButton);&#xD;&#xD;/***/ }),&#xD;/* 241 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var MonitorListComponent = __webpack_require__(225);&#xD;&#xD;var MonitorList = function (_React$Component) {&#xD;    _inherits(MonitorList, _React$Component);&#xD;&#xD;    function MonitorList(props) {&#xD;        _classCallCheck(this, MonitorList);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (MonitorList.__proto__ || Object.getPrototypeOf(MonitorList)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleMonitorChange&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(MonitorList, [{&#xD;        key: &apos;handleMonitorChange&apos;,&#xD;        value: function handleMonitorChange(id, x, y) {// eslint-disable-line no-unused-vars&#xD;            // @todo send this event to the VM&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(MonitorListComponent, _extends({&#xD;                onMonitorChange: this.handleMonitorChange&#xD;            }, this.props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return MonitorList;&#xD;}(React.Component);&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        monitors: state.monitors&#xD;    };&#xD;};&#xD;var mapDispatchToProps = function mapDispatchToProps() {&#xD;    return {};&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, mapDispatchToProps)(MonitorList);&#xD;&#xD;/***/ }),&#xD;/* 242 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var MonitorComponent = __webpack_require__(226);&#xD;&#xD;var Monitor = function (_React$Component) {&#xD;    _inherits(Monitor, _React$Component);&#xD;&#xD;    function Monitor(props) {&#xD;        _classCallCheck(this, Monitor);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (Monitor.__proto__ || Object.getPrototypeOf(Monitor)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleDragEnd&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(Monitor, [{&#xD;        key: &apos;handleDragEnd&apos;,&#xD;        value: function handleDragEnd(e, _ref) {&#xD;            var x = _ref.x,&#xD;                y = _ref.y;&#xD;&#xD;            this.props.onDragEnd(this.props.id, x, y);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(MonitorComponent, _extends({}, this.props, {&#xD;                onDragEnd: this.handleDragEnd&#xD;            }));&#xD;        }&#xD;    }]);&#xD;&#xD;    return Monitor;&#xD;}(React.Component);&#xD;&#xD;Monitor.propTypes = MonitorComponent.propTypes;&#xD;&#xD;module.exports = Monitor;&#xD;&#xD;/***/ }),&#xD;/* 243 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var bindAll = __webpack_require__(9);&#xD;var PromptComponent = __webpack_require__(227);&#xD;&#xD;var Prompt = function (_React$Component) {&#xD;    _inherits(Prompt, _React$Component);&#xD;&#xD;    function Prompt(props) {&#xD;        _classCallCheck(this, Prompt);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (Prompt.__proto__ || Object.getPrototypeOf(Prompt)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleOk&apos;, &apos;handleCancel&apos;, &apos;handleChange&apos;, &apos;handleKeyPress&apos;]);&#xD;        _this.state = {&#xD;            inputValue: &apos;&apos;&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(Prompt, [{&#xD;        key: &apos;handleKeyPress&apos;,&#xD;        value: function handleKeyPress(event) {&#xD;            if (event.key === &apos;Enter&apos;) this.handleOk();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleOk&apos;,&#xD;        value: function handleOk() {&#xD;            this.props.onOk(this.state.inputValue);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleCancel&apos;,&#xD;        value: function handleCancel() {&#xD;            this.props.onCancel();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChange&apos;,&#xD;        value: function handleChange(e) {&#xD;            this.setState({ inputValue: e.target.value });&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(PromptComponent, {&#xD;                label: this.props.label,&#xD;                placeholder: this.props.placeholder,&#xD;                title: this.props.title,&#xD;                onCancel: this.handleCancel,&#xD;                onChange: this.handleChange,&#xD;                onKeyPress: this.handleKeyPress,&#xD;                onOk: this.handleOk&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return Prompt;&#xD;}(React.Component);&#xD;&#xD;Prompt.propTypes = {&#xD;    label: PropTypes.string.isRequired,&#xD;    onCancel: PropTypes.func.isRequired,&#xD;    onOk: PropTypes.func.isRequired,&#xD;    placeholder: PropTypes.string,&#xD;    title: PropTypes.string.isRequired&#xD;};&#xD;&#xD;module.exports = Prompt;&#xD;&#xD;/***/ }),&#xD;/* 244 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var ButtonComponent = __webpack_require__(113);&#xD;&#xD;var SaveButton = function (_React$Component) {&#xD;    _inherits(SaveButton, _React$Component);&#xD;&#xD;    function SaveButton(props) {&#xD;        _classCallCheck(this, SaveButton);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SaveButton.__proto__ || Object.getPrototypeOf(SaveButton)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SaveButton, [{&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick() {&#xD;            var json = this.props.saveProjectSb3();&#xD;&#xD;            // Download project data into a file - create link element,&#xD;            // simulate click on it, and then remove it.&#xD;            var saveLink = document.createElement(&apos;a&apos;);&#xD;            document.body.appendChild(saveLink);&#xD;&#xD;            var data = new Blob([json], { type: &apos;text&apos; });&#xD;            var url = window.URL.createObjectURL(data);&#xD;            saveLink.href = url;&#xD;&#xD;            // File name: project-DATE-TIME&#xD;            var date = new Date();&#xD;            var timestamp = date.toLocaleDateString() + &apos;-&apos; + date.toLocaleTimeString();&#xD;            saveLink.download = &apos;project-&apos; + timestamp + &apos;.json&apos;;&#xD;            saveLink.click();&#xD;            window.URL.revokeObjectURL(url);&#xD;            document.body.removeChild(saveLink);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                saveProjectSb3 = _props.saveProjectSb3,&#xD;                props = _objectWithoutProperties(_props, [&apos;saveProjectSb3&apos;]);&#xD;&#xD;            return React.createElement(&#xD;                ButtonComponent,&#xD;                _extends({&#xD;                    onClick: this.handleClick&#xD;                }, props),&#xD;                &apos;Save&apos;&#xD;            );&#xD;        }&#xD;    }]);&#xD;&#xD;    return SaveButton;&#xD;}(React.Component);&#xD;&#xD;SaveButton.propTypes = {&#xD;    saveProjectSb3: PropTypes.func.isRequired&#xD;};&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        saveProjectSb3: state.vm.saveProjectSb3.bind(state.vm)&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, function () {&#xD;    return {};&#xD;} // omit dispatch prop&#xD;)(SaveButton);&#xD;&#xD;/***/ }),&#xD;/* 245 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;var AudioEngine = __webpack_require__(194);&#xD;var LibraryComponent = __webpack_require__(54);&#xD;&#xD;var soundIcon = __webpack_require__(199);&#xD;&#xD;var soundLibraryContent = __webpack_require__(565);&#xD;&#xD;var SoundLibrary = function (_React$Component) {&#xD;    _inherits(SoundLibrary, _React$Component);&#xD;&#xD;    function SoundLibrary(props) {&#xD;        _classCallCheck(this, SoundLibrary);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SoundLibrary.__proto__ || Object.getPrototypeOf(SoundLibrary)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleItemSelected&apos;, &apos;handleItemMouseEnter&apos;, &apos;handleItemMouseLeave&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SoundLibrary, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.audioEngine = new AudioEngine();&#xD;            this.player = this.audioEngine.createPlayer();&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillReceiveProps&apos;,&#xD;        value: function componentWillReceiveProps(newProps) {&#xD;            // Stop playing sounds if the library closes without a mouseleave (e.g. by using the escape key)&#xD;            if (this.player &amp;&amp; !newProps.visible) this.player.stopAllSounds();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleItemMouseEnter&apos;,&#xD;        value: function handleItemMouseEnter(soundItem) {&#xD;            var _this2 = this;&#xD;&#xD;            var md5ext = soundItem._md5;&#xD;            var idParts = md5ext.split(&apos;.&apos;);&#xD;            var md5 = idParts[0];&#xD;            var vm = this.props.vm;&#xD;            vm.runtime.storage.load(vm.runtime.storage.AssetType.Sound, md5).then(function (soundAsset) {&#xD;                var sound = {&#xD;                    md5: md5ext,&#xD;                    name: soundItem.name,&#xD;                    format: soundItem.format,&#xD;                    data: soundAsset.data&#xD;                };&#xD;                return _this2.audioEngine.decodeSound(sound);&#xD;            }).then(function () {&#xD;                _this2.player.playSound(soundItem._md5);&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleItemMouseLeave&apos;,&#xD;        value: function handleItemMouseLeave() {&#xD;            this.player.stopAllSounds();&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleItemSelected&apos;,&#xD;        value: function handleItemSelected(soundItem) {&#xD;            var vmSound = {&#xD;                format: soundItem.format,&#xD;                md5: soundItem._md5,&#xD;                rate: soundItem.rate,&#xD;                sampleCount: soundItem.sampleCount,&#xD;                name: soundItem.name&#xD;            };&#xD;            this.props.vm.addSound(vmSound);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            // @todo need to use this hack to avoid library using md5 for image&#xD;            var soundLibraryThumbnailData = soundLibraryContent.map(function (sound) {&#xD;                var md5 = sound.md5,&#xD;                    otherData = _objectWithoutProperties(sound, [&apos;md5&apos;]);&#xD;&#xD;                return _extends({&#xD;                    _md5: md5,&#xD;                    rawURL: soundIcon&#xD;                }, otherData);&#xD;            });&#xD;&#xD;            return React.createElement(LibraryComponent, {&#xD;                data: soundLibraryThumbnailData,&#xD;                title: &apos;Sound Library&apos;,&#xD;                visible: this.props.visible,&#xD;                onItemMouseEnter: this.handleItemMouseEnter,&#xD;                onItemMouseLeave: this.handleItemMouseLeave,&#xD;                onItemSelected: this.handleItemSelected,&#xD;                onRequestClose: this.props.onRequestClose&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return SoundLibrary;&#xD;}(React.Component);&#xD;&#xD;SoundLibrary.propTypes = {&#xD;    onRequestClose: PropTypes.func,&#xD;    visible: PropTypes.bool,&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;module.exports = SoundLibrary;&#xD;&#xD;/***/ }),&#xD;/* 246 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var bindAll = __webpack_require__(9);&#xD;&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var AssetPanel = __webpack_require__(112);&#xD;var soundIcon = __webpack_require__(199);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var _require2 = __webpack_require__(55),&#xD;    openSoundLibrary = _require2.openSoundLibrary;&#xD;&#xD;var SoundTab = function (_React$Component) {&#xD;    _inherits(SoundTab, _React$Component);&#xD;&#xD;    function SoundTab(props) {&#xD;        _classCallCheck(this, SoundTab);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SoundTab.__proto__ || Object.getPrototypeOf(SoundTab)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleSelectSound&apos;, &apos;handleDeleteSound&apos;]);&#xD;        _this.state = { selectedSoundIndex: 0 };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SoundTab, [{&#xD;        key: &apos;componentWillReceiveProps&apos;,&#xD;        value: function componentWillReceiveProps(nextProps) {&#xD;            var editingTarget = nextProps.editingTarget,&#xD;                sprites = nextProps.sprites,&#xD;                stage = nextProps.stage;&#xD;&#xD;&#xD;            var target = editingTarget &amp;&amp; sprites[editingTarget] ? sprites[editingTarget] : stage;&#xD;&#xD;            if (target &amp;&amp; target.sounds &amp;&amp; this.state.selectedSoundIndex &gt; target.sounds.length - 1) {&#xD;                this.setState({ selectedSoundIndex: target.sounds.length - 1 });&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleSelectSound&apos;,&#xD;        value: function handleSelectSound(soundIndex) {&#xD;            var sound = this.props.vm.editingTarget.sprite.sounds[soundIndex];&#xD;            this.props.vm.editingTarget.audioPlayer.playSound(sound.md5);&#xD;            this.setState({ selectedSoundIndex: soundIndex });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleDeleteSound&apos;,&#xD;        value: function handleDeleteSound(soundIndex) {&#xD;            this.props.vm.deleteSound(soundIndex);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                editingTarget = _props.editingTarget,&#xD;                sprites = _props.sprites,&#xD;                stage = _props.stage,&#xD;                onNewSoundClick = _props.onNewSoundClick;&#xD;&#xD;&#xD;            var target = editingTarget &amp;&amp; sprites[editingTarget] ? sprites[editingTarget] : stage;&#xD;&#xD;            if (!target) {&#xD;                return null;&#xD;            }&#xD;&#xD;            var sounds = target.sounds ? target.sounds.map(function (sound) {&#xD;                return {&#xD;                    url: soundIcon,&#xD;                    name: sound.name&#xD;                };&#xD;            }) : [];&#xD;&#xD;            return React.createElement(AssetPanel, {&#xD;                items: sounds.map(function (sound) {&#xD;                    return _extends({&#xD;                        url: soundIcon&#xD;                    }, sound);&#xD;                }),&#xD;                newText: &apos;Add Sound&apos;,&#xD;                selectedItemIndex: this.state.selectedSoundIndex,&#xD;                onDeleteClick: this.handleDeleteSound,&#xD;                onItemClick: this.handleSelectSound,&#xD;                onNewClick: onNewSoundClick&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return SoundTab;&#xD;}(React.Component);&#xD;&#xD;SoundTab.propTypes = {&#xD;    editingTarget: PropTypes.string,&#xD;    onNewSoundClick: PropTypes.func.isRequired,&#xD;    sprites: PropTypes.shape({&#xD;        id: PropTypes.shape({&#xD;            sounds: PropTypes.arrayOf(PropTypes.shape({&#xD;                name: PropTypes.string.isRequired&#xD;            }))&#xD;        })&#xD;    }),&#xD;    stage: PropTypes.shape({&#xD;        sounds: PropTypes.arrayOf(PropTypes.shape({&#xD;            name: PropTypes.string.isRequired&#xD;        }))&#xD;    }),&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        editingTarget: state.targets.editingTarget,&#xD;        sprites: state.targets.sprites,&#xD;        stage: state.targets.stage,&#xD;        soundLibraryVisible: state.modals.soundLibrary&#xD;    };&#xD;};&#xD;&#xD;var mapDispatchToProps = function mapDispatchToProps(dispatch) {&#xD;    return {&#xD;        onNewSoundClick: function onNewSoundClick(e) {&#xD;            e.preventDefault();&#xD;            dispatch(openSoundLibrary());&#xD;        }&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, mapDispatchToProps)(SoundTab);&#xD;&#xD;/***/ }),&#xD;/* 247 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var SpriteInfoComponent = __webpack_require__(228);&#xD;&#xD;var SpriteInfo = function (_React$Component) {&#xD;    _inherits(SpriteInfo, _React$Component);&#xD;&#xD;    function SpriteInfo(props) {&#xD;        _classCallCheck(this, SpriteInfo);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SpriteInfo.__proto__ || Object.getPrototypeOf(SpriteInfo)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleChangeName&apos;, &apos;handleChangeRotationStyle&apos;, &apos;handleChangeDirection&apos;, &apos;handleChangeX&apos;, &apos;handleChangeY&apos;, &apos;handleClickVisible&apos;, &apos;handleClickNotVisible&apos;, &apos;handleFlush&apos;, &apos;handleKeyPress&apos;]);&#xD;        _this.state = {&#xD;            direction: null,&#xD;            name: null,&#xD;            x: null,&#xD;            y: null&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SpriteInfo, [{&#xD;        key: &apos;handleKeyPress&apos;,&#xD;        value: function handleKeyPress(e) {&#xD;            if (e.key === &apos;Enter&apos;) {&#xD;                this.handleFlush();&#xD;                e.target.blur();&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleFlush&apos;,&#xD;        value: function handleFlush() {&#xD;            if (this.state.direction !== null &amp;&amp; !isNaN(this.state.direction)) {&#xD;                this.props.onChangeDirection(this.state.direction);&#xD;            }&#xD;            if (this.state.name !== null) {&#xD;                this.props.onChangeName(this.state.name);&#xD;            }&#xD;            if (this.state.x !== null &amp;&amp; !isNaN(this.state.x)) {&#xD;                this.props.onChangeX(this.state.x);&#xD;            }&#xD;            if (this.state.y !== null &amp;&amp; !isNaN(this.state.y)) {&#xD;                this.props.onChangeY(this.state.y);&#xD;            }&#xD;            this.setState({&#xD;                direction: null,&#xD;                name: null,&#xD;                x: null,&#xD;                y: null&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeDirection&apos;,&#xD;        value: function handleChangeDirection(e) {&#xD;            this.setState({ direction: e.target.value });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeName&apos;,&#xD;        value: function handleChangeName(e) {&#xD;            this.setState({ name: e.target.value });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeRotationStyle&apos;,&#xD;        value: function handleChangeRotationStyle(e) {&#xD;            this.props.onChangeRotationStyle(e.target.value);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeX&apos;,&#xD;        value: function handleChangeX(e) {&#xD;            this.setState({ x: e.target.value });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeY&apos;,&#xD;        value: function handleChangeY(e) {&#xD;            this.setState({ y: e.target.value });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleClickVisible&apos;,&#xD;        value: function handleClickVisible(e) {&#xD;            e.preventDefault();&#xD;            this.props.onChangeVisibility(true);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleClickNotVisible&apos;,&#xD;        value: function handleClickNotVisible(e) {&#xD;            e.preventDefault();&#xD;            this.props.onChangeVisibility(false);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var bufferedInputs = {&#xD;                direction: this.state.direction === null ? this.props.direction : this.state.direction,&#xD;                name: this.state.name === null ? this.props.name : this.state.name,&#xD;                x: this.state.x === null ? this.props.x : this.state.x,&#xD;                y: this.state.y === null ? this.props.y : this.state.y&#xD;            };&#xD;            return React.createElement(SpriteInfoComponent, _extends({}, this.props, bufferedInputs, {&#xD;                onBlurDirection: this.handleFlush,&#xD;                onBlurName: this.handleFlush,&#xD;                onBlurX: this.handleFlush,&#xD;                onBlurY: this.handleFlush,&#xD;                onChangeDirection: this.handleChangeDirection,&#xD;                onChangeName: this.handleChangeName,&#xD;                onChangeRotationStyle: this.handleChangeRotationStyle,&#xD;                onChangeX: this.handleChangeX,&#xD;                onChangeY: this.handleChangeY,&#xD;                onClickNotVisible: this.handleClickNotVisible,&#xD;                onClickVisible: this.handleClickVisible,&#xD;                onKeyPress: this.handleKeyPress&#xD;            }));&#xD;        }&#xD;    }]);&#xD;&#xD;    return SpriteInfo;&#xD;}(React.Component);&#xD;&#xD;SpriteInfo.propTypes = _extends({}, SpriteInfoComponent.propTypes, {&#xD;    onChangeDirection: PropTypes.func,&#xD;    onChangeName: PropTypes.func,&#xD;    onChangeRotationStyle: PropTypes.func,&#xD;    onChangeVisibility: PropTypes.func,&#xD;    onChangeX: PropTypes.func,&#xD;    onChangeY: PropTypes.func,&#xD;    x: PropTypes.number,&#xD;    y: PropTypes.number&#xD;});&#xD;&#xD;module.exports = SpriteInfo;&#xD;&#xD;/***/ }),&#xD;/* 248 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var spriteLibraryContent = __webpack_require__(566);&#xD;&#xD;var LibraryComponent = __webpack_require__(54);&#xD;&#xD;var SpriteLibrary = function (_React$Component) {&#xD;    _inherits(SpriteLibrary, _React$Component);&#xD;&#xD;    function SpriteLibrary(props) {&#xD;        _classCallCheck(this, SpriteLibrary);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (SpriteLibrary.__proto__ || Object.getPrototypeOf(SpriteLibrary)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleItemSelect&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(SpriteLibrary, [{&#xD;        key: &apos;handleItemSelect&apos;,&#xD;        value: function handleItemSelect(item) {&#xD;            this.props.vm.addSprite2(JSON.stringify(item.json));&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(LibraryComponent, {&#xD;                data: spriteLibraryContent,&#xD;                title: &apos;Sprite Library&apos;,&#xD;                visible: this.props.visible,&#xD;                onItemSelected: this.handleItemSelect,&#xD;                onRequestClose: this.props.onRequestClose&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return SpriteLibrary;&#xD;}(React.Component);&#xD;&#xD;SpriteLibrary.propTypes = {&#xD;    onRequestClose: PropTypes.func,&#xD;    visible: PropTypes.bool,&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;module.exports = SpriteLibrary;&#xD;&#xD;/***/ }),&#xD;/* 249 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var StageSelectorComponent = __webpack_require__(231);&#xD;&#xD;var StageSelector = function (_React$Component) {&#xD;    _inherits(StageSelector, _React$Component);&#xD;&#xD;    function StageSelector(props) {&#xD;        _classCallCheck(this, StageSelector);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (StageSelector.__proto__ || Object.getPrototypeOf(StageSelector)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(StageSelector, [{&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick(e) {&#xD;            e.preventDefault();&#xD;            this.props.onSelect(this.props.id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                assetId = _props.assetId,&#xD;                id = _props.id,&#xD;                onSelect = _props.onSelect,&#xD;                componentProps = _objectWithoutProperties(_props, [&apos;assetId&apos;, &apos;id&apos;, &apos;onSelect&apos;]);&#xD;&#xD;            return React.createElement(StageSelectorComponent, _extends({&#xD;                onClick: this.handleClick&#xD;            }, componentProps));&#xD;        }&#xD;    }]);&#xD;&#xD;    return StageSelector;&#xD;}(React.Component);&#xD;&#xD;StageSelector.propTypes = _extends({}, StageSelectorComponent.propTypes, {&#xD;    id: PropTypes.string,&#xD;    onSelect: PropTypes.func&#xD;});&#xD;&#xD;var mapStateToProps = function mapStateToProps(state, _ref) {&#xD;    var assetId = _ref.assetId;&#xD;    return {&#xD;        url: assetId &amp;&amp; state.vm.runtime.storage.get(assetId).encodeDataURI()&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, function () {&#xD;    return {};&#xD;} // omit dispatch prop&#xD;)(StageSelector);&#xD;&#xD;/***/ }),&#xD;/* 250 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i &lt; arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var Renderer = __webpack_require__(507);&#xD;var AudioEngine = __webpack_require__(194);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var StageComponent = __webpack_require__(232);&#xD;&#xD;var Stage = function (_React$Component) {&#xD;    _inherits(Stage, _React$Component);&#xD;&#xD;    function Stage(props) {&#xD;        _classCallCheck(this, Stage);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (Stage.__proto__ || Object.getPrototypeOf(Stage)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;attachMouseEvents&apos;, &apos;cancelMouseDownTimeout&apos;, &apos;detachMouseEvents&apos;, &apos;handleDoubleClick&apos;, &apos;onMouseUp&apos;, &apos;onMouseMove&apos;, &apos;onMouseDown&apos;, &apos;onStartDrag&apos;, &apos;onStopDrag&apos;, &apos;updateRect&apos;, &apos;setCanvas&apos;]);&#xD;        _this.state = {&#xD;            mouseDownTimeoutId: null,&#xD;            mouseDownPosition: null,&#xD;            isDragging: false,&#xD;            dragOffset: null,&#xD;            dragId: null&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(Stage, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.attachRectEvents();&#xD;            this.attachMouseEvents(this.canvas);&#xD;            this.updateRect();&#xD;            this.renderer = new Renderer(this.canvas);&#xD;            this.props.vm.attachRenderer(this.renderer);&#xD;            this.audioEngine = new AudioEngine();&#xD;            this.props.vm.attachAudioEngine(this.audioEngine);&#xD;        }&#xD;    }, {&#xD;        key: &apos;shouldComponentUpdate&apos;,&#xD;        value: function shouldComponentUpdate() {&#xD;            return false;&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            this.detachMouseEvents(this.canvas);&#xD;            this.detachRectEvents();&#xD;        }&#xD;    }, {&#xD;        key: &apos;attachMouseEvents&apos;,&#xD;        value: function attachMouseEvents(canvas) {&#xD;            document.addEventListener(&apos;mousemove&apos;, this.onMouseMove);&#xD;            document.addEventListener(&apos;mouseup&apos;, this.onMouseUp);&#xD;            canvas.addEventListener(&apos;mousedown&apos;, this.onMouseDown);&#xD;        }&#xD;    }, {&#xD;        key: &apos;detachMouseEvents&apos;,&#xD;        value: function detachMouseEvents(canvas) {&#xD;            document.removeEventListener(&apos;mousemove&apos;, this.onMouseMove);&#xD;            document.removeEventListener(&apos;mouseup&apos;, this.onMouseUp);&#xD;            canvas.removeEventListener(&apos;mousedown&apos;, this.onMouseDown);&#xD;        }&#xD;    }, {&#xD;        key: &apos;attachRectEvents&apos;,&#xD;        value: function attachRectEvents() {&#xD;            window.addEventListener(&apos;resize&apos;, this.updateRect);&#xD;            window.addEventListener(&apos;scroll&apos;, this.updateRect);&#xD;        }&#xD;    }, {&#xD;        key: &apos;detachRectEvents&apos;,&#xD;        value: function detachRectEvents() {&#xD;            window.removeEventListener(&apos;resize&apos;, this.updateRect);&#xD;            window.removeEventListener(&apos;scroll&apos;, this.updateRect);&#xD;        }&#xD;    }, {&#xD;        key: &apos;updateRect&apos;,&#xD;        value: function updateRect() {&#xD;            this.rect = this.canvas.getBoundingClientRect();&#xD;        }&#xD;    }, {&#xD;        key: &apos;getScratchCoords&apos;,&#xD;        value: function getScratchCoords(x, y) {&#xD;            return [x - this.rect.width / 2, y - this.rect.height / 2];&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleDoubleClick&apos;,&#xD;        value: function handleDoubleClick(e) {&#xD;            // Set editing target from cursor position, if clicking on a sprite.&#xD;            var mousePosition = [e.clientX - this.rect.left, e.clientY - this.rect.top];&#xD;            var drawableId = this.renderer.pick(mousePosition[0], mousePosition[1]);&#xD;            if (drawableId === null) return;&#xD;            var targetId = this.props.vm.getTargetIdForDrawableId(drawableId);&#xD;            if (targetId === null) return;&#xD;            this.props.vm.setEditingTarget(targetId);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onMouseMove&apos;,&#xD;        value: function onMouseMove(e) {&#xD;            var mousePosition = [e.clientX - this.rect.left, e.clientY - this.rect.top];&#xD;            if (this.state.mouseDownTimeoutId !== null) {&#xD;                this.cancelMouseDownTimeout();&#xD;                if (this.state.mouseDown &amp;&amp; !this.state.isDragging) {&#xD;                    this.onStartDrag.apply(this, _toConsumableArray(this.state.mouseDownPosition));&#xD;                }&#xD;            }&#xD;            if (this.state.mouseDown &amp;&amp; this.state.isDragging) {&#xD;                var spritePosition = this.getScratchCoords(mousePosition[0], mousePosition[1]);&#xD;                this.props.vm.postSpriteInfo({&#xD;                    x: spritePosition[0] + this.state.dragOffset[0],&#xD;                    y: -(spritePosition[1] + this.state.dragOffset[1]),&#xD;                    force: true&#xD;                });&#xD;            }&#xD;            var coordinates = {&#xD;                x: mousePosition[0],&#xD;                y: mousePosition[1],&#xD;                canvasWidth: this.rect.width,&#xD;                canvasHeight: this.rect.height&#xD;            };&#xD;            this.props.vm.postIOData(&apos;mouse&apos;, coordinates);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onMouseUp&apos;,&#xD;        value: function onMouseUp(e) {&#xD;            this.cancelMouseDownTimeout();&#xD;            this.setState({&#xD;                mouseDown: false,&#xD;                mouseDownPosition: null&#xD;            });&#xD;            if (this.state.isDragging) {&#xD;                this.onStopDrag();&#xD;            } else {&#xD;                var data = {&#xD;                    isDown: false,&#xD;                    x: e.clientX - this.rect.left,&#xD;                    y: e.clientY - this.rect.top,&#xD;                    canvasWidth: this.rect.width,&#xD;                    canvasHeight: this.rect.height&#xD;                };&#xD;                this.props.vm.postIOData(&apos;mouse&apos;, data);&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;onMouseDown&apos;,&#xD;        value: function onMouseDown(e) {&#xD;            var mousePosition = [e.clientX - this.rect.left, e.clientY - this.rect.top];&#xD;            this.setState({&#xD;                mouseDown: true,&#xD;                mouseDownPosition: mousePosition,&#xD;                mouseDownTimeoutId: setTimeout(this.onStartDrag.bind(this, mousePosition[0], mousePosition[1]), 500)&#xD;            });&#xD;            var data = {&#xD;                isDown: true,&#xD;                x: mousePosition[0],&#xD;                y: mousePosition[1],&#xD;                canvasWidth: this.rect.width,&#xD;                canvasHeight: this.rect.height&#xD;            };&#xD;            this.props.vm.postIOData(&apos;mouse&apos;, data);&#xD;            e.preventDefault();&#xD;        }&#xD;    }, {&#xD;        key: &apos;cancelMouseDownTimeout&apos;,&#xD;        value: function cancelMouseDownTimeout() {&#xD;            if (this.state.mouseDownTimeoutId !== null) {&#xD;                clearTimeout(this.state.mouseDownTimeoutId);&#xD;            }&#xD;            this.setState({ mouseDownTimeoutId: null });&#xD;        }&#xD;    }, {&#xD;        key: &apos;onStartDrag&apos;,&#xD;        value: function onStartDrag(x, y) {&#xD;            var drawableId = this.renderer.pick(x, y);&#xD;            if (drawableId === null) return;&#xD;            var drawableData = this.renderer.extractDrawable(drawableId, x, y);&#xD;            var targetId = this.props.vm.getTargetIdForDrawableId(drawableId);&#xD;            if (targetId === null) return;&#xD;            this.props.vm.startDrag(targetId);&#xD;            this.setState({&#xD;                isDragging: true,&#xD;                dragId: targetId,&#xD;                dragOffset: drawableData.scratchOffset&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;onStopDrag&apos;,&#xD;        value: function onStopDrag() {&#xD;            this.props.vm.stopDrag(this.state.dragId);&#xD;            this.setState({&#xD;                isDragging: false,&#xD;                dragOffset: null,&#xD;                dragId: null&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;setCanvas&apos;,&#xD;        value: function setCanvas(canvas) {&#xD;            this.canvas = canvas;&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                vm = _props.vm,&#xD;                props = _objectWithoutProperties(_props, [&apos;vm&apos;]);&#xD;&#xD;            return React.createElement(StageComponent, _extends({&#xD;                canvasRef: this.setCanvas,&#xD;                onDoubleClick: this.handleDoubleClick&#xD;            }, props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return Stage;&#xD;}(React.Component);&#xD;&#xD;Stage.propTypes = {&#xD;    vm: PropTypes.instanceOf(VM).isRequired&#xD;};&#xD;&#xD;module.exports = Stage;&#xD;&#xD;/***/ }),&#xD;/* 251 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var StopAllComponent = __webpack_require__(233);&#xD;&#xD;var StopAll = function (_React$Component) {&#xD;    _inherits(StopAll, _React$Component);&#xD;&#xD;    function StopAll(props) {&#xD;        _classCallCheck(this, StopAll);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (StopAll.__proto__ || Object.getPrototypeOf(StopAll)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleClick&apos;, &apos;onProjectRunStart&apos;, &apos;onProjectRunStop&apos;]);&#xD;        _this.state = { projectRunning: false };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(StopAll, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            this.props.vm.addListener(&apos;PROJECT_RUN_START&apos;, this.onProjectRunStart);&#xD;            this.props.vm.addListener(&apos;PROJECT_RUN_STOP&apos;, this.onProjectRunStop);&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            this.props.vm.removeListener(&apos;PROJECT_RUN_START&apos;, this.onProjectRunStart);&#xD;            this.props.vm.removeListener(&apos;PROJECT_RUN_STOP&apos;, this.onProjectRunStop);&#xD;        }&#xD;    }, {&#xD;        key: &apos;onProjectRunStart&apos;,&#xD;        value: function onProjectRunStart() {&#xD;            this.setState({ projectRunning: true });&#xD;        }&#xD;    }, {&#xD;        key: &apos;onProjectRunStop&apos;,&#xD;        value: function onProjectRunStop() {&#xD;            this.setState({ projectRunning: false });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleClick&apos;,&#xD;        value: function handleClick(e) {&#xD;            e.preventDefault();&#xD;            this.props.vm.stopAll();&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            var _props = this.props,&#xD;                vm = _props.vm,&#xD;                props = _objectWithoutProperties(_props, [&apos;vm&apos;]);&#xD;&#xD;            return React.createElement(StopAllComponent, _extends({&#xD;                active: !this.state.projectRunning,&#xD;                onClick: this.handleClick&#xD;            }, props));&#xD;        }&#xD;    }]);&#xD;&#xD;    return StopAll;&#xD;}(React.Component);&#xD;&#xD;StopAll.propTypes = {&#xD;    vm: PropTypes.instanceOf(VM)&#xD;};&#xD;&#xD;module.exports = StopAll;&#xD;&#xD;/***/ }),&#xD;/* 252 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var React = __webpack_require__(0);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var _require2 = __webpack_require__(55),&#xD;    openBackdropLibrary = _require2.openBackdropLibrary,&#xD;    openSpriteLibrary = _require2.openSpriteLibrary,&#xD;    closeBackdropLibrary = _require2.closeBackdropLibrary,&#xD;    closeCostumeLibrary = _require2.closeCostumeLibrary,&#xD;    closeSoundLibrary = _require2.closeSoundLibrary,&#xD;    closeSpriteLibrary = _require2.closeSpriteLibrary;&#xD;&#xD;var TargetPaneComponent = __webpack_require__(234);&#xD;&#xD;var TargetPane = function (_React$Component) {&#xD;    _inherits(TargetPane, _React$Component);&#xD;&#xD;    function TargetPane(props) {&#xD;        _classCallCheck(this, TargetPane);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (TargetPane.__proto__ || Object.getPrototypeOf(TargetPane)).call(this, props));&#xD;&#xD;        bindAll(_this, [&apos;handleChangeSpriteDirection&apos;, &apos;handleChangeSpriteName&apos;, &apos;handleChangeSpriteRotationStyle&apos;, &apos;handleChangeSpriteVisibility&apos;, &apos;handleChangeSpriteX&apos;, &apos;handleChangeSpriteY&apos;, &apos;handleDeleteSprite&apos;, &apos;handleSelectSprite&apos;]);&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(TargetPane, [{&#xD;        key: &apos;handleChangeSpriteDirection&apos;,&#xD;        value: function handleChangeSpriteDirection(direction) {&#xD;            this.props.vm.postSpriteInfo({ direction: direction });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeSpriteName&apos;,&#xD;        value: function handleChangeSpriteName(name) {&#xD;            this.props.vm.renameSprite(this.props.editingTarget, name);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeSpriteRotationStyle&apos;,&#xD;        value: function handleChangeSpriteRotationStyle(rotationStyle) {&#xD;            this.props.vm.postSpriteInfo({ rotationStyle: rotationStyle });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeSpriteVisibility&apos;,&#xD;        value: function handleChangeSpriteVisibility(visible) {&#xD;            this.props.vm.postSpriteInfo({ visible: visible });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeSpriteX&apos;,&#xD;        value: function handleChangeSpriteX(x) {&#xD;            this.props.vm.postSpriteInfo({ x: x });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleChangeSpriteY&apos;,&#xD;        value: function handleChangeSpriteY(y) {&#xD;            this.props.vm.postSpriteInfo({ y: y });&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleDeleteSprite&apos;,&#xD;        value: function handleDeleteSprite(id) {&#xD;            this.props.vm.deleteSprite(id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;handleSelectSprite&apos;,&#xD;        value: function handleSelectSprite(id) {&#xD;            this.props.vm.setEditingTarget(id);&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            return React.createElement(TargetPaneComponent, _extends({}, this.props, {&#xD;                onChangeSpriteDirection: this.handleChangeSpriteDirection,&#xD;                onChangeSpriteName: this.handleChangeSpriteName,&#xD;                onChangeSpriteRotationStyle: this.handleChangeSpriteRotationStyle,&#xD;                onChangeSpriteVisibility: this.handleChangeSpriteVisibility,&#xD;                onChangeSpriteX: this.handleChangeSpriteX,&#xD;                onChangeSpriteY: this.handleChangeSpriteY,&#xD;                onDeleteSprite: this.handleDeleteSprite,&#xD;                onSelectSprite: this.handleSelectSprite&#xD;            }));&#xD;        }&#xD;    }]);&#xD;&#xD;    return TargetPane;&#xD;}(React.Component);&#xD;&#xD;var _TargetPaneComponent$ = TargetPaneComponent.propTypes,&#xD;    onSelectSprite = _TargetPaneComponent$.onSelectSprite,&#xD;    targetPaneProps = _objectWithoutProperties(_TargetPaneComponent$, [&apos;onSelectSprite&apos;]);&#xD;&#xD;TargetPane.propTypes = _extends({}, targetPaneProps);&#xD;&#xD;var mapStateToProps = function mapStateToProps(state) {&#xD;    return {&#xD;        editingTarget: state.targets.editingTarget,&#xD;        sprites: Object.keys(state.targets.sprites).reduce(function (sprites, k) {&#xD;            var _state$targets$sprite = state.targets.sprites[k],&#xD;                direction = _state$targets$sprite.direction,&#xD;                x = _state$targets$sprite.x,&#xD;                y = _state$targets$sprite.y,&#xD;                sprite = _objectWithoutProperties(_state$targets$sprite, [&apos;direction&apos;, &apos;x&apos;, &apos;y&apos;]);&#xD;&#xD;            if (typeof direction !== &apos;undefined&apos;) direction = Math.round(direction);&#xD;            if (typeof x !== &apos;undefined&apos;) x = Math.round(x);&#xD;            if (typeof y !== &apos;undefined&apos;) y = Math.round(y);&#xD;            sprites[k] = _extends({}, sprite, { direction: direction, x: x, y: y });&#xD;            return sprites;&#xD;        }, {}),&#xD;        stage: state.targets.stage,&#xD;        soundLibraryVisible: state.modals.soundLibrary,&#xD;        spriteLibraryVisible: state.modals.spriteLibrary,&#xD;        costumeLibraryVisible: state.modals.costumeLibrary,&#xD;        backdropLibraryVisible: state.modals.backdropLibrary&#xD;    };&#xD;};&#xD;var mapDispatchToProps = function mapDispatchToProps(dispatch) {&#xD;    return {&#xD;        onNewBackdropClick: function onNewBackdropClick(e) {&#xD;            e.preventDefault();&#xD;            dispatch(openBackdropLibrary());&#xD;        },&#xD;        onNewSpriteClick: function onNewSpriteClick(e) {&#xD;            e.preventDefault();&#xD;            dispatch(openSpriteLibrary());&#xD;        },&#xD;        onRequestCloseBackdropLibrary: function onRequestCloseBackdropLibrary() {&#xD;            dispatch(closeBackdropLibrary());&#xD;        },&#xD;        onRequestCloseCostumeLibrary: function onRequestCloseCostumeLibrary() {&#xD;            dispatch(closeCostumeLibrary());&#xD;        },&#xD;        onRequestCloseSoundLibrary: function onRequestCloseSoundLibrary() {&#xD;            dispatch(closeSoundLibrary());&#xD;        },&#xD;        onRequestCloseSpriteLibrary: function onRequestCloseSpriteLibrary() {&#xD;            dispatch(closeSpriteLibrary());&#xD;        }&#xD;    };&#xD;};&#xD;&#xD;module.exports = connect(mapStateToProps, mapDispatchToProps)(TargetPane);&#xD;&#xD;/***/ }),&#xD;/* 253 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var ReactDOM = __webpack_require__(37);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    Provider = _require.Provider;&#xD;&#xD;var _require2 = __webpack_require__(76),&#xD;    createStore = _require2.createStore,&#xD;    applyMiddleware = _require2.applyMiddleware;&#xD;&#xD;var throttle = __webpack_require__(206).default;&#xD;&#xD;var GUI = __webpack_require__(203);&#xD;var log = __webpack_require__(107);&#xD;var ProjectLoader = __webpack_require__(204);&#xD;var reducer = __webpack_require__(205);&#xD;&#xD;var styles = __webpack_require__(207);&#xD;&#xD;var App = function (_React$Component) {&#xD;    _inherits(App, _React$Component);&#xD;&#xD;    function App(props) {&#xD;        _classCallCheck(this, App);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).call(this, props));&#xD;&#xD;        _this.fetchProjectId = _this.fetchProjectId.bind(_this);&#xD;        _this.updateProject = _this.updateProject.bind(_this);&#xD;        _this.state = {&#xD;            projectId: null,&#xD;            projectData: _this.fetchProjectId().length ? null : JSON.stringify(ProjectLoader.DEFAULT_PROJECT_DATA)&#xD;        };&#xD;        return _this;&#xD;    }&#xD;&#xD;    _createClass(App, [{&#xD;        key: &apos;componentDidMount&apos;,&#xD;        value: function componentDidMount() {&#xD;            window.addEventListener(&apos;hashchange&apos;, this.updateProject);&#xD;            this.updateProject();&#xD;        }&#xD;    }, {&#xD;        key: &apos;componentWillUnmount&apos;,&#xD;        value: function componentWillUnmount() {&#xD;            window.removeEventListener(&apos;hashchange&apos;, this.updateProject);&#xD;        }&#xD;    }, {&#xD;        key: &apos;fetchProjectId&apos;,&#xD;        value: function fetchProjectId() {&#xD;            return window.location.hash.substring(1);&#xD;        }&#xD;    }, {&#xD;        key: &apos;updateProject&apos;,&#xD;        value: function updateProject() {&#xD;            var _this2 = this;&#xD;&#xD;            var projectId = this.fetchProjectId();&#xD;            if (projectId !== this.state.projectId) {&#xD;                if (projectId.length &lt; 1) {&#xD;                    return this.setState({&#xD;                        projectId: projectId,&#xD;                        projectData: JSON.stringify(ProjectLoader.DEFAULT_PROJECT_DATA)&#xD;                    });&#xD;                }&#xD;                ProjectLoader.load(projectId, function (err, body) {&#xD;                    if (err) return log.error(err);&#xD;                    _this2.setState({ projectData: body });&#xD;                });&#xD;                this.setState({ projectId: projectId });&#xD;            }&#xD;        }&#xD;    }, {&#xD;        key: &apos;render&apos;,&#xD;        value: function render() {&#xD;            if (this.state.projectData === null) return null;&#xD;            return React.createElement(GUI, {&#xD;                basePath: this.props.basePath,&#xD;                projectData: this.state.projectData&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return App;&#xD;}(React.Component);&#xD;&#xD;App.propTypes = {&#xD;    basePath: PropTypes.string&#xD;};&#xD;&#xD;var appTarget = document.createElement(&apos;div&apos;);&#xD;appTarget.className = styles.app;&#xD;document.body.appendChild(appTarget);&#xD;var store = applyMiddleware(throttle(300, { leading: true, trailing: true }))(createStore)(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ &amp;&amp; window.__REDUX_DEVTOOLS_EXTENSION__());&#xD;ReactDOM.render(React.createElement(&#xD;    Provider,&#xD;    { store: store },&#xD;    React.createElement(App, { basePath: "/" })&#xD;), appTarget);&#xD;&#xD;/***/ }),&#xD;/* 254 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ScratchBlocks = __webpack_require__(506);&#xD;&#xD;module.exports = function (vm) {&#xD;&#xD;    var jsonForMenuBlock = function jsonForMenuBlock(name, menuOptionsFn, colors, start) {&#xD;        return {&#xD;            message0: &apos;%1&apos;,&#xD;            args0: [{&#xD;                type: &apos;field_dropdown&apos;,&#xD;                name: name,&#xD;                options: function options() {&#xD;                    return start.concat(menuOptionsFn());&#xD;                }&#xD;            }],&#xD;            inputsInline: true,&#xD;            output: &apos;String&apos;,&#xD;            colour: colors.secondary,&#xD;            colourSecondary: colors.secondary,&#xD;            colourTertiary: colors.tertiary,&#xD;            outputShape: ScratchBlocks.OUTPUT_SHAPE_ROUND&#xD;        };&#xD;    };&#xD;&#xD;    var soundsMenu = function soundsMenu() {&#xD;        var sounds = vm.editingTarget.sprite.sounds;&#xD;        if (sounds.length === 0) {&#xD;            return [[&apos;&apos;, &apos;&apos;]];&#xD;        }&#xD;        return sounds.map(function (sound) {&#xD;            return [sound.name, sound.name];&#xD;        });&#xD;    };&#xD;&#xD;    var costumesMenu = function costumesMenu() {&#xD;        return vm.editingTarget.sprite.costumes.map(function (costume) {&#xD;            return [costume.name, costume.name];&#xD;        });&#xD;    };&#xD;&#xD;    var backdropsMenu = function backdropsMenu() {&#xD;        return vm.runtime.targets[0].sprite.costumes.map(function (costume) {&#xD;            return [costume.name, costume.name];&#xD;        });&#xD;    };&#xD;&#xD;    var spriteMenu = function spriteMenu() {&#xD;        var sprites = [];&#xD;        for (var targetId in vm.runtime.targets) {&#xD;            if (!vm.runtime.targets.hasOwnProperty(targetId)) continue;&#xD;            if (vm.runtime.targets[targetId].isOriginal) {&#xD;                if (!vm.runtime.targets[targetId].isStage) {&#xD;                    if (vm.runtime.targets[targetId] === vm.editingTarget) {&#xD;                        continue;&#xD;                    }&#xD;                    sprites.push([vm.runtime.targets[targetId].sprite.name, vm.runtime.targets[targetId].sprite.name]);&#xD;                }&#xD;            }&#xD;        }&#xD;        return sprites;&#xD;    };&#xD;&#xD;    var soundColors = ScratchBlocks.Colours.sounds;&#xD;&#xD;    var looksColors = ScratchBlocks.Colours.looks;&#xD;&#xD;    var motionColors = ScratchBlocks.Colours.motion;&#xD;&#xD;    var sensingColors = ScratchBlocks.Colours.sensing;&#xD;&#xD;    var controlColors = ScratchBlocks.Colours.control;&#xD;&#xD;    ScratchBlocks.Blocks.sound_sounds_menu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;SOUND_MENU&apos;, soundsMenu, soundColors, []);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.looks_costume.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;COSTUME&apos;, costumesMenu, looksColors, []);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.looks_backdrops.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;BACKDROP&apos;, backdropsMenu, looksColors, []);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.motion_pointtowards_menu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;TOWARDS&apos;, spriteMenu, motionColors, [[&apos;mouse-pointer&apos;, &apos;_mouse_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.motion_goto_menu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;TO&apos;, spriteMenu, motionColors, [[&apos;mouse-pointer&apos;, &apos;_mouse_&apos;], [&apos;random position&apos;, &apos;_random_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.sensing_of_object_menu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;OBJECT&apos;, spriteMenu, sensingColors, [[&apos;Stage&apos;, &apos;_stage_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.sensing_videoonmenutwo.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;VIDEOONMENU2&apos;, spriteMenu, sensingColors, [[&apos;stage&apos;, &apos;STAGE&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.sensing_distancetomenu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;DISTANCETOMENU&apos;, spriteMenu, sensingColors, [[&apos;mouse-pointer&apos;, &apos;_mouse_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.sensing_touchingobjectmenu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;TOUCHINGOBJECTMENU&apos;, spriteMenu, sensingColors, [[&apos;mouse-pointer&apos;, &apos;_mouse_&apos;], [&apos;edge&apos;, &apos;_edge_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    ScratchBlocks.Blocks.control_create_clone_of_menu.init = function () {&#xD;        var json = jsonForMenuBlock(&apos;CLONE_OPTION&apos;, spriteMenu, controlColors, [[&apos;myself&apos;, &apos;_myself_&apos;]]);&#xD;        this.jsonInit(json);&#xD;    };&#xD;&#xD;    return ScratchBlocks;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 255 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i &amp;&amp; _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n &amp;&amp; _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var ScratchStorage = __webpack_require__(508);&#xD;&#xD;var PROJECT_SERVER = &apos;https://cdn.projects.scratch.mit.edu&apos;;&#xD;var ASSET_SERVER = &apos;https://cdn.assets.scratch.mit.edu&apos;;&#xD;&#xD;/**&#xD; * Wrapper for ScratchStorage which adds default web sources.&#xD; * @todo make this more configurable&#xD; */&#xD;&#xD;var Storage = function (_ScratchStorage) {&#xD;    _inherits(Storage, _ScratchStorage);&#xD;&#xD;    function Storage() {&#xD;        _classCallCheck(this, Storage);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (Storage.__proto__ || Object.getPrototypeOf(Storage)).call(this));&#xD;&#xD;        _this.addWebSource([_this.AssetType.Project], function (projectAsset) {&#xD;            var _projectAsset$assetId = projectAsset.assetId.split(&apos;.&apos;),&#xD;                _projectAsset$assetId2 = _slicedToArray(_projectAsset$assetId, 2),&#xD;                projectId = _projectAsset$assetId2[0],&#xD;                revision = _projectAsset$assetId2[1];&#xD;&#xD;            return revision ? PROJECT_SERVER + &apos;/internalapi/project/&apos; + projectId + &apos;/get/&apos; + revision : PROJECT_SERVER + &apos;/internalapi/project/&apos; + projectId + &apos;/get/&apos;;&#xD;        });&#xD;        _this.addWebSource([_this.AssetType.ImageVector, _this.AssetType.ImageBitmap, _this.AssetType.Sound], function (asset) {&#xD;            return ASSET_SERVER + &apos;/internalapi/asset/&apos; + asset.assetId + &apos;.&apos; + asset.assetType.runtimeFormat + &apos;/get/&apos;;&#xD;        });&#xD;        return _this;&#xD;    }&#xD;&#xD;    return Storage;&#xD;}(ScratchStorage);&#xD;&#xD;module.exports = Storage;&#xD;&#xD;/***/ }),&#xD;/* 256 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var bindAll = __webpack_require__(9);&#xD;var PropTypes = __webpack_require__(2);&#xD;var React = __webpack_require__(0);&#xD;var VM = __webpack_require__(18);&#xD;&#xD;var _require = __webpack_require__(23),&#xD;    connect = _require.connect;&#xD;&#xD;var targets = __webpack_require__(118);&#xD;var monitors = __webpack_require__(117);&#xD;&#xD;/*&#xD; * Higher Order Component to manage events emitted by the VM&#xD; * @param {React.Component} WrappedComponent component to manage VM events for&#xD; * @returns {React.Component} connected component with vm events bound to redux&#xD; */&#xD;var vmListenerHOC = function vmListenerHOC(WrappedComponent) {&#xD;    var VMListener = function (_React$Component) {&#xD;        _inherits(VMListener, _React$Component);&#xD;&#xD;        function VMListener(props) {&#xD;            _classCallCheck(this, VMListener);&#xD;&#xD;            var _this = _possibleConstructorReturn(this, (VMListener.__proto__ || Object.getPrototypeOf(VMListener)).call(this, props));&#xD;&#xD;            bindAll(_this, [&apos;handleKeyDown&apos;, &apos;handleKeyUp&apos;]);&#xD;            // We have to start listening to the vm here rather than in&#xD;            // componentDidMount because the HOC mounts the wrapped component,&#xD;            // so the HOC componentDidMount triggers after the wrapped component&#xD;            // mounts.&#xD;            // If the wrapped component uses the vm in componentDidMount, then&#xD;            // we need to start listening before mounting the wrapped component.&#xD;            _this.props.vm.on(&apos;targetsUpdate&apos;, _this.props.onTargetsUpdate);&#xD;            _this.props.vm.on(&apos;MONITORS_UPDATE&apos;, _this.props.onMonitorsUpdate);&#xD;&#xD;            return _this;&#xD;        }&#xD;&#xD;        _createClass(VMListener, [{&#xD;            key: &apos;componentDidMount&apos;,&#xD;            value: function componentDidMount() {&#xD;                if (this.props.attachKeyboardEvents) {&#xD;                    document.addEventListener(&apos;keydown&apos;, this.handleKeyDown);&#xD;                    document.addEventListener(&apos;keyup&apos;, this.handleKeyUp);&#xD;                }&#xD;            }&#xD;        }, {&#xD;            key: &apos;componentWillUnmount&apos;,&#xD;            value: function componentWillUnmount() {&#xD;                if (this.props.attachKeyboardEvents) {&#xD;                    document.removeEventListener(&apos;keydown&apos;, this.handleKeyDown);&#xD;                    document.removeEventListener(&apos;keyup&apos;, this.handleKeyUp);&#xD;                }&#xD;            }&#xD;        }, {&#xD;            key: &apos;handleKeyDown&apos;,&#xD;            value: function handleKeyDown(e) {&#xD;                // Don&apos;t capture keys intended for Blockly inputs.&#xD;                if (e.target !== document &amp;&amp; e.target !== document.body) return;&#xD;&#xD;                this.props.vm.postIOData(&apos;keyboard&apos;, {&#xD;                    keyCode: e.keyCode,&#xD;                    isDown: true&#xD;                });&#xD;&#xD;                // Don&apos;t stop browser keyboard shortcuts&#xD;                if (e.metaKey || e.altKey || e.ctrlKey) return;&#xD;&#xD;                e.preventDefault();&#xD;            }&#xD;        }, {&#xD;            key: &apos;handleKeyUp&apos;,&#xD;            value: function handleKeyUp(e) {&#xD;                // Always capture up events,&#xD;                // even those that have switched to other targets.&#xD;                this.props.vm.postIOData(&apos;keyboard&apos;, {&#xD;                    keyCode: e.keyCode,&#xD;                    isDown: false&#xD;                });&#xD;&#xD;                // E.g., prevent scroll.&#xD;                if (e.target !== document &amp;&amp; e.target !== document.body) {&#xD;                    e.preventDefault();&#xD;                }&#xD;            }&#xD;        }, {&#xD;            key: &apos;render&apos;,&#xD;            value: function render() {&#xD;                var _props = this.props,&#xD;                    attachKeyboardEvents = _props.attachKeyboardEvents,&#xD;                    onKeyDown = _props.onKeyDown,&#xD;                    onKeyUp = _props.onKeyUp,&#xD;                    onMonitorsUpdate = _props.onMonitorsUpdate,&#xD;                    onTargetsUpdate = _props.onTargetsUpdate,&#xD;                    props = _objectWithoutProperties(_props, [&apos;attachKeyboardEvents&apos;, &apos;onKeyDown&apos;, &apos;onKeyUp&apos;, &apos;onMonitorsUpdate&apos;, &apos;onTargetsUpdate&apos;]);&#xD;&#xD;                return React.createElement(WrappedComponent, props);&#xD;            }&#xD;        }]);&#xD;&#xD;        return VMListener;&#xD;    }(React.Component);&#xD;&#xD;    VMListener.propTypes = {&#xD;        attachKeyboardEvents: PropTypes.bool,&#xD;        onKeyDown: PropTypes.func,&#xD;        onKeyUp: PropTypes.func,&#xD;        onMonitorsUpdate: PropTypes.func,&#xD;        onTargetsUpdate: PropTypes.func,&#xD;        vm: PropTypes.instanceOf(VM).isRequired&#xD;    };&#xD;    VMListener.defaultProps = {&#xD;        attachKeyboardEvents: true&#xD;    };&#xD;    var mapStateToProps = function mapStateToProps(state) {&#xD;        return {&#xD;            vm: state.vm&#xD;        };&#xD;    };&#xD;    var mapDispatchToProps = function mapDispatchToProps(dispatch) {&#xD;        return {&#xD;            onTargetsUpdate: function onTargetsUpdate(data) {&#xD;                dispatch(targets.updateEditingTarget(data.editingTarget));&#xD;                dispatch(targets.updateTargets(data.targetList));&#xD;            },&#xD;            onMonitorsUpdate: function onMonitorsUpdate(monitorList) {&#xD;                dispatch(monitors.updateMonitors(monitorList));&#xD;            }&#xD;        };&#xD;    };&#xD;    return connect(mapStateToProps, mapDispatchToProps)(VMListener);&#xD;};&#xD;&#xD;module.exports = vmListenerHOC;&#xD;&#xD;/***/ }),&#xD;/* 257 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var VM = __webpack_require__(18);&#xD;var Storage = __webpack_require__(255);&#xD;&#xD;var SET_VM = &apos;scratch-gui/vm/SET_VM&apos;;&#xD;var defaultVM = new VM();&#xD;defaultVM.attachStorage(new Storage());&#xD;var initialState = defaultVM;&#xD;&#xD;var reducer = function reducer(state, action) {&#xD;    if (typeof state === &apos;undefined&apos;) state = initialState;&#xD;    switch (action.type) {&#xD;        case SET_VM:&#xD;            return action.vm;&#xD;        default:&#xD;            return state;&#xD;    }&#xD;};&#xD;reducer.setVM = function (vm) {&#xD;    return {&#xD;        type: SET_VM,&#xD;        vm: vm&#xD;    };&#xD;};&#xD;module.exports = reducer;&#xD;&#xD;/***/ }),&#xD;/* 258 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.byteLength = byteLength&#xD;exports.toByteArray = toByteArray&#xD;exports.fromByteArray = fromByteArray&#xD;&#xD;var lookup = []&#xD;var revLookup = []&#xD;var Arr = typeof Uint8Array !== &apos;undefined&apos; ? Uint8Array : Array&#xD;&#xD;var code = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&apos;&#xD;for (var i = 0, len = code.length; i &lt; len; ++i) {&#xD;  lookup[i] = code[i]&#xD;  revLookup[code.charCodeAt(i)] = i&#xD;}&#xD;&#xD;revLookup[&apos;-&apos;.charCodeAt(0)] = 62&#xD;revLookup[&apos;_&apos;.charCodeAt(0)] = 63&#xD;&#xD;function placeHoldersCount (b64) {&#xD;  var len = b64.length&#xD;  if (len % 4 &gt; 0) {&#xD;    throw new Error(&apos;Invalid string. Length must be a multiple of 4&apos;)&#xD;  }&#xD;&#xD;  // the number of equal signs (place holders)&#xD;  // if there are two placeholders, than the two characters before it&#xD;  // represent one byte&#xD;  // if there is only one, then the three characters before it represent 2 bytes&#xD;  // this is just a cheap hack to not do indexOf twice&#xD;  return b64[len - 2] === &apos;=&apos; ? 2 : b64[len - 1] === &apos;=&apos; ? 1 : 0&#xD;}&#xD;&#xD;function byteLength (b64) {&#xD;  // base64 is 4/3 + up to two characters of the original data&#xD;  return b64.length * 3 / 4 - placeHoldersCount(b64)&#xD;}&#xD;&#xD;function toByteArray (b64) {&#xD;  var i, j, l, tmp, placeHolders, arr&#xD;  var len = b64.length&#xD;  placeHolders = placeHoldersCount(b64)&#xD;&#xD;  arr = new Arr(len * 3 / 4 - placeHolders)&#xD;&#xD;  // if there are placeholders, only get up to the last complete 4 chars&#xD;  l = placeHolders &gt; 0 ? len - 4 : len&#xD;&#xD;  var L = 0&#xD;&#xD;  for (i = 0, j = 0; i &lt; l; i += 4, j += 3) {&#xD;    tmp = (revLookup[b64.charCodeAt(i)] &lt;&lt; 18) | (revLookup[b64.charCodeAt(i + 1)] &lt;&lt; 12) | (revLookup[b64.charCodeAt(i + 2)] &lt;&lt; 6) | revLookup[b64.charCodeAt(i + 3)]&#xD;    arr[L++] = (tmp &gt;&gt; 16) &amp; 0xFF&#xD;    arr[L++] = (tmp &gt;&gt; 8) &amp; 0xFF&#xD;    arr[L++] = tmp &amp; 0xFF&#xD;  }&#xD;&#xD;  if (placeHolders === 2) {&#xD;    tmp = (revLookup[b64.charCodeAt(i)] &lt;&lt; 2) | (revLookup[b64.charCodeAt(i + 1)] &gt;&gt; 4)&#xD;    arr[L++] = tmp &amp; 0xFF&#xD;  } else if (placeHolders === 1) {&#xD;    tmp = (revLookup[b64.charCodeAt(i)] &lt;&lt; 10) | (revLookup[b64.charCodeAt(i + 1)] &lt;&lt; 4) | (revLookup[b64.charCodeAt(i + 2)] &gt;&gt; 2)&#xD;    arr[L++] = (tmp &gt;&gt; 8) &amp; 0xFF&#xD;    arr[L++] = tmp &amp; 0xFF&#xD;  }&#xD;&#xD;  return arr&#xD;}&#xD;&#xD;function tripletToBase64 (num) {&#xD;  return lookup[num &gt;&gt; 18 &amp; 0x3F] + lookup[num &gt;&gt; 12 &amp; 0x3F] + lookup[num &gt;&gt; 6 &amp; 0x3F] + lookup[num &amp; 0x3F]&#xD;}&#xD;&#xD;function encodeChunk (uint8, start, end) {&#xD;  var tmp&#xD;  var output = []&#xD;  for (var i = start; i &lt; end; i += 3) {&#xD;    tmp = (uint8[i] &lt;&lt; 16) + (uint8[i + 1] &lt;&lt; 8) + (uint8[i + 2])&#xD;    output.push(tripletToBase64(tmp))&#xD;  }&#xD;  return output.join(&apos;&apos;)&#xD;}&#xD;&#xD;function fromByteArray (uint8) {&#xD;  var tmp&#xD;  var len = uint8.length&#xD;  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes&#xD;  var output = &apos;&apos;&#xD;  var parts = []&#xD;  var maxChunkLength = 16383 // must be multiple of 3&#xD;&#xD;  // go through the array every three bytes, we&apos;ll deal with trailing stuff later&#xD;  for (var i = 0, len2 = len - extraBytes; i &lt; len2; i += maxChunkLength) {&#xD;    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) &gt; len2 ? len2 : (i + maxChunkLength)))&#xD;  }&#xD;&#xD;  // pad the end with zeros, but make sure to not forget the extra bytes&#xD;  if (extraBytes === 1) {&#xD;    tmp = uint8[len - 1]&#xD;    output += lookup[tmp &gt;&gt; 2]&#xD;    output += lookup[(tmp &lt;&lt; 4) &amp; 0x3F]&#xD;    output += &apos;==&apos;&#xD;  } else if (extraBytes === 2) {&#xD;    tmp = (uint8[len - 2] &lt;&lt; 8) + (uint8[len - 1])&#xD;    output += lookup[tmp &gt;&gt; 10]&#xD;    output += lookup[(tmp &gt;&gt; 4) &amp; 0x3F]&#xD;    output += lookup[(tmp &lt;&lt; 2) &amp; 0x3F]&#xD;    output += &apos;=&apos;&#xD;  }&#xD;&#xD;  parts.push(output)&#xD;&#xD;  return parts.join(&apos;&apos;)&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 259 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(56)&#xD;var Transform = __webpack_require__(38)&#xD;var inherits = __webpack_require__(5)&#xD;var modes = __webpack_require__(57)&#xD;var StreamCipher = __webpack_require__(127)&#xD;var AuthCipher = __webpack_require__(120)&#xD;var ebtk = __webpack_require__(60)&#xD;&#xD;inherits(Decipher, Transform)&#xD;function Decipher (mode, key, iv) {&#xD;  if (!(this instanceof Decipher)) {&#xD;    return new Decipher(mode, key, iv)&#xD;  }&#xD;  Transform.call(this)&#xD;  this._cache = new Splitter()&#xD;  this._last = void 0&#xD;  this._cipher = new aes.AES(key)&#xD;  this._prev = new Buffer(iv.length)&#xD;  iv.copy(this._prev)&#xD;  this._mode = mode&#xD;  this._autopadding = true&#xD;}&#xD;Decipher.prototype._update = function (data) {&#xD;  this._cache.add(data)&#xD;  var chunk&#xD;  var thing&#xD;  var out = []&#xD;  while ((chunk = this._cache.get(this._autopadding))) {&#xD;    thing = this._mode.decrypt(this, chunk)&#xD;    out.push(thing)&#xD;  }&#xD;  return Buffer.concat(out)&#xD;}&#xD;Decipher.prototype._final = function () {&#xD;  var chunk = this._cache.flush()&#xD;  if (this._autopadding) {&#xD;    return unpad(this._mode.decrypt(this, chunk))&#xD;  } else if (chunk) {&#xD;    throw new Error(&apos;data not multiple of block length&apos;)&#xD;  }&#xD;}&#xD;Decipher.prototype.setAutoPadding = function (setTo) {&#xD;  this._autopadding = !!setTo&#xD;  return this&#xD;}&#xD;function Splitter () {&#xD;  if (!(this instanceof Splitter)) {&#xD;    return new Splitter()&#xD;  }&#xD;  this.cache = new Buffer(&apos;&apos;)&#xD;}&#xD;Splitter.prototype.add = function (data) {&#xD;  this.cache = Buffer.concat([this.cache, data])&#xD;}&#xD;&#xD;Splitter.prototype.get = function (autoPadding) {&#xD;  var out&#xD;  if (autoPadding) {&#xD;    if (this.cache.length &gt; 16) {&#xD;      out = this.cache.slice(0, 16)&#xD;      this.cache = this.cache.slice(16)&#xD;      return out&#xD;    }&#xD;  } else {&#xD;    if (this.cache.length &gt;= 16) {&#xD;      out = this.cache.slice(0, 16)&#xD;      this.cache = this.cache.slice(16)&#xD;      return out&#xD;    }&#xD;  }&#xD;  return null&#xD;}&#xD;Splitter.prototype.flush = function () {&#xD;  if (this.cache.length) {&#xD;    return this.cache&#xD;  }&#xD;}&#xD;function unpad (last) {&#xD;  var padded = last[15]&#xD;  var i = -1&#xD;  while (++i &lt; padded) {&#xD;    if (last[(i + (16 - padded))] !== padded) {&#xD;      throw new Error(&apos;unable to decrypt data&apos;)&#xD;    }&#xD;  }&#xD;  if (padded === 16) {&#xD;    return&#xD;  }&#xD;  return last.slice(0, 16 - padded)&#xD;}&#xD;&#xD;var modelist = {&#xD;  ECB: __webpack_require__(125),&#xD;  CBC: __webpack_require__(121),&#xD;  CFB: __webpack_require__(122),&#xD;  CFB8: __webpack_require__(124),&#xD;  CFB1: __webpack_require__(123),&#xD;  OFB: __webpack_require__(126),&#xD;  CTR: __webpack_require__(58),&#xD;  GCM: __webpack_require__(58)&#xD;}&#xD;&#xD;function createDecipheriv (suite, password, iv) {&#xD;  var config = modes[suite.toLowerCase()]&#xD;  if (!config) {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  if (typeof iv === &apos;string&apos;) {&#xD;    iv = new Buffer(iv)&#xD;  }&#xD;  if (typeof password === &apos;string&apos;) {&#xD;    password = new Buffer(password)&#xD;  }&#xD;  if (password.length !== config.key / 8) {&#xD;    throw new TypeError(&apos;invalid key length &apos; + password.length)&#xD;  }&#xD;  if (iv.length !== config.iv) {&#xD;    throw new TypeError(&apos;invalid iv length &apos; + iv.length)&#xD;  }&#xD;  if (config.type === &apos;stream&apos;) {&#xD;    return new StreamCipher(modelist[config.mode], password, iv, true)&#xD;  } else if (config.type === &apos;auth&apos;) {&#xD;    return new AuthCipher(modelist[config.mode], password, iv, true)&#xD;  }&#xD;  return new Decipher(modelist[config.mode], password, iv)&#xD;}&#xD;&#xD;function createDecipher (suite, password) {&#xD;  var config = modes[suite.toLowerCase()]&#xD;  if (!config) {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  var keys = ebtk(password, false, config.key, config.iv)&#xD;  return createDecipheriv(suite, keys.key, keys.iv)&#xD;}&#xD;exports.createDecipher = createDecipher&#xD;exports.createDecipheriv = createDecipheriv&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 260 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var aes = __webpack_require__(56)&#xD;var Transform = __webpack_require__(38)&#xD;var inherits = __webpack_require__(5)&#xD;var modes = __webpack_require__(57)&#xD;var ebtk = __webpack_require__(60)&#xD;var StreamCipher = __webpack_require__(127)&#xD;var AuthCipher = __webpack_require__(120)&#xD;inherits(Cipher, Transform)&#xD;function Cipher (mode, key, iv) {&#xD;  if (!(this instanceof Cipher)) {&#xD;    return new Cipher(mode, key, iv)&#xD;  }&#xD;  Transform.call(this)&#xD;  this._cache = new Splitter()&#xD;  this._cipher = new aes.AES(key)&#xD;  this._prev = new Buffer(iv.length)&#xD;  iv.copy(this._prev)&#xD;  this._mode = mode&#xD;  this._autopadding = true&#xD;}&#xD;Cipher.prototype._update = function (data) {&#xD;  this._cache.add(data)&#xD;  var chunk&#xD;  var thing&#xD;  var out = []&#xD;  while ((chunk = this._cache.get())) {&#xD;    thing = this._mode.encrypt(this, chunk)&#xD;    out.push(thing)&#xD;  }&#xD;  return Buffer.concat(out)&#xD;}&#xD;Cipher.prototype._final = function () {&#xD;  var chunk = this._cache.flush()&#xD;  if (this._autopadding) {&#xD;    chunk = this._mode.encrypt(this, chunk)&#xD;    this._cipher.scrub()&#xD;    return chunk&#xD;  } else if (chunk.toString(&apos;hex&apos;) !== &apos;10101010101010101010101010101010&apos;) {&#xD;    this._cipher.scrub()&#xD;    throw new Error(&apos;data not multiple of block length&apos;)&#xD;  }&#xD;}&#xD;Cipher.prototype.setAutoPadding = function (setTo) {&#xD;  this._autopadding = !!setTo&#xD;  return this&#xD;}&#xD;&#xD;function Splitter () {&#xD;  if (!(this instanceof Splitter)) {&#xD;    return new Splitter()&#xD;  }&#xD;  this.cache = new Buffer(&apos;&apos;)&#xD;}&#xD;Splitter.prototype.add = function (data) {&#xD;  this.cache = Buffer.concat([this.cache, data])&#xD;}&#xD;&#xD;Splitter.prototype.get = function () {&#xD;  if (this.cache.length &gt; 15) {&#xD;    var out = this.cache.slice(0, 16)&#xD;    this.cache = this.cache.slice(16)&#xD;    return out&#xD;  }&#xD;  return null&#xD;}&#xD;Splitter.prototype.flush = function () {&#xD;  var len = 16 - this.cache.length&#xD;  var padBuff = new Buffer(len)&#xD;&#xD;  var i = -1&#xD;  while (++i &lt; len) {&#xD;    padBuff.writeUInt8(len, i)&#xD;  }&#xD;  var out = Buffer.concat([this.cache, padBuff])&#xD;  return out&#xD;}&#xD;var modelist = {&#xD;  ECB: __webpack_require__(125),&#xD;  CBC: __webpack_require__(121),&#xD;  CFB: __webpack_require__(122),&#xD;  CFB8: __webpack_require__(124),&#xD;  CFB1: __webpack_require__(123),&#xD;  OFB: __webpack_require__(126),&#xD;  CTR: __webpack_require__(58),&#xD;  GCM: __webpack_require__(58)&#xD;}&#xD;&#xD;function createCipheriv (suite, password, iv) {&#xD;  var config = modes[suite.toLowerCase()]&#xD;  if (!config) {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  if (typeof iv === &apos;string&apos;) {&#xD;    iv = new Buffer(iv)&#xD;  }&#xD;  if (typeof password === &apos;string&apos;) {&#xD;    password = new Buffer(password)&#xD;  }&#xD;  if (password.length !== config.key / 8) {&#xD;    throw new TypeError(&apos;invalid key length &apos; + password.length)&#xD;  }&#xD;  if (iv.length !== config.iv) {&#xD;    throw new TypeError(&apos;invalid iv length &apos; + iv.length)&#xD;  }&#xD;  if (config.type === &apos;stream&apos;) {&#xD;    return new StreamCipher(modelist[config.mode], password, iv)&#xD;  } else if (config.type === &apos;auth&apos;) {&#xD;    return new AuthCipher(modelist[config.mode], password, iv)&#xD;  }&#xD;  return new Cipher(modelist[config.mode], password, iv)&#xD;}&#xD;function createCipher (suite, password) {&#xD;  var config = modes[suite.toLowerCase()]&#xD;  if (!config) {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  var keys = ebtk(password, false, config.key, config.iv)&#xD;  return createCipheriv(suite, keys.key, keys.iv)&#xD;}&#xD;&#xD;exports.createCipheriv = createCipheriv&#xD;exports.createCipher = createCipher&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 261 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var zeros = new Buffer(16)&#xD;zeros.fill(0)&#xD;module.exports = GHASH&#xD;function GHASH (key) {&#xD;  this.h = key&#xD;  this.state = new Buffer(16)&#xD;  this.state.fill(0)&#xD;  this.cache = new Buffer(&apos;&apos;)&#xD;}&#xD;// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html&#xD;// by Juho Vähä-Herttua&#xD;GHASH.prototype.ghash = function (block) {&#xD;  var i = -1&#xD;  while (++i &lt; block.length) {&#xD;    this.state[i] ^= block[i]&#xD;  }&#xD;  this._multiply()&#xD;}&#xD;&#xD;GHASH.prototype._multiply = function () {&#xD;  var Vi = toArray(this.h)&#xD;  var Zi = [0, 0, 0, 0]&#xD;  var j, xi, lsb_Vi&#xD;  var i = -1&#xD;  while (++i &lt; 128) {&#xD;    xi = (this.state[&#126;&#126;(i / 8)] &amp; (1 &lt;&lt; (7 - i % 8))) !== 0&#xD;    if (xi) {&#xD;      // Z_i+1 = Z_i ^ V_i&#xD;      Zi = xor(Zi, Vi)&#xD;    }&#xD;&#xD;    // Store the value of LSB(V_i)&#xD;    lsb_Vi = (Vi[3] &amp; 1) !== 0&#xD;&#xD;    // V_i+1 = V_i &gt;&gt; 1&#xD;    for (j = 3; j &gt; 0; j--) {&#xD;      Vi[j] = (Vi[j] &gt;&gt;&gt; 1) | ((Vi[j - 1] &amp; 1) &lt;&lt; 31)&#xD;    }&#xD;    Vi[0] = Vi[0] &gt;&gt;&gt; 1&#xD;&#xD;    // If LSB(V_i) is 1, V_i+1 = (V_i &gt;&gt; 1) ^ R&#xD;    if (lsb_Vi) {&#xD;      Vi[0] = Vi[0] ^ (0xe1 &lt;&lt; 24)&#xD;    }&#xD;  }&#xD;  this.state = fromArray(Zi)&#xD;}&#xD;GHASH.prototype.update = function (buf) {&#xD;  this.cache = Buffer.concat([this.cache, buf])&#xD;  var chunk&#xD;  while (this.cache.length &gt;= 16) {&#xD;    chunk = this.cache.slice(0, 16)&#xD;    this.cache = this.cache.slice(16)&#xD;    this.ghash(chunk)&#xD;  }&#xD;}&#xD;GHASH.prototype.final = function (abl, bl) {&#xD;  if (this.cache.length) {&#xD;    this.ghash(Buffer.concat([this.cache, zeros], 16))&#xD;  }&#xD;  this.ghash(fromArray([&#xD;    0, abl,&#xD;    0, bl&#xD;  ]))&#xD;  return this.state&#xD;}&#xD;&#xD;function toArray (buf) {&#xD;  return [&#xD;    buf.readUInt32BE(0),&#xD;    buf.readUInt32BE(4),&#xD;    buf.readUInt32BE(8),&#xD;    buf.readUInt32BE(12)&#xD;  ]&#xD;}&#xD;function fromArray (out) {&#xD;  out = out.map(fixup_uint32)&#xD;  var buf = new Buffer(16)&#xD;  buf.writeUInt32BE(out[0], 0)&#xD;  buf.writeUInt32BE(out[1], 4)&#xD;  buf.writeUInt32BE(out[2], 8)&#xD;  buf.writeUInt32BE(out[3], 12)&#xD;  return buf&#xD;}&#xD;var uint_max = Math.pow(2, 32)&#xD;function fixup_uint32 (x) {&#xD;  var ret, x_pos&#xD;  ret = x &gt; uint_max || x &lt; 0 ? (x_pos = Math.abs(x) % uint_max, x &lt; 0 ? uint_max - x_pos : x_pos) : x&#xD;  return ret&#xD;}&#xD;function xor (a, b) {&#xD;  return [&#xD;    a[0] ^ b[0],&#xD;    a[1] ^ b[1],&#xD;    a[2] ^ b[2],&#xD;    a[3] ^ b[3]&#xD;  ]&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 262 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var ebtk = __webpack_require__(60)&#xD;var aes = __webpack_require__(77)&#xD;var DES = __webpack_require__(263)&#xD;var desModes = __webpack_require__(264)&#xD;var aesModes = __webpack_require__(57)&#xD;function createCipher (suite, password) {&#xD;  var keyLen, ivLen&#xD;  suite = suite.toLowerCase()&#xD;  if (aesModes[suite]) {&#xD;    keyLen = aesModes[suite].key&#xD;    ivLen = aesModes[suite].iv&#xD;  } else if (desModes[suite]) {&#xD;    keyLen = desModes[suite].key * 8&#xD;    ivLen = desModes[suite].iv&#xD;  } else {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  var keys = ebtk(password, false, keyLen, ivLen)&#xD;  return createCipheriv(suite, keys.key, keys.iv)&#xD;}&#xD;function createDecipher (suite, password) {&#xD;  var keyLen, ivLen&#xD;  suite = suite.toLowerCase()&#xD;  if (aesModes[suite]) {&#xD;    keyLen = aesModes[suite].key&#xD;    ivLen = aesModes[suite].iv&#xD;  } else if (desModes[suite]) {&#xD;    keyLen = desModes[suite].key * 8&#xD;    ivLen = desModes[suite].iv&#xD;  } else {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;  var keys = ebtk(password, false, keyLen, ivLen)&#xD;  return createDecipheriv(suite, keys.key, keys.iv)&#xD;}&#xD;&#xD;function createCipheriv (suite, key, iv) {&#xD;  suite = suite.toLowerCase()&#xD;  if (aesModes[suite]) {&#xD;    return aes.createCipheriv(suite, key, iv)&#xD;  } else if (desModes[suite]) {&#xD;    return new DES({&#xD;      key: key,&#xD;      iv: iv,&#xD;      mode: suite&#xD;    })&#xD;  } else {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;}&#xD;function createDecipheriv (suite, key, iv) {&#xD;  suite = suite.toLowerCase()&#xD;  if (aesModes[suite]) {&#xD;    return aes.createDecipheriv(suite, key, iv)&#xD;  } else if (desModes[suite]) {&#xD;    return new DES({&#xD;      key: key,&#xD;      iv: iv,&#xD;      mode: suite,&#xD;      decrypt: true&#xD;    })&#xD;  } else {&#xD;    throw new TypeError(&apos;invalid suite type&apos;)&#xD;  }&#xD;}&#xD;exports.createCipher = exports.Cipher = createCipher&#xD;exports.createCipheriv = exports.Cipheriv = createCipheriv&#xD;exports.createDecipher = exports.Decipher = createDecipher&#xD;exports.createDecipheriv = exports.Decipheriv = createDecipheriv&#xD;function getCiphers () {&#xD;  return Object.keys(desModes).concat(aes.getCiphers())&#xD;}&#xD;exports.listCiphers = exports.getCiphers = getCiphers&#xD;&#xD;&#xD;/***/ }),&#xD;/* 263 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var CipherBase = __webpack_require__(38)&#xD;var des = __webpack_require__(81)&#xD;var inherits = __webpack_require__(5)&#xD;&#xD;var modes = {&#xD;  &apos;des-ede3-cbc&apos;: des.CBC.instantiate(des.EDE),&#xD;  &apos;des-ede3&apos;: des.EDE,&#xD;  &apos;des-ede-cbc&apos;: des.CBC.instantiate(des.EDE),&#xD;  &apos;des-ede&apos;: des.EDE,&#xD;  &apos;des-cbc&apos;: des.CBC.instantiate(des.DES),&#xD;  &apos;des-ecb&apos;: des.DES&#xD;}&#xD;modes.des = modes[&apos;des-cbc&apos;]&#xD;modes.des3 = modes[&apos;des-ede3-cbc&apos;]&#xD;module.exports = DES&#xD;inherits(DES, CipherBase)&#xD;function DES (opts) {&#xD;  CipherBase.call(this)&#xD;  var modeName = opts.mode.toLowerCase()&#xD;  var mode = modes[modeName]&#xD;  var type&#xD;  if (opts.decrypt) {&#xD;    type = &apos;decrypt&apos;&#xD;  } else {&#xD;    type = &apos;encrypt&apos;&#xD;  }&#xD;  var key = opts.key&#xD;  if (modeName === &apos;des-ede&apos; || modeName === &apos;des-ede-cbc&apos;) {&#xD;    key = Buffer.concat([key, key.slice(0, 8)])&#xD;  }&#xD;  var iv = opts.iv&#xD;  this._des = mode.create({&#xD;    key: key,&#xD;    iv: iv,&#xD;    type: type&#xD;  })&#xD;}&#xD;DES.prototype._update = function (data) {&#xD;  return new Buffer(this._des.update(data))&#xD;}&#xD;DES.prototype._final = function () {&#xD;  return new Buffer(this._des.final())&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 264 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;exports[&apos;des-ecb&apos;] = {&#xD;  key: 8,&#xD;  iv: 0&#xD;}&#xD;exports[&apos;des-cbc&apos;] = exports.des = {&#xD;  key: 8,&#xD;  iv: 8&#xD;}&#xD;exports[&apos;des-ede3-cbc&apos;] = exports.des3 = {&#xD;  key: 24,&#xD;  iv: 8&#xD;}&#xD;exports[&apos;des-ede3&apos;] = {&#xD;  key: 24,&#xD;  iv: 0&#xD;}&#xD;exports[&apos;des-ede-cbc&apos;] = {&#xD;  key: 16,&#xD;  iv: 8&#xD;}&#xD;exports[&apos;des-ede&apos;] = {&#xD;  key: 16,&#xD;  iv: 0&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 265 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(128)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 266 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var createHash = __webpack_require__(39)&#xD;var stream = __webpack_require__(29)&#xD;var inherits = __webpack_require__(5)&#xD;var sign = __webpack_require__(267)&#xD;var verify = __webpack_require__(268)&#xD;&#xD;var algorithms = __webpack_require__(128)&#xD;Object.keys(algorithms).forEach(function (key) {&#xD;  algorithms[key].id = new Buffer(algorithms[key].id, &apos;hex&apos;)&#xD;  algorithms[key.toLowerCase()] = algorithms[key]&#xD;})&#xD;&#xD;function Sign (algorithm) {&#xD;  stream.Writable.call(this)&#xD;&#xD;  var data = algorithms[algorithm]&#xD;  if (!data) throw new Error(&apos;Unknown message digest&apos;)&#xD;&#xD;  this._hashType = data.hash&#xD;  this._hash = createHash(data.hash)&#xD;  this._tag = data.id&#xD;  this._signType = data.sign&#xD;}&#xD;inherits(Sign, stream.Writable)&#xD;&#xD;Sign.prototype._write = function _write (data, _, done) {&#xD;  this._hash.update(data)&#xD;  done()&#xD;}&#xD;&#xD;Sign.prototype.update = function update (data, enc) {&#xD;  if (typeof data === &apos;string&apos;) data = new Buffer(data, enc)&#xD;&#xD;  this._hash.update(data)&#xD;  return this&#xD;}&#xD;&#xD;Sign.prototype.sign = function signMethod (key, enc) {&#xD;  this.end()&#xD;  var hash = this._hash.digest()&#xD;  var sig = sign(hash, key, this._hashType, this._signType, this._tag)&#xD;&#xD;  return enc ? sig.toString(enc) : sig&#xD;}&#xD;&#xD;function Verify (algorithm) {&#xD;  stream.Writable.call(this)&#xD;&#xD;  var data = algorithms[algorithm]&#xD;  if (!data) throw new Error(&apos;Unknown message digest&apos;)&#xD;&#xD;  this._hash = createHash(data.hash)&#xD;  this._tag = data.id&#xD;  this._signType = data.sign&#xD;}&#xD;inherits(Verify, stream.Writable)&#xD;&#xD;Verify.prototype._write = function _write (data, _, done) {&#xD;  this._hash.update(data)&#xD;  done()&#xD;}&#xD;&#xD;Verify.prototype.update = function update (data, enc) {&#xD;  if (typeof data === &apos;string&apos;) data = new Buffer(data, enc)&#xD;&#xD;  this._hash.update(data)&#xD;  return this&#xD;}&#xD;&#xD;Verify.prototype.verify = function verifyMethod (key, sig, enc) {&#xD;  if (typeof sig === &apos;string&apos;) sig = new Buffer(sig, enc)&#xD;&#xD;  this.end()&#xD;  var hash = this._hash.digest()&#xD;  return verify(sig, hash, key, this._signType, this._tag)&#xD;}&#xD;&#xD;function createSign (algorithm) {&#xD;  return new Sign(algorithm)&#xD;}&#xD;&#xD;function createVerify (algorithm) {&#xD;  return new Verify(algorithm)&#xD;}&#xD;&#xD;module.exports = {&#xD;  Sign: createSign,&#xD;  Verify: createVerify,&#xD;  createSign: createSign,&#xD;  createVerify: createVerify&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 267 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js&#xD;var createHmac = __webpack_require__(80)&#xD;var crt = __webpack_require__(78)&#xD;var EC = __webpack_require__(19).ec&#xD;var BN = __webpack_require__(11)&#xD;var parseKeys = __webpack_require__(62)&#xD;var curves = __webpack_require__(129)&#xD;&#xD;function sign (hash, key, hashType, signType, tag) {&#xD;  var priv = parseKeys(key)&#xD;  if (priv.curve) {&#xD;    // rsa keys can be interpreted as ecdsa ones in openssl&#xD;    if (signType !== &apos;ecdsa&apos; &amp;&amp; signType !== &apos;ecdsa/rsa&apos;) throw new Error(&apos;wrong private key type&apos;)&#xD;    return ecSign(hash, priv)&#xD;  } else if (priv.type === &apos;dsa&apos;) {&#xD;    if (signType !== &apos;dsa&apos;) throw new Error(&apos;wrong private key type&apos;)&#xD;    return dsaSign(hash, priv, hashType)&#xD;  } else {&#xD;    if (signType !== &apos;rsa&apos; &amp;&amp; signType !== &apos;ecdsa/rsa&apos;) throw new Error(&apos;wrong private key type&apos;)&#xD;  }&#xD;  hash = Buffer.concat([tag, hash])&#xD;  var len = priv.modulus.byteLength()&#xD;  var pad = [ 0, 1 ]&#xD;  while (hash.length + pad.length + 1 &lt; len) pad.push(0xff)&#xD;  pad.push(0x00)&#xD;  var i = -1&#xD;  while (++i &lt; hash.length) pad.push(hash[i])&#xD;&#xD;  var out = crt(pad, priv)&#xD;  return out&#xD;}&#xD;&#xD;function ecSign (hash, priv) {&#xD;  var curveId = curves[priv.curve.join(&apos;.&apos;)]&#xD;  if (!curveId) throw new Error(&apos;unknown curve &apos; + priv.curve.join(&apos;.&apos;))&#xD;&#xD;  var curve = new EC(curveId)&#xD;  var key = curve.keyFromPrivate(priv.privateKey)&#xD;  var out = key.sign(hash)&#xD;&#xD;  return new Buffer(out.toDER())&#xD;}&#xD;&#xD;function dsaSign (hash, priv, algo) {&#xD;  var x = priv.params.priv_key&#xD;  var p = priv.params.p&#xD;  var q = priv.params.q&#xD;  var g = priv.params.g&#xD;  var r = new BN(0)&#xD;  var k&#xD;  var H = bits2int(hash, q).mod(q)&#xD;  var s = false&#xD;  var kv = getKey(x, q, hash, algo)&#xD;  while (s === false) {&#xD;    k = makeKey(q, kv, algo)&#xD;    r = makeR(g, k, p, q)&#xD;    s = k.invm(q).imul(H.add(x.mul(r))).mod(q)&#xD;    if (s.cmpn(0) === 0) {&#xD;      s = false&#xD;      r = new BN(0)&#xD;    }&#xD;  }&#xD;  return toDER(r, s)&#xD;}&#xD;&#xD;function toDER (r, s) {&#xD;  r = r.toArray()&#xD;  s = s.toArray()&#xD;&#xD;  // Pad values&#xD;  if (r[0] &amp; 0x80) r = [ 0 ].concat(r)&#xD;  if (s[0] &amp; 0x80) s = [ 0 ].concat(s)&#xD;&#xD;  var total = r.length + s.length + 4&#xD;  var res = [ 0x30, total, 0x02, r.length ]&#xD;  res = res.concat(r, [ 0x02, s.length ], s)&#xD;  return new Buffer(res)&#xD;}&#xD;&#xD;function getKey (x, q, hash, algo) {&#xD;  x = new Buffer(x.toArray())&#xD;  if (x.length &lt; q.byteLength()) {&#xD;    var zeros = new Buffer(q.byteLength() - x.length)&#xD;    zeros.fill(0)&#xD;    x = Buffer.concat([ zeros, x ])&#xD;  }&#xD;  var hlen = hash.length&#xD;  var hbits = bits2octets(hash, q)&#xD;  var v = new Buffer(hlen)&#xD;  v.fill(1)&#xD;  var k = new Buffer(hlen)&#xD;  k.fill(0)&#xD;  k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest()&#xD;  v = createHmac(algo, k).update(v).digest()&#xD;  k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest()&#xD;  v = createHmac(algo, k).update(v).digest()&#xD;  return { k: k, v: v }&#xD;}&#xD;&#xD;function bits2int (obits, q) {&#xD;  var bits = new BN(obits)&#xD;  var shift = (obits.length &lt;&lt; 3) - q.bitLength()&#xD;  if (shift &gt; 0) bits.ishrn(shift)&#xD;  return bits&#xD;}&#xD;&#xD;function bits2octets (bits, q) {&#xD;  bits = bits2int(bits, q)&#xD;  bits = bits.mod(q)&#xD;  var out = new Buffer(bits.toArray())&#xD;  if (out.length &lt; q.byteLength()) {&#xD;    var zeros = new Buffer(q.byteLength() - out.length)&#xD;    zeros.fill(0)&#xD;    out = Buffer.concat([ zeros, out ])&#xD;  }&#xD;  return out&#xD;}&#xD;&#xD;function makeKey (q, kv, algo) {&#xD;  var t&#xD;  var k&#xD;&#xD;  do {&#xD;    t = new Buffer(0)&#xD;&#xD;    while (t.length * 8 &lt; q.bitLength()) {&#xD;      kv.v = createHmac(algo, kv.k).update(kv.v).digest()&#xD;      t = Buffer.concat([ t, kv.v ])&#xD;    }&#xD;&#xD;    k = bits2int(t, q)&#xD;    kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest()&#xD;    kv.v = createHmac(algo, kv.k).update(kv.v).digest()&#xD;  } while (k.cmp(q) !== -1)&#xD;&#xD;  return k&#xD;}&#xD;&#xD;function makeR (g, k, p, q) {&#xD;  return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)&#xD;}&#xD;&#xD;module.exports = sign&#xD;module.exports.getKey = getKey&#xD;module.exports.makeKey = makeKey&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 268 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js&#xD;var BN = __webpack_require__(11)&#xD;var EC = __webpack_require__(19).ec&#xD;var parseKeys = __webpack_require__(62)&#xD;var curves = __webpack_require__(129)&#xD;&#xD;function verify (sig, hash, key, signType, tag) {&#xD;  var pub = parseKeys(key)&#xD;  if (pub.type === &apos;ec&apos;) {&#xD;    // rsa keys can be interpreted as ecdsa ones in openssl&#xD;    if (signType !== &apos;ecdsa&apos; &amp;&amp; signType !== &apos;ecdsa/rsa&apos;) throw new Error(&apos;wrong public key type&apos;)&#xD;    return ecVerify(sig, hash, pub)&#xD;  } else if (pub.type === &apos;dsa&apos;) {&#xD;    if (signType !== &apos;dsa&apos;) throw new Error(&apos;wrong public key type&apos;)&#xD;    return dsaVerify(sig, hash, pub)&#xD;  } else {&#xD;    if (signType !== &apos;rsa&apos; &amp;&amp; signType !== &apos;ecdsa/rsa&apos;) throw new Error(&apos;wrong public key type&apos;)&#xD;  }&#xD;  hash = Buffer.concat([tag, hash])&#xD;  var len = pub.modulus.byteLength()&#xD;  var pad = [ 1 ]&#xD;  var padNum = 0&#xD;  while (hash.length + pad.length + 2 &lt; len) {&#xD;    pad.push(0xff)&#xD;    padNum++&#xD;  }&#xD;  pad.push(0x00)&#xD;  var i = -1&#xD;  while (++i &lt; hash.length) {&#xD;    pad.push(hash[i])&#xD;  }&#xD;  pad = new Buffer(pad)&#xD;  var red = BN.mont(pub.modulus)&#xD;  sig = new BN(sig).toRed(red)&#xD;&#xD;  sig = sig.redPow(new BN(pub.publicExponent))&#xD;  sig = new Buffer(sig.fromRed().toArray())&#xD;  var out = padNum &lt; 8 ? 1 : 0&#xD;  len = Math.min(sig.length, pad.length)&#xD;  if (sig.length !== pad.length) out = 1&#xD;&#xD;  i = -1&#xD;  while (++i &lt; len) out |= sig[i] ^ pad[i]&#xD;  return out === 0&#xD;}&#xD;&#xD;function ecVerify (sig, hash, pub) {&#xD;  var curveId = curves[pub.data.algorithm.curve.join(&apos;.&apos;)]&#xD;  if (!curveId) throw new Error(&apos;unknown curve &apos; + pub.data.algorithm.curve.join(&apos;.&apos;))&#xD;&#xD;  var curve = new EC(curveId)&#xD;  var pubkey = pub.data.subjectPrivateKey.data&#xD;&#xD;  return curve.verify(hash, sig, pubkey)&#xD;}&#xD;&#xD;function dsaVerify (sig, hash, pub) {&#xD;  var p = pub.data.p&#xD;  var q = pub.data.q&#xD;  var g = pub.data.g&#xD;  var y = pub.data.pub_key&#xD;  var unpacked = parseKeys.signature.decode(sig, &apos;der&apos;)&#xD;  var s = unpacked.s&#xD;  var r = unpacked.r&#xD;  checkValue(s, q)&#xD;  checkValue(r, q)&#xD;  var montp = BN.mont(p)&#xD;  var w = s.invm(q)&#xD;  var v = g.toRed(montp)&#xD;    .redPow(new BN(hash).mul(w).mod(q))&#xD;    .fromRed()&#xD;    .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())&#xD;    .mod(p)&#xD;    .mod(q)&#xD;  return v.cmp(r) === 0&#xD;}&#xD;&#xD;function checkValue (b, q) {&#xD;  if (b.cmpn(0) &lt;= 0) throw new Error(&apos;invalid sig&apos;)&#xD;  if (b.cmp(q) &gt;= q) throw new Error(&apos;invalid sig&apos;)&#xD;}&#xD;&#xD;module.exports = verify&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 269 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(process, Buffer) {var msg = __webpack_require__(145);&#xD;var zstream = __webpack_require__(380);&#xD;var zlib_deflate = __webpack_require__(375);&#xD;var zlib_inflate = __webpack_require__(377);&#xD;var constants = __webpack_require__(374);&#xD;&#xD;for (var key in constants) {&#xD;  exports[key] = constants[key];&#xD;}&#xD;&#xD;// zlib modes&#xD;exports.NONE = 0;&#xD;exports.DEFLATE = 1;&#xD;exports.INFLATE = 2;&#xD;exports.GZIP = 3;&#xD;exports.GUNZIP = 4;&#xD;exports.DEFLATERAW = 5;&#xD;exports.INFLATERAW = 6;&#xD;exports.UNZIP = 7;&#xD;&#xD;/**&#xD; * Emulate Node&apos;s zlib C++ layer for use by the JS layer in index.js&#xD; */&#xD;function Zlib(mode) {&#xD;  if (mode &lt; exports.DEFLATE || mode &gt; exports.UNZIP)&#xD;    throw new TypeError("Bad argument");&#xD;    &#xD;  this.mode = mode;&#xD;  this.init_done = false;&#xD;  this.write_in_progress = false;&#xD;  this.pending_close = false;&#xD;  this.windowBits = 0;&#xD;  this.level = 0;&#xD;  this.memLevel = 0;&#xD;  this.strategy = 0;&#xD;  this.dictionary = null;&#xD;}&#xD;&#xD;Zlib.prototype.init = function(windowBits, level, memLevel, strategy, dictionary) {&#xD;  this.windowBits = windowBits;&#xD;  this.level = level;&#xD;  this.memLevel = memLevel;&#xD;  this.strategy = strategy;&#xD;  // dictionary not supported.&#xD;  &#xD;  if (this.mode === exports.GZIP || this.mode === exports.GUNZIP)&#xD;    this.windowBits += 16;&#xD;    &#xD;  if (this.mode === exports.UNZIP)&#xD;    this.windowBits += 32;&#xD;    &#xD;  if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW)&#xD;    this.windowBits = -this.windowBits;&#xD;    &#xD;  this.strm = new zstream();&#xD;  &#xD;  switch (this.mode) {&#xD;    case exports.DEFLATE:&#xD;    case exports.GZIP:&#xD;    case exports.DEFLATERAW:&#xD;      var status = zlib_deflate.deflateInit2(&#xD;        this.strm,&#xD;        this.level,&#xD;        exports.Z_DEFLATED,&#xD;        this.windowBits,&#xD;        this.memLevel,&#xD;        this.strategy&#xD;      );&#xD;      break;&#xD;    case exports.INFLATE:&#xD;    case exports.GUNZIP:&#xD;    case exports.INFLATERAW:&#xD;    case exports.UNZIP:&#xD;      var status  = zlib_inflate.inflateInit2(&#xD;        this.strm,&#xD;        this.windowBits&#xD;      );&#xD;      break;&#xD;    default:&#xD;      throw new Error("Unknown mode " + this.mode);&#xD;  }&#xD;  &#xD;  if (status !== exports.Z_OK) {&#xD;    this._error(status);&#xD;    return;&#xD;  }&#xD;  &#xD;  this.write_in_progress = false;&#xD;  this.init_done = true;&#xD;};&#xD;&#xD;Zlib.prototype.params = function() {&#xD;  throw new Error("deflateParams Not supported");&#xD;};&#xD;&#xD;Zlib.prototype._writeCheck = function() {&#xD;  if (!this.init_done)&#xD;    throw new Error("write before init");&#xD;    &#xD;  if (this.mode === exports.NONE)&#xD;    throw new Error("already finalized");&#xD;    &#xD;  if (this.write_in_progress)&#xD;    throw new Error("write already in progress");&#xD;    &#xD;  if (this.pending_close)&#xD;    throw new Error("close is pending");&#xD;};&#xD;&#xD;Zlib.prototype.write = function(flush, input, in_off, in_len, out, out_off, out_len) {    &#xD;  this._writeCheck();&#xD;  this.write_in_progress = true;&#xD;  &#xD;  var self = this;&#xD;  process.nextTick(function() {&#xD;    self.write_in_progress = false;&#xD;    var res = self._write(flush, input, in_off, in_len, out, out_off, out_len);&#xD;    self.callback(res[0], res[1]);&#xD;    &#xD;    if (self.pending_close)&#xD;      self.close();&#xD;  });&#xD;  &#xD;  return this;&#xD;};&#xD;&#xD;// set method for Node buffers, used by pako&#xD;function bufferSet(data, offset) {&#xD;  for (var i = 0; i &lt; data.length; i++) {&#xD;    this[offset + i] = data[i];&#xD;  }&#xD;}&#xD;&#xD;Zlib.prototype.writeSync = function(flush, input, in_off, in_len, out, out_off, out_len) {&#xD;  this._writeCheck();&#xD;  return this._write(flush, input, in_off, in_len, out, out_off, out_len);&#xD;};&#xD;&#xD;Zlib.prototype._write = function(flush, input, in_off, in_len, out, out_off, out_len) {&#xD;  this.write_in_progress = true;&#xD;  &#xD;  if (flush !== exports.Z_NO_FLUSH &amp;&amp;&#xD;      flush !== exports.Z_PARTIAL_FLUSH &amp;&amp;&#xD;      flush !== exports.Z_SYNC_FLUSH &amp;&amp;&#xD;      flush !== exports.Z_FULL_FLUSH &amp;&amp;&#xD;      flush !== exports.Z_FINISH &amp;&amp;&#xD;      flush !== exports.Z_BLOCK) {&#xD;    throw new Error("Invalid flush value");&#xD;  }&#xD;  &#xD;  if (input == null) {&#xD;    input = new Buffer(0);&#xD;    in_len = 0;&#xD;    in_off = 0;&#xD;  }&#xD;  &#xD;  if (out._set)&#xD;    out.set = out._set;&#xD;  else&#xD;    out.set = bufferSet;&#xD;  &#xD;  var strm = this.strm;&#xD;  strm.avail_in = in_len;&#xD;  strm.input = input;&#xD;  strm.next_in = in_off;&#xD;  strm.avail_out = out_len;&#xD;  strm.output = out;&#xD;  strm.next_out = out_off;&#xD;  &#xD;  switch (this.mode) {&#xD;    case exports.DEFLATE:&#xD;    case exports.GZIP:&#xD;    case exports.DEFLATERAW:&#xD;      var status = zlib_deflate.deflate(strm, flush);&#xD;      break;&#xD;    case exports.UNZIP:&#xD;    case exports.INFLATE:&#xD;    case exports.GUNZIP:&#xD;    case exports.INFLATERAW:&#xD;      var status = zlib_inflate.inflate(strm, flush);&#xD;      break;&#xD;    default:&#xD;      throw new Error("Unknown mode " + this.mode);&#xD;  }&#xD;  &#xD;  if (status !== exports.Z_STREAM_END &amp;&amp; status !== exports.Z_OK) {&#xD;    this._error(status);&#xD;  }&#xD;  &#xD;  this.write_in_progress = false;&#xD;  return [strm.avail_in, strm.avail_out];&#xD;};&#xD;&#xD;Zlib.prototype.close = function() {&#xD;  if (this.write_in_progress) {&#xD;    this.pending_close = true;&#xD;    return;&#xD;  }&#xD;  &#xD;  this.pending_close = false;&#xD;  &#xD;  if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {&#xD;    zlib_deflate.deflateEnd(this.strm);&#xD;  } else {&#xD;    zlib_inflate.inflateEnd(this.strm);&#xD;  }&#xD;  &#xD;  this.mode = exports.NONE;&#xD;};&#xD;&#xD;Zlib.prototype.reset = function() {&#xD;  switch (this.mode) {&#xD;    case exports.DEFLATE:&#xD;    case exports.DEFLATERAW:&#xD;      var status = zlib_deflate.deflateReset(this.strm);&#xD;      break;&#xD;    case exports.INFLATE:&#xD;    case exports.INFLATERAW:&#xD;      var status = zlib_inflate.inflateReset(this.strm);&#xD;      break;&#xD;  }&#xD;  &#xD;  if (status !== exports.Z_OK) {&#xD;    this._error(status);&#xD;  }&#xD;};&#xD;&#xD;Zlib.prototype._error = function(status) {&#xD;  this.onerror(msg[status] + &apos;: &apos; + this.strm.msg, status);&#xD;  &#xD;  this.write_in_progress = false;&#xD;  if (this.pending_close)&#xD;    this.close();&#xD;};&#xD;&#xD;exports.Zlib = Zlib;&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14), __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 270 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer, process) {// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;var Transform = __webpack_require__(190);&#xD;&#xD;var binding = __webpack_require__(269);&#xD;var util = __webpack_require__(74);&#xD;var assert = __webpack_require__(216).ok;&#xD;&#xD;// zlib doesn&apos;t provide these, so kludge them in following the same&#xD;// const naming scheme zlib uses.&#xD;binding.Z_MIN_WINDOWBITS = 8;&#xD;binding.Z_MAX_WINDOWBITS = 15;&#xD;binding.Z_DEFAULT_WINDOWBITS = 15;&#xD;&#xD;// fewer than 64 bytes per chunk is stupid.&#xD;// technically it could work with as few as 8, but even 64 bytes&#xD;// is absurdly low.  Usually a MB or more is best.&#xD;binding.Z_MIN_CHUNK = 64;&#xD;binding.Z_MAX_CHUNK = Infinity;&#xD;binding.Z_DEFAULT_CHUNK = (16 * 1024);&#xD;&#xD;binding.Z_MIN_MEMLEVEL = 1;&#xD;binding.Z_MAX_MEMLEVEL = 9;&#xD;binding.Z_DEFAULT_MEMLEVEL = 8;&#xD;&#xD;binding.Z_MIN_LEVEL = -1;&#xD;binding.Z_MAX_LEVEL = 9;&#xD;binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;&#xD;&#xD;// expose all the zlib constants&#xD;Object.keys(binding).forEach(function(k) {&#xD;  if (k.match(/^Z/)) exports[k] = binding[k];&#xD;});&#xD;&#xD;// translation table for return codes.&#xD;exports.codes = {&#xD;  Z_OK: binding.Z_OK,&#xD;  Z_STREAM_END: binding.Z_STREAM_END,&#xD;  Z_NEED_DICT: binding.Z_NEED_DICT,&#xD;  Z_ERRNO: binding.Z_ERRNO,&#xD;  Z_STREAM_ERROR: binding.Z_STREAM_ERROR,&#xD;  Z_DATA_ERROR: binding.Z_DATA_ERROR,&#xD;  Z_MEM_ERROR: binding.Z_MEM_ERROR,&#xD;  Z_BUF_ERROR: binding.Z_BUF_ERROR,&#xD;  Z_VERSION_ERROR: binding.Z_VERSION_ERROR&#xD;};&#xD;&#xD;Object.keys(exports.codes).forEach(function(k) {&#xD;  exports.codes[exports.codes[k]] = k;&#xD;});&#xD;&#xD;exports.Deflate = Deflate;&#xD;exports.Inflate = Inflate;&#xD;exports.Gzip = Gzip;&#xD;exports.Gunzip = Gunzip;&#xD;exports.DeflateRaw = DeflateRaw;&#xD;exports.InflateRaw = InflateRaw;&#xD;exports.Unzip = Unzip;&#xD;&#xD;exports.createDeflate = function(o) {&#xD;  return new Deflate(o);&#xD;};&#xD;&#xD;exports.createInflate = function(o) {&#xD;  return new Inflate(o);&#xD;};&#xD;&#xD;exports.createDeflateRaw = function(o) {&#xD;  return new DeflateRaw(o);&#xD;};&#xD;&#xD;exports.createInflateRaw = function(o) {&#xD;  return new InflateRaw(o);&#xD;};&#xD;&#xD;exports.createGzip = function(o) {&#xD;  return new Gzip(o);&#xD;};&#xD;&#xD;exports.createGunzip = function(o) {&#xD;  return new Gunzip(o);&#xD;};&#xD;&#xD;exports.createUnzip = function(o) {&#xD;  return new Unzip(o);&#xD;};&#xD;&#xD;&#xD;// Convenience methods.&#xD;// compress/decompress a string or buffer in one step.&#xD;exports.deflate = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new Deflate(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.deflateSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new Deflate(opts), buffer);&#xD;};&#xD;&#xD;exports.gzip = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new Gzip(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.gzipSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new Gzip(opts), buffer);&#xD;};&#xD;&#xD;exports.deflateRaw = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new DeflateRaw(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.deflateRawSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new DeflateRaw(opts), buffer);&#xD;};&#xD;&#xD;exports.unzip = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new Unzip(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.unzipSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new Unzip(opts), buffer);&#xD;};&#xD;&#xD;exports.inflate = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new Inflate(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.inflateSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new Inflate(opts), buffer);&#xD;};&#xD;&#xD;exports.gunzip = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new Gunzip(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.gunzipSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new Gunzip(opts), buffer);&#xD;};&#xD;&#xD;exports.inflateRaw = function(buffer, opts, callback) {&#xD;  if (typeof opts === &apos;function&apos;) {&#xD;    callback = opts;&#xD;    opts = {};&#xD;  }&#xD;  return zlibBuffer(new InflateRaw(opts), buffer, callback);&#xD;};&#xD;&#xD;exports.inflateRawSync = function(buffer, opts) {&#xD;  return zlibBufferSync(new InflateRaw(opts), buffer);&#xD;};&#xD;&#xD;function zlibBuffer(engine, buffer, callback) {&#xD;  var buffers = [];&#xD;  var nread = 0;&#xD;&#xD;  engine.on(&apos;error&apos;, onError);&#xD;  engine.on(&apos;end&apos;, onEnd);&#xD;&#xD;  engine.end(buffer);&#xD;  flow();&#xD;&#xD;  function flow() {&#xD;    var chunk;&#xD;    while (null !== (chunk = engine.read())) {&#xD;      buffers.push(chunk);&#xD;      nread += chunk.length;&#xD;    }&#xD;    engine.once(&apos;readable&apos;, flow);&#xD;  }&#xD;&#xD;  function onError(err) {&#xD;    engine.removeListener(&apos;end&apos;, onEnd);&#xD;    engine.removeListener(&apos;readable&apos;, flow);&#xD;    callback(err);&#xD;  }&#xD;&#xD;  function onEnd() {&#xD;    var buf = Buffer.concat(buffers, nread);&#xD;    buffers = [];&#xD;    callback(null, buf);&#xD;    engine.close();&#xD;  }&#xD;}&#xD;&#xD;function zlibBufferSync(engine, buffer) {&#xD;  if (typeof buffer === &apos;string&apos;)&#xD;    buffer = new Buffer(buffer);&#xD;  if (!Buffer.isBuffer(buffer))&#xD;    throw new TypeError(&apos;Not a string or buffer&apos;);&#xD;&#xD;  var flushFlag = binding.Z_FINISH;&#xD;&#xD;  return engine._processChunk(buffer, flushFlag);&#xD;}&#xD;&#xD;// generic zlib&#xD;// minimal 2-byte header&#xD;function Deflate(opts) {&#xD;  if (!(this instanceof Deflate)) return new Deflate(opts);&#xD;  Zlib.call(this, opts, binding.DEFLATE);&#xD;}&#xD;&#xD;function Inflate(opts) {&#xD;  if (!(this instanceof Inflate)) return new Inflate(opts);&#xD;  Zlib.call(this, opts, binding.INFLATE);&#xD;}&#xD;&#xD;&#xD;&#xD;// gzip - bigger header, same deflate compression&#xD;function Gzip(opts) {&#xD;  if (!(this instanceof Gzip)) return new Gzip(opts);&#xD;  Zlib.call(this, opts, binding.GZIP);&#xD;}&#xD;&#xD;function Gunzip(opts) {&#xD;  if (!(this instanceof Gunzip)) return new Gunzip(opts);&#xD;  Zlib.call(this, opts, binding.GUNZIP);&#xD;}&#xD;&#xD;&#xD;&#xD;// raw - no header&#xD;function DeflateRaw(opts) {&#xD;  if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);&#xD;  Zlib.call(this, opts, binding.DEFLATERAW);&#xD;}&#xD;&#xD;function InflateRaw(opts) {&#xD;  if (!(this instanceof InflateRaw)) return new InflateRaw(opts);&#xD;  Zlib.call(this, opts, binding.INFLATERAW);&#xD;}&#xD;&#xD;&#xD;// auto-detect header.&#xD;function Unzip(opts) {&#xD;  if (!(this instanceof Unzip)) return new Unzip(opts);&#xD;  Zlib.call(this, opts, binding.UNZIP);&#xD;}&#xD;&#xD;&#xD;// the Zlib class they all inherit from&#xD;// This thing manages the queue of requests, and returns&#xD;// true or false if there is anything in the queue when&#xD;// you call the .write() method.&#xD;&#xD;function Zlib(opts, mode) {&#xD;  this._opts = opts = opts || {};&#xD;  this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;&#xD;&#xD;  Transform.call(this, opts);&#xD;&#xD;  if (opts.flush) {&#xD;    if (opts.flush !== binding.Z_NO_FLUSH &amp;&amp;&#xD;        opts.flush !== binding.Z_PARTIAL_FLUSH &amp;&amp;&#xD;        opts.flush !== binding.Z_SYNC_FLUSH &amp;&amp;&#xD;        opts.flush !== binding.Z_FULL_FLUSH &amp;&amp;&#xD;        opts.flush !== binding.Z_FINISH &amp;&amp;&#xD;        opts.flush !== binding.Z_BLOCK) {&#xD;      throw new Error(&apos;Invalid flush flag: &apos; + opts.flush);&#xD;    }&#xD;  }&#xD;  this._flushFlag = opts.flush || binding.Z_NO_FLUSH;&#xD;&#xD;  if (opts.chunkSize) {&#xD;    if (opts.chunkSize &lt; exports.Z_MIN_CHUNK ||&#xD;        opts.chunkSize &gt; exports.Z_MAX_CHUNK) {&#xD;      throw new Error(&apos;Invalid chunk size: &apos; + opts.chunkSize);&#xD;    }&#xD;  }&#xD;&#xD;  if (opts.windowBits) {&#xD;    if (opts.windowBits &lt; exports.Z_MIN_WINDOWBITS ||&#xD;        opts.windowBits &gt; exports.Z_MAX_WINDOWBITS) {&#xD;      throw new Error(&apos;Invalid windowBits: &apos; + opts.windowBits);&#xD;    }&#xD;  }&#xD;&#xD;  if (opts.level) {&#xD;    if (opts.level &lt; exports.Z_MIN_LEVEL ||&#xD;        opts.level &gt; exports.Z_MAX_LEVEL) {&#xD;      throw new Error(&apos;Invalid compression level: &apos; + opts.level);&#xD;    }&#xD;  }&#xD;&#xD;  if (opts.memLevel) {&#xD;    if (opts.memLevel &lt; exports.Z_MIN_MEMLEVEL ||&#xD;        opts.memLevel &gt; exports.Z_MAX_MEMLEVEL) {&#xD;      throw new Error(&apos;Invalid memLevel: &apos; + opts.memLevel);&#xD;    }&#xD;  }&#xD;&#xD;  if (opts.strategy) {&#xD;    if (opts.strategy != exports.Z_FILTERED &amp;&amp;&#xD;        opts.strategy != exports.Z_HUFFMAN_ONLY &amp;&amp;&#xD;        opts.strategy != exports.Z_RLE &amp;&amp;&#xD;        opts.strategy != exports.Z_FIXED &amp;&amp;&#xD;        opts.strategy != exports.Z_DEFAULT_STRATEGY) {&#xD;      throw new Error(&apos;Invalid strategy: &apos; + opts.strategy);&#xD;    }&#xD;  }&#xD;&#xD;  if (opts.dictionary) {&#xD;    if (!Buffer.isBuffer(opts.dictionary)) {&#xD;      throw new Error(&apos;Invalid dictionary: it should be a Buffer instance&apos;);&#xD;    }&#xD;  }&#xD;&#xD;  this._binding = new binding.Zlib(mode);&#xD;&#xD;  var self = this;&#xD;  this._hadError = false;&#xD;  this._binding.onerror = function(message, errno) {&#xD;    // there is no way to cleanly recover.&#xD;    // continuing only obscures problems.&#xD;    self._binding = null;&#xD;    self._hadError = true;&#xD;&#xD;    var error = new Error(message);&#xD;    error.errno = errno;&#xD;    error.code = exports.codes[errno];&#xD;    self.emit(&apos;error&apos;, error);&#xD;  };&#xD;&#xD;  var level = exports.Z_DEFAULT_COMPRESSION;&#xD;  if (typeof opts.level === &apos;number&apos;) level = opts.level;&#xD;&#xD;  var strategy = exports.Z_DEFAULT_STRATEGY;&#xD;  if (typeof opts.strategy === &apos;number&apos;) strategy = opts.strategy;&#xD;&#xD;  this._binding.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS,&#xD;                     level,&#xD;                     opts.memLevel || exports.Z_DEFAULT_MEMLEVEL,&#xD;                     strategy,&#xD;                     opts.dictionary);&#xD;&#xD;  this._buffer = new Buffer(this._chunkSize);&#xD;  this._offset = 0;&#xD;  this._closed = false;&#xD;  this._level = level;&#xD;  this._strategy = strategy;&#xD;&#xD;  this.once(&apos;end&apos;, this.close);&#xD;}&#xD;&#xD;util.inherits(Zlib, Transform);&#xD;&#xD;Zlib.prototype.params = function(level, strategy, callback) {&#xD;  if (level &lt; exports.Z_MIN_LEVEL ||&#xD;      level &gt; exports.Z_MAX_LEVEL) {&#xD;    throw new RangeError(&apos;Invalid compression level: &apos; + level);&#xD;  }&#xD;  if (strategy != exports.Z_FILTERED &amp;&amp;&#xD;      strategy != exports.Z_HUFFMAN_ONLY &amp;&amp;&#xD;      strategy != exports.Z_RLE &amp;&amp;&#xD;      strategy != exports.Z_FIXED &amp;&amp;&#xD;      strategy != exports.Z_DEFAULT_STRATEGY) {&#xD;    throw new TypeError(&apos;Invalid strategy: &apos; + strategy);&#xD;  }&#xD;&#xD;  if (this._level !== level || this._strategy !== strategy) {&#xD;    var self = this;&#xD;    this.flush(binding.Z_SYNC_FLUSH, function() {&#xD;      self._binding.params(level, strategy);&#xD;      if (!self._hadError) {&#xD;        self._level = level;&#xD;        self._strategy = strategy;&#xD;        if (callback) callback();&#xD;      }&#xD;    });&#xD;  } else {&#xD;    process.nextTick(callback);&#xD;  }&#xD;};&#xD;&#xD;Zlib.prototype.reset = function() {&#xD;  return this._binding.reset();&#xD;};&#xD;&#xD;// This is the _flush function called by the transform class,&#xD;// internally, when the last chunk has been written.&#xD;Zlib.prototype._flush = function(callback) {&#xD;  this._transform(new Buffer(0), &apos;&apos;, callback);&#xD;};&#xD;&#xD;Zlib.prototype.flush = function(kind, callback) {&#xD;  var ws = this._writableState;&#xD;&#xD;  if (typeof kind === &apos;function&apos; || (kind === void 0 &amp;&amp; !callback)) {&#xD;    callback = kind;&#xD;    kind = binding.Z_FULL_FLUSH;&#xD;  }&#xD;&#xD;  if (ws.ended) {&#xD;    if (callback)&#xD;      process.nextTick(callback);&#xD;  } else if (ws.ending) {&#xD;    if (callback)&#xD;      this.once(&apos;end&apos;, callback);&#xD;  } else if (ws.needDrain) {&#xD;    var self = this;&#xD;    this.once(&apos;drain&apos;, function() {&#xD;      self.flush(callback);&#xD;    });&#xD;  } else {&#xD;    this._flushFlag = kind;&#xD;    this.write(new Buffer(0), &apos;&apos;, callback);&#xD;  }&#xD;};&#xD;&#xD;Zlib.prototype.close = function(callback) {&#xD;  if (callback)&#xD;    process.nextTick(callback);&#xD;&#xD;  if (this._closed)&#xD;    return;&#xD;&#xD;  this._closed = true;&#xD;&#xD;  this._binding.close();&#xD;&#xD;  var self = this;&#xD;  process.nextTick(function() {&#xD;    self.emit(&apos;close&apos;);&#xD;  });&#xD;};&#xD;&#xD;Zlib.prototype._transform = function(chunk, encoding, cb) {&#xD;  var flushFlag;&#xD;  var ws = this._writableState;&#xD;  var ending = ws.ending || ws.ended;&#xD;  var last = ending &amp;&amp; (!chunk || ws.length === chunk.length);&#xD;&#xD;  if (!chunk === null &amp;&amp; !Buffer.isBuffer(chunk))&#xD;    return cb(new Error(&apos;invalid input&apos;));&#xD;&#xD;  // If it&apos;s the last chunk, or a final flush, we use the Z_FINISH flush flag.&#xD;  // If it&apos;s explicitly flushing at some other time, then we use&#xD;  // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression&#xD;  // goodness.&#xD;  if (last)&#xD;    flushFlag = binding.Z_FINISH;&#xD;  else {&#xD;    flushFlag = this._flushFlag;&#xD;    // once we&apos;ve flushed the last of the queue, stop flushing and&#xD;    // go back to the normal behavior.&#xD;    if (chunk.length &gt;= ws.length) {&#xD;      this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;&#xD;    }&#xD;  }&#xD;&#xD;  var self = this;&#xD;  this._processChunk(chunk, flushFlag, cb);&#xD;};&#xD;&#xD;Zlib.prototype._processChunk = function(chunk, flushFlag, cb) {&#xD;  var availInBefore = chunk &amp;&amp; chunk.length;&#xD;  var availOutBefore = this._chunkSize - this._offset;&#xD;  var inOff = 0;&#xD;&#xD;  var self = this;&#xD;&#xD;  var async = typeof cb === &apos;function&apos;;&#xD;&#xD;  if (!async) {&#xD;    var buffers = [];&#xD;    var nread = 0;&#xD;&#xD;    var error;&#xD;    this.on(&apos;error&apos;, function(er) {&#xD;      error = er;&#xD;    });&#xD;&#xD;    do {&#xD;      var res = this._binding.writeSync(flushFlag,&#xD;                                        chunk, // in&#xD;                                        inOff, // in_off&#xD;                                        availInBefore, // in_len&#xD;                                        this._buffer, // out&#xD;                                        this._offset, //out_off&#xD;                                        availOutBefore); // out_len&#xD;    } while (!this._hadError &amp;&amp; callback(res[0], res[1]));&#xD;&#xD;    if (this._hadError) {&#xD;      throw error;&#xD;    }&#xD;&#xD;    var buf = Buffer.concat(buffers, nread);&#xD;    this.close();&#xD;&#xD;    return buf;&#xD;  }&#xD;&#xD;  var req = this._binding.write(flushFlag,&#xD;                                chunk, // in&#xD;                                inOff, // in_off&#xD;                                availInBefore, // in_len&#xD;                                this._buffer, // out&#xD;                                this._offset, //out_off&#xD;                                availOutBefore); // out_len&#xD;&#xD;  req.buffer = chunk;&#xD;  req.callback = callback;&#xD;&#xD;  function callback(availInAfter, availOutAfter) {&#xD;    if (self._hadError)&#xD;      return;&#xD;&#xD;    var have = availOutBefore - availOutAfter;&#xD;    assert(have &gt;= 0, &apos;have should not go down&apos;);&#xD;&#xD;    if (have &gt; 0) {&#xD;      var out = self._buffer.slice(self._offset, self._offset + have);&#xD;      self._offset += have;&#xD;      // serve some output to the consumer.&#xD;      if (async) {&#xD;        self.push(out);&#xD;      } else {&#xD;        buffers.push(out);&#xD;        nread += out.length;&#xD;      }&#xD;    }&#xD;&#xD;    // exhausted the output buffer, or used all the input create a new one.&#xD;    if (availOutAfter === 0 || self._offset &gt;= self._chunkSize) {&#xD;      availOutBefore = self._chunkSize;&#xD;      self._offset = 0;&#xD;      self._buffer = new Buffer(self._chunkSize);&#xD;    }&#xD;&#xD;    if (availOutAfter === 0) {&#xD;      // Not actually done.  Need to reprocess.&#xD;      // Also, update the availInBefore to the availInAfter value,&#xD;      // so that if we have to hit it a third (fourth, etc.) time,&#xD;      // it&apos;ll have the correct byte counts.&#xD;      inOff += (availInBefore - availInAfter);&#xD;      availInBefore = availInAfter;&#xD;&#xD;      if (!async)&#xD;        return true;&#xD;&#xD;      var newReq = self._binding.write(flushFlag,&#xD;                                       chunk,&#xD;                                       inOff,&#xD;                                       availInBefore,&#xD;                                       self._buffer,&#xD;                                       self._offset,&#xD;                                       self._chunkSize);&#xD;      newReq.callback = callback; // this same function&#xD;      newReq.buffer = chunk;&#xD;      return;&#xD;    }&#xD;&#xD;    if (!async)&#xD;      return false;&#xD;&#xD;    // finished with the chunk.&#xD;    cb();&#xD;  }&#xD;};&#xD;&#xD;util.inherits(Deflate, Zlib);&#xD;util.inherits(Inflate, Zlib);&#xD;util.inherits(Gzip, Zlib);&#xD;util.inherits(Gunzip, Zlib);&#xD;util.inherits(DeflateRaw, Zlib);&#xD;util.inherits(InflateRaw, Zlib);&#xD;util.inherits(Unzip, Zlib);&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 271 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;  "100": "Continue",&#xD;  "101": "Switching Protocols",&#xD;  "102": "Processing",&#xD;  "200": "OK",&#xD;  "201": "Created",&#xD;  "202": "Accepted",&#xD;  "203": "Non-Authoritative Information",&#xD;  "204": "No Content",&#xD;  "205": "Reset Content",&#xD;  "206": "Partial Content",&#xD;  "207": "Multi-Status",&#xD;  "208": "Already Reported",&#xD;  "226": "IM Used",&#xD;  "300": "Multiple Choices",&#xD;  "301": "Moved Permanently",&#xD;  "302": "Found",&#xD;  "303": "See Other",&#xD;  "304": "Not Modified",&#xD;  "305": "Use Proxy",&#xD;  "307": "Temporary Redirect",&#xD;  "308": "Permanent Redirect",&#xD;  "400": "Bad Request",&#xD;  "401": "Unauthorized",&#xD;  "402": "Payment Required",&#xD;  "403": "Forbidden",&#xD;  "404": "Not Found",&#xD;  "405": "Method Not Allowed",&#xD;  "406": "Not Acceptable",&#xD;  "407": "Proxy Authentication Required",&#xD;  "408": "Request Timeout",&#xD;  "409": "Conflict",&#xD;  "410": "Gone",&#xD;  "411": "Length Required",&#xD;  "412": "Precondition Failed",&#xD;  "413": "Payload Too Large",&#xD;  "414": "URI Too Long",&#xD;  "415": "Unsupported Media Type",&#xD;  "416": "Range Not Satisfiable",&#xD;  "417": "Expectation Failed",&#xD;  "418": "I&apos;m a teapot",&#xD;  "421": "Misdirected Request",&#xD;  "422": "Unprocessable Entity",&#xD;  "423": "Locked",&#xD;  "424": "Failed Dependency",&#xD;  "425": "Unordered Collection",&#xD;  "426": "Upgrade Required",&#xD;  "428": "Precondition Required",&#xD;  "429": "Too Many Requests",&#xD;  "431": "Request Header Fields Too Large",&#xD;  "451": "Unavailable For Legal Reasons",&#xD;  "500": "Internal Server Error",&#xD;  "501": "Not Implemented",&#xD;  "502": "Bad Gateway",&#xD;  "503": "Service Unavailable",&#xD;  "504": "Gateway Timeout",&#xD;  "505": "HTTP Version Not Supported",&#xD;  "506": "Variant Also Negotiates",&#xD;  "507": "Insufficient Storage",&#xD;  "508": "Loop Detected",&#xD;  "509": "Bandwidth Limit Exceeded",&#xD;  "510": "Not Extended",&#xD;  "511": "Network Authentication Required"&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 272 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var elliptic = __webpack_require__(19);&#xD;var BN = __webpack_require__(11);&#xD;&#xD;module.exports = function createECDH(curve) {&#xD;	return new ECDH(curve);&#xD;};&#xD;&#xD;var aliases = {&#xD;	secp256k1: {&#xD;		name: &apos;secp256k1&apos;,&#xD;		byteLength: 32&#xD;	},&#xD;	secp224r1: {&#xD;		name: &apos;p224&apos;,&#xD;		byteLength: 28&#xD;	},&#xD;	prime256v1: {&#xD;		name: &apos;p256&apos;,&#xD;		byteLength: 32&#xD;	},&#xD;	prime192v1: {&#xD;		name: &apos;p192&apos;,&#xD;		byteLength: 24&#xD;	},&#xD;	ed25519: {&#xD;		name: &apos;ed25519&apos;,&#xD;		byteLength: 32&#xD;	},&#xD;	secp384r1: {&#xD;		name: &apos;p384&apos;,&#xD;		byteLength: 48&#xD;	},&#xD;	secp521r1: {&#xD;		name: &apos;p521&apos;,&#xD;		byteLength: 66&#xD;	}&#xD;};&#xD;&#xD;aliases.p224 = aliases.secp224r1;&#xD;aliases.p256 = aliases.secp256r1 = aliases.prime256v1;&#xD;aliases.p192 = aliases.secp192r1 = aliases.prime192v1;&#xD;aliases.p384 = aliases.secp384r1;&#xD;aliases.p521 = aliases.secp521r1;&#xD;&#xD;function ECDH(curve) {&#xD;	this.curveType = aliases[curve];&#xD;	if (!this.curveType ) {&#xD;		this.curveType = {&#xD;			name: curve&#xD;		};&#xD;	}&#xD;	this.curve = new elliptic.ec(this.curveType.name);&#xD;	this.keys = void 0;&#xD;}&#xD;&#xD;ECDH.prototype.generateKeys = function (enc, format) {&#xD;	this.keys = this.curve.genKeyPair();&#xD;	return this.getPublicKey(enc, format);&#xD;};&#xD;&#xD;ECDH.prototype.computeSecret = function (other, inenc, enc) {&#xD;	inenc = inenc || &apos;utf8&apos;;&#xD;	if (!Buffer.isBuffer(other)) {&#xD;		other = new Buffer(other, inenc);&#xD;	}&#xD;	var otherPub = this.curve.keyFromPublic(other).getPublic();&#xD;	var out = otherPub.mul(this.keys.getPrivate()).getX();&#xD;	return formatReturnValue(out, enc, this.curveType.byteLength);&#xD;};&#xD;&#xD;ECDH.prototype.getPublicKey = function (enc, format) {&#xD;	var key = this.keys.getPublic(format === &apos;compressed&apos;, true);&#xD;	if (format === &apos;hybrid&apos;) {&#xD;		if (key[key.length - 1] % 2) {&#xD;			key[0] = 7;&#xD;		} else {&#xD;			key [0] = 6;&#xD;		}&#xD;	}&#xD;	return formatReturnValue(key, enc);&#xD;};&#xD;&#xD;ECDH.prototype.getPrivateKey = function (enc) {&#xD;	return formatReturnValue(this.keys.getPrivate(), enc);&#xD;};&#xD;&#xD;ECDH.prototype.setPublicKey = function (pub, enc) {&#xD;	enc = enc || &apos;utf8&apos;;&#xD;	if (!Buffer.isBuffer(pub)) {&#xD;		pub = new Buffer(pub, enc);&#xD;	}&#xD;	this.keys._importPublic(pub);&#xD;	return this;&#xD;};&#xD;&#xD;ECDH.prototype.setPrivateKey = function (priv, enc) {&#xD;	enc = enc || &apos;utf8&apos;;&#xD;	if (!Buffer.isBuffer(priv)) {&#xD;		priv = new Buffer(priv, enc);&#xD;	}&#xD;	var _priv = new BN(priv);&#xD;	_priv = _priv.toString(16);&#xD;	this.keys._importPrivate(_priv);&#xD;	return this;&#xD;};&#xD;&#xD;function formatReturnValue(bn, enc, len) {&#xD;	if (!Array.isArray(bn)) {&#xD;		bn = bn.toArray();&#xD;	}&#xD;	var buf = new Buffer(bn);&#xD;	if (len &amp;&amp; buf.length &lt; len) {&#xD;		var zeros = new Buffer(len - buf.length);&#xD;		zeros.fill(0);&#xD;		buf = Buffer.concat([zeros, buf]);&#xD;	}&#xD;	if (!enc) {&#xD;		return buf;&#xD;	} else {&#xD;		return buf.toString(enc);&#xD;	}&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 273 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {&#xD;var intSize = 4;&#xD;var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);&#xD;var chrsz = 8;&#xD;&#xD;function toArray(buf, bigEndian) {&#xD;  if ((buf.length % intSize) !== 0) {&#xD;    var len = buf.length + (intSize - (buf.length % intSize));&#xD;    buf = Buffer.concat([buf, zeroBuffer], len);&#xD;  }&#xD;&#xD;  var arr = [];&#xD;  var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;&#xD;  for (var i = 0; i &lt; buf.length; i += intSize) {&#xD;    arr.push(fn.call(buf, i));&#xD;  }&#xD;  return arr;&#xD;}&#xD;&#xD;function toBuffer(arr, size, bigEndian) {&#xD;  var buf = new Buffer(size);&#xD;  var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;&#xD;  for (var i = 0; i &lt; arr.length; i++) {&#xD;    fn.call(buf, arr[i], i * 4, true);&#xD;  }&#xD;  return buf;&#xD;}&#xD;&#xD;function hash(buf, fn, hashSize, bigEndian) {&#xD;  if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);&#xD;  var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);&#xD;  return toBuffer(arr, hashSize, bigEndian);&#xD;}&#xD;exports.hash = hash;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 274 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var emptyObject = __webpack_require__(40);&#xD;var _invariant = __webpack_require__(3);&#xD;&#xD;if (true) {&#xD;  var warning = __webpack_require__(4);&#xD;}&#xD;&#xD;var MIXINS_KEY = &apos;mixins&apos;;&#xD;&#xD;// Helper function to allow the creation of anonymous functions which do not&#xD;// have .name set to the name of the variable being assigned to.&#xD;function identity(fn) {&#xD;  return fn;&#xD;}&#xD;&#xD;var ReactPropTypeLocationNames;&#xD;if (true) {&#xD;  ReactPropTypeLocationNames = {&#xD;    prop: &apos;prop&apos;,&#xD;    context: &apos;context&apos;,&#xD;    childContext: &apos;child context&apos;,&#xD;  };&#xD;} else {&#xD;  ReactPropTypeLocationNames = {};&#xD;}&#xD;&#xD;function factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {&#xD;  /**&#xD;   * Policies that describe methods in `ReactClassInterface`.&#xD;   */&#xD;&#xD;&#xD;  var injectedMixins = [];&#xD;&#xD;  /**&#xD;   * Composite components are higher-level components that compose other composite&#xD;   * or host components.&#xD;   *&#xD;   * To create a new type of `ReactClass`, pass a specification of&#xD;   * your new class to `React.createClass`. The only requirement of your class&#xD;   * specification is that you implement a `render` method.&#xD;   *&#xD;   *   var MyComponent = React.createClass({&#xD;   *     render: function() {&#xD;   *       return &lt;div&gt;Hello World&lt;/div&gt;;&#xD;   *     }&#xD;   *   });&#xD;   *&#xD;   * The class specification supports a specific protocol of methods that have&#xD;   * special meaning (e.g. `render`). See `ReactClassInterface` for&#xD;   * more the comprehensive protocol. Any other properties and methods in the&#xD;   * class specification will be available on the prototype.&#xD;   *&#xD;   * @interface ReactClassInterface&#xD;   * @internal&#xD;   */&#xD;  var ReactClassInterface = {&#xD;&#xD;    /**&#xD;     * An array of Mixin objects to include when defining your component.&#xD;     *&#xD;     * @type {array}&#xD;     * @optional&#xD;     */&#xD;    mixins: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * An object containing properties and methods that should be defined on&#xD;     * the component&apos;s constructor instead of its prototype (static methods).&#xD;     *&#xD;     * @type {object}&#xD;     * @optional&#xD;     */&#xD;    statics: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Definition of prop types for this component.&#xD;     *&#xD;     * @type {object}&#xD;     * @optional&#xD;     */&#xD;    propTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Definition of context types for this component.&#xD;     *&#xD;     * @type {object}&#xD;     * @optional&#xD;     */&#xD;    contextTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Definition of context types this component sets for its children.&#xD;     *&#xD;     * @type {object}&#xD;     * @optional&#xD;     */&#xD;    childContextTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    // ==== Definition methods ====&#xD;&#xD;    /**&#xD;     * Invoked when the component is mounted. Values in the mapping will be set on&#xD;     * `this.props` if that prop is not specified (i.e. using an `in` check).&#xD;     *&#xD;     * This method is invoked before `getInitialState` and therefore cannot rely&#xD;     * on `this.state` or use `this.setState`.&#xD;     *&#xD;     * @return {object}&#xD;     * @optional&#xD;     */&#xD;    getDefaultProps: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;    /**&#xD;     * Invoked once before the component is mounted. The return value will be used&#xD;     * as the initial value of `this.state`.&#xD;     *&#xD;     *   getInitialState: function() {&#xD;     *     return {&#xD;     *       isOn: false,&#xD;     *       fooBaz: new BazFoo()&#xD;     *     }&#xD;     *   }&#xD;     *&#xD;     * @return {object}&#xD;     * @optional&#xD;     */&#xD;    getInitialState: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;    /**&#xD;     * @return {object}&#xD;     * @optional&#xD;     */&#xD;    getChildContext: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;    /**&#xD;     * Uses props from `this.props` and state from `this.state` to render the&#xD;     * structure of the component.&#xD;     *&#xD;     * No guarantees are made about when or how often this method is invoked, so&#xD;     * it must not have side effects.&#xD;     *&#xD;     *   render: function() {&#xD;     *     var name = this.props.name;&#xD;     *     return &lt;div&gt;Hello, {name}!&lt;/div&gt;;&#xD;     *   }&#xD;     *&#xD;     * @return {ReactComponent}&#xD;     * @nosideeffects&#xD;     * @required&#xD;     */&#xD;    render: &apos;DEFINE_ONCE&apos;,&#xD;&#xD;    // ==== Delegate methods ====&#xD;&#xD;    /**&#xD;     * Invoked when the component is initially created and about to be mounted.&#xD;     * This may have side effects, but any external subscriptions or data created&#xD;     * by this method must be cleaned up in `componentWillUnmount`.&#xD;     *&#xD;     * @optional&#xD;     */&#xD;    componentWillMount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Invoked when the component has been mounted and has a DOM representation.&#xD;     * However, there is no guarantee that the DOM node is in the document.&#xD;     *&#xD;     * Use this as an opportunity to operate on the DOM when the component has&#xD;     * been mounted (initialized and rendered) for the first time.&#xD;     *&#xD;     * @param {DOMElement} rootNode DOM element representing the component.&#xD;     * @optional&#xD;     */&#xD;    componentDidMount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Invoked before the component receives new props.&#xD;     *&#xD;     * Use this as an opportunity to react to a prop transition by updating the&#xD;     * state using `this.setState`. Current props are accessed via `this.props`.&#xD;     *&#xD;     *   componentWillReceiveProps: function(nextProps, nextContext) {&#xD;     *     this.setState({&#xD;     *       likesIncreasing: nextProps.likeCount &gt; this.props.likeCount&#xD;     *     });&#xD;     *   }&#xD;     *&#xD;     * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop&#xD;     * transition may cause a state change, but the opposite is not true. If you&#xD;     * need it, you are probably looking for `componentWillUpdate`.&#xD;     *&#xD;     * @param {object} nextProps&#xD;     * @optional&#xD;     */&#xD;    componentWillReceiveProps: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Invoked while deciding if the component should be updated as a result of&#xD;     * receiving new props, state and/or context.&#xD;     *&#xD;     * Use this as an opportunity to `return false` when you&apos;re certain that the&#xD;     * transition to the new props/state/context will not require a component&#xD;     * update.&#xD;     *&#xD;     *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {&#xD;     *     return !equal(nextProps, this.props) ||&#xD;     *       !equal(nextState, this.state) ||&#xD;     *       !equal(nextContext, this.context);&#xD;     *   }&#xD;     *&#xD;     * @param {object} nextProps&#xD;     * @param {?object} nextState&#xD;     * @param {?object} nextContext&#xD;     * @return {boolean} True if the component should update.&#xD;     * @optional&#xD;     */&#xD;    shouldComponentUpdate: &apos;DEFINE_ONCE&apos;,&#xD;&#xD;    /**&#xD;     * Invoked when the component is about to update due to a transition from&#xD;     * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`&#xD;     * and `nextContext`.&#xD;     *&#xD;     * Use this as an opportunity to perform preparation before an update occurs.&#xD;     *&#xD;     * NOTE: You **cannot** use `this.setState()` in this method.&#xD;     *&#xD;     * @param {object} nextProps&#xD;     * @param {?object} nextState&#xD;     * @param {?object} nextContext&#xD;     * @param {ReactReconcileTransaction} transaction&#xD;     * @optional&#xD;     */&#xD;    componentWillUpdate: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Invoked when the component&apos;s DOM representation has been updated.&#xD;     *&#xD;     * Use this as an opportunity to operate on the DOM when the component has&#xD;     * been updated.&#xD;     *&#xD;     * @param {object} prevProps&#xD;     * @param {?object} prevState&#xD;     * @param {?object} prevContext&#xD;     * @param {DOMElement} rootNode DOM element representing the component.&#xD;     * @optional&#xD;     */&#xD;    componentDidUpdate: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    /**&#xD;     * Invoked when the component is about to be removed from its parent and have&#xD;     * its DOM representation destroyed.&#xD;     *&#xD;     * Use this as an opportunity to deallocate any external resources.&#xD;     *&#xD;     * NOTE: There is no `componentDidUnmount` since your component will have been&#xD;     * destroyed by that point.&#xD;     *&#xD;     * @optional&#xD;     */&#xD;    componentWillUnmount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;    // ==== Advanced methods ====&#xD;&#xD;    /**&#xD;     * Updates the component&apos;s currently mounted DOM representation.&#xD;     *&#xD;     * By default, this implements React&apos;s rendering and reconciliation algorithm.&#xD;     * Sophisticated clients may wish to override this.&#xD;     *&#xD;     * @param {ReactReconcileTransaction} transaction&#xD;     * @internal&#xD;     * @overridable&#xD;     */&#xD;    updateComponent: &apos;OVERRIDE_BASE&apos;&#xD;&#xD;  };&#xD;&#xD;  /**&#xD;   * Mapping from class specification keys to special processing functions.&#xD;   *&#xD;   * Although these are declared like instance properties in the specification&#xD;   * when defining classes using `React.createClass`, they are actually static&#xD;   * and are accessible on the constructor instead of the prototype. Despite&#xD;   * being static, they must be defined outside of the "statics" key under&#xD;   * which all other static methods are defined.&#xD;   */&#xD;  var RESERVED_SPEC_KEYS = {&#xD;    displayName: function (Constructor, displayName) {&#xD;      Constructor.displayName = displayName;&#xD;    },&#xD;    mixins: function (Constructor, mixins) {&#xD;      if (mixins) {&#xD;        for (var i = 0; i &lt; mixins.length; i++) {&#xD;          mixSpecIntoComponent(Constructor, mixins[i]);&#xD;        }&#xD;      }&#xD;    },&#xD;    childContextTypes: function (Constructor, childContextTypes) {&#xD;      if (true) {&#xD;        validateTypeDef(Constructor, childContextTypes, &apos;childContext&apos;);&#xD;      }&#xD;      Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);&#xD;    },&#xD;    contextTypes: function (Constructor, contextTypes) {&#xD;      if (true) {&#xD;        validateTypeDef(Constructor, contextTypes, &apos;context&apos;);&#xD;      }&#xD;      Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);&#xD;    },&#xD;    /**&#xD;     * Special case getDefaultProps which should move into statics but requires&#xD;     * automatic merging.&#xD;     */&#xD;    getDefaultProps: function (Constructor, getDefaultProps) {&#xD;      if (Constructor.getDefaultProps) {&#xD;        Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);&#xD;      } else {&#xD;        Constructor.getDefaultProps = getDefaultProps;&#xD;      }&#xD;    },&#xD;    propTypes: function (Constructor, propTypes) {&#xD;      if (true) {&#xD;        validateTypeDef(Constructor, propTypes, &apos;prop&apos;);&#xD;      }&#xD;      Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);&#xD;    },&#xD;    statics: function (Constructor, statics) {&#xD;      mixStaticSpecIntoComponent(Constructor, statics);&#xD;    },&#xD;    autobind: function () {} };&#xD;&#xD;  function validateTypeDef(Constructor, typeDef, location) {&#xD;    for (var propName in typeDef) {&#xD;      if (typeDef.hasOwnProperty(propName)) {&#xD;        // use a warning instead of an _invariant so components&#xD;        // don&apos;t show up in prod but only in __DEV__&#xD;         true ? warning(typeof typeDef[propName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, Constructor.displayName || &apos;ReactClass&apos;, ReactPropTypeLocationNames[location], propName) : void 0;&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  function validateMethodOverride(isAlreadyDefined, name) {&#xD;    var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;&#xD;&#xD;    // Disallow overriding of base class methods unless explicitly allowed.&#xD;    if (ReactClassMixin.hasOwnProperty(name)) {&#xD;      _invariant(specPolicy === &apos;OVERRIDE_BASE&apos;, &apos;ReactClassInterface: You are attempting to override &apos; + &apos;`%s` from your class specification. Ensure that your method names &apos; + &apos;do not overlap with React methods.&apos;, name);&#xD;    }&#xD;&#xD;    // Disallow defining methods more than once unless explicitly allowed.&#xD;    if (isAlreadyDefined) {&#xD;      _invariant(specPolicy === &apos;DEFINE_MANY&apos; || specPolicy === &apos;DEFINE_MANY_MERGED&apos;, &apos;ReactClassInterface: You are attempting to define &apos; + &apos;`%s` on your component more than once. This conflict may be due &apos; + &apos;to a mixin.&apos;, name);&#xD;    }&#xD;  }&#xD;&#xD;  /**&#xD;   * Mixin helper which handles policy validation and reserved&#xD;   * specification keys when building React classes.&#xD;   */&#xD;  function mixSpecIntoComponent(Constructor, spec) {&#xD;    if (!spec) {&#xD;      if (true) {&#xD;        var typeofSpec = typeof spec;&#xD;        var isMixinValid = typeofSpec === &apos;object&apos; &amp;&amp; spec !== null;&#xD;&#xD;         true ? warning(isMixinValid, &apos;%s: You\&apos;re attempting to include a mixin that is either null &apos; + &apos;or not an object. Check the mixins included by the component, &apos; + &apos;as well as any mixins they include themselves. &apos; + &apos;Expected object but got %s.&apos;, Constructor.displayName || &apos;ReactClass&apos;, spec === null ? null : typeofSpec) : void 0;&#xD;      }&#xD;&#xD;      return;&#xD;    }&#xD;&#xD;    _invariant(typeof spec !== &apos;function&apos;, &apos;ReactClass: You\&apos;re attempting to &apos; + &apos;use a component class or function as a mixin. Instead, just use a &apos; + &apos;regular object.&apos;);&#xD;    _invariant(!isValidElement(spec), &apos;ReactClass: You\&apos;re attempting to &apos; + &apos;use a component as a mixin. Instead, just use a regular object.&apos;);&#xD;&#xD;    var proto = Constructor.prototype;&#xD;    var autoBindPairs = proto.__reactAutoBindPairs;&#xD;&#xD;    // By handling mixins before any other properties, we ensure the same&#xD;    // chaining order is applied to methods with DEFINE_MANY policy, whether&#xD;    // mixins are listed before or after these methods in the spec.&#xD;    if (spec.hasOwnProperty(MIXINS_KEY)) {&#xD;      RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);&#xD;    }&#xD;&#xD;    for (var name in spec) {&#xD;      if (!spec.hasOwnProperty(name)) {&#xD;        continue;&#xD;      }&#xD;&#xD;      if (name === MIXINS_KEY) {&#xD;        // We have already handled mixins in a special case above.&#xD;        continue;&#xD;      }&#xD;&#xD;      var property = spec[name];&#xD;      var isAlreadyDefined = proto.hasOwnProperty(name);&#xD;      validateMethodOverride(isAlreadyDefined, name);&#xD;&#xD;      if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {&#xD;        RESERVED_SPEC_KEYS[name](Constructor, property);&#xD;      } else {&#xD;        // Setup methods on prototype:&#xD;        // The following member methods should not be automatically bound:&#xD;        // 1. Expected ReactClass methods (in the "interface").&#xD;        // 2. Overridden methods (that were mixed in).&#xD;        var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);&#xD;        var isFunction = typeof property === &apos;function&apos;;&#xD;        var shouldAutoBind = isFunction &amp;&amp; !isReactClassMethod &amp;&amp; !isAlreadyDefined &amp;&amp; spec.autobind !== false;&#xD;&#xD;        if (shouldAutoBind) {&#xD;          autoBindPairs.push(name, property);&#xD;          proto[name] = property;&#xD;        } else {&#xD;          if (isAlreadyDefined) {&#xD;            var specPolicy = ReactClassInterface[name];&#xD;&#xD;            // These cases should already be caught by validateMethodOverride.&#xD;            _invariant(isReactClassMethod &amp;&amp; (specPolicy === &apos;DEFINE_MANY_MERGED&apos; || specPolicy === &apos;DEFINE_MANY&apos;), &apos;ReactClass: Unexpected spec policy %s for key %s &apos; + &apos;when mixing in component specs.&apos;, specPolicy, name);&#xD;&#xD;            // For methods which are defined more than once, call the existing&#xD;            // methods before calling the new property, merging if appropriate.&#xD;            if (specPolicy === &apos;DEFINE_MANY_MERGED&apos;) {&#xD;              proto[name] = createMergedResultFunction(proto[name], property);&#xD;            } else if (specPolicy === &apos;DEFINE_MANY&apos;) {&#xD;              proto[name] = createChainedFunction(proto[name], property);&#xD;            }&#xD;          } else {&#xD;            proto[name] = property;&#xD;            if (true) {&#xD;              // Add verbose displayName to the function, which helps when looking&#xD;              // at profiling tools.&#xD;              if (typeof property === &apos;function&apos; &amp;&amp; spec.displayName) {&#xD;                proto[name].displayName = spec.displayName + &apos;_&apos; + name;&#xD;              }&#xD;            }&#xD;          }&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  function mixStaticSpecIntoComponent(Constructor, statics) {&#xD;    if (!statics) {&#xD;      return;&#xD;    }&#xD;    for (var name in statics) {&#xD;      var property = statics[name];&#xD;      if (!statics.hasOwnProperty(name)) {&#xD;        continue;&#xD;      }&#xD;&#xD;      var isReserved = name in RESERVED_SPEC_KEYS;&#xD;      _invariant(!isReserved, &apos;ReactClass: You are attempting to define a reserved &apos; + &apos;property, `%s`, that shouldn\&apos;t be on the "statics" key. Define it &apos; + &apos;as an instance property instead; it will still be accessible on the &apos; + &apos;constructor.&apos;, name);&#xD;&#xD;      var isInherited = name in Constructor;&#xD;      _invariant(!isInherited, &apos;ReactClass: You are attempting to define &apos; + &apos;`%s` on your component more than once. This conflict may be &apos; + &apos;due to a mixin.&apos;, name);&#xD;      Constructor[name] = property;&#xD;    }&#xD;  }&#xD;&#xD;  /**&#xD;   * Merge two objects, but throw if both contain the same key.&#xD;   *&#xD;   * @param {object} one The first object, which is mutated.&#xD;   * @param {object} two The second object&#xD;   * @return {object} one after it has been mutated to contain everything in two.&#xD;   */&#xD;  function mergeIntoWithNoDuplicateKeys(one, two) {&#xD;    _invariant(one &amp;&amp; two &amp;&amp; typeof one === &apos;object&apos; &amp;&amp; typeof two === &apos;object&apos;, &apos;mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.&apos;);&#xD;&#xD;    for (var key in two) {&#xD;      if (two.hasOwnProperty(key)) {&#xD;        _invariant(one[key] === undefined, &apos;mergeIntoWithNoDuplicateKeys(): &apos; + &apos;Tried to merge two objects with the same key: `%s`. This conflict &apos; + &apos;may be due to a mixin; in particular, this may be caused by two &apos; + &apos;getInitialState() or getDefaultProps() methods returning objects &apos; + &apos;with clashing keys.&apos;, key);&#xD;        one[key] = two[key];&#xD;      }&#xD;    }&#xD;    return one;&#xD;  }&#xD;&#xD;  /**&#xD;   * Creates a function that invokes two functions and merges their return values.&#xD;   *&#xD;   * @param {function} one Function to invoke first.&#xD;   * @param {function} two Function to invoke second.&#xD;   * @return {function} Function that invokes the two argument functions.&#xD;   * @private&#xD;   */&#xD;  function createMergedResultFunction(one, two) {&#xD;    return function mergedResult() {&#xD;      var a = one.apply(this, arguments);&#xD;      var b = two.apply(this, arguments);&#xD;      if (a == null) {&#xD;        return b;&#xD;      } else if (b == null) {&#xD;        return a;&#xD;      }&#xD;      var c = {};&#xD;      mergeIntoWithNoDuplicateKeys(c, a);&#xD;      mergeIntoWithNoDuplicateKeys(c, b);&#xD;      return c;&#xD;    };&#xD;  }&#xD;&#xD;  /**&#xD;   * Creates a function that invokes two functions and ignores their return vales.&#xD;   *&#xD;   * @param {function} one Function to invoke first.&#xD;   * @param {function} two Function to invoke second.&#xD;   * @return {function} Function that invokes the two argument functions.&#xD;   * @private&#xD;   */&#xD;  function createChainedFunction(one, two) {&#xD;    return function chainedFunction() {&#xD;      one.apply(this, arguments);&#xD;      two.apply(this, arguments);&#xD;    };&#xD;  }&#xD;&#xD;  /**&#xD;   * Binds a method to the component.&#xD;   *&#xD;   * @param {object} component Component whose method is going to be bound.&#xD;   * @param {function} method Method to be bound.&#xD;   * @return {function} The bound method.&#xD;   */&#xD;  function bindAutoBindMethod(component, method) {&#xD;    var boundMethod = method.bind(component);&#xD;    if (true) {&#xD;      boundMethod.__reactBoundContext = component;&#xD;      boundMethod.__reactBoundMethod = method;&#xD;      boundMethod.__reactBoundArguments = null;&#xD;      var componentName = component.constructor.displayName;&#xD;      var _bind = boundMethod.bind;&#xD;      boundMethod.bind = function (newThis) {&#xD;        for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {&#xD;          args[_key - 1] = arguments[_key];&#xD;        }&#xD;&#xD;        // User is trying to bind() an autobound method; we effectively will&#xD;        // ignore the value of "this" that the user is trying to use, so&#xD;        // let&apos;s warn.&#xD;        if (newThis !== component &amp;&amp; newThis !== null) {&#xD;           true ? warning(false, &apos;bind(): React component methods may only be bound to the &apos; + &apos;component instance. See %s&apos;, componentName) : void 0;&#xD;        } else if (!args.length) {&#xD;           true ? warning(false, &apos;bind(): You are binding a component method to the component. &apos; + &apos;React does this for you automatically in a high-performance &apos; + &apos;way, so you can safely remove this call. See %s&apos;, componentName) : void 0;&#xD;          return boundMethod;&#xD;        }&#xD;        var reboundMethod = _bind.apply(boundMethod, arguments);&#xD;        reboundMethod.__reactBoundContext = component;&#xD;        reboundMethod.__reactBoundMethod = method;&#xD;        reboundMethod.__reactBoundArguments = args;&#xD;        return reboundMethod;&#xD;      };&#xD;    }&#xD;    return boundMethod;&#xD;  }&#xD;&#xD;  /**&#xD;   * Binds all auto-bound methods in a component.&#xD;   *&#xD;   * @param {object} component Component whose method is going to be bound.&#xD;   */&#xD;  function bindAutoBindMethods(component) {&#xD;    var pairs = component.__reactAutoBindPairs;&#xD;    for (var i = 0; i &lt; pairs.length; i += 2) {&#xD;      var autoBindKey = pairs[i];&#xD;      var method = pairs[i + 1];&#xD;      component[autoBindKey] = bindAutoBindMethod(component, method);&#xD;    }&#xD;  }&#xD;&#xD;  var IsMountedMixin = {&#xD;    componentDidMount: function () {&#xD;      this.__isMounted = true;&#xD;    },&#xD;    componentWillUnmount: function () {&#xD;      this.__isMounted = false;&#xD;    }&#xD;  };&#xD;&#xD;  /**&#xD;   * Add more to the ReactClass base class. These are all legacy features and&#xD;   * therefore not already part of the modern ReactComponent.&#xD;   */&#xD;  var ReactClassMixin = {&#xD;&#xD;    /**&#xD;     * TODO: This will be deprecated because state should always keep a consistent&#xD;     * type signature and the only use case for this, is to avoid that.&#xD;     */&#xD;    replaceState: function (newState, callback) {&#xD;      this.updater.enqueueReplaceState(this, newState, callback);&#xD;    },&#xD;&#xD;    /**&#xD;     * Checks whether or not this composite component is mounted.&#xD;     * @return {boolean} True if mounted, false otherwise.&#xD;     * @protected&#xD;     * @final&#xD;     */&#xD;    isMounted: function () {&#xD;      if (true) {&#xD;         true ? warning(this.__didWarnIsMounted, &apos;%s: isMounted is deprecated. Instead, make sure to clean up &apos; + &apos;subscriptions and pending requests in componentWillUnmount to &apos; + &apos;prevent memory leaks.&apos;, this.constructor &amp;&amp; this.constructor.displayName || this.name || &apos;Component&apos;) : void 0;&#xD;        this.__didWarnIsMounted = true;&#xD;      }&#xD;      return !!this.__isMounted;&#xD;    }&#xD;  };&#xD;&#xD;  var ReactClassComponent = function () {};&#xD;  _assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);&#xD;&#xD;  /**&#xD;   * Creates a composite component class given a class specification.&#xD;   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass&#xD;   *&#xD;   * @param {object} spec Class specification (which must define `render`).&#xD;   * @return {function} Component constructor function.&#xD;   * @public&#xD;   */&#xD;  function createClass(spec) {&#xD;    // To keep our warnings more understandable, we&apos;ll use a little hack here to&#xD;    // ensure that Constructor.name !== &apos;Constructor&apos;. This makes sure we don&apos;t&#xD;    // unnecessarily identify a class without displayName as &apos;Constructor&apos;.&#xD;    var Constructor = identity(function (props, context, updater) {&#xD;      // This constructor gets overridden by mocks. The argument is used&#xD;      // by mocks to assert on what gets mounted.&#xD;&#xD;      if (true) {&#xD;         true ? warning(this instanceof Constructor, &apos;Something is calling a React component directly. Use a factory or &apos; + &apos;JSX instead. See: https://fb.me/react-legacyfactory&apos;) : void 0;&#xD;      }&#xD;&#xD;      // Wire up auto-binding&#xD;      if (this.__reactAutoBindPairs.length) {&#xD;        bindAutoBindMethods(this);&#xD;      }&#xD;&#xD;      this.props = props;&#xD;      this.context = context;&#xD;      this.refs = emptyObject;&#xD;      this.updater = updater || ReactNoopUpdateQueue;&#xD;&#xD;      this.state = null;&#xD;&#xD;      // ReactClasses doesn&apos;t have constructors. Instead, they use the&#xD;      // getInitialState and componentWillMount methods for initialization.&#xD;&#xD;      var initialState = this.getInitialState ? this.getInitialState() : null;&#xD;      if (true) {&#xD;        // We allow auto-mocks to proceed as if they&apos;re returning null.&#xD;        if (initialState === undefined &amp;&amp; this.getInitialState._isMockFunction) {&#xD;          // This is probably bad practice. Consider warning here and&#xD;          // deprecating this convenience.&#xD;          initialState = null;&#xD;        }&#xD;      }&#xD;      _invariant(typeof initialState === &apos;object&apos; &amp;&amp; !Array.isArray(initialState), &apos;%s.getInitialState(): must return an object or null&apos;, Constructor.displayName || &apos;ReactCompositeComponent&apos;);&#xD;&#xD;      this.state = initialState;&#xD;    });&#xD;    Constructor.prototype = new ReactClassComponent();&#xD;    Constructor.prototype.constructor = Constructor;&#xD;    Constructor.prototype.__reactAutoBindPairs = [];&#xD;&#xD;    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));&#xD;&#xD;    mixSpecIntoComponent(Constructor, IsMountedMixin);&#xD;    mixSpecIntoComponent(Constructor, spec);&#xD;&#xD;    // Initialize the defaultProps property after all mixins have been merged.&#xD;    if (Constructor.getDefaultProps) {&#xD;      Constructor.defaultProps = Constructor.getDefaultProps();&#xD;    }&#xD;&#xD;    if (true) {&#xD;      // This is a tag to indicate that the use of these method names is ok,&#xD;      // since it&apos;s used with createClass. If it&apos;s not, then it&apos;s likely a&#xD;      // mistake so we&apos;ll warn you to use the static property, property&#xD;      // initializer or constructor respectively.&#xD;      if (Constructor.getDefaultProps) {&#xD;        Constructor.getDefaultProps.isReactClassApproved = {};&#xD;      }&#xD;      if (Constructor.prototype.getInitialState) {&#xD;        Constructor.prototype.getInitialState.isReactClassApproved = {};&#xD;      }&#xD;    }&#xD;&#xD;    _invariant(Constructor.prototype.render, &apos;createClass(...): Class specification must implement a `render` method.&apos;);&#xD;&#xD;    if (true) {&#xD;       true ? warning(!Constructor.prototype.componentShouldUpdate, &apos;%s has a method called &apos; + &apos;componentShouldUpdate(). Did you mean shouldComponentUpdate()? &apos; + &apos;The name is phrased as a question because the function is &apos; + &apos;expected to return a value.&apos;, spec.displayName || &apos;A component&apos;) : void 0;&#xD;       true ? warning(!Constructor.prototype.componentWillRecieveProps, &apos;%s has a method called &apos; + &apos;componentWillRecieveProps(). Did you mean componentWillReceiveProps()?&apos;, spec.displayName || &apos;A component&apos;) : void 0;&#xD;    }&#xD;&#xD;    // Reduce time spent doing lookups by setting these on the prototype.&#xD;    for (var methodName in ReactClassInterface) {&#xD;      if (!Constructor.prototype[methodName]) {&#xD;        Constructor.prototype[methodName] = null;&#xD;      }&#xD;    }&#xD;&#xD;    return Constructor;&#xD;  }&#xD;&#xD;  return createClass;&#xD;}&#xD;&#xD;module.exports = factory;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 275 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(49)&#xD;exports.createHash = exports.Hash = __webpack_require__(39)&#xD;exports.createHmac = exports.Hmac = __webpack_require__(80)&#xD;&#xD;var hashes = [&apos;sha1&apos;, &apos;sha224&apos;, &apos;sha256&apos;, &apos;sha384&apos;, &apos;sha512&apos;, &apos;md5&apos;, &apos;rmd160&apos;].concat(Object.keys(__webpack_require__(265)))&#xD;exports.getHashes = function () {&#xD;  return hashes&#xD;}&#xD;&#xD;var p = __webpack_require__(146)&#xD;exports.pbkdf2 = p.pbkdf2&#xD;exports.pbkdf2Sync = p.pbkdf2Sync&#xD;&#xD;var aes = __webpack_require__(262)&#xD;;[&#xD;  &apos;Cipher&apos;,&#xD;  &apos;createCipher&apos;,&#xD;  &apos;Cipheriv&apos;,&#xD;  &apos;createCipheriv&apos;,&#xD;  &apos;Decipher&apos;,&#xD;  &apos;createDecipher&apos;,&#xD;  &apos;Decipheriv&apos;,&#xD;  &apos;createDecipheriv&apos;,&#xD;  &apos;getCiphers&apos;,&#xD;  &apos;listCiphers&apos;&#xD;].forEach(function (key) {&#xD;  exports[key] = aes[key]&#xD;})&#xD;&#xD;var dh = __webpack_require__(306)&#xD;;[&#xD;  &apos;DiffieHellmanGroup&apos;,&#xD;  &apos;createDiffieHellmanGroup&apos;,&#xD;  &apos;getDiffieHellman&apos;,&#xD;  &apos;createDiffieHellman&apos;,&#xD;  &apos;DiffieHellman&apos;&#xD;].forEach(function (key) {&#xD;  exports[key] = dh[key]&#xD;})&#xD;&#xD;var sign = __webpack_require__(266)&#xD;;[&#xD;  &apos;createSign&apos;,&#xD;  &apos;Sign&apos;,&#xD;  &apos;createVerify&apos;,&#xD;  &apos;Verify&apos;&#xD;].forEach(function (key) {&#xD;  exports[key] = sign[key]&#xD;})&#xD;&#xD;exports.createECDH = __webpack_require__(272)&#xD;&#xD;var publicEncrypt = __webpack_require__(388)&#xD;&#xD;;[&#xD;  &apos;publicEncrypt&apos;,&#xD;  &apos;privateEncrypt&apos;,&#xD;  &apos;publicDecrypt&apos;,&#xD;  &apos;privateDecrypt&apos;&#xD;].forEach(function (key) {&#xD;  exports[key] = publicEncrypt[key]&#xD;})&#xD;&#xD;// the least I can do is make error messages for the rest of the node.js/crypto api.&#xD;;[&#xD;  &apos;createCredentials&apos;&#xD;].forEach(function (name) {&#xD;  exports[name] = function () {&#xD;    throw new Error([&#xD;      &apos;sorry, &apos; + name + &apos; is not implemented yet&apos;,&#xD;      &apos;we accept pull requests&apos;,&#xD;      &apos;https://github.com/crypto-browserify/crypto-browserify&apos;&#xD;    ].join(&apos;\n&apos;))&#xD;  }&#xD;})&#xD;&#xD;&#xD;/***/ }),&#xD;/* 276 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".react-tabs_react-tabs__tab-list_17Wee {\n  border-bottom: 1px solid #aaa;\n  margin: 0 0 10px;\n  padding: 0;\n}\n\n.react-tabs_react-tabs__tab_3Nn-X {\n  display: inline-block;\n  border: 1px solid transparent;\n  border-bottom: none;\n  bottom: -1px;\n  position: relative;\n  list-style: none;\n  padding: 6px 12px;\n  cursor: pointer;\n}\n\n.react-tabs_react-tabs__tab--selected_EW0CL {\n  background: #fff;\n  border-color: #aaa;\n  color: black;\n  border-radius: 5px 5px 0 0;\n}\n\n.react-tabs_react-tabs__tab-panel_3p4DW {\n  display: none;\n}\n\n.react-tabs_react-tabs__tab-panel--selected_18BFr {\n  display: block;\n}\n\n.react-tabs_react-tabs__tab--disabled_2YPJE {\n  color: GrayText;\n  cursor: default;\n}\n\n.react-tabs_react-tabs__tab_3Nn-X:focus {\n  -webkit-box-shadow: 0 0 5px hsl(208, 99%, 50%);\n          box-shadow: 0 0 5px hsl(208, 99%, 50%);\n  border-color: hsl(208, 99%, 50%);\n  outline: none;\n}\n\n.react-tabs_react-tabs__tab_3Nn-X:focus:after {\n  content: \"\";\n  position: absolute;\n  height: 5px;\n  left: -4px;\n  right: -4px;\n  bottom: -5px;\n  background: #fff;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"react-tabs__tab-list": "react-tabs_react-tabs__tab-list_17Wee",&#xD;	"reactTabsTabList": "react-tabs_react-tabs__tab-list_17Wee",&#xD;	"react-tabs__tab": "react-tabs_react-tabs__tab_3Nn-X",&#xD;	"reactTabsTab": "react-tabs_react-tabs__tab_3Nn-X",&#xD;	"react-tabs__tab--selected": "react-tabs_react-tabs__tab--selected_EW0CL",&#xD;	"reactTabsTabSelected": "react-tabs_react-tabs__tab--selected_EW0CL",&#xD;	"react-tabs__tab-panel": "react-tabs_react-tabs__tab-panel_3p4DW",&#xD;	"reactTabsTabPanel": "react-tabs_react-tabs__tab-panel_3p4DW",&#xD;	"react-tabs__tab-panel--selected": "react-tabs_react-tabs__tab-panel--selected_18BFr",&#xD;	"reactTabsTabPanelSelected": "react-tabs_react-tabs__tab-panel--selected_18BFr",&#xD;	"react-tabs__tab--disabled": "react-tabs_react-tabs__tab--disabled_2YPJE",&#xD;	"reactTabsTabDisabled": "react-tabs_react-tabs__tab--disabled_2YPJE"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 277 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.asset-panel_wrapper_366X0 {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    border: 1px solid #D9D9D9;\n    border-top-right-radius: 0.5rem;\n    background: #F9F9F9;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.85rem;\n}\n\n.asset-panel_detail-area_2KQhH {\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    border-left: 1px solid #D9D9D9;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"wrapper": "asset-panel_wrapper_366X0",&#xD;	"detail-area": "asset-panel_detail-area_2KQhH",&#xD;	"detailArea": "asset-panel_detail-area_2KQhH"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 278 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* Need to use a fixed height for the new container to make list scrollable */\n.selector_wrapper_8_BHs {\n    width: 200px;\n    position: relative;\n}\n.selector_new-item_1gOWk {\n    background: white;\n    border-bottom: 1px solid #ddd;\n    height: 60px;\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    padding-left: 1.75rem;\n    cursor: pointer;\n    font-size: 0.85rem;\n}\n.selector_list-area_1Xbj_ {\n    position: absolute;\n    width: 100%;\n    top: 60px;\n    height: calc(100% - 60px);\n    overflow-y: scroll;\n}\n.selector_list-item_3N_u7 {\n    width: 5rem;\n    min-height: 5rem;\n    margin: 1rem auto;\n}\n.selector_delete-button_34LdV {\n    position: absolute;\n    top: 2px;\n    right: 2px;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"wrapper": "selector_wrapper_8_BHs",&#xD;	"new-item": "selector_new-item_1gOWk",&#xD;	"newItem": "selector_new-item_1gOWk",&#xD;	"list-area": "selector_list-area_1Xbj_",&#xD;	"listArea": "selector_list-area_1Xbj_",&#xD;	"list-item": "selector_list-item_3N_u7",&#xD;	"listItem": "selector_list-item_3N_u7",&#xD;	"delete-button": "selector_delete-button_34LdV",&#xD;	"deleteButton": "selector_delete-button_34LdV"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 279 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.blocks_blocks_C530M .injectionDiv{\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    border: 1px solid #D9D9D9;\n    border-top-right-radius: 0.5rem;\n}\n\n.blocks_blocks_C530M .blocklyMainBackground {\n    stroke: none;\n}\n\n.blocks_blocks_C530M .blocklyToolboxDiv {\n    border-right: 1px solid #D9D9D9;\n    border-bottom: 1px solid #D9D9D9;\n    -webkit-box-sizing: content-box;\n            box-sizing: content-box;\n}\n\n.blocks_blocks_C530M .blocklyFlyout {\n    border-right: 1px solid #D9D9D9;\n    -webkit-box-sizing: content-box;\n            box-sizing: content-box;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"blocks": "blocks_blocks_C530M"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 280 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".box_box_2jjDp {\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"box": "box_box_2jjDp"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 281 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".button_button_lmpwR {\n    cursor: pointer;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"button": "button_button_lmpwR"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 282 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n.close-button_close-button_lOp2G {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n\n    color: gray;\n    background-color: #4C97FF;\n\n    border-radius: 50%;\n    border-color: #dbdbdb;\n    border-style: solid;\n\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    cursor: pointer;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    -webkit-transition: all 0.15s ease-out;\n    -o-transition: all 0.15s ease-out;\n    transition: all 0.15s ease-out; /* @todo: standardize with var */\n}\n.close-button_small_3BsRW {\n    width: 1rem;\n    height: 1rem;\n    border-width: 1px;\n}\n.close-button_large_2oadS {\n    width: 2.75rem;\n    height: 2.75rem;\n    border-width: 2px;\n}\n.close-button_close-button_lOp2G:hover {\n    -webkit-transform: scale(1.1, 1.1);\n        -ms-transform: scale(1.1, 1.1);\n            transform: scale(1.1, 1.1);\n}\n/*  Same icon as Sprite Selector Add button, but rotated.\n    @todo: reuse?\n*/\n.close-button_close-icon_HBCuO {\n    -webkit-transform-origin: 50%;\n        -ms-transform-origin: 50%;\n            transform-origin: 50%;\n    -webkit-transform: rotate(45deg);\n        -ms-transform: rotate(45deg);\n            transform: rotate(45deg);\n    width: 40%;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"close-button": "close-button_close-button_lOp2G",&#xD;	"closeButton": "close-button_close-button_lOp2G",&#xD;	"small": "close-button_small_3BsRW",&#xD;	"large": "close-button_large_2oadS",&#xD;	"close-icon": "close-button_close-icon_HBCuO",&#xD;	"closeIcon": "close-button_close-icon_HBCuO"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 283 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".green-flag_green-flag_1kiAo {\n    width: 1.1rem;\n    height: 1.1rem;\n    opacity: 0.5;\n    margin: 0.25rem 0.6rem;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    cursor: pointer;\n    -webkit-transition: opacity 0.2s ease-out;\n    -o-transition: opacity 0.2s ease-out;\n    transition: opacity 0.2s ease-out; /* @todo: standardize with var */ \n}\n\n.green-flag_green-flag_1kiAo.green-flag_is-active_2oExT,\n.green-flag_green-flag_1kiAo:hover {\n    opacity: 1;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"green-flag": "green-flag_green-flag_1kiAo",&#xD;	"greenFlag": "green-flag_green-flag_1kiAo",&#xD;	"is-active": "green-flag_is-active_2oExT",&#xD;	"isActive": "green-flag_is-active_2oExT"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 284 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.gui_page-wrapper_1cgy0 {\n    height: 100%;\n}\n\n.gui_body-wrapper_-N0sA {\n    height: calc(100% - 3rem);\n    background-color: #e8edf1;\n}\n\n.gui_flex-wrapper_uXHkj {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n\n    /*\n        Make 2 columns:\n        a) for the blocks + workspace panes, and\n        b) for combined stage menu + stage + sprite/stage selectors\n    */\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n        -ms-flex-direction: row;\n            flex-direction: row;\n    height: 100%;\n}\n\n.gui_editor-wrapper_2DYcj {\n    -webkit-flex-basis: 600px;\n        -ms-flex-preferred-size: 600px;\n            flex-basis: 600px;\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    position: relative;\n\n    display: -webkit-box;\n\n    display: -webkit-flex;\n\n    display: -ms-flexbox;\n\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n}\n\n.gui_tab-list_87TYM {\n    height: 3rem;\n    width: 250px; /* Match width of the toolbox */\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: end;\n    -webkit-align-items: flex-end;\n        -ms-flex-align: end;\n            align-items: flex-end;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-weight: 500;\n    font-size: 0.80rem;\n\n    /* Overrides for react-tabs styling */\n    margin: 0 !important;\n    border-bottom: 0 !important;\n}\n\n.gui_tab_27Unf {\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    height: 80%;\n    margin-left: 1px;\n\n    border-radius: 0.5rem 0.5rem 0 0;\n    border: none;\n\n    background-color: #F6F8FA;\n    color: #9AA1B5;\n\n    display: -webkit-box;\n\n    display: -webkit-flex;\n\n    display: -ms-flexbox;\n\n    display: flex;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n}\n\n.gui_tab_27Unf.gui_is-selected_sHAiu {\n    color: #40B9F5;\n    background-color: #FFFFFF;\n}\n\n.gui_tabs_AgmuP {\n    position: relative;\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n}\n\n.gui_tab-panel_22sLx {\n    position: relative;\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    display: none;\n}\n\n.gui_tab-panel_22sLx.gui_is-selected_sHAiu {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n}\n\n.gui_blocks-wrapper_1ccgf {\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    position: relative;\n}\n\n.gui_stage-and-target-wrapper_69KBf {\n    /*\n        Makes rows for children:\n          1) stage menu\n          2) stage\n          3) sprite/stage selectors\n        Only reason we need this, is so .targetWrapper, which holds the selectors,\n        goes to full vertical height of the window\n    */\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n\n    /*\n        Calc the minimum width for this pane, accounting for left + right spacing.\n        If and when the width doesn&apos;t need to be fixed, we can move the spacing out\n        of this calc, and into padding instead\n    */\n    -webkit-flex-basis: calc(480px + (0.5rem * 2));\n        -ms-flex-preferred-size: calc(480px + (0.5rem * 2));\n            flex-basis: calc(480px + (0.5rem * 2));\n}\n\n.gui_stage-wrapper_29wQB {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n\n    /* Hides negative space between edge of rounded corners + container, when selected */\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.gui_target-wrapper_36Gbz {\n    /*  Take all the available vertical space available.\n        Works in tandem with height: 100%; which is set on the child: .targetPane\n        @todo: Not working in Safari, not great in FFx\n    */\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-flex-basis: 0;\n        -ms-flex-preferred-size: 0;\n            flex-basis: 0;\n\n    padding-top: 0.5rem;\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n\n    /*\n        For making the sprite-selector a scrollable pane\n        @todo: Not working in Safari\n    */\n    overflow: hidden;\n}\n\n.gui_stage-menu-wrapper_W5Ler {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    height: 3rem;\n    padding: 0.5rem;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"page-wrapper": "gui_page-wrapper_1cgy0",&#xD;	"pageWrapper": "gui_page-wrapper_1cgy0",&#xD;	"body-wrapper": "gui_body-wrapper_-N0sA",&#xD;	"bodyWrapper": "gui_body-wrapper_-N0sA",&#xD;	"flex-wrapper": "gui_flex-wrapper_uXHkj",&#xD;	"flexWrapper": "gui_flex-wrapper_uXHkj",&#xD;	"editor-wrapper": "gui_editor-wrapper_2DYcj",&#xD;	"editorWrapper": "gui_editor-wrapper_2DYcj",&#xD;	"tab-list": "gui_tab-list_87TYM",&#xD;	"tabList": "gui_tab-list_87TYM",&#xD;	"tab": "gui_tab_27Unf",&#xD;	"is-selected": "gui_is-selected_sHAiu",&#xD;	"isSelected": "gui_is-selected_sHAiu",&#xD;	"tabs": "gui_tabs_AgmuP",&#xD;	"tab-panel": "gui_tab-panel_22sLx",&#xD;	"tabPanel": "gui_tab-panel_22sLx",&#xD;	"blocks-wrapper": "gui_blocks-wrapper_1ccgf",&#xD;	"blocksWrapper": "gui_blocks-wrapper_1ccgf",&#xD;	"stage-and-target-wrapper": "gui_stage-and-target-wrapper_69KBf",&#xD;	"stageAndTargetWrapper": "gui_stage-and-target-wrapper_69KBf",&#xD;	"stage-wrapper": "gui_stage-wrapper_29wQB",&#xD;	"stageWrapper": "gui_stage-wrapper_29wQB",&#xD;	"target-wrapper": "gui_target-wrapper_36Gbz",&#xD;	"targetWrapper": "gui_target-wrapper_36Gbz",&#xD;	"stage-menu-wrapper": "gui_stage-menu-wrapper_W5Ler",&#xD;	"stageMenuWrapper": "gui_stage-menu-wrapper_W5Ler"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 285 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.library-item_library-item_1DcMO {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    -webkit-flex-basis: 160px;\n        -ms-flex-preferred-size: 160px;\n            flex-basis: 160px;\n    height: 160px;\n    margin: calc(0.5rem / 2);\n    padding: 1rem 1rem 0 1rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    color: #575e75;\n    background: white;\n    border-width: 2px;\n    border-style: solid;\n    border-color: #e9eef2;\n    border-radius: 0.5rem;\n    text-align: center;\n    cursor: pointer;\n}\n\n.library-item_library-item_1DcMO:hover {\n    border-width: 2px;\n    border-color: #1dacf4;\n    -webkit-transition: 0.1s ease-out;\n    -o-transition: 0.1s ease-out;\n    transition: 0.1s ease-out;\n    -webkit-transform: scale(1.02, 1.02);\n        -ms-transform: scale(1.02, 1.02);\n            transform: scale(1.02, 1.02);\n}\n\n.library-item_library-item-image-container_3dqjX {\n    height: 100px;\n}\n\n.library-item_library-item-image_2bORn {\n    max-width: 100%;\n    max-height: 100%;\n}\n\n.library-item_library-item-name_2qMXu {\n    width: 80%;\n    margin: 0.25rem 0;\n    text-align: center;\n\n    /*\n        For truncating overflowing text gracefully\n        Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n    */\n    overflow: hidden;\n    -o-text-overflow: ellipsis;\n       text-overflow: ellipsis;\n    white-space: nowrap;\n    min-width: 0;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"library-item": "library-item_library-item_1DcMO",&#xD;	"libraryItem": "library-item_library-item_1DcMO",&#xD;	"library-item-image-container": "library-item_library-item-image-container_3dqjX",&#xD;	"libraryItemImageContainer": "library-item_library-item-image-container_3dqjX",&#xD;	"library-item-image": "library-item_library-item-image_2bORn",&#xD;	"libraryItemImage": "library-item_library-item-image_2bORn",&#xD;	"library-item-name": "library-item_library-item-name_2qMXu",&#xD;	"libraryItemName": "library-item_library-item-name_2qMXu"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 286 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".library_library-scroll-grid_1jyXm {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    -webkit-box-pack: justify;\n    -webkit-justify-content: space-between;\n        -ms-flex-pack: justify;\n            justify-content: space-between;\n    -webkit-flex-wrap: wrap;\n        -ms-flex-wrap: wrap;\n            flex-wrap: wrap;\n    overflow-y: scroll;\n    height: calc(100% - 6rem); /* @todo: currently estimate, fix precision */\n\n    /* \n        Gives sprites a bit of room so they don&apos;t get cut off when they grow on hover\n        @todo: sync as a var, with the transform defined on .library-item:hover\n    */\n    padding: 0.15rem; \n}\n\n.library_modal-header_R-6YD {\n    width: 100%;\n    margin-bottom: 2rem;\n    padding: 0.5rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 1.5rem;\n    font-weight: normal;\n    color: #8e8f95;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"library-scroll-grid": "library_library-scroll-grid_1jyXm",&#xD;	"libraryScrollGrid": "library_library-scroll-grid_1jyXm",&#xD;	"modal-header": "library_modal-header_R-6YD",&#xD;	"modalHeader": "library_modal-header_R-6YD"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 287 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".load-button_file-input_kaqme {\n    display: none;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"file-input": "load-button_file-input_kaqme",&#xD;	"fileInput": "load-button_file-input_kaqme"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 288 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.menu-bar_menu-bar_JcuHF {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n        -ms-flex-direction: row;\n            flex-direction: row;\n    -webkit-box-pack: start;\n    -webkit-justify-content: flex-start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n    -webkit-flex-wrap: nowrap;\n        -ms-flex-wrap: nowrap;\n            flex-wrap: nowrap;\n    \n    /* \n        For most things, we shouldn&apos;t explicitly set height, and let the \n        content push the element to whatever fits. Using a fixed height \n        instead, will help us subtract the value we assign from the body, \n        adding up to a perfect 100%. This means we don&apos;t need to set \n        overflow: hidden, which makes it hard to debug. border-box \n        simplifies by all of this by removing padding from the equation. \n    */\n    -webkit-box-sizing: border-box;\n            box-sizing: border-box;\n    height: 3rem; \n\n    /* \n        @todo: This adds &#126;20px in Chrome, when scrolling to the right, \n        but fixes [FFx + Safari] [resize window down + scroll to the right] bug.\n        width: 100%; \n    */\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: #4c97ff;\n    color: white;\n}\n\n/* \n    Using a wrapper so when logo is hovered, it transforms via its center point \n    @todo: not sure if this is needed \n*/\n\n.menu-bar_logo-wrapper_2DyAU {\n}\n\n.menu-bar_scratch-logo_2uReV {\n    height:  3rem; \n    padding: 0.8rem 0;\n}\n\n.menu-bar_scratch-logo_2uReV:hover {\n    -webkit-transform: scale(1.1, 1.1);\n        -ms-transform: scale(1.1, 1.1);\n            transform: scale(1.1, 1.1);\n    background-size: 100%;\n    -webkit-transition: all .075s ease-in;\n    -o-transition: all .075s ease-in;\n    transition: all .075s ease-in;\n}\n\n.menu-bar_title_3P8lz {\n    display: inline-block;\n    margin: 0 2rem;\n}\n\n.menu-bar_menu-item_2lssx {\n    display: block;\n    padding: 0 1.5rem;\n    line-height: 3rem; \n    cursor: pointer;\n    text-decoration: none;\n    color: white;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.menu-bar_menu-item_2lssx:hover {\n    opacity: 0.8;\n    background: rgba(255, 255, 255, 0.2)\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"menu-bar": "menu-bar_menu-bar_JcuHF",&#xD;	"menuBar": "menu-bar_menu-bar_JcuHF",&#xD;	"logo-wrapper": "menu-bar_logo-wrapper_2DyAU",&#xD;	"logoWrapper": "menu-bar_logo-wrapper_2DyAU",&#xD;	"scratch-logo": "menu-bar_scratch-logo_2uReV",&#xD;	"scratchLogo": "menu-bar_scratch-logo_2uReV",&#xD;	"title": "menu-bar_title_3P8lz",&#xD;	"menu-item": "menu-bar_menu-item_2lssx",&#xD;	"menuItem": "menu-bar_menu-item_2lssx"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 289 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n.modal_modal-overlay_1Lcbx {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 1000;\n    background-color: rgba(0, 0, 0, .75);\n}\n.modal_modal-content_1h3ll {\n    position: absolute;\n    outline: none;\n    overflow-y: scroll;\n    -webkit-overflow-scrolling: &apos;touch&apos;;\n    border: 1px solid #ccc;\n    padding: 0;\n    top: 5%;\n    right: 5%;\n    bottom: 5%;\n    left: 5%;\n    border-radius: 0.5rem;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n.modal_modal-children_93Tp6 {\n    overflow: hidden;\n    height: 100%;\n    z-index: 0;\n    padding: 2rem;\n    background: #F9F9F9;\n}\n.modal_close-button_1waa6 {\n    position: absolute;\n    top: 1rem;\n    right: 1rem;\n    z-index: 2;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"modal-overlay": "modal_modal-overlay_1Lcbx",&#xD;	"modalOverlay": "modal_modal-overlay_1Lcbx",&#xD;	"modal-content": "modal_modal-content_1h3ll",&#xD;	"modalContent": "modal_modal-content_1h3ll",&#xD;	"modal-children": "modal_modal-children_93Tp6",&#xD;	"modalChildren": "modal_modal-children_93Tp6",&#xD;	"close-button": "modal_close-button_1waa6",&#xD;	"closeButton": "modal_close-button_1waa6"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 290 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".monitor-list_monitor-list_20k-y {\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"monitor-list": "monitor-list_monitor-list_20k-y",&#xD;	"monitorList": "monitor-list_monitor-list_20k-y"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 291 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.monitor_monitor_11Vhm {\n    position: absolute;\n    padding: 3px;\n    background: #F9F9F9;\n    z-index: 100;\n    border: 1px solid #D9D9D9;\n    border-radius: calc(0.5rem / 2);\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.75rem;\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-transition: -webkit-box-shadow 0.2s;\n    transition: -webkit-box-shadow 0.2s;\n    -o-transition: box-shadow 0.2s;\n    transition: box-shadow 0.2s;\n    transition: box-shadow 0.2s, -webkit-box-shadow 0.2s;\n    pointer-events: all;\n}\n\n.monitor_monitor_11Vhm:hover {\n    cursor: pointer;\n}\n\n.monitor_dragging_2ZN-P {\n    z-index: 101;\n    -webkit-box-shadow: 3px 3px 5px #888888;\n            box-shadow: 3px 3px 5px #888888;\n}\n\n.monitor_label_ci1ok {\n    font-weight: bold;\n    text-align: center;\n    margin: 0 5px;\n}\n\n.monitor_value_3Yexa {\n    min-width: 40px;\n    text-align: center;\n    color: white;\n    margin: 0 5px;\n    border-radius: calc(0.5rem / 2);\n    padding: 0 2px;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"monitor": "monitor_monitor_11Vhm",&#xD;	"dragging": "monitor_dragging_2ZN-P",&#xD;	"label": "monitor_label_ci1ok",&#xD;	"value": "monitor_value_3Yexa"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 292 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n.prompt_modal-overlay_2VrCX {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 1000;\n    background-color: rgba(94, 102, 125, .95);\n}\n.prompt_modal-content_1BfWj {\n    width: 360px;\n    margin: 100px auto;\n    outline: none;\n    border: 3px solid rgb(126, 133, 151);\n    padding: 0;\n    border-radius: 0.5rem;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    color: #5d647a;\n    overflow: hidden;\n}\n.prompt_header_2yzB_ {\n    font-size: 1.25rem;\n    height: 3.25rem;\n    background-color: #4C97FF;\n    font-weight: 500;\n    color: #fff;\n    text-align: center;\n    line-height: 3.25rem;\n}\n.prompt_body_18Z-I {\n    background: #F9F9F9;\n    padding: 1.5rem 2.25rem;\n}\n.prompt_label_tWjYZ {\n    font-weight: 500;\n    margin: 0 0 0.75rem;\n}\n.prompt_input_2n39_ {\n    margin-bottom: 1.5rem;\n    width: 100%;\n    border: 1px solid rgba(0,0,0,.1);\n    border-radius: 5px;\n    padding: 0 1rem;\n    height: 3rem;\n    color: #6b6b6b;\n    font-size: .875rem;\n}\n.prompt_button-row_3Wc5Z {\n    font-weight: bolder;\n    text-align: right;\n}\n.prompt_button-row_3Wc5Z button {\n    padding: 0.75rem 1rem;\n    border-radius: 0.25rem;\n    background: white;\n    border: 1px solid #D9D9D9;\n    font-weight: 600;\n    font-size: 0.85rem;\n}\n.prompt_button-row_3Wc5Z button.prompt_ok-button_3QFdD {\n    background: #4C97FF;\n    border: #4C97FF;\n    color: white;\n}\n.prompt_button-row_3Wc5Z button + button {\n    margin-left: 0.5rem;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"modal-overlay": "prompt_modal-overlay_2VrCX",&#xD;	"modalOverlay": "prompt_modal-overlay_2VrCX",&#xD;	"modal-content": "prompt_modal-content_1BfWj",&#xD;	"modalContent": "prompt_modal-content_1BfWj",&#xD;	"header": "prompt_header_2yzB_",&#xD;	"body": "prompt_body_18Z-I",&#xD;	"label": "prompt_label_tWjYZ",&#xD;	"input": "prompt_input_2n39_",&#xD;	"button-row": "prompt_button-row_3Wc5Z",&#xD;	"buttonRow": "prompt_button-row_3Wc5Z",&#xD;	"ok-button": "prompt_ok-button_3QFdD",&#xD;	"okButton": "prompt_ok-button_3QFdD"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 293 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.sprite-info_sprite-info_3EyZh {\n    height: 5.25rem;\n    padding: 0.5rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: white;\n    color: #575e75;\n    border-top-left-radius: 0.5rem;\n    border-top-right-radius: 0.5rem;\n    border-bottom: 1px solid #eaeaea;\n}\n\n.sprite-info_row_1om5V {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-pack: justify;\n    -webkit-justify-content: space-between;\n        -ms-flex-pack: justify;\n            justify-content: space-between;\n}\n\n.sprite-info_row-primary_10JrS { margin-bottom: 0.5rem; }\n\n.sprite-info_label_258mm { opacity: 0.8; }\n\n.sprite-info_group_14-B_ {\n    display: -webkit-inline-box;\n    display: -webkit-inline-flex;\n    display: -ms-inline-flexbox;\n    display: inline-flex;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n        -ms-flex-direction: row;\n            flex-direction: row; /* makes columns, for each label/form group */\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n}\n\n.sprite-info_icon-wrapper_3Wbqq {\n    display: inline-block;\n\n    /*\n        content-box is normally the browser&apos;s default.\n        We&apos;re overriding the global, which we set to border-box\n    */\n    -webkit-box-sizing: content-box;\n            box-sizing: content-box;\n    width: 1.25rem;\n    height: 1.25rem;\n    padding: calc(0.5rem / 2);\n    outline: none;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.sprite-info_icon_1iZ_9 {\n    width: 100%;\n    height: 100%;\n}\n\n/* @todo: refactor radio divs to input */\n\n.sprite-info_radio_v-fgn { opacity: 0.4; cursor: pointer; }\n\n.sprite-info_radio_v-fgn.sprite-info_is-active_ewF6e   { opacity: 1; }\n\n.sprite-info_radio_v-fgn.sprite-info_is-disabled_1_MCi { cursor: default; }\n\n.sprite-info_radio-left_3TVLp {\n    border: 1px solid #E9EEF2;\n    border-top-left-radius: calc(0.5rem / 2);\n    border-bottom-left-radius: calc(0.5rem / 2);\n}\n\n.sprite-info_radio-right_3-OU1 {\n    border-bottom: 1px solid #E9EEF2;\n    border-top: 1px solid #E9EEF2;\n    border-right: 1px solid #E9EEF2;\n    border-top-right-radius: calc(0.5rem / 2);\n    border-bottom-right-radius: calc(0.5rem / 2);\n}\n\n.sprite-info_icon_1iZ_9 {\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n}\n\n.sprite-info_input-label_1PV0w {\n    font-size: 0.625rem;\n    font-weight: bold;\n    margin-right: calc(0.5rem / 2);\n\n    /* @todo: make this a mixin for all UI text labels */\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    cursor: default;\n}\n\n.sprite-info_input-label-secondary_3axq5 {\n    font-size: 0.625rem;\n    margin-right: calc(0.5rem / 2);\n\n    /* @todo: make this a mixin for all UI text labels */\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    cursor: default;\n}\n\n.sprite-info_input-form_7JtZK {\n    padding: 0.5rem 0.75rem;\n\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.625rem;\n    font-weight: bold;\n\n    border-width: 1px;\n    border-style: solid;\n    border-color: #E9EEF2;\n    border-radius: 2rem;\n\n    outline: none;\n    cursor: text;\n    -webkit-transition: 0.25s ease-out;\n    -o-transition: 0.25s ease-out;\n    transition: 0.25s ease-out; /* @todo: standardize with var */\n    -webkit-box-shadow: none;\n            box-shadow: none;\n\n    /*\n        For truncating overflowing text gracefully\n        Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n        @todo: move this out into a mixin or a helper component\n    */\n    overflow: hidden;\n    -o-text-overflow: ellipsis;\n       text-overflow: ellipsis;\n    white-space: nowrap;\n    min-width: 0;\n}\n\n.sprite-info_input-form_7JtZK:focus {\n    border-color: #4c97ff;\n    -webkit-box-shadow: inset 0 0 0 -2px rgba(0, 0, 0, 0.1);\n            box-shadow: inset 0 0 0 -2px rgba(0, 0, 0, 0.1);\n}\n\n.sprite-info_x_31yjG, .sprite-info_y_2llZZ, .sprite-info_direction_3yo0U { width: 3.5rem; text-align: center; }\n\n.sprite-info_rotation-select_17OlD {\n    width: 100%;\n    height: 1.85rem;\n    border: 1px solid #E9EEF2;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    outline: none;\n}\n\n.sprite-info_sprite-name_3zimL { width: 100%; }\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"sprite-info": "sprite-info_sprite-info_3EyZh",&#xD;	"spriteInfo": "sprite-info_sprite-info_3EyZh",&#xD;	"row": "sprite-info_row_1om5V",&#xD;	"row-primary": "sprite-info_row-primary_10JrS",&#xD;	"rowPrimary": "sprite-info_row-primary_10JrS",&#xD;	"label": "sprite-info_label_258mm",&#xD;	"group": "sprite-info_group_14-B_",&#xD;	"icon-wrapper": "sprite-info_icon-wrapper_3Wbqq",&#xD;	"iconWrapper": "sprite-info_icon-wrapper_3Wbqq",&#xD;	"icon": "sprite-info_icon_1iZ_9",&#xD;	"radio": "sprite-info_radio_v-fgn",&#xD;	"is-active": "sprite-info_is-active_ewF6e",&#xD;	"isActive": "sprite-info_is-active_ewF6e",&#xD;	"is-disabled": "sprite-info_is-disabled_1_MCi",&#xD;	"isDisabled": "sprite-info_is-disabled_1_MCi",&#xD;	"radio-left": "sprite-info_radio-left_3TVLp",&#xD;	"radioLeft": "sprite-info_radio-left_3TVLp",&#xD;	"radio-right": "sprite-info_radio-right_3-OU1",&#xD;	"radioRight": "sprite-info_radio-right_3-OU1",&#xD;	"input-label": "sprite-info_input-label_1PV0w",&#xD;	"inputLabel": "sprite-info_input-label_1PV0w",&#xD;	"input-label-secondary": "sprite-info_input-label-secondary_3axq5",&#xD;	"inputLabelSecondary": "sprite-info_input-label-secondary_3axq5",&#xD;	"input-form": "sprite-info_input-form_7JtZK",&#xD;	"inputForm": "sprite-info_input-form_7JtZK",&#xD;	"x": "sprite-info_x_31yjG",&#xD;	"y": "sprite-info_y_2llZZ",&#xD;	"direction": "sprite-info_direction_3yo0U",&#xD;	"rotation-select": "sprite-info_rotation-select_17OlD",&#xD;	"rotationSelect": "sprite-info_rotation-select_17OlD",&#xD;	"sprite-name": "sprite-info_sprite-name_3zimL",&#xD;	"spriteName": "sprite-info_sprite-name_3zimL"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 294 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n/* @todo: refactor this class name, and component: `sprite-selector` to `sprite` */\n\n.sprite-selector-item_sprite-selector-item_kQm-i {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    -webkit-box-pack: start;\n    -webkit-justify-content: flex-start;\n        -ms-flex-pack: start;\n            justify-content: flex-start;\n    position: relative;\n\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.8rem;\n    background: white;\n    color: #5d647a;\n    border-width: 2px;\n    border-style: solid;\n    border-color: #e9eef2;\n    border-radius: 0.5rem;\n    text-align: center;\n    cursor: pointer;\n}\n\n.sprite-selector-item_sprite-selector-item_kQm-i:hover {\n    border-width: 2px;\n    border-color: #1dacf4;\n    -webkit-transition: 0.25s ease-out;\n    -o-transition: 0.25s ease-out;\n    transition: 0.25s ease-out;\n}\n\n/* @todo: refactor out descendent selectors into regular classes */\n\n.sprite-selector-item_sprite-selector-item_kQm-i.sprite-selector-item_is-selected_24tQj {\n    border-width: 2px;\n    border-color: #1dacf4;\n    -webkit-transition: 0.25s ease-out;\n    -o-transition: 0.25s ease-out;\n    transition: 0.25s ease-out;\n}\n\n.sprite-selector-item_sprite-selector-item_kQm-i.sprite-selector-item_is-selected_24tQj .sprite-selector-item_info-button_bH_of {\n    display: block;\n}\n\n.sprite-selector-item_sprite-image_2QWuK {\n    margin: auto;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.sprite-selector-item_sprite-name_1PXjh {\n    font-size: 0.625rem;\n    margin: 0.15rem;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    \n    /*\n        For truncating overflowing text gracefully\n        Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text\n    */\n    overflow: hidden;\n    -o-text-overflow: ellipsis;\n       text-overflow: ellipsis;\n    white-space: nowrap;\n    min-width: 0;\n}\n\n.sprite-selector-item_delete-button_1rkFW {\n    position: absolute;\n    top: 0.125rem;\n    right: 0.125rem;\n    z-index: 2;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"sprite-selector-item": "sprite-selector-item_sprite-selector-item_kQm-i",&#xD;	"spriteSelectorItem": "sprite-selector-item_sprite-selector-item_kQm-i",&#xD;	"is-selected": "sprite-selector-item_is-selected_24tQj",&#xD;	"isSelected": "sprite-selector-item_is-selected_24tQj",&#xD;	"info-button": "sprite-selector-item_info-button_bH_of",&#xD;	"infoButton": "sprite-selector-item_info-button_bH_of",&#xD;	"sprite-image": "sprite-selector-item_sprite-image_2QWuK",&#xD;	"spriteImage": "sprite-selector-item_sprite-image_2QWuK",&#xD;	"sprite-name": "sprite-selector-item_sprite-name_1PXjh",&#xD;	"spriteName": "sprite-selector-item_sprite-name_1PXjh",&#xD;	"delete-button": "sprite-selector-item_delete-button_1rkFW",&#xD;	"deleteButton": "sprite-selector-item_delete-button_1rkFW"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 295 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.sprite-selector_sprite-selector_2KgCX {\n    -webkit-box-flex: 1;\n    -webkit-flex-grow: 1;\n        -ms-flex-positive: 1;\n            flex-grow: 1;\n    position: relative; \n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    margin-right: calc(0.5rem / 2);\n    background-color: #f9f9f9;\n    border-top-right-radius: 0.5rem;\n    border-top-left-radius: 0.5rem;\n    border-color: #dbdbdb;\n    border-width: 1px;\n    border-style: solid;\n    border-bottom: 0;\n}\n\n/* In prep for renaming sprite-selector-item to sprite */\n\n.sprite-selector_sprite_21WnR {\n    /* \n        Our goal is to fit sprites evenly in a row without leftover space.\n        Flexbox&apos;s `space between` property gets us close, but doesn&apos;t flow \n        well when the # of items per row &gt; 1 and less than the max per row.\n\n        Solving by explicitly calc&apos;ing the width of each sprite. Setting \n        `border-box` simplifies things, because content, padding and \n        border-width all are included in the width, leaving us only to subtract \n        the left + right margins.\n\n        @todo: make room for the scrollbar\n    */\n    -webkit-box-sizing: border-box;\n            box-sizing: border-box;\n    width: calc((100% / 5 ) - 0.5rem);\n\n    min-height: 4rem; /* @todo: calc height same as width */\n    margin: calc(0.5rem / 2); \n}\n\n.sprite-selector_scroll-wrapper_3NNnc {\n    /*\n       Sets the sprite-selector items as a scrollable pane\n\n        @todo: Safari: pane doesn&apos;t stretch to fill height;\n        @todo: Adding `position: relative` still doesn&apos;t fix Safari scrolling pane, and \n              also introduces a new bug in Chrome when vertically resizing window down, \n              then back up, introduces white space in the outside the page container. \n    */\n    height: calc(100% - 5.25rem); \n    overflow-y: scroll;\n}\n\n.sprite-selector_items-wrapper_4bcOj {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-flex-wrap: wrap;\n        -ms-flex-wrap: wrap;\n            flex-wrap: wrap;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n        -ms-flex-direction: row;\n            flex-direction: row;\n\n    padding-top: calc(0.5rem / 2);\n    padding-left: calc(0.5rem / 2);\n    padding-right: calc(0.5rem / 2);\n    padding-bottom: 0.5rem; \n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"sprite-selector": "sprite-selector_sprite-selector_2KgCX",&#xD;	"spriteSelector": "sprite-selector_sprite-selector_2KgCX",&#xD;	"sprite": "sprite-selector_sprite_21WnR",&#xD;	"scroll-wrapper": "sprite-selector_scroll-wrapper_3NNnc",&#xD;	"scrollWrapper": "sprite-selector_scroll-wrapper_3NNnc",&#xD;	"items-wrapper": "sprite-selector_items-wrapper_4bcOj",&#xD;	"itemsWrapper": "sprite-selector_items-wrapper_4bcOj"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 296 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n/* @todo: half the SpriteInfo area header? */\n\n.stage-selector_stage-selector_3oWOr {\n    position: relative; /* for the child element border */\n    height: 100%;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: #C0C3C6;\n    color: #C0C3C6;\n    border-top-left-radius: 0.5rem;\n    border-top-right-radius: 0.5rem;\n    border-color: #dbdbdb;\n    border-width: 1px;\n    border-style: solid;\n    border-bottom: 0;\n}\n\n.stage-selector_header_2GVr1 {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    height: 2.5rem;\n    padding: 0.5rem 0.5rem 0.5rem 0.25rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: white;\n    color: #575e75;\n    border-top-left-radius: 0.5rem;\n    border-top-right-radius: 0.5rem;\n    border-bottom: 1px solid #eaeaea;\n}\n\n.stage-selector_header-title_33xCt {\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.625rem;\n    font-weight: bold;\n    color: #575e75;\n\n    /* @todo: make this a mixin for all UI text labels */\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    cursor: default;\n}\n\n.stage-selector_body_2B2N3 {\n    -webkit-justify-content: space-around;\n        -ms-flex-pack: distribute;\n            justify-content: space-around;\n    padding: 0.5rem;\n    height: calc(100% - 2.5rem);\n    background-color: #f9f9f9;\n}\n\n.stage-selector_count_2QK7D {\n    margin: 0 0 0.3rem 0;\n    padding: 0.15rem 0.5rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.625rem;\n    font-weight: bold;\n    color: #575e75;\n    background: #c0c3c6;\n    border-radius: 0.25rem;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.stage-selector_label_1MCfr {\n    margin: 0.4rem 0 0.25rem;\n    font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    font-size: 0.5rem;\n    font-weight: bold;\n    color: #575e75;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.stage-selector_flex-wrapper_Dl2sH {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: column;\n        -ms-flex-direction: column;\n            flex-direction: column; /* makes rows */\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    overflow: hidden;\n    background-color: white;\n    border-radius: calc(0.5rem / 2);\n    border-width: 2px;\n    border-style: solid;\n    border-color: #e9eef2;\n    cursor: pointer;\n    -webkit-transition: border-color 0.1s ease-out;\n    -o-transition: border-color 0.1s ease-out;\n    transition: border-color 0.1s ease-out;\n}\n\n.stage-selector_flex-wrapper_Dl2sH:hover {\n    border-color: #1dacf4;\n}\n\n.stage-selector_flex-wrapper_Dl2sH.stage-selector_is-selected_2x2r_ {\n    border-color: #1dacf4;\n}\n\n.stage-selector_costume-canvas_2L_6h {\n    display: block;\n    width: 100%;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"stage-selector": "stage-selector_stage-selector_3oWOr",&#xD;	"stageSelector": "stage-selector_stage-selector_3oWOr",&#xD;	"header": "stage-selector_header_2GVr1",&#xD;	"header-title": "stage-selector_header-title_33xCt",&#xD;	"headerTitle": "stage-selector_header-title_33xCt",&#xD;	"body": "stage-selector_body_2B2N3",&#xD;	"count": "stage-selector_count_2QK7D",&#xD;	"label": "stage-selector_label_1MCfr",&#xD;	"flex-wrapper": "stage-selector_flex-wrapper_Dl2sH",&#xD;	"flexWrapper": "stage-selector_flex-wrapper_Dl2sH",&#xD;	"is-selected": "stage-selector_is-selected_2x2r_",&#xD;	"isSelected": "stage-selector_is-selected_2x2r_",&#xD;	"costume-canvas": "stage-selector_costume-canvas_2L_6h",&#xD;	"costumeCanvas": "stage-selector_costume-canvas_2L_6h"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 297 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.stage_stage_1fD7k {\n    /*\n        Fixes a few extra pixels of margin/padding, that adds on to the bottom\n        of the element, which messes up the chrome padding consistency\n    */\n    display: block;\n\n    border-radius: 0.5rem;\n\n    /* @todo: This is for overriding the value being set somewhere. Where is it being set? */\n    background-color: transparent;\n}\n\n.stage_stage-wrapper_eRRuk {\n    position: relative;\n}\n\n.stage_monitor-wrapper_2w6m8 {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    pointer-events: none;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"stage": "stage_stage_1fD7k",&#xD;	"stage-wrapper": "stage_stage-wrapper_eRRuk",&#xD;	"stageWrapper": "stage_stage-wrapper_eRRuk",&#xD;	"monitor-wrapper": "stage_monitor-wrapper_2w6m8",&#xD;	"monitorWrapper": "stage_monitor-wrapper_2w6m8"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 298 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, ".stop-all_stop-all_1Y8P9 {\n    width: 1.1rem;\n    height: 1.1rem;\n    opacity: 0.5;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    cursor: pointer;\n    -webkit-transition: opacity 0.2s ease-out;\n    -o-transition: opacity 0.2s ease-out;\n    transition: opacity 0.2s ease-out; /* @todo: standardize with var */ \n}\n\n.stop-all_stop-all_1Y8P9.stop-all_is-active_3nog0,\n.stop-all_stop-all_1Y8P9:hover {\n    opacity: 1;\n}\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"stop-all": "stop-all_stop-all_1Y8P9",&#xD;	"stopAll": "stop-all_stop-all_1Y8P9",&#xD;	"is-active": "stop-all_is-active_3nog0",&#xD;	"isActive": "stop-all_is-active_3nog0"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 299 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "/* TODO: SpriteInfo isn&apos;t explicitly set to this height yet */\n\n.target-pane_target-pane_3S5E6 {\n    /* Makes columns for the sprite library selector + and the stage selector */\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: horizontal;\n    -webkit-box-direction: normal;\n    -webkit-flex-direction: row;\n        -ms-flex-direction: row;\n            flex-direction: row; \n    \n    height: 100%;\n}\n\n.target-pane_stage-selector-wrapper_qekSW {\n    -webkit-flex-basis: 72px;\n        -ms-flex-preferred-size: 72px;\n            flex-basis: 72px;\n    -webkit-flex-shrink: 0;\n        -ms-flex-negative: 0;\n            flex-shrink: 0;\n    margin-left: calc(0.5rem / 2); \n}\n\n.target-pane_add-button-wrapper_YhePj {\n    display: -webkit-box;\n    display: -webkit-flex;\n    display: -ms-flexbox;\n    display: flex;\n    position: absolute;\n    -webkit-box-pack: center;\n    -webkit-justify-content: center;\n        -ms-flex-pack: center;\n            justify-content: center;\n    -webkit-box-align: center;\n    -webkit-align-items: center;\n        -ms-flex-align: center;\n            align-items: center;\n    z-index: 1;\n    bottom: 1rem;\n    width: 2.25rem !important;\n    height: 2.25rem !important;\n    background-color: #4c97ff;\n    border: 0;\n    border-radius: 50% !important;\n    -webkit-box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);\n            box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);\n    -webkit-transition: all 0.15s ease-out;\n    -o-transition: all 0.15s ease-out;\n    transition: all 0.15s ease-out; /* @todo: standardize with var */ \n    cursor: pointer;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n}\n\n.target-pane_add-button-wrapper_YhePj:hover {\n    -webkit-transform: scale(1.1, 1.1);\n        -ms-transform: scale(1.1, 1.1);\n            transform: scale(1.1, 1.1);\n    -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1);\n            box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1);\n}\n\n.target-pane_add-button-wrapper_YhePj:focus {\n    outline: none;\n    border: 0;\n}\n\n.target-pane_add-button_CfgS6 {\n    height: 0.8rem;\n}\n\n/* @todo: This is hacky. Better: move buttons in their corresponding panes, and set values relatively */\n\n.target-pane_add-button-wrapper--sprite_1RdMN   { right: 7rem; }\n\n.target-pane_add-button-wrapper--stage_2aqCy    { right: 1.6rem; }\n\n.target-pane_add-button-wrapper--costume_47_0H  { right: 1.6rem; }\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"target-pane": "target-pane_target-pane_3S5E6",&#xD;	"targetPane": "target-pane_target-pane_3S5E6",&#xD;	"stage-selector-wrapper": "target-pane_stage-selector-wrapper_qekSW",&#xD;	"stageSelectorWrapper": "target-pane_stage-selector-wrapper_qekSW",&#xD;	"add-button-wrapper": "target-pane_add-button-wrapper_YhePj",&#xD;	"addButtonWrapper": "target-pane_add-button-wrapper_YhePj",&#xD;	"add-button": "target-pane_add-button_CfgS6",&#xD;	"addButton": "target-pane_add-button_CfgS6",&#xD;	"add-button-wrapper--sprite": "target-pane_add-button-wrapper--sprite_1RdMN",&#xD;	"addButtonWrapperSprite": "target-pane_add-button-wrapper--sprite_1RdMN",&#xD;	"add-button-wrapper--stage": "target-pane_add-button-wrapper--stage_2aqCy",&#xD;	"addButtonWrapperStage": "target-pane_add-button-wrapper--stage_2aqCy",&#xD;	"add-button-wrapper--costume": "target-pane_add-button-wrapper--costume_47_0H",&#xD;	"addButtonWrapperCostume": "target-pane_add-button-wrapper--costume_47_0H"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 300 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports = module.exports = __webpack_require__(7)(undefined);&#xD;// imports&#xD;&#xD;&#xD;// module&#xD;exports.push([module.i, "html,\nbody,\n.index_app_3cj18 {\n    /* probably unecessary, transitional until layout is refactored */\n    width: 100%; \n    height: 100%;\n    margin: 0;\n}\n\n/* @todo: move globally? Safe / side FX, for blocks particularly? */\n\n* { -webkit-box-sizing: border-box; box-sizing: border-box; }\n", ""]);&#xD;&#xD;// exports&#xD;exports.locals = {&#xD;	"app": "index_app_3cj18"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 301 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var assert = __webpack_require__(32);&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var proto = {};&#xD;&#xD;function CBCState(iv) {&#xD;  assert.equal(iv.length, 8, &apos;Invalid IV length&apos;);&#xD;&#xD;  this.iv = new Array(8);&#xD;  for (var i = 0; i &lt; this.iv.length; i++)&#xD;    this.iv[i] = iv[i];&#xD;}&#xD;&#xD;function instantiate(Base) {&#xD;  function CBC(options) {&#xD;    Base.call(this, options);&#xD;    this._cbcInit();&#xD;  }&#xD;  inherits(CBC, Base);&#xD;&#xD;  var keys = Object.keys(proto);&#xD;  for (var i = 0; i &lt; keys.length; i++) {&#xD;    var key = keys[i];&#xD;    CBC.prototype[key] = proto[key];&#xD;  }&#xD;&#xD;  CBC.create = function create(options) {&#xD;    return new CBC(options);&#xD;  };&#xD;&#xD;  return CBC;&#xD;}&#xD;&#xD;exports.instantiate = instantiate;&#xD;&#xD;proto._cbcInit = function _cbcInit() {&#xD;  var state = new CBCState(this.options.iv);&#xD;  this._cbcState = state;&#xD;};&#xD;&#xD;proto._update = function _update(inp, inOff, out, outOff) {&#xD;  var state = this._cbcState;&#xD;  var superProto = this.constructor.super_.prototype;&#xD;&#xD;  var iv = state.iv;&#xD;  if (this.type === &apos;encrypt&apos;) {&#xD;    for (var i = 0; i &lt; this.blockSize; i++)&#xD;      iv[i] ^= inp[inOff + i];&#xD;&#xD;    superProto._update.call(this, iv, 0, out, outOff);&#xD;&#xD;    for (var i = 0; i &lt; this.blockSize; i++)&#xD;      iv[i] = out[outOff + i];&#xD;  } else {&#xD;    superProto._update.call(this, inp, inOff, out, outOff);&#xD;&#xD;    for (var i = 0; i &lt; this.blockSize; i++)&#xD;      out[outOff + i] ^= iv[i];&#xD;&#xD;    for (var i = 0; i &lt; this.blockSize; i++)&#xD;      iv[i] = inp[inOff + i];&#xD;  }&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 302 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var assert = __webpack_require__(32);&#xD;&#xD;function Cipher(options) {&#xD;  this.options = options;&#xD;&#xD;  this.type = this.options.type;&#xD;  this.blockSize = 8;&#xD;  this._init();&#xD;&#xD;  this.buffer = new Array(this.blockSize);&#xD;  this.bufferOff = 0;&#xD;}&#xD;module.exports = Cipher;&#xD;&#xD;Cipher.prototype._init = function _init() {&#xD;  // Might be overrided&#xD;};&#xD;&#xD;Cipher.prototype.update = function update(data) {&#xD;  if (data.length === 0)&#xD;    return [];&#xD;&#xD;  if (this.type === &apos;decrypt&apos;)&#xD;    return this._updateDecrypt(data);&#xD;  else&#xD;    return this._updateEncrypt(data);&#xD;};&#xD;&#xD;Cipher.prototype._buffer = function _buffer(data, off) {&#xD;  // Append data to buffer&#xD;  var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);&#xD;  for (var i = 0; i &lt; min; i++)&#xD;    this.buffer[this.bufferOff + i] = data[off + i];&#xD;  this.bufferOff += min;&#xD;&#xD;  // Shift next&#xD;  return min;&#xD;};&#xD;&#xD;Cipher.prototype._flushBuffer = function _flushBuffer(out, off) {&#xD;  this._update(this.buffer, 0, out, off);&#xD;  this.bufferOff = 0;&#xD;  return this.blockSize;&#xD;};&#xD;&#xD;Cipher.prototype._updateEncrypt = function _updateEncrypt(data) {&#xD;  var inputOff = 0;&#xD;  var outputOff = 0;&#xD;&#xD;  var count = ((this.bufferOff + data.length) / this.blockSize) | 0;&#xD;  var out = new Array(count * this.blockSize);&#xD;&#xD;  if (this.bufferOff !== 0) {&#xD;    inputOff += this._buffer(data, inputOff);&#xD;&#xD;    if (this.bufferOff === this.buffer.length)&#xD;      outputOff += this._flushBuffer(out, outputOff);&#xD;  }&#xD;&#xD;  // Write blocks&#xD;  var max = data.length - ((data.length - inputOff) % this.blockSize);&#xD;  for (; inputOff &lt; max; inputOff += this.blockSize) {&#xD;    this._update(data, inputOff, out, outputOff);&#xD;    outputOff += this.blockSize;&#xD;  }&#xD;&#xD;  // Queue rest&#xD;  for (; inputOff &lt; data.length; inputOff++, this.bufferOff++)&#xD;    this.buffer[this.bufferOff] = data[inputOff];&#xD;&#xD;  return out;&#xD;};&#xD;&#xD;Cipher.prototype._updateDecrypt = function _updateDecrypt(data) {&#xD;  var inputOff = 0;&#xD;  var outputOff = 0;&#xD;&#xD;  var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;&#xD;  var out = new Array(count * this.blockSize);&#xD;&#xD;  // TODO(indutny): optimize it, this is far from optimal&#xD;  for (; count &gt; 0; count--) {&#xD;    inputOff += this._buffer(data, inputOff);&#xD;    outputOff += this._flushBuffer(out, outputOff);&#xD;  }&#xD;&#xD;  // Buffer rest of the input&#xD;  inputOff += this._buffer(data, inputOff);&#xD;&#xD;  return out;&#xD;};&#xD;&#xD;Cipher.prototype.final = function final(buffer) {&#xD;  var first;&#xD;  if (buffer)&#xD;    first = this.update(buffer);&#xD;&#xD;  var last;&#xD;  if (this.type === &apos;encrypt&apos;)&#xD;    last = this._finalEncrypt();&#xD;  else&#xD;    last = this._finalDecrypt();&#xD;&#xD;  if (first)&#xD;    return first.concat(last);&#xD;  else&#xD;    return last;&#xD;};&#xD;&#xD;Cipher.prototype._pad = function _pad(buffer, off) {&#xD;  if (off === 0)&#xD;    return false;&#xD;&#xD;  while (off &lt; buffer.length)&#xD;    buffer[off++] = 0;&#xD;&#xD;  return true;&#xD;};&#xD;&#xD;Cipher.prototype._finalEncrypt = function _finalEncrypt() {&#xD;  if (!this._pad(this.buffer, this.bufferOff))&#xD;    return [];&#xD;&#xD;  var out = new Array(this.blockSize);&#xD;  this._update(this.buffer, 0, out, 0);&#xD;  return out;&#xD;};&#xD;&#xD;Cipher.prototype._unpad = function _unpad(buffer) {&#xD;  return buffer;&#xD;};&#xD;&#xD;Cipher.prototype._finalDecrypt = function _finalDecrypt() {&#xD;  assert.equal(this.bufferOff, this.blockSize, &apos;Not enough data to decrypt&apos;);&#xD;  var out = new Array(this.blockSize);&#xD;  this._flushBuffer(out, 0);&#xD;&#xD;  return this._unpad(out);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 303 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var assert = __webpack_require__(32);&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var des = __webpack_require__(81);&#xD;var utils = des.utils;&#xD;var Cipher = des.Cipher;&#xD;&#xD;function DESState() {&#xD;  this.tmp = new Array(2);&#xD;  this.keys = null;&#xD;}&#xD;&#xD;function DES(options) {&#xD;  Cipher.call(this, options);&#xD;&#xD;  var state = new DESState();&#xD;  this._desState = state;&#xD;&#xD;  this.deriveKeys(state, options.key);&#xD;}&#xD;inherits(DES, Cipher);&#xD;module.exports = DES;&#xD;&#xD;DES.create = function create(options) {&#xD;  return new DES(options);&#xD;};&#xD;&#xD;var shiftTable = [&#xD;  1, 1, 2, 2, 2, 2, 2, 2,&#xD;  1, 2, 2, 2, 2, 2, 2, 1&#xD;];&#xD;&#xD;DES.prototype.deriveKeys = function deriveKeys(state, key) {&#xD;  state.keys = new Array(16 * 2);&#xD;&#xD;  assert.equal(key.length, this.blockSize, &apos;Invalid key length&apos;);&#xD;&#xD;  var kL = utils.readUInt32BE(key, 0);&#xD;  var kR = utils.readUInt32BE(key, 4);&#xD;&#xD;  utils.pc1(kL, kR, state.tmp, 0);&#xD;  kL = state.tmp[0];&#xD;  kR = state.tmp[1];&#xD;  for (var i = 0; i &lt; state.keys.length; i += 2) {&#xD;    var shift = shiftTable[i &gt;&gt;&gt; 1];&#xD;    kL = utils.r28shl(kL, shift);&#xD;    kR = utils.r28shl(kR, shift);&#xD;    utils.pc2(kL, kR, state.keys, i);&#xD;  }&#xD;};&#xD;&#xD;DES.prototype._update = function _update(inp, inOff, out, outOff) {&#xD;  var state = this._desState;&#xD;&#xD;  var l = utils.readUInt32BE(inp, inOff);&#xD;  var r = utils.readUInt32BE(inp, inOff + 4);&#xD;&#xD;  // Initial Permutation&#xD;  utils.ip(l, r, state.tmp, 0);&#xD;  l = state.tmp[0];&#xD;  r = state.tmp[1];&#xD;&#xD;  if (this.type === &apos;encrypt&apos;)&#xD;    this._encrypt(state, l, r, state.tmp, 0);&#xD;  else&#xD;    this._decrypt(state, l, r, state.tmp, 0);&#xD;&#xD;  l = state.tmp[0];&#xD;  r = state.tmp[1];&#xD;&#xD;  utils.writeUInt32BE(out, l, outOff);&#xD;  utils.writeUInt32BE(out, r, outOff + 4);&#xD;};&#xD;&#xD;DES.prototype._pad = function _pad(buffer, off) {&#xD;  var value = buffer.length - off;&#xD;  for (var i = off; i &lt; buffer.length; i++)&#xD;    buffer[i] = value;&#xD;&#xD;  return true;&#xD;};&#xD;&#xD;DES.prototype._unpad = function _unpad(buffer) {&#xD;  var pad = buffer[buffer.length - 1];&#xD;  for (var i = buffer.length - pad; i &lt; buffer.length; i++)&#xD;    assert.equal(buffer[i], pad);&#xD;&#xD;  return buffer.slice(0, buffer.length - pad);&#xD;};&#xD;&#xD;DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {&#xD;  var l = lStart;&#xD;  var r = rStart;&#xD;&#xD;  // Apply f() x16 times&#xD;  for (var i = 0; i &lt; state.keys.length; i += 2) {&#xD;    var keyL = state.keys[i];&#xD;    var keyR = state.keys[i + 1];&#xD;&#xD;    // f(r, k)&#xD;    utils.expand(r, state.tmp, 0);&#xD;&#xD;    keyL ^= state.tmp[0];&#xD;    keyR ^= state.tmp[1];&#xD;    var s = utils.substitute(keyL, keyR);&#xD;    var f = utils.permute(s);&#xD;&#xD;    var t = r;&#xD;    r = (l ^ f) &gt;&gt;&gt; 0;&#xD;    l = t;&#xD;  }&#xD;&#xD;  // Reverse Initial Permutation&#xD;  utils.rip(r, l, out, off);&#xD;};&#xD;&#xD;DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {&#xD;  var l = rStart;&#xD;  var r = lStart;&#xD;&#xD;  // Apply f() x16 times&#xD;  for (var i = state.keys.length - 2; i &gt;= 0; i -= 2) {&#xD;    var keyL = state.keys[i];&#xD;    var keyR = state.keys[i + 1];&#xD;&#xD;    // f(r, k)&#xD;    utils.expand(l, state.tmp, 0);&#xD;&#xD;    keyL ^= state.tmp[0];&#xD;    keyR ^= state.tmp[1];&#xD;    var s = utils.substitute(keyL, keyR);&#xD;    var f = utils.permute(s);&#xD;&#xD;    var t = l;&#xD;    l = (r ^ f) &gt;&gt;&gt; 0;&#xD;    r = t;&#xD;  }&#xD;&#xD;  // Reverse Initial Permutation&#xD;  utils.rip(l, r, out, off);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 304 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var assert = __webpack_require__(32);&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;var des = __webpack_require__(81);&#xD;var Cipher = des.Cipher;&#xD;var DES = des.DES;&#xD;&#xD;function EDEState(type, key) {&#xD;  assert.equal(key.length, 24, &apos;Invalid key length&apos;);&#xD;&#xD;  var k1 = key.slice(0, 8);&#xD;  var k2 = key.slice(8, 16);&#xD;  var k3 = key.slice(16, 24);&#xD;&#xD;  if (type === &apos;encrypt&apos;) {&#xD;    this.ciphers = [&#xD;      DES.create({ type: &apos;encrypt&apos;, key: k1 }),&#xD;      DES.create({ type: &apos;decrypt&apos;, key: k2 }),&#xD;      DES.create({ type: &apos;encrypt&apos;, key: k3 })&#xD;    ];&#xD;  } else {&#xD;    this.ciphers = [&#xD;      DES.create({ type: &apos;decrypt&apos;, key: k3 }),&#xD;      DES.create({ type: &apos;encrypt&apos;, key: k2 }),&#xD;      DES.create({ type: &apos;decrypt&apos;, key: k1 })&#xD;    ];&#xD;  }&#xD;}&#xD;&#xD;function EDE(options) {&#xD;  Cipher.call(this, options);&#xD;&#xD;  var state = new EDEState(this.type, this.options.key);&#xD;  this._edeState = state;&#xD;}&#xD;inherits(EDE, Cipher);&#xD;&#xD;module.exports = EDE;&#xD;&#xD;EDE.create = function create(options) {&#xD;  return new EDE(options);&#xD;};&#xD;&#xD;EDE.prototype._update = function _update(inp, inOff, out, outOff) {&#xD;  var state = this._edeState;&#xD;&#xD;  state.ciphers[0]._update(inp, inOff, out, outOff);&#xD;  state.ciphers[1]._update(out, outOff, out, outOff);&#xD;  state.ciphers[2]._update(out, outOff, out, outOff);&#xD;};&#xD;&#xD;EDE.prototype._pad = DES.prototype._pad;&#xD;EDE.prototype._unpad = DES.prototype._unpad;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 305 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.readUInt32BE = function readUInt32BE(bytes, off) {&#xD;  var res =  (bytes[0 + off] &lt;&lt; 24) |&#xD;             (bytes[1 + off] &lt;&lt; 16) |&#xD;             (bytes[2 + off] &lt;&lt; 8) |&#xD;             bytes[3 + off];&#xD;  return res &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {&#xD;  bytes[0 + off] = value &gt;&gt;&gt; 24;&#xD;  bytes[1 + off] = (value &gt;&gt;&gt; 16) &amp; 0xff;&#xD;  bytes[2 + off] = (value &gt;&gt;&gt; 8) &amp; 0xff;&#xD;  bytes[3 + off] = value &amp; 0xff;&#xD;};&#xD;&#xD;exports.ip = function ip(inL, inR, out, off) {&#xD;  var outL = 0;&#xD;  var outR = 0;&#xD;&#xD;  for (var i = 6; i &gt;= 0; i -= 2) {&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inR &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inL &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;&#xD;  for (var i = 6; i &gt;= 0; i -= 2) {&#xD;    for (var j = 1; j &lt;= 25; j += 8) {&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inR &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;    for (var j = 1; j &lt;= 25; j += 8) {&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inL &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;&#xD;  out[off + 0] = outL &gt;&gt;&gt; 0;&#xD;  out[off + 1] = outR &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.rip = function rip(inL, inR, out, off) {&#xD;  var outL = 0;&#xD;  var outR = 0;&#xD;&#xD;  for (var i = 0; i &lt; 4; i++) {&#xD;    for (var j = 24; j &gt;= 0; j -= 8) {&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inR &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inL &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;  for (var i = 4; i &lt; 8; i++) {&#xD;    for (var j = 24; j &gt;= 0; j -= 8) {&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inR &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inL &gt;&gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;&#xD;  out[off + 0] = outL &gt;&gt;&gt; 0;&#xD;  out[off + 1] = outR &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.pc1 = function pc1(inL, inR, out, off) {&#xD;  var outL = 0;&#xD;  var outR = 0;&#xD;&#xD;  // 7, 15, 23, 31, 39, 47, 55, 63&#xD;  // 6, 14, 22, 30, 39, 47, 55, 63&#xD;  // 5, 13, 21, 29, 39, 47, 55, 63&#xD;  // 4, 12, 20, 28&#xD;  for (var i = 7; i &gt;= 5; i--) {&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inR &gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outL &lt;&lt;= 1;&#xD;      outL |= (inL &gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;  for (var j = 0; j &lt;= 24; j += 8) {&#xD;    outL &lt;&lt;= 1;&#xD;    outL |= (inR &gt;&gt; (j + i)) &amp; 1;&#xD;  }&#xD;&#xD;  // 1, 9, 17, 25, 33, 41, 49, 57&#xD;  // 2, 10, 18, 26, 34, 42, 50, 58&#xD;  // 3, 11, 19, 27, 35, 43, 51, 59&#xD;  // 36, 44, 52, 60&#xD;  for (var i = 1; i &lt;= 3; i++) {&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inR &gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;    for (var j = 0; j &lt;= 24; j += 8) {&#xD;      outR &lt;&lt;= 1;&#xD;      outR |= (inL &gt;&gt; (j + i)) &amp; 1;&#xD;    }&#xD;  }&#xD;  for (var j = 0; j &lt;= 24; j += 8) {&#xD;    outR &lt;&lt;= 1;&#xD;    outR |= (inL &gt;&gt; (j + i)) &amp; 1;&#xD;  }&#xD;&#xD;  out[off + 0] = outL &gt;&gt;&gt; 0;&#xD;  out[off + 1] = outR &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.r28shl = function r28shl(num, shift) {&#xD;  return ((num &lt;&lt; shift) &amp; 0xfffffff) | (num &gt;&gt;&gt; (28 - shift));&#xD;};&#xD;&#xD;var pc2table = [&#xD;  // inL =&gt; outL&#xD;  14, 11, 17, 4, 27, 23, 25, 0,&#xD;  13, 22, 7, 18, 5, 9, 16, 24,&#xD;  2, 20, 12, 21, 1, 8, 15, 26,&#xD;&#xD;  // inR =&gt; outR&#xD;  15, 4, 25, 19, 9, 1, 26, 16,&#xD;  5, 11, 23, 8, 12, 7, 17, 0,&#xD;  22, 3, 10, 14, 6, 20, 27, 24&#xD;];&#xD;&#xD;exports.pc2 = function pc2(inL, inR, out, off) {&#xD;  var outL = 0;&#xD;  var outR = 0;&#xD;&#xD;  var len = pc2table.length &gt;&gt;&gt; 1;&#xD;  for (var i = 0; i &lt; len; i++) {&#xD;    outL &lt;&lt;= 1;&#xD;    outL |= (inL &gt;&gt;&gt; pc2table[i]) &amp; 0x1;&#xD;  }&#xD;  for (var i = len; i &lt; pc2table.length; i++) {&#xD;    outR &lt;&lt;= 1;&#xD;    outR |= (inR &gt;&gt;&gt; pc2table[i]) &amp; 0x1;&#xD;  }&#xD;&#xD;  out[off + 0] = outL &gt;&gt;&gt; 0;&#xD;  out[off + 1] = outR &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.expand = function expand(r, out, off) {&#xD;  var outL = 0;&#xD;  var outR = 0;&#xD;&#xD;  outL = ((r &amp; 1) &lt;&lt; 5) | (r &gt;&gt;&gt; 27);&#xD;  for (var i = 23; i &gt;= 15; i -= 4) {&#xD;    outL &lt;&lt;= 6;&#xD;    outL |= (r &gt;&gt;&gt; i) &amp; 0x3f;&#xD;  }&#xD;  for (var i = 11; i &gt;= 3; i -= 4) {&#xD;    outR |= (r &gt;&gt;&gt; i) &amp; 0x3f;&#xD;    outR &lt;&lt;= 6;&#xD;  }&#xD;  outR |= ((r &amp; 0x1f) &lt;&lt; 1) | (r &gt;&gt;&gt; 31);&#xD;&#xD;  out[off + 0] = outL &gt;&gt;&gt; 0;&#xD;  out[off + 1] = outR &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;var sTable = [&#xD;  14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,&#xD;  3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,&#xD;  4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,&#xD;  15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,&#xD;&#xD;  15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,&#xD;  9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,&#xD;  0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,&#xD;  5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,&#xD;&#xD;  10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,&#xD;  1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,&#xD;  13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,&#xD;  11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,&#xD;&#xD;  7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,&#xD;  1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,&#xD;  10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,&#xD;  15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,&#xD;&#xD;  2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,&#xD;  8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,&#xD;  4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,&#xD;  15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,&#xD;&#xD;  12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,&#xD;  0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,&#xD;  9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,&#xD;  7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,&#xD;&#xD;  4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,&#xD;  3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,&#xD;  1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,&#xD;  10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,&#xD;&#xD;  13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,&#xD;  10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,&#xD;  7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,&#xD;  0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11&#xD;];&#xD;&#xD;exports.substitute = function substitute(inL, inR) {&#xD;  var out = 0;&#xD;  for (var i = 0; i &lt; 4; i++) {&#xD;    var b = (inL &gt;&gt;&gt; (18 - i * 6)) &amp; 0x3f;&#xD;    var sb = sTable[i * 0x40 + b];&#xD;&#xD;    out &lt;&lt;= 4;&#xD;    out |= sb;&#xD;  }&#xD;  for (var i = 0; i &lt; 4; i++) {&#xD;    var b = (inR &gt;&gt;&gt; (18 - i * 6)) &amp; 0x3f;&#xD;    var sb = sTable[4 * 0x40 + i * 0x40 + b];&#xD;&#xD;    out &lt;&lt;= 4;&#xD;    out |= sb;&#xD;  }&#xD;  return out &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;var permuteTable = [&#xD;  16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,&#xD;  30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7&#xD;];&#xD;&#xD;exports.permute = function permute(num) {&#xD;  var out = 0;&#xD;  for (var i = 0; i &lt; permuteTable.length; i++) {&#xD;    out &lt;&lt;= 1;&#xD;    out |= (num &gt;&gt;&gt; permuteTable[i]) &amp; 0x1;&#xD;  }&#xD;  return out &gt;&gt;&gt; 0;&#xD;};&#xD;&#xD;exports.padSplit = function padSplit(num, size, group) {&#xD;  var str = num.toString(2);&#xD;  while (str.length &lt; size)&#xD;    str = &apos;0&apos; + str;&#xD;&#xD;  var out = [];&#xD;  for (var i = 0; i &lt; size; i += group)&#xD;    out.push(str.slice(i, i + group));&#xD;  return out.join(&apos; &apos;);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 306 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var generatePrime = __webpack_require__(132)&#xD;var primes = __webpack_require__(308)&#xD;&#xD;var DH = __webpack_require__(307)&#xD;&#xD;function getDiffieHellman (mod) {&#xD;  var prime = new Buffer(primes[mod].prime, &apos;hex&apos;)&#xD;  var gen = new Buffer(primes[mod].gen, &apos;hex&apos;)&#xD;&#xD;  return new DH(prime, gen)&#xD;}&#xD;&#xD;var ENCODINGS = {&#xD;  &apos;binary&apos;: true, &apos;hex&apos;: true, &apos;base64&apos;: true&#xD;}&#xD;&#xD;function createDiffieHellman (prime, enc, generator, genc) {&#xD;  if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {&#xD;    return createDiffieHellman(prime, &apos;binary&apos;, enc, generator)&#xD;  }&#xD;&#xD;  enc = enc || &apos;binary&apos;&#xD;  genc = genc || &apos;binary&apos;&#xD;  generator = generator || new Buffer([2])&#xD;&#xD;  if (!Buffer.isBuffer(generator)) {&#xD;    generator = new Buffer(generator, genc)&#xD;  }&#xD;&#xD;  if (typeof prime === &apos;number&apos;) {&#xD;    return new DH(generatePrime(prime, generator), generator, true)&#xD;  }&#xD;&#xD;  if (!Buffer.isBuffer(prime)) {&#xD;    prime = new Buffer(prime, enc)&#xD;  }&#xD;&#xD;  return new DH(prime, generator, true)&#xD;}&#xD;&#xD;exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman&#xD;exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 307 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var BN = __webpack_require__(11);&#xD;var MillerRabin = __webpack_require__(140);&#xD;var millerRabin = new MillerRabin();&#xD;var TWENTYFOUR = new BN(24);&#xD;var ELEVEN = new BN(11);&#xD;var TEN = new BN(10);&#xD;var THREE = new BN(3);&#xD;var SEVEN = new BN(7);&#xD;var primes = __webpack_require__(132);&#xD;var randomBytes = __webpack_require__(49);&#xD;module.exports = DH;&#xD;&#xD;function setPublicKey(pub, enc) {&#xD;  enc = enc || &apos;utf8&apos;;&#xD;  if (!Buffer.isBuffer(pub)) {&#xD;    pub = new Buffer(pub, enc);&#xD;  }&#xD;  this._pub = new BN(pub);&#xD;  return this;&#xD;}&#xD;&#xD;function setPrivateKey(priv, enc) {&#xD;  enc = enc || &apos;utf8&apos;;&#xD;  if (!Buffer.isBuffer(priv)) {&#xD;    priv = new Buffer(priv, enc);&#xD;  }&#xD;  this._priv = new BN(priv);&#xD;  return this;&#xD;}&#xD;&#xD;var primeCache = {};&#xD;function checkPrime(prime, generator) {&#xD;  var gen = generator.toString(&apos;hex&apos;);&#xD;  var hex = [gen, prime.toString(16)].join(&apos;_&apos;);&#xD;  if (hex in primeCache) {&#xD;    return primeCache[hex];&#xD;  }&#xD;  var error = 0;&#xD;&#xD;  if (prime.isEven() ||&#xD;    !primes.simpleSieve ||&#xD;    !primes.fermatTest(prime) ||&#xD;    !millerRabin.test(prime)) {&#xD;    //not a prime so +1&#xD;    error += 1;&#xD;&#xD;    if (gen === &apos;02&apos; || gen === &apos;05&apos;) {&#xD;      // we&apos;d be able to check the generator&#xD;      // it would fail so +8&#xD;      error += 8;&#xD;    } else {&#xD;      //we wouldn&apos;t be able to test the generator&#xD;      // so +4&#xD;      error += 4;&#xD;    }&#xD;    primeCache[hex] = error;&#xD;    return error;&#xD;  }&#xD;  if (!millerRabin.test(prime.shrn(1))) {&#xD;    //not a safe prime&#xD;    error += 2;&#xD;  }&#xD;  var rem;&#xD;  switch (gen) {&#xD;    case &apos;02&apos;:&#xD;      if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {&#xD;        // unsuidable generator&#xD;        error += 8;&#xD;      }&#xD;      break;&#xD;    case &apos;05&apos;:&#xD;      rem = prime.mod(TEN);&#xD;      if (rem.cmp(THREE) &amp;&amp; rem.cmp(SEVEN)) {&#xD;        // prime mod 10 needs to equal 3 or 7&#xD;        error += 8;&#xD;      }&#xD;      break;&#xD;    default:&#xD;      error += 4;&#xD;  }&#xD;  primeCache[hex] = error;&#xD;  return error;&#xD;}&#xD;&#xD;function DH(prime, generator, malleable) {&#xD;  this.setGenerator(generator);&#xD;  this.__prime = new BN(prime);&#xD;  this._prime = BN.mont(this.__prime);&#xD;  this._primeLen = prime.length;&#xD;  this._pub = undefined;&#xD;  this._priv = undefined;&#xD;  this._primeCode = undefined;&#xD;  if (malleable) {&#xD;    this.setPublicKey = setPublicKey;&#xD;    this.setPrivateKey = setPrivateKey;&#xD;  } else {&#xD;    this._primeCode = 8;&#xD;  }&#xD;}&#xD;Object.defineProperty(DH.prototype, &apos;verifyError&apos;, {&#xD;  enumerable: true,&#xD;  get: function () {&#xD;    if (typeof this._primeCode !== &apos;number&apos;) {&#xD;      this._primeCode = checkPrime(this.__prime, this.__gen);&#xD;    }&#xD;    return this._primeCode;&#xD;  }&#xD;});&#xD;DH.prototype.generateKeys = function () {&#xD;  if (!this._priv) {&#xD;    this._priv = new BN(randomBytes(this._primeLen));&#xD;  }&#xD;  this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();&#xD;  return this.getPublicKey();&#xD;};&#xD;&#xD;DH.prototype.computeSecret = function (other) {&#xD;  other = new BN(other);&#xD;  other = other.toRed(this._prime);&#xD;  var secret = other.redPow(this._priv).fromRed();&#xD;  var out = new Buffer(secret.toArray());&#xD;  var prime = this.getPrime();&#xD;  if (out.length &lt; prime.length) {&#xD;    var front = new Buffer(prime.length - out.length);&#xD;    front.fill(0);&#xD;    out = Buffer.concat([front, out]);&#xD;  }&#xD;  return out;&#xD;};&#xD;&#xD;DH.prototype.getPublicKey = function getPublicKey(enc) {&#xD;  return formatReturnValue(this._pub, enc);&#xD;};&#xD;&#xD;DH.prototype.getPrivateKey = function getPrivateKey(enc) {&#xD;  return formatReturnValue(this._priv, enc);&#xD;};&#xD;&#xD;DH.prototype.getPrime = function (enc) {&#xD;  return formatReturnValue(this.__prime, enc);&#xD;};&#xD;&#xD;DH.prototype.getGenerator = function (enc) {&#xD;  return formatReturnValue(this._gen, enc);&#xD;};&#xD;&#xD;DH.prototype.setGenerator = function (gen, enc) {&#xD;  enc = enc || &apos;utf8&apos;;&#xD;  if (!Buffer.isBuffer(gen)) {&#xD;    gen = new Buffer(gen, enc);&#xD;  }&#xD;  this.__gen = gen;&#xD;  this._gen = new BN(gen);&#xD;  return this;&#xD;};&#xD;&#xD;function formatReturnValue(bn, enc) {&#xD;  var buf = new Buffer(bn.toArray());&#xD;  if (!enc) {&#xD;    return buf;&#xD;  } else {&#xD;    return buf.toString(enc);&#xD;  }&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 308 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"modp1": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"&#xD;	},&#xD;	"modp2": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"&#xD;	},&#xD;	"modp5": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"&#xD;	},&#xD;	"modp14": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"&#xD;	},&#xD;	"modp15": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"&#xD;	},&#xD;	"modp16": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"&#xD;	},&#xD;	"modp17": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"&#xD;	},&#xD;	"modp18": {&#xD;		"gen": "02",&#xD;		"prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"&#xD;	}&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 309 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = function(opts) {&#xD;  return new ElementClass(opts)&#xD;}&#xD;&#xD;function indexOf(arr, prop) {&#xD;  if (arr.indexOf) return arr.indexOf(prop)&#xD;  for (var i = 0, len = arr.length; i &lt; len; i++)&#xD;    if (arr[i] === prop) return i&#xD;  return -1&#xD;}&#xD;&#xD;function ElementClass(opts) {&#xD;  if (!(this instanceof ElementClass)) return new ElementClass(opts)&#xD;  var self = this&#xD;  if (!opts) opts = {}&#xD;&#xD;  // similar doing instanceof HTMLElement but works in IE8&#xD;  if (opts.nodeType) opts = {el: opts}&#xD;&#xD;  this.opts = opts&#xD;  this.el = opts.el || document.body&#xD;  if (typeof this.el !== &apos;object&apos;) this.el = document.querySelector(this.el)&#xD;}&#xD;&#xD;ElementClass.prototype.add = function(className) {&#xD;  var el = this.el&#xD;  if (!el) return&#xD;  if (el.className === "") return el.className = className&#xD;  var classes = el.className.split(&apos; &apos;)&#xD;  if (indexOf(classes, className) &gt; -1) return classes&#xD;  classes.push(className)&#xD;  el.className = classes.join(&apos; &apos;)&#xD;  return classes&#xD;}&#xD;&#xD;ElementClass.prototype.remove = function(className) {&#xD;  var el = this.el&#xD;  if (!el) return&#xD;  if (el.className === "") return&#xD;  var classes = el.className.split(&apos; &apos;)&#xD;  var idx = indexOf(classes, className)&#xD;  if (idx &gt; -1) classes.splice(idx, 1)&#xD;  el.className = classes.join(&apos; &apos;)&#xD;  return classes&#xD;}&#xD;&#xD;ElementClass.prototype.has = function(className) {&#xD;  var el = this.el&#xD;  if (!el) return&#xD;  var classes = el.className.split(&apos; &apos;)&#xD;  return indexOf(classes, className) &gt; -1&#xD;}&#xD;&#xD;ElementClass.prototype.toggle = function(className) {&#xD;  var el = this.el&#xD;  if (!el) return&#xD;  if (this.has(className)) this.remove(className)&#xD;  else this.add(className)&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 310 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var BN = __webpack_require__(11);&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var getNAF = utils.getNAF;&#xD;var getJSF = utils.getJSF;&#xD;var assert = utils.assert;&#xD;&#xD;function BaseCurve(type, conf) {&#xD;  this.type = type;&#xD;  this.p = new BN(conf.p, 16);&#xD;&#xD;  // Use Montgomery, when there is no fast reduction for the prime&#xD;  this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);&#xD;&#xD;  // Useful for many curves&#xD;  this.zero = new BN(0).toRed(this.red);&#xD;  this.one = new BN(1).toRed(this.red);&#xD;  this.two = new BN(2).toRed(this.red);&#xD;&#xD;  // Curve configuration, optional&#xD;  this.n = conf.n &amp;&amp; new BN(conf.n, 16);&#xD;  this.g = conf.g &amp;&amp; this.pointFromJSON(conf.g, conf.gRed);&#xD;&#xD;  // Temporary arrays&#xD;  this._wnafT1 = new Array(4);&#xD;  this._wnafT2 = new Array(4);&#xD;  this._wnafT3 = new Array(4);&#xD;  this._wnafT4 = new Array(4);&#xD;&#xD;  // Generalized Greg Maxwell&apos;s trick&#xD;  var adjustCount = this.n &amp;&amp; this.p.div(this.n);&#xD;  if (!adjustCount || adjustCount.cmpn(100) &gt; 0) {&#xD;    this.redN = null;&#xD;  } else {&#xD;    this._maxwellTrick = true;&#xD;    this.redN = this.n.toRed(this.red);&#xD;  }&#xD;}&#xD;module.exports = BaseCurve;&#xD;&#xD;BaseCurve.prototype.point = function point() {&#xD;  throw new Error(&apos;Not implemented&apos;);&#xD;};&#xD;&#xD;BaseCurve.prototype.validate = function validate() {&#xD;  throw new Error(&apos;Not implemented&apos;);&#xD;};&#xD;&#xD;BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {&#xD;  assert(p.precomputed);&#xD;  var doubles = p._getDoubles();&#xD;&#xD;  var naf = getNAF(k, 1);&#xD;  var I = (1 &lt;&lt; (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);&#xD;  I /= 3;&#xD;&#xD;  // Translate into more windowed form&#xD;  var repr = [];&#xD;  for (var j = 0; j &lt; naf.length; j += doubles.step) {&#xD;    var nafW = 0;&#xD;    for (var k = j + doubles.step - 1; k &gt;= j; k--)&#xD;      nafW = (nafW &lt;&lt; 1) + naf[k];&#xD;    repr.push(nafW);&#xD;  }&#xD;&#xD;  var a = this.jpoint(null, null, null);&#xD;  var b = this.jpoint(null, null, null);&#xD;  for (var i = I; i &gt; 0; i--) {&#xD;    for (var j = 0; j &lt; repr.length; j++) {&#xD;      var nafW = repr[j];&#xD;      if (nafW === i)&#xD;        b = b.mixedAdd(doubles.points[j]);&#xD;      else if (nafW === -i)&#xD;        b = b.mixedAdd(doubles.points[j].neg());&#xD;    }&#xD;    a = a.add(b);&#xD;  }&#xD;  return a.toP();&#xD;};&#xD;&#xD;BaseCurve.prototype._wnafMul = function _wnafMul(p, k) {&#xD;  var w = 4;&#xD;&#xD;  // Precompute window&#xD;  var nafPoints = p._getNAFPoints(w);&#xD;  w = nafPoints.wnd;&#xD;  var wnd = nafPoints.points;&#xD;&#xD;  // Get NAF form&#xD;  var naf = getNAF(k, w);&#xD;&#xD;  // Add `this`*(N+1) for every w-NAF index&#xD;  var acc = this.jpoint(null, null, null);&#xD;  for (var i = naf.length - 1; i &gt;= 0; i--) {&#xD;    // Count zeroes&#xD;    for (var k = 0; i &gt;= 0 &amp;&amp; naf[i] === 0; i--)&#xD;      k++;&#xD;    if (i &gt;= 0)&#xD;      k++;&#xD;    acc = acc.dblp(k);&#xD;&#xD;    if (i &lt; 0)&#xD;      break;&#xD;    var z = naf[i];&#xD;    assert(z !== 0);&#xD;    if (p.type === &apos;affine&apos;) {&#xD;      // J +- P&#xD;      if (z &gt; 0)&#xD;        acc = acc.mixedAdd(wnd[(z - 1) &gt;&gt; 1]);&#xD;      else&#xD;        acc = acc.mixedAdd(wnd[(-z - 1) &gt;&gt; 1].neg());&#xD;    } else {&#xD;      // J +- J&#xD;      if (z &gt; 0)&#xD;        acc = acc.add(wnd[(z - 1) &gt;&gt; 1]);&#xD;      else&#xD;        acc = acc.add(wnd[(-z - 1) &gt;&gt; 1].neg());&#xD;    }&#xD;  }&#xD;  return p.type === &apos;affine&apos; ? acc.toP() : acc;&#xD;};&#xD;&#xD;BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,&#xD;                                                       points,&#xD;                                                       coeffs,&#xD;                                                       len,&#xD;                                                       jacobianResult) {&#xD;  var wndWidth = this._wnafT1;&#xD;  var wnd = this._wnafT2;&#xD;  var naf = this._wnafT3;&#xD;&#xD;  // Fill all arrays&#xD;  var max = 0;&#xD;  for (var i = 0; i &lt; len; i++) {&#xD;    var p = points[i];&#xD;    var nafPoints = p._getNAFPoints(defW);&#xD;    wndWidth[i] = nafPoints.wnd;&#xD;    wnd[i] = nafPoints.points;&#xD;  }&#xD;&#xD;  // Comb small window NAFs&#xD;  for (var i = len - 1; i &gt;= 1; i -= 2) {&#xD;    var a = i - 1;&#xD;    var b = i;&#xD;    if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {&#xD;      naf[a] = getNAF(coeffs[a], wndWidth[a]);&#xD;      naf[b] = getNAF(coeffs[b], wndWidth[b]);&#xD;      max = Math.max(naf[a].length, max);&#xD;      max = Math.max(naf[b].length, max);&#xD;      continue;&#xD;    }&#xD;&#xD;    var comb = [&#xD;      points[a], /* 1 */&#xD;      null, /* 3 */&#xD;      null, /* 5 */&#xD;      points[b] /* 7 */&#xD;    ];&#xD;&#xD;    // Try to avoid Projective points, if possible&#xD;    if (points[a].y.cmp(points[b].y) === 0) {&#xD;      comb[1] = points[a].add(points[b]);&#xD;      comb[2] = points[a].toJ().mixedAdd(points[b].neg());&#xD;    } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {&#xD;      comb[1] = points[a].toJ().mixedAdd(points[b]);&#xD;      comb[2] = points[a].add(points[b].neg());&#xD;    } else {&#xD;      comb[1] = points[a].toJ().mixedAdd(points[b]);&#xD;      comb[2] = points[a].toJ().mixedAdd(points[b].neg());&#xD;    }&#xD;&#xD;    var index = [&#xD;      -3, /* -1 -1 */&#xD;      -1, /* -1 0 */&#xD;      -5, /* -1 1 */&#xD;      -7, /* 0 -1 */&#xD;      0, /* 0 0 */&#xD;      7, /* 0 1 */&#xD;      5, /* 1 -1 */&#xD;      1, /* 1 0 */&#xD;      3  /* 1 1 */&#xD;    ];&#xD;&#xD;    var jsf = getJSF(coeffs[a], coeffs[b]);&#xD;    max = Math.max(jsf[0].length, max);&#xD;    naf[a] = new Array(max);&#xD;    naf[b] = new Array(max);&#xD;    for (var j = 0; j &lt; max; j++) {&#xD;      var ja = jsf[0][j] | 0;&#xD;      var jb = jsf[1][j] | 0;&#xD;&#xD;      naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];&#xD;      naf[b][j] = 0;&#xD;      wnd[a] = comb;&#xD;    }&#xD;  }&#xD;&#xD;  var acc = this.jpoint(null, null, null);&#xD;  var tmp = this._wnafT4;&#xD;  for (var i = max; i &gt;= 0; i--) {&#xD;    var k = 0;&#xD;&#xD;    while (i &gt;= 0) {&#xD;      var zero = true;&#xD;      for (var j = 0; j &lt; len; j++) {&#xD;        tmp[j] = naf[j][i] | 0;&#xD;        if (tmp[j] !== 0)&#xD;          zero = false;&#xD;      }&#xD;      if (!zero)&#xD;        break;&#xD;      k++;&#xD;      i--;&#xD;    }&#xD;    if (i &gt;= 0)&#xD;      k++;&#xD;    acc = acc.dblp(k);&#xD;    if (i &lt; 0)&#xD;      break;&#xD;&#xD;    for (var j = 0; j &lt; len; j++) {&#xD;      var z = tmp[j];&#xD;      var p;&#xD;      if (z === 0)&#xD;        continue;&#xD;      else if (z &gt; 0)&#xD;        p = wnd[j][(z - 1) &gt;&gt; 1];&#xD;      else if (z &lt; 0)&#xD;        p = wnd[j][(-z - 1) &gt;&gt; 1].neg();&#xD;&#xD;      if (p.type === &apos;affine&apos;)&#xD;        acc = acc.mixedAdd(p);&#xD;      else&#xD;        acc = acc.add(p);&#xD;    }&#xD;  }&#xD;  // Zeroify references&#xD;  for (var i = 0; i &lt; len; i++)&#xD;    wnd[i] = null;&#xD;&#xD;  if (jacobianResult)&#xD;    return acc;&#xD;  else&#xD;    return acc.toP();&#xD;};&#xD;&#xD;function BasePoint(curve, type) {&#xD;  this.curve = curve;&#xD;  this.type = type;&#xD;  this.precomputed = null;&#xD;}&#xD;BaseCurve.BasePoint = BasePoint;&#xD;&#xD;BasePoint.prototype.eq = function eq(/*other*/) {&#xD;  throw new Error(&apos;Not implemented&apos;);&#xD;};&#xD;&#xD;BasePoint.prototype.validate = function validate() {&#xD;  return this.curve.validate(this);&#xD;};&#xD;&#xD;BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {&#xD;  bytes = utils.toArray(bytes, enc);&#xD;&#xD;  var len = this.p.byteLength();&#xD;&#xD;  // uncompressed, hybrid-odd, hybrid-even&#xD;  if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &amp;&amp;&#xD;      bytes.length - 1 === 2 * len) {&#xD;    if (bytes[0] === 0x06)&#xD;      assert(bytes[bytes.length - 1] % 2 === 0);&#xD;    else if (bytes[0] === 0x07)&#xD;      assert(bytes[bytes.length - 1] % 2 === 1);&#xD;&#xD;    var res =  this.point(bytes.slice(1, 1 + len),&#xD;                          bytes.slice(1 + len, 1 + 2 * len));&#xD;&#xD;    return res;&#xD;  } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &amp;&amp;&#xD;              bytes.length - 1 === len) {&#xD;    return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);&#xD;  }&#xD;  throw new Error(&apos;Unknown point format&apos;);&#xD;};&#xD;&#xD;BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {&#xD;  return this.encode(enc, true);&#xD;};&#xD;&#xD;BasePoint.prototype._encode = function _encode(compact) {&#xD;  var len = this.curve.p.byteLength();&#xD;  var x = this.getX().toArray(&apos;be&apos;, len);&#xD;&#xD;  if (compact)&#xD;    return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);&#xD;&#xD;  return [ 0x04 ].concat(x, this.getY().toArray(&apos;be&apos;, len)) ;&#xD;};&#xD;&#xD;BasePoint.prototype.encode = function encode(enc, compact) {&#xD;  return utils.encode(this._encode(compact), enc);&#xD;};&#xD;&#xD;BasePoint.prototype.precompute = function precompute(power) {&#xD;  if (this.precomputed)&#xD;    return this;&#xD;&#xD;  var precomputed = {&#xD;    doubles: null,&#xD;    naf: null,&#xD;    beta: null&#xD;  };&#xD;  precomputed.naf = this._getNAFPoints(8);&#xD;  precomputed.doubles = this._getDoubles(4, power);&#xD;  precomputed.beta = this._getBeta();&#xD;  this.precomputed = precomputed;&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;BasePoint.prototype._hasDoubles = function _hasDoubles(k) {&#xD;  if (!this.precomputed)&#xD;    return false;&#xD;&#xD;  var doubles = this.precomputed.doubles;&#xD;  if (!doubles)&#xD;    return false;&#xD;&#xD;  return doubles.points.length &gt;= Math.ceil((k.bitLength() + 1) / doubles.step);&#xD;};&#xD;&#xD;BasePoint.prototype._getDoubles = function _getDoubles(step, power) {&#xD;  if (this.precomputed &amp;&amp; this.precomputed.doubles)&#xD;    return this.precomputed.doubles;&#xD;&#xD;  var doubles = [ this ];&#xD;  var acc = this;&#xD;  for (var i = 0; i &lt; power; i += step) {&#xD;    for (var j = 0; j &lt; step; j++)&#xD;      acc = acc.dbl();&#xD;    doubles.push(acc);&#xD;  }&#xD;  return {&#xD;    step: step,&#xD;    points: doubles&#xD;  };&#xD;};&#xD;&#xD;BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {&#xD;  if (this.precomputed &amp;&amp; this.precomputed.naf)&#xD;    return this.precomputed.naf;&#xD;&#xD;  var res = [ this ];&#xD;  var max = (1 &lt;&lt; wnd) - 1;&#xD;  var dbl = max === 1 ? null : this.dbl();&#xD;  for (var i = 1; i &lt; max; i++)&#xD;    res[i] = res[i - 1].add(dbl);&#xD;  return {&#xD;    wnd: wnd,&#xD;    points: res&#xD;  };&#xD;};&#xD;&#xD;BasePoint.prototype._getBeta = function _getBeta() {&#xD;  return null;&#xD;};&#xD;&#xD;BasePoint.prototype.dblp = function dblp(k) {&#xD;  var r = this;&#xD;  for (var i = 0; i &lt; k; i++)&#xD;    r = r.dbl();&#xD;  return r;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 311 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var curve = __webpack_require__(59);&#xD;var elliptic = __webpack_require__(19);&#xD;var BN = __webpack_require__(11);&#xD;var inherits = __webpack_require__(5);&#xD;var Base = curve.base;&#xD;&#xD;var assert = elliptic.utils.assert;&#xD;&#xD;function EdwardsCurve(conf) {&#xD;  // NOTE: Important as we are creating point in Base.call()&#xD;  this.twisted = (conf.a | 0) !== 1;&#xD;  this.mOneA = this.twisted &amp;&amp; (conf.a | 0) === -1;&#xD;  this.extended = this.mOneA;&#xD;&#xD;  Base.call(this, &apos;edwards&apos;, conf);&#xD;&#xD;  this.a = new BN(conf.a, 16).umod(this.red.m);&#xD;  this.a = this.a.toRed(this.red);&#xD;  this.c = new BN(conf.c, 16).toRed(this.red);&#xD;  this.c2 = this.c.redSqr();&#xD;  this.d = new BN(conf.d, 16).toRed(this.red);&#xD;  this.dd = this.d.redAdd(this.d);&#xD;&#xD;  assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);&#xD;  this.oneC = (conf.c | 0) === 1;&#xD;}&#xD;inherits(EdwardsCurve, Base);&#xD;module.exports = EdwardsCurve;&#xD;&#xD;EdwardsCurve.prototype._mulA = function _mulA(num) {&#xD;  if (this.mOneA)&#xD;    return num.redNeg();&#xD;  else&#xD;    return this.a.redMul(num);&#xD;};&#xD;&#xD;EdwardsCurve.prototype._mulC = function _mulC(num) {&#xD;  if (this.oneC)&#xD;    return num;&#xD;  else&#xD;    return this.c.redMul(num);&#xD;};&#xD;&#xD;// Just for compatibility with Short curve&#xD;EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {&#xD;  return this.point(x, y, z, t);&#xD;};&#xD;&#xD;EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {&#xD;  x = new BN(x, 16);&#xD;  if (!x.red)&#xD;    x = x.toRed(this.red);&#xD;&#xD;  var x2 = x.redSqr();&#xD;  var rhs = this.c2.redSub(this.a.redMul(x2));&#xD;  var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));&#xD;&#xD;  var y2 = rhs.redMul(lhs.redInvm());&#xD;  var y = y2.redSqrt();&#xD;  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)&#xD;    throw new Error(&apos;invalid point&apos;);&#xD;&#xD;  var isOdd = y.fromRed().isOdd();&#xD;  if (odd &amp;&amp; !isOdd || !odd &amp;&amp; isOdd)&#xD;    y = y.redNeg();&#xD;&#xD;  return this.point(x, y);&#xD;};&#xD;&#xD;EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {&#xD;  y = new BN(y, 16);&#xD;  if (!y.red)&#xD;    y = y.toRed(this.red);&#xD;&#xD;  // x^2 = (y^2 - 1) / (d y^2 + 1)&#xD;  var y2 = y.redSqr();&#xD;  var lhs = y2.redSub(this.one);&#xD;  var rhs = y2.redMul(this.d).redAdd(this.one);&#xD;  var x2 = lhs.redMul(rhs.redInvm());&#xD;&#xD;  if (x2.cmp(this.zero) === 0) {&#xD;    if (odd)&#xD;      throw new Error(&apos;invalid point&apos;);&#xD;    else&#xD;      return this.point(this.zero, y);&#xD;  }&#xD;&#xD;  var x = x2.redSqrt();&#xD;  if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)&#xD;    throw new Error(&apos;invalid point&apos;);&#xD;&#xD;  if (x.isOdd() !== odd)&#xD;    x = x.redNeg();&#xD;&#xD;  return this.point(x, y);&#xD;};&#xD;&#xD;EdwardsCurve.prototype.validate = function validate(point) {&#xD;  if (point.isInfinity())&#xD;    return true;&#xD;&#xD;  // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)&#xD;  point.normalize();&#xD;&#xD;  var x2 = point.x.redSqr();&#xD;  var y2 = point.y.redSqr();&#xD;  var lhs = x2.redMul(this.a).redAdd(y2);&#xD;  var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));&#xD;&#xD;  return lhs.cmp(rhs) === 0;&#xD;};&#xD;&#xD;function Point(curve, x, y, z, t) {&#xD;  Base.BasePoint.call(this, curve, &apos;projective&apos;);&#xD;  if (x === null &amp;&amp; y === null &amp;&amp; z === null) {&#xD;    this.x = this.curve.zero;&#xD;    this.y = this.curve.one;&#xD;    this.z = this.curve.one;&#xD;    this.t = this.curve.zero;&#xD;    this.zOne = true;&#xD;  } else {&#xD;    this.x = new BN(x, 16);&#xD;    this.y = new BN(y, 16);&#xD;    this.z = z ? new BN(z, 16) : this.curve.one;&#xD;    this.t = t &amp;&amp; new BN(t, 16);&#xD;    if (!this.x.red)&#xD;      this.x = this.x.toRed(this.curve.red);&#xD;    if (!this.y.red)&#xD;      this.y = this.y.toRed(this.curve.red);&#xD;    if (!this.z.red)&#xD;      this.z = this.z.toRed(this.curve.red);&#xD;    if (this.t &amp;&amp; !this.t.red)&#xD;      this.t = this.t.toRed(this.curve.red);&#xD;    this.zOne = this.z === this.curve.one;&#xD;&#xD;    // Use extended coordinates&#xD;    if (this.curve.extended &amp;&amp; !this.t) {&#xD;      this.t = this.x.redMul(this.y);&#xD;      if (!this.zOne)&#xD;        this.t = this.t.redMul(this.z.redInvm());&#xD;    }&#xD;  }&#xD;}&#xD;inherits(Point, Base.BasePoint);&#xD;&#xD;EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {&#xD;  return Point.fromJSON(this, obj);&#xD;};&#xD;&#xD;EdwardsCurve.prototype.point = function point(x, y, z, t) {&#xD;  return new Point(this, x, y, z, t);&#xD;};&#xD;&#xD;Point.fromJSON = function fromJSON(curve, obj) {&#xD;  return new Point(curve, obj[0], obj[1], obj[2]);&#xD;};&#xD;&#xD;Point.prototype.inspect = function inspect() {&#xD;  if (this.isInfinity())&#xD;    return &apos;&lt;EC Point Infinity&gt;&apos;;&#xD;  return &apos;&lt;EC Point x: &apos; + this.x.fromRed().toString(16, 2) +&#xD;      &apos; y: &apos; + this.y.fromRed().toString(16, 2) +&#xD;      &apos; z: &apos; + this.z.fromRed().toString(16, 2) + &apos;&gt;&apos;;&#xD;};&#xD;&#xD;Point.prototype.isInfinity = function isInfinity() {&#xD;  // XXX This code assumes that zero is always zero in red&#xD;  return this.x.cmpn(0) === 0 &amp;&amp;&#xD;         this.y.cmp(this.z) === 0;&#xD;};&#xD;&#xD;Point.prototype._extDbl = function _extDbl() {&#xD;  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html&#xD;  //     #doubling-dbl-2008-hwcd&#xD;  // 4M + 4S&#xD;&#xD;  // A = X1^2&#xD;  var a = this.x.redSqr();&#xD;  // B = Y1^2&#xD;  var b = this.y.redSqr();&#xD;  // C = 2 * Z1^2&#xD;  var c = this.z.redSqr();&#xD;  c = c.redIAdd(c);&#xD;  // D = a * A&#xD;  var d = this.curve._mulA(a);&#xD;  // E = (X1 + Y1)^2 - A - B&#xD;  var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);&#xD;  // G = D + B&#xD;  var g = d.redAdd(b);&#xD;  // F = G - C&#xD;  var f = g.redSub(c);&#xD;  // H = D - B&#xD;  var h = d.redSub(b);&#xD;  // X3 = E * F&#xD;  var nx = e.redMul(f);&#xD;  // Y3 = G * H&#xD;  var ny = g.redMul(h);&#xD;  // T3 = E * H&#xD;  var nt = e.redMul(h);&#xD;  // Z3 = F * G&#xD;  var nz = f.redMul(g);&#xD;  return this.curve.point(nx, ny, nz, nt);&#xD;};&#xD;&#xD;Point.prototype._projDbl = function _projDbl() {&#xD;  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html&#xD;  //     #doubling-dbl-2008-bbjlp&#xD;  //     #doubling-dbl-2007-bl&#xD;  // and others&#xD;  // Generally 3M + 4S or 2M + 4S&#xD;&#xD;  // B = (X1 + Y1)^2&#xD;  var b = this.x.redAdd(this.y).redSqr();&#xD;  // C = X1^2&#xD;  var c = this.x.redSqr();&#xD;  // D = Y1^2&#xD;  var d = this.y.redSqr();&#xD;&#xD;  var nx;&#xD;  var ny;&#xD;  var nz;&#xD;  if (this.curve.twisted) {&#xD;    // E = a * C&#xD;    var e = this.curve._mulA(c);&#xD;    // F = E + D&#xD;    var f = e.redAdd(d);&#xD;    if (this.zOne) {&#xD;      // X3 = (B - C - D) * (F - 2)&#xD;      nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));&#xD;      // Y3 = F * (E - D)&#xD;      ny = f.redMul(e.redSub(d));&#xD;      // Z3 = F^2 - 2 * F&#xD;      nz = f.redSqr().redSub(f).redSub(f);&#xD;    } else {&#xD;      // H = Z1^2&#xD;      var h = this.z.redSqr();&#xD;      // J = F - 2 * H&#xD;      var j = f.redSub(h).redISub(h);&#xD;      // X3 = (B-C-D)*J&#xD;      nx = b.redSub(c).redISub(d).redMul(j);&#xD;      // Y3 = F * (E - D)&#xD;      ny = f.redMul(e.redSub(d));&#xD;      // Z3 = F * J&#xD;      nz = f.redMul(j);&#xD;    }&#xD;  } else {&#xD;    // E = C + D&#xD;    var e = c.redAdd(d);&#xD;    // H = (c * Z1)^2&#xD;    var h = this.curve._mulC(this.c.redMul(this.z)).redSqr();&#xD;    // J = E - 2 * H&#xD;    var j = e.redSub(h).redSub(h);&#xD;    // X3 = c * (B - E) * J&#xD;    nx = this.curve._mulC(b.redISub(e)).redMul(j);&#xD;    // Y3 = c * E * (C - D)&#xD;    ny = this.curve._mulC(e).redMul(c.redISub(d));&#xD;    // Z3 = E * J&#xD;    nz = e.redMul(j);&#xD;  }&#xD;  return this.curve.point(nx, ny, nz);&#xD;};&#xD;&#xD;Point.prototype.dbl = function dbl() {&#xD;  if (this.isInfinity())&#xD;    return this;&#xD;&#xD;  // Double in extended coordinates&#xD;  if (this.curve.extended)&#xD;    return this._extDbl();&#xD;  else&#xD;    return this._projDbl();&#xD;};&#xD;&#xD;Point.prototype._extAdd = function _extAdd(p) {&#xD;  // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html&#xD;  //     #addition-add-2008-hwcd-3&#xD;  // 8M&#xD;&#xD;  // A = (Y1 - X1) * (Y2 - X2)&#xD;  var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));&#xD;  // B = (Y1 + X1) * (Y2 + X2)&#xD;  var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));&#xD;  // C = T1 * k * T2&#xD;  var c = this.t.redMul(this.curve.dd).redMul(p.t);&#xD;  // D = Z1 * 2 * Z2&#xD;  var d = this.z.redMul(p.z.redAdd(p.z));&#xD;  // E = B - A&#xD;  var e = b.redSub(a);&#xD;  // F = D - C&#xD;  var f = d.redSub(c);&#xD;  // G = D + C&#xD;  var g = d.redAdd(c);&#xD;  // H = B + A&#xD;  var h = b.redAdd(a);&#xD;  // X3 = E * F&#xD;  var nx = e.redMul(f);&#xD;  // Y3 = G * H&#xD;  var ny = g.redMul(h);&#xD;  // T3 = E * H&#xD;  var nt = e.redMul(h);&#xD;  // Z3 = F * G&#xD;  var nz = f.redMul(g);&#xD;  return this.curve.point(nx, ny, nz, nt);&#xD;};&#xD;&#xD;Point.prototype._projAdd = function _projAdd(p) {&#xD;  // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html&#xD;  //     #addition-add-2008-bbjlp&#xD;  //     #addition-add-2007-bl&#xD;  // 10M + 1S&#xD;&#xD;  // A = Z1 * Z2&#xD;  var a = this.z.redMul(p.z);&#xD;  // B = A^2&#xD;  var b = a.redSqr();&#xD;  // C = X1 * X2&#xD;  var c = this.x.redMul(p.x);&#xD;  // D = Y1 * Y2&#xD;  var d = this.y.redMul(p.y);&#xD;  // E = d * C * D&#xD;  var e = this.curve.d.redMul(c).redMul(d);&#xD;  // F = B - E&#xD;  var f = b.redSub(e);&#xD;  // G = B + E&#xD;  var g = b.redAdd(e);&#xD;  // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)&#xD;  var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);&#xD;  var nx = a.redMul(f).redMul(tmp);&#xD;  var ny;&#xD;  var nz;&#xD;  if (this.curve.twisted) {&#xD;    // Y3 = A * G * (D - a * C)&#xD;    ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));&#xD;    // Z3 = F * G&#xD;    nz = f.redMul(g);&#xD;  } else {&#xD;    // Y3 = A * G * (D - C)&#xD;    ny = a.redMul(g).redMul(d.redSub(c));&#xD;    // Z3 = c * F * G&#xD;    nz = this.curve._mulC(f).redMul(g);&#xD;  }&#xD;  return this.curve.point(nx, ny, nz);&#xD;};&#xD;&#xD;Point.prototype.add = function add(p) {&#xD;  if (this.isInfinity())&#xD;    return p;&#xD;  if (p.isInfinity())&#xD;    return this;&#xD;&#xD;  if (this.curve.extended)&#xD;    return this._extAdd(p);&#xD;  else&#xD;    return this._projAdd(p);&#xD;};&#xD;&#xD;Point.prototype.mul = function mul(k) {&#xD;  if (this._hasDoubles(k))&#xD;    return this.curve._fixedNafMul(this, k);&#xD;  else&#xD;    return this.curve._wnafMul(this, k);&#xD;};&#xD;&#xD;Point.prototype.mulAdd = function mulAdd(k1, p, k2) {&#xD;  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);&#xD;};&#xD;&#xD;Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) {&#xD;  return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);&#xD;};&#xD;&#xD;Point.prototype.normalize = function normalize() {&#xD;  if (this.zOne)&#xD;    return this;&#xD;&#xD;  // Normalize coordinates&#xD;  var zi = this.z.redInvm();&#xD;  this.x = this.x.redMul(zi);&#xD;  this.y = this.y.redMul(zi);&#xD;  if (this.t)&#xD;    this.t = this.t.redMul(zi);&#xD;  this.z = this.curve.one;&#xD;  this.zOne = true;&#xD;  return this;&#xD;};&#xD;&#xD;Point.prototype.neg = function neg() {&#xD;  return this.curve.point(this.x.redNeg(),&#xD;                          this.y,&#xD;                          this.z,&#xD;                          this.t &amp;&amp; this.t.redNeg());&#xD;};&#xD;&#xD;Point.prototype.getX = function getX() {&#xD;  this.normalize();&#xD;  return this.x.fromRed();&#xD;};&#xD;&#xD;Point.prototype.getY = function getY() {&#xD;  this.normalize();&#xD;  return this.y.fromRed();&#xD;};&#xD;&#xD;Point.prototype.eq = function eq(other) {&#xD;  return this === other ||&#xD;         this.getX().cmp(other.getX()) === 0 &amp;&amp;&#xD;         this.getY().cmp(other.getY()) === 0;&#xD;};&#xD;&#xD;Point.prototype.eqXToP = function eqXToP(x) {&#xD;  var rx = x.toRed(this.curve.red).redMul(this.z);&#xD;  if (this.x.cmp(rx) === 0)&#xD;    return true;&#xD;&#xD;  var xc = x.clone();&#xD;  var t = this.curve.redN.redMul(this.z);&#xD;  for (;;) {&#xD;    xc.iadd(this.curve.n);&#xD;    if (xc.cmp(this.curve.p) &gt;= 0)&#xD;      return false;&#xD;&#xD;    rx.redIAdd(t);&#xD;    if (this.x.cmp(rx) === 0)&#xD;      return true;&#xD;  }&#xD;  return false;&#xD;};&#xD;&#xD;// Compatibility with BaseCurve&#xD;Point.prototype.toP = Point.prototype.normalize;&#xD;Point.prototype.mixedAdd = Point.prototype.add;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 312 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var curve = __webpack_require__(59);&#xD;var BN = __webpack_require__(11);&#xD;var inherits = __webpack_require__(5);&#xD;var Base = curve.base;&#xD;&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;&#xD;function MontCurve(conf) {&#xD;  Base.call(this, &apos;mont&apos;, conf);&#xD;&#xD;  this.a = new BN(conf.a, 16).toRed(this.red);&#xD;  this.b = new BN(conf.b, 16).toRed(this.red);&#xD;  this.i4 = new BN(4).toRed(this.red).redInvm();&#xD;  this.two = new BN(2).toRed(this.red);&#xD;  this.a24 = this.i4.redMul(this.a.redAdd(this.two));&#xD;}&#xD;inherits(MontCurve, Base);&#xD;module.exports = MontCurve;&#xD;&#xD;MontCurve.prototype.validate = function validate(point) {&#xD;  var x = point.normalize().x;&#xD;  var x2 = x.redSqr();&#xD;  var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);&#xD;  var y = rhs.redSqrt();&#xD;&#xD;  return y.redSqr().cmp(rhs) === 0;&#xD;};&#xD;&#xD;function Point(curve, x, z) {&#xD;  Base.BasePoint.call(this, curve, &apos;projective&apos;);&#xD;  if (x === null &amp;&amp; z === null) {&#xD;    this.x = this.curve.one;&#xD;    this.z = this.curve.zero;&#xD;  } else {&#xD;    this.x = new BN(x, 16);&#xD;    this.z = new BN(z, 16);&#xD;    if (!this.x.red)&#xD;      this.x = this.x.toRed(this.curve.red);&#xD;    if (!this.z.red)&#xD;      this.z = this.z.toRed(this.curve.red);&#xD;  }&#xD;}&#xD;inherits(Point, Base.BasePoint);&#xD;&#xD;MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {&#xD;  return this.point(utils.toArray(bytes, enc), 1);&#xD;};&#xD;&#xD;MontCurve.prototype.point = function point(x, z) {&#xD;  return new Point(this, x, z);&#xD;};&#xD;&#xD;MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {&#xD;  return Point.fromJSON(this, obj);&#xD;};&#xD;&#xD;Point.prototype.precompute = function precompute() {&#xD;  // No-op&#xD;};&#xD;&#xD;Point.prototype._encode = function _encode() {&#xD;  return this.getX().toArray(&apos;be&apos;, this.curve.p.byteLength());&#xD;};&#xD;&#xD;Point.fromJSON = function fromJSON(curve, obj) {&#xD;  return new Point(curve, obj[0], obj[1] || curve.one);&#xD;};&#xD;&#xD;Point.prototype.inspect = function inspect() {&#xD;  if (this.isInfinity())&#xD;    return &apos;&lt;EC Point Infinity&gt;&apos;;&#xD;  return &apos;&lt;EC Point x: &apos; + this.x.fromRed().toString(16, 2) +&#xD;      &apos; z: &apos; + this.z.fromRed().toString(16, 2) + &apos;&gt;&apos;;&#xD;};&#xD;&#xD;Point.prototype.isInfinity = function isInfinity() {&#xD;  // XXX This code assumes that zero is always zero in red&#xD;  return this.z.cmpn(0) === 0;&#xD;};&#xD;&#xD;Point.prototype.dbl = function dbl() {&#xD;  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3&#xD;  // 2M + 2S + 4A&#xD;&#xD;  // A = X1 + Z1&#xD;  var a = this.x.redAdd(this.z);&#xD;  // AA = A^2&#xD;  var aa = a.redSqr();&#xD;  // B = X1 - Z1&#xD;  var b = this.x.redSub(this.z);&#xD;  // BB = B^2&#xD;  var bb = b.redSqr();&#xD;  // C = AA - BB&#xD;  var c = aa.redSub(bb);&#xD;  // X3 = AA * BB&#xD;  var nx = aa.redMul(bb);&#xD;  // Z3 = C * (BB + A24 * C)&#xD;  var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));&#xD;  return this.curve.point(nx, nz);&#xD;};&#xD;&#xD;Point.prototype.add = function add() {&#xD;  throw new Error(&apos;Not supported on Montgomery curve&apos;);&#xD;};&#xD;&#xD;Point.prototype.diffAdd = function diffAdd(p, diff) {&#xD;  // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3&#xD;  // 4M + 2S + 6A&#xD;&#xD;  // A = X2 + Z2&#xD;  var a = this.x.redAdd(this.z);&#xD;  // B = X2 - Z2&#xD;  var b = this.x.redSub(this.z);&#xD;  // C = X3 + Z3&#xD;  var c = p.x.redAdd(p.z);&#xD;  // D = X3 - Z3&#xD;  var d = p.x.redSub(p.z);&#xD;  // DA = D * A&#xD;  var da = d.redMul(a);&#xD;  // CB = C * B&#xD;  var cb = c.redMul(b);&#xD;  // X5 = Z1 * (DA + CB)^2&#xD;  var nx = diff.z.redMul(da.redAdd(cb).redSqr());&#xD;  // Z5 = X1 * (DA - CB)^2&#xD;  var nz = diff.x.redMul(da.redISub(cb).redSqr());&#xD;  return this.curve.point(nx, nz);&#xD;};&#xD;&#xD;Point.prototype.mul = function mul(k) {&#xD;  var t = k.clone();&#xD;  var a = this; // (N / 2) * Q + Q&#xD;  var b = this.curve.point(null, null); // (N / 2) * Q&#xD;  var c = this; // Q&#xD;&#xD;  for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))&#xD;    bits.push(t.andln(1));&#xD;&#xD;  for (var i = bits.length - 1; i &gt;= 0; i--) {&#xD;    if (bits[i] === 0) {&#xD;      // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q&#xD;      a = a.diffAdd(b, c);&#xD;      // N * Q = 2 * ((N / 2) * Q + Q))&#xD;      b = b.dbl();&#xD;    } else {&#xD;      // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)&#xD;      b = a.diffAdd(b, c);&#xD;      // N * Q + Q = 2 * ((N / 2) * Q + Q)&#xD;      a = a.dbl();&#xD;    }&#xD;  }&#xD;  return b;&#xD;};&#xD;&#xD;Point.prototype.mulAdd = function mulAdd() {&#xD;  throw new Error(&apos;Not supported on Montgomery curve&apos;);&#xD;};&#xD;&#xD;Point.prototype.jumlAdd = function jumlAdd() {&#xD;  throw new Error(&apos;Not supported on Montgomery curve&apos;);&#xD;};&#xD;&#xD;Point.prototype.eq = function eq(other) {&#xD;  return this.getX().cmp(other.getX()) === 0;&#xD;};&#xD;&#xD;Point.prototype.normalize = function normalize() {&#xD;  this.x = this.x.redMul(this.z.redInvm());&#xD;  this.z = this.curve.one;&#xD;  return this;&#xD;};&#xD;&#xD;Point.prototype.getX = function getX() {&#xD;  // Normalize coordinates&#xD;  this.normalize();&#xD;&#xD;  return this.x.fromRed();&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 313 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var curve = __webpack_require__(59);&#xD;var elliptic = __webpack_require__(19);&#xD;var BN = __webpack_require__(11);&#xD;var inherits = __webpack_require__(5);&#xD;var Base = curve.base;&#xD;&#xD;var assert = elliptic.utils.assert;&#xD;&#xD;function ShortCurve(conf) {&#xD;  Base.call(this, &apos;short&apos;, conf);&#xD;&#xD;  this.a = new BN(conf.a, 16).toRed(this.red);&#xD;  this.b = new BN(conf.b, 16).toRed(this.red);&#xD;  this.tinv = this.two.redInvm();&#xD;&#xD;  this.zeroA = this.a.fromRed().cmpn(0) === 0;&#xD;  this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;&#xD;&#xD;  // If the curve is endomorphic, precalculate beta and lambda&#xD;  this.endo = this._getEndomorphism(conf);&#xD;  this._endoWnafT1 = new Array(4);&#xD;  this._endoWnafT2 = new Array(4);&#xD;}&#xD;inherits(ShortCurve, Base);&#xD;module.exports = ShortCurve;&#xD;&#xD;ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {&#xD;  // No efficient endomorphism&#xD;  if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)&#xD;    return;&#xD;&#xD;  // Compute beta and lambda, that lambda * P = (beta * Px; Py)&#xD;  var beta;&#xD;  var lambda;&#xD;  if (conf.beta) {&#xD;    beta = new BN(conf.beta, 16).toRed(this.red);&#xD;  } else {&#xD;    var betas = this._getEndoRoots(this.p);&#xD;    // Choose the smallest beta&#xD;    beta = betas[0].cmp(betas[1]) &lt; 0 ? betas[0] : betas[1];&#xD;    beta = beta.toRed(this.red);&#xD;  }&#xD;  if (conf.lambda) {&#xD;    lambda = new BN(conf.lambda, 16);&#xD;  } else {&#xD;    // Choose the lambda that is matching selected beta&#xD;    var lambdas = this._getEndoRoots(this.n);&#xD;    if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {&#xD;      lambda = lambdas[0];&#xD;    } else {&#xD;      lambda = lambdas[1];&#xD;      assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);&#xD;    }&#xD;  }&#xD;&#xD;  // Get basis vectors, used for balanced length-two representation&#xD;  var basis;&#xD;  if (conf.basis) {&#xD;    basis = conf.basis.map(function(vec) {&#xD;      return {&#xD;        a: new BN(vec.a, 16),&#xD;        b: new BN(vec.b, 16)&#xD;      };&#xD;    });&#xD;  } else {&#xD;    basis = this._getEndoBasis(lambda);&#xD;  }&#xD;&#xD;  return {&#xD;    beta: beta,&#xD;    lambda: lambda,&#xD;    basis: basis&#xD;  };&#xD;};&#xD;&#xD;ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {&#xD;  // Find roots of for x^2 + x + 1 in F&#xD;  // Root = (-1 +- Sqrt(-3)) / 2&#xD;  //&#xD;  var red = num === this.p ? this.red : BN.mont(num);&#xD;  var tinv = new BN(2).toRed(red).redInvm();&#xD;  var ntinv = tinv.redNeg();&#xD;&#xD;  var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);&#xD;&#xD;  var l1 = ntinv.redAdd(s).fromRed();&#xD;  var l2 = ntinv.redSub(s).fromRed();&#xD;  return [ l1, l2 ];&#xD;};&#xD;&#xD;ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {&#xD;  // aprxSqrt &gt;= sqrt(this.n)&#xD;  var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));&#xD;&#xD;  // 3.74&#xD;  // Run EGCD, until r(L + 1) &lt; aprxSqrt&#xD;  var u = lambda;&#xD;  var v = this.n.clone();&#xD;  var x1 = new BN(1);&#xD;  var y1 = new BN(0);&#xD;  var x2 = new BN(0);&#xD;  var y2 = new BN(1);&#xD;&#xD;  // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)&#xD;  var a0;&#xD;  var b0;&#xD;  // First vector&#xD;  var a1;&#xD;  var b1;&#xD;  // Second vector&#xD;  var a2;&#xD;  var b2;&#xD;&#xD;  var prevR;&#xD;  var i = 0;&#xD;  var r;&#xD;  var x;&#xD;  while (u.cmpn(0) !== 0) {&#xD;    var q = v.div(u);&#xD;    r = v.sub(q.mul(u));&#xD;    x = x2.sub(q.mul(x1));&#xD;    var y = y2.sub(q.mul(y1));&#xD;&#xD;    if (!a1 &amp;&amp; r.cmp(aprxSqrt) &lt; 0) {&#xD;      a0 = prevR.neg();&#xD;      b0 = x1;&#xD;      a1 = r.neg();&#xD;      b1 = x;&#xD;    } else if (a1 &amp;&amp; ++i === 2) {&#xD;      break;&#xD;    }&#xD;    prevR = r;&#xD;&#xD;    v = u;&#xD;    u = r;&#xD;    x2 = x1;&#xD;    x1 = x;&#xD;    y2 = y1;&#xD;    y1 = y;&#xD;  }&#xD;  a2 = r.neg();&#xD;  b2 = x;&#xD;&#xD;  var len1 = a1.sqr().add(b1.sqr());&#xD;  var len2 = a2.sqr().add(b2.sqr());&#xD;  if (len2.cmp(len1) &gt;= 0) {&#xD;    a2 = a0;&#xD;    b2 = b0;&#xD;  }&#xD;&#xD;  // Normalize signs&#xD;  if (a1.negative) {&#xD;    a1 = a1.neg();&#xD;    b1 = b1.neg();&#xD;  }&#xD;  if (a2.negative) {&#xD;    a2 = a2.neg();&#xD;    b2 = b2.neg();&#xD;  }&#xD;&#xD;  return [&#xD;    { a: a1, b: b1 },&#xD;    { a: a2, b: b2 }&#xD;  ];&#xD;};&#xD;&#xD;ShortCurve.prototype._endoSplit = function _endoSplit(k) {&#xD;  var basis = this.endo.basis;&#xD;  var v1 = basis[0];&#xD;  var v2 = basis[1];&#xD;&#xD;  var c1 = v2.b.mul(k).divRound(this.n);&#xD;  var c2 = v1.b.neg().mul(k).divRound(this.n);&#xD;&#xD;  var p1 = c1.mul(v1.a);&#xD;  var p2 = c2.mul(v2.a);&#xD;  var q1 = c1.mul(v1.b);&#xD;  var q2 = c2.mul(v2.b);&#xD;&#xD;  // Calculate answer&#xD;  var k1 = k.sub(p1).sub(p2);&#xD;  var k2 = q1.add(q2).neg();&#xD;  return { k1: k1, k2: k2 };&#xD;};&#xD;&#xD;ShortCurve.prototype.pointFromX = function pointFromX(x, odd) {&#xD;  x = new BN(x, 16);&#xD;  if (!x.red)&#xD;    x = x.toRed(this.red);&#xD;&#xD;  var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);&#xD;  var y = y2.redSqrt();&#xD;  if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)&#xD;    throw new Error(&apos;invalid point&apos;);&#xD;&#xD;  // XXX Is there any way to tell if the number is odd without converting it&#xD;  // to non-red form?&#xD;  var isOdd = y.fromRed().isOdd();&#xD;  if (odd &amp;&amp; !isOdd || !odd &amp;&amp; isOdd)&#xD;    y = y.redNeg();&#xD;&#xD;  return this.point(x, y);&#xD;};&#xD;&#xD;ShortCurve.prototype.validate = function validate(point) {&#xD;  if (point.inf)&#xD;    return true;&#xD;&#xD;  var x = point.x;&#xD;  var y = point.y;&#xD;&#xD;  var ax = this.a.redMul(x);&#xD;  var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);&#xD;  return y.redSqr().redISub(rhs).cmpn(0) === 0;&#xD;};&#xD;&#xD;ShortCurve.prototype._endoWnafMulAdd =&#xD;    function _endoWnafMulAdd(points, coeffs, jacobianResult) {&#xD;  var npoints = this._endoWnafT1;&#xD;  var ncoeffs = this._endoWnafT2;&#xD;  for (var i = 0; i &lt; points.length; i++) {&#xD;    var split = this._endoSplit(coeffs[i]);&#xD;    var p = points[i];&#xD;    var beta = p._getBeta();&#xD;&#xD;    if (split.k1.negative) {&#xD;      split.k1.ineg();&#xD;      p = p.neg(true);&#xD;    }&#xD;    if (split.k2.negative) {&#xD;      split.k2.ineg();&#xD;      beta = beta.neg(true);&#xD;    }&#xD;&#xD;    npoints[i * 2] = p;&#xD;    npoints[i * 2 + 1] = beta;&#xD;    ncoeffs[i * 2] = split.k1;&#xD;    ncoeffs[i * 2 + 1] = split.k2;&#xD;  }&#xD;  var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);&#xD;&#xD;  // Clean-up references to points and coefficients&#xD;  for (var j = 0; j &lt; i * 2; j++) {&#xD;    npoints[j] = null;&#xD;    ncoeffs[j] = null;&#xD;  }&#xD;  return res;&#xD;};&#xD;&#xD;function Point(curve, x, y, isRed) {&#xD;  Base.BasePoint.call(this, curve, &apos;affine&apos;);&#xD;  if (x === null &amp;&amp; y === null) {&#xD;    this.x = null;&#xD;    this.y = null;&#xD;    this.inf = true;&#xD;  } else {&#xD;    this.x = new BN(x, 16);&#xD;    this.y = new BN(y, 16);&#xD;    // Force redgomery representation when loading from JSON&#xD;    if (isRed) {&#xD;      this.x.forceRed(this.curve.red);&#xD;      this.y.forceRed(this.curve.red);&#xD;    }&#xD;    if (!this.x.red)&#xD;      this.x = this.x.toRed(this.curve.red);&#xD;    if (!this.y.red)&#xD;      this.y = this.y.toRed(this.curve.red);&#xD;    this.inf = false;&#xD;  }&#xD;}&#xD;inherits(Point, Base.BasePoint);&#xD;&#xD;ShortCurve.prototype.point = function point(x, y, isRed) {&#xD;  return new Point(this, x, y, isRed);&#xD;};&#xD;&#xD;ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {&#xD;  return Point.fromJSON(this, obj, red);&#xD;};&#xD;&#xD;Point.prototype._getBeta = function _getBeta() {&#xD;  if (!this.curve.endo)&#xD;    return;&#xD;&#xD;  var pre = this.precomputed;&#xD;  if (pre &amp;&amp; pre.beta)&#xD;    return pre.beta;&#xD;&#xD;  var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);&#xD;  if (pre) {&#xD;    var curve = this.curve;&#xD;    var endoMul = function(p) {&#xD;      return curve.point(p.x.redMul(curve.endo.beta), p.y);&#xD;    };&#xD;    pre.beta = beta;&#xD;    beta.precomputed = {&#xD;      beta: null,&#xD;      naf: pre.naf &amp;&amp; {&#xD;        wnd: pre.naf.wnd,&#xD;        points: pre.naf.points.map(endoMul)&#xD;      },&#xD;      doubles: pre.doubles &amp;&amp; {&#xD;        step: pre.doubles.step,&#xD;        points: pre.doubles.points.map(endoMul)&#xD;      }&#xD;    };&#xD;  }&#xD;  return beta;&#xD;};&#xD;&#xD;Point.prototype.toJSON = function toJSON() {&#xD;  if (!this.precomputed)&#xD;    return [ this.x, this.y ];&#xD;&#xD;  return [ this.x, this.y, this.precomputed &amp;&amp; {&#xD;    doubles: this.precomputed.doubles &amp;&amp; {&#xD;      step: this.precomputed.doubles.step,&#xD;      points: this.precomputed.doubles.points.slice(1)&#xD;    },&#xD;    naf: this.precomputed.naf &amp;&amp; {&#xD;      wnd: this.precomputed.naf.wnd,&#xD;      points: this.precomputed.naf.points.slice(1)&#xD;    }&#xD;  } ];&#xD;};&#xD;&#xD;Point.fromJSON = function fromJSON(curve, obj, red) {&#xD;  if (typeof obj === &apos;string&apos;)&#xD;    obj = JSON.parse(obj);&#xD;  var res = curve.point(obj[0], obj[1], red);&#xD;  if (!obj[2])&#xD;    return res;&#xD;&#xD;  function obj2point(obj) {&#xD;    return curve.point(obj[0], obj[1], red);&#xD;  }&#xD;&#xD;  var pre = obj[2];&#xD;  res.precomputed = {&#xD;    beta: null,&#xD;    doubles: pre.doubles &amp;&amp; {&#xD;      step: pre.doubles.step,&#xD;      points: [ res ].concat(pre.doubles.points.map(obj2point))&#xD;    },&#xD;    naf: pre.naf &amp;&amp; {&#xD;      wnd: pre.naf.wnd,&#xD;      points: [ res ].concat(pre.naf.points.map(obj2point))&#xD;    }&#xD;  };&#xD;  return res;&#xD;};&#xD;&#xD;Point.prototype.inspect = function inspect() {&#xD;  if (this.isInfinity())&#xD;    return &apos;&lt;EC Point Infinity&gt;&apos;;&#xD;  return &apos;&lt;EC Point x: &apos; + this.x.fromRed().toString(16, 2) +&#xD;      &apos; y: &apos; + this.y.fromRed().toString(16, 2) + &apos;&gt;&apos;;&#xD;};&#xD;&#xD;Point.prototype.isInfinity = function isInfinity() {&#xD;  return this.inf;&#xD;};&#xD;&#xD;Point.prototype.add = function add(p) {&#xD;  // O + P = P&#xD;  if (this.inf)&#xD;    return p;&#xD;&#xD;  // P + O = P&#xD;  if (p.inf)&#xD;    return this;&#xD;&#xD;  // P + P = 2P&#xD;  if (this.eq(p))&#xD;    return this.dbl();&#xD;&#xD;  // P + (-P) = O&#xD;  if (this.neg().eq(p))&#xD;    return this.curve.point(null, null);&#xD;&#xD;  // P + Q = O&#xD;  if (this.x.cmp(p.x) === 0)&#xD;    return this.curve.point(null, null);&#xD;&#xD;  var c = this.y.redSub(p.y);&#xD;  if (c.cmpn(0) !== 0)&#xD;    c = c.redMul(this.x.redSub(p.x).redInvm());&#xD;  var nx = c.redSqr().redISub(this.x).redISub(p.x);&#xD;  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);&#xD;  return this.curve.point(nx, ny);&#xD;};&#xD;&#xD;Point.prototype.dbl = function dbl() {&#xD;  if (this.inf)&#xD;    return this;&#xD;&#xD;  // 2P = O&#xD;  var ys1 = this.y.redAdd(this.y);&#xD;  if (ys1.cmpn(0) === 0)&#xD;    return this.curve.point(null, null);&#xD;&#xD;  var a = this.curve.a;&#xD;&#xD;  var x2 = this.x.redSqr();&#xD;  var dyinv = ys1.redInvm();&#xD;  var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);&#xD;&#xD;  var nx = c.redSqr().redISub(this.x.redAdd(this.x));&#xD;  var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);&#xD;  return this.curve.point(nx, ny);&#xD;};&#xD;&#xD;Point.prototype.getX = function getX() {&#xD;  return this.x.fromRed();&#xD;};&#xD;&#xD;Point.prototype.getY = function getY() {&#xD;  return this.y.fromRed();&#xD;};&#xD;&#xD;Point.prototype.mul = function mul(k) {&#xD;  k = new BN(k, 16);&#xD;&#xD;  if (this._hasDoubles(k))&#xD;    return this.curve._fixedNafMul(this, k);&#xD;  else if (this.curve.endo)&#xD;    return this.curve._endoWnafMulAdd([ this ], [ k ]);&#xD;  else&#xD;    return this.curve._wnafMul(this, k);&#xD;};&#xD;&#xD;Point.prototype.mulAdd = function mulAdd(k1, p2, k2) {&#xD;  var points = [ this, p2 ];&#xD;  var coeffs = [ k1, k2 ];&#xD;  if (this.curve.endo)&#xD;    return this.curve._endoWnafMulAdd(points, coeffs);&#xD;  else&#xD;    return this.curve._wnafMulAdd(1, points, coeffs, 2);&#xD;};&#xD;&#xD;Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {&#xD;  var points = [ this, p2 ];&#xD;  var coeffs = [ k1, k2 ];&#xD;  if (this.curve.endo)&#xD;    return this.curve._endoWnafMulAdd(points, coeffs, true);&#xD;  else&#xD;    return this.curve._wnafMulAdd(1, points, coeffs, 2, true);&#xD;};&#xD;&#xD;Point.prototype.eq = function eq(p) {&#xD;  return this === p ||&#xD;         this.inf === p.inf &amp;&amp;&#xD;             (this.inf || this.x.cmp(p.x) === 0 &amp;&amp; this.y.cmp(p.y) === 0);&#xD;};&#xD;&#xD;Point.prototype.neg = function neg(_precompute) {&#xD;  if (this.inf)&#xD;    return this;&#xD;&#xD;  var res = this.curve.point(this.x, this.y.redNeg());&#xD;  if (_precompute &amp;&amp; this.precomputed) {&#xD;    var pre = this.precomputed;&#xD;    var negate = function(p) {&#xD;      return p.neg();&#xD;    };&#xD;    res.precomputed = {&#xD;      naf: pre.naf &amp;&amp; {&#xD;        wnd: pre.naf.wnd,&#xD;        points: pre.naf.points.map(negate)&#xD;      },&#xD;      doubles: pre.doubles &amp;&amp; {&#xD;        step: pre.doubles.step,&#xD;        points: pre.doubles.points.map(negate)&#xD;      }&#xD;    };&#xD;  }&#xD;  return res;&#xD;};&#xD;&#xD;Point.prototype.toJ = function toJ() {&#xD;  if (this.inf)&#xD;    return this.curve.jpoint(null, null, null);&#xD;&#xD;  var res = this.curve.jpoint(this.x, this.y, this.curve.one);&#xD;  return res;&#xD;};&#xD;&#xD;function JPoint(curve, x, y, z) {&#xD;  Base.BasePoint.call(this, curve, &apos;jacobian&apos;);&#xD;  if (x === null &amp;&amp; y === null &amp;&amp; z === null) {&#xD;    this.x = this.curve.one;&#xD;    this.y = this.curve.one;&#xD;    this.z = new BN(0);&#xD;  } else {&#xD;    this.x = new BN(x, 16);&#xD;    this.y = new BN(y, 16);&#xD;    this.z = new BN(z, 16);&#xD;  }&#xD;  if (!this.x.red)&#xD;    this.x = this.x.toRed(this.curve.red);&#xD;  if (!this.y.red)&#xD;    this.y = this.y.toRed(this.curve.red);&#xD;  if (!this.z.red)&#xD;    this.z = this.z.toRed(this.curve.red);&#xD;&#xD;  this.zOne = this.z === this.curve.one;&#xD;}&#xD;inherits(JPoint, Base.BasePoint);&#xD;&#xD;ShortCurve.prototype.jpoint = function jpoint(x, y, z) {&#xD;  return new JPoint(this, x, y, z);&#xD;};&#xD;&#xD;JPoint.prototype.toP = function toP() {&#xD;  if (this.isInfinity())&#xD;    return this.curve.point(null, null);&#xD;&#xD;  var zinv = this.z.redInvm();&#xD;  var zinv2 = zinv.redSqr();&#xD;  var ax = this.x.redMul(zinv2);&#xD;  var ay = this.y.redMul(zinv2).redMul(zinv);&#xD;&#xD;  return this.curve.point(ax, ay);&#xD;};&#xD;&#xD;JPoint.prototype.neg = function neg() {&#xD;  return this.curve.jpoint(this.x, this.y.redNeg(), this.z);&#xD;};&#xD;&#xD;JPoint.prototype.add = function add(p) {&#xD;  // O + P = P&#xD;  if (this.isInfinity())&#xD;    return p;&#xD;&#xD;  // P + O = P&#xD;  if (p.isInfinity())&#xD;    return this;&#xD;&#xD;  // 12M + 4S + 7A&#xD;  var pz2 = p.z.redSqr();&#xD;  var z2 = this.z.redSqr();&#xD;  var u1 = this.x.redMul(pz2);&#xD;  var u2 = p.x.redMul(z2);&#xD;  var s1 = this.y.redMul(pz2.redMul(p.z));&#xD;  var s2 = p.y.redMul(z2.redMul(this.z));&#xD;&#xD;  var h = u1.redSub(u2);&#xD;  var r = s1.redSub(s2);&#xD;  if (h.cmpn(0) === 0) {&#xD;    if (r.cmpn(0) !== 0)&#xD;      return this.curve.jpoint(null, null, null);&#xD;    else&#xD;      return this.dbl();&#xD;  }&#xD;&#xD;  var h2 = h.redSqr();&#xD;  var h3 = h2.redMul(h);&#xD;  var v = u1.redMul(h2);&#xD;&#xD;  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);&#xD;  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));&#xD;  var nz = this.z.redMul(p.z).redMul(h);&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype.mixedAdd = function mixedAdd(p) {&#xD;  // O + P = P&#xD;  if (this.isInfinity())&#xD;    return p.toJ();&#xD;&#xD;  // P + O = P&#xD;  if (p.isInfinity())&#xD;    return this;&#xD;&#xD;  // 8M + 3S + 7A&#xD;  var z2 = this.z.redSqr();&#xD;  var u1 = this.x;&#xD;  var u2 = p.x.redMul(z2);&#xD;  var s1 = this.y;&#xD;  var s2 = p.y.redMul(z2).redMul(this.z);&#xD;&#xD;  var h = u1.redSub(u2);&#xD;  var r = s1.redSub(s2);&#xD;  if (h.cmpn(0) === 0) {&#xD;    if (r.cmpn(0) !== 0)&#xD;      return this.curve.jpoint(null, null, null);&#xD;    else&#xD;      return this.dbl();&#xD;  }&#xD;&#xD;  var h2 = h.redSqr();&#xD;  var h3 = h2.redMul(h);&#xD;  var v = u1.redMul(h2);&#xD;&#xD;  var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);&#xD;  var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));&#xD;  var nz = this.z.redMul(h);&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype.dblp = function dblp(pow) {&#xD;  if (pow === 0)&#xD;    return this;&#xD;  if (this.isInfinity())&#xD;    return this;&#xD;  if (!pow)&#xD;    return this.dbl();&#xD;&#xD;  if (this.curve.zeroA || this.curve.threeA) {&#xD;    var r = this;&#xD;    for (var i = 0; i &lt; pow; i++)&#xD;      r = r.dbl();&#xD;    return r;&#xD;  }&#xD;&#xD;  // 1M + 2S + 1A + N * (4S + 5M + 8A)&#xD;  // N = 1 =&gt; 6M + 6S + 9A&#xD;  var a = this.curve.a;&#xD;  var tinv = this.curve.tinv;&#xD;&#xD;  var jx = this.x;&#xD;  var jy = this.y;&#xD;  var jz = this.z;&#xD;  var jz4 = jz.redSqr().redSqr();&#xD;&#xD;  // Reuse results&#xD;  var jyd = jy.redAdd(jy);&#xD;  for (var i = 0; i &lt; pow; i++) {&#xD;    var jx2 = jx.redSqr();&#xD;    var jyd2 = jyd.redSqr();&#xD;    var jyd4 = jyd2.redSqr();&#xD;    var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));&#xD;&#xD;    var t1 = jx.redMul(jyd2);&#xD;    var nx = c.redSqr().redISub(t1.redAdd(t1));&#xD;    var t2 = t1.redISub(nx);&#xD;    var dny = c.redMul(t2);&#xD;    dny = dny.redIAdd(dny).redISub(jyd4);&#xD;    var nz = jyd.redMul(jz);&#xD;    if (i + 1 &lt; pow)&#xD;      jz4 = jz4.redMul(jyd4);&#xD;&#xD;    jx = nx;&#xD;    jz = nz;&#xD;    jyd = dny;&#xD;  }&#xD;&#xD;  return this.curve.jpoint(jx, jyd.redMul(tinv), jz);&#xD;};&#xD;&#xD;JPoint.prototype.dbl = function dbl() {&#xD;  if (this.isInfinity())&#xD;    return this;&#xD;&#xD;  if (this.curve.zeroA)&#xD;    return this._zeroDbl();&#xD;  else if (this.curve.threeA)&#xD;    return this._threeDbl();&#xD;  else&#xD;    return this._dbl();&#xD;};&#xD;&#xD;JPoint.prototype._zeroDbl = function _zeroDbl() {&#xD;  var nx;&#xD;  var ny;&#xD;  var nz;&#xD;  // Z = 1&#xD;  if (this.zOne) {&#xD;    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html&#xD;    //     #doubling-mdbl-2007-bl&#xD;    // 1M + 5S + 14A&#xD;&#xD;    // XX = X1^2&#xD;    var xx = this.x.redSqr();&#xD;    // YY = Y1^2&#xD;    var yy = this.y.redSqr();&#xD;    // YYYY = YY^2&#xD;    var yyyy = yy.redSqr();&#xD;    // S = 2 * ((X1 + YY)^2 - XX - YYYY)&#xD;    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);&#xD;    s = s.redIAdd(s);&#xD;    // M = 3 * XX + a; a = 0&#xD;    var m = xx.redAdd(xx).redIAdd(xx);&#xD;    // T = M ^ 2 - 2*S&#xD;    var t = m.redSqr().redISub(s).redISub(s);&#xD;&#xD;    // 8 * YYYY&#xD;    var yyyy8 = yyyy.redIAdd(yyyy);&#xD;    yyyy8 = yyyy8.redIAdd(yyyy8);&#xD;    yyyy8 = yyyy8.redIAdd(yyyy8);&#xD;&#xD;    // X3 = T&#xD;    nx = t;&#xD;    // Y3 = M * (S - T) - 8 * YYYY&#xD;    ny = m.redMul(s.redISub(t)).redISub(yyyy8);&#xD;    // Z3 = 2*Y1&#xD;    nz = this.y.redAdd(this.y);&#xD;  } else {&#xD;    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html&#xD;    //     #doubling-dbl-2009-l&#xD;    // 2M + 5S + 13A&#xD;&#xD;    // A = X1^2&#xD;    var a = this.x.redSqr();&#xD;    // B = Y1^2&#xD;    var b = this.y.redSqr();&#xD;    // C = B^2&#xD;    var c = b.redSqr();&#xD;    // D = 2 * ((X1 + B)^2 - A - C)&#xD;    var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);&#xD;    d = d.redIAdd(d);&#xD;    // E = 3 * A&#xD;    var e = a.redAdd(a).redIAdd(a);&#xD;    // F = E^2&#xD;    var f = e.redSqr();&#xD;&#xD;    // 8 * C&#xD;    var c8 = c.redIAdd(c);&#xD;    c8 = c8.redIAdd(c8);&#xD;    c8 = c8.redIAdd(c8);&#xD;&#xD;    // X3 = F - 2 * D&#xD;    nx = f.redISub(d).redISub(d);&#xD;    // Y3 = E * (D - X3) - 8 * C&#xD;    ny = e.redMul(d.redISub(nx)).redISub(c8);&#xD;    // Z3 = 2 * Y1 * Z1&#xD;    nz = this.y.redMul(this.z);&#xD;    nz = nz.redIAdd(nz);&#xD;  }&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype._threeDbl = function _threeDbl() {&#xD;  var nx;&#xD;  var ny;&#xD;  var nz;&#xD;  // Z = 1&#xD;  if (this.zOne) {&#xD;    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html&#xD;    //     #doubling-mdbl-2007-bl&#xD;    // 1M + 5S + 15A&#xD;&#xD;    // XX = X1^2&#xD;    var xx = this.x.redSqr();&#xD;    // YY = Y1^2&#xD;    var yy = this.y.redSqr();&#xD;    // YYYY = YY^2&#xD;    var yyyy = yy.redSqr();&#xD;    // S = 2 * ((X1 + YY)^2 - XX - YYYY)&#xD;    var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);&#xD;    s = s.redIAdd(s);&#xD;    // M = 3 * XX + a&#xD;    var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);&#xD;    // T = M^2 - 2 * S&#xD;    var t = m.redSqr().redISub(s).redISub(s);&#xD;    // X3 = T&#xD;    nx = t;&#xD;    // Y3 = M * (S - T) - 8 * YYYY&#xD;    var yyyy8 = yyyy.redIAdd(yyyy);&#xD;    yyyy8 = yyyy8.redIAdd(yyyy8);&#xD;    yyyy8 = yyyy8.redIAdd(yyyy8);&#xD;    ny = m.redMul(s.redISub(t)).redISub(yyyy8);&#xD;    // Z3 = 2 * Y1&#xD;    nz = this.y.redAdd(this.y);&#xD;  } else {&#xD;    // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b&#xD;    // 3M + 5S&#xD;&#xD;    // delta = Z1^2&#xD;    var delta = this.z.redSqr();&#xD;    // gamma = Y1^2&#xD;    var gamma = this.y.redSqr();&#xD;    // beta = X1 * gamma&#xD;    var beta = this.x.redMul(gamma);&#xD;    // alpha = 3 * (X1 - delta) * (X1 + delta)&#xD;    var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));&#xD;    alpha = alpha.redAdd(alpha).redIAdd(alpha);&#xD;    // X3 = alpha^2 - 8 * beta&#xD;    var beta4 = beta.redIAdd(beta);&#xD;    beta4 = beta4.redIAdd(beta4);&#xD;    var beta8 = beta4.redAdd(beta4);&#xD;    nx = alpha.redSqr().redISub(beta8);&#xD;    // Z3 = (Y1 + Z1)^2 - gamma - delta&#xD;    nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);&#xD;    // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2&#xD;    var ggamma8 = gamma.redSqr();&#xD;    ggamma8 = ggamma8.redIAdd(ggamma8);&#xD;    ggamma8 = ggamma8.redIAdd(ggamma8);&#xD;    ggamma8 = ggamma8.redIAdd(ggamma8);&#xD;    ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);&#xD;  }&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype._dbl = function _dbl() {&#xD;  var a = this.curve.a;&#xD;&#xD;  // 4M + 6S + 10A&#xD;  var jx = this.x;&#xD;  var jy = this.y;&#xD;  var jz = this.z;&#xD;  var jz4 = jz.redSqr().redSqr();&#xD;&#xD;  var jx2 = jx.redSqr();&#xD;  var jy2 = jy.redSqr();&#xD;&#xD;  var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));&#xD;&#xD;  var jxd4 = jx.redAdd(jx);&#xD;  jxd4 = jxd4.redIAdd(jxd4);&#xD;  var t1 = jxd4.redMul(jy2);&#xD;  var nx = c.redSqr().redISub(t1.redAdd(t1));&#xD;  var t2 = t1.redISub(nx);&#xD;&#xD;  var jyd8 = jy2.redSqr();&#xD;  jyd8 = jyd8.redIAdd(jyd8);&#xD;  jyd8 = jyd8.redIAdd(jyd8);&#xD;  jyd8 = jyd8.redIAdd(jyd8);&#xD;  var ny = c.redMul(t2).redISub(jyd8);&#xD;  var nz = jy.redAdd(jy).redMul(jz);&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype.trpl = function trpl() {&#xD;  if (!this.curve.zeroA)&#xD;    return this.dbl().add(this);&#xD;&#xD;  // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl&#xD;  // 5M + 10S + ...&#xD;&#xD;  // XX = X1^2&#xD;  var xx = this.x.redSqr();&#xD;  // YY = Y1^2&#xD;  var yy = this.y.redSqr();&#xD;  // ZZ = Z1^2&#xD;  var zz = this.z.redSqr();&#xD;  // YYYY = YY^2&#xD;  var yyyy = yy.redSqr();&#xD;  // M = 3 * XX + a * ZZ2; a = 0&#xD;  var m = xx.redAdd(xx).redIAdd(xx);&#xD;  // MM = M^2&#xD;  var mm = m.redSqr();&#xD;  // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM&#xD;  var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);&#xD;  e = e.redIAdd(e);&#xD;  e = e.redAdd(e).redIAdd(e);&#xD;  e = e.redISub(mm);&#xD;  // EE = E^2&#xD;  var ee = e.redSqr();&#xD;  // T = 16*YYYY&#xD;  var t = yyyy.redIAdd(yyyy);&#xD;  t = t.redIAdd(t);&#xD;  t = t.redIAdd(t);&#xD;  t = t.redIAdd(t);&#xD;  // U = (M + E)^2 - MM - EE - T&#xD;  var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);&#xD;  // X3 = 4 * (X1 * EE - 4 * YY * U)&#xD;  var yyu4 = yy.redMul(u);&#xD;  yyu4 = yyu4.redIAdd(yyu4);&#xD;  yyu4 = yyu4.redIAdd(yyu4);&#xD;  var nx = this.x.redMul(ee).redISub(yyu4);&#xD;  nx = nx.redIAdd(nx);&#xD;  nx = nx.redIAdd(nx);&#xD;  // Y3 = 8 * Y1 * (U * (T - U) - E * EE)&#xD;  var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));&#xD;  ny = ny.redIAdd(ny);&#xD;  ny = ny.redIAdd(ny);&#xD;  ny = ny.redIAdd(ny);&#xD;  // Z3 = (Z1 + E)^2 - ZZ - EE&#xD;  var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);&#xD;&#xD;  return this.curve.jpoint(nx, ny, nz);&#xD;};&#xD;&#xD;JPoint.prototype.mul = function mul(k, kbase) {&#xD;  k = new BN(k, kbase);&#xD;&#xD;  return this.curve._wnafMul(this, k);&#xD;};&#xD;&#xD;JPoint.prototype.eq = function eq(p) {&#xD;  if (p.type === &apos;affine&apos;)&#xD;    return this.eq(p.toJ());&#xD;&#xD;  if (this === p)&#xD;    return true;&#xD;&#xD;  // x1 * z2^2 == x2 * z1^2&#xD;  var z2 = this.z.redSqr();&#xD;  var pz2 = p.z.redSqr();&#xD;  if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)&#xD;    return false;&#xD;&#xD;  // y1 * z2^3 == y2 * z1^3&#xD;  var z3 = z2.redMul(this.z);&#xD;  var pz3 = pz2.redMul(p.z);&#xD;  return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;&#xD;};&#xD;&#xD;JPoint.prototype.eqXToP = function eqXToP(x) {&#xD;  var zs = this.z.redSqr();&#xD;  var rx = x.toRed(this.curve.red).redMul(zs);&#xD;  if (this.x.cmp(rx) === 0)&#xD;    return true;&#xD;&#xD;  var xc = x.clone();&#xD;  var t = this.curve.redN.redMul(zs);&#xD;  for (;;) {&#xD;    xc.iadd(this.curve.n);&#xD;    if (xc.cmp(this.curve.p) &gt;= 0)&#xD;      return false;&#xD;&#xD;    rx.redIAdd(t);&#xD;    if (this.x.cmp(rx) === 0)&#xD;      return true;&#xD;  }&#xD;  return false;&#xD;};&#xD;&#xD;JPoint.prototype.inspect = function inspect() {&#xD;  if (this.isInfinity())&#xD;    return &apos;&lt;EC JPoint Infinity&gt;&apos;;&#xD;  return &apos;&lt;EC JPoint x: &apos; + this.x.toString(16, 2) +&#xD;      &apos; y: &apos; + this.y.toString(16, 2) +&#xD;      &apos; z: &apos; + this.z.toString(16, 2) + &apos;&gt;&apos;;&#xD;};&#xD;&#xD;JPoint.prototype.isInfinity = function isInfinity() {&#xD;  // XXX This code assumes that zero is always zero in red&#xD;  return this.z.cmpn(0) === 0;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 314 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var curves = exports;&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var elliptic = __webpack_require__(19);&#xD;&#xD;var assert = elliptic.utils.assert;&#xD;&#xD;function PresetCurve(options) {&#xD;  if (options.type === &apos;short&apos;)&#xD;    this.curve = new elliptic.curve.short(options);&#xD;  else if (options.type === &apos;edwards&apos;)&#xD;    this.curve = new elliptic.curve.edwards(options);&#xD;  else&#xD;    this.curve = new elliptic.curve.mont(options);&#xD;  this.g = this.curve.g;&#xD;  this.n = this.curve.n;&#xD;  this.hash = options.hash;&#xD;&#xD;  assert(this.g.validate(), &apos;Invalid curve&apos;);&#xD;  assert(this.g.mul(this.n).isInfinity(), &apos;Invalid curve, G*N != O&apos;);&#xD;}&#xD;curves.PresetCurve = PresetCurve;&#xD;&#xD;function defineCurve(name, options) {&#xD;  Object.defineProperty(curves, name, {&#xD;    configurable: true,&#xD;    enumerable: true,&#xD;    get: function() {&#xD;      var curve = new PresetCurve(options);&#xD;      Object.defineProperty(curves, name, {&#xD;        configurable: true,&#xD;        enumerable: true,&#xD;        value: curve&#xD;      });&#xD;      return curve;&#xD;    }&#xD;  });&#xD;}&#xD;&#xD;defineCurve(&apos;p192&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: &apos;p192&apos;,&#xD;  p: &apos;ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff&apos;,&#xD;  a: &apos;ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc&apos;,&#xD;  b: &apos;64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1&apos;,&#xD;  n: &apos;ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831&apos;,&#xD;  hash: hash.sha256,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012&apos;,&#xD;    &apos;07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;p224&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: &apos;p224&apos;,&#xD;  p: &apos;ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001&apos;,&#xD;  a: &apos;ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe&apos;,&#xD;  b: &apos;b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4&apos;,&#xD;  n: &apos;ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d&apos;,&#xD;  hash: hash.sha256,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21&apos;,&#xD;    &apos;bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;p256&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: null,&#xD;  p: &apos;ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff&apos;,&#xD;  a: &apos;ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc&apos;,&#xD;  b: &apos;5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b&apos;,&#xD;  n: &apos;ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551&apos;,&#xD;  hash: hash.sha256,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296&apos;,&#xD;    &apos;4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;p384&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: null,&#xD;  p: &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;fffffffe ffffffff 00000000 00000000 ffffffff&apos;,&#xD;  a: &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;fffffffe ffffffff 00000000 00000000 fffffffc&apos;,&#xD;  b: &apos;b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f &apos; +&#xD;     &apos;5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef&apos;,&#xD;  n: &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 &apos; +&#xD;     &apos;f4372ddf 581a0db2 48b0a77a ecec196a ccc52973&apos;,&#xD;  hash: hash.sha384,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 &apos; +&#xD;    &apos;5502f25d bf55296c 3a545e38 72760ab7&apos;,&#xD;    &apos;3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 &apos; +&#xD;    &apos;0a60b1ce 1d7e819d 7a431d7c 90ea0e5f&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;p521&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: null,&#xD;  p: &apos;000001ff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;ffffffff ffffffff ffffffff ffffffff ffffffff&apos;,&#xD;  a: &apos;000001ff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;ffffffff ffffffff ffffffff ffffffff fffffffc&apos;,&#xD;  b: &apos;00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b &apos; +&#xD;     &apos;99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd &apos; +&#xD;     &apos;3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00&apos;,&#xD;  n: &apos;000001ff ffffffff ffffffff ffffffff ffffffff ffffffff &apos; +&#xD;     &apos;ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 &apos; +&#xD;     &apos;f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409&apos;,&#xD;  hash: hash.sha512,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 &apos; +&#xD;    &apos;053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 &apos; +&#xD;    &apos;a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66&apos;,&#xD;    &apos;00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 &apos; +&#xD;    &apos;579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 &apos; +&#xD;    &apos;3fad0761 353c7086 a272c240 88be9476 9fd16650&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;curve25519&apos;, {&#xD;  type: &apos;mont&apos;,&#xD;  prime: &apos;p25519&apos;,&#xD;  p: &apos;7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed&apos;,&#xD;  a: &apos;76d06&apos;,&#xD;  b: &apos;1&apos;,&#xD;  n: &apos;1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed&apos;,&#xD;  hash: hash.sha256,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;9&apos;&#xD;  ]&#xD;});&#xD;&#xD;defineCurve(&apos;ed25519&apos;, {&#xD;  type: &apos;edwards&apos;,&#xD;  prime: &apos;p25519&apos;,&#xD;  p: &apos;7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed&apos;,&#xD;  a: &apos;-1&apos;,&#xD;  c: &apos;1&apos;,&#xD;  // -121665 * (121666^(-1)) (mod P)&#xD;  d: &apos;52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3&apos;,&#xD;  n: &apos;1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed&apos;,&#xD;  hash: hash.sha256,&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a&apos;,&#xD;&#xD;    // 4/5&#xD;    &apos;6666666666666666666666666666666666666666666666666666666666666658&apos;&#xD;  ]&#xD;});&#xD;&#xD;var pre;&#xD;try {&#xD;  pre = __webpack_require__(321);&#xD;} catch (e) {&#xD;  pre = undefined;&#xD;}&#xD;&#xD;defineCurve(&apos;secp256k1&apos;, {&#xD;  type: &apos;short&apos;,&#xD;  prime: &apos;k256&apos;,&#xD;  p: &apos;ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f&apos;,&#xD;  a: &apos;0&apos;,&#xD;  b: &apos;7&apos;,&#xD;  n: &apos;ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141&apos;,&#xD;  h: &apos;1&apos;,&#xD;  hash: hash.sha256,&#xD;&#xD;  // Precomputed endomorphism&#xD;  beta: &apos;7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee&apos;,&#xD;  lambda: &apos;5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72&apos;,&#xD;  basis: [&#xD;    {&#xD;      a: &apos;3086d221a7d46bcde86c90e49284eb15&apos;,&#xD;      b: &apos;-e4437ed6010e88286f547fa90abfe4c3&apos;&#xD;    },&#xD;    {&#xD;      a: &apos;114ca50f7a8e2f3f657c1108d9d44cfd8&apos;,&#xD;      b: &apos;3086d221a7d46bcde86c90e49284eb15&apos;&#xD;    }&#xD;  ],&#xD;&#xD;  gRed: false,&#xD;  g: [&#xD;    &apos;79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&apos;,&#xD;    &apos;483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8&apos;,&#xD;    pre&#xD;  ]&#xD;});&#xD;&#xD;&#xD;/***/ }),&#xD;/* 315 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var BN = __webpack_require__(11);&#xD;var HmacDRBG = __webpack_require__(346);&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;&#xD;var KeyPair = __webpack_require__(316);&#xD;var Signature = __webpack_require__(317);&#xD;&#xD;function EC(options) {&#xD;  if (!(this instanceof EC))&#xD;    return new EC(options);&#xD;&#xD;  // Shortcut `elliptic.ec(curve-name)`&#xD;  if (typeof options === &apos;string&apos;) {&#xD;    assert(elliptic.curves.hasOwnProperty(options), &apos;Unknown curve &apos; + options);&#xD;&#xD;    options = elliptic.curves[options];&#xD;  }&#xD;&#xD;  // Shortcut for `elliptic.ec(elliptic.curves.curveName)`&#xD;  if (options instanceof elliptic.curves.PresetCurve)&#xD;    options = { curve: options };&#xD;&#xD;  this.curve = options.curve.curve;&#xD;  this.n = this.curve.n;&#xD;  this.nh = this.n.ushrn(1);&#xD;  this.g = this.curve.g;&#xD;&#xD;  // Point on curve&#xD;  this.g = options.curve.g;&#xD;  this.g.precompute(options.curve.n.bitLength() + 1);&#xD;&#xD;  // Hash for function for DRBG&#xD;  this.hash = options.hash || options.curve.hash;&#xD;}&#xD;module.exports = EC;&#xD;&#xD;EC.prototype.keyPair = function keyPair(options) {&#xD;  return new KeyPair(this, options);&#xD;};&#xD;&#xD;EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {&#xD;  return KeyPair.fromPrivate(this, priv, enc);&#xD;};&#xD;&#xD;EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {&#xD;  return KeyPair.fromPublic(this, pub, enc);&#xD;};&#xD;&#xD;EC.prototype.genKeyPair = function genKeyPair(options) {&#xD;  if (!options)&#xD;    options = {};&#xD;&#xD;  // Instantiate Hmac_DRBG&#xD;  var drbg = new HmacDRBG({&#xD;    hash: this.hash,&#xD;    pers: options.pers,&#xD;    persEnc: options.persEnc || &apos;utf8&apos;,&#xD;    entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),&#xD;    entropyEnc: options.entropy &amp;&amp; options.entropyEnc || &apos;utf8&apos;,&#xD;    nonce: this.n.toArray()&#xD;  });&#xD;&#xD;  var bytes = this.n.byteLength();&#xD;  var ns2 = this.n.sub(new BN(2));&#xD;  do {&#xD;    var priv = new BN(drbg.generate(bytes));&#xD;    if (priv.cmp(ns2) &gt; 0)&#xD;      continue;&#xD;&#xD;    priv.iaddn(1);&#xD;    return this.keyFromPrivate(priv);&#xD;  } while (true);&#xD;};&#xD;&#xD;EC.prototype._truncateToN = function truncateToN(msg, truncOnly) {&#xD;  var delta = msg.byteLength() * 8 - this.n.bitLength();&#xD;  if (delta &gt; 0)&#xD;    msg = msg.ushrn(delta);&#xD;  if (!truncOnly &amp;&amp; msg.cmp(this.n) &gt;= 0)&#xD;    return msg.sub(this.n);&#xD;  else&#xD;    return msg;&#xD;};&#xD;&#xD;EC.prototype.sign = function sign(msg, key, enc, options) {&#xD;  if (typeof enc === &apos;object&apos;) {&#xD;    options = enc;&#xD;    enc = null;&#xD;  }&#xD;  if (!options)&#xD;    options = {};&#xD;&#xD;  key = this.keyFromPrivate(key, enc);&#xD;  msg = this._truncateToN(new BN(msg, 16));&#xD;&#xD;  // Zero-extend key to provide enough entropy&#xD;  var bytes = this.n.byteLength();&#xD;  var bkey = key.getPrivate().toArray(&apos;be&apos;, bytes);&#xD;&#xD;  // Zero-extend nonce to have the same byte size as N&#xD;  var nonce = msg.toArray(&apos;be&apos;, bytes);&#xD;&#xD;  // Instantiate Hmac_DRBG&#xD;  var drbg = new HmacDRBG({&#xD;    hash: this.hash,&#xD;    entropy: bkey,&#xD;    nonce: nonce,&#xD;    pers: options.pers,&#xD;    persEnc: options.persEnc || &apos;utf8&apos;&#xD;  });&#xD;&#xD;  // Number of bytes to generate&#xD;  var ns1 = this.n.sub(new BN(1));&#xD;&#xD;  for (var iter = 0; true; iter++) {&#xD;    var k = options.k ?&#xD;        options.k(iter) :&#xD;        new BN(drbg.generate(this.n.byteLength()));&#xD;    k = this._truncateToN(k, true);&#xD;    if (k.cmpn(1) &lt;= 0 || k.cmp(ns1) &gt;= 0)&#xD;      continue;&#xD;&#xD;    var kp = this.g.mul(k);&#xD;    if (kp.isInfinity())&#xD;      continue;&#xD;&#xD;    var kpX = kp.getX();&#xD;    var r = kpX.umod(this.n);&#xD;    if (r.cmpn(0) === 0)&#xD;      continue;&#xD;&#xD;    var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));&#xD;    s = s.umod(this.n);&#xD;    if (s.cmpn(0) === 0)&#xD;      continue;&#xD;&#xD;    var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |&#xD;                        (kpX.cmp(r) !== 0 ? 2 : 0);&#xD;&#xD;    // Use complement of `s`, if it is &gt; `n / 2`&#xD;    if (options.canonical &amp;&amp; s.cmp(this.nh) &gt; 0) {&#xD;      s = this.n.sub(s);&#xD;      recoveryParam ^= 1;&#xD;    }&#xD;&#xD;    return new Signature({ r: r, s: s, recoveryParam: recoveryParam });&#xD;  }&#xD;};&#xD;&#xD;EC.prototype.verify = function verify(msg, signature, key, enc) {&#xD;  msg = this._truncateToN(new BN(msg, 16));&#xD;  key = this.keyFromPublic(key, enc);&#xD;  signature = new Signature(signature, &apos;hex&apos;);&#xD;&#xD;  // Perform primitive values validation&#xD;  var r = signature.r;&#xD;  var s = signature.s;&#xD;  if (r.cmpn(1) &lt; 0 || r.cmp(this.n) &gt;= 0)&#xD;    return false;&#xD;  if (s.cmpn(1) &lt; 0 || s.cmp(this.n) &gt;= 0)&#xD;    return false;&#xD;&#xD;  // Validate signature&#xD;  var sinv = s.invm(this.n);&#xD;  var u1 = sinv.mul(msg).umod(this.n);&#xD;  var u2 = sinv.mul(r).umod(this.n);&#xD;&#xD;  if (!this.curve._maxwellTrick) {&#xD;    var p = this.g.mulAdd(u1, key.getPublic(), u2);&#xD;    if (p.isInfinity())&#xD;      return false;&#xD;&#xD;    return p.getX().umod(this.n).cmp(r) === 0;&#xD;  }&#xD;&#xD;  // NOTE: Greg Maxwell&apos;s trick, inspired by:&#xD;  // https://git.io/vad3K&#xD;&#xD;  var p = this.g.jmulAdd(u1, key.getPublic(), u2);&#xD;  if (p.isInfinity())&#xD;    return false;&#xD;&#xD;  // Compare `p.x` of Jacobian point with `r`,&#xD;  // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the&#xD;  // inverse of `p.z^2`&#xD;  return p.eqXToP(r);&#xD;};&#xD;&#xD;EC.prototype.recoverPubKey = function(msg, signature, j, enc) {&#xD;  assert((3 &amp; j) === j, &apos;The recovery param is more than two bits&apos;);&#xD;  signature = new Signature(signature, enc);&#xD;&#xD;  var n = this.n;&#xD;  var e = new BN(msg);&#xD;  var r = signature.r;&#xD;  var s = signature.s;&#xD;&#xD;  // A set LSB signifies that the y-coordinate is odd&#xD;  var isYOdd = j &amp; 1;&#xD;  var isSecondKey = j &gt;&gt; 1;&#xD;  if (r.cmp(this.curve.p.umod(this.curve.n)) &gt;= 0 &amp;&amp; isSecondKey)&#xD;    throw new Error(&apos;Unable to find sencond key candinate&apos;);&#xD;&#xD;  // 1.1. Let x = r + jn.&#xD;  if (isSecondKey)&#xD;    r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);&#xD;  else&#xD;    r = this.curve.pointFromX(r, isYOdd);&#xD;&#xD;  var rInv = signature.r.invm(n);&#xD;  var s1 = n.sub(e).mul(rInv).umod(n);&#xD;  var s2 = s.mul(rInv).umod(n);&#xD;&#xD;  // 1.6.1 Compute Q = r^-1 (sR -  eG)&#xD;  //               Q = r^-1 (sR + -eG)&#xD;  return this.g.mulAdd(s1, r, s2);&#xD;};&#xD;&#xD;EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {&#xD;  signature = new Signature(signature, enc);&#xD;  if (signature.recoveryParam !== null)&#xD;    return signature.recoveryParam;&#xD;&#xD;  for (var i = 0; i &lt; 4; i++) {&#xD;    var Qprime;&#xD;    try {&#xD;      Qprime = this.recoverPubKey(e, signature, i);&#xD;    } catch (e) {&#xD;      continue;&#xD;    }&#xD;&#xD;    if (Qprime.eq(Q))&#xD;      return i;&#xD;  }&#xD;  throw new Error(&apos;Unable to find valid recovery factor&apos;);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 316 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var BN = __webpack_require__(11);&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;&#xD;function KeyPair(ec, options) {&#xD;  this.ec = ec;&#xD;  this.priv = null;&#xD;  this.pub = null;&#xD;&#xD;  // KeyPair(ec, { priv: ..., pub: ... })&#xD;  if (options.priv)&#xD;    this._importPrivate(options.priv, options.privEnc);&#xD;  if (options.pub)&#xD;    this._importPublic(options.pub, options.pubEnc);&#xD;}&#xD;module.exports = KeyPair;&#xD;&#xD;KeyPair.fromPublic = function fromPublic(ec, pub, enc) {&#xD;  if (pub instanceof KeyPair)&#xD;    return pub;&#xD;&#xD;  return new KeyPair(ec, {&#xD;    pub: pub,&#xD;    pubEnc: enc&#xD;  });&#xD;};&#xD;&#xD;KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {&#xD;  if (priv instanceof KeyPair)&#xD;    return priv;&#xD;&#xD;  return new KeyPair(ec, {&#xD;    priv: priv,&#xD;    privEnc: enc&#xD;  });&#xD;};&#xD;&#xD;KeyPair.prototype.validate = function validate() {&#xD;  var pub = this.getPublic();&#xD;&#xD;  if (pub.isInfinity())&#xD;    return { result: false, reason: &apos;Invalid public key&apos; };&#xD;  if (!pub.validate())&#xD;    return { result: false, reason: &apos;Public key is not a point&apos; };&#xD;  if (!pub.mul(this.ec.curve.n).isInfinity())&#xD;    return { result: false, reason: &apos;Public key * N != O&apos; };&#xD;&#xD;  return { result: true, reason: null };&#xD;};&#xD;&#xD;KeyPair.prototype.getPublic = function getPublic(compact, enc) {&#xD;  // compact is optional argument&#xD;  if (typeof compact === &apos;string&apos;) {&#xD;    enc = compact;&#xD;    compact = null;&#xD;  }&#xD;&#xD;  if (!this.pub)&#xD;    this.pub = this.ec.g.mul(this.priv);&#xD;&#xD;  if (!enc)&#xD;    return this.pub;&#xD;&#xD;  return this.pub.encode(enc, compact);&#xD;};&#xD;&#xD;KeyPair.prototype.getPrivate = function getPrivate(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return this.priv.toString(16, 2);&#xD;  else&#xD;    return this.priv;&#xD;};&#xD;&#xD;KeyPair.prototype._importPrivate = function _importPrivate(key, enc) {&#xD;  this.priv = new BN(key, enc || 16);&#xD;&#xD;  // Ensure that the priv won&apos;t be bigger than n, otherwise we may fail&#xD;  // in fixed multiplication method&#xD;  this.priv = this.priv.umod(this.ec.curve.n);&#xD;};&#xD;&#xD;KeyPair.prototype._importPublic = function _importPublic(key, enc) {&#xD;  if (key.x || key.y) {&#xD;    // Montgomery points only have an `x` coordinate.&#xD;    // Weierstrass/Edwards points on the other hand have both `x` and&#xD;    // `y` coordinates.&#xD;    if (this.ec.curve.type === &apos;mont&apos;) {&#xD;      assert(key.x, &apos;Need x coordinate&apos;);&#xD;    } else if (this.ec.curve.type === &apos;short&apos; ||&#xD;               this.ec.curve.type === &apos;edwards&apos;) {&#xD;      assert(key.x &amp;&amp; key.y, &apos;Need both x and y coordinate&apos;);&#xD;    }&#xD;    this.pub = this.ec.curve.point(key.x, key.y);&#xD;    return;&#xD;  }&#xD;  this.pub = this.ec.curve.decodePoint(key, enc);&#xD;};&#xD;&#xD;// ECDH&#xD;KeyPair.prototype.derive = function derive(pub) {&#xD;  return pub.mul(this.priv).getX();&#xD;};&#xD;&#xD;// ECDSA&#xD;KeyPair.prototype.sign = function sign(msg, enc, options) {&#xD;  return this.ec.sign(msg, this, enc, options);&#xD;};&#xD;&#xD;KeyPair.prototype.verify = function verify(msg, signature) {&#xD;  return this.ec.verify(msg, signature, this);&#xD;};&#xD;&#xD;KeyPair.prototype.inspect = function inspect() {&#xD;  return &apos;&lt;Key priv: &apos; + (this.priv &amp;&amp; this.priv.toString(16, 2)) +&#xD;         &apos; pub: &apos; + (this.pub &amp;&amp; this.pub.inspect()) + &apos; &gt;&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 317 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var BN = __webpack_require__(11);&#xD;&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;&#xD;function Signature(options, enc) {&#xD;  if (options instanceof Signature)&#xD;    return options;&#xD;&#xD;  if (this._importDER(options, enc))&#xD;    return;&#xD;&#xD;  assert(options.r &amp;&amp; options.s, &apos;Signature without r or s&apos;);&#xD;  this.r = new BN(options.r, 16);&#xD;  this.s = new BN(options.s, 16);&#xD;  if (options.recoveryParam === undefined)&#xD;    this.recoveryParam = null;&#xD;  else&#xD;    this.recoveryParam = options.recoveryParam;&#xD;}&#xD;module.exports = Signature;&#xD;&#xD;function Position() {&#xD;  this.place = 0;&#xD;}&#xD;&#xD;function getLength(buf, p) {&#xD;  var initial = buf[p.place++];&#xD;  if (!(initial &amp; 0x80)) {&#xD;    return initial;&#xD;  }&#xD;  var octetLen = initial &amp; 0xf;&#xD;  var val = 0;&#xD;  for (var i = 0, off = p.place; i &lt; octetLen; i++, off++) {&#xD;    val &lt;&lt;= 8;&#xD;    val |= buf[off];&#xD;  }&#xD;  p.place = off;&#xD;  return val;&#xD;}&#xD;&#xD;function rmPadding(buf) {&#xD;  var i = 0;&#xD;  var len = buf.length - 1;&#xD;  while (!buf[i] &amp;&amp; !(buf[i + 1] &amp; 0x80) &amp;&amp; i &lt; len) {&#xD;    i++;&#xD;  }&#xD;  if (i === 0) {&#xD;    return buf;&#xD;  }&#xD;  return buf.slice(i);&#xD;}&#xD;&#xD;Signature.prototype._importDER = function _importDER(data, enc) {&#xD;  data = utils.toArray(data, enc);&#xD;  var p = new Position();&#xD;  if (data[p.place++] !== 0x30) {&#xD;    return false;&#xD;  }&#xD;  var len = getLength(data, p);&#xD;  if ((len + p.place) !== data.length) {&#xD;    return false;&#xD;  }&#xD;  if (data[p.place++] !== 0x02) {&#xD;    return false;&#xD;  }&#xD;  var rlen = getLength(data, p);&#xD;  var r = data.slice(p.place, rlen + p.place);&#xD;  p.place += rlen;&#xD;  if (data[p.place++] !== 0x02) {&#xD;    return false;&#xD;  }&#xD;  var slen = getLength(data, p);&#xD;  if (data.length !== slen + p.place) {&#xD;    return false;&#xD;  }&#xD;  var s = data.slice(p.place, slen + p.place);&#xD;  if (r[0] === 0 &amp;&amp; (r[1] &amp; 0x80)) {&#xD;    r = r.slice(1);&#xD;  }&#xD;  if (s[0] === 0 &amp;&amp; (s[1] &amp; 0x80)) {&#xD;    s = s.slice(1);&#xD;  }&#xD;&#xD;  this.r = new BN(r);&#xD;  this.s = new BN(s);&#xD;  this.recoveryParam = null;&#xD;&#xD;  return true;&#xD;};&#xD;&#xD;function constructLength(arr, len) {&#xD;  if (len &lt; 0x80) {&#xD;    arr.push(len);&#xD;    return;&#xD;  }&#xD;  var octets = 1 + (Math.log(len) / Math.LN2 &gt;&gt;&gt; 3);&#xD;  arr.push(octets | 0x80);&#xD;  while (--octets) {&#xD;    arr.push((len &gt;&gt;&gt; (octets &lt;&lt; 3)) &amp; 0xff);&#xD;  }&#xD;  arr.push(len);&#xD;}&#xD;&#xD;Signature.prototype.toDER = function toDER(enc) {&#xD;  var r = this.r.toArray();&#xD;  var s = this.s.toArray();&#xD;&#xD;  // Pad values&#xD;  if (r[0] &amp; 0x80)&#xD;    r = [ 0 ].concat(r);&#xD;  // Pad values&#xD;  if (s[0] &amp; 0x80)&#xD;    s = [ 0 ].concat(s);&#xD;&#xD;  r = rmPadding(r);&#xD;  s = rmPadding(s);&#xD;&#xD;  while (!s[0] &amp;&amp; !(s[1] &amp; 0x80)) {&#xD;    s = s.slice(1);&#xD;  }&#xD;  var arr = [ 0x02 ];&#xD;  constructLength(arr, r.length);&#xD;  arr = arr.concat(r);&#xD;  arr.push(0x02);&#xD;  constructLength(arr, s.length);&#xD;  var backHalf = arr.concat(s);&#xD;  var res = [ 0x30 ];&#xD;  constructLength(res, backHalf.length);&#xD;  res = res.concat(backHalf);&#xD;  return utils.encode(res, enc);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 318 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;var parseBytes = utils.parseBytes;&#xD;var KeyPair = __webpack_require__(319);&#xD;var Signature = __webpack_require__(320);&#xD;&#xD;function EDDSA(curve) {&#xD;  assert(curve === &apos;ed25519&apos;, &apos;only tested with ed25519 so far&apos;);&#xD;&#xD;  if (!(this instanceof EDDSA))&#xD;    return new EDDSA(curve);&#xD;&#xD;  var curve = elliptic.curves[curve].curve;&#xD;  this.curve = curve;&#xD;  this.g = curve.g;&#xD;  this.g.precompute(curve.n.bitLength() + 1);&#xD;&#xD;  this.pointClass = curve.point().constructor;&#xD;  this.encodingLength = Math.ceil(curve.n.bitLength() / 8);&#xD;  this.hash = hash.sha512;&#xD;}&#xD;&#xD;module.exports = EDDSA;&#xD;&#xD;/**&#xD;* @param {Array|String} message - message bytes&#xD;* @param {Array|String|KeyPair} secret - secret bytes or a keypair&#xD;* @returns {Signature} - signature&#xD;*/&#xD;EDDSA.prototype.sign = function sign(message, secret) {&#xD;  message = parseBytes(message);&#xD;  var key = this.keyFromSecret(secret);&#xD;  var r = this.hashInt(key.messagePrefix(), message);&#xD;  var R = this.g.mul(r);&#xD;  var Rencoded = this.encodePoint(R);&#xD;  var s_ = this.hashInt(Rencoded, key.pubBytes(), message)&#xD;               .mul(key.priv());&#xD;  var S = r.add(s_).umod(this.curve.n);&#xD;  return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });&#xD;};&#xD;&#xD;/**&#xD;* @param {Array} message - message bytes&#xD;* @param {Array|String|Signature} sig - sig bytes&#xD;* @param {Array|String|Point|KeyPair} pub - public key&#xD;* @returns {Boolean} - true if public key matches sig of message&#xD;*/&#xD;EDDSA.prototype.verify = function verify(message, sig, pub) {&#xD;  message = parseBytes(message);&#xD;  sig = this.makeSignature(sig);&#xD;  var key = this.keyFromPublic(pub);&#xD;  var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);&#xD;  var SG = this.g.mul(sig.S());&#xD;  var RplusAh = sig.R().add(key.pub().mul(h));&#xD;  return RplusAh.eq(SG);&#xD;};&#xD;&#xD;EDDSA.prototype.hashInt = function hashInt() {&#xD;  var hash = this.hash();&#xD;  for (var i = 0; i &lt; arguments.length; i++)&#xD;    hash.update(arguments[i]);&#xD;  return utils.intFromLE(hash.digest()).umod(this.curve.n);&#xD;};&#xD;&#xD;EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {&#xD;  return KeyPair.fromPublic(this, pub);&#xD;};&#xD;&#xD;EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {&#xD;  return KeyPair.fromSecret(this, secret);&#xD;};&#xD;&#xD;EDDSA.prototype.makeSignature = function makeSignature(sig) {&#xD;  if (sig instanceof Signature)&#xD;    return sig;&#xD;  return new Signature(this, sig);&#xD;};&#xD;&#xD;/**&#xD;* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2&#xD;*&#xD;* EDDSA defines methods for encoding and decoding points and integers. These are&#xD;* helper convenience methods, that pass along to utility functions implied&#xD;* parameters.&#xD;*&#xD;*/&#xD;EDDSA.prototype.encodePoint = function encodePoint(point) {&#xD;  var enc = point.getY().toArray(&apos;le&apos;, this.encodingLength);&#xD;  enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;&#xD;  return enc;&#xD;};&#xD;&#xD;EDDSA.prototype.decodePoint = function decodePoint(bytes) {&#xD;  bytes = utils.parseBytes(bytes);&#xD;&#xD;  var lastIx = bytes.length - 1;&#xD;  var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] &amp; &#126;0x80);&#xD;  var xIsOdd = (bytes[lastIx] &amp; 0x80) !== 0;&#xD;&#xD;  var y = utils.intFromLE(normed);&#xD;  return this.curve.pointFromY(y, xIsOdd);&#xD;};&#xD;&#xD;EDDSA.prototype.encodeInt = function encodeInt(num) {&#xD;  return num.toArray(&apos;le&apos;, this.encodingLength);&#xD;};&#xD;&#xD;EDDSA.prototype.decodeInt = function decodeInt(bytes) {&#xD;  return utils.intFromLE(bytes);&#xD;};&#xD;&#xD;EDDSA.prototype.isPoint = function isPoint(val) {&#xD;  return val instanceof this.pointClass;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 319 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;var parseBytes = utils.parseBytes;&#xD;var cachedProperty = utils.cachedProperty;&#xD;&#xD;/**&#xD;* @param {EDDSA} eddsa - instance&#xD;* @param {Object} params - public/private key parameters&#xD;*&#xD;* @param {Array&lt;Byte&gt;} [params.secret] - secret seed bytes&#xD;* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)&#xD;* @param {Array&lt;Byte&gt;} [params.pub] - public key point encoded as bytes&#xD;*&#xD;*/&#xD;function KeyPair(eddsa, params) {&#xD;  this.eddsa = eddsa;&#xD;  this._secret = parseBytes(params.secret);&#xD;  if (eddsa.isPoint(params.pub))&#xD;    this._pub = params.pub;&#xD;  else&#xD;    this._pubBytes = parseBytes(params.pub);&#xD;}&#xD;&#xD;KeyPair.fromPublic = function fromPublic(eddsa, pub) {&#xD;  if (pub instanceof KeyPair)&#xD;    return pub;&#xD;  return new KeyPair(eddsa, { pub: pub });&#xD;};&#xD;&#xD;KeyPair.fromSecret = function fromSecret(eddsa, secret) {&#xD;  if (secret instanceof KeyPair)&#xD;    return secret;&#xD;  return new KeyPair(eddsa, { secret: secret });&#xD;};&#xD;&#xD;KeyPair.prototype.secret = function secret() {&#xD;  return this._secret;&#xD;};&#xD;&#xD;cachedProperty(KeyPair, &apos;pubBytes&apos;, function pubBytes() {&#xD;  return this.eddsa.encodePoint(this.pub());&#xD;});&#xD;&#xD;cachedProperty(KeyPair, &apos;pub&apos;, function pub() {&#xD;  if (this._pubBytes)&#xD;    return this.eddsa.decodePoint(this._pubBytes);&#xD;  return this.eddsa.g.mul(this.priv());&#xD;});&#xD;&#xD;cachedProperty(KeyPair, &apos;privBytes&apos;, function privBytes() {&#xD;  var eddsa = this.eddsa;&#xD;  var hash = this.hash();&#xD;  var lastIx = eddsa.encodingLength - 1;&#xD;&#xD;  var a = hash.slice(0, eddsa.encodingLength);&#xD;  a[0] &amp;= 248;&#xD;  a[lastIx] &amp;= 127;&#xD;  a[lastIx] |= 64;&#xD;&#xD;  return a;&#xD;});&#xD;&#xD;cachedProperty(KeyPair, &apos;priv&apos;, function priv() {&#xD;  return this.eddsa.decodeInt(this.privBytes());&#xD;});&#xD;&#xD;cachedProperty(KeyPair, &apos;hash&apos;, function hash() {&#xD;  return this.eddsa.hash().update(this.secret()).digest();&#xD;});&#xD;&#xD;cachedProperty(KeyPair, &apos;messagePrefix&apos;, function messagePrefix() {&#xD;  return this.hash().slice(this.eddsa.encodingLength);&#xD;});&#xD;&#xD;KeyPair.prototype.sign = function sign(message) {&#xD;  assert(this._secret, &apos;KeyPair can only verify&apos;);&#xD;  return this.eddsa.sign(message, this);&#xD;};&#xD;&#xD;KeyPair.prototype.verify = function verify(message, sig) {&#xD;  return this.eddsa.verify(message, sig, this);&#xD;};&#xD;&#xD;KeyPair.prototype.getSecret = function getSecret(enc) {&#xD;  assert(this._secret, &apos;KeyPair is public only&apos;);&#xD;  return utils.encode(this.secret(), enc);&#xD;};&#xD;&#xD;KeyPair.prototype.getPublic = function getPublic(enc) {&#xD;  return utils.encode(this.pubBytes(), enc);&#xD;};&#xD;&#xD;module.exports = KeyPair;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 320 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var BN = __webpack_require__(11);&#xD;var elliptic = __webpack_require__(19);&#xD;var utils = elliptic.utils;&#xD;var assert = utils.assert;&#xD;var cachedProperty = utils.cachedProperty;&#xD;var parseBytes = utils.parseBytes;&#xD;&#xD;/**&#xD;* @param {EDDSA} eddsa - eddsa instance&#xD;* @param {Array&lt;Bytes&gt;|Object} sig -&#xD;* @param {Array&lt;Bytes&gt;|Point} [sig.R] - R point as Point or bytes&#xD;* @param {Array&lt;Bytes&gt;|bn} [sig.S] - S scalar as bn or bytes&#xD;* @param {Array&lt;Bytes&gt;} [sig.Rencoded] - R point encoded&#xD;* @param {Array&lt;Bytes&gt;} [sig.Sencoded] - S scalar encoded&#xD;*/&#xD;function Signature(eddsa, sig) {&#xD;  this.eddsa = eddsa;&#xD;&#xD;  if (typeof sig !== &apos;object&apos;)&#xD;    sig = parseBytes(sig);&#xD;&#xD;  if (Array.isArray(sig)) {&#xD;    sig = {&#xD;      R: sig.slice(0, eddsa.encodingLength),&#xD;      S: sig.slice(eddsa.encodingLength)&#xD;    };&#xD;  }&#xD;&#xD;  assert(sig.R &amp;&amp; sig.S, &apos;Signature without R or S&apos;);&#xD;&#xD;  if (eddsa.isPoint(sig.R))&#xD;    this._R = sig.R;&#xD;  if (sig.S instanceof BN)&#xD;    this._S = sig.S;&#xD;&#xD;  this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;&#xD;  this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;&#xD;}&#xD;&#xD;cachedProperty(Signature, &apos;S&apos;, function S() {&#xD;  return this.eddsa.decodeInt(this.Sencoded());&#xD;});&#xD;&#xD;cachedProperty(Signature, &apos;R&apos;, function R() {&#xD;  return this.eddsa.decodePoint(this.Rencoded());&#xD;});&#xD;&#xD;cachedProperty(Signature, &apos;Rencoded&apos;, function Rencoded() {&#xD;  return this.eddsa.encodePoint(this.R());&#xD;});&#xD;&#xD;cachedProperty(Signature, &apos;Sencoded&apos;, function Sencoded() {&#xD;  return this.eddsa.encodeInt(this.S());&#xD;});&#xD;&#xD;Signature.prototype.toBytes = function toBytes() {&#xD;  return this.Rencoded().concat(this.Sencoded());&#xD;};&#xD;&#xD;Signature.prototype.toHex = function toHex() {&#xD;  return utils.encode(this.toBytes(), &apos;hex&apos;).toUpperCase();&#xD;};&#xD;&#xD;module.exports = Signature;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 321 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;  doubles: {&#xD;    step: 4,&#xD;    points: [&#xD;      [&#xD;        &apos;e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a&apos;,&#xD;        &apos;f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508&apos;,&#xD;        &apos;11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf&apos;&#xD;      ],&#xD;      [&#xD;        &apos;175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739&apos;,&#xD;        &apos;d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695&apos;&#xD;      ],&#xD;      [&#xD;        &apos;363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640&apos;,&#xD;        &apos;4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c&apos;,&#xD;        &apos;4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36&apos;&#xD;      ],&#xD;      [&#xD;        &apos;723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda&apos;,&#xD;        &apos;96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa&apos;,&#xD;        &apos;5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999&apos;&#xD;      ],&#xD;      [&#xD;        &apos;100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0&apos;,&#xD;        &apos;cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d&apos;,&#xD;        &apos;9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d&apos;,&#xD;        &apos;e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088&apos;&#xD;      ],&#xD;      [&#xD;        &apos;da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1&apos;,&#xD;        &apos;9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0&apos;,&#xD;        &apos;5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047&apos;,&#xD;        &apos;10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862&apos;,&#xD;        &apos;283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453&apos;&#xD;      ],&#xD;      [&#xD;        &apos;6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7&apos;,&#xD;        &apos;7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160&apos;&#xD;      ],&#xD;      [&#xD;        &apos;3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd&apos;,&#xD;        &apos;56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0&apos;&#xD;      ],&#xD;      [&#xD;        &apos;85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83&apos;,&#xD;        &apos;7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a&apos;,&#xD;        &apos;53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589&apos;&#xD;      ],&#xD;      [&#xD;        &apos;6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8&apos;,&#xD;        &apos;bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d&apos;,&#xD;        &apos;4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725&apos;,&#xD;        &apos;7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd&apos;&#xD;      ],&#xD;      [&#xD;        &apos;213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754&apos;,&#xD;        &apos;4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2&apos;&#xD;      ],&#xD;      [&#xD;        &apos;4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c&apos;,&#xD;        &apos;17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6&apos;,&#xD;        &apos;6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39&apos;,&#xD;        &apos;c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891&apos;,&#xD;        &apos;893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b&apos;,&#xD;        &apos;febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03&apos;,&#xD;        &apos;2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d&apos;,&#xD;        &apos;eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070&apos;,&#xD;        &apos;7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4&apos;,&#xD;        &apos;e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da&apos;,&#xD;        &apos;662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11&apos;,&#xD;        &apos;1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e&apos;,&#xD;        &apos;efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41&apos;,&#xD;        &apos;2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51&apos;&#xD;      ],&#xD;      [&#xD;        &apos;b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef&apos;,&#xD;        &apos;67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8&apos;,&#xD;        &apos;db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120&apos;&#xD;      ],&#xD;      [&#xD;        &apos;324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d&apos;,&#xD;        &apos;648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84&apos;&#xD;      ],&#xD;      [&#xD;        &apos;4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96&apos;,&#xD;        &apos;35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd&apos;,&#xD;        &apos;ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5&apos;,&#xD;        &apos;9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266&apos;,&#xD;        &apos;40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71&apos;,&#xD;        &apos;34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac&apos;&#xD;      ],&#xD;      [&#xD;        &apos;928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac&apos;,&#xD;        &apos;c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751&apos;,&#xD;        &apos;1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962&apos;&#xD;      ],&#xD;      [&#xD;        &apos;ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e&apos;,&#xD;        &apos;493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907&apos;&#xD;      ],&#xD;      [&#xD;        &apos;827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241&apos;,&#xD;        &apos;c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec&apos;&#xD;      ],&#xD;      [&#xD;        &apos;eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3&apos;,&#xD;        &apos;be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f&apos;,&#xD;        &apos;4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414&apos;&#xD;      ],&#xD;      [&#xD;        &apos;1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19&apos;,&#xD;        &apos;aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd&apos;&#xD;      ],&#xD;      [&#xD;        &apos;146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be&apos;,&#xD;        &apos;b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0&apos;&#xD;      ],&#xD;      [&#xD;        &apos;fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9&apos;,&#xD;        &apos;6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811&apos;&#xD;      ],&#xD;      [&#xD;        &apos;da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2&apos;,&#xD;        &apos;8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13&apos;,&#xD;        &apos;7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c&apos;,&#xD;        &apos;ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73&apos;&#xD;      ],&#xD;      [&#xD;        &apos;959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba&apos;,&#xD;        &apos;2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151&apos;,&#xD;        &apos;e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405&apos;&#xD;      ],&#xD;      [&#xD;        &apos;64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073&apos;,&#xD;        &apos;d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458&apos;,&#xD;        &apos;38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b&apos;,&#xD;        &apos;69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27&apos;&#xD;      ],&#xD;      [&#xD;        &apos;bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366&apos;,&#xD;        &apos;d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa&apos;,&#xD;        &apos;40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0&apos;,&#xD;        &apos;620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945&apos;&#xD;      ],&#xD;      [&#xD;        &apos;dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787&apos;,&#xD;        &apos;7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e&apos;,&#xD;        &apos;ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82&apos;&#xD;      ]&#xD;    ]&#xD;  },&#xD;  naf: {&#xD;    wnd: 7,&#xD;    points: [&#xD;      [&#xD;        &apos;f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9&apos;,&#xD;        &apos;388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672&apos;&#xD;      ],&#xD;      [&#xD;        &apos;2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4&apos;,&#xD;        &apos;d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc&apos;,&#xD;        &apos;6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da&apos;&#xD;      ],&#xD;      [&#xD;        &apos;acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe&apos;,&#xD;        &apos;cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37&apos;&#xD;      ],&#xD;      [&#xD;        &apos;774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb&apos;,&#xD;        &apos;d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8&apos;,&#xD;        &apos;ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e&apos;,&#xD;        &apos;581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58&apos;&#xD;      ],&#xD;      [&#xD;        &apos;defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34&apos;,&#xD;        &apos;4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77&apos;&#xD;      ],&#xD;      [&#xD;        &apos;2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c&apos;,&#xD;        &apos;85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5&apos;,&#xD;        &apos;321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f&apos;,&#xD;        &apos;2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67&apos;&#xD;      ],&#xD;      [&#xD;        &apos;9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714&apos;,&#xD;        &apos;73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402&apos;&#xD;      ],&#xD;      [&#xD;        &apos;daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729&apos;,&#xD;        &apos;a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db&apos;,&#xD;        &apos;2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482&apos;&#xD;      ],&#xD;      [&#xD;        &apos;6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4&apos;,&#xD;        &apos;e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82&apos;&#xD;      ],&#xD;      [&#xD;        &apos;1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5&apos;,&#xD;        &apos;b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396&apos;&#xD;      ],&#xD;      [&#xD;        &apos;605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479&apos;,&#xD;        &apos;2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49&apos;&#xD;      ],&#xD;      [&#xD;        &apos;62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d&apos;,&#xD;        &apos;80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf&apos;&#xD;      ],&#xD;      [&#xD;        &apos;80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f&apos;,&#xD;        &apos;1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb&apos;,&#xD;        &apos;d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9&apos;,&#xD;        &apos;eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933&apos;&#xD;      ],&#xD;      [&#xD;        &apos;49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963&apos;,&#xD;        &apos;758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74&apos;,&#xD;        &apos;958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530&apos;,&#xD;        &apos;e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37&apos;&#xD;      ],&#xD;      [&#xD;        &apos;463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b&apos;,&#xD;        &apos;5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247&apos;,&#xD;        &apos;cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1&apos;,&#xD;        &apos;cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476&apos;&#xD;      ],&#xD;      [&#xD;        &apos;2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120&apos;,&#xD;        &apos;4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435&apos;,&#xD;        &apos;91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61&apos;&#xD;      ],&#xD;      [&#xD;        &apos;754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18&apos;,&#xD;        &apos;673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8&apos;,&#xD;        &apos;59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5&apos;&#xD;      ],&#xD;      [&#xD;        &apos;186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb&apos;,&#xD;        &apos;3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f&apos;,&#xD;        &apos;55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417&apos;&#xD;      ],&#xD;      [&#xD;        &apos;5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143&apos;,&#xD;        &apos;efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868&apos;&#xD;      ],&#xD;      [&#xD;        &apos;290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba&apos;,&#xD;        &apos;e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45&apos;,&#xD;        &apos;f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a&apos;,&#xD;        &apos;744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996&apos;&#xD;      ],&#xD;      [&#xD;        &apos;59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e&apos;,&#xD;        &apos;c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8&apos;,&#xD;        &apos;e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c&apos;,&#xD;        &apos;30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2&apos;&#xD;      ],&#xD;      [&#xD;        &apos;948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519&apos;,&#xD;        &apos;e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab&apos;,&#xD;        &apos;100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437&apos;&#xD;      ],&#xD;      [&#xD;        &apos;3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca&apos;,&#xD;        &apos;ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf&apos;,&#xD;        &apos;8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610&apos;,&#xD;        &apos;68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575&apos;&#xD;      ],&#xD;      [&#xD;        &apos;733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4&apos;,&#xD;        &apos;f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c&apos;,&#xD;        &apos;d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940&apos;,&#xD;        &apos;edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980&apos;,&#xD;        &apos;a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06&apos;&#xD;      ],&#xD;      [&#xD;        &apos;311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3&apos;,&#xD;        &apos;66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374&apos;&#xD;      ],&#xD;      [&#xD;        &apos;34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf&apos;,&#xD;        &apos;9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee&apos;&#xD;      ],&#xD;      [&#xD;        &apos;f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63&apos;,&#xD;        &apos;4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448&apos;,&#xD;        &apos;fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf&apos;,&#xD;        &apos;5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5&apos;,&#xD;        &apos;8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6&apos;,&#xD;        &apos;8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5&apos;,&#xD;        &apos;5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99&apos;,&#xD;        &apos;f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc&apos;&#xD;      ],&#xD;      [&#xD;        &apos;78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51&apos;,&#xD;        &apos;f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5&apos;,&#xD;        &apos;42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5&apos;,&#xD;        &apos;204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997&apos;,&#xD;        &apos;4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913&apos;&#xD;      ],&#xD;      [&#xD;        &apos;841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881&apos;,&#xD;        &apos;73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154&apos;&#xD;      ],&#xD;      [&#xD;        &apos;5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5&apos;,&#xD;        &apos;39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865&apos;&#xD;      ],&#xD;      [&#xD;        &apos;36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66&apos;,&#xD;        &apos;d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc&apos;&#xD;      ],&#xD;      [&#xD;        &apos;336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726&apos;,&#xD;        &apos;ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede&apos;,&#xD;        &apos;6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94&apos;,&#xD;        &apos;60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6&apos;&#xD;      ],&#xD;      [&#xD;        &apos;85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31&apos;,&#xD;        &apos;3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511&apos;&#xD;      ],&#xD;      [&#xD;        &apos;29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51&apos;,&#xD;        &apos;b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252&apos;,&#xD;        &apos;ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2&apos;&#xD;      ],&#xD;      [&#xD;        &apos;4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5&apos;,&#xD;        &apos;cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b&apos;,&#xD;        &apos;6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3&apos;&#xD;      ],&#xD;      [&#xD;        &apos;ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4&apos;,&#xD;        &apos;322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f&apos;,&#xD;        &apos;6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889&apos;,&#xD;        &apos;2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246&apos;,&#xD;        &apos;b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196&apos;&#xD;      ],&#xD;      [&#xD;        &apos;11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984&apos;,&#xD;        &apos;998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a&apos;,&#xD;        &apos;b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257&apos;&#xD;      ],&#xD;      [&#xD;        &apos;cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030&apos;,&#xD;        &apos;bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197&apos;,&#xD;        &apos;6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593&apos;,&#xD;        &apos;c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38&apos;&#xD;      ],&#xD;      [&#xD;        &apos;a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef&apos;,&#xD;        &apos;21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38&apos;,&#xD;        &apos;60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448&apos;&#xD;      ],&#xD;      [&#xD;        &apos;da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a&apos;,&#xD;        &apos;49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111&apos;,&#xD;        &apos;5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502&apos;,&#xD;        &apos;7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437&apos;&#xD;      ],&#xD;      [&#xD;        &apos;3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea&apos;,&#xD;        &apos;be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7&apos;&#xD;      ],&#xD;      [&#xD;        &apos;cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26&apos;,&#xD;        &apos;8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986&apos;,&#xD;        &apos;39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e&apos;,&#xD;        &apos;62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54&apos;&#xD;      ],&#xD;      [&#xD;        &apos;48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4&apos;,&#xD;        &apos;25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77&apos;&#xD;      ],&#xD;      [&#xD;        &apos;dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda&apos;,&#xD;        &apos;ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517&apos;&#xD;      ],&#xD;      [&#xD;        &apos;6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859&apos;,&#xD;        &apos;cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f&apos;,&#xD;        &apos;f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125&apos;&#xD;      ],&#xD;      [&#xD;        &apos;eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c&apos;,&#xD;        &apos;6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e&apos;&#xD;      ],&#xD;      [&#xD;        &apos;13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942&apos;,&#xD;        &apos;fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a&apos;,&#xD;        &apos;1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2&apos;&#xD;      ],&#xD;      [&#xD;        &apos;b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80&apos;,&#xD;        &apos;5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423&apos;&#xD;      ],&#xD;      [&#xD;        &apos;ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d&apos;,&#xD;        &apos;438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1&apos;,&#xD;        &apos;cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758&apos;&#xD;      ],&#xD;      [&#xD;        &apos;52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63&apos;,&#xD;        &apos;c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352&apos;,&#xD;        &apos;6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193&apos;,&#xD;        &apos;ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec&apos;&#xD;      ],&#xD;      [&#xD;        &apos;5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00&apos;,&#xD;        &apos;9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0&apos;&#xD;      ],&#xD;      [&#xD;        &apos;32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58&apos;,&#xD;        &apos;ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7&apos;,&#xD;        &apos;d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4&apos;&#xD;      ],&#xD;      [&#xD;        &apos;8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8&apos;,&#xD;        &apos;c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e&apos;,&#xD;        &apos;67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649&apos;&#xD;      ],&#xD;      [&#xD;        &apos;3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d&apos;,&#xD;        &apos;cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826&apos;&#xD;      ],&#xD;      [&#xD;        &apos;674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b&apos;,&#xD;        &apos;299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f&apos;,&#xD;        &apos;f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87&apos;&#xD;      ],&#xD;      [&#xD;        &apos;30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6&apos;,&#xD;        &apos;462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b&apos;&#xD;      ],&#xD;      [&#xD;        &apos;be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297&apos;,&#xD;        &apos;62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc&apos;&#xD;      ],&#xD;      [&#xD;        &apos;93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a&apos;,&#xD;        &apos;7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c&apos;&#xD;      ],&#xD;      [&#xD;        &apos;b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c&apos;,&#xD;        &apos;ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52&apos;,&#xD;        &apos;4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a&apos;&#xD;      ],&#xD;      [&#xD;        &apos;d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb&apos;,&#xD;        &apos;bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46&apos;&#xD;      ],&#xD;      [&#xD;        &apos;463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065&apos;,&#xD;        &apos;bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f&apos;&#xD;      ],&#xD;      [&#xD;        &apos;7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917&apos;,&#xD;        &apos;603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03&apos;&#xD;      ],&#xD;      [&#xD;        &apos;74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9&apos;,&#xD;        &apos;cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08&apos;&#xD;      ],&#xD;      [&#xD;        &apos;30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3&apos;,&#xD;        &apos;553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57&apos;,&#xD;        &apos;712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373&apos;&#xD;      ],&#xD;      [&#xD;        &apos;176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66&apos;,&#xD;        &apos;ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3&apos;&#xD;      ],&#xD;      [&#xD;        &apos;75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8&apos;,&#xD;        &apos;9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8&apos;&#xD;      ],&#xD;      [&#xD;        &apos;809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721&apos;,&#xD;        &apos;9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1&apos;&#xD;      ],&#xD;      [&#xD;        &apos;1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180&apos;,&#xD;        &apos;4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9&apos;&#xD;      ]&#xD;    ]&#xD;  }&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 322 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var utils = exports;&#xD;var BN = __webpack_require__(11);&#xD;var minAssert = __webpack_require__(32);&#xD;var minUtils = __webpack_require__(142);&#xD;&#xD;utils.assert = minAssert;&#xD;utils.toArray = minUtils.toArray;&#xD;utils.zero2 = minUtils.zero2;&#xD;utils.toHex = minUtils.toHex;&#xD;utils.encode = minUtils.encode;&#xD;&#xD;// Represent num in a w-NAF form&#xD;function getNAF(num, w) {&#xD;  var naf = [];&#xD;  var ws = 1 &lt;&lt; (w + 1);&#xD;  var k = num.clone();&#xD;  while (k.cmpn(1) &gt;= 0) {&#xD;    var z;&#xD;    if (k.isOdd()) {&#xD;      var mod = k.andln(ws - 1);&#xD;      if (mod &gt; (ws &gt;&gt; 1) - 1)&#xD;        z = (ws &gt;&gt; 1) - mod;&#xD;      else&#xD;        z = mod;&#xD;      k.isubn(z);&#xD;    } else {&#xD;      z = 0;&#xD;    }&#xD;    naf.push(z);&#xD;&#xD;    // Optimization, shift by word if possible&#xD;    var shift = (k.cmpn(0) !== 0 &amp;&amp; k.andln(ws - 1) === 0) ? (w + 1) : 1;&#xD;    for (var i = 1; i &lt; shift; i++)&#xD;      naf.push(0);&#xD;    k.iushrn(shift);&#xD;  }&#xD;&#xD;  return naf;&#xD;}&#xD;utils.getNAF = getNAF;&#xD;&#xD;// Represent k1, k2 in a Joint Sparse Form&#xD;function getJSF(k1, k2) {&#xD;  var jsf = [&#xD;    [],&#xD;    []&#xD;  ];&#xD;&#xD;  k1 = k1.clone();&#xD;  k2 = k2.clone();&#xD;  var d1 = 0;&#xD;  var d2 = 0;&#xD;  while (k1.cmpn(-d1) &gt; 0 || k2.cmpn(-d2) &gt; 0) {&#xD;&#xD;    // First phase&#xD;    var m14 = (k1.andln(3) + d1) &amp; 3;&#xD;    var m24 = (k2.andln(3) + d2) &amp; 3;&#xD;    if (m14 === 3)&#xD;      m14 = -1;&#xD;    if (m24 === 3)&#xD;      m24 = -1;&#xD;    var u1;&#xD;    if ((m14 &amp; 1) === 0) {&#xD;      u1 = 0;&#xD;    } else {&#xD;      var m8 = (k1.andln(7) + d1) &amp; 7;&#xD;      if ((m8 === 3 || m8 === 5) &amp;&amp; m24 === 2)&#xD;        u1 = -m14;&#xD;      else&#xD;        u1 = m14;&#xD;    }&#xD;    jsf[0].push(u1);&#xD;&#xD;    var u2;&#xD;    if ((m24 &amp; 1) === 0) {&#xD;      u2 = 0;&#xD;    } else {&#xD;      var m8 = (k2.andln(7) + d2) &amp; 7;&#xD;      if ((m8 === 3 || m8 === 5) &amp;&amp; m14 === 2)&#xD;        u2 = -m24;&#xD;      else&#xD;        u2 = m24;&#xD;    }&#xD;    jsf[1].push(u2);&#xD;&#xD;    // Second phase&#xD;    if (2 * d1 === u1 + 1)&#xD;      d1 = 1 - d1;&#xD;    if (2 * d2 === u2 + 1)&#xD;      d2 = 1 - d2;&#xD;    k1.iushrn(1);&#xD;    k2.iushrn(1);&#xD;  }&#xD;&#xD;  return jsf;&#xD;}&#xD;utils.getJSF = getJSF;&#xD;&#xD;function cachedProperty(obj, name, computer) {&#xD;  var key = &apos;_&apos; + name;&#xD;  obj.prototype[name] = function cachedProperty() {&#xD;    return this[key] !== undefined ? this[key] :&#xD;           this[key] = computer.call(this);&#xD;  };&#xD;}&#xD;utils.cachedProperty = cachedProperty;&#xD;&#xD;function parseBytes(bytes) {&#xD;  return typeof bytes === &apos;string&apos; ? utils.toArray(bytes, &apos;hex&apos;) :&#xD;                                     bytes;&#xD;}&#xD;utils.parseBytes = parseBytes;&#xD;&#xD;function intFromLE(bytes) {&#xD;  return new BN(bytes, &apos;hex&apos;, &apos;le&apos;);&#xD;}&#xD;utils.intFromLE = intFromLE;&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 323 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"_args": [&#xD;		[&#xD;			{&#xD;				"raw": "elliptic@^6.0.0",&#xD;				"scope": null,&#xD;				"escapedName": "elliptic",&#xD;				"name": "elliptic",&#xD;				"rawSpec": "^6.0.0",&#xD;				"spec": "&gt;=6.0.0 &lt;7.0.0",&#xD;				"type": "range"&#xD;			},&#xD;			"/Users/paulkaplan/dev/scratch-gui/node_modules/browserify-sign"&#xD;		]&#xD;	],&#xD;	"_from": "elliptic@&gt;=6.0.0 &lt;7.0.0",&#xD;	"_id": "elliptic@6.4.0",&#xD;	"_inCache": true,&#xD;	"_location": "/elliptic",&#xD;	"_nodeVersion": "7.0.0",&#xD;	"_npmOperationalInternal": {&#xD;		"host": "packages-18-east.internal.npmjs.com",&#xD;		"tmp": "tmp/elliptic-6.4.0.tgz_1487798866428_0.30510620190761983"&#xD;	},&#xD;	"_npmUser": {&#xD;		"name": "indutny",&#xD;		"email": "fedor@indutny.com"&#xD;	},&#xD;	"_npmVersion": "3.10.8",&#xD;	"_phantomChildren": {},&#xD;	"_requested": {&#xD;		"raw": "elliptic@^6.0.0",&#xD;		"scope": null,&#xD;		"escapedName": "elliptic",&#xD;		"name": "elliptic",&#xD;		"rawSpec": "^6.0.0",&#xD;		"spec": "&gt;=6.0.0 &lt;7.0.0",&#xD;		"type": "range"&#xD;	},&#xD;	"_requiredBy": [&#xD;		"/browserify-sign",&#xD;		"/create-ecdh"&#xD;	],&#xD;	"_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",&#xD;	"_shasum": "cac9af8762c85836187003c8dfe193e5e2eae5df",&#xD;	"_shrinkwrap": null,&#xD;	"_spec": "elliptic@^6.0.0",&#xD;	"_where": "/Users/paulkaplan/dev/scratch-gui/node_modules/browserify-sign",&#xD;	"author": {&#xD;		"name": "Fedor Indutny",&#xD;		"email": "fedor@indutny.com"&#xD;	},&#xD;	"bugs": {&#xD;		"url": "https://github.com/indutny/elliptic/issues"&#xD;	},&#xD;	"dependencies": {&#xD;		"bn.js": "^4.4.0",&#xD;		"brorand": "^1.0.1",&#xD;		"hash.js": "^1.0.0",&#xD;		"hmac-drbg": "^1.0.0",&#xD;		"inherits": "^2.0.1",&#xD;		"minimalistic-assert": "^1.0.0",&#xD;		"minimalistic-crypto-utils": "^1.0.0"&#xD;	},&#xD;	"description": "EC cryptography",&#xD;	"devDependencies": {&#xD;		"brfs": "^1.4.3",&#xD;		"coveralls": "^2.11.3",&#xD;		"grunt": "^0.4.5",&#xD;		"grunt-browserify": "^5.0.0",&#xD;		"grunt-cli": "^1.2.0",&#xD;		"grunt-contrib-connect": "^1.0.0",&#xD;		"grunt-contrib-copy": "^1.0.0",&#xD;		"grunt-contrib-uglify": "^1.0.1",&#xD;		"grunt-mocha-istanbul": "^3.0.1",&#xD;		"grunt-saucelabs": "^8.6.2",&#xD;		"istanbul": "^0.4.2",&#xD;		"jscs": "^2.9.0",&#xD;		"jshint": "^2.6.0",&#xD;		"mocha": "^2.1.0"&#xD;	},&#xD;	"directories": {},&#xD;	"dist": {&#xD;		"shasum": "cac9af8762c85836187003c8dfe193e5e2eae5df",&#xD;		"tarball": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz"&#xD;	},&#xD;	"files": [&#xD;		"lib"&#xD;	],&#xD;	"gitHead": "6b0d2b76caae91471649c8e21f0b1d3ba0f96090",&#xD;	"homepage": "https://github.com/indutny/elliptic",&#xD;	"keywords": [&#xD;		"EC",&#xD;		"Elliptic",&#xD;		"curve",&#xD;		"Cryptography"&#xD;	],&#xD;	"license": "MIT",&#xD;	"main": "lib/elliptic.js",&#xD;	"maintainers": [&#xD;		{&#xD;			"name": "indutny",&#xD;			"email": "fedor@indutny.com"&#xD;		}&#xD;	],&#xD;	"name": "elliptic",&#xD;	"optionalDependencies": {},&#xD;	"readme": "ERROR: No README data found!",&#xD;	"repository": {&#xD;		"type": "git",&#xD;		"url": "git+ssh://git@github.com/indutny/elliptic.git"&#xD;	},&#xD;	"scripts": {&#xD;		"jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",&#xD;		"jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",&#xD;		"lint": "npm run jscs &amp;&amp; npm run jshint",&#xD;		"test": "npm run lint &amp;&amp; npm run unit",&#xD;		"unit": "istanbul test _mocha --reporter=spec test/index.js",&#xD;		"version": "grunt dist &amp;&amp; git add dist/"&#xD;	},&#xD;	"version": "6.4.0"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 324 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var __WEBPACK_AMD_DEFINE_RESULT__;/*!&#xD;  Copyright (c) 2015 Jed Watson.&#xD;  Based on code that is Copyright 2013-2015, Facebook, Inc.&#xD;  All rights reserved.&#xD;*/&#xD;&#xD;(function () {&#xD;	&apos;use strict&apos;;&#xD;&#xD;	var canUseDOM = !!(&#xD;		typeof window !== &apos;undefined&apos; &amp;&amp;&#xD;		window.document &amp;&amp;&#xD;		window.document.createElement&#xD;	);&#xD;&#xD;	var ExecutionEnvironment = {&#xD;&#xD;		canUseDOM: canUseDOM,&#xD;&#xD;		canUseWorkers: typeof Worker !== &apos;undefined&apos;,&#xD;&#xD;		canUseEventListeners:&#xD;			canUseDOM &amp;&amp; !!(window.addEventListener || window.attachEvent),&#xD;&#xD;		canUseViewport: canUseDOM &amp;&amp; !!window.screen&#xD;&#xD;	};&#xD;&#xD;	if (true) {&#xD;		!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;			return ExecutionEnvironment;&#xD;		}.call(exports, __webpack_require__, exports, module),&#xD;				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;	} else if (typeof module !== &apos;undefined&apos; &amp;&amp; module.exports) {&#xD;		module.exports = ExecutionEnvironment;&#xD;	} else {&#xD;		window.ExecutionEnvironment = ExecutionEnvironment;&#xD;	}&#xD;&#xD;}());&#xD;&#xD;&#xD;/***/ }),&#xD;/* 325 */,&#xD;/* 326 */,&#xD;/* 327 */,&#xD;/* 328 */,&#xD;/* 329 */,&#xD;/* 330 */,&#xD;/* 331 */,&#xD;/* 332 */,&#xD;/* 333 */,&#xD;/* 334 */,&#xD;/* 335 */,&#xD;/* 336 */,&#xD;/* 337 */,&#xD;/* 338 */,&#xD;/* 339 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var isFunction = __webpack_require__(136)&#xD;&#xD;module.exports = forEach&#xD;&#xD;var toString = Object.prototype.toString&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty&#xD;&#xD;function forEach(list, iterator, context) {&#xD;    if (!isFunction(iterator)) {&#xD;        throw new TypeError(&apos;iterator must be a function&apos;)&#xD;    }&#xD;&#xD;    if (arguments.length &lt; 3) {&#xD;        context = this&#xD;    }&#xD;    &#xD;    if (toString.call(list) === &apos;[object Array]&apos;)&#xD;        forEachArray(list, iterator, context)&#xD;    else if (typeof list === &apos;string&apos;)&#xD;        forEachString(list, iterator, context)&#xD;    else&#xD;        forEachObject(list, iterator, context)&#xD;}&#xD;&#xD;function forEachArray(array, iterator, context) {&#xD;    for (var i = 0, len = array.length; i &lt; len; i++) {&#xD;        if (hasOwnProperty.call(array, i)) {&#xD;            iterator.call(context, array[i], i, array)&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;function forEachString(string, iterator, context) {&#xD;    for (var i = 0, len = string.length; i &lt; len; i++) {&#xD;        // no such thing as a sparse string.&#xD;        iterator.call(context, string.charAt(i), i, string)&#xD;    }&#xD;}&#xD;&#xD;function forEachObject(object, iterator, context) {&#xD;    for (var k in object) {&#xD;        if (hasOwnProperty.call(object, k)) {&#xD;            iterator.call(context, object[k], k, object)&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 340 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {if (typeof window !== "undefined") {&#xD;    module.exports = window;&#xD;} else if (typeof global !== "undefined") {&#xD;    module.exports = global;&#xD;} else if (typeof self !== "undefined"){&#xD;    module.exports = self;&#xD;} else {&#xD;    module.exports = {};&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 341 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var utils = hash.utils;&#xD;var assert = utils.assert;&#xD;&#xD;function BlockHash() {&#xD;  this.pending = null;&#xD;  this.pendingTotal = 0;&#xD;  this.blockSize = this.constructor.blockSize;&#xD;  this.outSize = this.constructor.outSize;&#xD;  this.hmacStrength = this.constructor.hmacStrength;&#xD;  this.padLength = this.constructor.padLength / 8;&#xD;  this.endian = &apos;big&apos;;&#xD;&#xD;  this._delta8 = this.blockSize / 8;&#xD;  this._delta32 = this.blockSize / 32;&#xD;}&#xD;exports.BlockHash = BlockHash;&#xD;&#xD;BlockHash.prototype.update = function update(msg, enc) {&#xD;  // Convert message to array, pad it, and join into 32bit blocks&#xD;  msg = utils.toArray(msg, enc);&#xD;  if (!this.pending)&#xD;    this.pending = msg;&#xD;  else&#xD;    this.pending = this.pending.concat(msg);&#xD;  this.pendingTotal += msg.length;&#xD;&#xD;  // Enough data, try updating&#xD;  if (this.pending.length &gt;= this._delta8) {&#xD;    msg = this.pending;&#xD;&#xD;    // Process pending data in blocks&#xD;    var r = msg.length % this._delta8;&#xD;    this.pending = msg.slice(msg.length - r, msg.length);&#xD;    if (this.pending.length === 0)&#xD;      this.pending = null;&#xD;&#xD;    msg = utils.join32(msg, 0, msg.length - r, this.endian);&#xD;    for (var i = 0; i &lt; msg.length; i += this._delta32)&#xD;      this._update(msg, i, i + this._delta32);&#xD;  }&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;BlockHash.prototype.digest = function digest(enc) {&#xD;  this.update(this._pad());&#xD;  assert(this.pending === null);&#xD;&#xD;  return this._digest(enc);&#xD;};&#xD;&#xD;BlockHash.prototype._pad = function pad() {&#xD;  var len = this.pendingTotal;&#xD;  var bytes = this._delta8;&#xD;  var k = bytes - ((len + this.padLength) % bytes);&#xD;  var res = new Array(k + this.padLength);&#xD;  res[0] = 0x80;&#xD;  for (var i = 1; i &lt; k; i++)&#xD;    res[i] = 0;&#xD;&#xD;  // Append length&#xD;  len &lt;&lt;= 3;&#xD;  if (this.endian === &apos;big&apos;) {&#xD;    for (var t = 8; t &lt; this.padLength; t++)&#xD;      res[i++] = 0;&#xD;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;    res[i++] = (len &gt;&gt;&gt; 24) &amp; 0xff;&#xD;    res[i++] = (len &gt;&gt;&gt; 16) &amp; 0xff;&#xD;    res[i++] = (len &gt;&gt;&gt; 8) &amp; 0xff;&#xD;    res[i++] = len &amp; 0xff;&#xD;  } else {&#xD;    res[i++] = len &amp; 0xff;&#xD;    res[i++] = (len &gt;&gt;&gt; 8) &amp; 0xff;&#xD;    res[i++] = (len &gt;&gt;&gt; 16) &amp; 0xff;&#xD;    res[i++] = (len &gt;&gt;&gt; 24) &amp; 0xff;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;    res[i++] = 0;&#xD;&#xD;    for (var t = 8; t &lt; this.padLength; t++)&#xD;      res[i++] = 0;&#xD;  }&#xD;&#xD;  return res;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 342 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var hmac = exports;&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var utils = hash.utils;&#xD;var assert = utils.assert;&#xD;&#xD;function Hmac(hash, key, enc) {&#xD;  if (!(this instanceof Hmac))&#xD;    return new Hmac(hash, key, enc);&#xD;  this.Hash = hash;&#xD;  this.blockSize = hash.blockSize / 8;&#xD;  this.outSize = hash.outSize / 8;&#xD;  this.inner = null;&#xD;  this.outer = null;&#xD;&#xD;  this._init(utils.toArray(key, enc));&#xD;}&#xD;module.exports = Hmac;&#xD;&#xD;Hmac.prototype._init = function init(key) {&#xD;  // Shorten key, if needed&#xD;  if (key.length &gt; this.blockSize)&#xD;    key = new this.Hash().update(key).digest();&#xD;  assert(key.length &lt;= this.blockSize);&#xD;&#xD;  // Add padding to key&#xD;  for (var i = key.length; i &lt; this.blockSize; i++)&#xD;    key.push(0);&#xD;&#xD;  for (var i = 0; i &lt; key.length; i++)&#xD;    key[i] ^= 0x36;&#xD;  this.inner = new this.Hash().update(key);&#xD;&#xD;  // 0x36 ^ 0x5c = 0x6a&#xD;  for (var i = 0; i &lt; key.length; i++)&#xD;    key[i] ^= 0x6a;&#xD;  this.outer = new this.Hash().update(key);&#xD;};&#xD;&#xD;Hmac.prototype.update = function update(msg, enc) {&#xD;  this.inner.update(msg, enc);&#xD;  return this;&#xD;};&#xD;&#xD;Hmac.prototype.digest = function digest(enc) {&#xD;  this.outer.update(this.inner.digest());&#xD;  return this.outer.digest(enc);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 343 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var utils = hash.utils;&#xD;&#xD;var rotl32 = utils.rotl32;&#xD;var sum32 = utils.sum32;&#xD;var sum32_3 = utils.sum32_3;&#xD;var sum32_4 = utils.sum32_4;&#xD;var BlockHash = hash.common.BlockHash;&#xD;&#xD;function RIPEMD160() {&#xD;  if (!(this instanceof RIPEMD160))&#xD;    return new RIPEMD160();&#xD;&#xD;  BlockHash.call(this);&#xD;&#xD;  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];&#xD;  this.endian = &apos;little&apos;;&#xD;}&#xD;utils.inherits(RIPEMD160, BlockHash);&#xD;exports.ripemd160 = RIPEMD160;&#xD;&#xD;RIPEMD160.blockSize = 512;&#xD;RIPEMD160.outSize = 160;&#xD;RIPEMD160.hmacStrength = 192;&#xD;RIPEMD160.padLength = 64;&#xD;&#xD;RIPEMD160.prototype._update = function update(msg, start) {&#xD;  var A = this.h[0];&#xD;  var B = this.h[1];&#xD;  var C = this.h[2];&#xD;  var D = this.h[3];&#xD;  var E = this.h[4];&#xD;  var Ah = A;&#xD;  var Bh = B;&#xD;  var Ch = C;&#xD;  var Dh = D;&#xD;  var Eh = E;&#xD;  for (var j = 0; j &lt; 80; j++) {&#xD;    var T = sum32(&#xD;      rotl32(&#xD;        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),&#xD;        s[j]),&#xD;      E);&#xD;    A = E;&#xD;    E = D;&#xD;    D = rotl32(C, 10);&#xD;    C = B;&#xD;    B = T;&#xD;    T = sum32(&#xD;      rotl32(&#xD;        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),&#xD;        sh[j]),&#xD;      Eh);&#xD;    Ah = Eh;&#xD;    Eh = Dh;&#xD;    Dh = rotl32(Ch, 10);&#xD;    Ch = Bh;&#xD;    Bh = T;&#xD;  }&#xD;  T = sum32_3(this.h[1], C, Dh);&#xD;  this.h[1] = sum32_3(this.h[2], D, Eh);&#xD;  this.h[2] = sum32_3(this.h[3], E, Ah);&#xD;  this.h[3] = sum32_3(this.h[4], A, Bh);&#xD;  this.h[4] = sum32_3(this.h[0], B, Ch);&#xD;  this.h[0] = T;&#xD;};&#xD;&#xD;RIPEMD160.prototype._digest = function digest(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h, &apos;little&apos;);&#xD;  else&#xD;    return utils.split32(this.h, &apos;little&apos;);&#xD;};&#xD;&#xD;function f(j, x, y, z) {&#xD;  if (j &lt;= 15)&#xD;    return x ^ y ^ z;&#xD;  else if (j &lt;= 31)&#xD;    return (x &amp; y) | ((&#126;x) &amp; z);&#xD;  else if (j &lt;= 47)&#xD;    return (x | (&#126;y)) ^ z;&#xD;  else if (j &lt;= 63)&#xD;    return (x &amp; z) | (y &amp; (&#126;z));&#xD;  else&#xD;    return x ^ (y | (&#126;z));&#xD;}&#xD;&#xD;function K(j) {&#xD;  if (j &lt;= 15)&#xD;    return 0x00000000;&#xD;  else if (j &lt;= 31)&#xD;    return 0x5a827999;&#xD;  else if (j &lt;= 47)&#xD;    return 0x6ed9eba1;&#xD;  else if (j &lt;= 63)&#xD;    return 0x8f1bbcdc;&#xD;  else&#xD;    return 0xa953fd4e;&#xD;}&#xD;&#xD;function Kh(j) {&#xD;  if (j &lt;= 15)&#xD;    return 0x50a28be6;&#xD;  else if (j &lt;= 31)&#xD;    return 0x5c4dd124;&#xD;  else if (j &lt;= 47)&#xD;    return 0x6d703ef3;&#xD;  else if (j &lt;= 63)&#xD;    return 0x7a6d76e9;&#xD;  else&#xD;    return 0x00000000;&#xD;}&#xD;&#xD;var r = [&#xD;  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,&#xD;  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,&#xD;  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,&#xD;  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,&#xD;  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13&#xD;];&#xD;&#xD;var rh = [&#xD;  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,&#xD;  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,&#xD;  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,&#xD;  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,&#xD;  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11&#xD;];&#xD;&#xD;var s = [&#xD;  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,&#xD;  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,&#xD;  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,&#xD;  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,&#xD;  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6&#xD;];&#xD;&#xD;var sh = [&#xD;  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,&#xD;  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,&#xD;  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,&#xD;  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,&#xD;  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11&#xD;];&#xD;&#xD;&#xD;/***/ }),&#xD;/* 344 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var utils = hash.utils;&#xD;var assert = utils.assert;&#xD;&#xD;var rotr32 = utils.rotr32;&#xD;var rotl32 = utils.rotl32;&#xD;var sum32 = utils.sum32;&#xD;var sum32_4 = utils.sum32_4;&#xD;var sum32_5 = utils.sum32_5;&#xD;var rotr64_hi = utils.rotr64_hi;&#xD;var rotr64_lo = utils.rotr64_lo;&#xD;var shr64_hi = utils.shr64_hi;&#xD;var shr64_lo = utils.shr64_lo;&#xD;var sum64 = utils.sum64;&#xD;var sum64_hi = utils.sum64_hi;&#xD;var sum64_lo = utils.sum64_lo;&#xD;var sum64_4_hi = utils.sum64_4_hi;&#xD;var sum64_4_lo = utils.sum64_4_lo;&#xD;var sum64_5_hi = utils.sum64_5_hi;&#xD;var sum64_5_lo = utils.sum64_5_lo;&#xD;var BlockHash = hash.common.BlockHash;&#xD;&#xD;var sha256_K = [&#xD;  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,&#xD;  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,&#xD;  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,&#xD;  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,&#xD;  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,&#xD;  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,&#xD;  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,&#xD;  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,&#xD;  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,&#xD;  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,&#xD;  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,&#xD;  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,&#xD;  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,&#xD;  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,&#xD;  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,&#xD;  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2&#xD;];&#xD;&#xD;var sha512_K = [&#xD;  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,&#xD;  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,&#xD;  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,&#xD;  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,&#xD;  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,&#xD;  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,&#xD;  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,&#xD;  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,&#xD;  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,&#xD;  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,&#xD;  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,&#xD;  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,&#xD;  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,&#xD;  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,&#xD;  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,&#xD;  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,&#xD;  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,&#xD;  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,&#xD;  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,&#xD;  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,&#xD;  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,&#xD;  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,&#xD;  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,&#xD;  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,&#xD;  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,&#xD;  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,&#xD;  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,&#xD;  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,&#xD;  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,&#xD;  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,&#xD;  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,&#xD;  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,&#xD;  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,&#xD;  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,&#xD;  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,&#xD;  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,&#xD;  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,&#xD;  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,&#xD;  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,&#xD;  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817&#xD;];&#xD;&#xD;var sha1_K = [&#xD;  0x5A827999, 0x6ED9EBA1,&#xD;  0x8F1BBCDC, 0xCA62C1D6&#xD;];&#xD;&#xD;function SHA256() {&#xD;  if (!(this instanceof SHA256))&#xD;    return new SHA256();&#xD;&#xD;  BlockHash.call(this);&#xD;  this.h = [ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,&#xD;             0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 ];&#xD;  this.k = sha256_K;&#xD;  this.W = new Array(64);&#xD;}&#xD;utils.inherits(SHA256, BlockHash);&#xD;exports.sha256 = SHA256;&#xD;&#xD;SHA256.blockSize = 512;&#xD;SHA256.outSize = 256;&#xD;SHA256.hmacStrength = 192;&#xD;SHA256.padLength = 64;&#xD;&#xD;SHA256.prototype._update = function _update(msg, start) {&#xD;  var W = this.W;&#xD;&#xD;  for (var i = 0; i &lt; 16; i++)&#xD;    W[i] = msg[start + i];&#xD;  for (; i &lt; W.length; i++)&#xD;    W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);&#xD;&#xD;  var a = this.h[0];&#xD;  var b = this.h[1];&#xD;  var c = this.h[2];&#xD;  var d = this.h[3];&#xD;  var e = this.h[4];&#xD;  var f = this.h[5];&#xD;  var g = this.h[6];&#xD;  var h = this.h[7];&#xD;&#xD;  assert(this.k.length === W.length);&#xD;  for (var i = 0; i &lt; W.length; i++) {&#xD;    var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);&#xD;    var T2 = sum32(s0_256(a), maj32(a, b, c));&#xD;    h = g;&#xD;    g = f;&#xD;    f = e;&#xD;    e = sum32(d, T1);&#xD;    d = c;&#xD;    c = b;&#xD;    b = a;&#xD;    a = sum32(T1, T2);&#xD;  }&#xD;&#xD;  this.h[0] = sum32(this.h[0], a);&#xD;  this.h[1] = sum32(this.h[1], b);&#xD;  this.h[2] = sum32(this.h[2], c);&#xD;  this.h[3] = sum32(this.h[3], d);&#xD;  this.h[4] = sum32(this.h[4], e);&#xD;  this.h[5] = sum32(this.h[5], f);&#xD;  this.h[6] = sum32(this.h[6], g);&#xD;  this.h[7] = sum32(this.h[7], h);&#xD;};&#xD;&#xD;SHA256.prototype._digest = function digest(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h, &apos;big&apos;);&#xD;  else&#xD;    return utils.split32(this.h, &apos;big&apos;);&#xD;};&#xD;&#xD;function SHA224() {&#xD;  if (!(this instanceof SHA224))&#xD;    return new SHA224();&#xD;&#xD;  SHA256.call(this);&#xD;  this.h = [ 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,&#xD;             0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];&#xD;}&#xD;utils.inherits(SHA224, SHA256);&#xD;exports.sha224 = SHA224;&#xD;&#xD;SHA224.blockSize = 512;&#xD;SHA224.outSize = 224;&#xD;SHA224.hmacStrength = 192;&#xD;SHA224.padLength = 64;&#xD;&#xD;SHA224.prototype._digest = function digest(enc) {&#xD;  // Just truncate output&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h.slice(0, 7), &apos;big&apos;);&#xD;  else&#xD;    return utils.split32(this.h.slice(0, 7), &apos;big&apos;);&#xD;};&#xD;&#xD;function SHA512() {&#xD;  if (!(this instanceof SHA512))&#xD;    return new SHA512();&#xD;&#xD;  BlockHash.call(this);&#xD;  this.h = [ 0x6a09e667, 0xf3bcc908,&#xD;             0xbb67ae85, 0x84caa73b,&#xD;             0x3c6ef372, 0xfe94f82b,&#xD;             0xa54ff53a, 0x5f1d36f1,&#xD;             0x510e527f, 0xade682d1,&#xD;             0x9b05688c, 0x2b3e6c1f,&#xD;             0x1f83d9ab, 0xfb41bd6b,&#xD;             0x5be0cd19, 0x137e2179 ];&#xD;  this.k = sha512_K;&#xD;  this.W = new Array(160);&#xD;}&#xD;utils.inherits(SHA512, BlockHash);&#xD;exports.sha512 = SHA512;&#xD;&#xD;SHA512.blockSize = 1024;&#xD;SHA512.outSize = 512;&#xD;SHA512.hmacStrength = 192;&#xD;SHA512.padLength = 128;&#xD;&#xD;SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {&#xD;  var W = this.W;&#xD;&#xD;  // 32 x 32bit words&#xD;  for (var i = 0; i &lt; 32; i++)&#xD;    W[i] = msg[start + i];&#xD;  for (; i &lt; W.length; i += 2) {&#xD;    var c0_hi = g1_512_hi(W[i - 4], W[i - 3]);  // i - 2&#xD;    var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);&#xD;    var c1_hi = W[i - 14];  // i - 7&#xD;    var c1_lo = W[i - 13];&#xD;    var c2_hi = g0_512_hi(W[i - 30], W[i - 29]);  // i - 15&#xD;    var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);&#xD;    var c3_hi = W[i - 32];  // i - 16&#xD;    var c3_lo = W[i - 31];&#xD;&#xD;    W[i] = sum64_4_hi(c0_hi, c0_lo,&#xD;                      c1_hi, c1_lo,&#xD;                      c2_hi, c2_lo,&#xD;                      c3_hi, c3_lo);&#xD;    W[i + 1] = sum64_4_lo(c0_hi, c0_lo,&#xD;                          c1_hi, c1_lo,&#xD;                          c2_hi, c2_lo,&#xD;                          c3_hi, c3_lo);&#xD;  }&#xD;};&#xD;&#xD;SHA512.prototype._update = function _update(msg, start) {&#xD;  this._prepareBlock(msg, start);&#xD;&#xD;  var W = this.W;&#xD;&#xD;  var ah = this.h[0];&#xD;  var al = this.h[1];&#xD;  var bh = this.h[2];&#xD;  var bl = this.h[3];&#xD;  var ch = this.h[4];&#xD;  var cl = this.h[5];&#xD;  var dh = this.h[6];&#xD;  var dl = this.h[7];&#xD;  var eh = this.h[8];&#xD;  var el = this.h[9];&#xD;  var fh = this.h[10];&#xD;  var fl = this.h[11];&#xD;  var gh = this.h[12];&#xD;  var gl = this.h[13];&#xD;  var hh = this.h[14];&#xD;  var hl = this.h[15];&#xD;&#xD;  assert(this.k.length === W.length);&#xD;  for (var i = 0; i &lt; W.length; i += 2) {&#xD;    var c0_hi = hh;&#xD;    var c0_lo = hl;&#xD;    var c1_hi = s1_512_hi(eh, el);&#xD;    var c1_lo = s1_512_lo(eh, el);&#xD;    var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);&#xD;    var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);&#xD;    var c3_hi = this.k[i];&#xD;    var c3_lo = this.k[i + 1];&#xD;    var c4_hi = W[i];&#xD;    var c4_lo = W[i + 1];&#xD;&#xD;    var T1_hi = sum64_5_hi(c0_hi, c0_lo,&#xD;                           c1_hi, c1_lo,&#xD;                           c2_hi, c2_lo,&#xD;                           c3_hi, c3_lo,&#xD;                           c4_hi, c4_lo);&#xD;    var T1_lo = sum64_5_lo(c0_hi, c0_lo,&#xD;                           c1_hi, c1_lo,&#xD;                           c2_hi, c2_lo,&#xD;                           c3_hi, c3_lo,&#xD;                           c4_hi, c4_lo);&#xD;&#xD;    var c0_hi = s0_512_hi(ah, al);&#xD;    var c0_lo = s0_512_lo(ah, al);&#xD;    var c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);&#xD;    var c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);&#xD;&#xD;    var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);&#xD;    var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);&#xD;&#xD;    hh = gh;&#xD;    hl = gl;&#xD;&#xD;    gh = fh;&#xD;    gl = fl;&#xD;&#xD;    fh = eh;&#xD;    fl = el;&#xD;&#xD;    eh = sum64_hi(dh, dl, T1_hi, T1_lo);&#xD;    el = sum64_lo(dl, dl, T1_hi, T1_lo);&#xD;&#xD;    dh = ch;&#xD;    dl = cl;&#xD;&#xD;    ch = bh;&#xD;    cl = bl;&#xD;&#xD;    bh = ah;&#xD;    bl = al;&#xD;&#xD;    ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);&#xD;    al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);&#xD;  }&#xD;&#xD;  sum64(this.h, 0, ah, al);&#xD;  sum64(this.h, 2, bh, bl);&#xD;  sum64(this.h, 4, ch, cl);&#xD;  sum64(this.h, 6, dh, dl);&#xD;  sum64(this.h, 8, eh, el);&#xD;  sum64(this.h, 10, fh, fl);&#xD;  sum64(this.h, 12, gh, gl);&#xD;  sum64(this.h, 14, hh, hl);&#xD;};&#xD;&#xD;SHA512.prototype._digest = function digest(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h, &apos;big&apos;);&#xD;  else&#xD;    return utils.split32(this.h, &apos;big&apos;);&#xD;};&#xD;&#xD;function SHA384() {&#xD;  if (!(this instanceof SHA384))&#xD;    return new SHA384();&#xD;&#xD;  SHA512.call(this);&#xD;  this.h = [ 0xcbbb9d5d, 0xc1059ed8,&#xD;             0x629a292a, 0x367cd507,&#xD;             0x9159015a, 0x3070dd17,&#xD;             0x152fecd8, 0xf70e5939,&#xD;             0x67332667, 0xffc00b31,&#xD;             0x8eb44a87, 0x68581511,&#xD;             0xdb0c2e0d, 0x64f98fa7,&#xD;             0x47b5481d, 0xbefa4fa4 ];&#xD;}&#xD;utils.inherits(SHA384, SHA512);&#xD;exports.sha384 = SHA384;&#xD;&#xD;SHA384.blockSize = 1024;&#xD;SHA384.outSize = 384;&#xD;SHA384.hmacStrength = 192;&#xD;SHA384.padLength = 128;&#xD;&#xD;SHA384.prototype._digest = function digest(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h.slice(0, 12), &apos;big&apos;);&#xD;  else&#xD;    return utils.split32(this.h.slice(0, 12), &apos;big&apos;);&#xD;};&#xD;&#xD;function SHA1() {&#xD;  if (!(this instanceof SHA1))&#xD;    return new SHA1();&#xD;&#xD;  BlockHash.call(this);&#xD;  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe,&#xD;             0x10325476, 0xc3d2e1f0 ];&#xD;  this.W = new Array(80);&#xD;}&#xD;&#xD;utils.inherits(SHA1, BlockHash);&#xD;exports.sha1 = SHA1;&#xD;&#xD;SHA1.blockSize = 512;&#xD;SHA1.outSize = 160;&#xD;SHA1.hmacStrength = 80;&#xD;SHA1.padLength = 64;&#xD;&#xD;SHA1.prototype._update = function _update(msg, start) {&#xD;  var W = this.W;&#xD;&#xD;  for (var i = 0; i &lt; 16; i++)&#xD;    W[i] = msg[start + i];&#xD;&#xD;  for(; i &lt; W.length; i++)&#xD;    W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);&#xD;&#xD;  var a = this.h[0];&#xD;  var b = this.h[1];&#xD;  var c = this.h[2];&#xD;  var d = this.h[3];&#xD;  var e = this.h[4];&#xD;&#xD;  for (var i = 0; i &lt; W.length; i++) {&#xD;    var s = &#126;&#126;(i / 20);&#xD;    var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);&#xD;    e = d;&#xD;    d = c;&#xD;    c = rotl32(b, 30);&#xD;    b = a;&#xD;    a = t;&#xD;  }&#xD;&#xD;  this.h[0] = sum32(this.h[0], a);&#xD;  this.h[1] = sum32(this.h[1], b);&#xD;  this.h[2] = sum32(this.h[2], c);&#xD;  this.h[3] = sum32(this.h[3], d);&#xD;  this.h[4] = sum32(this.h[4], e);&#xD;};&#xD;&#xD;SHA1.prototype._digest = function digest(enc) {&#xD;  if (enc === &apos;hex&apos;)&#xD;    return utils.toHex32(this.h, &apos;big&apos;);&#xD;  else&#xD;    return utils.split32(this.h, &apos;big&apos;);&#xD;};&#xD;&#xD;function ch32(x, y, z) {&#xD;  return (x &amp; y) ^ ((&#126;x) &amp; z);&#xD;}&#xD;&#xD;function maj32(x, y, z) {&#xD;  return (x &amp; y) ^ (x &amp; z) ^ (y &amp; z);&#xD;}&#xD;&#xD;function p32(x, y, z) {&#xD;  return x ^ y ^ z;&#xD;}&#xD;&#xD;function s0_256(x) {&#xD;  return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);&#xD;}&#xD;&#xD;function s1_256(x) {&#xD;  return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);&#xD;}&#xD;&#xD;function g0_256(x) {&#xD;  return rotr32(x, 7) ^ rotr32(x, 18) ^ (x &gt;&gt;&gt; 3);&#xD;}&#xD;&#xD;function g1_256(x) {&#xD;  return rotr32(x, 17) ^ rotr32(x, 19) ^ (x &gt;&gt;&gt; 10);&#xD;}&#xD;&#xD;function ft_1(s, x, y, z) {&#xD;  if (s === 0)&#xD;    return ch32(x, y, z);&#xD;  if (s === 1 || s === 3)&#xD;    return p32(x, y, z);&#xD;  if (s === 2)&#xD;    return maj32(x, y, z);&#xD;}&#xD;&#xD;function ch64_hi(xh, xl, yh, yl, zh, zl) {&#xD;  var r = (xh &amp; yh) ^ ((&#126;xh) &amp; zh);&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function ch64_lo(xh, xl, yh, yl, zh, zl) {&#xD;  var r = (xl &amp; yl) ^ ((&#126;xl) &amp; zl);&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function maj64_hi(xh, xl, yh, yl, zh, zl) {&#xD;  var r = (xh &amp; yh) ^ (xh &amp; zh) ^ (yh &amp; zh);&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function maj64_lo(xh, xl, yh, yl, zh, zl) {&#xD;  var r = (xl &amp; yl) ^ (xl &amp; zl) ^ (yl &amp; zl);&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function s0_512_hi(xh, xl) {&#xD;  var c0_hi = rotr64_hi(xh, xl, 28);&#xD;  var c1_hi = rotr64_hi(xl, xh, 2);  // 34&#xD;  var c2_hi = rotr64_hi(xl, xh, 7);  // 39&#xD;&#xD;  var r = c0_hi ^ c1_hi ^ c2_hi;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function s0_512_lo(xh, xl) {&#xD;  var c0_lo = rotr64_lo(xh, xl, 28);&#xD;  var c1_lo = rotr64_lo(xl, xh, 2);  // 34&#xD;  var c2_lo = rotr64_lo(xl, xh, 7);  // 39&#xD;&#xD;  var r = c0_lo ^ c1_lo ^ c2_lo;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function s1_512_hi(xh, xl) {&#xD;  var c0_hi = rotr64_hi(xh, xl, 14);&#xD;  var c1_hi = rotr64_hi(xh, xl, 18);&#xD;  var c2_hi = rotr64_hi(xl, xh, 9);  // 41&#xD;&#xD;  var r = c0_hi ^ c1_hi ^ c2_hi;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function s1_512_lo(xh, xl) {&#xD;  var c0_lo = rotr64_lo(xh, xl, 14);&#xD;  var c1_lo = rotr64_lo(xh, xl, 18);&#xD;  var c2_lo = rotr64_lo(xl, xh, 9);  // 41&#xD;&#xD;  var r = c0_lo ^ c1_lo ^ c2_lo;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function g0_512_hi(xh, xl) {&#xD;  var c0_hi = rotr64_hi(xh, xl, 1);&#xD;  var c1_hi = rotr64_hi(xh, xl, 8);&#xD;  var c2_hi = shr64_hi(xh, xl, 7);&#xD;&#xD;  var r = c0_hi ^ c1_hi ^ c2_hi;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function g0_512_lo(xh, xl) {&#xD;  var c0_lo = rotr64_lo(xh, xl, 1);&#xD;  var c1_lo = rotr64_lo(xh, xl, 8);&#xD;  var c2_lo = shr64_lo(xh, xl, 7);&#xD;&#xD;  var r = c0_lo ^ c1_lo ^ c2_lo;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function g1_512_hi(xh, xl) {&#xD;  var c0_hi = rotr64_hi(xh, xl, 19);&#xD;  var c1_hi = rotr64_hi(xl, xh, 29);  // 61&#xD;  var c2_hi = shr64_hi(xh, xl, 6);&#xD;&#xD;  var r = c0_hi ^ c1_hi ^ c2_hi;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;function g1_512_lo(xh, xl) {&#xD;  var c0_lo = rotr64_lo(xh, xl, 19);&#xD;  var c1_lo = rotr64_lo(xl, xh, 29);  // 61&#xD;  var c2_lo = shr64_lo(xh, xl, 6);&#xD;&#xD;  var r = c0_lo ^ c1_lo ^ c2_lo;&#xD;  if (r &lt; 0)&#xD;    r += 0x100000000;&#xD;  return r;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 345 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var utils = exports;&#xD;var inherits = __webpack_require__(5);&#xD;&#xD;function toArray(msg, enc) {&#xD;  if (Array.isArray(msg))&#xD;    return msg.slice();&#xD;  if (!msg)&#xD;    return [];&#xD;  var res = [];&#xD;  if (typeof msg === &apos;string&apos;) {&#xD;    if (!enc) {&#xD;      for (var i = 0; i &lt; msg.length; i++) {&#xD;        var c = msg.charCodeAt(i);&#xD;        var hi = c &gt;&gt; 8;&#xD;        var lo = c &amp; 0xff;&#xD;        if (hi)&#xD;          res.push(hi, lo);&#xD;        else&#xD;          res.push(lo);&#xD;      }&#xD;    } else if (enc === &apos;hex&apos;) {&#xD;      msg = msg.replace(/[^a-z0-9]+/ig, &apos;&apos;);&#xD;      if (msg.length % 2 !== 0)&#xD;        msg = &apos;0&apos; + msg;&#xD;      for (var i = 0; i &lt; msg.length; i += 2)&#xD;        res.push(parseInt(msg[i] + msg[i + 1], 16));&#xD;    }&#xD;  } else {&#xD;    for (var i = 0; i &lt; msg.length; i++)&#xD;      res[i] = msg[i] | 0;&#xD;  }&#xD;  return res;&#xD;}&#xD;utils.toArray = toArray;&#xD;&#xD;function toHex(msg) {&#xD;  var res = &apos;&apos;;&#xD;  for (var i = 0; i &lt; msg.length; i++)&#xD;    res += zero2(msg[i].toString(16));&#xD;  return res;&#xD;}&#xD;utils.toHex = toHex;&#xD;&#xD;function htonl(w) {&#xD;  var res = (w &gt;&gt;&gt; 24) |&#xD;            ((w &gt;&gt;&gt; 8) &amp; 0xff00) |&#xD;            ((w &lt;&lt; 8) &amp; 0xff0000) |&#xD;            ((w &amp; 0xff) &lt;&lt; 24);&#xD;  return res &gt;&gt;&gt; 0;&#xD;}&#xD;utils.htonl = htonl;&#xD;&#xD;function toHex32(msg, endian) {&#xD;  var res = &apos;&apos;;&#xD;  for (var i = 0; i &lt; msg.length; i++) {&#xD;    var w = msg[i];&#xD;    if (endian === &apos;little&apos;)&#xD;      w = htonl(w);&#xD;    res += zero8(w.toString(16));&#xD;  }&#xD;  return res;&#xD;}&#xD;utils.toHex32 = toHex32;&#xD;&#xD;function zero2(word) {&#xD;  if (word.length === 1)&#xD;    return &apos;0&apos; + word;&#xD;  else&#xD;    return word;&#xD;}&#xD;utils.zero2 = zero2;&#xD;&#xD;function zero8(word) {&#xD;  if (word.length === 7)&#xD;    return &apos;0&apos; + word;&#xD;  else if (word.length === 6)&#xD;    return &apos;00&apos; + word;&#xD;  else if (word.length === 5)&#xD;    return &apos;000&apos; + word;&#xD;  else if (word.length === 4)&#xD;    return &apos;0000&apos; + word;&#xD;  else if (word.length === 3)&#xD;    return &apos;00000&apos; + word;&#xD;  else if (word.length === 2)&#xD;    return &apos;000000&apos; + word;&#xD;  else if (word.length === 1)&#xD;    return &apos;0000000&apos; + word;&#xD;  else&#xD;    return word;&#xD;}&#xD;utils.zero8 = zero8;&#xD;&#xD;function join32(msg, start, end, endian) {&#xD;  var len = end - start;&#xD;  assert(len % 4 === 0);&#xD;  var res = new Array(len / 4);&#xD;  for (var i = 0, k = start; i &lt; res.length; i++, k += 4) {&#xD;    var w;&#xD;    if (endian === &apos;big&apos;)&#xD;      w = (msg[k] &lt;&lt; 24) | (msg[k + 1] &lt;&lt; 16) | (msg[k + 2] &lt;&lt; 8) | msg[k + 3];&#xD;    else&#xD;      w = (msg[k + 3] &lt;&lt; 24) | (msg[k + 2] &lt;&lt; 16) | (msg[k + 1] &lt;&lt; 8) | msg[k];&#xD;    res[i] = w &gt;&gt;&gt; 0;&#xD;  }&#xD;  return res;&#xD;}&#xD;utils.join32 = join32;&#xD;&#xD;function split32(msg, endian) {&#xD;  var res = new Array(msg.length * 4);&#xD;  for (var i = 0, k = 0; i &lt; msg.length; i++, k += 4) {&#xD;    var m = msg[i];&#xD;    if (endian === &apos;big&apos;) {&#xD;      res[k] = m &gt;&gt;&gt; 24;&#xD;      res[k + 1] = (m &gt;&gt;&gt; 16) &amp; 0xff;&#xD;      res[k + 2] = (m &gt;&gt;&gt; 8) &amp; 0xff;&#xD;      res[k + 3] = m &amp; 0xff;&#xD;    } else {&#xD;      res[k + 3] = m &gt;&gt;&gt; 24;&#xD;      res[k + 2] = (m &gt;&gt;&gt; 16) &amp; 0xff;&#xD;      res[k + 1] = (m &gt;&gt;&gt; 8) &amp; 0xff;&#xD;      res[k] = m &amp; 0xff;&#xD;    }&#xD;  }&#xD;  return res;&#xD;}&#xD;utils.split32 = split32;&#xD;&#xD;function rotr32(w, b) {&#xD;  return (w &gt;&gt;&gt; b) | (w &lt;&lt; (32 - b));&#xD;}&#xD;utils.rotr32 = rotr32;&#xD;&#xD;function rotl32(w, b) {&#xD;  return (w &lt;&lt; b) | (w &gt;&gt;&gt; (32 - b));&#xD;}&#xD;utils.rotl32 = rotl32;&#xD;&#xD;function sum32(a, b) {&#xD;  return (a + b) &gt;&gt;&gt; 0;&#xD;}&#xD;utils.sum32 = sum32;&#xD;&#xD;function sum32_3(a, b, c) {&#xD;  return (a + b + c) &gt;&gt;&gt; 0;&#xD;}&#xD;utils.sum32_3 = sum32_3;&#xD;&#xD;function sum32_4(a, b, c, d) {&#xD;  return (a + b + c + d) &gt;&gt;&gt; 0;&#xD;}&#xD;utils.sum32_4 = sum32_4;&#xD;&#xD;function sum32_5(a, b, c, d, e) {&#xD;  return (a + b + c + d + e) &gt;&gt;&gt; 0;&#xD;}&#xD;utils.sum32_5 = sum32_5;&#xD;&#xD;function assert(cond, msg) {&#xD;  if (!cond)&#xD;    throw new Error(msg || &apos;Assertion failed&apos;);&#xD;}&#xD;utils.assert = assert;&#xD;&#xD;utils.inherits = inherits;&#xD;&#xD;function sum64(buf, pos, ah, al) {&#xD;  var bh = buf[pos];&#xD;  var bl = buf[pos + 1];&#xD;&#xD;  var lo = (al + bl) &gt;&gt;&gt; 0;&#xD;  var hi = (lo &lt; al ? 1 : 0) + ah + bh;&#xD;  buf[pos] = hi &gt;&gt;&gt; 0;&#xD;  buf[pos + 1] = lo;&#xD;}&#xD;exports.sum64 = sum64;&#xD;&#xD;function sum64_hi(ah, al, bh, bl) {&#xD;  var lo = (al + bl) &gt;&gt;&gt; 0;&#xD;  var hi = (lo &lt; al ? 1 : 0) + ah + bh;&#xD;  return hi &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_hi = sum64_hi;&#xD;&#xD;function sum64_lo(ah, al, bh, bl) {&#xD;  var lo = al + bl;&#xD;  return lo &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_lo = sum64_lo;&#xD;&#xD;function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {&#xD;  var carry = 0;&#xD;  var lo = al;&#xD;  lo = (lo + bl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; al ? 1 : 0;&#xD;  lo = (lo + cl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; cl ? 1 : 0;&#xD;  lo = (lo + dl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; dl ? 1 : 0;&#xD;&#xD;  var hi = ah + bh + ch + dh + carry;&#xD;  return hi &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_4_hi = sum64_4_hi;&#xD;&#xD;function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {&#xD;  var lo = al + bl + cl + dl;&#xD;  return lo &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_4_lo = sum64_4_lo;&#xD;&#xD;function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {&#xD;  var carry = 0;&#xD;  var lo = al;&#xD;  lo = (lo + bl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; al ? 1 : 0;&#xD;  lo = (lo + cl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; cl ? 1 : 0;&#xD;  lo = (lo + dl) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; dl ? 1 : 0;&#xD;  lo = (lo + el) &gt;&gt;&gt; 0;&#xD;  carry += lo &lt; el ? 1 : 0;&#xD;&#xD;  var hi = ah + bh + ch + dh + eh + carry;&#xD;  return hi &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_5_hi = sum64_5_hi;&#xD;&#xD;function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {&#xD;  var lo = al + bl + cl + dl + el;&#xD;&#xD;  return lo &gt;&gt;&gt; 0;&#xD;};&#xD;exports.sum64_5_lo = sum64_5_lo;&#xD;&#xD;function rotr64_hi(ah, al, num) {&#xD;  var r = (al &lt;&lt; (32 - num)) | (ah &gt;&gt;&gt; num);&#xD;  return r &gt;&gt;&gt; 0;&#xD;};&#xD;exports.rotr64_hi = rotr64_hi;&#xD;&#xD;function rotr64_lo(ah, al, num) {&#xD;  var r = (ah &lt;&lt; (32 - num)) | (al &gt;&gt;&gt; num);&#xD;  return r &gt;&gt;&gt; 0;&#xD;};&#xD;exports.rotr64_lo = rotr64_lo;&#xD;&#xD;function shr64_hi(ah, al, num) {&#xD;  return ah &gt;&gt;&gt; num;&#xD;};&#xD;exports.shr64_hi = shr64_hi;&#xD;&#xD;function shr64_lo(ah, al, num) {&#xD;  var r = (ah &lt;&lt; (32 - num)) | (al &gt;&gt;&gt; num);&#xD;  return r &gt;&gt;&gt; 0;&#xD;};&#xD;exports.shr64_lo = shr64_lo;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 346 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var hash = __webpack_require__(31);&#xD;var utils = __webpack_require__(142);&#xD;var assert = __webpack_require__(32);&#xD;&#xD;function HmacDRBG(options) {&#xD;  if (!(this instanceof HmacDRBG))&#xD;    return new HmacDRBG(options);&#xD;  this.hash = options.hash;&#xD;  this.predResist = !!options.predResist;&#xD;&#xD;  this.outLen = this.hash.outSize;&#xD;  this.minEntropy = options.minEntropy || this.hash.hmacStrength;&#xD;&#xD;  this._reseed = null;&#xD;  this.reseedInterval = null;&#xD;  this.K = null;&#xD;  this.V = null;&#xD;&#xD;  var entropy = utils.toArray(options.entropy, options.entropyEnc || &apos;hex&apos;);&#xD;  var nonce = utils.toArray(options.nonce, options.nonceEnc || &apos;hex&apos;);&#xD;  var pers = utils.toArray(options.pers, options.persEnc || &apos;hex&apos;);&#xD;  assert(entropy.length &gt;= (this.minEntropy / 8),&#xD;         &apos;Not enough entropy. Minimum is: &apos; + this.minEntropy + &apos; bits&apos;);&#xD;  this._init(entropy, nonce, pers);&#xD;}&#xD;module.exports = HmacDRBG;&#xD;&#xD;HmacDRBG.prototype._init = function init(entropy, nonce, pers) {&#xD;  var seed = entropy.concat(nonce).concat(pers);&#xD;&#xD;  this.K = new Array(this.outLen / 8);&#xD;  this.V = new Array(this.outLen / 8);&#xD;  for (var i = 0; i &lt; this.V.length; i++) {&#xD;    this.K[i] = 0x00;&#xD;    this.V[i] = 0x01;&#xD;  }&#xD;&#xD;  this._update(seed);&#xD;  this._reseed = 1;&#xD;  this.reseedInterval = 0x1000000000000;  // 2^48&#xD;};&#xD;&#xD;HmacDRBG.prototype._hmac = function hmac() {&#xD;  return new hash.hmac(this.hash, this.K);&#xD;};&#xD;&#xD;HmacDRBG.prototype._update = function update(seed) {&#xD;  var kmac = this._hmac()&#xD;                 .update(this.V)&#xD;                 .update([ 0x00 ]);&#xD;  if (seed)&#xD;    kmac = kmac.update(seed);&#xD;  this.K = kmac.digest();&#xD;  this.V = this._hmac().update(this.V).digest();&#xD;  if (!seed)&#xD;    return;&#xD;&#xD;  this.K = this._hmac()&#xD;               .update(this.V)&#xD;               .update([ 0x01 ])&#xD;               .update(seed)&#xD;               .digest();&#xD;  this.V = this._hmac().update(this.V).digest();&#xD;};&#xD;&#xD;HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {&#xD;  // Optional entropy enc&#xD;  if (typeof entropyEnc !== &apos;string&apos;) {&#xD;    addEnc = add;&#xD;    add = entropyEnc;&#xD;    entropyEnc = null;&#xD;  }&#xD;&#xD;  entropy = utils.toArray(entropy, entropyEnc);&#xD;  add = utils.toArray(add, addEnc);&#xD;&#xD;  assert(entropy.length &gt;= (this.minEntropy / 8),&#xD;         &apos;Not enough entropy. Minimum is: &apos; + this.minEntropy + &apos; bits&apos;);&#xD;&#xD;  this._update(entropy.concat(add || []));&#xD;  this._reseed = 1;&#xD;};&#xD;&#xD;HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {&#xD;  if (this._reseed &gt; this.reseedInterval)&#xD;    throw new Error(&apos;Reseed is required&apos;);&#xD;&#xD;  // Optional encoding&#xD;  if (typeof enc !== &apos;string&apos;) {&#xD;    addEnc = add;&#xD;    add = enc;&#xD;    enc = null;&#xD;  }&#xD;&#xD;  // Optional additional data&#xD;  if (add) {&#xD;    add = utils.toArray(add, addEnc || &apos;hex&apos;);&#xD;    this._update(add);&#xD;  }&#xD;&#xD;  var temp = [];&#xD;  while (temp.length &lt; len) {&#xD;    this.V = this._hmac().update(this.V).digest();&#xD;    temp = temp.concat(this.V);&#xD;  }&#xD;&#xD;  var res = temp.slice(0, len);&#xD;  this._update(add);&#xD;  this._reseed++;&#xD;  return utils.encode(res, enc);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 347 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015, Yahoo! Inc.&#xD; * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.&#xD; */&#xD;&#xD;&#xD;var REACT_STATICS = {&#xD;    childContextTypes: true,&#xD;    contextTypes: true,&#xD;    defaultProps: true,&#xD;    displayName: true,&#xD;    getDefaultProps: true,&#xD;    mixins: true,&#xD;    propTypes: true,&#xD;    type: true&#xD;};&#xD;&#xD;var KNOWN_STATICS = {&#xD;    name: true,&#xD;    length: true,&#xD;    prototype: true,&#xD;    caller: true,&#xD;    arguments: true,&#xD;    arity: true&#xD;};&#xD;&#xD;var isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === &apos;function&apos;;&#xD;&#xD;module.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {&#xD;    if (typeof sourceComponent !== &apos;string&apos;) { // don&apos;t hoist over string (html) components&#xD;        var keys = Object.getOwnPropertyNames(sourceComponent);&#xD;&#xD;        /* istanbul ignore else */&#xD;        if (isGetOwnPropertySymbolsAvailable) {&#xD;            keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));&#xD;        }&#xD;&#xD;        for (var i = 0; i &lt; keys.length; ++i) {&#xD;            if (!REACT_STATICS[keys[i]] &amp;&amp; !KNOWN_STATICS[keys[i]] &amp;&amp; (!customStatics || !customStatics[keys[i]])) {&#xD;                try {&#xD;                    targetComponent[keys[i]] = sourceComponent[keys[i]];&#xD;                } catch (error) {&#xD;&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;&#xD;    return targetComponent;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 348 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var http = __webpack_require__(197);&#xD;&#xD;var https = module.exports;&#xD;&#xD;for (var key in http) {&#xD;    if (http.hasOwnProperty(key)) https[key] = http[key];&#xD;};&#xD;&#xD;https.request = function (params, cb) {&#xD;    if (!params) params = {};&#xD;    params.scheme = &apos;https&apos;;&#xD;    params.protocol = &apos;https:&apos;;&#xD;    return http.request.call(this, params, cb);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 349 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;exports.read = function (buffer, offset, isLE, mLen, nBytes) {&#xD;  var e, m&#xD;  var eLen = nBytes * 8 - mLen - 1&#xD;  var eMax = (1 &lt;&lt; eLen) - 1&#xD;  var eBias = eMax &gt;&gt; 1&#xD;  var nBits = -7&#xD;  var i = isLE ? (nBytes - 1) : 0&#xD;  var d = isLE ? -1 : 1&#xD;  var s = buffer[offset + i]&#xD;&#xD;  i += d&#xD;&#xD;  e = s &amp; ((1 &lt;&lt; (-nBits)) - 1)&#xD;  s &gt;&gt;= (-nBits)&#xD;  nBits += eLen&#xD;  for (; nBits &gt; 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}&#xD;&#xD;  m = e &amp; ((1 &lt;&lt; (-nBits)) - 1)&#xD;  e &gt;&gt;= (-nBits)&#xD;  nBits += mLen&#xD;  for (; nBits &gt; 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}&#xD;&#xD;  if (e === 0) {&#xD;    e = 1 - eBias&#xD;  } else if (e === eMax) {&#xD;    return m ? NaN : ((s ? -1 : 1) * Infinity)&#xD;  } else {&#xD;    m = m + Math.pow(2, mLen)&#xD;    e = e - eBias&#xD;  }&#xD;  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)&#xD;}&#xD;&#xD;exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {&#xD;  var e, m, c&#xD;  var eLen = nBytes * 8 - mLen - 1&#xD;  var eMax = (1 &lt;&lt; eLen) - 1&#xD;  var eBias = eMax &gt;&gt; 1&#xD;  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)&#xD;  var i = isLE ? 0 : (nBytes - 1)&#xD;  var d = isLE ? 1 : -1&#xD;  var s = value &lt; 0 || (value === 0 &amp;&amp; 1 / value &lt; 0) ? 1 : 0&#xD;&#xD;  value = Math.abs(value)&#xD;&#xD;  if (isNaN(value) || value === Infinity) {&#xD;    m = isNaN(value) ? 1 : 0&#xD;    e = eMax&#xD;  } else {&#xD;    e = Math.floor(Math.log(value) / Math.LN2)&#xD;    if (value * (c = Math.pow(2, -e)) &lt; 1) {&#xD;      e--&#xD;      c *= 2&#xD;    }&#xD;    if (e + eBias &gt;= 1) {&#xD;      value += rt / c&#xD;    } else {&#xD;      value += rt * Math.pow(2, 1 - eBias)&#xD;    }&#xD;    if (value * c &gt;= 2) {&#xD;      e++&#xD;      c /= 2&#xD;    }&#xD;&#xD;    if (e + eBias &gt;= eMax) {&#xD;      m = 0&#xD;      e = eMax&#xD;    } else if (e + eBias &gt;= 1) {&#xD;      m = (value * c - 1) * Math.pow(2, mLen)&#xD;      e = e + eBias&#xD;    } else {&#xD;      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)&#xD;      e = 0&#xD;    }&#xD;  }&#xD;&#xD;  for (; mLen &gt;= 8; buffer[offset + i] = m &amp; 0xff, i += d, m /= 256, mLen -= 8) {}&#xD;&#xD;  e = (e &lt;&lt; mLen) | m&#xD;  eLen += mLen&#xD;  for (; eLen &gt; 0; buffer[offset + i] = e &amp; 0xff, i += d, e /= 256, eLen -= 8) {}&#xD;&#xD;  buffer[offset + i - d] |= s * 128&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 350 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;&#xD;var indexOf = [].indexOf;&#xD;&#xD;module.exports = function(arr, obj){&#xD;  if (indexOf) return arr.indexOf(obj);&#xD;  for (var i = 0; i &lt; arr.length; ++i) {&#xD;    if (arr[i] === obj) return i;&#xD;  }&#xD;  return -1;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 351 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-2015, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Use invariant() to assert state which your program assumes to be true.&#xD; *&#xD; * Provide sprintf-style format (only %s is supported) and arguments&#xD; * to provide information about what broke and what you were&#xD; * expecting.&#xD; *&#xD; * The invariant message will be stripped in production, but the invariant&#xD; * will remain to ensure logic does not differ in production.&#xD; */&#xD;&#xD;var invariant = function(condition, format, a, b, c, d, e, f) {&#xD;  if (true) {&#xD;    if (format === undefined) {&#xD;      throw new Error(&apos;invariant requires an error message argument&apos;);&#xD;    }&#xD;  }&#xD;&#xD;  if (!condition) {&#xD;    var error;&#xD;    if (format === undefined) {&#xD;      error = new Error(&#xD;        &apos;Minified exception occurred; use the non-minified dev environment &apos; +&#xD;        &apos;for the full error message and additional helpful warnings.&apos;&#xD;      );&#xD;    } else {&#xD;      var args = [a, b, c, d, e, f];&#xD;      var argIndex = 0;&#xD;      error = new Error(&#xD;        format.replace(/%s/g, function() { return args[argIndex++]; })&#xD;      );&#xD;      error.name = &apos;Invariant Violation&apos;;&#xD;    }&#xD;&#xD;    error.framesToPop = 1; // we don&apos;t care about invariant&apos;s own frame&#xD;    throw error;&#xD;  }&#xD;};&#xD;&#xD;module.exports = invariant;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 352 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = loadImage;&#xD;function loadImage (src, opt, callback) {&#xD;  if (typeof opt === &apos;function&apos;) {&#xD;    callback = opt;&#xD;    opt = null;&#xD;  }&#xD;&#xD;  var el = document.createElement(&apos;img&apos;);&#xD;  var locked;&#xD;&#xD;  el.onload = function onLoaded () {&#xD;    if (locked) return;&#xD;    locked = true;&#xD;&#xD;    if (callback) callback(undefined, el);&#xD;  };&#xD;&#xD;  el.onerror = function onError () {&#xD;    if (locked) return;&#xD;    locked = true;&#xD;&#xD;    if (callback) callback(new Error(&apos;Unable to load "&apos; + src + &apos;"&apos;), el);&#xD;  };&#xD;&#xD;  if (opt &amp;&amp; opt.crossOrigin) {&#xD;    el.crossOrigin = opt.crossOrigin;&#xD;  }&#xD;&#xD;  el.src = src;&#xD;&#xD;  return el;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 353 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Symbol_js__ = __webpack_require__(138);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getRawTag_js__ = __webpack_require__(356);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__objectToString_js__ = __webpack_require__(357);&#xD;&#xD;&#xD;&#xD;&#xD;/** `Object#toString` result references. */&#xD;var nullTag = &apos;[object Null]&apos;,&#xD;    undefinedTag = &apos;[object Undefined]&apos;;&#xD;&#xD;/** Built-in value references. */&#xD;var symToStringTag = __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */] ? __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */].toStringTag : undefined;&#xD;&#xD;/**&#xD; * The base implementation of `getTag` without fallbacks for buggy environments.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @returns {string} Returns the `toStringTag`.&#xD; */&#xD;function baseGetTag(value) {&#xD;  if (value == null) {&#xD;    return value === undefined ? undefinedTag : nullTag;&#xD;  }&#xD;  return (symToStringTag &amp;&amp; symToStringTag in Object(value))&#xD;    ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__getRawTag_js__["a" /* default */])(value)&#xD;    : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__objectToString_js__["a" /* default */])(value);&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (baseGetTag);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 354 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */&#xD;var freeGlobal = typeof global == &apos;object&apos; &amp;&amp; global &amp;&amp; global.Object === Object &amp;&amp; global;&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (freeGlobal);&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 355 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__overArg_js__ = __webpack_require__(358);&#xD;&#xD;&#xD;/** Built-in value references. */&#xD;var getPrototype = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__overArg_js__["a" /* default */])(Object.getPrototypeOf, Object);&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (getPrototype);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 356 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Symbol_js__ = __webpack_require__(138);&#xD;&#xD;&#xD;/** Used for built-in method references. */&#xD;var objectProto = Object.prototype;&#xD;&#xD;/** Used to check objects for own properties. */&#xD;var hasOwnProperty = objectProto.hasOwnProperty;&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var nativeObjectToString = objectProto.toString;&#xD;&#xD;/** Built-in value references. */&#xD;var symToStringTag = __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */] ? __WEBPACK_IMPORTED_MODULE_0__Symbol_js__["a" /* default */].toStringTag : undefined;&#xD;&#xD;/**&#xD; * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @returns {string} Returns the raw `toStringTag`.&#xD; */&#xD;function getRawTag(value) {&#xD;  var isOwn = hasOwnProperty.call(value, symToStringTag),&#xD;      tag = value[symToStringTag];&#xD;&#xD;  try {&#xD;    value[symToStringTag] = undefined;&#xD;    var unmasked = true;&#xD;  } catch (e) {}&#xD;&#xD;  var result = nativeObjectToString.call(value);&#xD;  if (unmasked) {&#xD;    if (isOwn) {&#xD;      value[symToStringTag] = tag;&#xD;    } else {&#xD;      delete value[symToStringTag];&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (getRawTag);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 357 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/** Used for built-in method references. */&#xD;var objectProto = Object.prototype;&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var nativeObjectToString = objectProto.toString;&#xD;&#xD;/**&#xD; * Converts `value` to a string using `Object.prototype.toString`.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to convert.&#xD; * @returns {string} Returns the converted string.&#xD; */&#xD;function objectToString(value) {&#xD;  return nativeObjectToString.call(value);&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (objectToString);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 358 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Creates a unary function that invokes `func` with its argument transformed.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {Function} transform The argument transform.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function overArg(func, transform) {&#xD;  return function(arg) {&#xD;    return func(transform(arg));&#xD;  };&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (overArg);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 359 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__freeGlobal_js__ = __webpack_require__(354);&#xD;&#xD;&#xD;/** Detect free variable `self`. */&#xD;var freeSelf = typeof self == &apos;object&apos; &amp;&amp; self &amp;&amp; self.Object === Object &amp;&amp; self;&#xD;&#xD;/** Used as a reference to the global object. */&#xD;var root = __WEBPACK_IMPORTED_MODULE_0__freeGlobal_js__["a" /* default */] || freeSelf || Function(&apos;return this&apos;)();&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (root);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 360 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Checks if `value` is object-like. A value is object-like if it&apos;s not `null`&#xD; * and has a `typeof` result of "object".&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is object-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObjectLike({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike(_.noop);&#xD; * // =&gt; false&#xD; *&#xD; * _.isObjectLike(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObjectLike(value) {&#xD;  return value != null &amp;&amp; typeof value == &apos;object&apos;;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (isObjectLike);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 361 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {/**&#xD; * lodash (Custom Build) &lt;https://lodash.com/&gt;&#xD; * Build: `lodash modularize exports="npm" -o ./`&#xD; * Copyright jQuery Foundation and other contributors &lt;https://jquery.org/&gt;&#xD; * Released under MIT license &lt;https://lodash.com/license&gt;&#xD; * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;&#xD; * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors&#xD; */&#xD;&#xD;/** Used as the `TypeError` message for "Functions" methods. */&#xD;var FUNC_ERROR_TEXT = &apos;Expected a function&apos;;&#xD;&#xD;/** Used as references for various `Number` constants. */&#xD;var NAN = 0 / 0;&#xD;&#xD;/** `Object#toString` result references. */&#xD;var symbolTag = &apos;[object Symbol]&apos;;&#xD;&#xD;/** Used to match leading and trailing whitespace. */&#xD;var reTrim = /^\s+|\s+$/g;&#xD;&#xD;/** Used to detect bad signed hexadecimal string values. */&#xD;var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;&#xD;&#xD;/** Used to detect binary string values. */&#xD;var reIsBinary = /^0b[01]+$/i;&#xD;&#xD;/** Used to detect octal string values. */&#xD;var reIsOctal = /^0o[0-7]+$/i;&#xD;&#xD;/** Built-in method references without a dependency on `root`. */&#xD;var freeParseInt = parseInt;&#xD;&#xD;/** Detect free variable `global` from Node.js. */&#xD;var freeGlobal = typeof global == &apos;object&apos; &amp;&amp; global &amp;&amp; global.Object === Object &amp;&amp; global;&#xD;&#xD;/** Detect free variable `self`. */&#xD;var freeSelf = typeof self == &apos;object&apos; &amp;&amp; self &amp;&amp; self.Object === Object &amp;&amp; self;&#xD;&#xD;/** Used as a reference to the global object. */&#xD;var root = freeGlobal || freeSelf || Function(&apos;return this&apos;)();&#xD;&#xD;/** Used for built-in method references. */&#xD;var objectProto = Object.prototype;&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var objectToString = objectProto.toString;&#xD;&#xD;/* Built-in method references for those with the same name as other `lodash` methods. */&#xD;var nativeMax = Math.max,&#xD;    nativeMin = Math.min;&#xD;&#xD;/**&#xD; * Gets the timestamp of the number of milliseconds that have elapsed since&#xD; * the Unix epoch (1 January 1970 00:00:00 UTC).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 2.4.0&#xD; * @category Date&#xD; * @returns {number} Returns the timestamp.&#xD; * @example&#xD; *&#xD; * _.defer(function(stamp) {&#xD; *   console.log(_.now() - stamp);&#xD; * }, _.now());&#xD; * // =&gt; Logs the number of milliseconds it took for the deferred invocation.&#xD; */&#xD;var now = function() {&#xD;  return root.Date.now();&#xD;};&#xD;&#xD;/**&#xD; * Creates a debounced function that delays invoking `func` until after `wait`&#xD; * milliseconds have elapsed since the last time the debounced function was&#xD; * invoked. The debounced function comes with a `cancel` method to cancel&#xD; * delayed `func` invocations and a `flush` method to immediately invoke them.&#xD; * Provide `options` to indicate whether `func` should be invoked on the&#xD; * leading and/or trailing edge of the `wait` timeout. The `func` is invoked&#xD; * with the last arguments provided to the debounced function. Subsequent&#xD; * calls to the debounced function return the result of the last `func`&#xD; * invocation.&#xD; *&#xD; * **Note:** If `leading` and `trailing` options are `true`, `func` is&#xD; * invoked on the trailing edge of the timeout only if the debounced function&#xD; * is invoked more than once during the `wait` timeout.&#xD; *&#xD; * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred&#xD; * until to the next tick, similar to `setTimeout` with a timeout of `0`.&#xD; *&#xD; * See [David Corbacho&apos;s article](https://css-tricks.com/debouncing-throttling-explained-examples/)&#xD; * for details over the differences between `_.debounce` and `_.throttle`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Function&#xD; * @param {Function} func The function to debounce.&#xD; * @param {number} [wait=0] The number of milliseconds to delay.&#xD; * @param {Object} [options={}] The options object.&#xD; * @param {boolean} [options.leading=false]&#xD; *  Specify invoking on the leading edge of the timeout.&#xD; * @param {number} [options.maxWait]&#xD; *  The maximum time `func` is allowed to be delayed before it&apos;s invoked.&#xD; * @param {boolean} [options.trailing=true]&#xD; *  Specify invoking on the trailing edge of the timeout.&#xD; * @returns {Function} Returns the new debounced function.&#xD; * @example&#xD; *&#xD; * // Avoid costly calculations while the window size is in flux.&#xD; * jQuery(window).on(&apos;resize&apos;, _.debounce(calculateLayout, 150));&#xD; *&#xD; * // Invoke `sendMail` when clicked, debouncing subsequent calls.&#xD; * jQuery(element).on(&apos;click&apos;, _.debounce(sendMail, 300, {&#xD; *   &apos;leading&apos;: true,&#xD; *   &apos;trailing&apos;: false&#xD; * }));&#xD; *&#xD; * // Ensure `batchLog` is invoked once after 1 second of debounced calls.&#xD; * var debounced = _.debounce(batchLog, 250, { &apos;maxWait&apos;: 1000 });&#xD; * var source = new EventSource(&apos;/stream&apos;);&#xD; * jQuery(source).on(&apos;message&apos;, debounced);&#xD; *&#xD; * // Cancel the trailing debounced invocation.&#xD; * jQuery(window).on(&apos;popstate&apos;, debounced.cancel);&#xD; */&#xD;function debounce(func, wait, options) {&#xD;  var lastArgs,&#xD;      lastThis,&#xD;      maxWait,&#xD;      result,&#xD;      timerId,&#xD;      lastCallTime,&#xD;      lastInvokeTime = 0,&#xD;      leading = false,&#xD;      maxing = false,&#xD;      trailing = true;&#xD;&#xD;  if (typeof func != &apos;function&apos;) {&#xD;    throw new TypeError(FUNC_ERROR_TEXT);&#xD;  }&#xD;  wait = toNumber(wait) || 0;&#xD;  if (isObject(options)) {&#xD;    leading = !!options.leading;&#xD;    maxing = &apos;maxWait&apos; in options;&#xD;    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;&#xD;    trailing = &apos;trailing&apos; in options ? !!options.trailing : trailing;&#xD;  }&#xD;&#xD;  function invokeFunc(time) {&#xD;    var args = lastArgs,&#xD;        thisArg = lastThis;&#xD;&#xD;    lastArgs = lastThis = undefined;&#xD;    lastInvokeTime = time;&#xD;    result = func.apply(thisArg, args);&#xD;    return result;&#xD;  }&#xD;&#xD;  function leadingEdge(time) {&#xD;    // Reset any `maxWait` timer.&#xD;    lastInvokeTime = time;&#xD;    // Start the timer for the trailing edge.&#xD;    timerId = setTimeout(timerExpired, wait);&#xD;    // Invoke the leading edge.&#xD;    return leading ? invokeFunc(time) : result;&#xD;  }&#xD;&#xD;  function remainingWait(time) {&#xD;    var timeSinceLastCall = time - lastCallTime,&#xD;        timeSinceLastInvoke = time - lastInvokeTime,&#xD;        result = wait - timeSinceLastCall;&#xD;&#xD;    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;&#xD;  }&#xD;&#xD;  function shouldInvoke(time) {&#xD;    var timeSinceLastCall = time - lastCallTime,&#xD;        timeSinceLastInvoke = time - lastInvokeTime;&#xD;&#xD;    // Either this is the first call, activity has stopped and we&apos;re at the&#xD;    // trailing edge, the system time has gone backwards and we&apos;re treating&#xD;    // it as the trailing edge, or we&apos;ve hit the `maxWait` limit.&#xD;    return (lastCallTime === undefined || (timeSinceLastCall &gt;= wait) ||&#xD;      (timeSinceLastCall &lt; 0) || (maxing &amp;&amp; timeSinceLastInvoke &gt;= maxWait));&#xD;  }&#xD;&#xD;  function timerExpired() {&#xD;    var time = now();&#xD;    if (shouldInvoke(time)) {&#xD;      return trailingEdge(time);&#xD;    }&#xD;    // Restart the timer.&#xD;    timerId = setTimeout(timerExpired, remainingWait(time));&#xD;  }&#xD;&#xD;  function trailingEdge(time) {&#xD;    timerId = undefined;&#xD;&#xD;    // Only invoke if we have `lastArgs` which means `func` has been&#xD;    // debounced at least once.&#xD;    if (trailing &amp;&amp; lastArgs) {&#xD;      return invokeFunc(time);&#xD;    }&#xD;    lastArgs = lastThis = undefined;&#xD;    return result;&#xD;  }&#xD;&#xD;  function cancel() {&#xD;    if (timerId !== undefined) {&#xD;      clearTimeout(timerId);&#xD;    }&#xD;    lastInvokeTime = 0;&#xD;    lastArgs = lastCallTime = lastThis = timerId = undefined;&#xD;  }&#xD;&#xD;  function flush() {&#xD;    return timerId === undefined ? result : trailingEdge(now());&#xD;  }&#xD;&#xD;  function debounced() {&#xD;    var time = now(),&#xD;        isInvoking = shouldInvoke(time);&#xD;&#xD;    lastArgs = arguments;&#xD;    lastThis = this;&#xD;    lastCallTime = time;&#xD;&#xD;    if (isInvoking) {&#xD;      if (timerId === undefined) {&#xD;        return leadingEdge(lastCallTime);&#xD;      }&#xD;      if (maxing) {&#xD;        // Handle invocations in a tight loop.&#xD;        timerId = setTimeout(timerExpired, wait);&#xD;        return invokeFunc(lastCallTime);&#xD;      }&#xD;    }&#xD;    if (timerId === undefined) {&#xD;      timerId = setTimeout(timerExpired, wait);&#xD;    }&#xD;    return result;&#xD;  }&#xD;  debounced.cancel = cancel;&#xD;  debounced.flush = flush;&#xD;  return debounced;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is the&#xD; * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)&#xD; * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(&apos;&apos;)`)&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an object, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObject({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(_.noop);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObject(value) {&#xD;  var type = typeof value;&#xD;  return !!value &amp;&amp; (type == &apos;object&apos; || type == &apos;function&apos;);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is object-like. A value is object-like if it&apos;s not `null`&#xD; * and has a `typeof` result of "object".&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is object-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObjectLike({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike(_.noop);&#xD; * // =&gt; false&#xD; *&#xD; * _.isObjectLike(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObjectLike(value) {&#xD;  return !!value &amp;&amp; typeof value == &apos;object&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a `Symbol` primitive or object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.&#xD; * @example&#xD; *&#xD; * _.isSymbol(Symbol.iterator);&#xD; * // =&gt; true&#xD; *&#xD; * _.isSymbol(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; */&#xD;function isSymbol(value) {&#xD;  return typeof value == &apos;symbol&apos; ||&#xD;    (isObjectLike(value) &amp;&amp; objectToString.call(value) == symbolTag);&#xD;}&#xD;&#xD;/**&#xD; * Converts `value` to a number.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to process.&#xD; * @returns {number} Returns the number.&#xD; * @example&#xD; *&#xD; * _.toNumber(3.2);&#xD; * // =&gt; 3.2&#xD; *&#xD; * _.toNumber(Number.MIN_VALUE);&#xD; * // =&gt; 5e-324&#xD; *&#xD; * _.toNumber(Infinity);&#xD; * // =&gt; Infinity&#xD; *&#xD; * _.toNumber(&apos;3.2&apos;);&#xD; * // =&gt; 3.2&#xD; */&#xD;function toNumber(value) {&#xD;  if (typeof value == &apos;number&apos;) {&#xD;    return value;&#xD;  }&#xD;  if (isSymbol(value)) {&#xD;    return NAN;&#xD;  }&#xD;  if (isObject(value)) {&#xD;    var other = typeof value.valueOf == &apos;function&apos; ? value.valueOf() : value;&#xD;    value = isObject(other) ? (other + &apos;&apos;) : other;&#xD;  }&#xD;  if (typeof value != &apos;string&apos;) {&#xD;    return value === 0 ? value : +value;&#xD;  }&#xD;  value = value.replace(reTrim, &apos;&apos;);&#xD;  var isBinary = reIsBinary.test(value);&#xD;  return (isBinary || reIsOctal.test(value))&#xD;    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)&#xD;    : (reIsBadHex.test(value) ? NAN : +value);&#xD;}&#xD;&#xD;module.exports = debounce;&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 362 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global, module) {/**&#xD; * lodash (Custom Build) &lt;https://lodash.com/&gt;&#xD; * Build: `lodash modularize exports="npm" -o ./`&#xD; * Copyright jQuery Foundation and other contributors &lt;https://jquery.org/&gt;&#xD; * Released under MIT license &lt;https://lodash.com/license&gt;&#xD; * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;&#xD; * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors&#xD; */&#xD;&#xD;/** Used as the size to enable large array optimizations. */&#xD;var LARGE_ARRAY_SIZE = 200;&#xD;&#xD;/** Used to stand-in for `undefined` hash values. */&#xD;var HASH_UNDEFINED = &apos;__lodash_hash_undefined__&apos;;&#xD;&#xD;/** Used as references for various `Number` constants. */&#xD;var MAX_SAFE_INTEGER = 9007199254740991;&#xD;&#xD;/** `Object#toString` result references. */&#xD;var argsTag = &apos;[object Arguments]&apos;,&#xD;    arrayTag = &apos;[object Array]&apos;,&#xD;    boolTag = &apos;[object Boolean]&apos;,&#xD;    dateTag = &apos;[object Date]&apos;,&#xD;    errorTag = &apos;[object Error]&apos;,&#xD;    funcTag = &apos;[object Function]&apos;,&#xD;    genTag = &apos;[object GeneratorFunction]&apos;,&#xD;    mapTag = &apos;[object Map]&apos;,&#xD;    numberTag = &apos;[object Number]&apos;,&#xD;    objectTag = &apos;[object Object]&apos;,&#xD;    promiseTag = &apos;[object Promise]&apos;,&#xD;    regexpTag = &apos;[object RegExp]&apos;,&#xD;    setTag = &apos;[object Set]&apos;,&#xD;    stringTag = &apos;[object String]&apos;,&#xD;    symbolTag = &apos;[object Symbol]&apos;,&#xD;    weakMapTag = &apos;[object WeakMap]&apos;;&#xD;&#xD;var arrayBufferTag = &apos;[object ArrayBuffer]&apos;,&#xD;    dataViewTag = &apos;[object DataView]&apos;,&#xD;    float32Tag = &apos;[object Float32Array]&apos;,&#xD;    float64Tag = &apos;[object Float64Array]&apos;,&#xD;    int8Tag = &apos;[object Int8Array]&apos;,&#xD;    int16Tag = &apos;[object Int16Array]&apos;,&#xD;    int32Tag = &apos;[object Int32Array]&apos;,&#xD;    uint8Tag = &apos;[object Uint8Array]&apos;,&#xD;    uint8ClampedTag = &apos;[object Uint8ClampedArray]&apos;,&#xD;    uint16Tag = &apos;[object Uint16Array]&apos;,&#xD;    uint32Tag = &apos;[object Uint32Array]&apos;;&#xD;&#xD;/**&#xD; * Used to match `RegExp`&#xD; * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).&#xD; */&#xD;var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;&#xD;&#xD;/** Used to match `RegExp` flags from their coerced string values. */&#xD;var reFlags = /\w*$/;&#xD;&#xD;/** Used to detect host constructors (Safari). */&#xD;var reIsHostCtor = /^\[object .+?Constructor\]$/;&#xD;&#xD;/** Used to detect unsigned integer values. */&#xD;var reIsUint = /^(?:0|[1-9]\d*)$/;&#xD;&#xD;/** Used to identify `toStringTag` values of typed arrays. */&#xD;var typedArrayTags = {};&#xD;typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =&#xD;typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =&#xD;typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =&#xD;typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =&#xD;typedArrayTags[uint32Tag] = true;&#xD;typedArrayTags[argsTag] = typedArrayTags[arrayTag] =&#xD;typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =&#xD;typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =&#xD;typedArrayTags[errorTag] = typedArrayTags[funcTag] =&#xD;typedArrayTags[mapTag] = typedArrayTags[numberTag] =&#xD;typedArrayTags[objectTag] = typedArrayTags[regexpTag] =&#xD;typedArrayTags[setTag] = typedArrayTags[stringTag] =&#xD;typedArrayTags[weakMapTag] = false;&#xD;&#xD;/** Used to identify `toStringTag` values supported by `_.clone`. */&#xD;var cloneableTags = {};&#xD;cloneableTags[argsTag] = cloneableTags[arrayTag] =&#xD;cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =&#xD;cloneableTags[boolTag] = cloneableTags[dateTag] =&#xD;cloneableTags[float32Tag] = cloneableTags[float64Tag] =&#xD;cloneableTags[int8Tag] = cloneableTags[int16Tag] =&#xD;cloneableTags[int32Tag] = cloneableTags[mapTag] =&#xD;cloneableTags[numberTag] = cloneableTags[objectTag] =&#xD;cloneableTags[regexpTag] = cloneableTags[setTag] =&#xD;cloneableTags[stringTag] = cloneableTags[symbolTag] =&#xD;cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =&#xD;cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;&#xD;cloneableTags[errorTag] = cloneableTags[funcTag] =&#xD;cloneableTags[weakMapTag] = false;&#xD;&#xD;/** Detect free variable `global` from Node.js. */&#xD;var freeGlobal = typeof global == &apos;object&apos; &amp;&amp; global &amp;&amp; global.Object === Object &amp;&amp; global;&#xD;&#xD;/** Detect free variable `self`. */&#xD;var freeSelf = typeof self == &apos;object&apos; &amp;&amp; self &amp;&amp; self.Object === Object &amp;&amp; self;&#xD;&#xD;/** Used as a reference to the global object. */&#xD;var root = freeGlobal || freeSelf || Function(&apos;return this&apos;)();&#xD;&#xD;/** Detect free variable `exports`. */&#xD;var freeExports = typeof exports == &apos;object&apos; &amp;&amp; exports &amp;&amp; !exports.nodeType &amp;&amp; exports;&#xD;&#xD;/** Detect free variable `module`. */&#xD;var freeModule = freeExports &amp;&amp; typeof module == &apos;object&apos; &amp;&amp; module &amp;&amp; !module.nodeType &amp;&amp; module;&#xD;&#xD;/** Detect the popular CommonJS extension `module.exports`. */&#xD;var moduleExports = freeModule &amp;&amp; freeModule.exports === freeExports;&#xD;&#xD;/** Detect free variable `process` from Node.js. */&#xD;var freeProcess = moduleExports &amp;&amp; freeGlobal.process;&#xD;&#xD;/** Used to access faster Node.js helpers. */&#xD;var nodeUtil = (function() {&#xD;  try {&#xD;    return freeProcess &amp;&amp; freeProcess.binding(&apos;util&apos;);&#xD;  } catch (e) {}&#xD;}());&#xD;&#xD;/* Node.js helper references. */&#xD;var nodeIsTypedArray = nodeUtil &amp;&amp; nodeUtil.isTypedArray;&#xD;&#xD;/**&#xD; * Adds the key-value `pair` to `map`.&#xD; *&#xD; * @private&#xD; * @param {Object} map The map to modify.&#xD; * @param {Array} pair The key-value pair to add.&#xD; * @returns {Object} Returns `map`.&#xD; */&#xD;function addMapEntry(map, pair) {&#xD;  // Don&apos;t return `map.set` because it&apos;s not chainable in IE 11.&#xD;  map.set(pair[0], pair[1]);&#xD;  return map;&#xD;}&#xD;&#xD;/**&#xD; * Adds `value` to `set`.&#xD; *&#xD; * @private&#xD; * @param {Object} set The set to modify.&#xD; * @param {*} value The value to add.&#xD; * @returns {Object} Returns `set`.&#xD; */&#xD;function addSetEntry(set, value) {&#xD;  // Don&apos;t return `set.add` because it&apos;s not chainable in IE 11.&#xD;  set.add(value);&#xD;  return set;&#xD;}&#xD;&#xD;/**&#xD; * A faster alternative to `Function#apply`, this function invokes `func`&#xD; * with the `this` binding of `thisArg` and the arguments of `args`.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to invoke.&#xD; * @param {*} thisArg The `this` binding of `func`.&#xD; * @param {Array} args The arguments to invoke `func` with.&#xD; * @returns {*} Returns the result of `func`.&#xD; */&#xD;function apply(func, thisArg, args) {&#xD;  switch (args.length) {&#xD;    case 0: return func.call(thisArg);&#xD;    case 1: return func.call(thisArg, args[0]);&#xD;    case 2: return func.call(thisArg, args[0], args[1]);&#xD;    case 3: return func.call(thisArg, args[0], args[1], args[2]);&#xD;  }&#xD;  return func.apply(thisArg, args);&#xD;}&#xD;&#xD;/**&#xD; * A specialized version of `_.forEach` for arrays without support for&#xD; * iteratee shorthands.&#xD; *&#xD; * @private&#xD; * @param {Array} [array] The array to iterate over.&#xD; * @param {Function} iteratee The function invoked per iteration.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function arrayEach(array, iteratee) {&#xD;  var index = -1,&#xD;      length = array ? array.length : 0;&#xD;&#xD;  while (++index &lt; length) {&#xD;    if (iteratee(array[index], index, array) === false) {&#xD;      break;&#xD;    }&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * Appends the elements of `values` to `array`.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to modify.&#xD; * @param {Array} values The values to append.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function arrayPush(array, values) {&#xD;  var index = -1,&#xD;      length = values.length,&#xD;      offset = array.length;&#xD;&#xD;  while (++index &lt; length) {&#xD;    array[offset + index] = values[index];&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * A specialized version of `_.reduce` for arrays without support for&#xD; * iteratee shorthands.&#xD; *&#xD; * @private&#xD; * @param {Array} [array] The array to iterate over.&#xD; * @param {Function} iteratee The function invoked per iteration.&#xD; * @param {*} [accumulator] The initial value.&#xD; * @param {boolean} [initAccum] Specify using the first element of `array` as&#xD; *  the initial value.&#xD; * @returns {*} Returns the accumulated value.&#xD; */&#xD;function arrayReduce(array, iteratee, accumulator, initAccum) {&#xD;  var index = -1,&#xD;      length = array ? array.length : 0;&#xD;&#xD;  if (initAccum &amp;&amp; length) {&#xD;    accumulator = array[++index];&#xD;  }&#xD;  while (++index &lt; length) {&#xD;    accumulator = iteratee(accumulator, array[index], index, array);&#xD;  }&#xD;  return accumulator;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.times` without support for iteratee shorthands&#xD; * or max array length checks.&#xD; *&#xD; * @private&#xD; * @param {number} n The number of times to invoke `iteratee`.&#xD; * @param {Function} iteratee The function invoked per iteration.&#xD; * @returns {Array} Returns the array of results.&#xD; */&#xD;function baseTimes(n, iteratee) {&#xD;  var index = -1,&#xD;      result = Array(n);&#xD;&#xD;  while (++index &lt; n) {&#xD;    result[index] = iteratee(index);&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.unary` without support for storing metadata.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to cap arguments for.&#xD; * @returns {Function} Returns the new capped function.&#xD; */&#xD;function baseUnary(func) {&#xD;  return function(value) {&#xD;    return func(value);&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Gets the value at `key` of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} [object] The object to query.&#xD; * @param {string} key The key of the property to get.&#xD; * @returns {*} Returns the property value.&#xD; */&#xD;function getValue(object, key) {&#xD;  return object == null ? undefined : object[key];&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a host object in IE &lt; 9.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a host object, else `false`.&#xD; */&#xD;function isHostObject(value) {&#xD;  // Many host objects are `Object` objects that can coerce to strings&#xD;  // despite having improperly defined `toString` methods.&#xD;  var result = false;&#xD;  if (value != null &amp;&amp; typeof value.toString != &apos;function&apos;) {&#xD;    try {&#xD;      result = !!(value + &apos;&apos;);&#xD;    } catch (e) {}&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Converts `map` to its key-value pairs.&#xD; *&#xD; * @private&#xD; * @param {Object} map The map to convert.&#xD; * @returns {Array} Returns the key-value pairs.&#xD; */&#xD;function mapToArray(map) {&#xD;  var index = -1,&#xD;      result = Array(map.size);&#xD;&#xD;  map.forEach(function(value, key) {&#xD;    result[++index] = [key, value];&#xD;  });&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Creates a unary function that invokes `func` with its argument transformed.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to wrap.&#xD; * @param {Function} transform The argument transform.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function overArg(func, transform) {&#xD;  return function(arg) {&#xD;    return func(transform(arg));&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Converts `set` to an array of its values.&#xD; *&#xD; * @private&#xD; * @param {Object} set The set to convert.&#xD; * @returns {Array} Returns the values.&#xD; */&#xD;function setToArray(set) {&#xD;  var index = -1,&#xD;      result = Array(set.size);&#xD;&#xD;  set.forEach(function(value) {&#xD;    result[++index] = value;&#xD;  });&#xD;  return result;&#xD;}&#xD;&#xD;/** Used for built-in method references. */&#xD;var arrayProto = Array.prototype,&#xD;    funcProto = Function.prototype,&#xD;    objectProto = Object.prototype;&#xD;&#xD;/** Used to detect overreaching core-js shims. */&#xD;var coreJsData = root[&apos;__core-js_shared__&apos;];&#xD;&#xD;/** Used to detect methods masquerading as native. */&#xD;var maskSrcKey = (function() {&#xD;  var uid = /[^.]+$/.exec(coreJsData &amp;&amp; coreJsData.keys &amp;&amp; coreJsData.keys.IE_PROTO || &apos;&apos;);&#xD;  return uid ? (&apos;Symbol(src)_1.&apos; + uid) : &apos;&apos;;&#xD;}());&#xD;&#xD;/** Used to resolve the decompiled source of functions. */&#xD;var funcToString = funcProto.toString;&#xD;&#xD;/** Used to check objects for own properties. */&#xD;var hasOwnProperty = objectProto.hasOwnProperty;&#xD;&#xD;/** Used to infer the `Object` constructor. */&#xD;var objectCtorString = funcToString.call(Object);&#xD;&#xD;/**&#xD; * Used to resolve the&#xD; * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)&#xD; * of values.&#xD; */&#xD;var objectToString = objectProto.toString;&#xD;&#xD;/** Used to detect if a method is native. */&#xD;var reIsNative = RegExp(&apos;^&apos; +&#xD;  funcToString.call(hasOwnProperty).replace(reRegExpChar, &apos;\\$&amp;&apos;)&#xD;  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, &apos;$1.*?&apos;) + &apos;$&apos;&#xD;);&#xD;&#xD;/** Built-in value references. */&#xD;var Buffer = moduleExports ? root.Buffer : undefined,&#xD;    Symbol = root.Symbol,&#xD;    Uint8Array = root.Uint8Array,&#xD;    getPrototype = overArg(Object.getPrototypeOf, Object),&#xD;    objectCreate = Object.create,&#xD;    propertyIsEnumerable = objectProto.propertyIsEnumerable,&#xD;    splice = arrayProto.splice;&#xD;&#xD;/* Built-in method references for those with the same name as other `lodash` methods. */&#xD;var nativeGetSymbols = Object.getOwnPropertySymbols,&#xD;    nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,&#xD;    nativeKeys = overArg(Object.keys, Object),&#xD;    nativeMax = Math.max;&#xD;&#xD;/* Built-in method references that are verified to be native. */&#xD;var DataView = getNative(root, &apos;DataView&apos;),&#xD;    Map = getNative(root, &apos;Map&apos;),&#xD;    Promise = getNative(root, &apos;Promise&apos;),&#xD;    Set = getNative(root, &apos;Set&apos;),&#xD;    WeakMap = getNative(root, &apos;WeakMap&apos;),&#xD;    nativeCreate = getNative(Object, &apos;create&apos;);&#xD;&#xD;/** Used to detect maps, sets, and weakmaps. */&#xD;var dataViewCtorString = toSource(DataView),&#xD;    mapCtorString = toSource(Map),&#xD;    promiseCtorString = toSource(Promise),&#xD;    setCtorString = toSource(Set),&#xD;    weakMapCtorString = toSource(WeakMap);&#xD;&#xD;/** Used to convert symbols to primitives and strings. */&#xD;var symbolProto = Symbol ? Symbol.prototype : undefined,&#xD;    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;&#xD;&#xD;/**&#xD; * Creates a hash object.&#xD; *&#xD; * @private&#xD; * @constructor&#xD; * @param {Array} [entries] The key-value pairs to cache.&#xD; */&#xD;function Hash(entries) {&#xD;  var index = -1,&#xD;      length = entries ? entries.length : 0;&#xD;&#xD;  this.clear();&#xD;  while (++index &lt; length) {&#xD;    var entry = entries[index];&#xD;    this.set(entry[0], entry[1]);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Removes all key-value entries from the hash.&#xD; *&#xD; * @private&#xD; * @name clear&#xD; * @memberOf Hash&#xD; */&#xD;function hashClear() {&#xD;  this.__data__ = nativeCreate ? nativeCreate(null) : {};&#xD;}&#xD;&#xD;/**&#xD; * Removes `key` and its value from the hash.&#xD; *&#xD; * @private&#xD; * @name delete&#xD; * @memberOf Hash&#xD; * @param {Object} hash The hash to modify.&#xD; * @param {string} key The key of the value to remove.&#xD; * @returns {boolean} Returns `true` if the entry was removed, else `false`.&#xD; */&#xD;function hashDelete(key) {&#xD;  return this.has(key) &amp;&amp; delete this.__data__[key];&#xD;}&#xD;&#xD;/**&#xD; * Gets the hash value for `key`.&#xD; *&#xD; * @private&#xD; * @name get&#xD; * @memberOf Hash&#xD; * @param {string} key The key of the value to get.&#xD; * @returns {*} Returns the entry value.&#xD; */&#xD;function hashGet(key) {&#xD;  var data = this.__data__;&#xD;  if (nativeCreate) {&#xD;    var result = data[key];&#xD;    return result === HASH_UNDEFINED ? undefined : result;&#xD;  }&#xD;  return hasOwnProperty.call(data, key) ? data[key] : undefined;&#xD;}&#xD;&#xD;/**&#xD; * Checks if a hash value for `key` exists.&#xD; *&#xD; * @private&#xD; * @name has&#xD; * @memberOf Hash&#xD; * @param {string} key The key of the entry to check.&#xD; * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.&#xD; */&#xD;function hashHas(key) {&#xD;  var data = this.__data__;&#xD;  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);&#xD;}&#xD;&#xD;/**&#xD; * Sets the hash `key` to `value`.&#xD; *&#xD; * @private&#xD; * @name set&#xD; * @memberOf Hash&#xD; * @param {string} key The key of the value to set.&#xD; * @param {*} value The value to set.&#xD; * @returns {Object} Returns the hash instance.&#xD; */&#xD;function hashSet(key, value) {&#xD;  var data = this.__data__;&#xD;  data[key] = (nativeCreate &amp;&amp; value === undefined) ? HASH_UNDEFINED : value;&#xD;  return this;&#xD;}&#xD;&#xD;// Add methods to `Hash`.&#xD;Hash.prototype.clear = hashClear;&#xD;Hash.prototype[&apos;delete&apos;] = hashDelete;&#xD;Hash.prototype.get = hashGet;&#xD;Hash.prototype.has = hashHas;&#xD;Hash.prototype.set = hashSet;&#xD;&#xD;/**&#xD; * Creates an list cache object.&#xD; *&#xD; * @private&#xD; * @constructor&#xD; * @param {Array} [entries] The key-value pairs to cache.&#xD; */&#xD;function ListCache(entries) {&#xD;  var index = -1,&#xD;      length = entries ? entries.length : 0;&#xD;&#xD;  this.clear();&#xD;  while (++index &lt; length) {&#xD;    var entry = entries[index];&#xD;    this.set(entry[0], entry[1]);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Removes all key-value entries from the list cache.&#xD; *&#xD; * @private&#xD; * @name clear&#xD; * @memberOf ListCache&#xD; */&#xD;function listCacheClear() {&#xD;  this.__data__ = [];&#xD;}&#xD;&#xD;/**&#xD; * Removes `key` and its value from the list cache.&#xD; *&#xD; * @private&#xD; * @name delete&#xD; * @memberOf ListCache&#xD; * @param {string} key The key of the value to remove.&#xD; * @returns {boolean} Returns `true` if the entry was removed, else `false`.&#xD; */&#xD;function listCacheDelete(key) {&#xD;  var data = this.__data__,&#xD;      index = assocIndexOf(data, key);&#xD;&#xD;  if (index &lt; 0) {&#xD;    return false;&#xD;  }&#xD;  var lastIndex = data.length - 1;&#xD;  if (index == lastIndex) {&#xD;    data.pop();&#xD;  } else {&#xD;    splice.call(data, index, 1);&#xD;  }&#xD;  return true;&#xD;}&#xD;&#xD;/**&#xD; * Gets the list cache value for `key`.&#xD; *&#xD; * @private&#xD; * @name get&#xD; * @memberOf ListCache&#xD; * @param {string} key The key of the value to get.&#xD; * @returns {*} Returns the entry value.&#xD; */&#xD;function listCacheGet(key) {&#xD;  var data = this.__data__,&#xD;      index = assocIndexOf(data, key);&#xD;&#xD;  return index &lt; 0 ? undefined : data[index][1];&#xD;}&#xD;&#xD;/**&#xD; * Checks if a list cache value for `key` exists.&#xD; *&#xD; * @private&#xD; * @name has&#xD; * @memberOf ListCache&#xD; * @param {string} key The key of the entry to check.&#xD; * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.&#xD; */&#xD;function listCacheHas(key) {&#xD;  return assocIndexOf(this.__data__, key) &gt; -1;&#xD;}&#xD;&#xD;/**&#xD; * Sets the list cache `key` to `value`.&#xD; *&#xD; * @private&#xD; * @name set&#xD; * @memberOf ListCache&#xD; * @param {string} key The key of the value to set.&#xD; * @param {*} value The value to set.&#xD; * @returns {Object} Returns the list cache instance.&#xD; */&#xD;function listCacheSet(key, value) {&#xD;  var data = this.__data__,&#xD;      index = assocIndexOf(data, key);&#xD;&#xD;  if (index &lt; 0) {&#xD;    data.push([key, value]);&#xD;  } else {&#xD;    data[index][1] = value;&#xD;  }&#xD;  return this;&#xD;}&#xD;&#xD;// Add methods to `ListCache`.&#xD;ListCache.prototype.clear = listCacheClear;&#xD;ListCache.prototype[&apos;delete&apos;] = listCacheDelete;&#xD;ListCache.prototype.get = listCacheGet;&#xD;ListCache.prototype.has = listCacheHas;&#xD;ListCache.prototype.set = listCacheSet;&#xD;&#xD;/**&#xD; * Creates a map cache object to store key-value pairs.&#xD; *&#xD; * @private&#xD; * @constructor&#xD; * @param {Array} [entries] The key-value pairs to cache.&#xD; */&#xD;function MapCache(entries) {&#xD;  var index = -1,&#xD;      length = entries ? entries.length : 0;&#xD;&#xD;  this.clear();&#xD;  while (++index &lt; length) {&#xD;    var entry = entries[index];&#xD;    this.set(entry[0], entry[1]);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Removes all key-value entries from the map.&#xD; *&#xD; * @private&#xD; * @name clear&#xD; * @memberOf MapCache&#xD; */&#xD;function mapCacheClear() {&#xD;  this.__data__ = {&#xD;    &apos;hash&apos;: new Hash,&#xD;    &apos;map&apos;: new (Map || ListCache),&#xD;    &apos;string&apos;: new Hash&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Removes `key` and its value from the map.&#xD; *&#xD; * @private&#xD; * @name delete&#xD; * @memberOf MapCache&#xD; * @param {string} key The key of the value to remove.&#xD; * @returns {boolean} Returns `true` if the entry was removed, else `false`.&#xD; */&#xD;function mapCacheDelete(key) {&#xD;  return getMapData(this, key)[&apos;delete&apos;](key);&#xD;}&#xD;&#xD;/**&#xD; * Gets the map value for `key`.&#xD; *&#xD; * @private&#xD; * @name get&#xD; * @memberOf MapCache&#xD; * @param {string} key The key of the value to get.&#xD; * @returns {*} Returns the entry value.&#xD; */&#xD;function mapCacheGet(key) {&#xD;  return getMapData(this, key).get(key);&#xD;}&#xD;&#xD;/**&#xD; * Checks if a map value for `key` exists.&#xD; *&#xD; * @private&#xD; * @name has&#xD; * @memberOf MapCache&#xD; * @param {string} key The key of the entry to check.&#xD; * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.&#xD; */&#xD;function mapCacheHas(key) {&#xD;  return getMapData(this, key).has(key);&#xD;}&#xD;&#xD;/**&#xD; * Sets the map `key` to `value`.&#xD; *&#xD; * @private&#xD; * @name set&#xD; * @memberOf MapCache&#xD; * @param {string} key The key of the value to set.&#xD; * @param {*} value The value to set.&#xD; * @returns {Object} Returns the map cache instance.&#xD; */&#xD;function mapCacheSet(key, value) {&#xD;  getMapData(this, key).set(key, value);&#xD;  return this;&#xD;}&#xD;&#xD;// Add methods to `MapCache`.&#xD;MapCache.prototype.clear = mapCacheClear;&#xD;MapCache.prototype[&apos;delete&apos;] = mapCacheDelete;&#xD;MapCache.prototype.get = mapCacheGet;&#xD;MapCache.prototype.has = mapCacheHas;&#xD;MapCache.prototype.set = mapCacheSet;&#xD;&#xD;/**&#xD; * Creates a stack cache object to store key-value pairs.&#xD; *&#xD; * @private&#xD; * @constructor&#xD; * @param {Array} [entries] The key-value pairs to cache.&#xD; */&#xD;function Stack(entries) {&#xD;  this.__data__ = new ListCache(entries);&#xD;}&#xD;&#xD;/**&#xD; * Removes all key-value entries from the stack.&#xD; *&#xD; * @private&#xD; * @name clear&#xD; * @memberOf Stack&#xD; */&#xD;function stackClear() {&#xD;  this.__data__ = new ListCache;&#xD;}&#xD;&#xD;/**&#xD; * Removes `key` and its value from the stack.&#xD; *&#xD; * @private&#xD; * @name delete&#xD; * @memberOf Stack&#xD; * @param {string} key The key of the value to remove.&#xD; * @returns {boolean} Returns `true` if the entry was removed, else `false`.&#xD; */&#xD;function stackDelete(key) {&#xD;  return this.__data__[&apos;delete&apos;](key);&#xD;}&#xD;&#xD;/**&#xD; * Gets the stack value for `key`.&#xD; *&#xD; * @private&#xD; * @name get&#xD; * @memberOf Stack&#xD; * @param {string} key The key of the value to get.&#xD; * @returns {*} Returns the entry value.&#xD; */&#xD;function stackGet(key) {&#xD;  return this.__data__.get(key);&#xD;}&#xD;&#xD;/**&#xD; * Checks if a stack value for `key` exists.&#xD; *&#xD; * @private&#xD; * @name has&#xD; * @memberOf Stack&#xD; * @param {string} key The key of the entry to check.&#xD; * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.&#xD; */&#xD;function stackHas(key) {&#xD;  return this.__data__.has(key);&#xD;}&#xD;&#xD;/**&#xD; * Sets the stack `key` to `value`.&#xD; *&#xD; * @private&#xD; * @name set&#xD; * @memberOf Stack&#xD; * @param {string} key The key of the value to set.&#xD; * @param {*} value The value to set.&#xD; * @returns {Object} Returns the stack cache instance.&#xD; */&#xD;function stackSet(key, value) {&#xD;  var cache = this.__data__;&#xD;  if (cache instanceof ListCache) {&#xD;    var pairs = cache.__data__;&#xD;    if (!Map || (pairs.length &lt; LARGE_ARRAY_SIZE - 1)) {&#xD;      pairs.push([key, value]);&#xD;      return this;&#xD;    }&#xD;    cache = this.__data__ = new MapCache(pairs);&#xD;  }&#xD;  cache.set(key, value);&#xD;  return this;&#xD;}&#xD;&#xD;// Add methods to `Stack`.&#xD;Stack.prototype.clear = stackClear;&#xD;Stack.prototype[&apos;delete&apos;] = stackDelete;&#xD;Stack.prototype.get = stackGet;&#xD;Stack.prototype.has = stackHas;&#xD;Stack.prototype.set = stackSet;&#xD;&#xD;/**&#xD; * Creates an array of the enumerable property names of the array-like `value`.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @param {boolean} inherited Specify returning inherited property names.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function arrayLikeKeys(value, inherited) {&#xD;  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.&#xD;  // Safari 9 makes `arguments.length` enumerable in strict mode.&#xD;  var result = (isArray(value) || isArguments(value))&#xD;    ? baseTimes(value.length, String)&#xD;    : [];&#xD;&#xD;  var length = result.length,&#xD;      skipIndexes = !!length;&#xD;&#xD;  for (var key in value) {&#xD;    if ((inherited || hasOwnProperty.call(value, key)) &amp;&amp;&#xD;        !(skipIndexes &amp;&amp; (key == &apos;length&apos; || isIndex(key, length)))) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * This function is like `assignValue` except that it doesn&apos;t assign&#xD; * `undefined` values.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to modify.&#xD; * @param {string} key The key of the property to assign.&#xD; * @param {*} value The value to assign.&#xD; */&#xD;function assignMergeValue(object, key, value) {&#xD;  if ((value !== undefined &amp;&amp; !eq(object[key], value)) ||&#xD;      (typeof key == &apos;number&apos; &amp;&amp; value === undefined &amp;&amp; !(key in object))) {&#xD;    object[key] = value;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Assigns `value` to `key` of `object` if the existing value is not equivalent&#xD; * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)&#xD; * for equality comparisons.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to modify.&#xD; * @param {string} key The key of the property to assign.&#xD; * @param {*} value The value to assign.&#xD; */&#xD;function assignValue(object, key, value) {&#xD;  var objValue = object[key];&#xD;  if (!(hasOwnProperty.call(object, key) &amp;&amp; eq(objValue, value)) ||&#xD;      (value === undefined &amp;&amp; !(key in object))) {&#xD;    object[key] = value;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Gets the index at which the `key` is found in `array` of key-value pairs.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to inspect.&#xD; * @param {*} key The key to search for.&#xD; * @returns {number} Returns the index of the matched value, else `-1`.&#xD; */&#xD;function assocIndexOf(array, key) {&#xD;  var length = array.length;&#xD;  while (length--) {&#xD;    if (eq(array[length][0], key)) {&#xD;      return length;&#xD;    }&#xD;  }&#xD;  return -1;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.assign` without support for multiple sources&#xD; * or `customizer` functions.&#xD; *&#xD; * @private&#xD; * @param {Object} object The destination object.&#xD; * @param {Object} source The source object.&#xD; * @returns {Object} Returns `object`.&#xD; */&#xD;function baseAssign(object, source) {&#xD;  return object &amp;&amp; copyObject(source, keys(source), object);&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.clone` and `_.cloneDeep` which tracks&#xD; * traversed objects.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to clone.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @param {boolean} [isFull] Specify a clone including symbols.&#xD; * @param {Function} [customizer] The function to customize cloning.&#xD; * @param {string} [key] The key of `value`.&#xD; * @param {Object} [object] The parent object of `value`.&#xD; * @param {Object} [stack] Tracks traversed objects and their clone counterparts.&#xD; * @returns {*} Returns the cloned value.&#xD; */&#xD;function baseClone(value, isDeep, isFull, customizer, key, object, stack) {&#xD;  var result;&#xD;  if (customizer) {&#xD;    result = object ? customizer(value, key, object, stack) : customizer(value);&#xD;  }&#xD;  if (result !== undefined) {&#xD;    return result;&#xD;  }&#xD;  if (!isObject(value)) {&#xD;    return value;&#xD;  }&#xD;  var isArr = isArray(value);&#xD;  if (isArr) {&#xD;    result = initCloneArray(value);&#xD;    if (!isDeep) {&#xD;      return copyArray(value, result);&#xD;    }&#xD;  } else {&#xD;    var tag = getTag(value),&#xD;        isFunc = tag == funcTag || tag == genTag;&#xD;&#xD;    if (isBuffer(value)) {&#xD;      return cloneBuffer(value, isDeep);&#xD;    }&#xD;    if (tag == objectTag || tag == argsTag || (isFunc &amp;&amp; !object)) {&#xD;      if (isHostObject(value)) {&#xD;        return object ? value : {};&#xD;      }&#xD;      result = initCloneObject(isFunc ? {} : value);&#xD;      if (!isDeep) {&#xD;        return copySymbols(value, baseAssign(result, value));&#xD;      }&#xD;    } else {&#xD;      if (!cloneableTags[tag]) {&#xD;        return object ? value : {};&#xD;      }&#xD;      result = initCloneByTag(value, tag, baseClone, isDeep);&#xD;    }&#xD;  }&#xD;  // Check for circular references and return its corresponding clone.&#xD;  stack || (stack = new Stack);&#xD;  var stacked = stack.get(value);&#xD;  if (stacked) {&#xD;    return stacked;&#xD;  }&#xD;  stack.set(value, result);&#xD;&#xD;  if (!isArr) {&#xD;    var props = isFull ? getAllKeys(value) : keys(value);&#xD;  }&#xD;  arrayEach(props || value, function(subValue, key) {&#xD;    if (props) {&#xD;      key = subValue;&#xD;      subValue = value[key];&#xD;    }&#xD;    // Recursively populate clone (susceptible to call stack limits).&#xD;    assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));&#xD;  });&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.create` without support for assigning&#xD; * properties to the created object.&#xD; *&#xD; * @private&#xD; * @param {Object} prototype The object to inherit from.&#xD; * @returns {Object} Returns the new object.&#xD; */&#xD;function baseCreate(proto) {&#xD;  return isObject(proto) ? objectCreate(proto) : {};&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `getAllKeys` and `getAllKeysIn` which uses&#xD; * `keysFunc` and `symbolsFunc` to get the enumerable property names and&#xD; * symbols of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @param {Function} keysFunc The function to get the keys of `object`.&#xD; * @param {Function} symbolsFunc The function to get the symbols of `object`.&#xD; * @returns {Array} Returns the array of property names and symbols.&#xD; */&#xD;function baseGetAllKeys(object, keysFunc, symbolsFunc) {&#xD;  var result = keysFunc(object);&#xD;  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `getTag`.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @returns {string} Returns the `toStringTag`.&#xD; */&#xD;function baseGetTag(value) {&#xD;  return objectToString.call(value);&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.isNative` without bad shim checks.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a native function,&#xD; *  else `false`.&#xD; */&#xD;function baseIsNative(value) {&#xD;  if (!isObject(value) || isMasked(value)) {&#xD;    return false;&#xD;  }&#xD;  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;&#xD;  return pattern.test(toSource(value));&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.isTypedArray` without Node.js optimizations.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.&#xD; */&#xD;function baseIsTypedArray(value) {&#xD;  return isObjectLike(value) &amp;&amp;&#xD;    isLength(value.length) &amp;&amp; !!typedArrayTags[objectToString.call(value)];&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.keys` which doesn&apos;t treat sparse arrays as dense.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function baseKeys(object) {&#xD;  if (!isPrototype(object)) {&#xD;    return nativeKeys(object);&#xD;  }&#xD;  var result = [];&#xD;  for (var key in Object(object)) {&#xD;    if (hasOwnProperty.call(object, key) &amp;&amp; key != &apos;constructor&apos;) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.keysIn` which doesn&apos;t treat sparse arrays as dense.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function baseKeysIn(object) {&#xD;  if (!isObject(object)) {&#xD;    return nativeKeysIn(object);&#xD;  }&#xD;  var isProto = isPrototype(object),&#xD;      result = [];&#xD;&#xD;  for (var key in object) {&#xD;    if (!(key == &apos;constructor&apos; &amp;&amp; (isProto || !hasOwnProperty.call(object, key)))) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.merge` without support for multiple sources.&#xD; *&#xD; * @private&#xD; * @param {Object} object The destination object.&#xD; * @param {Object} source The source object.&#xD; * @param {number} srcIndex The index of `source`.&#xD; * @param {Function} [customizer] The function to customize merged values.&#xD; * @param {Object} [stack] Tracks traversed source values and their merged&#xD; *  counterparts.&#xD; */&#xD;function baseMerge(object, source, srcIndex, customizer, stack) {&#xD;  if (object === source) {&#xD;    return;&#xD;  }&#xD;  if (!(isArray(source) || isTypedArray(source))) {&#xD;    var props = baseKeysIn(source);&#xD;  }&#xD;  arrayEach(props || source, function(srcValue, key) {&#xD;    if (props) {&#xD;      key = srcValue;&#xD;      srcValue = source[key];&#xD;    }&#xD;    if (isObject(srcValue)) {&#xD;      stack || (stack = new Stack);&#xD;      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);&#xD;    }&#xD;    else {&#xD;      var newValue = customizer&#xD;        ? customizer(object[key], srcValue, (key + &apos;&apos;), object, source, stack)&#xD;        : undefined;&#xD;&#xD;      if (newValue === undefined) {&#xD;        newValue = srcValue;&#xD;      }&#xD;      assignMergeValue(object, key, newValue);&#xD;    }&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * A specialized version of `baseMerge` for arrays and objects which performs&#xD; * deep merges and tracks traversed objects enabling objects with circular&#xD; * references to be merged.&#xD; *&#xD; * @private&#xD; * @param {Object} object The destination object.&#xD; * @param {Object} source The source object.&#xD; * @param {string} key The key of the value to merge.&#xD; * @param {number} srcIndex The index of `source`.&#xD; * @param {Function} mergeFunc The function to merge values.&#xD; * @param {Function} [customizer] The function to customize assigned values.&#xD; * @param {Object} [stack] Tracks traversed source values and their merged&#xD; *  counterparts.&#xD; */&#xD;function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {&#xD;  var objValue = object[key],&#xD;      srcValue = source[key],&#xD;      stacked = stack.get(srcValue);&#xD;&#xD;  if (stacked) {&#xD;    assignMergeValue(object, key, stacked);&#xD;    return;&#xD;  }&#xD;  var newValue = customizer&#xD;    ? customizer(objValue, srcValue, (key + &apos;&apos;), object, source, stack)&#xD;    : undefined;&#xD;&#xD;  var isCommon = newValue === undefined;&#xD;&#xD;  if (isCommon) {&#xD;    newValue = srcValue;&#xD;    if (isArray(srcValue) || isTypedArray(srcValue)) {&#xD;      if (isArray(objValue)) {&#xD;        newValue = objValue;&#xD;      }&#xD;      else if (isArrayLikeObject(objValue)) {&#xD;        newValue = copyArray(objValue);&#xD;      }&#xD;      else {&#xD;        isCommon = false;&#xD;        newValue = baseClone(srcValue, true);&#xD;      }&#xD;    }&#xD;    else if (isPlainObject(srcValue) || isArguments(srcValue)) {&#xD;      if (isArguments(objValue)) {&#xD;        newValue = toPlainObject(objValue);&#xD;      }&#xD;      else if (!isObject(objValue) || (srcIndex &amp;&amp; isFunction(objValue))) {&#xD;        isCommon = false;&#xD;        newValue = baseClone(srcValue, true);&#xD;      }&#xD;      else {&#xD;        newValue = objValue;&#xD;      }&#xD;    }&#xD;    else {&#xD;      isCommon = false;&#xD;    }&#xD;  }&#xD;  if (isCommon) {&#xD;    // Recursively merge objects and arrays (susceptible to call stack limits).&#xD;    stack.set(srcValue, newValue);&#xD;    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);&#xD;    stack[&apos;delete&apos;](srcValue);&#xD;  }&#xD;  assignMergeValue(object, key, newValue);&#xD;}&#xD;&#xD;/**&#xD; * The base implementation of `_.rest` which doesn&apos;t validate or coerce arguments.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to apply a rest parameter to.&#xD; * @param {number} [start=func.length-1] The start position of the rest parameter.&#xD; * @returns {Function} Returns the new function.&#xD; */&#xD;function baseRest(func, start) {&#xD;  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);&#xD;  return function() {&#xD;    var args = arguments,&#xD;        index = -1,&#xD;        length = nativeMax(args.length - start, 0),&#xD;        array = Array(length);&#xD;&#xD;    while (++index &lt; length) {&#xD;      array[index] = args[start + index];&#xD;    }&#xD;    index = -1;&#xD;    var otherArgs = Array(start + 1);&#xD;    while (++index &lt; start) {&#xD;      otherArgs[index] = args[index];&#xD;    }&#xD;    otherArgs[start] = array;&#xD;    return apply(func, this, otherArgs);&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of  `buffer`.&#xD; *&#xD; * @private&#xD; * @param {Buffer} buffer The buffer to clone.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Buffer} Returns the cloned buffer.&#xD; */&#xD;function cloneBuffer(buffer, isDeep) {&#xD;  if (isDeep) {&#xD;    return buffer.slice();&#xD;  }&#xD;  var result = new buffer.constructor(buffer.length);&#xD;  buffer.copy(result);&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `arrayBuffer`.&#xD; *&#xD; * @private&#xD; * @param {ArrayBuffer} arrayBuffer The array buffer to clone.&#xD; * @returns {ArrayBuffer} Returns the cloned array buffer.&#xD; */&#xD;function cloneArrayBuffer(arrayBuffer) {&#xD;  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);&#xD;  new Uint8Array(result).set(new Uint8Array(arrayBuffer));&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `dataView`.&#xD; *&#xD; * @private&#xD; * @param {Object} dataView The data view to clone.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Object} Returns the cloned data view.&#xD; */&#xD;function cloneDataView(dataView, isDeep) {&#xD;  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;&#xD;  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `map`.&#xD; *&#xD; * @private&#xD; * @param {Object} map The map to clone.&#xD; * @param {Function} cloneFunc The function to clone values.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Object} Returns the cloned map.&#xD; */&#xD;function cloneMap(map, isDeep, cloneFunc) {&#xD;  var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);&#xD;  return arrayReduce(array, addMapEntry, new map.constructor);&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `regexp`.&#xD; *&#xD; * @private&#xD; * @param {Object} regexp The regexp to clone.&#xD; * @returns {Object} Returns the cloned regexp.&#xD; */&#xD;function cloneRegExp(regexp) {&#xD;  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));&#xD;  result.lastIndex = regexp.lastIndex;&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `set`.&#xD; *&#xD; * @private&#xD; * @param {Object} set The set to clone.&#xD; * @param {Function} cloneFunc The function to clone values.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Object} Returns the cloned set.&#xD; */&#xD;function cloneSet(set, isDeep, cloneFunc) {&#xD;  var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);&#xD;  return arrayReduce(array, addSetEntry, new set.constructor);&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of the `symbol` object.&#xD; *&#xD; * @private&#xD; * @param {Object} symbol The symbol object to clone.&#xD; * @returns {Object} Returns the cloned symbol object.&#xD; */&#xD;function cloneSymbol(symbol) {&#xD;  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};&#xD;}&#xD;&#xD;/**&#xD; * Creates a clone of `typedArray`.&#xD; *&#xD; * @private&#xD; * @param {Object} typedArray The typed array to clone.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Object} Returns the cloned typed array.&#xD; */&#xD;function cloneTypedArray(typedArray, isDeep) {&#xD;  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;&#xD;  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);&#xD;}&#xD;&#xD;/**&#xD; * Copies the values of `source` to `array`.&#xD; *&#xD; * @private&#xD; * @param {Array} source The array to copy values from.&#xD; * @param {Array} [array=[]] The array to copy values to.&#xD; * @returns {Array} Returns `array`.&#xD; */&#xD;function copyArray(source, array) {&#xD;  var index = -1,&#xD;      length = source.length;&#xD;&#xD;  array || (array = Array(length));&#xD;  while (++index &lt; length) {&#xD;    array[index] = source[index];&#xD;  }&#xD;  return array;&#xD;}&#xD;&#xD;/**&#xD; * Copies properties of `source` to `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} source The object to copy properties from.&#xD; * @param {Array} props The property identifiers to copy.&#xD; * @param {Object} [object={}] The object to copy properties to.&#xD; * @param {Function} [customizer] The function to customize copied values.&#xD; * @returns {Object} Returns `object`.&#xD; */&#xD;function copyObject(source, props, object, customizer) {&#xD;  object || (object = {});&#xD;&#xD;  var index = -1,&#xD;      length = props.length;&#xD;&#xD;  while (++index &lt; length) {&#xD;    var key = props[index];&#xD;&#xD;    var newValue = customizer&#xD;      ? customizer(object[key], source[key], key, object, source)&#xD;      : undefined;&#xD;&#xD;    assignValue(object, key, newValue === undefined ? source[key] : newValue);&#xD;  }&#xD;  return object;&#xD;}&#xD;&#xD;/**&#xD; * Copies own symbol properties of `source` to `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} source The object to copy symbols from.&#xD; * @param {Object} [object={}] The object to copy symbols to.&#xD; * @returns {Object} Returns `object`.&#xD; */&#xD;function copySymbols(source, object) {&#xD;  return copyObject(source, getSymbols(source), object);&#xD;}&#xD;&#xD;/**&#xD; * Creates a function like `_.assign`.&#xD; *&#xD; * @private&#xD; * @param {Function} assigner The function to assign values.&#xD; * @returns {Function} Returns the new assigner function.&#xD; */&#xD;function createAssigner(assigner) {&#xD;  return baseRest(function(object, sources) {&#xD;    var index = -1,&#xD;        length = sources.length,&#xD;        customizer = length &gt; 1 ? sources[length - 1] : undefined,&#xD;        guard = length &gt; 2 ? sources[2] : undefined;&#xD;&#xD;    customizer = (assigner.length &gt; 3 &amp;&amp; typeof customizer == &apos;function&apos;)&#xD;      ? (length--, customizer)&#xD;      : undefined;&#xD;&#xD;    if (guard &amp;&amp; isIterateeCall(sources[0], sources[1], guard)) {&#xD;      customizer = length &lt; 3 ? undefined : customizer;&#xD;      length = 1;&#xD;    }&#xD;    object = Object(object);&#xD;    while (++index &lt; length) {&#xD;      var source = sources[index];&#xD;      if (source) {&#xD;        assigner(object, source, index, customizer);&#xD;      }&#xD;    }&#xD;    return object;&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Creates an array of own enumerable property names and symbols of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names and symbols.&#xD; */&#xD;function getAllKeys(object) {&#xD;  return baseGetAllKeys(object, keys, getSymbols);&#xD;}&#xD;&#xD;/**&#xD; * Gets the data for `map`.&#xD; *&#xD; * @private&#xD; * @param {Object} map The map to query.&#xD; * @param {string} key The reference key.&#xD; * @returns {*} Returns the map data.&#xD; */&#xD;function getMapData(map, key) {&#xD;  var data = map.__data__;&#xD;  return isKeyable(key)&#xD;    ? data[typeof key == &apos;string&apos; ? &apos;string&apos; : &apos;hash&apos;]&#xD;    : data.map;&#xD;}&#xD;&#xD;/**&#xD; * Gets the native function at `key` of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @param {string} key The key of the method to get.&#xD; * @returns {*} Returns the function if it&apos;s native, else `undefined`.&#xD; */&#xD;function getNative(object, key) {&#xD;  var value = getValue(object, key);&#xD;  return baseIsNative(value) ? value : undefined;&#xD;}&#xD;&#xD;/**&#xD; * Creates an array of the own enumerable symbol properties of `object`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of symbols.&#xD; */&#xD;var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;&#xD;&#xD;/**&#xD; * Gets the `toStringTag` of `value`.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to query.&#xD; * @returns {string} Returns the `toStringTag`.&#xD; */&#xD;var getTag = baseGetTag;&#xD;&#xD;// Fallback for data views, maps, sets, and weak maps in IE 11,&#xD;// for data views in Edge &lt; 14, and promises in Node.js.&#xD;if ((DataView &amp;&amp; getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||&#xD;    (Map &amp;&amp; getTag(new Map) != mapTag) ||&#xD;    (Promise &amp;&amp; getTag(Promise.resolve()) != promiseTag) ||&#xD;    (Set &amp;&amp; getTag(new Set) != setTag) ||&#xD;    (WeakMap &amp;&amp; getTag(new WeakMap) != weakMapTag)) {&#xD;  getTag = function(value) {&#xD;    var result = objectToString.call(value),&#xD;        Ctor = result == objectTag ? value.constructor : undefined,&#xD;        ctorString = Ctor ? toSource(Ctor) : undefined;&#xD;&#xD;    if (ctorString) {&#xD;      switch (ctorString) {&#xD;        case dataViewCtorString: return dataViewTag;&#xD;        case mapCtorString: return mapTag;&#xD;        case promiseCtorString: return promiseTag;&#xD;        case setCtorString: return setTag;&#xD;        case weakMapCtorString: return weakMapTag;&#xD;      }&#xD;    }&#xD;    return result;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Initializes an array clone.&#xD; *&#xD; * @private&#xD; * @param {Array} array The array to clone.&#xD; * @returns {Array} Returns the initialized clone.&#xD; */&#xD;function initCloneArray(array) {&#xD;  var length = array.length,&#xD;      result = array.constructor(length);&#xD;&#xD;  // Add properties assigned by `RegExp#exec`.&#xD;  if (length &amp;&amp; typeof array[0] == &apos;string&apos; &amp;&amp; hasOwnProperty.call(array, &apos;index&apos;)) {&#xD;    result.index = array.index;&#xD;    result.input = array.input;&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Initializes an object clone.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to clone.&#xD; * @returns {Object} Returns the initialized clone.&#xD; */&#xD;function initCloneObject(object) {&#xD;  return (typeof object.constructor == &apos;function&apos; &amp;&amp; !isPrototype(object))&#xD;    ? baseCreate(getPrototype(object))&#xD;    : {};&#xD;}&#xD;&#xD;/**&#xD; * Initializes an object clone based on its `toStringTag`.&#xD; *&#xD; * **Note:** This function only supports cloning values with tags of&#xD; * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to clone.&#xD; * @param {string} tag The `toStringTag` of the object to clone.&#xD; * @param {Function} cloneFunc The function to clone values.&#xD; * @param {boolean} [isDeep] Specify a deep clone.&#xD; * @returns {Object} Returns the initialized clone.&#xD; */&#xD;function initCloneByTag(object, tag, cloneFunc, isDeep) {&#xD;  var Ctor = object.constructor;&#xD;  switch (tag) {&#xD;    case arrayBufferTag:&#xD;      return cloneArrayBuffer(object);&#xD;&#xD;    case boolTag:&#xD;    case dateTag:&#xD;      return new Ctor(+object);&#xD;&#xD;    case dataViewTag:&#xD;      return cloneDataView(object, isDeep);&#xD;&#xD;    case float32Tag: case float64Tag:&#xD;    case int8Tag: case int16Tag: case int32Tag:&#xD;    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:&#xD;      return cloneTypedArray(object, isDeep);&#xD;&#xD;    case mapTag:&#xD;      return cloneMap(object, isDeep, cloneFunc);&#xD;&#xD;    case numberTag:&#xD;    case stringTag:&#xD;      return new Ctor(object);&#xD;&#xD;    case regexpTag:&#xD;      return cloneRegExp(object);&#xD;&#xD;    case setTag:&#xD;      return cloneSet(object, isDeep, cloneFunc);&#xD;&#xD;    case symbolTag:&#xD;      return cloneSymbol(object);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like index.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.&#xD; * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.&#xD; */&#xD;function isIndex(value, length) {&#xD;  length = length == null ? MAX_SAFE_INTEGER : length;&#xD;  return !!length &amp;&amp;&#xD;    (typeof value == &apos;number&apos; || reIsUint.test(value)) &amp;&amp;&#xD;    (value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt; length);&#xD;}&#xD;&#xD;/**&#xD; * Checks if the given arguments are from an iteratee call.&#xD; *&#xD; * @private&#xD; * @param {*} value The potential iteratee value argument.&#xD; * @param {*} index The potential iteratee index or key argument.&#xD; * @param {*} object The potential iteratee object argument.&#xD; * @returns {boolean} Returns `true` if the arguments are from an iteratee call,&#xD; *  else `false`.&#xD; */&#xD;function isIterateeCall(value, index, object) {&#xD;  if (!isObject(object)) {&#xD;    return false;&#xD;  }&#xD;  var type = typeof index;&#xD;  if (type == &apos;number&apos;&#xD;        ? (isArrayLike(object) &amp;&amp; isIndex(index, object.length))&#xD;        : (type == &apos;string&apos; &amp;&amp; index in object)&#xD;      ) {&#xD;    return eq(object[index], value);&#xD;  }&#xD;  return false;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is suitable for use as unique object key.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is suitable, else `false`.&#xD; */&#xD;function isKeyable(value) {&#xD;  var type = typeof value;&#xD;  return (type == &apos;string&apos; || type == &apos;number&apos; || type == &apos;symbol&apos; || type == &apos;boolean&apos;)&#xD;    ? (value !== &apos;__proto__&apos;)&#xD;    : (value === null);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `func` has its source masked.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to check.&#xD; * @returns {boolean} Returns `true` if `func` is masked, else `false`.&#xD; */&#xD;function isMasked(func) {&#xD;  return !!maskSrcKey &amp;&amp; (maskSrcKey in func);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is likely a prototype object.&#xD; *&#xD; * @private&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.&#xD; */&#xD;function isPrototype(value) {&#xD;  var Ctor = value &amp;&amp; value.constructor,&#xD;      proto = (typeof Ctor == &apos;function&apos; &amp;&amp; Ctor.prototype) || objectProto;&#xD;&#xD;  return value === proto;&#xD;}&#xD;&#xD;/**&#xD; * Used by `_.defaultsDeep` to customize its `_.merge` use.&#xD; *&#xD; * @private&#xD; * @param {*} objValue The destination value.&#xD; * @param {*} srcValue The source value.&#xD; * @param {string} key The key of the property to merge.&#xD; * @param {Object} object The parent object of `objValue`.&#xD; * @param {Object} source The parent object of `srcValue`.&#xD; * @param {Object} [stack] Tracks traversed source values and their merged&#xD; *  counterparts.&#xD; * @returns {*} Returns the value to assign.&#xD; */&#xD;function mergeDefaults(objValue, srcValue, key, object, source, stack) {&#xD;  if (isObject(objValue) &amp;&amp; isObject(srcValue)) {&#xD;    // Recursively merge objects and arrays (susceptible to call stack limits).&#xD;    stack.set(srcValue, objValue);&#xD;    baseMerge(objValue, srcValue, undefined, mergeDefaults, stack);&#xD;    stack[&apos;delete&apos;](srcValue);&#xD;  }&#xD;  return objValue;&#xD;}&#xD;&#xD;/**&#xD; * This function is like&#xD; * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)&#xD; * except that it includes inherited enumerable properties.&#xD; *&#xD; * @private&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; */&#xD;function nativeKeysIn(object) {&#xD;  var result = [];&#xD;  if (object != null) {&#xD;    for (var key in Object(object)) {&#xD;      result.push(key);&#xD;    }&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;/**&#xD; * Converts `func` to its source code.&#xD; *&#xD; * @private&#xD; * @param {Function} func The function to process.&#xD; * @returns {string} Returns the source code.&#xD; */&#xD;function toSource(func) {&#xD;  if (func != null) {&#xD;    try {&#xD;      return funcToString.call(func);&#xD;    } catch (e) {}&#xD;    try {&#xD;      return (func + &apos;&apos;);&#xD;    } catch (e) {}&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Performs a&#xD; * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)&#xD; * comparison between two values to determine if they are equivalent.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to compare.&#xD; * @param {*} other The other value to compare.&#xD; * @returns {boolean} Returns `true` if the values are equivalent, else `false`.&#xD; * @example&#xD; *&#xD; * var object = { &apos;a&apos;: 1 };&#xD; * var other = { &apos;a&apos;: 1 };&#xD; *&#xD; * _.eq(object, object);&#xD; * // =&gt; true&#xD; *&#xD; * _.eq(object, other);&#xD; * // =&gt; false&#xD; *&#xD; * _.eq(&apos;a&apos;, &apos;a&apos;);&#xD; * // =&gt; true&#xD; *&#xD; * _.eq(&apos;a&apos;, Object(&apos;a&apos;));&#xD; * // =&gt; false&#xD; *&#xD; * _.eq(NaN, NaN);&#xD; * // =&gt; true&#xD; */&#xD;function eq(value, other) {&#xD;  return value === other || (value !== value &amp;&amp; other !== other);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is likely an `arguments` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an `arguments` object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArguments(function() { return arguments; }());&#xD; * // =&gt; true&#xD; *&#xD; * _.isArguments([1, 2, 3]);&#xD; * // =&gt; false&#xD; */&#xD;function isArguments(value) {&#xD;  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.&#xD;  return isArrayLikeObject(value) &amp;&amp; hasOwnProperty.call(value, &apos;callee&apos;) &amp;&amp;&#xD;    (!propertyIsEnumerable.call(value, &apos;callee&apos;) || objectToString.call(value) == argsTag);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as an `Array` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArray([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArray(document.body.children);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArray(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;var isArray = Array.isArray;&#xD;&#xD;/**&#xD; * Checks if `value` is array-like. A value is considered array-like if it&apos;s&#xD; * not a function and has a `value.length` that&apos;s an integer greater than or&#xD; * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is array-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(&apos;abc&apos;);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLike(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLike(value) {&#xD;  return value != null &amp;&amp; isLength(value.length) &amp;&amp; !isFunction(value);&#xD;}&#xD;&#xD;/**&#xD; * This method is like `_.isArrayLike` except that it also checks if `value`&#xD; * is an object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an array-like object,&#xD; *  else `false`.&#xD; * @example&#xD; *&#xD; * _.isArrayLikeObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(document.body.children);&#xD; * // =&gt; true&#xD; *&#xD; * _.isArrayLikeObject(&apos;abc&apos;);&#xD; * // =&gt; false&#xD; *&#xD; * _.isArrayLikeObject(_.noop);&#xD; * // =&gt; false&#xD; */&#xD;function isArrayLikeObject(value) {&#xD;  return isObjectLike(value) &amp;&amp; isArrayLike(value);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a buffer.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.3.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.&#xD; * @example&#xD; *&#xD; * _.isBuffer(new Buffer(2));&#xD; * // =&gt; true&#xD; *&#xD; * _.isBuffer(new Uint8Array(2));&#xD; * // =&gt; false&#xD; */&#xD;var isBuffer = nativeIsBuffer || stubFalse;&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a `Function` object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a function, else `false`.&#xD; * @example&#xD; *&#xD; * _.isFunction(_);&#xD; * // =&gt; true&#xD; *&#xD; * _.isFunction(/abc/);&#xD; * // =&gt; false&#xD; */&#xD;function isFunction(value) {&#xD;  // The use of `Object#toString` avoids issues with the `typeof` operator&#xD;  // in Safari 8-9 which returns &apos;object&apos; for typed array and other constructors.&#xD;  var tag = isObject(value) ? objectToString.call(value) : &apos;&apos;;&#xD;  return tag == funcTag || tag == genTag;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a valid array-like length.&#xD; *&#xD; * **Note:** This method is loosely based on&#xD; * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.&#xD; * @example&#xD; *&#xD; * _.isLength(3);&#xD; * // =&gt; true&#xD; *&#xD; * _.isLength(Number.MIN_VALUE);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(Infinity);&#xD; * // =&gt; false&#xD; *&#xD; * _.isLength(&apos;3&apos;);&#xD; * // =&gt; false&#xD; */&#xD;function isLength(value) {&#xD;  return typeof value == &apos;number&apos; &amp;&amp;&#xD;    value &gt; -1 &amp;&amp; value % 1 == 0 &amp;&amp; value &lt;= MAX_SAFE_INTEGER;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is the&#xD; * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)&#xD; * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(&apos;&apos;)`)&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.1.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an object, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObject({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(_.noop);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObject(value) {&#xD;  var type = typeof value;&#xD;  return !!value &amp;&amp; (type == &apos;object&apos; || type == &apos;function&apos;);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is object-like. A value is object-like if it&apos;s not `null`&#xD; * and has a `typeof` result of "object".&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is object-like, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObjectLike({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObjectLike(_.noop);&#xD; * // =&gt; false&#xD; *&#xD; * _.isObjectLike(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObjectLike(value) {&#xD;  return !!value &amp;&amp; typeof value == &apos;object&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is a plain object, that is, an object created by the&#xD; * `Object` constructor or one with a `[[Prototype]]` of `null`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 0.8.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; * }&#xD; *&#xD; * _.isPlainObject(new Foo);&#xD; * // =&gt; false&#xD; *&#xD; * _.isPlainObject([1, 2, 3]);&#xD; * // =&gt; false&#xD; *&#xD; * _.isPlainObject({ &apos;x&apos;: 0, &apos;y&apos;: 0 });&#xD; * // =&gt; true&#xD; *&#xD; * _.isPlainObject(Object.create(null));&#xD; * // =&gt; true&#xD; */&#xD;function isPlainObject(value) {&#xD;  if (!isObjectLike(value) ||&#xD;      objectToString.call(value) != objectTag || isHostObject(value)) {&#xD;    return false;&#xD;  }&#xD;  var proto = getPrototype(value);&#xD;  if (proto === null) {&#xD;    return true;&#xD;  }&#xD;  var Ctor = hasOwnProperty.call(proto, &apos;constructor&apos;) &amp;&amp; proto.constructor;&#xD;  return (typeof Ctor == &apos;function&apos; &amp;&amp;&#xD;    Ctor instanceof Ctor &amp;&amp; funcToString.call(Ctor) == objectCtorString);&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is classified as a typed array.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 3.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.&#xD; * @example&#xD; *&#xD; * _.isTypedArray(new Uint8Array);&#xD; * // =&gt; true&#xD; *&#xD; * _.isTypedArray([]);&#xD; * // =&gt; false&#xD; */&#xD;var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;&#xD;&#xD;/**&#xD; * Converts `value` to a plain object flattening inherited enumerable string&#xD; * keyed properties of `value` to own properties of the plain object.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 3.0.0&#xD; * @category Lang&#xD; * @param {*} value The value to convert.&#xD; * @returns {Object} Returns the converted plain object.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.b = 2;&#xD; * }&#xD; *&#xD; * Foo.prototype.c = 3;&#xD; *&#xD; * _.assign({ &apos;a&apos;: 1 }, new Foo);&#xD; * // =&gt; { &apos;a&apos;: 1, &apos;b&apos;: 2 }&#xD; *&#xD; * _.assign({ &apos;a&apos;: 1 }, _.toPlainObject(new Foo));&#xD; * // =&gt; { &apos;a&apos;: 1, &apos;b&apos;: 2, &apos;c&apos;: 3 }&#xD; */&#xD;function toPlainObject(value) {&#xD;  return copyObject(value, keysIn(value));&#xD;}&#xD;&#xD;/**&#xD; * This method is like `_.defaults` except that it recursively assigns&#xD; * default properties.&#xD; *&#xD; * **Note:** This method mutates `object`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 3.10.0&#xD; * @category Object&#xD; * @param {Object} object The destination object.&#xD; * @param {...Object} [sources] The source objects.&#xD; * @returns {Object} Returns `object`.&#xD; * @see _.defaults&#xD; * @example&#xD; *&#xD; * _.defaultsDeep({ &apos;a&apos;: { &apos;b&apos;: 2 } }, { &apos;a&apos;: { &apos;b&apos;: 1, &apos;c&apos;: 3 } });&#xD; * // =&gt; { &apos;a&apos;: { &apos;b&apos;: 2, &apos;c&apos;: 3 } }&#xD; */&#xD;var defaultsDeep = baseRest(function(args) {&#xD;  args.push(undefined, mergeDefaults);&#xD;  return apply(mergeWith, undefined, args);&#xD;});&#xD;&#xD;/**&#xD; * Creates an array of the own enumerable property names of `object`.&#xD; *&#xD; * **Note:** Non-object values are coerced to objects. See the&#xD; * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)&#xD; * for more details.&#xD; *&#xD; * @static&#xD; * @since 0.1.0&#xD; * @memberOf _&#xD; * @category Object&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; *   this.b = 2;&#xD; * }&#xD; *&#xD; * Foo.prototype.c = 3;&#xD; *&#xD; * _.keys(new Foo);&#xD; * // =&gt; [&apos;a&apos;, &apos;b&apos;] (iteration order is not guaranteed)&#xD; *&#xD; * _.keys(&apos;hi&apos;);&#xD; * // =&gt; [&apos;0&apos;, &apos;1&apos;]&#xD; */&#xD;function keys(object) {&#xD;  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);&#xD;}&#xD;&#xD;/**&#xD; * Creates an array of the own and inherited enumerable property names of `object`.&#xD; *&#xD; * **Note:** Non-object values are coerced to objects.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 3.0.0&#xD; * @category Object&#xD; * @param {Object} object The object to query.&#xD; * @returns {Array} Returns the array of property names.&#xD; * @example&#xD; *&#xD; * function Foo() {&#xD; *   this.a = 1;&#xD; *   this.b = 2;&#xD; * }&#xD; *&#xD; * Foo.prototype.c = 3;&#xD; *&#xD; * _.keysIn(new Foo);&#xD; * // =&gt; [&apos;a&apos;, &apos;b&apos;, &apos;c&apos;] (iteration order is not guaranteed)&#xD; */&#xD;function keysIn(object) {&#xD;  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);&#xD;}&#xD;&#xD;/**&#xD; * This method is like `_.merge` except that it accepts `customizer` which&#xD; * is invoked to produce the merged values of the destination and source&#xD; * properties. If `customizer` returns `undefined`, merging is handled by the&#xD; * method instead. The `customizer` is invoked with seven arguments:&#xD; * (objValue, srcValue, key, object, source, stack).&#xD; *&#xD; * **Note:** This method mutates `object`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.0.0&#xD; * @category Object&#xD; * @param {Object} object The destination object.&#xD; * @param {...Object} sources The source objects.&#xD; * @param {Function} customizer The function to customize assigned values.&#xD; * @returns {Object} Returns `object`.&#xD; * @example&#xD; *&#xD; * function customizer(objValue, srcValue) {&#xD; *   if (_.isArray(objValue)) {&#xD; *     return objValue.concat(srcValue);&#xD; *   }&#xD; * }&#xD; *&#xD; * var object = { &apos;a&apos;: [1], &apos;b&apos;: [2] };&#xD; * var other = { &apos;a&apos;: [3], &apos;b&apos;: [4] };&#xD; *&#xD; * _.mergeWith(object, other, customizer);&#xD; * // =&gt; { &apos;a&apos;: [1, 3], &apos;b&apos;: [2, 4] }&#xD; */&#xD;var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {&#xD;  baseMerge(object, source, srcIndex, customizer);&#xD;});&#xD;&#xD;/**&#xD; * This method returns a new empty array.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.13.0&#xD; * @category Util&#xD; * @returns {Array} Returns the new empty array.&#xD; * @example&#xD; *&#xD; * var arrays = _.times(2, _.stubArray);&#xD; *&#xD; * console.log(arrays);&#xD; * // =&gt; [[], []]&#xD; *&#xD; * console.log(arrays[0] === arrays[1]);&#xD; * // =&gt; false&#xD; */&#xD;function stubArray() {&#xD;  return [];&#xD;}&#xD;&#xD;/**&#xD; * This method returns `false`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @since 4.13.0&#xD; * @category Util&#xD; * @returns {boolean} Returns `false`.&#xD; * @example&#xD; *&#xD; * _.times(2, _.stubFalse);&#xD; * // =&gt; [false, false]&#xD; */&#xD;function stubFalse() {&#xD;  return false;&#xD;}&#xD;&#xD;module.exports = defaultsDeep;&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13), __webpack_require__(75)(module)))&#xD;&#xD;/***/ }),&#xD;/* 363 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/**&#xD; * lodash 4.0.1 (Custom Build) &lt;https://lodash.com/&gt;&#xD; * Build: `lodash modularize exports="npm" -o ./`&#xD; * Copyright 2012-2016 The Dojo Foundation &lt;http://dojofoundation.org/&gt;&#xD; * Based on Underscore.js 1.8.3 &lt;http://underscorejs.org/LICENSE&gt;&#xD; * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters &amp; Editors&#xD; * Available under MIT license &lt;https://lodash.com/license&gt;&#xD; */&#xD;var debounce = __webpack_require__(361);&#xD;&#xD;/** Used as the `TypeError` message for "Functions" methods. */&#xD;var FUNC_ERROR_TEXT = &apos;Expected a function&apos;;&#xD;&#xD;/**&#xD; * Creates a throttled function that only invokes `func` at most once per&#xD; * every `wait` milliseconds. The throttled function comes with a `cancel`&#xD; * method to cancel delayed `func` invocations and a `flush` method to&#xD; * immediately invoke them. Provide an options object to indicate whether&#xD; * `func` should be invoked on the leading and/or trailing edge of the `wait`&#xD; * timeout. The `func` is invoked with the last arguments provided to the&#xD; * throttled function. Subsequent calls to the throttled function return the&#xD; * result of the last `func` invocation.&#xD; *&#xD; * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked&#xD; * on the trailing edge of the timeout only if the throttled function is&#xD; * invoked more than once during the `wait` timeout.&#xD; *&#xD; * See [David Corbacho&apos;s article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)&#xD; * for details over the differences between `_.throttle` and `_.debounce`.&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @category Function&#xD; * @param {Function} func The function to throttle.&#xD; * @param {number} [wait=0] The number of milliseconds to throttle invocations to.&#xD; * @param {Object} [options] The options object.&#xD; * @param {boolean} [options.leading=true] Specify invoking on the leading&#xD; *  edge of the timeout.&#xD; * @param {boolean} [options.trailing=true] Specify invoking on the trailing&#xD; *  edge of the timeout.&#xD; * @returns {Function} Returns the new throttled function.&#xD; * @example&#xD; *&#xD; * // Avoid excessively updating the position while scrolling.&#xD; * jQuery(window).on(&apos;scroll&apos;, _.throttle(updatePosition, 100));&#xD; *&#xD; * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.&#xD; * var throttled = _.throttle(renewToken, 300000, { &apos;trailing&apos;: false });&#xD; * jQuery(element).on(&apos;click&apos;, throttled);&#xD; *&#xD; * // Cancel the trailing throttled invocation.&#xD; * jQuery(window).on(&apos;popstate&apos;, throttled.cancel);&#xD; */&#xD;function throttle(func, wait, options) {&#xD;  var leading = true,&#xD;      trailing = true;&#xD;&#xD;  if (typeof func != &apos;function&apos;) {&#xD;    throw new TypeError(FUNC_ERROR_TEXT);&#xD;  }&#xD;  if (isObject(options)) {&#xD;    leading = &apos;leading&apos; in options ? !!options.leading : leading;&#xD;    trailing = &apos;trailing&apos; in options ? !!options.trailing : trailing;&#xD;  }&#xD;  return debounce(func, wait, {&#xD;    &apos;leading&apos;: leading,&#xD;    &apos;maxWait&apos;: wait,&#xD;    &apos;trailing&apos;: trailing&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.&#xD; * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(&apos;&apos;)`)&#xD; *&#xD; * @static&#xD; * @memberOf _&#xD; * @category Lang&#xD; * @param {*} value The value to check.&#xD; * @returns {boolean} Returns `true` if `value` is an object, else `false`.&#xD; * @example&#xD; *&#xD; * _.isObject({});&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject([1, 2, 3]);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(_.noop);&#xD; * // =&gt; true&#xD; *&#xD; * _.isObject(null);&#xD; * // =&gt; false&#xD; */&#xD;function isObject(value) {&#xD;  var type = typeof value;&#xD;  return !!value &amp;&amp; (type == &apos;object&apos; || type == &apos;function&apos;);&#xD;}&#xD;&#xD;module.exports = throttle;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 364 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function M() { this._events = {}; }&#xD;M.prototype = {&#xD;  on: function(ev, cb) {&#xD;    this._events || (this._events = {});&#xD;    var e = this._events;&#xD;    (e[ev] || (e[ev] = [])).push(cb);&#xD;    return this;&#xD;  },&#xD;  removeListener: function(ev, cb) {&#xD;    var e = this._events[ev] || [], i;&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      if(e[i] === cb || e[i].cb === cb) { e.splice(i, 1); }&#xD;    }&#xD;  },&#xD;  removeAllListeners: function(ev) {&#xD;    if(!ev) { this._events = {}; }&#xD;    else { this._events[ev] &amp;&amp; (this._events[ev] = []); }&#xD;  },&#xD;  listeners: function(ev) {&#xD;    return (this._events ? this._events[ev] || [] : []);&#xD;  },&#xD;  emit: function(ev) {&#xD;    this._events || (this._events = {});&#xD;    var args = Array.prototype.slice.call(arguments, 1), i, e = this._events[ev] || [];&#xD;    for(i = e.length-1; i &gt;= 0 &amp;&amp; e[i]; i--){&#xD;      e[i].apply(this, args);&#xD;    }&#xD;    return this;&#xD;  },&#xD;  when: function(ev, cb) {&#xD;    return this.once(ev, cb, true);&#xD;  },&#xD;  once: function(ev, cb, when) {&#xD;    if(!cb) return this;&#xD;    function c() {&#xD;      if(!when) this.removeListener(ev, c);&#xD;      if(cb.apply(this, arguments) &amp;&amp; when) this.removeListener(ev, c);&#xD;    }&#xD;    c.cb = cb;&#xD;    this.on(ev, c);&#xD;    return this;&#xD;  }&#xD;};&#xD;M.mixin = function(dest) {&#xD;  var o = M.prototype, k;&#xD;  for (k in o) {&#xD;    o.hasOwnProperty(k) &amp;&amp; (dest.prototype[k] = o[k]);&#xD;  }&#xD;};&#xD;module.exports = M;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 365 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// default filter&#xD;var Transform = __webpack_require__(27);&#xD;&#xD;var levelMap = { debug: 1, info: 2, warn: 3, error: 4 };&#xD;&#xD;function Filter() {&#xD;  this.enabled = true;&#xD;  this.defaultResult = true;&#xD;  this.clear();&#xD;}&#xD;&#xD;Transform.mixin(Filter);&#xD;&#xD;// allow all matching, with level &gt;= given level&#xD;Filter.prototype.allow = function(name, level) {&#xD;  this._white.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;// deny all matching, with level &lt;= given level&#xD;Filter.prototype.deny = function(name, level) {&#xD;  this._black.push({ n: name, l: levelMap[level] });&#xD;  return this;&#xD;};&#xD;&#xD;Filter.prototype.clear = function() {&#xD;  this._white = [];&#xD;  this._black = [];&#xD;  return this;&#xD;};&#xD;&#xD;function test(rule, name) {&#xD;  // use .test for RegExps&#xD;  return (rule.n.test ? rule.n.test(name) : rule.n == name);&#xD;};&#xD;&#xD;Filter.prototype.test = function(name, level) {&#xD;  var i, len = Math.max(this._white.length, this._black.length);&#xD;  for(i = 0; i &lt; len; i++) {&#xD;    if(this._white[i] &amp;&amp; test(this._white[i], name) &amp;&amp; levelMap[level] &gt;= this._white[i].l) {&#xD;      return true;&#xD;    }&#xD;    if(this._black[i] &amp;&amp; test(this._black[i], name) &amp;&amp; levelMap[level] &lt;= this._black[i].l) {&#xD;      return false;&#xD;    }&#xD;  }&#xD;  return this.defaultResult;&#xD;};&#xD;&#xD;Filter.prototype.write = function(name, level, args) {&#xD;  if(!this.enabled || this.test(name, level)) {&#xD;    return this.emit(&apos;item&apos;, name, level, args);&#xD;  }&#xD;};&#xD;&#xD;module.exports = Filter;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 366 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27),&#xD;    Filter = __webpack_require__(365);&#xD;&#xD;var log = new Transform(),&#xD;    slice = Array.prototype.slice;&#xD;&#xD;exports = module.exports = function create(name) {&#xD;  var o   = function() { log.write(name, undefined, slice.call(arguments)); return o; };&#xD;  o.debug = function() { log.write(name, &apos;debug&apos;, slice.call(arguments)); return o; };&#xD;  o.info  = function() { log.write(name, &apos;info&apos;,  slice.call(arguments)); return o; };&#xD;  o.warn  = function() { log.write(name, &apos;warn&apos;,  slice.call(arguments)); return o; };&#xD;  o.error = function() { log.write(name, &apos;error&apos;, slice.call(arguments)); return o; };&#xD;  o.log   = o.debug; // for interface compliance with Node and browser consoles&#xD;  o.suggest = exports.suggest;&#xD;  o.format = log.format;&#xD;  return o;&#xD;};&#xD;&#xD;// filled in separately&#xD;exports.defaultBackend = exports.defaultFormatter = null;&#xD;&#xD;exports.pipe = function(dest) {&#xD;  return log.pipe(dest);&#xD;};&#xD;&#xD;exports.end = exports.unpipe = exports.disable = function(from) {&#xD;  return log.unpipe(from);&#xD;};&#xD;&#xD;exports.Transform = Transform;&#xD;exports.Filter = Filter;&#xD;// this is the default filter that&apos;s applied when .enable() is called normally&#xD;// you can bypass it completely and set up your own pipes&#xD;exports.suggest = new Filter();&#xD;&#xD;exports.enable = function() {&#xD;  if(exports.defaultFormatter) {&#xD;    return log.pipe(exports.suggest) // filter&#xD;              .pipe(exports.defaultFormatter) // formatter&#xD;              .pipe(exports.defaultBackend); // backend&#xD;  }&#xD;  return log.pipe(exports.suggest) // filter&#xD;            .pipe(exports.defaultBackend); // formatter&#xD;};&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 367 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27),&#xD;    cache = [ ];&#xD;&#xD;var logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  cache.push([ name, level, args ]);&#xD;};&#xD;&#xD;// utility functions&#xD;logger.get = function() { return cache; };&#xD;logger.empty = function() { cache = []; };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 368 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27);&#xD;&#xD;var newlines = /\n+$/,&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var i = args.length-1;&#xD;  if (typeof console === &apos;undefined&apos; || !console.log) {&#xD;    return;&#xD;  }&#xD;  if(console.log.apply) {&#xD;    return console.log.apply(console, [name, level].concat(args));&#xD;  } else if(JSON &amp;&amp; JSON.stringify) {&#xD;    // console.log.apply is undefined in IE8 and IE9&#xD;    // for IE8/9: make console.log at least a bit less awful&#xD;    if(args[i] &amp;&amp; typeof args[i] == &apos;string&apos;) {&#xD;      args[i] = args[i].replace(newlines, &apos;&apos;);&#xD;    }&#xD;    try {&#xD;      for(i = 0; i &lt; args.length; i++) {&#xD;        args[i] = JSON.stringify(args[i]);&#xD;      }&#xD;    } catch(e) {}&#xD;    console.log(args.join(&apos; &apos;));&#xD;  }&#xD;};&#xD;&#xD;logger.formatters = [&apos;color&apos;, &apos;minilog&apos;];&#xD;logger.color = __webpack_require__(369);&#xD;logger.minilog = __webpack_require__(370);&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 369 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27),&#xD;    color = __webpack_require__(141);&#xD;&#xD;var colors = { debug: [&apos;cyan&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(console[level] &amp;&amp; console[level].apply) {&#xD;    fn = console[level];&#xD;    fn.apply(console, [ &apos;%c&apos;+name+&apos; %c&apos;+level, color(&apos;gray&apos;), color.apply(color, colors[level])].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 370 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27),&#xD;    color = __webpack_require__(141),&#xD;    colors = { debug: [&apos;gray&apos;], info: [&apos;purple&apos; ], warn: [ &apos;yellow&apos;, true ], error: [ &apos;red&apos;, true ] },&#xD;    logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  var fn = console.log;&#xD;  if(level != &apos;debug&apos; &amp;&amp; console[level]) {&#xD;    fn = console[level];&#xD;  }&#xD;&#xD;  var subset = [], i = 0;&#xD;  if(level != &apos;info&apos;) {&#xD;    for(; i &lt; args.length; i++) {&#xD;      if(typeof args[i] != &apos;string&apos;) break;&#xD;    }&#xD;    fn.apply(console, [ &apos;%c&apos;+name +&apos; &apos;+ args.slice(0, i).join(&apos; &apos;), color.apply(color, colors[level]) ].concat(args.slice(i)));&#xD;  } else {&#xD;    fn.apply(console, [ &apos;%c&apos;+name, color.apply(color, colors[level]) ].concat(args));&#xD;  }&#xD;};&#xD;&#xD;// NOP, because piping the formatted logs can only cause trouble.&#xD;logger.pipe = function() { };&#xD;&#xD;module.exports = logger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 371 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Minilog = __webpack_require__(366);&#xD;&#xD;var oldEnable = Minilog.enable,&#xD;    oldDisable = Minilog.disable,&#xD;    isChrome = (typeof navigator != &apos;undefined&apos; &amp;&amp; /chrome/i.test(navigator.userAgent)),&#xD;    console = __webpack_require__(368);&#xD;&#xD;// Use a more capable logging backend if on Chrome&#xD;Minilog.defaultBackend = (isChrome ? console.minilog : console);&#xD;&#xD;// apply enable inputs from localStorage and from the URL&#xD;if(typeof window != &apos;undefined&apos;) {&#xD;  try {&#xD;    Minilog.enable(JSON.parse(window.localStorage[&apos;minilogSettings&apos;]));&#xD;  } catch(e) {}&#xD;  if(window.location &amp;&amp; window.location.search) {&#xD;    var match = RegExp(&apos;[?&amp;]minilog=([^&amp;]*)&apos;).exec(window.location.search);&#xD;    match &amp;&amp; Minilog.enable(decodeURIComponent(match[1]));&#xD;  }&#xD;}&#xD;&#xD;// Make enable also add to localStorage&#xD;Minilog.enable = function() {&#xD;  oldEnable.call(Minilog, true);&#xD;  try { window.localStorage[&apos;minilogSettings&apos;] = JSON.stringify(true); } catch(e) {}&#xD;  return this;&#xD;};&#xD;&#xD;Minilog.disable = function() {&#xD;  oldDisable.call(Minilog);&#xD;  try { delete window.localStorage.minilogSettings; } catch(e) {}&#xD;  return this;&#xD;};&#xD;&#xD;exports = module.exports = Minilog;&#xD;&#xD;exports.backends = {&#xD;  array: __webpack_require__(367),&#xD;  browser: Minilog.defaultBackend,&#xD;  localStorage: __webpack_require__(373),&#xD;  jQuery: __webpack_require__(372)&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 372 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27);&#xD;&#xD;var cid = new Date().valueOf().toString(36);&#xD;&#xD;function AjaxLogger(options) {&#xD;  this.url = options.url || &apos;&apos;;&#xD;  this.cache = [];&#xD;  this.timer = null;&#xD;  this.interval = options.interval || 30*1000;&#xD;  this.enabled = true;&#xD;  this.jQuery = window.jQuery;&#xD;  this.extras = {};&#xD;}&#xD;&#xD;Transform.mixin(AjaxLogger);&#xD;&#xD;AjaxLogger.prototype.write = function(name, level, args) {&#xD;  if(!this.timer) { this.init(); }&#xD;  this.cache.push([name, level].concat(args));&#xD;};&#xD;&#xD;AjaxLogger.prototype.init = function() {&#xD;  if(!this.enabled || !this.jQuery) return;&#xD;  var self = this;&#xD;  this.timer = setTimeout(function() {&#xD;    var i, logs = [], ajaxData, url = self.url;&#xD;    if(self.cache.length == 0) return self.init();&#xD;    // Test each log line and only log the ones that are valid (e.g. don&apos;t have circular references).&#xD;    // Slight performance hit but benefit is we log all valid lines.&#xD;    for(i = 0; i &lt; self.cache.length; i++) {&#xD;      try {&#xD;        JSON.stringify(self.cache[i]);&#xD;        logs.push(self.cache[i]);&#xD;      } catch(e) { }&#xD;    }&#xD;    if(self.jQuery.isEmptyObject(self.extras)) {&#xD;        ajaxData = JSON.stringify({ logs: logs });&#xD;        url = self.url + &apos;?client_id=&apos; + cid;&#xD;    } else {&#xD;        ajaxData = JSON.stringify(self.jQuery.extend({logs: logs}, self.extras));&#xD;    }&#xD;&#xD;    self.jQuery.ajax(url, {&#xD;      type: &apos;POST&apos;,&#xD;      cache: false,&#xD;      processData: false,&#xD;      data: ajaxData,&#xD;      contentType: &apos;application/json&apos;,&#xD;      timeout: 10000&#xD;    }).success(function(data, status, jqxhr) {&#xD;      if(data.interval) {&#xD;        self.interval = Math.max(1000, data.interval);&#xD;      }&#xD;    }).error(function() {&#xD;      self.interval = 30000;&#xD;    }).always(function() {&#xD;      self.init();&#xD;    });&#xD;    self.cache = [];&#xD;  }, this.interval);&#xD;};&#xD;&#xD;AjaxLogger.prototype.end = function() {};&#xD;&#xD;// wait until jQuery is defined. Useful if you don&apos;t control the load order.&#xD;AjaxLogger.jQueryWait = function(onDone) {&#xD;  if(typeof window !== &apos;undefined&apos; &amp;&amp; (window.jQuery || window.$)) {&#xD;    return onDone(window.jQuery || window.$);&#xD;  } else if (typeof window !== &apos;undefined&apos;) {&#xD;    setTimeout(function() { AjaxLogger.jQueryWait(onDone); }, 200);&#xD;  }&#xD;};&#xD;&#xD;module.exports = AjaxLogger;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 373 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Transform = __webpack_require__(27),&#xD;    cache = false;&#xD;&#xD;var logger = new Transform();&#xD;&#xD;logger.write = function(name, level, args) {&#xD;  if(typeof window == &apos;undefined&apos; || typeof JSON == &apos;undefined&apos; || !JSON.stringify || !JSON.parse) return;&#xD;  try {&#xD;    if(!cache) { cache = (window.localStorage.minilog ? JSON.parse(window.localStorage.minilog) : []); }&#xD;    cache.push([ new Date().toString(), name, level, args ]);&#xD;    window.localStorage.minilog = JSON.stringify(cache);&#xD;  } catch(e) {}&#xD;};&#xD;&#xD;module.exports = logger;&#xD;&#xD;/***/ }),&#xD;/* 374 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;module.exports = {&#xD;&#xD;  /* Allowed flush values; see deflate() and inflate() below for details */&#xD;  Z_NO_FLUSH:         0,&#xD;  Z_PARTIAL_FLUSH:    1,&#xD;  Z_SYNC_FLUSH:       2,&#xD;  Z_FULL_FLUSH:       3,&#xD;  Z_FINISH:           4,&#xD;  Z_BLOCK:            5,&#xD;  Z_TREES:            6,&#xD;&#xD;  /* Return codes for the compression/decompression functions. Negative values&#xD;  * are errors, positive values are used for special but normal events.&#xD;  */&#xD;  Z_OK:               0,&#xD;  Z_STREAM_END:       1,&#xD;  Z_NEED_DICT:        2,&#xD;  Z_ERRNO:           -1,&#xD;  Z_STREAM_ERROR:    -2,&#xD;  Z_DATA_ERROR:      -3,&#xD;  //Z_MEM_ERROR:     -4,&#xD;  Z_BUF_ERROR:       -5,&#xD;  //Z_VERSION_ERROR: -6,&#xD;&#xD;  /* compression levels */&#xD;  Z_NO_COMPRESSION:         0,&#xD;  Z_BEST_SPEED:             1,&#xD;  Z_BEST_COMPRESSION:       9,&#xD;  Z_DEFAULT_COMPRESSION:   -1,&#xD;&#xD;&#xD;  Z_FILTERED:               1,&#xD;  Z_HUFFMAN_ONLY:           2,&#xD;  Z_RLE:                    3,&#xD;  Z_FIXED:                  4,&#xD;  Z_DEFAULT_STRATEGY:       0,&#xD;&#xD;  /* Possible values of the data_type field (though see inflate()) */&#xD;  Z_BINARY:                 0,&#xD;  Z_TEXT:                   1,&#xD;  //Z_ASCII:                1, // = Z_TEXT (deprecated)&#xD;  Z_UNKNOWN:                2,&#xD;&#xD;  /* The deflate compression method */&#xD;  Z_DEFLATED:               8&#xD;  //Z_NULL:                 null // Use -1 or null inline, depending on var type&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 375 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var utils   = __webpack_require__(61);&#xD;var trees   = __webpack_require__(379);&#xD;var adler32 = __webpack_require__(143);&#xD;var crc32   = __webpack_require__(144);&#xD;var msg     = __webpack_require__(145);&#xD;&#xD;/* Public constants ==========================================================*/&#xD;/* ===========================================================================*/&#xD;&#xD;&#xD;/* Allowed flush values; see deflate() and inflate() below for details */&#xD;var Z_NO_FLUSH      = 0;&#xD;var Z_PARTIAL_FLUSH = 1;&#xD;//var Z_SYNC_FLUSH    = 2;&#xD;var Z_FULL_FLUSH    = 3;&#xD;var Z_FINISH        = 4;&#xD;var Z_BLOCK         = 5;&#xD;//var Z_TREES         = 6;&#xD;&#xD;&#xD;/* Return codes for the compression/decompression functions. Negative values&#xD; * are errors, positive values are used for special but normal events.&#xD; */&#xD;var Z_OK            = 0;&#xD;var Z_STREAM_END    = 1;&#xD;//var Z_NEED_DICT     = 2;&#xD;//var Z_ERRNO         = -1;&#xD;var Z_STREAM_ERROR  = -2;&#xD;var Z_DATA_ERROR    = -3;&#xD;//var Z_MEM_ERROR     = -4;&#xD;var Z_BUF_ERROR     = -5;&#xD;//var Z_VERSION_ERROR = -6;&#xD;&#xD;&#xD;/* compression levels */&#xD;//var Z_NO_COMPRESSION      = 0;&#xD;//var Z_BEST_SPEED          = 1;&#xD;//var Z_BEST_COMPRESSION    = 9;&#xD;var Z_DEFAULT_COMPRESSION = -1;&#xD;&#xD;&#xD;var Z_FILTERED            = 1;&#xD;var Z_HUFFMAN_ONLY        = 2;&#xD;var Z_RLE                 = 3;&#xD;var Z_FIXED               = 4;&#xD;var Z_DEFAULT_STRATEGY    = 0;&#xD;&#xD;/* Possible values of the data_type field (though see inflate()) */&#xD;//var Z_BINARY              = 0;&#xD;//var Z_TEXT                = 1;&#xD;//var Z_ASCII               = 1; // = Z_TEXT&#xD;var Z_UNKNOWN             = 2;&#xD;&#xD;&#xD;/* The deflate compression method */&#xD;var Z_DEFLATED  = 8;&#xD;&#xD;/*============================================================================*/&#xD;&#xD;&#xD;var MAX_MEM_LEVEL = 9;&#xD;/* Maximum value for memLevel in deflateInit2 */&#xD;var MAX_WBITS = 15;&#xD;/* 32K LZ77 window */&#xD;var DEF_MEM_LEVEL = 8;&#xD;&#xD;&#xD;var LENGTH_CODES  = 29;&#xD;/* number of length codes, not counting the special END_BLOCK code */&#xD;var LITERALS      = 256;&#xD;/* number of literal bytes 0..255 */&#xD;var L_CODES       = LITERALS + 1 + LENGTH_CODES;&#xD;/* number of Literal or Length codes, including the END_BLOCK code */&#xD;var D_CODES       = 30;&#xD;/* number of distance codes */&#xD;var BL_CODES      = 19;&#xD;/* number of codes used to transfer the bit lengths */&#xD;var HEAP_SIZE     = 2 * L_CODES + 1;&#xD;/* maximum heap size */&#xD;var MAX_BITS  = 15;&#xD;/* All codes must not exceed MAX_BITS bits */&#xD;&#xD;var MIN_MATCH = 3;&#xD;var MAX_MATCH = 258;&#xD;var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);&#xD;&#xD;var PRESET_DICT = 0x20;&#xD;&#xD;var INIT_STATE = 42;&#xD;var EXTRA_STATE = 69;&#xD;var NAME_STATE = 73;&#xD;var COMMENT_STATE = 91;&#xD;var HCRC_STATE = 103;&#xD;var BUSY_STATE = 113;&#xD;var FINISH_STATE = 666;&#xD;&#xD;var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */&#xD;var BS_BLOCK_DONE     = 2; /* block flush performed */&#xD;var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */&#xD;var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */&#xD;&#xD;var OS_CODE = 0x03; // Unix :) . Don&apos;t detect, use this default.&#xD;&#xD;function err(strm, errorCode) {&#xD;  strm.msg = msg[errorCode];&#xD;  return errorCode;&#xD;}&#xD;&#xD;function rank(f) {&#xD;  return ((f) &lt;&lt; 1) - ((f) &gt; 4 ? 9 : 0);&#xD;}&#xD;&#xD;function zero(buf) { var len = buf.length; while (--len &gt;= 0) { buf[len] = 0; } }&#xD;&#xD;&#xD;/* =========================================================================&#xD; * Flush as much pending output as possible. All deflate() output goes&#xD; * through this function so some applications may wish to modify it&#xD; * to avoid allocating a large strm-&gt;output buffer and copying into it.&#xD; * (See also read_buf()).&#xD; */&#xD;function flush_pending(strm) {&#xD;  var s = strm.state;&#xD;&#xD;  //_tr_flush_bits(s);&#xD;  var len = s.pending;&#xD;  if (len &gt; strm.avail_out) {&#xD;    len = strm.avail_out;&#xD;  }&#xD;  if (len === 0) { return; }&#xD;&#xD;  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);&#xD;  strm.next_out += len;&#xD;  s.pending_out += len;&#xD;  strm.total_out += len;&#xD;  strm.avail_out -= len;&#xD;  s.pending -= len;&#xD;  if (s.pending === 0) {&#xD;    s.pending_out = 0;&#xD;  }&#xD;}&#xD;&#xD;&#xD;function flush_block_only(s, last) {&#xD;  trees._tr_flush_block(s, (s.block_start &gt;= 0 ? s.block_start : -1), s.strstart - s.block_start, last);&#xD;  s.block_start = s.strstart;&#xD;  flush_pending(s.strm);&#xD;}&#xD;&#xD;&#xD;function put_byte(s, b) {&#xD;  s.pending_buf[s.pending++] = b;&#xD;}&#xD;&#xD;&#xD;/* =========================================================================&#xD; * Put a short in the pending buffer. The 16-bit value is put in MSB order.&#xD; * IN assertion: the stream state is correct and there is enough room in&#xD; * pending_buf.&#xD; */&#xD;function putShortMSB(s, b) {&#xD;//  put_byte(s, (Byte)(b &gt;&gt; 8));&#xD;//  put_byte(s, (Byte)(b &amp; 0xff));&#xD;  s.pending_buf[s.pending++] = (b &gt;&gt;&gt; 8) &amp; 0xff;&#xD;  s.pending_buf[s.pending++] = b &amp; 0xff;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Read a new buffer from the current input stream, update the adler32&#xD; * and total number of bytes read.  All deflate() input goes through&#xD; * this function so some applications may wish to modify it to avoid&#xD; * allocating a large strm-&gt;input buffer and copying from it.&#xD; * (See also flush_pending()).&#xD; */&#xD;function read_buf(strm, buf, start, size) {&#xD;  var len = strm.avail_in;&#xD;&#xD;  if (len &gt; size) { len = size; }&#xD;  if (len === 0) { return 0; }&#xD;&#xD;  strm.avail_in -= len;&#xD;&#xD;  // zmemcpy(buf, strm-&gt;next_in, len);&#xD;  utils.arraySet(buf, strm.input, strm.next_in, len, start);&#xD;  if (strm.state.wrap === 1) {&#xD;    strm.adler = adler32(strm.adler, buf, len, start);&#xD;  }&#xD;&#xD;  else if (strm.state.wrap === 2) {&#xD;    strm.adler = crc32(strm.adler, buf, len, start);&#xD;  }&#xD;&#xD;  strm.next_in += len;&#xD;  strm.total_in += len;&#xD;&#xD;  return len;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Set match_start to the longest match starting at the given string and&#xD; * return its length. Matches shorter or equal to prev_length are discarded,&#xD; * in which case the result is equal to prev_length and match_start is&#xD; * garbage.&#xD; * IN assertions: cur_match is the head of the hash chain for the current&#xD; *   string (strstart) and its distance is &lt;= MAX_DIST, and prev_length &gt;= 1&#xD; * OUT assertion: the match length is not greater than s-&gt;lookahead.&#xD; */&#xD;function longest_match(s, cur_match) {&#xD;  var chain_length = s.max_chain_length;      /* max hash chain length */&#xD;  var scan = s.strstart; /* current string */&#xD;  var match;                       /* matched string */&#xD;  var len;                           /* length of current match */&#xD;  var best_len = s.prev_length;              /* best match length so far */&#xD;  var nice_match = s.nice_match;             /* stop if match long enough */&#xD;  var limit = (s.strstart &gt; (s.w_size - MIN_LOOKAHEAD)) ?&#xD;      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;&#xD;&#xD;  var _win = s.window; // shortcut&#xD;&#xD;  var wmask = s.w_mask;&#xD;  var prev  = s.prev;&#xD;&#xD;  /* Stop when cur_match becomes &lt;= limit. To simplify the code,&#xD;   * we prevent matches with the string of window index 0.&#xD;   */&#xD;&#xD;  var strend = s.strstart + MAX_MATCH;&#xD;  var scan_end1  = _win[scan + best_len - 1];&#xD;  var scan_end   = _win[scan + best_len];&#xD;&#xD;  /* The code is optimized for HASH_BITS &gt;= 8 and MAX_MATCH-2 multiple of 16.&#xD;   * It is easy to get rid of this optimization if necessary.&#xD;   */&#xD;  // Assert(s-&gt;hash_bits &gt;= 8 &amp;&amp; MAX_MATCH == 258, "Code too clever");&#xD;&#xD;  /* Do not waste too much time if we already have a good match: */&#xD;  if (s.prev_length &gt;= s.good_match) {&#xD;    chain_length &gt;&gt;= 2;&#xD;  }&#xD;  /* Do not look for matches beyond the end of the input. This is necessary&#xD;   * to make deflate deterministic.&#xD;   */&#xD;  if (nice_match &gt; s.lookahead) { nice_match = s.lookahead; }&#xD;&#xD;  // Assert((ulg)s-&gt;strstart &lt;= s-&gt;window_size-MIN_LOOKAHEAD, "need lookahead");&#xD;&#xD;  do {&#xD;    // Assert(cur_match &lt; s-&gt;strstart, "no future");&#xD;    match = cur_match;&#xD;&#xD;    /* Skip to next match if the match length cannot increase&#xD;     * or if the match length is less than 2.  Note that the checks below&#xD;     * for insufficient lookahead only occur occasionally for performance&#xD;     * reasons.  Therefore uninitialized memory will be accessed, and&#xD;     * conditional jumps will be made that depend on those values.&#xD;     * However the length of the match is limited to the lookahead, so&#xD;     * the output of deflate is not affected by the uninitialized values.&#xD;     */&#xD;&#xD;    if (_win[match + best_len]     !== scan_end  ||&#xD;        _win[match + best_len - 1] !== scan_end1 ||&#xD;        _win[match]                !== _win[scan] ||&#xD;        _win[++match]              !== _win[scan + 1]) {&#xD;      continue;&#xD;    }&#xD;&#xD;    /* The check at best_len-1 can be removed because it will be made&#xD;     * again later. (This heuristic is not always a win.)&#xD;     * It is not necessary to compare scan[2] and match[2] since they&#xD;     * are always equal when the other bytes match, given that&#xD;     * the hash keys are equal and that HASH_BITS &gt;= 8.&#xD;     */&#xD;    scan += 2;&#xD;    match++;&#xD;    // Assert(*scan == *match, "match[2]?");&#xD;&#xD;    /* We check for insufficient lookahead only every 8th comparison;&#xD;     * the 256th check will be made at strstart+258.&#xD;     */&#xD;    do {&#xD;      /*jshint noempty:false*/&#xD;    } while (_win[++scan] === _win[++match] &amp;&amp; _win[++scan] === _win[++match] &amp;&amp;&#xD;             _win[++scan] === _win[++match] &amp;&amp; _win[++scan] === _win[++match] &amp;&amp;&#xD;             _win[++scan] === _win[++match] &amp;&amp; _win[++scan] === _win[++match] &amp;&amp;&#xD;             _win[++scan] === _win[++match] &amp;&amp; _win[++scan] === _win[++match] &amp;&amp;&#xD;             scan &lt; strend);&#xD;&#xD;    // Assert(scan &lt;= s-&gt;window+(unsigned)(s-&gt;window_size-1), "wild scan");&#xD;&#xD;    len = MAX_MATCH - (strend - scan);&#xD;    scan = strend - MAX_MATCH;&#xD;&#xD;    if (len &gt; best_len) {&#xD;      s.match_start = cur_match;&#xD;      best_len = len;&#xD;      if (len &gt;= nice_match) {&#xD;        break;&#xD;      }&#xD;      scan_end1  = _win[scan + best_len - 1];&#xD;      scan_end   = _win[scan + best_len];&#xD;    }&#xD;  } while ((cur_match = prev[cur_match &amp; wmask]) &gt; limit &amp;&amp; --chain_length !== 0);&#xD;&#xD;  if (best_len &lt;= s.lookahead) {&#xD;    return best_len;&#xD;  }&#xD;  return s.lookahead;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Fill the window when the lookahead becomes insufficient.&#xD; * Updates strstart and lookahead.&#xD; *&#xD; * IN assertion: lookahead &lt; MIN_LOOKAHEAD&#xD; * OUT assertions: strstart &lt;= window_size-MIN_LOOKAHEAD&#xD; *    At least one byte has been read, or avail_in == 0; reads are&#xD; *    performed for at least two bytes (required for the zip translate_eol&#xD; *    option -- not supported here).&#xD; */&#xD;function fill_window(s) {&#xD;  var _w_size = s.w_size;&#xD;  var p, n, m, more, str;&#xD;&#xD;  //Assert(s-&gt;lookahead &lt; MIN_LOOKAHEAD, "already enough lookahead");&#xD;&#xD;  do {&#xD;    more = s.window_size - s.lookahead - s.strstart;&#xD;&#xD;    // JS ints have 32 bit, block below not needed&#xD;    /* Deal with !@#$% 64K limit: */&#xD;    //if (sizeof(int) &lt;= 2) {&#xD;    //    if (more == 0 &amp;&amp; s-&gt;strstart == 0 &amp;&amp; s-&gt;lookahead == 0) {&#xD;    //        more = wsize;&#xD;    //&#xD;    //  } else if (more == (unsigned)(-1)) {&#xD;    //        /* Very unlikely, but possible on 16 bit machine if&#xD;    //         * strstart == 0 &amp;&amp; lookahead == 1 (input done a byte at time)&#xD;    //         */&#xD;    //        more--;&#xD;    //    }&#xD;    //}&#xD;&#xD;&#xD;    /* If the window is almost full and there is insufficient lookahead,&#xD;     * move the upper half to the lower one to make room in the upper half.&#xD;     */&#xD;    if (s.strstart &gt;= _w_size + (_w_size - MIN_LOOKAHEAD)) {&#xD;&#xD;      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);&#xD;      s.match_start -= _w_size;&#xD;      s.strstart -= _w_size;&#xD;      /* we now have strstart &gt;= MAX_DIST */&#xD;      s.block_start -= _w_size;&#xD;&#xD;      /* Slide the hash table (could be avoided with 32 bit values&#xD;       at the expense of memory usage). We slide even when level == 0&#xD;       to keep the hash table consistent if we switch back to level &gt; 0&#xD;       later. (Using level 0 permanently is not an optimal usage of&#xD;       zlib, so we don&apos;t care about this pathological case.)&#xD;       */&#xD;&#xD;      n = s.hash_size;&#xD;      p = n;&#xD;      do {&#xD;        m = s.head[--p];&#xD;        s.head[p] = (m &gt;= _w_size ? m - _w_size : 0);&#xD;      } while (--n);&#xD;&#xD;      n = _w_size;&#xD;      p = n;&#xD;      do {&#xD;        m = s.prev[--p];&#xD;        s.prev[p] = (m &gt;= _w_size ? m - _w_size : 0);&#xD;        /* If n is not on any hash chain, prev[n] is garbage but&#xD;         * its value will never be used.&#xD;         */&#xD;      } while (--n);&#xD;&#xD;      more += _w_size;&#xD;    }&#xD;    if (s.strm.avail_in === 0) {&#xD;      break;&#xD;    }&#xD;&#xD;    /* If there was no sliding:&#xD;     *    strstart &lt;= WSIZE+MAX_DIST-1 &amp;&amp; lookahead &lt;= MIN_LOOKAHEAD - 1 &amp;&amp;&#xD;     *    more == window_size - lookahead - strstart&#xD;     * =&gt; more &gt;= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)&#xD;     * =&gt; more &gt;= window_size - 2*WSIZE + 2&#xD;     * In the BIG_MEM or MMAP case (not yet supported),&#xD;     *   window_size == input_size + MIN_LOOKAHEAD  &amp;&amp;&#xD;     *   strstart + s-&gt;lookahead &lt;= input_size =&gt; more &gt;= MIN_LOOKAHEAD.&#xD;     * Otherwise, window_size == 2*WSIZE so more &gt;= 2.&#xD;     * If there was sliding, more &gt;= WSIZE. So in all cases, more &gt;= 2.&#xD;     */&#xD;    //Assert(more &gt;= 2, "more &lt; 2");&#xD;    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);&#xD;    s.lookahead += n;&#xD;&#xD;    /* Initialize the hash value now that we have some input: */&#xD;    if (s.lookahead + s.insert &gt;= MIN_MATCH) {&#xD;      str = s.strstart - s.insert;&#xD;      s.ins_h = s.window[str];&#xD;&#xD;      /* UPDATE_HASH(s, s-&gt;ins_h, s-&gt;window[str + 1]); */&#xD;      s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[str + 1]) &amp; s.hash_mask;&#xD;//#if MIN_MATCH != 3&#xD;//        Call update_hash() MIN_MATCH-3 more times&#xD;//#endif&#xD;      while (s.insert) {&#xD;        /* UPDATE_HASH(s, s-&gt;ins_h, s-&gt;window[str + MIN_MATCH-1]); */&#xD;        s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;&#xD;        s.prev[str &amp; s.w_mask] = s.head[s.ins_h];&#xD;        s.head[s.ins_h] = str;&#xD;        str++;&#xD;        s.insert--;&#xD;        if (s.lookahead + s.insert &lt; MIN_MATCH) {&#xD;          break;&#xD;        }&#xD;      }&#xD;    }&#xD;    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,&#xD;     * but this is not important since only literal bytes will be emitted.&#xD;     */&#xD;&#xD;  } while (s.lookahead &lt; MIN_LOOKAHEAD &amp;&amp; s.strm.avail_in !== 0);&#xD;&#xD;  /* If the WIN_INIT bytes after the end of the current data have never been&#xD;   * written, then zero those bytes in order to avoid memory check reports of&#xD;   * the use of uninitialized (or uninitialised as Julian writes) bytes by&#xD;   * the longest match routines.  Update the high water mark for the next&#xD;   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match&#xD;   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.&#xD;   */&#xD;//  if (s.high_water &lt; s.window_size) {&#xD;//    var curr = s.strstart + s.lookahead;&#xD;//    var init = 0;&#xD;//&#xD;//    if (s.high_water &lt; curr) {&#xD;//      /* Previous high water mark below current data -- zero WIN_INIT&#xD;//       * bytes or up to end of window, whichever is less.&#xD;//       */&#xD;//      init = s.window_size - curr;&#xD;//      if (init &gt; WIN_INIT)&#xD;//        init = WIN_INIT;&#xD;//      zmemzero(s-&gt;window + curr, (unsigned)init);&#xD;//      s-&gt;high_water = curr + init;&#xD;//    }&#xD;//    else if (s-&gt;high_water &lt; (ulg)curr + WIN_INIT) {&#xD;//      /* High water mark at or above current data, but below current data&#xD;//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up&#xD;//       * to end of window, whichever is less.&#xD;//       */&#xD;//      init = (ulg)curr + WIN_INIT - s-&gt;high_water;&#xD;//      if (init &gt; s-&gt;window_size - s-&gt;high_water)&#xD;//        init = s-&gt;window_size - s-&gt;high_water;&#xD;//      zmemzero(s-&gt;window + s-&gt;high_water, (unsigned)init);&#xD;//      s-&gt;high_water += init;&#xD;//    }&#xD;//  }&#xD;//&#xD;//  Assert((ulg)s-&gt;strstart &lt;= s-&gt;window_size - MIN_LOOKAHEAD,&#xD;//    "not enough room for search");&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Copy without compression as much as possible from the input stream, return&#xD; * the current block state.&#xD; * This function does not insert new strings in the dictionary since&#xD; * uncompressible data is probably not useful. This function is used&#xD; * only for the level=0 compression option.&#xD; * NOTE: this function should be optimized to avoid extra copying from&#xD; * window to pending_buf.&#xD; */&#xD;function deflate_stored(s, flush) {&#xD;  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited&#xD;   * to pending_buf_size, and each stored block has a 5 byte header:&#xD;   */&#xD;  var max_block_size = 0xffff;&#xD;&#xD;  if (max_block_size &gt; s.pending_buf_size - 5) {&#xD;    max_block_size = s.pending_buf_size - 5;&#xD;  }&#xD;&#xD;  /* Copy as much as possible from input to output: */&#xD;  for (;;) {&#xD;    /* Fill the window as much as possible: */&#xD;    if (s.lookahead &lt;= 1) {&#xD;&#xD;      //Assert(s-&gt;strstart &lt; s-&gt;w_size+MAX_DIST(s) ||&#xD;      //  s-&gt;block_start &gt;= (long)s-&gt;w_size, "slide too late");&#xD;//      if (!(s.strstart &lt; s.w_size + (s.w_size - MIN_LOOKAHEAD) ||&#xD;//        s.block_start &gt;= s.w_size)) {&#xD;//        throw  new Error("slide too late");&#xD;//      }&#xD;&#xD;      fill_window(s);&#xD;      if (s.lookahead === 0 &amp;&amp; flush === Z_NO_FLUSH) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;&#xD;      if (s.lookahead === 0) {&#xD;        break;&#xD;      }&#xD;      /* flush the current block */&#xD;    }&#xD;    //Assert(s-&gt;block_start &gt;= 0L, "block gone");&#xD;//    if (s.block_start &lt; 0) throw new Error("block gone");&#xD;&#xD;    s.strstart += s.lookahead;&#xD;    s.lookahead = 0;&#xD;&#xD;    /* Emit a stored block if pending_buf will be full: */&#xD;    var max_start = s.block_start + max_block_size;&#xD;&#xD;    if (s.strstart === 0 || s.strstart &gt;= max_start) {&#xD;      /* strstart == 0 is possible when wraparound on 16-bit machine */&#xD;      s.lookahead = s.strstart - max_start;&#xD;      s.strstart = max_start;&#xD;      /*** FLUSH_BLOCK(s, 0); ***/&#xD;      flush_block_only(s, false);&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      /***/&#xD;&#xD;&#xD;    }&#xD;    /* Flush if we may have to slide, otherwise block_start may become&#xD;     * negative and the data will be gone:&#xD;     */&#xD;    if (s.strstart - s.block_start &gt;= (s.w_size - MIN_LOOKAHEAD)) {&#xD;      /*** FLUSH_BLOCK(s, 0); ***/&#xD;      flush_block_only(s, false);&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      /***/&#xD;    }&#xD;  }&#xD;&#xD;  s.insert = 0;&#xD;&#xD;  if (flush === Z_FINISH) {&#xD;    /*** FLUSH_BLOCK(s, 1); ***/&#xD;    flush_block_only(s, true);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_FINISH_STARTED;&#xD;    }&#xD;    /***/&#xD;    return BS_FINISH_DONE;&#xD;  }&#xD;&#xD;  if (s.strstart &gt; s.block_start) {&#xD;    /*** FLUSH_BLOCK(s, 0); ***/&#xD;    flush_block_only(s, false);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_NEED_MORE;&#xD;    }&#xD;    /***/&#xD;  }&#xD;&#xD;  return BS_NEED_MORE;&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Compress as much as possible from the input stream, return the current&#xD; * block state.&#xD; * This function does not perform lazy evaluation of matches and inserts&#xD; * new strings in the dictionary only for unmatched strings or for short&#xD; * matches. It is used only for the fast compression options.&#xD; */&#xD;function deflate_fast(s, flush) {&#xD;  var hash_head;        /* head of the hash chain */&#xD;  var bflush;           /* set if current block must be flushed */&#xD;&#xD;  for (;;) {&#xD;    /* Make sure that we always have enough lookahead, except&#xD;     * at the end of the input file. We need MAX_MATCH bytes&#xD;     * for the next match, plus MIN_MATCH bytes to insert the&#xD;     * string following the next match.&#xD;     */&#xD;    if (s.lookahead &lt; MIN_LOOKAHEAD) {&#xD;      fill_window(s);&#xD;      if (s.lookahead &lt; MIN_LOOKAHEAD &amp;&amp; flush === Z_NO_FLUSH) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      if (s.lookahead === 0) {&#xD;        break; /* flush the current block */&#xD;      }&#xD;    }&#xD;&#xD;    /* Insert the string window[strstart .. strstart+2] in the&#xD;     * dictionary, and set hash_head to the head of the hash chain:&#xD;     */&#xD;    hash_head = 0/*NIL*/;&#xD;    if (s.lookahead &gt;= MIN_MATCH) {&#xD;      /*** INSERT_STRING(s, s.strstart, hash_head); ***/&#xD;      s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;      hash_head = s.prev[s.strstart &amp; s.w_mask] = s.head[s.ins_h];&#xD;      s.head[s.ins_h] = s.strstart;&#xD;      /***/&#xD;    }&#xD;&#xD;    /* Find the longest match, discarding those &lt;= prev_length.&#xD;     * At this point we have always match_length &lt; MIN_MATCH&#xD;     */&#xD;    if (hash_head !== 0/*NIL*/ &amp;&amp; ((s.strstart - hash_head) &lt;= (s.w_size - MIN_LOOKAHEAD))) {&#xD;      /* To simplify the code, we prevent matches with the string&#xD;       * of window index 0 (in particular we have to avoid a match&#xD;       * of the string with itself at the start of the input file).&#xD;       */&#xD;      s.match_length = longest_match(s, hash_head);&#xD;      /* longest_match() sets match_start */&#xD;    }&#xD;    if (s.match_length &gt;= MIN_MATCH) {&#xD;      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only&#xD;&#xD;      /*** _tr_tally_dist(s, s.strstart - s.match_start,&#xD;                     s.match_length - MIN_MATCH, bflush); ***/&#xD;      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);&#xD;&#xD;      s.lookahead -= s.match_length;&#xD;&#xD;      /* Insert new strings in the hash table only if the match length&#xD;       * is not too large. This saves time but degrades compression.&#xD;       */&#xD;      if (s.match_length &lt;= s.max_lazy_match/*max_insert_length*/ &amp;&amp; s.lookahead &gt;= MIN_MATCH) {&#xD;        s.match_length--; /* string at strstart already in table */&#xD;        do {&#xD;          s.strstart++;&#xD;          /*** INSERT_STRING(s, s.strstart, hash_head); ***/&#xD;          s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;          hash_head = s.prev[s.strstart &amp; s.w_mask] = s.head[s.ins_h];&#xD;          s.head[s.ins_h] = s.strstart;&#xD;          /***/&#xD;          /* strstart never exceeds WSIZE-MAX_MATCH, so there are&#xD;           * always MIN_MATCH bytes ahead.&#xD;           */&#xD;        } while (--s.match_length !== 0);&#xD;        s.strstart++;&#xD;      } else&#xD;      {&#xD;        s.strstart += s.match_length;&#xD;        s.match_length = 0;&#xD;        s.ins_h = s.window[s.strstart];&#xD;        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */&#xD;        s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[s.strstart + 1]) &amp; s.hash_mask;&#xD;&#xD;//#if MIN_MATCH != 3&#xD;//                Call UPDATE_HASH() MIN_MATCH-3 more times&#xD;//#endif&#xD;        /* If lookahead &lt; MIN_MATCH, ins_h is garbage, but it does not&#xD;         * matter since it will be recomputed at next deflate call.&#xD;         */&#xD;      }&#xD;    } else {&#xD;      /* No match, output a literal byte */&#xD;      //Tracevv((stderr,"%c", s.window[s.strstart]));&#xD;      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/&#xD;      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);&#xD;&#xD;      s.lookahead--;&#xD;      s.strstart++;&#xD;    }&#xD;    if (bflush) {&#xD;      /*** FLUSH_BLOCK(s, 0); ***/&#xD;      flush_block_only(s, false);&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      /***/&#xD;    }&#xD;  }&#xD;  s.insert = ((s.strstart &lt; (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);&#xD;  if (flush === Z_FINISH) {&#xD;    /*** FLUSH_BLOCK(s, 1); ***/&#xD;    flush_block_only(s, true);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_FINISH_STARTED;&#xD;    }&#xD;    /***/&#xD;    return BS_FINISH_DONE;&#xD;  }&#xD;  if (s.last_lit) {&#xD;    /*** FLUSH_BLOCK(s, 0); ***/&#xD;    flush_block_only(s, false);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_NEED_MORE;&#xD;    }&#xD;    /***/&#xD;  }&#xD;  return BS_BLOCK_DONE;&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Same as above, but achieves better compression. We use a lazy&#xD; * evaluation for matches: a match is finally adopted only if there is&#xD; * no better match at the next window position.&#xD; */&#xD;function deflate_slow(s, flush) {&#xD;  var hash_head;          /* head of hash chain */&#xD;  var bflush;              /* set if current block must be flushed */&#xD;&#xD;  var max_insert;&#xD;&#xD;  /* Process the input block. */&#xD;  for (;;) {&#xD;    /* Make sure that we always have enough lookahead, except&#xD;     * at the end of the input file. We need MAX_MATCH bytes&#xD;     * for the next match, plus MIN_MATCH bytes to insert the&#xD;     * string following the next match.&#xD;     */&#xD;    if (s.lookahead &lt; MIN_LOOKAHEAD) {&#xD;      fill_window(s);&#xD;      if (s.lookahead &lt; MIN_LOOKAHEAD &amp;&amp; flush === Z_NO_FLUSH) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      if (s.lookahead === 0) { break; } /* flush the current block */&#xD;    }&#xD;&#xD;    /* Insert the string window[strstart .. strstart+2] in the&#xD;     * dictionary, and set hash_head to the head of the hash chain:&#xD;     */&#xD;    hash_head = 0/*NIL*/;&#xD;    if (s.lookahead &gt;= MIN_MATCH) {&#xD;      /*** INSERT_STRING(s, s.strstart, hash_head); ***/&#xD;      s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;      hash_head = s.prev[s.strstart &amp; s.w_mask] = s.head[s.ins_h];&#xD;      s.head[s.ins_h] = s.strstart;&#xD;      /***/&#xD;    }&#xD;&#xD;    /* Find the longest match, discarding those &lt;= prev_length.&#xD;     */&#xD;    s.prev_length = s.match_length;&#xD;    s.prev_match = s.match_start;&#xD;    s.match_length = MIN_MATCH - 1;&#xD;&#xD;    if (hash_head !== 0/*NIL*/ &amp;&amp; s.prev_length &lt; s.max_lazy_match &amp;&amp;&#xD;        s.strstart - hash_head &lt;= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {&#xD;      /* To simplify the code, we prevent matches with the string&#xD;       * of window index 0 (in particular we have to avoid a match&#xD;       * of the string with itself at the start of the input file).&#xD;       */&#xD;      s.match_length = longest_match(s, hash_head);&#xD;      /* longest_match() sets match_start */&#xD;&#xD;      if (s.match_length &lt;= 5 &amp;&amp;&#xD;         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH &amp;&amp; s.strstart - s.match_start &gt; 4096/*TOO_FAR*/))) {&#xD;&#xD;        /* If prev_match is also MIN_MATCH, match_start is garbage&#xD;         * but we will ignore the current match anyway.&#xD;         */&#xD;        s.match_length = MIN_MATCH - 1;&#xD;      }&#xD;    }&#xD;    /* If there was a match at the previous step and the current&#xD;     * match is not better, output the previous match:&#xD;     */&#xD;    if (s.prev_length &gt;= MIN_MATCH &amp;&amp; s.match_length &lt;= s.prev_length) {&#xD;      max_insert = s.strstart + s.lookahead - MIN_MATCH;&#xD;      /* Do not insert strings in hash table beyond this. */&#xD;&#xD;      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);&#xD;&#xD;      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,&#xD;                     s.prev_length - MIN_MATCH, bflush);***/&#xD;      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);&#xD;      /* Insert in hash table all strings up to the end of the match.&#xD;       * strstart-1 and strstart are already inserted. If there is not&#xD;       * enough lookahead, the last two strings are not inserted in&#xD;       * the hash table.&#xD;       */&#xD;      s.lookahead -= s.prev_length - 1;&#xD;      s.prev_length -= 2;&#xD;      do {&#xD;        if (++s.strstart &lt;= max_insert) {&#xD;          /*** INSERT_STRING(s, s.strstart, hash_head); ***/&#xD;          s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;          hash_head = s.prev[s.strstart &amp; s.w_mask] = s.head[s.ins_h];&#xD;          s.head[s.ins_h] = s.strstart;&#xD;          /***/&#xD;        }&#xD;      } while (--s.prev_length !== 0);&#xD;      s.match_available = 0;&#xD;      s.match_length = MIN_MATCH - 1;&#xD;      s.strstart++;&#xD;&#xD;      if (bflush) {&#xD;        /*** FLUSH_BLOCK(s, 0); ***/&#xD;        flush_block_only(s, false);&#xD;        if (s.strm.avail_out === 0) {&#xD;          return BS_NEED_MORE;&#xD;        }&#xD;        /***/&#xD;      }&#xD;&#xD;    } else if (s.match_available) {&#xD;      /* If there was no match at the previous position, output a&#xD;       * single literal. If there was a match but the current match&#xD;       * is longer, truncate the previous match to a single literal.&#xD;       */&#xD;      //Tracevv((stderr,"%c", s-&gt;window[s-&gt;strstart-1]));&#xD;      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/&#xD;      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);&#xD;&#xD;      if (bflush) {&#xD;        /*** FLUSH_BLOCK_ONLY(s, 0) ***/&#xD;        flush_block_only(s, false);&#xD;        /***/&#xD;      }&#xD;      s.strstart++;&#xD;      s.lookahead--;&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;    } else {&#xD;      /* There is no previous match to compare with, wait for&#xD;       * the next step to decide.&#xD;       */&#xD;      s.match_available = 1;&#xD;      s.strstart++;&#xD;      s.lookahead--;&#xD;    }&#xD;  }&#xD;  //Assert (flush != Z_NO_FLUSH, "no flush?");&#xD;  if (s.match_available) {&#xD;    //Tracevv((stderr,"%c", s-&gt;window[s-&gt;strstart-1]));&#xD;    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/&#xD;    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);&#xD;&#xD;    s.match_available = 0;&#xD;  }&#xD;  s.insert = s.strstart &lt; MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;&#xD;  if (flush === Z_FINISH) {&#xD;    /*** FLUSH_BLOCK(s, 1); ***/&#xD;    flush_block_only(s, true);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_FINISH_STARTED;&#xD;    }&#xD;    /***/&#xD;    return BS_FINISH_DONE;&#xD;  }&#xD;  if (s.last_lit) {&#xD;    /*** FLUSH_BLOCK(s, 0); ***/&#xD;    flush_block_only(s, false);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_NEED_MORE;&#xD;    }&#xD;    /***/&#xD;  }&#xD;&#xD;  return BS_BLOCK_DONE;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * For Z_RLE, simply look for runs of bytes, generate matches only of distance&#xD; * one.  Do not maintain a hash table.  (It will be regenerated if this run of&#xD; * deflate switches away from Z_RLE.)&#xD; */&#xD;function deflate_rle(s, flush) {&#xD;  var bflush;            /* set if current block must be flushed */&#xD;  var prev;              /* byte at distance one to match */&#xD;  var scan, strend;      /* scan goes up to strend for length of run */&#xD;&#xD;  var _win = s.window;&#xD;&#xD;  for (;;) {&#xD;    /* Make sure that we always have enough lookahead, except&#xD;     * at the end of the input file. We need MAX_MATCH bytes&#xD;     * for the longest run, plus one for the unrolled loop.&#xD;     */&#xD;    if (s.lookahead &lt;= MAX_MATCH) {&#xD;      fill_window(s);&#xD;      if (s.lookahead &lt;= MAX_MATCH &amp;&amp; flush === Z_NO_FLUSH) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      if (s.lookahead === 0) { break; } /* flush the current block */&#xD;    }&#xD;&#xD;    /* See how many times the previous byte repeats */&#xD;    s.match_length = 0;&#xD;    if (s.lookahead &gt;= MIN_MATCH &amp;&amp; s.strstart &gt; 0) {&#xD;      scan = s.strstart - 1;&#xD;      prev = _win[scan];&#xD;      if (prev === _win[++scan] &amp;&amp; prev === _win[++scan] &amp;&amp; prev === _win[++scan]) {&#xD;        strend = s.strstart + MAX_MATCH;&#xD;        do {&#xD;          /*jshint noempty:false*/&#xD;        } while (prev === _win[++scan] &amp;&amp; prev === _win[++scan] &amp;&amp;&#xD;                 prev === _win[++scan] &amp;&amp; prev === _win[++scan] &amp;&amp;&#xD;                 prev === _win[++scan] &amp;&amp; prev === _win[++scan] &amp;&amp;&#xD;                 prev === _win[++scan] &amp;&amp; prev === _win[++scan] &amp;&amp;&#xD;                 scan &lt; strend);&#xD;        s.match_length = MAX_MATCH - (strend - scan);&#xD;        if (s.match_length &gt; s.lookahead) {&#xD;          s.match_length = s.lookahead;&#xD;        }&#xD;      }&#xD;      //Assert(scan &lt;= s-&gt;window+(uInt)(s-&gt;window_size-1), "wild scan");&#xD;    }&#xD;&#xD;    /* Emit match if have run of MIN_MATCH or longer, else emit literal */&#xD;    if (s.match_length &gt;= MIN_MATCH) {&#xD;      //check_match(s, s.strstart, s.strstart - 1, s.match_length);&#xD;&#xD;      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/&#xD;      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);&#xD;&#xD;      s.lookahead -= s.match_length;&#xD;      s.strstart += s.match_length;&#xD;      s.match_length = 0;&#xD;    } else {&#xD;      /* No match, output a literal byte */&#xD;      //Tracevv((stderr,"%c", s-&gt;window[s-&gt;strstart]));&#xD;      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/&#xD;      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);&#xD;&#xD;      s.lookahead--;&#xD;      s.strstart++;&#xD;    }&#xD;    if (bflush) {&#xD;      /*** FLUSH_BLOCK(s, 0); ***/&#xD;      flush_block_only(s, false);&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      /***/&#xD;    }&#xD;  }&#xD;  s.insert = 0;&#xD;  if (flush === Z_FINISH) {&#xD;    /*** FLUSH_BLOCK(s, 1); ***/&#xD;    flush_block_only(s, true);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_FINISH_STARTED;&#xD;    }&#xD;    /***/&#xD;    return BS_FINISH_DONE;&#xD;  }&#xD;  if (s.last_lit) {&#xD;    /*** FLUSH_BLOCK(s, 0); ***/&#xD;    flush_block_only(s, false);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_NEED_MORE;&#xD;    }&#xD;    /***/&#xD;  }&#xD;  return BS_BLOCK_DONE;&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.&#xD; * (It will be regenerated if this run of deflate switches away from Huffman.)&#xD; */&#xD;function deflate_huff(s, flush) {&#xD;  var bflush;             /* set if current block must be flushed */&#xD;&#xD;  for (;;) {&#xD;    /* Make sure that we have a literal to write. */&#xD;    if (s.lookahead === 0) {&#xD;      fill_window(s);&#xD;      if (s.lookahead === 0) {&#xD;        if (flush === Z_NO_FLUSH) {&#xD;          return BS_NEED_MORE;&#xD;        }&#xD;        break;      /* flush the current block */&#xD;      }&#xD;    }&#xD;&#xD;    /* Output a literal byte */&#xD;    s.match_length = 0;&#xD;    //Tracevv((stderr,"%c", s-&gt;window[s-&gt;strstart]));&#xD;    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/&#xD;    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);&#xD;    s.lookahead--;&#xD;    s.strstart++;&#xD;    if (bflush) {&#xD;      /*** FLUSH_BLOCK(s, 0); ***/&#xD;      flush_block_only(s, false);&#xD;      if (s.strm.avail_out === 0) {&#xD;        return BS_NEED_MORE;&#xD;      }&#xD;      /***/&#xD;    }&#xD;  }&#xD;  s.insert = 0;&#xD;  if (flush === Z_FINISH) {&#xD;    /*** FLUSH_BLOCK(s, 1); ***/&#xD;    flush_block_only(s, true);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_FINISH_STARTED;&#xD;    }&#xD;    /***/&#xD;    return BS_FINISH_DONE;&#xD;  }&#xD;  if (s.last_lit) {&#xD;    /*** FLUSH_BLOCK(s, 0); ***/&#xD;    flush_block_only(s, false);&#xD;    if (s.strm.avail_out === 0) {&#xD;      return BS_NEED_MORE;&#xD;    }&#xD;    /***/&#xD;  }&#xD;  return BS_BLOCK_DONE;&#xD;}&#xD;&#xD;/* Values for max_lazy_match, good_match and max_chain_length, depending on&#xD; * the desired pack level (0..9). The values given below have been tuned to&#xD; * exclude worst case performance for pathological files. Better values may be&#xD; * found for specific files.&#xD; */&#xD;function Config(good_length, max_lazy, nice_length, max_chain, func) {&#xD;  this.good_length = good_length;&#xD;  this.max_lazy = max_lazy;&#xD;  this.nice_length = nice_length;&#xD;  this.max_chain = max_chain;&#xD;  this.func = func;&#xD;}&#xD;&#xD;var configuration_table;&#xD;&#xD;configuration_table = [&#xD;  /*      good lazy nice chain */&#xD;  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */&#xD;  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */&#xD;  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */&#xD;  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */&#xD;&#xD;  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */&#xD;  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */&#xD;  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */&#xD;  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */&#xD;  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */&#xD;  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */&#xD;];&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Initialize the "longest match" routines for a new zlib stream&#xD; */&#xD;function lm_init(s) {&#xD;  s.window_size = 2 * s.w_size;&#xD;&#xD;  /*** CLEAR_HASH(s); ***/&#xD;  zero(s.head); // Fill with NIL (= 0);&#xD;&#xD;  /* Set the default configuration parameters:&#xD;   */&#xD;  s.max_lazy_match = configuration_table[s.level].max_lazy;&#xD;  s.good_match = configuration_table[s.level].good_length;&#xD;  s.nice_match = configuration_table[s.level].nice_length;&#xD;  s.max_chain_length = configuration_table[s.level].max_chain;&#xD;&#xD;  s.strstart = 0;&#xD;  s.block_start = 0;&#xD;  s.lookahead = 0;&#xD;  s.insert = 0;&#xD;  s.match_length = s.prev_length = MIN_MATCH - 1;&#xD;  s.match_available = 0;&#xD;  s.ins_h = 0;&#xD;}&#xD;&#xD;&#xD;function DeflateState() {&#xD;  this.strm = null;            /* pointer back to this zlib stream */&#xD;  this.status = 0;            /* as the name implies */&#xD;  this.pending_buf = null;      /* output still pending */&#xD;  this.pending_buf_size = 0;  /* size of pending_buf */&#xD;  this.pending_out = 0;       /* next pending byte to output to the stream */&#xD;  this.pending = 0;           /* nb of bytes in the pending buffer */&#xD;  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */&#xD;  this.gzhead = null;         /* gzip header information to write */&#xD;  this.gzindex = 0;           /* where in extra, name, or comment */&#xD;  this.method = Z_DEFLATED; /* can only be DEFLATED */&#xD;  this.last_flush = -1;   /* value of flush param for previous deflate call */&#xD;&#xD;  this.w_size = 0;  /* LZ77 window size (32K by default) */&#xD;  this.w_bits = 0;  /* log2(w_size)  (8..16) */&#xD;  this.w_mask = 0;  /* w_size - 1 */&#xD;&#xD;  this.window = null;&#xD;  /* Sliding window. Input bytes are read into the second half of the window,&#xD;   * and move to the first half later to keep a dictionary of at least wSize&#xD;   * bytes. With this organization, matches are limited to a distance of&#xD;   * wSize-MAX_MATCH bytes, but this ensures that IO is always&#xD;   * performed with a length multiple of the block size.&#xD;   */&#xD;&#xD;  this.window_size = 0;&#xD;  /* Actual size of window: 2*wSize, except when the user input buffer&#xD;   * is directly used as sliding window.&#xD;   */&#xD;&#xD;  this.prev = null;&#xD;  /* Link to older string with same hash index. To limit the size of this&#xD;   * array to 64K, this link is maintained only for the last 32K strings.&#xD;   * An index in this array is thus a window index modulo 32K.&#xD;   */&#xD;&#xD;  this.head = null;   /* Heads of the hash chains or NIL. */&#xD;&#xD;  this.ins_h = 0;       /* hash index of string to be inserted */&#xD;  this.hash_size = 0;   /* number of elements in hash table */&#xD;  this.hash_bits = 0;   /* log2(hash_size) */&#xD;  this.hash_mask = 0;   /* hash_size-1 */&#xD;&#xD;  this.hash_shift = 0;&#xD;  /* Number of bits by which ins_h must be shifted at each input&#xD;   * step. It must be such that after MIN_MATCH steps, the oldest&#xD;   * byte no longer takes part in the hash key, that is:&#xD;   *   hash_shift * MIN_MATCH &gt;= hash_bits&#xD;   */&#xD;&#xD;  this.block_start = 0;&#xD;  /* Window position at the beginning of the current output block. Gets&#xD;   * negative when the window is moved backwards.&#xD;   */&#xD;&#xD;  this.match_length = 0;      /* length of best match */&#xD;  this.prev_match = 0;        /* previous match */&#xD;  this.match_available = 0;   /* set if previous match exists */&#xD;  this.strstart = 0;          /* start of string to insert */&#xD;  this.match_start = 0;       /* start of matching string */&#xD;  this.lookahead = 0;         /* number of valid bytes ahead in window */&#xD;&#xD;  this.prev_length = 0;&#xD;  /* Length of the best match at previous step. Matches not greater than this&#xD;   * are discarded. This is used in the lazy match evaluation.&#xD;   */&#xD;&#xD;  this.max_chain_length = 0;&#xD;  /* To speed up deflation, hash chains are never searched beyond this&#xD;   * length.  A higher limit improves compression ratio but degrades the&#xD;   * speed.&#xD;   */&#xD;&#xD;  this.max_lazy_match = 0;&#xD;  /* Attempt to find a better match only when the current match is strictly&#xD;   * smaller than this value. This mechanism is used only for compression&#xD;   * levels &gt;= 4.&#xD;   */&#xD;  // That&apos;s alias to max_lazy_match, don&apos;t use directly&#xD;  //this.max_insert_length = 0;&#xD;  /* Insert new strings in the hash table only if the match length is not&#xD;   * greater than this length. This saves time but degrades compression.&#xD;   * max_insert_length is used only for compression levels &lt;= 3.&#xD;   */&#xD;&#xD;  this.level = 0;     /* compression level (1..9) */&#xD;  this.strategy = 0;  /* favor or force Huffman coding*/&#xD;&#xD;  this.good_match = 0;&#xD;  /* Use a faster search when the previous match is longer than this */&#xD;&#xD;  this.nice_match = 0; /* Stop searching when current match exceeds this */&#xD;&#xD;              /* used by trees.c: */&#xD;&#xD;  /* Didn&apos;t use ct_data typedef below to suppress compiler warning */&#xD;&#xD;  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */&#xD;  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */&#xD;  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */&#xD;&#xD;  // Use flat array of DOUBLE size, with interleaved fata,&#xD;  // because JS does not support effective&#xD;  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);&#xD;  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);&#xD;  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);&#xD;  zero(this.dyn_ltree);&#xD;  zero(this.dyn_dtree);&#xD;  zero(this.bl_tree);&#xD;&#xD;  this.l_desc   = null;         /* desc. for literal tree */&#xD;  this.d_desc   = null;         /* desc. for distance tree */&#xD;  this.bl_desc  = null;         /* desc. for bit length tree */&#xD;&#xD;  //ush bl_count[MAX_BITS+1];&#xD;  this.bl_count = new utils.Buf16(MAX_BITS + 1);&#xD;  /* number of codes at each bit length for an optimal tree */&#xD;&#xD;  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */&#xD;  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */&#xD;  zero(this.heap);&#xD;&#xD;  this.heap_len = 0;               /* number of elements in the heap */&#xD;  this.heap_max = 0;               /* element of largest frequency */&#xD;  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.&#xD;   * The same heap array is used to build all trees.&#xD;   */&#xD;&#xD;  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];&#xD;  zero(this.depth);&#xD;  /* Depth of each subtree used as tie breaker for trees of equal frequency&#xD;   */&#xD;&#xD;  this.l_buf = 0;          /* buffer index for literals or lengths */&#xD;&#xD;  this.lit_bufsize = 0;&#xD;  /* Size of match buffer for literals/lengths.  There are 4 reasons for&#xD;   * limiting lit_bufsize to 64K:&#xD;   *   - frequencies can be kept in 16 bit counters&#xD;   *   - if compression is not successful for the first block, all input&#xD;   *     data is still in the window so we can still emit a stored block even&#xD;   *     when input comes from standard input.  (This can also be done for&#xD;   *     all blocks if lit_bufsize is not greater than 32K.)&#xD;   *   - if compression is not successful for a file smaller than 64K, we can&#xD;   *     even emit a stored file instead of a stored block (saving 5 bytes).&#xD;   *     This is applicable only for zip (not gzip or zlib).&#xD;   *   - creating new Huffman trees less frequently may not provide fast&#xD;   *     adaptation to changes in the input data statistics. (Take for&#xD;   *     example a binary file with poorly compressible code followed by&#xD;   *     a highly compressible string table.) Smaller buffer sizes give&#xD;   *     fast adaptation but have of course the overhead of transmitting&#xD;   *     trees more frequently.&#xD;   *   - I can&apos;t count above 4&#xD;   */&#xD;&#xD;  this.last_lit = 0;      /* running index in l_buf */&#xD;&#xD;  this.d_buf = 0;&#xD;  /* Buffer index for distances. To simplify the code, d_buf and l_buf have&#xD;   * the same number of elements. To use different lengths, an extra flag&#xD;   * array would be necessary.&#xD;   */&#xD;&#xD;  this.opt_len = 0;       /* bit length of current block with optimal trees */&#xD;  this.static_len = 0;    /* bit length of current block with static trees */&#xD;  this.matches = 0;       /* number of string matches in current block */&#xD;  this.insert = 0;        /* bytes at end of window left to insert */&#xD;&#xD;&#xD;  this.bi_buf = 0;&#xD;  /* Output buffer. bits are inserted starting at the bottom (least&#xD;   * significant bits).&#xD;   */&#xD;  this.bi_valid = 0;&#xD;  /* Number of valid bits in bi_buf.  All bits above the last valid bit&#xD;   * are always zero.&#xD;   */&#xD;&#xD;  // Used for window memory init. We safely ignore it for JS. That makes&#xD;  // sense only for pointers and memory check tools.&#xD;  //this.high_water = 0;&#xD;  /* High water mark offset in window for initialized bytes -- bytes above&#xD;   * this are set to zero in order to avoid memory check warnings when&#xD;   * longest match routines access bytes past the input.  This is then&#xD;   * updated to the new high water mark.&#xD;   */&#xD;}&#xD;&#xD;&#xD;function deflateResetKeep(strm) {&#xD;  var s;&#xD;&#xD;  if (!strm || !strm.state) {&#xD;    return err(strm, Z_STREAM_ERROR);&#xD;  }&#xD;&#xD;  strm.total_in = strm.total_out = 0;&#xD;  strm.data_type = Z_UNKNOWN;&#xD;&#xD;  s = strm.state;&#xD;  s.pending = 0;&#xD;  s.pending_out = 0;&#xD;&#xD;  if (s.wrap &lt; 0) {&#xD;    s.wrap = -s.wrap;&#xD;    /* was made negative by deflate(..., Z_FINISH); */&#xD;  }&#xD;  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);&#xD;  strm.adler = (s.wrap === 2) ?&#xD;    0  // crc32(0, Z_NULL, 0)&#xD;  :&#xD;    1; // adler32(0, Z_NULL, 0)&#xD;  s.last_flush = Z_NO_FLUSH;&#xD;  trees._tr_init(s);&#xD;  return Z_OK;&#xD;}&#xD;&#xD;&#xD;function deflateReset(strm) {&#xD;  var ret = deflateResetKeep(strm);&#xD;  if (ret === Z_OK) {&#xD;    lm_init(strm.state);&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;&#xD;function deflateSetHeader(strm, head) {&#xD;  if (!strm || !strm.state) { return Z_STREAM_ERROR; }&#xD;  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }&#xD;  strm.state.gzhead = head;&#xD;  return Z_OK;&#xD;}&#xD;&#xD;&#xD;function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {&#xD;  if (!strm) { // === Z_NULL&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;  var wrap = 1;&#xD;&#xD;  if (level === Z_DEFAULT_COMPRESSION) {&#xD;    level = 6;&#xD;  }&#xD;&#xD;  if (windowBits &lt; 0) { /* suppress zlib wrapper */&#xD;    wrap = 0;&#xD;    windowBits = -windowBits;&#xD;  }&#xD;&#xD;  else if (windowBits &gt; 15) {&#xD;    wrap = 2;           /* write gzip wrapper instead */&#xD;    windowBits -= 16;&#xD;  }&#xD;&#xD;&#xD;  if (memLevel &lt; 1 || memLevel &gt; MAX_MEM_LEVEL || method !== Z_DEFLATED ||&#xD;    windowBits &lt; 8 || windowBits &gt; 15 || level &lt; 0 || level &gt; 9 ||&#xD;    strategy &lt; 0 || strategy &gt; Z_FIXED) {&#xD;    return err(strm, Z_STREAM_ERROR);&#xD;  }&#xD;&#xD;&#xD;  if (windowBits === 8) {&#xD;    windowBits = 9;&#xD;  }&#xD;  /* until 256-byte window bug fixed */&#xD;&#xD;  var s = new DeflateState();&#xD;&#xD;  strm.state = s;&#xD;  s.strm = strm;&#xD;&#xD;  s.wrap = wrap;&#xD;  s.gzhead = null;&#xD;  s.w_bits = windowBits;&#xD;  s.w_size = 1 &lt;&lt; s.w_bits;&#xD;  s.w_mask = s.w_size - 1;&#xD;&#xD;  s.hash_bits = memLevel + 7;&#xD;  s.hash_size = 1 &lt;&lt; s.hash_bits;&#xD;  s.hash_mask = s.hash_size - 1;&#xD;  s.hash_shift = &#126;&#126;((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);&#xD;&#xD;  s.window = new utils.Buf8(s.w_size * 2);&#xD;  s.head = new utils.Buf16(s.hash_size);&#xD;  s.prev = new utils.Buf16(s.w_size);&#xD;&#xD;  // Don&apos;t need mem init magic for JS.&#xD;  //s.high_water = 0;  /* nothing written to s-&gt;window yet */&#xD;&#xD;  s.lit_bufsize = 1 &lt;&lt; (memLevel + 6); /* 16K elements by default */&#xD;&#xD;  s.pending_buf_size = s.lit_bufsize * 4;&#xD;&#xD;  //overlay = (ushf *) ZALLOC(strm, s-&gt;lit_bufsize, sizeof(ush)+2);&#xD;  //s-&gt;pending_buf = (uchf *) overlay;&#xD;  s.pending_buf = new utils.Buf8(s.pending_buf_size);&#xD;&#xD;  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)&#xD;  //s-&gt;d_buf = overlay + s-&gt;lit_bufsize/sizeof(ush);&#xD;  s.d_buf = 1 * s.lit_bufsize;&#xD;&#xD;  //s-&gt;l_buf = s-&gt;pending_buf + (1+sizeof(ush))*s-&gt;lit_bufsize;&#xD;  s.l_buf = (1 + 2) * s.lit_bufsize;&#xD;&#xD;  s.level = level;&#xD;  s.strategy = strategy;&#xD;  s.method = method;&#xD;&#xD;  return deflateReset(strm);&#xD;}&#xD;&#xD;function deflateInit(strm, level) {&#xD;  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);&#xD;}&#xD;&#xD;&#xD;function deflate(strm, flush) {&#xD;  var old_flush, s;&#xD;  var beg, val; // for gzip header write only&#xD;&#xD;  if (!strm || !strm.state ||&#xD;    flush &gt; Z_BLOCK || flush &lt; 0) {&#xD;    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  s = strm.state;&#xD;&#xD;  if (!strm.output ||&#xD;      (!strm.input &amp;&amp; strm.avail_in !== 0) ||&#xD;      (s.status === FINISH_STATE &amp;&amp; flush !== Z_FINISH)) {&#xD;    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);&#xD;  }&#xD;&#xD;  s.strm = strm; /* just in case */&#xD;  old_flush = s.last_flush;&#xD;  s.last_flush = flush;&#xD;&#xD;  /* Write the header */&#xD;  if (s.status === INIT_STATE) {&#xD;&#xD;    if (s.wrap === 2) { // GZIP header&#xD;      strm.adler = 0;  //crc32(0L, Z_NULL, 0);&#xD;      put_byte(s, 31);&#xD;      put_byte(s, 139);&#xD;      put_byte(s, 8);&#xD;      if (!s.gzhead) { // s-&gt;gzhead == Z_NULL&#xD;        put_byte(s, 0);&#xD;        put_byte(s, 0);&#xD;        put_byte(s, 0);&#xD;        put_byte(s, 0);&#xD;        put_byte(s, 0);&#xD;        put_byte(s, s.level === 9 ? 2 :&#xD;                    (s.strategy &gt;= Z_HUFFMAN_ONLY || s.level &lt; 2 ?&#xD;                     4 : 0));&#xD;        put_byte(s, OS_CODE);&#xD;        s.status = BUSY_STATE;&#xD;      }&#xD;      else {&#xD;        put_byte(s, (s.gzhead.text ? 1 : 0) +&#xD;                    (s.gzhead.hcrc ? 2 : 0) +&#xD;                    (!s.gzhead.extra ? 0 : 4) +&#xD;                    (!s.gzhead.name ? 0 : 8) +&#xD;                    (!s.gzhead.comment ? 0 : 16)&#xD;                );&#xD;        put_byte(s, s.gzhead.time &amp; 0xff);&#xD;        put_byte(s, (s.gzhead.time &gt;&gt; 8) &amp; 0xff);&#xD;        put_byte(s, (s.gzhead.time &gt;&gt; 16) &amp; 0xff);&#xD;        put_byte(s, (s.gzhead.time &gt;&gt; 24) &amp; 0xff);&#xD;        put_byte(s, s.level === 9 ? 2 :&#xD;                    (s.strategy &gt;= Z_HUFFMAN_ONLY || s.level &lt; 2 ?&#xD;                     4 : 0));&#xD;        put_byte(s, s.gzhead.os &amp; 0xff);&#xD;        if (s.gzhead.extra &amp;&amp; s.gzhead.extra.length) {&#xD;          put_byte(s, s.gzhead.extra.length &amp; 0xff);&#xD;          put_byte(s, (s.gzhead.extra.length &gt;&gt; 8) &amp; 0xff);&#xD;        }&#xD;        if (s.gzhead.hcrc) {&#xD;          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);&#xD;        }&#xD;        s.gzindex = 0;&#xD;        s.status = EXTRA_STATE;&#xD;      }&#xD;    }&#xD;    else // DEFLATE header&#xD;    {&#xD;      var header = (Z_DEFLATED + ((s.w_bits - 8) &lt;&lt; 4)) &lt;&lt; 8;&#xD;      var level_flags = -1;&#xD;&#xD;      if (s.strategy &gt;= Z_HUFFMAN_ONLY || s.level &lt; 2) {&#xD;        level_flags = 0;&#xD;      } else if (s.level &lt; 6) {&#xD;        level_flags = 1;&#xD;      } else if (s.level === 6) {&#xD;        level_flags = 2;&#xD;      } else {&#xD;        level_flags = 3;&#xD;      }&#xD;      header |= (level_flags &lt;&lt; 6);&#xD;      if (s.strstart !== 0) { header |= PRESET_DICT; }&#xD;      header += 31 - (header % 31);&#xD;&#xD;      s.status = BUSY_STATE;&#xD;      putShortMSB(s, header);&#xD;&#xD;      /* Save the adler32 of the preset dictionary: */&#xD;      if (s.strstart !== 0) {&#xD;        putShortMSB(s, strm.adler &gt;&gt;&gt; 16);&#xD;        putShortMSB(s, strm.adler &amp; 0xffff);&#xD;      }&#xD;      strm.adler = 1; // adler32(0L, Z_NULL, 0);&#xD;    }&#xD;  }&#xD;&#xD;//#ifdef GZIP&#xD;  if (s.status === EXTRA_STATE) {&#xD;    if (s.gzhead.extra/* != Z_NULL*/) {&#xD;      beg = s.pending;  /* start of bytes to update crc */&#xD;&#xD;      while (s.gzindex &lt; (s.gzhead.extra.length &amp; 0xffff)) {&#xD;        if (s.pending === s.pending_buf_size) {&#xD;          if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;          }&#xD;          flush_pending(strm);&#xD;          beg = s.pending;&#xD;          if (s.pending === s.pending_buf_size) {&#xD;            break;&#xD;          }&#xD;        }&#xD;        put_byte(s, s.gzhead.extra[s.gzindex] &amp; 0xff);&#xD;        s.gzindex++;&#xD;      }&#xD;      if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;      }&#xD;      if (s.gzindex === s.gzhead.extra.length) {&#xD;        s.gzindex = 0;&#xD;        s.status = NAME_STATE;&#xD;      }&#xD;    }&#xD;    else {&#xD;      s.status = NAME_STATE;&#xD;    }&#xD;  }&#xD;  if (s.status === NAME_STATE) {&#xD;    if (s.gzhead.name/* != Z_NULL*/) {&#xD;      beg = s.pending;  /* start of bytes to update crc */&#xD;      //int val;&#xD;&#xD;      do {&#xD;        if (s.pending === s.pending_buf_size) {&#xD;          if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;          }&#xD;          flush_pending(strm);&#xD;          beg = s.pending;&#xD;          if (s.pending === s.pending_buf_size) {&#xD;            val = 1;&#xD;            break;&#xD;          }&#xD;        }&#xD;        // JS specific: little magic to add zero terminator to end of string&#xD;        if (s.gzindex &lt; s.gzhead.name.length) {&#xD;          val = s.gzhead.name.charCodeAt(s.gzindex++) &amp; 0xff;&#xD;        } else {&#xD;          val = 0;&#xD;        }&#xD;        put_byte(s, val);&#xD;      } while (val !== 0);&#xD;&#xD;      if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;      }&#xD;      if (val === 0) {&#xD;        s.gzindex = 0;&#xD;        s.status = COMMENT_STATE;&#xD;      }&#xD;    }&#xD;    else {&#xD;      s.status = COMMENT_STATE;&#xD;    }&#xD;  }&#xD;  if (s.status === COMMENT_STATE) {&#xD;    if (s.gzhead.comment/* != Z_NULL*/) {&#xD;      beg = s.pending;  /* start of bytes to update crc */&#xD;      //int val;&#xD;&#xD;      do {&#xD;        if (s.pending === s.pending_buf_size) {&#xD;          if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;          }&#xD;          flush_pending(strm);&#xD;          beg = s.pending;&#xD;          if (s.pending === s.pending_buf_size) {&#xD;            val = 1;&#xD;            break;&#xD;          }&#xD;        }&#xD;        // JS specific: little magic to add zero terminator to end of string&#xD;        if (s.gzindex &lt; s.gzhead.comment.length) {&#xD;          val = s.gzhead.comment.charCodeAt(s.gzindex++) &amp; 0xff;&#xD;        } else {&#xD;          val = 0;&#xD;        }&#xD;        put_byte(s, val);&#xD;      } while (val !== 0);&#xD;&#xD;      if (s.gzhead.hcrc &amp;&amp; s.pending &gt; beg) {&#xD;        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);&#xD;      }&#xD;      if (val === 0) {&#xD;        s.status = HCRC_STATE;&#xD;      }&#xD;    }&#xD;    else {&#xD;      s.status = HCRC_STATE;&#xD;    }&#xD;  }&#xD;  if (s.status === HCRC_STATE) {&#xD;    if (s.gzhead.hcrc) {&#xD;      if (s.pending + 2 &gt; s.pending_buf_size) {&#xD;        flush_pending(strm);&#xD;      }&#xD;      if (s.pending + 2 &lt;= s.pending_buf_size) {&#xD;        put_byte(s, strm.adler &amp; 0xff);&#xD;        put_byte(s, (strm.adler &gt;&gt; 8) &amp; 0xff);&#xD;        strm.adler = 0; //crc32(0L, Z_NULL, 0);&#xD;        s.status = BUSY_STATE;&#xD;      }&#xD;    }&#xD;    else {&#xD;      s.status = BUSY_STATE;&#xD;    }&#xD;  }&#xD;//#endif&#xD;&#xD;  /* Flush as much pending output as possible */&#xD;  if (s.pending !== 0) {&#xD;    flush_pending(strm);&#xD;    if (strm.avail_out === 0) {&#xD;      /* Since avail_out is 0, deflate will be called again with&#xD;       * more output space, but possibly with both pending and&#xD;       * avail_in equal to zero. There won&apos;t be anything to do,&#xD;       * but this is not an error situation so make sure we&#xD;       * return OK instead of BUF_ERROR at next call of deflate:&#xD;       */&#xD;      s.last_flush = -1;&#xD;      return Z_OK;&#xD;    }&#xD;&#xD;    /* Make sure there is something to do and avoid duplicate consecutive&#xD;     * flushes. For repeated and useless calls with Z_FINISH, we keep&#xD;     * returning Z_STREAM_END instead of Z_BUF_ERROR.&#xD;     */&#xD;  } else if (strm.avail_in === 0 &amp;&amp; rank(flush) &lt;= rank(old_flush) &amp;&amp;&#xD;    flush !== Z_FINISH) {&#xD;    return err(strm, Z_BUF_ERROR);&#xD;  }&#xD;&#xD;  /* User must not provide more input after the first FINISH: */&#xD;  if (s.status === FINISH_STATE &amp;&amp; strm.avail_in !== 0) {&#xD;    return err(strm, Z_BUF_ERROR);&#xD;  }&#xD;&#xD;  /* Start a new block or continue the current one.&#xD;   */&#xD;  if (strm.avail_in !== 0 || s.lookahead !== 0 ||&#xD;    (flush !== Z_NO_FLUSH &amp;&amp; s.status !== FINISH_STATE)) {&#xD;    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :&#xD;      (s.strategy === Z_RLE ? deflate_rle(s, flush) :&#xD;        configuration_table[s.level].func(s, flush));&#xD;&#xD;    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {&#xD;      s.status = FINISH_STATE;&#xD;    }&#xD;    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {&#xD;      if (strm.avail_out === 0) {&#xD;        s.last_flush = -1;&#xD;        /* avoid BUF_ERROR next call, see above */&#xD;      }&#xD;      return Z_OK;&#xD;      /* If flush != Z_NO_FLUSH &amp;&amp; avail_out == 0, the next call&#xD;       * of deflate should use the same flush parameter to make sure&#xD;       * that the flush is complete. So we don&apos;t have to output an&#xD;       * empty block here, this will be done at next call. This also&#xD;       * ensures that for a very small output buffer, we emit at most&#xD;       * one empty block.&#xD;       */&#xD;    }&#xD;    if (bstate === BS_BLOCK_DONE) {&#xD;      if (flush === Z_PARTIAL_FLUSH) {&#xD;        trees._tr_align(s);&#xD;      }&#xD;      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */&#xD;&#xD;        trees._tr_stored_block(s, 0, 0, false);&#xD;        /* For a full flush, this empty block will be recognized&#xD;         * as a special marker by inflate_sync().&#xD;         */&#xD;        if (flush === Z_FULL_FLUSH) {&#xD;          /*** CLEAR_HASH(s); ***/             /* forget history */&#xD;          zero(s.head); // Fill with NIL (= 0);&#xD;&#xD;          if (s.lookahead === 0) {&#xD;            s.strstart = 0;&#xD;            s.block_start = 0;&#xD;            s.insert = 0;&#xD;          }&#xD;        }&#xD;      }&#xD;      flush_pending(strm);&#xD;      if (strm.avail_out === 0) {&#xD;        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */&#xD;        return Z_OK;&#xD;      }&#xD;    }&#xD;  }&#xD;  //Assert(strm-&gt;avail_out &gt; 0, "bug2");&#xD;  //if (strm.avail_out &lt;= 0) { throw new Error("bug2");}&#xD;&#xD;  if (flush !== Z_FINISH) { return Z_OK; }&#xD;  if (s.wrap &lt;= 0) { return Z_STREAM_END; }&#xD;&#xD;  /* Write the trailer */&#xD;  if (s.wrap === 2) {&#xD;    put_byte(s, strm.adler &amp; 0xff);&#xD;    put_byte(s, (strm.adler &gt;&gt; 8) &amp; 0xff);&#xD;    put_byte(s, (strm.adler &gt;&gt; 16) &amp; 0xff);&#xD;    put_byte(s, (strm.adler &gt;&gt; 24) &amp; 0xff);&#xD;    put_byte(s, strm.total_in &amp; 0xff);&#xD;    put_byte(s, (strm.total_in &gt;&gt; 8) &amp; 0xff);&#xD;    put_byte(s, (strm.total_in &gt;&gt; 16) &amp; 0xff);&#xD;    put_byte(s, (strm.total_in &gt;&gt; 24) &amp; 0xff);&#xD;  }&#xD;  else&#xD;  {&#xD;    putShortMSB(s, strm.adler &gt;&gt;&gt; 16);&#xD;    putShortMSB(s, strm.adler &amp; 0xffff);&#xD;  }&#xD;&#xD;  flush_pending(strm);&#xD;  /* If avail_out is zero, the application will call deflate again&#xD;   * to flush the rest.&#xD;   */&#xD;  if (s.wrap &gt; 0) { s.wrap = -s.wrap; }&#xD;  /* write the trailer only once! */&#xD;  return s.pending !== 0 ? Z_OK : Z_STREAM_END;&#xD;}&#xD;&#xD;function deflateEnd(strm) {&#xD;  var status;&#xD;&#xD;  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  status = strm.state.status;&#xD;  if (status !== INIT_STATE &amp;&amp;&#xD;    status !== EXTRA_STATE &amp;&amp;&#xD;    status !== NAME_STATE &amp;&amp;&#xD;    status !== COMMENT_STATE &amp;&amp;&#xD;    status !== HCRC_STATE &amp;&amp;&#xD;    status !== BUSY_STATE &amp;&amp;&#xD;    status !== FINISH_STATE&#xD;  ) {&#xD;    return err(strm, Z_STREAM_ERROR);&#xD;  }&#xD;&#xD;  strm.state = null;&#xD;&#xD;  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;&#xD;}&#xD;&#xD;&#xD;/* =========================================================================&#xD; * Initializes the compression dictionary from the given byte&#xD; * sequence without producing any compressed output.&#xD; */&#xD;function deflateSetDictionary(strm, dictionary) {&#xD;  var dictLength = dictionary.length;&#xD;&#xD;  var s;&#xD;  var str, n;&#xD;  var wrap;&#xD;  var avail;&#xD;  var next;&#xD;  var input;&#xD;  var tmpDict;&#xD;&#xD;  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  s = strm.state;&#xD;  wrap = s.wrap;&#xD;&#xD;  if (wrap === 2 || (wrap === 1 &amp;&amp; s.status !== INIT_STATE) || s.lookahead) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  /* when using zlib wrappers, compute Adler-32 for provided dictionary */&#xD;  if (wrap === 1) {&#xD;    /* adler32(strm-&gt;adler, dictionary, dictLength); */&#xD;    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);&#xD;  }&#xD;&#xD;  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */&#xD;&#xD;  /* if dictionary would fill window, just replace the history */&#xD;  if (dictLength &gt;= s.w_size) {&#xD;    if (wrap === 0) {            /* already empty otherwise */&#xD;      /*** CLEAR_HASH(s); ***/&#xD;      zero(s.head); // Fill with NIL (= 0);&#xD;      s.strstart = 0;&#xD;      s.block_start = 0;&#xD;      s.insert = 0;&#xD;    }&#xD;    /* use the tail */&#xD;    // dictionary = dictionary.slice(dictLength - s.w_size);&#xD;    tmpDict = new utils.Buf8(s.w_size);&#xD;    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);&#xD;    dictionary = tmpDict;&#xD;    dictLength = s.w_size;&#xD;  }&#xD;  /* insert dictionary into window and hash */&#xD;  avail = strm.avail_in;&#xD;  next = strm.next_in;&#xD;  input = strm.input;&#xD;  strm.avail_in = dictLength;&#xD;  strm.next_in = 0;&#xD;  strm.input = dictionary;&#xD;  fill_window(s);&#xD;  while (s.lookahead &gt;= MIN_MATCH) {&#xD;    str = s.strstart;&#xD;    n = s.lookahead - (MIN_MATCH - 1);&#xD;    do {&#xD;      /* UPDATE_HASH(s, s-&gt;ins_h, s-&gt;window[str + MIN_MATCH-1]); */&#xD;      s.ins_h = ((s.ins_h &lt;&lt; s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) &amp; s.hash_mask;&#xD;&#xD;      s.prev[str &amp; s.w_mask] = s.head[s.ins_h];&#xD;&#xD;      s.head[s.ins_h] = str;&#xD;      str++;&#xD;    } while (--n);&#xD;    s.strstart = str;&#xD;    s.lookahead = MIN_MATCH - 1;&#xD;    fill_window(s);&#xD;  }&#xD;  s.strstart += s.lookahead;&#xD;  s.block_start = s.strstart;&#xD;  s.insert = s.lookahead;&#xD;  s.lookahead = 0;&#xD;  s.match_length = s.prev_length = MIN_MATCH - 1;&#xD;  s.match_available = 0;&#xD;  strm.next_in = next;&#xD;  strm.input = input;&#xD;  strm.avail_in = avail;&#xD;  s.wrap = wrap;&#xD;  return Z_OK;&#xD;}&#xD;&#xD;&#xD;exports.deflateInit = deflateInit;&#xD;exports.deflateInit2 = deflateInit2;&#xD;exports.deflateReset = deflateReset;&#xD;exports.deflateResetKeep = deflateResetKeep;&#xD;exports.deflateSetHeader = deflateSetHeader;&#xD;exports.deflate = deflate;&#xD;exports.deflateEnd = deflateEnd;&#xD;exports.deflateSetDictionary = deflateSetDictionary;&#xD;exports.deflateInfo = &apos;pako deflate (from Nodeca project)&apos;;&#xD;&#xD;/* Not implemented&#xD;exports.deflateBound = deflateBound;&#xD;exports.deflateCopy = deflateCopy;&#xD;exports.deflateParams = deflateParams;&#xD;exports.deflatePending = deflatePending;&#xD;exports.deflatePrime = deflatePrime;&#xD;exports.deflateTune = deflateTune;&#xD;*/&#xD;&#xD;&#xD;/***/ }),&#xD;/* 376 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;// See state defs from inflate.js&#xD;var BAD = 30;       /* got a data error -- remain here until reset */&#xD;var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */&#xD;&#xD;/*&#xD;   Decode literal, length, and distance codes and write out the resulting&#xD;   literal and match bytes until either not enough input or output is&#xD;   available, an end-of-block is encountered, or a data error is encountered.&#xD;   When large enough input and output buffers are supplied to inflate(), for&#xD;   example, a 16K input buffer and a 64K output buffer, more than 95% of the&#xD;   inflate execution time is spent in this routine.&#xD;&#xD;   Entry assumptions:&#xD;&#xD;        state.mode === LEN&#xD;        strm.avail_in &gt;= 6&#xD;        strm.avail_out &gt;= 258&#xD;        start &gt;= strm.avail_out&#xD;        state.bits &lt; 8&#xD;&#xD;   On return, state.mode is one of:&#xD;&#xD;        LEN -- ran out of enough output space or enough available input&#xD;        TYPE -- reached end of block code, inflate() to interpret next block&#xD;        BAD -- error in block data&#xD;&#xD;   Notes:&#xD;&#xD;    - The maximum input bits used by a length/distance pair is 15 bits for the&#xD;      length code, 5 bits for the length extra, 15 bits for the distance code,&#xD;      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.&#xD;      Therefore if strm.avail_in &gt;= 6, then there is enough input to avoid&#xD;      checking for available input while decoding.&#xD;&#xD;    - The maximum bytes that a single length/distance pair can output is 258&#xD;      bytes, which is the maximum length that can be coded.  inflate_fast()&#xD;      requires strm.avail_out &gt;= 258 for each loop to avoid checking for&#xD;      output space.&#xD; */&#xD;module.exports = function inflate_fast(strm, start) {&#xD;  var state;&#xD;  var _in;                    /* local strm.input */&#xD;  var last;                   /* have enough input while in &lt; last */&#xD;  var _out;                   /* local strm.output */&#xD;  var beg;                    /* inflate()&apos;s initial strm.output */&#xD;  var end;                    /* while out &lt; end, enough space available */&#xD;//#ifdef INFLATE_STRICT&#xD;  var dmax;                   /* maximum distance from zlib header */&#xD;//#endif&#xD;  var wsize;                  /* window size or zero if not using window */&#xD;  var whave;                  /* valid bytes in the window */&#xD;  var wnext;                  /* window write index */&#xD;  // Use `s_window` instead `window`, avoid conflict with instrumentation tools&#xD;  var s_window;               /* allocated sliding window, if wsize != 0 */&#xD;  var hold;                   /* local strm.hold */&#xD;  var bits;                   /* local strm.bits */&#xD;  var lcode;                  /* local strm.lencode */&#xD;  var dcode;                  /* local strm.distcode */&#xD;  var lmask;                  /* mask for first level of length codes */&#xD;  var dmask;                  /* mask for first level of distance codes */&#xD;  var here;                   /* retrieved table entry */&#xD;  var op;                     /* code bits, operation, extra bits, or */&#xD;                              /*  window position, window bytes to copy */&#xD;  var len;                    /* match length, unused bytes */&#xD;  var dist;                   /* match distance */&#xD;  var from;                   /* where to copy match from */&#xD;  var from_source;&#xD;&#xD;&#xD;  var input, output; // JS specific, because we have no pointers&#xD;&#xD;  /* copy state to local variables */&#xD;  state = strm.state;&#xD;  //here = state.here;&#xD;  _in = strm.next_in;&#xD;  input = strm.input;&#xD;  last = _in + (strm.avail_in - 5);&#xD;  _out = strm.next_out;&#xD;  output = strm.output;&#xD;  beg = _out - (start - strm.avail_out);&#xD;  end = _out + (strm.avail_out - 257);&#xD;//#ifdef INFLATE_STRICT&#xD;  dmax = state.dmax;&#xD;//#endif&#xD;  wsize = state.wsize;&#xD;  whave = state.whave;&#xD;  wnext = state.wnext;&#xD;  s_window = state.window;&#xD;  hold = state.hold;&#xD;  bits = state.bits;&#xD;  lcode = state.lencode;&#xD;  dcode = state.distcode;&#xD;  lmask = (1 &lt;&lt; state.lenbits) - 1;&#xD;  dmask = (1 &lt;&lt; state.distbits) - 1;&#xD;&#xD;&#xD;  /* decode literals and length/distances until end-of-block or not enough&#xD;     input data or output space */&#xD;&#xD;  top:&#xD;  do {&#xD;    if (bits &lt; 15) {&#xD;      hold += input[_in++] &lt;&lt; bits;&#xD;      bits += 8;&#xD;      hold += input[_in++] &lt;&lt; bits;&#xD;      bits += 8;&#xD;    }&#xD;&#xD;    here = lcode[hold &amp; lmask];&#xD;&#xD;    dolen:&#xD;    for (;;) { // Goto emulation&#xD;      op = here &gt;&gt;&gt; 24/*here.bits*/;&#xD;      hold &gt;&gt;&gt;= op;&#xD;      bits -= op;&#xD;      op = (here &gt;&gt;&gt; 16) &amp; 0xff/*here.op*/;&#xD;      if (op === 0) {                          /* literal */&#xD;        //Tracevv((stderr, here.val &gt;= 0x20 &amp;&amp; here.val &lt; 0x7f ?&#xD;        //        "inflate:         literal &apos;%c&apos;\n" :&#xD;        //        "inflate:         literal 0x%02x\n", here.val));&#xD;        output[_out++] = here &amp; 0xffff/*here.val*/;&#xD;      }&#xD;      else if (op &amp; 16) {                     /* length base */&#xD;        len = here &amp; 0xffff/*here.val*/;&#xD;        op &amp;= 15;                           /* number of extra bits */&#xD;        if (op) {&#xD;          if (bits &lt; op) {&#xD;            hold += input[_in++] &lt;&lt; bits;&#xD;            bits += 8;&#xD;          }&#xD;          len += hold &amp; ((1 &lt;&lt; op) - 1);&#xD;          hold &gt;&gt;&gt;= op;&#xD;          bits -= op;&#xD;        }&#xD;        //Tracevv((stderr, "inflate:         length %u\n", len));&#xD;        if (bits &lt; 15) {&#xD;          hold += input[_in++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;          hold += input[_in++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        here = dcode[hold &amp; dmask];&#xD;&#xD;        dodist:&#xD;        for (;;) { // goto emulation&#xD;          op = here &gt;&gt;&gt; 24/*here.bits*/;&#xD;          hold &gt;&gt;&gt;= op;&#xD;          bits -= op;&#xD;          op = (here &gt;&gt;&gt; 16) &amp; 0xff/*here.op*/;&#xD;&#xD;          if (op &amp; 16) {                      /* distance base */&#xD;            dist = here &amp; 0xffff/*here.val*/;&#xD;            op &amp;= 15;                       /* number of extra bits */&#xD;            if (bits &lt; op) {&#xD;              hold += input[_in++] &lt;&lt; bits;&#xD;              bits += 8;&#xD;              if (bits &lt; op) {&#xD;                hold += input[_in++] &lt;&lt; bits;&#xD;                bits += 8;&#xD;              }&#xD;            }&#xD;            dist += hold &amp; ((1 &lt;&lt; op) - 1);&#xD;//#ifdef INFLATE_STRICT&#xD;            if (dist &gt; dmax) {&#xD;              strm.msg = &apos;invalid distance too far back&apos;;&#xD;              state.mode = BAD;&#xD;              break top;&#xD;            }&#xD;//#endif&#xD;            hold &gt;&gt;&gt;= op;&#xD;            bits -= op;&#xD;            //Tracevv((stderr, "inflate:         distance %u\n", dist));&#xD;            op = _out - beg;                /* max distance in output */&#xD;            if (dist &gt; op) {                /* see if copy from window */&#xD;              op = dist - op;               /* distance back in window */&#xD;              if (op &gt; whave) {&#xD;                if (state.sane) {&#xD;                  strm.msg = &apos;invalid distance too far back&apos;;&#xD;                  state.mode = BAD;&#xD;                  break top;&#xD;                }&#xD;&#xD;// (!) This block is disabled in zlib defailts,&#xD;// don&apos;t enable it for binary compatibility&#xD;//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR&#xD;//                if (len &lt;= op - whave) {&#xD;//                  do {&#xD;//                    output[_out++] = 0;&#xD;//                  } while (--len);&#xD;//                  continue top;&#xD;//                }&#xD;//                len -= op - whave;&#xD;//                do {&#xD;//                  output[_out++] = 0;&#xD;//                } while (--op &gt; whave);&#xD;//                if (op === 0) {&#xD;//                  from = _out - dist;&#xD;//                  do {&#xD;//                    output[_out++] = output[from++];&#xD;//                  } while (--len);&#xD;//                  continue top;&#xD;//                }&#xD;//#endif&#xD;              }&#xD;              from = 0; // window index&#xD;              from_source = s_window;&#xD;              if (wnext === 0) {           /* very common case */&#xD;                from += wsize - op;&#xD;                if (op &lt; len) {         /* some from window */&#xD;                  len -= op;&#xD;                  do {&#xD;                    output[_out++] = s_window[from++];&#xD;                  } while (--op);&#xD;                  from = _out - dist;  /* rest from output */&#xD;                  from_source = output;&#xD;                }&#xD;              }&#xD;              else if (wnext &lt; op) {      /* wrap around window */&#xD;                from += wsize + wnext - op;&#xD;                op -= wnext;&#xD;                if (op &lt; len) {         /* some from end of window */&#xD;                  len -= op;&#xD;                  do {&#xD;                    output[_out++] = s_window[from++];&#xD;                  } while (--op);&#xD;                  from = 0;&#xD;                  if (wnext &lt; len) {  /* some from start of window */&#xD;                    op = wnext;&#xD;                    len -= op;&#xD;                    do {&#xD;                      output[_out++] = s_window[from++];&#xD;                    } while (--op);&#xD;                    from = _out - dist;      /* rest from output */&#xD;                    from_source = output;&#xD;                  }&#xD;                }&#xD;              }&#xD;              else {                      /* contiguous in window */&#xD;                from += wnext - op;&#xD;                if (op &lt; len) {         /* some from window */&#xD;                  len -= op;&#xD;                  do {&#xD;                    output[_out++] = s_window[from++];&#xD;                  } while (--op);&#xD;                  from = _out - dist;  /* rest from output */&#xD;                  from_source = output;&#xD;                }&#xD;              }&#xD;              while (len &gt; 2) {&#xD;                output[_out++] = from_source[from++];&#xD;                output[_out++] = from_source[from++];&#xD;                output[_out++] = from_source[from++];&#xD;                len -= 3;&#xD;              }&#xD;              if (len) {&#xD;                output[_out++] = from_source[from++];&#xD;                if (len &gt; 1) {&#xD;                  output[_out++] = from_source[from++];&#xD;                }&#xD;              }&#xD;            }&#xD;            else {&#xD;              from = _out - dist;          /* copy direct from output */&#xD;              do {                        /* minimum length is three */&#xD;                output[_out++] = output[from++];&#xD;                output[_out++] = output[from++];&#xD;                output[_out++] = output[from++];&#xD;                len -= 3;&#xD;              } while (len &gt; 2);&#xD;              if (len) {&#xD;                output[_out++] = output[from++];&#xD;                if (len &gt; 1) {&#xD;                  output[_out++] = output[from++];&#xD;                }&#xD;              }&#xD;            }&#xD;          }&#xD;          else if ((op &amp; 64) === 0) {          /* 2nd level distance code */&#xD;            here = dcode[(here &amp; 0xffff)/*here.val*/ + (hold &amp; ((1 &lt;&lt; op) - 1))];&#xD;            continue dodist;&#xD;          }&#xD;          else {&#xD;            strm.msg = &apos;invalid distance code&apos;;&#xD;            state.mode = BAD;&#xD;            break top;&#xD;          }&#xD;&#xD;          break; // need to emulate goto via "continue"&#xD;        }&#xD;      }&#xD;      else if ((op &amp; 64) === 0) {              /* 2nd level length code */&#xD;        here = lcode[(here &amp; 0xffff)/*here.val*/ + (hold &amp; ((1 &lt;&lt; op) - 1))];&#xD;        continue dolen;&#xD;      }&#xD;      else if (op &amp; 32) {                     /* end-of-block */&#xD;        //Tracevv((stderr, "inflate:         end of block\n"));&#xD;        state.mode = TYPE;&#xD;        break top;&#xD;      }&#xD;      else {&#xD;        strm.msg = &apos;invalid literal/length code&apos;;&#xD;        state.mode = BAD;&#xD;        break top;&#xD;      }&#xD;&#xD;      break; // need to emulate goto via "continue"&#xD;    }&#xD;  } while (_in &lt; last &amp;&amp; _out &lt; end);&#xD;&#xD;  /* return unused bytes (on entry, bits &lt; 8, so in won&apos;t go too far back) */&#xD;  len = bits &gt;&gt; 3;&#xD;  _in -= len;&#xD;  bits -= len &lt;&lt; 3;&#xD;  hold &amp;= (1 &lt;&lt; bits) - 1;&#xD;&#xD;  /* update state and return */&#xD;  strm.next_in = _in;&#xD;  strm.next_out = _out;&#xD;  strm.avail_in = (_in &lt; last ? 5 + (last - _in) : 5 - (_in - last));&#xD;  strm.avail_out = (_out &lt; end ? 257 + (end - _out) : 257 - (_out - end));&#xD;  state.hold = hold;&#xD;  state.bits = bits;&#xD;  return;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 377 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;var utils         = __webpack_require__(61);&#xD;var adler32       = __webpack_require__(143);&#xD;var crc32         = __webpack_require__(144);&#xD;var inflate_fast  = __webpack_require__(376);&#xD;var inflate_table = __webpack_require__(378);&#xD;&#xD;var CODES = 0;&#xD;var LENS = 1;&#xD;var DISTS = 2;&#xD;&#xD;/* Public constants ==========================================================*/&#xD;/* ===========================================================================*/&#xD;&#xD;&#xD;/* Allowed flush values; see deflate() and inflate() below for details */&#xD;//var Z_NO_FLUSH      = 0;&#xD;//var Z_PARTIAL_FLUSH = 1;&#xD;//var Z_SYNC_FLUSH    = 2;&#xD;//var Z_FULL_FLUSH    = 3;&#xD;var Z_FINISH        = 4;&#xD;var Z_BLOCK         = 5;&#xD;var Z_TREES         = 6;&#xD;&#xD;&#xD;/* Return codes for the compression/decompression functions. Negative values&#xD; * are errors, positive values are used for special but normal events.&#xD; */&#xD;var Z_OK            = 0;&#xD;var Z_STREAM_END    = 1;&#xD;var Z_NEED_DICT     = 2;&#xD;//var Z_ERRNO         = -1;&#xD;var Z_STREAM_ERROR  = -2;&#xD;var Z_DATA_ERROR    = -3;&#xD;var Z_MEM_ERROR     = -4;&#xD;var Z_BUF_ERROR     = -5;&#xD;//var Z_VERSION_ERROR = -6;&#xD;&#xD;/* The deflate compression method */&#xD;var Z_DEFLATED  = 8;&#xD;&#xD;&#xD;/* STATES ====================================================================*/&#xD;/* ===========================================================================*/&#xD;&#xD;&#xD;var    HEAD = 1;       /* i: waiting for magic header */&#xD;var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */&#xD;var    TIME = 3;       /* i: waiting for modification time (gzip) */&#xD;var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */&#xD;var    EXLEN = 5;      /* i: waiting for extra length (gzip) */&#xD;var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */&#xD;var    NAME = 7;       /* i: waiting for end of file name (gzip) */&#xD;var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */&#xD;var    HCRC = 9;       /* i: waiting for header crc (gzip) */&#xD;var    DICTID = 10;    /* i: waiting for dictionary check value */&#xD;var    DICT = 11;      /* waiting for inflateSetDictionary() call */&#xD;var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */&#xD;var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */&#xD;var        STORED = 14;    /* i: waiting for stored size (length and complement) */&#xD;var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */&#xD;var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */&#xD;var        TABLE = 17;     /* i: waiting for dynamic block table lengths */&#xD;var        LENLENS = 18;   /* i: waiting for code length code lengths */&#xD;var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */&#xD;var            LEN_ = 20;      /* i: same as LEN below, but only first time in */&#xD;var            LEN = 21;       /* i: waiting for length/lit/eob code */&#xD;var            LENEXT = 22;    /* i: waiting for length extra bits */&#xD;var            DIST = 23;      /* i: waiting for distance code */&#xD;var            DISTEXT = 24;   /* i: waiting for distance extra bits */&#xD;var            MATCH = 25;     /* o: waiting for output space to copy string */&#xD;var            LIT = 26;       /* o: waiting for output space to write literal */&#xD;var    CHECK = 27;     /* i: waiting for 32-bit check value */&#xD;var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */&#xD;var    DONE = 29;      /* finished check, done -- remain here until reset */&#xD;var    BAD = 30;       /* got a data error -- remain here until reset */&#xD;var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */&#xD;var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */&#xD;&#xD;/* ===========================================================================*/&#xD;&#xD;&#xD;&#xD;var ENOUGH_LENS = 852;&#xD;var ENOUGH_DISTS = 592;&#xD;//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);&#xD;&#xD;var MAX_WBITS = 15;&#xD;/* 32K LZ77 window */&#xD;var DEF_WBITS = MAX_WBITS;&#xD;&#xD;&#xD;function zswap32(q) {&#xD;  return  (((q &gt;&gt;&gt; 24) &amp; 0xff) +&#xD;          ((q &gt;&gt;&gt; 8) &amp; 0xff00) +&#xD;          ((q &amp; 0xff00) &lt;&lt; 8) +&#xD;          ((q &amp; 0xff) &lt;&lt; 24));&#xD;}&#xD;&#xD;&#xD;function InflateState() {&#xD;  this.mode = 0;             /* current inflate mode */&#xD;  this.last = false;          /* true if processing last block */&#xD;  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */&#xD;  this.havedict = false;      /* true if dictionary provided */&#xD;  this.flags = 0;             /* gzip header method and flags (0 if zlib) */&#xD;  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */&#xD;  this.check = 0;             /* protected copy of check value */&#xD;  this.total = 0;             /* protected copy of output count */&#xD;  // TODO: may be {}&#xD;  this.head = null;           /* where to save gzip header information */&#xD;&#xD;  /* sliding window */&#xD;  this.wbits = 0;             /* log base 2 of requested window size */&#xD;  this.wsize = 0;             /* window size or zero if not using window */&#xD;  this.whave = 0;             /* valid bytes in the window */&#xD;  this.wnext = 0;             /* window write index */&#xD;  this.window = null;         /* allocated sliding window, if needed */&#xD;&#xD;  /* bit accumulator */&#xD;  this.hold = 0;              /* input bit accumulator */&#xD;  this.bits = 0;              /* number of bits in "in" */&#xD;&#xD;  /* for string and stored block copying */&#xD;  this.length = 0;            /* literal or length of data to copy */&#xD;  this.offset = 0;            /* distance back to copy string from */&#xD;&#xD;  /* for table and code decoding */&#xD;  this.extra = 0;             /* extra bits needed */&#xD;&#xD;  /* fixed and dynamic code tables */&#xD;  this.lencode = null;          /* starting table for length/literal codes */&#xD;  this.distcode = null;         /* starting table for distance codes */&#xD;  this.lenbits = 0;           /* index bits for lencode */&#xD;  this.distbits = 0;          /* index bits for distcode */&#xD;&#xD;  /* dynamic table building */&#xD;  this.ncode = 0;             /* number of code length code lengths */&#xD;  this.nlen = 0;              /* number of length code lengths */&#xD;  this.ndist = 0;             /* number of distance code lengths */&#xD;  this.have = 0;              /* number of code lengths in lens[] */&#xD;  this.next = null;              /* next available space in codes[] */&#xD;&#xD;  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */&#xD;  this.work = new utils.Buf16(288); /* work area for code table building */&#xD;&#xD;  /*&#xD;   because we don&apos;t have pointers in js, we use lencode and distcode directly&#xD;   as buffers so we don&apos;t need codes&#xD;  */&#xD;  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */&#xD;  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */&#xD;  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */&#xD;  this.sane = 0;                   /* if false, allow invalid distance too far */&#xD;  this.back = 0;                   /* bits back of last unprocessed length/lit */&#xD;  this.was = 0;                    /* initial length of match */&#xD;}&#xD;&#xD;function inflateResetKeep(strm) {&#xD;  var state;&#xD;&#xD;  if (!strm || !strm.state) { return Z_STREAM_ERROR; }&#xD;  state = strm.state;&#xD;  strm.total_in = strm.total_out = state.total = 0;&#xD;  strm.msg = &apos;&apos;; /*Z_NULL*/&#xD;  if (state.wrap) {       /* to support ill-conceived Java test suite */&#xD;    strm.adler = state.wrap &amp; 1;&#xD;  }&#xD;  state.mode = HEAD;&#xD;  state.last = 0;&#xD;  state.havedict = 0;&#xD;  state.dmax = 32768;&#xD;  state.head = null/*Z_NULL*/;&#xD;  state.hold = 0;&#xD;  state.bits = 0;&#xD;  //state.lencode = state.distcode = state.next = state.codes;&#xD;  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);&#xD;  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);&#xD;&#xD;  state.sane = 1;&#xD;  state.back = -1;&#xD;  //Tracev((stderr, "inflate: reset\n"));&#xD;  return Z_OK;&#xD;}&#xD;&#xD;function inflateReset(strm) {&#xD;  var state;&#xD;&#xD;  if (!strm || !strm.state) { return Z_STREAM_ERROR; }&#xD;  state = strm.state;&#xD;  state.wsize = 0;&#xD;  state.whave = 0;&#xD;  state.wnext = 0;&#xD;  return inflateResetKeep(strm);&#xD;&#xD;}&#xD;&#xD;function inflateReset2(strm, windowBits) {&#xD;  var wrap;&#xD;  var state;&#xD;&#xD;  /* get the state */&#xD;  if (!strm || !strm.state) { return Z_STREAM_ERROR; }&#xD;  state = strm.state;&#xD;&#xD;  /* extract wrap request from windowBits parameter */&#xD;  if (windowBits &lt; 0) {&#xD;    wrap = 0;&#xD;    windowBits = -windowBits;&#xD;  }&#xD;  else {&#xD;    wrap = (windowBits &gt;&gt; 4) + 1;&#xD;    if (windowBits &lt; 48) {&#xD;      windowBits &amp;= 15;&#xD;    }&#xD;  }&#xD;&#xD;  /* set number of window bits, free window if different */&#xD;  if (windowBits &amp;&amp; (windowBits &lt; 8 || windowBits &gt; 15)) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;  if (state.window !== null &amp;&amp; state.wbits !== windowBits) {&#xD;    state.window = null;&#xD;  }&#xD;&#xD;  /* update state and reset the rest of it */&#xD;  state.wrap = wrap;&#xD;  state.wbits = windowBits;&#xD;  return inflateReset(strm);&#xD;}&#xD;&#xD;function inflateInit2(strm, windowBits) {&#xD;  var ret;&#xD;  var state;&#xD;&#xD;  if (!strm) { return Z_STREAM_ERROR; }&#xD;  //strm.msg = Z_NULL;                 /* in case we return an error */&#xD;&#xD;  state = new InflateState();&#xD;&#xD;  //if (state === Z_NULL) return Z_MEM_ERROR;&#xD;  //Tracev((stderr, "inflate: allocated\n"));&#xD;  strm.state = state;&#xD;  state.window = null/*Z_NULL*/;&#xD;  ret = inflateReset2(strm, windowBits);&#xD;  if (ret !== Z_OK) {&#xD;    strm.state = null/*Z_NULL*/;&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;function inflateInit(strm) {&#xD;  return inflateInit2(strm, DEF_WBITS);&#xD;}&#xD;&#xD;&#xD;/*&#xD; Return state with length and distance decoding tables and index sizes set to&#xD; fixed code decoding.  Normally this returns fixed tables from inffixed.h.&#xD; If BUILDFIXED is defined, then instead this routine builds the tables the&#xD; first time it&apos;s called, and returns those tables the first time and&#xD; thereafter.  This reduces the size of the code by about 2K bytes, in&#xD; exchange for a little execution time.  However, BUILDFIXED should not be&#xD; used for threaded applications, since the rewriting of the tables and virgin&#xD; may not be thread-safe.&#xD; */&#xD;var virgin = true;&#xD;&#xD;var lenfix, distfix; // We have no pointers in JS, so keep tables separate&#xD;&#xD;function fixedtables(state) {&#xD;  /* build fixed huffman tables if first call (may not be thread safe) */&#xD;  if (virgin) {&#xD;    var sym;&#xD;&#xD;    lenfix = new utils.Buf32(512);&#xD;    distfix = new utils.Buf32(32);&#xD;&#xD;    /* literal/length table */&#xD;    sym = 0;&#xD;    while (sym &lt; 144) { state.lens[sym++] = 8; }&#xD;    while (sym &lt; 256) { state.lens[sym++] = 9; }&#xD;    while (sym &lt; 280) { state.lens[sym++] = 7; }&#xD;    while (sym &lt; 288) { state.lens[sym++] = 8; }&#xD;&#xD;    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });&#xD;&#xD;    /* distance table */&#xD;    sym = 0;&#xD;    while (sym &lt; 32) { state.lens[sym++] = 5; }&#xD;&#xD;    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });&#xD;&#xD;    /* do this just once */&#xD;    virgin = false;&#xD;  }&#xD;&#xD;  state.lencode = lenfix;&#xD;  state.lenbits = 9;&#xD;  state.distcode = distfix;&#xD;  state.distbits = 5;&#xD;}&#xD;&#xD;&#xD;/*&#xD; Update the window with the last wsize (normally 32K) bytes written before&#xD; returning.  If window does not exist yet, create it.  This is only called&#xD; when a window is already in use, or when output has been written during this&#xD; inflate call, but the end of the deflate stream has not been reached yet.&#xD; It is also called to create a window for dictionary data when a dictionary&#xD; is loaded.&#xD;&#xD; Providing output buffers larger than 32K to inflate() should provide a speed&#xD; advantage, since only the last 32K of output is copied to the sliding window&#xD; upon return from inflate(), and since all distances after the first 32K of&#xD; output will fall in the output data, making match copies simpler and faster.&#xD; The advantage may be dependent on the size of the processor&apos;s data caches.&#xD; */&#xD;function updatewindow(strm, src, end, copy) {&#xD;  var dist;&#xD;  var state = strm.state;&#xD;&#xD;  /* if it hasn&apos;t been done already, allocate space for the window */&#xD;  if (state.window === null) {&#xD;    state.wsize = 1 &lt;&lt; state.wbits;&#xD;    state.wnext = 0;&#xD;    state.whave = 0;&#xD;&#xD;    state.window = new utils.Buf8(state.wsize);&#xD;  }&#xD;&#xD;  /* copy state-&gt;wsize or less output bytes into the circular window */&#xD;  if (copy &gt;= state.wsize) {&#xD;    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);&#xD;    state.wnext = 0;&#xD;    state.whave = state.wsize;&#xD;  }&#xD;  else {&#xD;    dist = state.wsize - state.wnext;&#xD;    if (dist &gt; copy) {&#xD;      dist = copy;&#xD;    }&#xD;    //zmemcpy(state-&gt;window + state-&gt;wnext, end - copy, dist);&#xD;    utils.arraySet(state.window, src, end - copy, dist, state.wnext);&#xD;    copy -= dist;&#xD;    if (copy) {&#xD;      //zmemcpy(state-&gt;window, end - copy, copy);&#xD;      utils.arraySet(state.window, src, end - copy, copy, 0);&#xD;      state.wnext = copy;&#xD;      state.whave = state.wsize;&#xD;    }&#xD;    else {&#xD;      state.wnext += dist;&#xD;      if (state.wnext === state.wsize) { state.wnext = 0; }&#xD;      if (state.whave &lt; state.wsize) { state.whave += dist; }&#xD;    }&#xD;  }&#xD;  return 0;&#xD;}&#xD;&#xD;function inflate(strm, flush) {&#xD;  var state;&#xD;  var input, output;          // input/output buffers&#xD;  var next;                   /* next input INDEX */&#xD;  var put;                    /* next output INDEX */&#xD;  var have, left;             /* available input and output */&#xD;  var hold;                   /* bit buffer */&#xD;  var bits;                   /* bits in bit buffer */&#xD;  var _in, _out;              /* save starting available input and output */&#xD;  var copy;                   /* number of stored or match bytes to copy */&#xD;  var from;                   /* where to copy match bytes from */&#xD;  var from_source;&#xD;  var here = 0;               /* current decoding table entry */&#xD;  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)&#xD;  //var last;                   /* parent table entry */&#xD;  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)&#xD;  var len;                    /* length to copy for repeats, bits to drop */&#xD;  var ret;                    /* return code */&#xD;  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */&#xD;  var opts;&#xD;&#xD;  var n; // temporary var for NEED_BITS&#xD;&#xD;  var order = /* permutation of code lengths */&#xD;    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];&#xD;&#xD;&#xD;  if (!strm || !strm.state || !strm.output ||&#xD;      (!strm.input &amp;&amp; strm.avail_in !== 0)) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  state = strm.state;&#xD;  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */&#xD;&#xD;&#xD;  //--- LOAD() ---&#xD;  put = strm.next_out;&#xD;  output = strm.output;&#xD;  left = strm.avail_out;&#xD;  next = strm.next_in;&#xD;  input = strm.input;&#xD;  have = strm.avail_in;&#xD;  hold = state.hold;&#xD;  bits = state.bits;&#xD;  //---&#xD;&#xD;  _in = have;&#xD;  _out = left;&#xD;  ret = Z_OK;&#xD;&#xD;  inf_leave: // goto emulation&#xD;  for (;;) {&#xD;    switch (state.mode) {&#xD;    case HEAD:&#xD;      if (state.wrap === 0) {&#xD;        state.mode = TYPEDO;&#xD;        break;&#xD;      }&#xD;      //=== NEEDBITS(16);&#xD;      while (bits &lt; 16) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      if ((state.wrap &amp; 2) &amp;&amp; hold === 0x8b1f) {  /* gzip header */&#xD;        state.check = 0/*crc32(0L, Z_NULL, 0)*/;&#xD;        //=== CRC2(state.check, hold);&#xD;        hbuf[0] = hold &amp; 0xff;&#xD;        hbuf[1] = (hold &gt;&gt;&gt; 8) &amp; 0xff;&#xD;        state.check = crc32(state.check, hbuf, 2, 0);&#xD;        //===//&#xD;&#xD;        //=== INITBITS();&#xD;        hold = 0;&#xD;        bits = 0;&#xD;        //===//&#xD;        state.mode = FLAGS;&#xD;        break;&#xD;      }&#xD;      state.flags = 0;           /* expect zlib header */&#xD;      if (state.head) {&#xD;        state.head.done = false;&#xD;      }&#xD;      if (!(state.wrap &amp; 1) ||   /* check if zlib header allowed */&#xD;        (((hold &amp; 0xff)/*BITS(8)*/ &lt;&lt; 8) + (hold &gt;&gt; 8)) % 31) {&#xD;        strm.msg = &apos;incorrect header check&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      if ((hold &amp; 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {&#xD;        strm.msg = &apos;unknown compression method&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      //--- DROPBITS(4) ---//&#xD;      hold &gt;&gt;&gt;= 4;&#xD;      bits -= 4;&#xD;      //---//&#xD;      len = (hold &amp; 0x0f)/*BITS(4)*/ + 8;&#xD;      if (state.wbits === 0) {&#xD;        state.wbits = len;&#xD;      }&#xD;      else if (len &gt; state.wbits) {&#xD;        strm.msg = &apos;invalid window size&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      state.dmax = 1 &lt;&lt; len;&#xD;      //Tracev((stderr, "inflate:   zlib header ok\n"));&#xD;      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;&#xD;      state.mode = hold &amp; 0x200 ? DICTID : TYPE;&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      break;&#xD;    case FLAGS:&#xD;      //=== NEEDBITS(16); */&#xD;      while (bits &lt; 16) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      state.flags = hold;&#xD;      if ((state.flags &amp; 0xff) !== Z_DEFLATED) {&#xD;        strm.msg = &apos;unknown compression method&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      if (state.flags &amp; 0xe000) {&#xD;        strm.msg = &apos;unknown header flags set&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      if (state.head) {&#xD;        state.head.text = ((hold &gt;&gt; 8) &amp; 1);&#xD;      }&#xD;      if (state.flags &amp; 0x0200) {&#xD;        //=== CRC2(state.check, hold);&#xD;        hbuf[0] = hold &amp; 0xff;&#xD;        hbuf[1] = (hold &gt;&gt;&gt; 8) &amp; 0xff;&#xD;        state.check = crc32(state.check, hbuf, 2, 0);&#xD;        //===//&#xD;      }&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      state.mode = TIME;&#xD;      /* falls through */&#xD;    case TIME:&#xD;      //=== NEEDBITS(32); */&#xD;      while (bits &lt; 32) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      if (state.head) {&#xD;        state.head.time = hold;&#xD;      }&#xD;      if (state.flags &amp; 0x0200) {&#xD;        //=== CRC4(state.check, hold)&#xD;        hbuf[0] = hold &amp; 0xff;&#xD;        hbuf[1] = (hold &gt;&gt;&gt; 8) &amp; 0xff;&#xD;        hbuf[2] = (hold &gt;&gt;&gt; 16) &amp; 0xff;&#xD;        hbuf[3] = (hold &gt;&gt;&gt; 24) &amp; 0xff;&#xD;        state.check = crc32(state.check, hbuf, 4, 0);&#xD;        //===&#xD;      }&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      state.mode = OS;&#xD;      /* falls through */&#xD;    case OS:&#xD;      //=== NEEDBITS(16); */&#xD;      while (bits &lt; 16) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      if (state.head) {&#xD;        state.head.xflags = (hold &amp; 0xff);&#xD;        state.head.os = (hold &gt;&gt; 8);&#xD;      }&#xD;      if (state.flags &amp; 0x0200) {&#xD;        //=== CRC2(state.check, hold);&#xD;        hbuf[0] = hold &amp; 0xff;&#xD;        hbuf[1] = (hold &gt;&gt;&gt; 8) &amp; 0xff;&#xD;        state.check = crc32(state.check, hbuf, 2, 0);&#xD;        //===//&#xD;      }&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      state.mode = EXLEN;&#xD;      /* falls through */&#xD;    case EXLEN:&#xD;      if (state.flags &amp; 0x0400) {&#xD;        //=== NEEDBITS(16); */&#xD;        while (bits &lt; 16) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        state.length = hold;&#xD;        if (state.head) {&#xD;          state.head.extra_len = hold;&#xD;        }&#xD;        if (state.flags &amp; 0x0200) {&#xD;          //=== CRC2(state.check, hold);&#xD;          hbuf[0] = hold &amp; 0xff;&#xD;          hbuf[1] = (hold &gt;&gt;&gt; 8) &amp; 0xff;&#xD;          state.check = crc32(state.check, hbuf, 2, 0);&#xD;          //===//&#xD;        }&#xD;        //=== INITBITS();&#xD;        hold = 0;&#xD;        bits = 0;&#xD;        //===//&#xD;      }&#xD;      else if (state.head) {&#xD;        state.head.extra = null/*Z_NULL*/;&#xD;      }&#xD;      state.mode = EXTRA;&#xD;      /* falls through */&#xD;    case EXTRA:&#xD;      if (state.flags &amp; 0x0400) {&#xD;        copy = state.length;&#xD;        if (copy &gt; have) { copy = have; }&#xD;        if (copy) {&#xD;          if (state.head) {&#xD;            len = state.head.extra_len - state.length;&#xD;            if (!state.head.extra) {&#xD;              // Use untyped array for more conveniend processing later&#xD;              state.head.extra = new Array(state.head.extra_len);&#xD;            }&#xD;            utils.arraySet(&#xD;              state.head.extra,&#xD;              input,&#xD;              next,&#xD;              // extra field is limited to 65536 bytes&#xD;              // - no need for additional size check&#xD;              copy,&#xD;              /*len + copy &gt; state.head.extra_max - len ? state.head.extra_max : copy,*/&#xD;              len&#xD;            );&#xD;            //zmemcpy(state.head.extra + len, next,&#xD;            //        len + copy &gt; state.head.extra_max ?&#xD;            //        state.head.extra_max - len : copy);&#xD;          }&#xD;          if (state.flags &amp; 0x0200) {&#xD;            state.check = crc32(state.check, input, copy, next);&#xD;          }&#xD;          have -= copy;&#xD;          next += copy;&#xD;          state.length -= copy;&#xD;        }&#xD;        if (state.length) { break inf_leave; }&#xD;      }&#xD;      state.length = 0;&#xD;      state.mode = NAME;&#xD;      /* falls through */&#xD;    case NAME:&#xD;      if (state.flags &amp; 0x0800) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        copy = 0;&#xD;        do {&#xD;          // TODO: 2 or 1 bytes?&#xD;          len = input[next + copy++];&#xD;          /* use constant limit because in js we should not preallocate memory */&#xD;          if (state.head &amp;&amp; len &amp;&amp;&#xD;              (state.length &lt; 65536 /*state.head.name_max*/)) {&#xD;            state.head.name += String.fromCharCode(len);&#xD;          }&#xD;        } while (len &amp;&amp; copy &lt; have);&#xD;&#xD;        if (state.flags &amp; 0x0200) {&#xD;          state.check = crc32(state.check, input, copy, next);&#xD;        }&#xD;        have -= copy;&#xD;        next += copy;&#xD;        if (len) { break inf_leave; }&#xD;      }&#xD;      else if (state.head) {&#xD;        state.head.name = null;&#xD;      }&#xD;      state.length = 0;&#xD;      state.mode = COMMENT;&#xD;      /* falls through */&#xD;    case COMMENT:&#xD;      if (state.flags &amp; 0x1000) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        copy = 0;&#xD;        do {&#xD;          len = input[next + copy++];&#xD;          /* use constant limit because in js we should not preallocate memory */&#xD;          if (state.head &amp;&amp; len &amp;&amp;&#xD;              (state.length &lt; 65536 /*state.head.comm_max*/)) {&#xD;            state.head.comment += String.fromCharCode(len);&#xD;          }&#xD;        } while (len &amp;&amp; copy &lt; have);&#xD;        if (state.flags &amp; 0x0200) {&#xD;          state.check = crc32(state.check, input, copy, next);&#xD;        }&#xD;        have -= copy;&#xD;        next += copy;&#xD;        if (len) { break inf_leave; }&#xD;      }&#xD;      else if (state.head) {&#xD;        state.head.comment = null;&#xD;      }&#xD;      state.mode = HCRC;&#xD;      /* falls through */&#xD;    case HCRC:&#xD;      if (state.flags &amp; 0x0200) {&#xD;        //=== NEEDBITS(16); */&#xD;        while (bits &lt; 16) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        if (hold !== (state.check &amp; 0xffff)) {&#xD;          strm.msg = &apos;header crc mismatch&apos;;&#xD;          state.mode = BAD;&#xD;          break;&#xD;        }&#xD;        //=== INITBITS();&#xD;        hold = 0;&#xD;        bits = 0;&#xD;        //===//&#xD;      }&#xD;      if (state.head) {&#xD;        state.head.hcrc = ((state.flags &gt;&gt; 9) &amp; 1);&#xD;        state.head.done = true;&#xD;      }&#xD;      strm.adler = state.check = 0;&#xD;      state.mode = TYPE;&#xD;      break;&#xD;    case DICTID:&#xD;      //=== NEEDBITS(32); */&#xD;      while (bits &lt; 32) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      strm.adler = state.check = zswap32(hold);&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      state.mode = DICT;&#xD;      /* falls through */&#xD;    case DICT:&#xD;      if (state.havedict === 0) {&#xD;        //--- RESTORE() ---&#xD;        strm.next_out = put;&#xD;        strm.avail_out = left;&#xD;        strm.next_in = next;&#xD;        strm.avail_in = have;&#xD;        state.hold = hold;&#xD;        state.bits = bits;&#xD;        //---&#xD;        return Z_NEED_DICT;&#xD;      }&#xD;      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;&#xD;      state.mode = TYPE;&#xD;      /* falls through */&#xD;    case TYPE:&#xD;      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }&#xD;      /* falls through */&#xD;    case TYPEDO:&#xD;      if (state.last) {&#xD;        //--- BYTEBITS() ---//&#xD;        hold &gt;&gt;&gt;= bits &amp; 7;&#xD;        bits -= bits &amp; 7;&#xD;        //---//&#xD;        state.mode = CHECK;&#xD;        break;&#xD;      }&#xD;      //=== NEEDBITS(3); */&#xD;      while (bits &lt; 3) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      state.last = (hold &amp; 0x01)/*BITS(1)*/;&#xD;      //--- DROPBITS(1) ---//&#xD;      hold &gt;&gt;&gt;= 1;&#xD;      bits -= 1;&#xD;      //---//&#xD;&#xD;      switch ((hold &amp; 0x03)/*BITS(2)*/) {&#xD;      case 0:                             /* stored block */&#xD;        //Tracev((stderr, "inflate:     stored block%s\n",&#xD;        //        state.last ? " (last)" : ""));&#xD;        state.mode = STORED;&#xD;        break;&#xD;      case 1:                             /* fixed block */&#xD;        fixedtables(state);&#xD;        //Tracev((stderr, "inflate:     fixed codes block%s\n",&#xD;        //        state.last ? " (last)" : ""));&#xD;        state.mode = LEN_;             /* decode codes */&#xD;        if (flush === Z_TREES) {&#xD;          //--- DROPBITS(2) ---//&#xD;          hold &gt;&gt;&gt;= 2;&#xD;          bits -= 2;&#xD;          //---//&#xD;          break inf_leave;&#xD;        }&#xD;        break;&#xD;      case 2:                             /* dynamic block */&#xD;        //Tracev((stderr, "inflate:     dynamic codes block%s\n",&#xD;        //        state.last ? " (last)" : ""));&#xD;        state.mode = TABLE;&#xD;        break;&#xD;      case 3:&#xD;        strm.msg = &apos;invalid block type&apos;;&#xD;        state.mode = BAD;&#xD;      }&#xD;      //--- DROPBITS(2) ---//&#xD;      hold &gt;&gt;&gt;= 2;&#xD;      bits -= 2;&#xD;      //---//&#xD;      break;&#xD;    case STORED:&#xD;      //--- BYTEBITS() ---// /* go to byte boundary */&#xD;      hold &gt;&gt;&gt;= bits &amp; 7;&#xD;      bits -= bits &amp; 7;&#xD;      //---//&#xD;      //=== NEEDBITS(32); */&#xD;      while (bits &lt; 32) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      if ((hold &amp; 0xffff) !== ((hold &gt;&gt;&gt; 16) ^ 0xffff)) {&#xD;        strm.msg = &apos;invalid stored block lengths&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      state.length = hold &amp; 0xffff;&#xD;      //Tracev((stderr, "inflate:       stored length %u\n",&#xD;      //        state.length));&#xD;      //=== INITBITS();&#xD;      hold = 0;&#xD;      bits = 0;&#xD;      //===//&#xD;      state.mode = COPY_;&#xD;      if (flush === Z_TREES) { break inf_leave; }&#xD;      /* falls through */&#xD;    case COPY_:&#xD;      state.mode = COPY;&#xD;      /* falls through */&#xD;    case COPY:&#xD;      copy = state.length;&#xD;      if (copy) {&#xD;        if (copy &gt; have) { copy = have; }&#xD;        if (copy &gt; left) { copy = left; }&#xD;        if (copy === 0) { break inf_leave; }&#xD;        //--- zmemcpy(put, next, copy); ---&#xD;        utils.arraySet(output, input, next, copy, put);&#xD;        //---//&#xD;        have -= copy;&#xD;        next += copy;&#xD;        left -= copy;&#xD;        put += copy;&#xD;        state.length -= copy;&#xD;        break;&#xD;      }&#xD;      //Tracev((stderr, "inflate:       stored end\n"));&#xD;      state.mode = TYPE;&#xD;      break;&#xD;    case TABLE:&#xD;      //=== NEEDBITS(14); */&#xD;      while (bits &lt; 14) {&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;      }&#xD;      //===//&#xD;      state.nlen = (hold &amp; 0x1f)/*BITS(5)*/ + 257;&#xD;      //--- DROPBITS(5) ---//&#xD;      hold &gt;&gt;&gt;= 5;&#xD;      bits -= 5;&#xD;      //---//&#xD;      state.ndist = (hold &amp; 0x1f)/*BITS(5)*/ + 1;&#xD;      //--- DROPBITS(5) ---//&#xD;      hold &gt;&gt;&gt;= 5;&#xD;      bits -= 5;&#xD;      //---//&#xD;      state.ncode = (hold &amp; 0x0f)/*BITS(4)*/ + 4;&#xD;      //--- DROPBITS(4) ---//&#xD;      hold &gt;&gt;&gt;= 4;&#xD;      bits -= 4;&#xD;      //---//&#xD;//#ifndef PKZIP_BUG_WORKAROUND&#xD;      if (state.nlen &gt; 286 || state.ndist &gt; 30) {&#xD;        strm.msg = &apos;too many length or distance symbols&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;//#endif&#xD;      //Tracev((stderr, "inflate:       table sizes ok\n"));&#xD;      state.have = 0;&#xD;      state.mode = LENLENS;&#xD;      /* falls through */&#xD;    case LENLENS:&#xD;      while (state.have &lt; state.ncode) {&#xD;        //=== NEEDBITS(3);&#xD;        while (bits &lt; 3) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        state.lens[order[state.have++]] = (hold &amp; 0x07);//BITS(3);&#xD;        //--- DROPBITS(3) ---//&#xD;        hold &gt;&gt;&gt;= 3;&#xD;        bits -= 3;&#xD;        //---//&#xD;      }&#xD;      while (state.have &lt; 19) {&#xD;        state.lens[order[state.have++]] = 0;&#xD;      }&#xD;      // We have separate tables &amp; no pointers. 2 commented lines below not needed.&#xD;      //state.next = state.codes;&#xD;      //state.lencode = state.next;&#xD;      // Switch to use dynamic table&#xD;      state.lencode = state.lendyn;&#xD;      state.lenbits = 7;&#xD;&#xD;      opts = { bits: state.lenbits };&#xD;      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);&#xD;      state.lenbits = opts.bits;&#xD;&#xD;      if (ret) {&#xD;        strm.msg = &apos;invalid code lengths set&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      //Tracev((stderr, "inflate:       code lengths ok\n"));&#xD;      state.have = 0;&#xD;      state.mode = CODELENS;&#xD;      /* falls through */&#xD;    case CODELENS:&#xD;      while (state.have &lt; state.nlen + state.ndist) {&#xD;        for (;;) {&#xD;          here = state.lencode[hold &amp; ((1 &lt;&lt; state.lenbits) - 1)];/*BITS(state.lenbits)*/&#xD;          here_bits = here &gt;&gt;&gt; 24;&#xD;          here_op = (here &gt;&gt;&gt; 16) &amp; 0xff;&#xD;          here_val = here &amp; 0xffff;&#xD;&#xD;          if ((here_bits) &lt;= bits) { break; }&#xD;          //--- PULLBYTE() ---//&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;          //---//&#xD;        }&#xD;        if (here_val &lt; 16) {&#xD;          //--- DROPBITS(here.bits) ---//&#xD;          hold &gt;&gt;&gt;= here_bits;&#xD;          bits -= here_bits;&#xD;          //---//&#xD;          state.lens[state.have++] = here_val;&#xD;        }&#xD;        else {&#xD;          if (here_val === 16) {&#xD;            //=== NEEDBITS(here.bits + 2);&#xD;            n = here_bits + 2;&#xD;            while (bits &lt; n) {&#xD;              if (have === 0) { break inf_leave; }&#xD;              have--;&#xD;              hold += input[next++] &lt;&lt; bits;&#xD;              bits += 8;&#xD;            }&#xD;            //===//&#xD;            //--- DROPBITS(here.bits) ---//&#xD;            hold &gt;&gt;&gt;= here_bits;&#xD;            bits -= here_bits;&#xD;            //---//&#xD;            if (state.have === 0) {&#xD;              strm.msg = &apos;invalid bit length repeat&apos;;&#xD;              state.mode = BAD;&#xD;              break;&#xD;            }&#xD;            len = state.lens[state.have - 1];&#xD;            copy = 3 + (hold &amp; 0x03);//BITS(2);&#xD;            //--- DROPBITS(2) ---//&#xD;            hold &gt;&gt;&gt;= 2;&#xD;            bits -= 2;&#xD;            //---//&#xD;          }&#xD;          else if (here_val === 17) {&#xD;            //=== NEEDBITS(here.bits + 3);&#xD;            n = here_bits + 3;&#xD;            while (bits &lt; n) {&#xD;              if (have === 0) { break inf_leave; }&#xD;              have--;&#xD;              hold += input[next++] &lt;&lt; bits;&#xD;              bits += 8;&#xD;            }&#xD;            //===//&#xD;            //--- DROPBITS(here.bits) ---//&#xD;            hold &gt;&gt;&gt;= here_bits;&#xD;            bits -= here_bits;&#xD;            //---//&#xD;            len = 0;&#xD;            copy = 3 + (hold &amp; 0x07);//BITS(3);&#xD;            //--- DROPBITS(3) ---//&#xD;            hold &gt;&gt;&gt;= 3;&#xD;            bits -= 3;&#xD;            //---//&#xD;          }&#xD;          else {&#xD;            //=== NEEDBITS(here.bits + 7);&#xD;            n = here_bits + 7;&#xD;            while (bits &lt; n) {&#xD;              if (have === 0) { break inf_leave; }&#xD;              have--;&#xD;              hold += input[next++] &lt;&lt; bits;&#xD;              bits += 8;&#xD;            }&#xD;            //===//&#xD;            //--- DROPBITS(here.bits) ---//&#xD;            hold &gt;&gt;&gt;= here_bits;&#xD;            bits -= here_bits;&#xD;            //---//&#xD;            len = 0;&#xD;            copy = 11 + (hold &amp; 0x7f);//BITS(7);&#xD;            //--- DROPBITS(7) ---//&#xD;            hold &gt;&gt;&gt;= 7;&#xD;            bits -= 7;&#xD;            //---//&#xD;          }&#xD;          if (state.have + copy &gt; state.nlen + state.ndist) {&#xD;            strm.msg = &apos;invalid bit length repeat&apos;;&#xD;            state.mode = BAD;&#xD;            break;&#xD;          }&#xD;          while (copy--) {&#xD;            state.lens[state.have++] = len;&#xD;          }&#xD;        }&#xD;      }&#xD;&#xD;      /* handle error breaks in while */&#xD;      if (state.mode === BAD) { break; }&#xD;&#xD;      /* check for end-of-block code (better have one) */&#xD;      if (state.lens[256] === 0) {&#xD;        strm.msg = &apos;invalid code -- missing end-of-block&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;&#xD;      /* build code tables -- note: do not change the lenbits or distbits&#xD;         values here (9 and 6) without reading the comments in inftrees.h&#xD;         concerning the ENOUGH constants, which depend on those values */&#xD;      state.lenbits = 9;&#xD;&#xD;      opts = { bits: state.lenbits };&#xD;      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);&#xD;      // We have separate tables &amp; no pointers. 2 commented lines below not needed.&#xD;      // state.next_index = opts.table_index;&#xD;      state.lenbits = opts.bits;&#xD;      // state.lencode = state.next;&#xD;&#xD;      if (ret) {&#xD;        strm.msg = &apos;invalid literal/lengths set&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;&#xD;      state.distbits = 6;&#xD;      //state.distcode.copy(state.codes);&#xD;      // Switch to use dynamic table&#xD;      state.distcode = state.distdyn;&#xD;      opts = { bits: state.distbits };&#xD;      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);&#xD;      // We have separate tables &amp; no pointers. 2 commented lines below not needed.&#xD;      // state.next_index = opts.table_index;&#xD;      state.distbits = opts.bits;&#xD;      // state.distcode = state.next;&#xD;&#xD;      if (ret) {&#xD;        strm.msg = &apos;invalid distances set&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      //Tracev((stderr, &apos;inflate:       codes ok\n&apos;));&#xD;      state.mode = LEN_;&#xD;      if (flush === Z_TREES) { break inf_leave; }&#xD;      /* falls through */&#xD;    case LEN_:&#xD;      state.mode = LEN;&#xD;      /* falls through */&#xD;    case LEN:&#xD;      if (have &gt;= 6 &amp;&amp; left &gt;= 258) {&#xD;        //--- RESTORE() ---&#xD;        strm.next_out = put;&#xD;        strm.avail_out = left;&#xD;        strm.next_in = next;&#xD;        strm.avail_in = have;&#xD;        state.hold = hold;&#xD;        state.bits = bits;&#xD;        //---&#xD;        inflate_fast(strm, _out);&#xD;        //--- LOAD() ---&#xD;        put = strm.next_out;&#xD;        output = strm.output;&#xD;        left = strm.avail_out;&#xD;        next = strm.next_in;&#xD;        input = strm.input;&#xD;        have = strm.avail_in;&#xD;        hold = state.hold;&#xD;        bits = state.bits;&#xD;        //---&#xD;&#xD;        if (state.mode === TYPE) {&#xD;          state.back = -1;&#xD;        }&#xD;        break;&#xD;      }&#xD;      state.back = 0;&#xD;      for (;;) {&#xD;        here = state.lencode[hold &amp; ((1 &lt;&lt; state.lenbits) - 1)];  /*BITS(state.lenbits)*/&#xD;        here_bits = here &gt;&gt;&gt; 24;&#xD;        here_op = (here &gt;&gt;&gt; 16) &amp; 0xff;&#xD;        here_val = here &amp; 0xffff;&#xD;&#xD;        if (here_bits &lt;= bits) { break; }&#xD;        //--- PULLBYTE() ---//&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;        //---//&#xD;      }&#xD;      if (here_op &amp;&amp; (here_op &amp; 0xf0) === 0) {&#xD;        last_bits = here_bits;&#xD;        last_op = here_op;&#xD;        last_val = here_val;&#xD;        for (;;) {&#xD;          here = state.lencode[last_val +&#xD;                  ((hold &amp; ((1 &lt;&lt; (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ &gt;&gt; last_bits)];&#xD;          here_bits = here &gt;&gt;&gt; 24;&#xD;          here_op = (here &gt;&gt;&gt; 16) &amp; 0xff;&#xD;          here_val = here &amp; 0xffff;&#xD;&#xD;          if ((last_bits + here_bits) &lt;= bits) { break; }&#xD;          //--- PULLBYTE() ---//&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;          //---//&#xD;        }&#xD;        //--- DROPBITS(last.bits) ---//&#xD;        hold &gt;&gt;&gt;= last_bits;&#xD;        bits -= last_bits;&#xD;        //---//&#xD;        state.back += last_bits;&#xD;      }&#xD;      //--- DROPBITS(here.bits) ---//&#xD;      hold &gt;&gt;&gt;= here_bits;&#xD;      bits -= here_bits;&#xD;      //---//&#xD;      state.back += here_bits;&#xD;      state.length = here_val;&#xD;      if (here_op === 0) {&#xD;        //Tracevv((stderr, here.val &gt;= 0x20 &amp;&amp; here.val &lt; 0x7f ?&#xD;        //        "inflate:         literal &apos;%c&apos;\n" :&#xD;        //        "inflate:         literal 0x%02x\n", here.val));&#xD;        state.mode = LIT;&#xD;        break;&#xD;      }&#xD;      if (here_op &amp; 32) {&#xD;        //Tracevv((stderr, "inflate:         end of block\n"));&#xD;        state.back = -1;&#xD;        state.mode = TYPE;&#xD;        break;&#xD;      }&#xD;      if (here_op &amp; 64) {&#xD;        strm.msg = &apos;invalid literal/length code&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      state.extra = here_op &amp; 15;&#xD;      state.mode = LENEXT;&#xD;      /* falls through */&#xD;    case LENEXT:&#xD;      if (state.extra) {&#xD;        //=== NEEDBITS(state.extra);&#xD;        n = state.extra;&#xD;        while (bits &lt; n) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        state.length += hold &amp; ((1 &lt;&lt; state.extra) - 1)/*BITS(state.extra)*/;&#xD;        //--- DROPBITS(state.extra) ---//&#xD;        hold &gt;&gt;&gt;= state.extra;&#xD;        bits -= state.extra;&#xD;        //---//&#xD;        state.back += state.extra;&#xD;      }&#xD;      //Tracevv((stderr, "inflate:         length %u\n", state.length));&#xD;      state.was = state.length;&#xD;      state.mode = DIST;&#xD;      /* falls through */&#xD;    case DIST:&#xD;      for (;;) {&#xD;        here = state.distcode[hold &amp; ((1 &lt;&lt; state.distbits) - 1)];/*BITS(state.distbits)*/&#xD;        here_bits = here &gt;&gt;&gt; 24;&#xD;        here_op = (here &gt;&gt;&gt; 16) &amp; 0xff;&#xD;        here_val = here &amp; 0xffff;&#xD;&#xD;        if ((here_bits) &lt;= bits) { break; }&#xD;        //--- PULLBYTE() ---//&#xD;        if (have === 0) { break inf_leave; }&#xD;        have--;&#xD;        hold += input[next++] &lt;&lt; bits;&#xD;        bits += 8;&#xD;        //---//&#xD;      }&#xD;      if ((here_op &amp; 0xf0) === 0) {&#xD;        last_bits = here_bits;&#xD;        last_op = here_op;&#xD;        last_val = here_val;&#xD;        for (;;) {&#xD;          here = state.distcode[last_val +&#xD;                  ((hold &amp; ((1 &lt;&lt; (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ &gt;&gt; last_bits)];&#xD;          here_bits = here &gt;&gt;&gt; 24;&#xD;          here_op = (here &gt;&gt;&gt; 16) &amp; 0xff;&#xD;          here_val = here &amp; 0xffff;&#xD;&#xD;          if ((last_bits + here_bits) &lt;= bits) { break; }&#xD;          //--- PULLBYTE() ---//&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;          //---//&#xD;        }&#xD;        //--- DROPBITS(last.bits) ---//&#xD;        hold &gt;&gt;&gt;= last_bits;&#xD;        bits -= last_bits;&#xD;        //---//&#xD;        state.back += last_bits;&#xD;      }&#xD;      //--- DROPBITS(here.bits) ---//&#xD;      hold &gt;&gt;&gt;= here_bits;&#xD;      bits -= here_bits;&#xD;      //---//&#xD;      state.back += here_bits;&#xD;      if (here_op &amp; 64) {&#xD;        strm.msg = &apos;invalid distance code&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;      state.offset = here_val;&#xD;      state.extra = (here_op) &amp; 15;&#xD;      state.mode = DISTEXT;&#xD;      /* falls through */&#xD;    case DISTEXT:&#xD;      if (state.extra) {&#xD;        //=== NEEDBITS(state.extra);&#xD;        n = state.extra;&#xD;        while (bits &lt; n) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        state.offset += hold &amp; ((1 &lt;&lt; state.extra) - 1)/*BITS(state.extra)*/;&#xD;        //--- DROPBITS(state.extra) ---//&#xD;        hold &gt;&gt;&gt;= state.extra;&#xD;        bits -= state.extra;&#xD;        //---//&#xD;        state.back += state.extra;&#xD;      }&#xD;//#ifdef INFLATE_STRICT&#xD;      if (state.offset &gt; state.dmax) {&#xD;        strm.msg = &apos;invalid distance too far back&apos;;&#xD;        state.mode = BAD;&#xD;        break;&#xD;      }&#xD;//#endif&#xD;      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));&#xD;      state.mode = MATCH;&#xD;      /* falls through */&#xD;    case MATCH:&#xD;      if (left === 0) { break inf_leave; }&#xD;      copy = _out - left;&#xD;      if (state.offset &gt; copy) {         /* copy from window */&#xD;        copy = state.offset - copy;&#xD;        if (copy &gt; state.whave) {&#xD;          if (state.sane) {&#xD;            strm.msg = &apos;invalid distance too far back&apos;;&#xD;            state.mode = BAD;&#xD;            break;&#xD;          }&#xD;// (!) This block is disabled in zlib defailts,&#xD;// don&apos;t enable it for binary compatibility&#xD;//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR&#xD;//          Trace((stderr, "inflate.c too far\n"));&#xD;//          copy -= state.whave;&#xD;//          if (copy &gt; state.length) { copy = state.length; }&#xD;//          if (copy &gt; left) { copy = left; }&#xD;//          left -= copy;&#xD;//          state.length -= copy;&#xD;//          do {&#xD;//            output[put++] = 0;&#xD;//          } while (--copy);&#xD;//          if (state.length === 0) { state.mode = LEN; }&#xD;//          break;&#xD;//#endif&#xD;        }&#xD;        if (copy &gt; state.wnext) {&#xD;          copy -= state.wnext;&#xD;          from = state.wsize - copy;&#xD;        }&#xD;        else {&#xD;          from = state.wnext - copy;&#xD;        }&#xD;        if (copy &gt; state.length) { copy = state.length; }&#xD;        from_source = state.window;&#xD;      }&#xD;      else {                              /* copy from output */&#xD;        from_source = output;&#xD;        from = put - state.offset;&#xD;        copy = state.length;&#xD;      }&#xD;      if (copy &gt; left) { copy = left; }&#xD;      left -= copy;&#xD;      state.length -= copy;&#xD;      do {&#xD;        output[put++] = from_source[from++];&#xD;      } while (--copy);&#xD;      if (state.length === 0) { state.mode = LEN; }&#xD;      break;&#xD;    case LIT:&#xD;      if (left === 0) { break inf_leave; }&#xD;      output[put++] = state.length;&#xD;      left--;&#xD;      state.mode = LEN;&#xD;      break;&#xD;    case CHECK:&#xD;      if (state.wrap) {&#xD;        //=== NEEDBITS(32);&#xD;        while (bits &lt; 32) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          // Use &apos;|&apos; insdead of &apos;+&apos; to make sure that result is signed&#xD;          hold |= input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        _out -= left;&#xD;        strm.total_out += _out;&#xD;        state.total += _out;&#xD;        if (_out) {&#xD;          strm.adler = state.check =&#xD;              /*UPDATE(state.check, put - _out, _out);*/&#xD;              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));&#xD;&#xD;        }&#xD;        _out = left;&#xD;        // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too&#xD;        if ((state.flags ? hold : zswap32(hold)) !== state.check) {&#xD;          strm.msg = &apos;incorrect data check&apos;;&#xD;          state.mode = BAD;&#xD;          break;&#xD;        }&#xD;        //=== INITBITS();&#xD;        hold = 0;&#xD;        bits = 0;&#xD;        //===//&#xD;        //Tracev((stderr, "inflate:   check matches trailer\n"));&#xD;      }&#xD;      state.mode = LENGTH;&#xD;      /* falls through */&#xD;    case LENGTH:&#xD;      if (state.wrap &amp;&amp; state.flags) {&#xD;        //=== NEEDBITS(32);&#xD;        while (bits &lt; 32) {&#xD;          if (have === 0) { break inf_leave; }&#xD;          have--;&#xD;          hold += input[next++] &lt;&lt; bits;&#xD;          bits += 8;&#xD;        }&#xD;        //===//&#xD;        if (hold !== (state.total &amp; 0xffffffff)) {&#xD;          strm.msg = &apos;incorrect length check&apos;;&#xD;          state.mode = BAD;&#xD;          break;&#xD;        }&#xD;        //=== INITBITS();&#xD;        hold = 0;&#xD;        bits = 0;&#xD;        //===//&#xD;        //Tracev((stderr, "inflate:   length matches trailer\n"));&#xD;      }&#xD;      state.mode = DONE;&#xD;      /* falls through */&#xD;    case DONE:&#xD;      ret = Z_STREAM_END;&#xD;      break inf_leave;&#xD;    case BAD:&#xD;      ret = Z_DATA_ERROR;&#xD;      break inf_leave;&#xD;    case MEM:&#xD;      return Z_MEM_ERROR;&#xD;    case SYNC:&#xD;      /* falls through */&#xD;    default:&#xD;      return Z_STREAM_ERROR;&#xD;    }&#xD;  }&#xD;&#xD;  // inf_leave &lt;- here is real place for "goto inf_leave", emulated via "break inf_leave"&#xD;&#xD;  /*&#xD;     Return from inflate(), updating the total counts and the check value.&#xD;     If there was no progress during the inflate() call, return a buffer&#xD;     error.  Call updatewindow() to create and/or update the window state.&#xD;     Note: a memory error from inflate() is non-recoverable.&#xD;   */&#xD;&#xD;  //--- RESTORE() ---&#xD;  strm.next_out = put;&#xD;  strm.avail_out = left;&#xD;  strm.next_in = next;&#xD;  strm.avail_in = have;&#xD;  state.hold = hold;&#xD;  state.bits = bits;&#xD;  //---&#xD;&#xD;  if (state.wsize || (_out !== strm.avail_out &amp;&amp; state.mode &lt; BAD &amp;&amp;&#xD;                      (state.mode &lt; CHECK || flush !== Z_FINISH))) {&#xD;    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {&#xD;      state.mode = MEM;&#xD;      return Z_MEM_ERROR;&#xD;    }&#xD;  }&#xD;  _in -= strm.avail_in;&#xD;  _out -= strm.avail_out;&#xD;  strm.total_in += _in;&#xD;  strm.total_out += _out;&#xD;  state.total += _out;&#xD;  if (state.wrap &amp;&amp; _out) {&#xD;    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/&#xD;      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));&#xD;  }&#xD;  strm.data_type = state.bits + (state.last ? 64 : 0) +&#xD;                    (state.mode === TYPE ? 128 : 0) +&#xD;                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);&#xD;  if (((_in === 0 &amp;&amp; _out === 0) || flush === Z_FINISH) &amp;&amp; ret === Z_OK) {&#xD;    ret = Z_BUF_ERROR;&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;function inflateEnd(strm) {&#xD;&#xD;  if (!strm || !strm.state /*|| strm-&gt;zfree == (free_func)0*/) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  var state = strm.state;&#xD;  if (state.window) {&#xD;    state.window = null;&#xD;  }&#xD;  strm.state = null;&#xD;  return Z_OK;&#xD;}&#xD;&#xD;function inflateGetHeader(strm, head) {&#xD;  var state;&#xD;&#xD;  /* check state */&#xD;  if (!strm || !strm.state) { return Z_STREAM_ERROR; }&#xD;  state = strm.state;&#xD;  if ((state.wrap &amp; 2) === 0) { return Z_STREAM_ERROR; }&#xD;&#xD;  /* save header structure */&#xD;  state.head = head;&#xD;  head.done = false;&#xD;  return Z_OK;&#xD;}&#xD;&#xD;function inflateSetDictionary(strm, dictionary) {&#xD;  var dictLength = dictionary.length;&#xD;&#xD;  var state;&#xD;  var dictid;&#xD;  var ret;&#xD;&#xD;  /* check state */&#xD;  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }&#xD;  state = strm.state;&#xD;&#xD;  if (state.wrap !== 0 &amp;&amp; state.mode !== DICT) {&#xD;    return Z_STREAM_ERROR;&#xD;  }&#xD;&#xD;  /* check for correct dictionary identifier */&#xD;  if (state.mode === DICT) {&#xD;    dictid = 1; /* adler32(0, null, 0)*/&#xD;    /* dictid = adler32(dictid, dictionary, dictLength); */&#xD;    dictid = adler32(dictid, dictionary, dictLength, 0);&#xD;    if (dictid !== state.check) {&#xD;      return Z_DATA_ERROR;&#xD;    }&#xD;  }&#xD;  /* copy dictionary to window using updatewindow(), which will amend the&#xD;   existing dictionary if appropriate */&#xD;  ret = updatewindow(strm, dictionary, dictLength, dictLength);&#xD;  if (ret) {&#xD;    state.mode = MEM;&#xD;    return Z_MEM_ERROR;&#xD;  }&#xD;  state.havedict = 1;&#xD;  // Tracev((stderr, "inflate:   dictionary set\n"));&#xD;  return Z_OK;&#xD;}&#xD;&#xD;exports.inflateReset = inflateReset;&#xD;exports.inflateReset2 = inflateReset2;&#xD;exports.inflateResetKeep = inflateResetKeep;&#xD;exports.inflateInit = inflateInit;&#xD;exports.inflateInit2 = inflateInit2;&#xD;exports.inflate = inflate;&#xD;exports.inflateEnd = inflateEnd;&#xD;exports.inflateGetHeader = inflateGetHeader;&#xD;exports.inflateSetDictionary = inflateSetDictionary;&#xD;exports.inflateInfo = &apos;pako inflate (from Nodeca project)&apos;;&#xD;&#xD;/* Not implemented&#xD;exports.inflateCopy = inflateCopy;&#xD;exports.inflateGetDictionary = inflateGetDictionary;&#xD;exports.inflateMark = inflateMark;&#xD;exports.inflatePrime = inflatePrime;&#xD;exports.inflateSync = inflateSync;&#xD;exports.inflateSyncPoint = inflateSyncPoint;&#xD;exports.inflateUndermine = inflateUndermine;&#xD;*/&#xD;&#xD;&#xD;/***/ }),&#xD;/* 378 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;var utils = __webpack_require__(61);&#xD;&#xD;var MAXBITS = 15;&#xD;var ENOUGH_LENS = 852;&#xD;var ENOUGH_DISTS = 592;&#xD;//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);&#xD;&#xD;var CODES = 0;&#xD;var LENS = 1;&#xD;var DISTS = 2;&#xD;&#xD;var lbase = [ /* Length codes 257..285 base */&#xD;  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,&#xD;  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0&#xD;];&#xD;&#xD;var lext = [ /* Length codes 257..285 extra */&#xD;  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,&#xD;  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78&#xD;];&#xD;&#xD;var dbase = [ /* Distance codes 0..29 base */&#xD;  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,&#xD;  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,&#xD;  8193, 12289, 16385, 24577, 0, 0&#xD;];&#xD;&#xD;var dext = [ /* Distance codes 0..29 extra */&#xD;  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,&#xD;  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,&#xD;  28, 28, 29, 29, 64, 64&#xD;];&#xD;&#xD;module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)&#xD;{&#xD;  var bits = opts.bits;&#xD;      //here = opts.here; /* table entry for duplication */&#xD;&#xD;  var len = 0;               /* a code&apos;s length in bits */&#xD;  var sym = 0;               /* index of code symbols */&#xD;  var min = 0, max = 0;          /* minimum and maximum code lengths */&#xD;  var root = 0;              /* number of index bits for root table */&#xD;  var curr = 0;              /* number of index bits for current table */&#xD;  var drop = 0;              /* code bits to drop for sub-table */&#xD;  var left = 0;                   /* number of prefix codes available */&#xD;  var used = 0;              /* code entries in table used */&#xD;  var huff = 0;              /* Huffman code */&#xD;  var incr;              /* for incrementing code, index */&#xD;  var fill;              /* index for replicating entries */&#xD;  var low;               /* low bits for current root entry */&#xD;  var mask;              /* mask for low root bits */&#xD;  var next;             /* next available space in table */&#xD;  var base = null;     /* base value table to use */&#xD;  var base_index = 0;&#xD;//  var shoextra;    /* extra bits table to use */&#xD;  var end;                    /* use base and extra for symbol &gt; end */&#xD;  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */&#xD;  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */&#xD;  var extra = null;&#xD;  var extra_index = 0;&#xD;&#xD;  var here_bits, here_op, here_val;&#xD;&#xD;  /*&#xD;   Process a set of code lengths to create a canonical Huffman code.  The&#xD;   code lengths are lens[0..codes-1].  Each length corresponds to the&#xD;   symbols 0..codes-1.  The Huffman code is generated by first sorting the&#xD;   symbols by length from short to long, and retaining the symbol order&#xD;   for codes with equal lengths.  Then the code starts with all zero bits&#xD;   for the first code of the shortest length, and the codes are integer&#xD;   increments for the same length, and zeros are appended as the length&#xD;   increases.  For the deflate format, these bits are stored backwards&#xD;   from their more natural integer increment ordering, and so when the&#xD;   decoding tables are built in the large loop below, the integer codes&#xD;   are incremented backwards.&#xD;&#xD;   This routine assumes, but does not check, that all of the entries in&#xD;   lens[] are in the range 0..MAXBITS.  The caller must assure this.&#xD;   1..MAXBITS is interpreted as that code length.  zero means that that&#xD;   symbol does not occur in this code.&#xD;&#xD;   The codes are sorted by computing a count of codes for each length,&#xD;   creating from that a table of starting indices for each length in the&#xD;   sorted table, and then entering the symbols in order in the sorted&#xD;   table.  The sorted table is work[], with that space being provided by&#xD;   the caller.&#xD;&#xD;   The length counts are used for other purposes as well, i.e. finding&#xD;   the minimum and maximum length codes, determining if there are any&#xD;   codes at all, checking for a valid set of lengths, and looking ahead&#xD;   at length counts to determine sub-table sizes when building the&#xD;   decoding tables.&#xD;   */&#xD;&#xD;  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */&#xD;  for (len = 0; len &lt;= MAXBITS; len++) {&#xD;    count[len] = 0;&#xD;  }&#xD;  for (sym = 0; sym &lt; codes; sym++) {&#xD;    count[lens[lens_index + sym]]++;&#xD;  }&#xD;&#xD;  /* bound code lengths, force root to be within code lengths */&#xD;  root = bits;&#xD;  for (max = MAXBITS; max &gt;= 1; max--) {&#xD;    if (count[max] !== 0) { break; }&#xD;  }&#xD;  if (root &gt; max) {&#xD;    root = max;&#xD;  }&#xD;  if (max === 0) {                     /* no symbols to code at all */&#xD;    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */&#xD;    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;&#xD;    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;&#xD;    table[table_index++] = (1 &lt;&lt; 24) | (64 &lt;&lt; 16) | 0;&#xD;&#xD;&#xD;    //table.op[opts.table_index] = 64;&#xD;    //table.bits[opts.table_index] = 1;&#xD;    //table.val[opts.table_index++] = 0;&#xD;    table[table_index++] = (1 &lt;&lt; 24) | (64 &lt;&lt; 16) | 0;&#xD;&#xD;    opts.bits = 1;&#xD;    return 0;     /* no symbols, but wait for decoding to report error */&#xD;  }&#xD;  for (min = 1; min &lt; max; min++) {&#xD;    if (count[min] !== 0) { break; }&#xD;  }&#xD;  if (root &lt; min) {&#xD;    root = min;&#xD;  }&#xD;&#xD;  /* check for an over-subscribed or incomplete set of lengths */&#xD;  left = 1;&#xD;  for (len = 1; len &lt;= MAXBITS; len++) {&#xD;    left &lt;&lt;= 1;&#xD;    left -= count[len];&#xD;    if (left &lt; 0) {&#xD;      return -1;&#xD;    }        /* over-subscribed */&#xD;  }&#xD;  if (left &gt; 0 &amp;&amp; (type === CODES || max !== 1)) {&#xD;    return -1;                      /* incomplete set */&#xD;  }&#xD;&#xD;  /* generate offsets into symbol table for each length for sorting */&#xD;  offs[1] = 0;&#xD;  for (len = 1; len &lt; MAXBITS; len++) {&#xD;    offs[len + 1] = offs[len] + count[len];&#xD;  }&#xD;&#xD;  /* sort symbols by length, by symbol order within each length */&#xD;  for (sym = 0; sym &lt; codes; sym++) {&#xD;    if (lens[lens_index + sym] !== 0) {&#xD;      work[offs[lens[lens_index + sym]]++] = sym;&#xD;    }&#xD;  }&#xD;&#xD;  /*&#xD;   Create and fill in decoding tables.  In this loop, the table being&#xD;   filled is at next and has curr index bits.  The code being used is huff&#xD;   with length len.  That code is converted to an index by dropping drop&#xD;   bits off of the bottom.  For codes where len is less than drop + curr,&#xD;   those top drop + curr - len bits are incremented through all values to&#xD;   fill the table with replicated entries.&#xD;&#xD;   root is the number of index bits for the root table.  When len exceeds&#xD;   root, sub-tables are created pointed to by the root entry with an index&#xD;   of the low root bits of huff.  This is saved in low to check for when a&#xD;   new sub-table should be started.  drop is zero when the root table is&#xD;   being filled, and drop is root when sub-tables are being filled.&#xD;&#xD;   When a new sub-table is needed, it is necessary to look ahead in the&#xD;   code lengths to determine what size sub-table is needed.  The length&#xD;   counts are used for this, and so count[] is decremented as codes are&#xD;   entered in the tables.&#xD;&#xD;   used keeps track of how many table entries have been allocated from the&#xD;   provided *table space.  It is checked for LENS and DIST tables against&#xD;   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in&#xD;   the initial root table size constants.  See the comments in inftrees.h&#xD;   for more information.&#xD;&#xD;   sym increments through all symbols, and the loop terminates when&#xD;   all codes of length max, i.e. all codes, have been processed.  This&#xD;   routine permits incomplete codes, so another loop after this one fills&#xD;   in the rest of the decoding tables with invalid code markers.&#xD;   */&#xD;&#xD;  /* set up for code type */&#xD;  // poor man optimization - use if-else instead of switch,&#xD;  // to avoid deopts in old v8&#xD;  if (type === CODES) {&#xD;    base = extra = work;    /* dummy value--not used */&#xD;    end = 19;&#xD;&#xD;  } else if (type === LENS) {&#xD;    base = lbase;&#xD;    base_index -= 257;&#xD;    extra = lext;&#xD;    extra_index -= 257;&#xD;    end = 256;&#xD;&#xD;  } else {                    /* DISTS */&#xD;    base = dbase;&#xD;    extra = dext;&#xD;    end = -1;&#xD;  }&#xD;&#xD;  /* initialize opts for loop */&#xD;  huff = 0;                   /* starting code */&#xD;  sym = 0;                    /* starting code symbol */&#xD;  len = min;                  /* starting code length */&#xD;  next = table_index;              /* current table to fill in */&#xD;  curr = root;                /* current table index bits */&#xD;  drop = 0;                   /* current bits to drop from code for index */&#xD;  low = -1;                   /* trigger new sub-table when len &gt; root */&#xD;  used = 1 &lt;&lt; root;          /* use root table entries */&#xD;  mask = used - 1;            /* mask for comparing low */&#xD;&#xD;  /* check available table space */&#xD;  if ((type === LENS &amp;&amp; used &gt; ENOUGH_LENS) ||&#xD;    (type === DISTS &amp;&amp; used &gt; ENOUGH_DISTS)) {&#xD;    return 1;&#xD;  }&#xD;&#xD;  var i = 0;&#xD;  /* process all codes and make table entries */&#xD;  for (;;) {&#xD;    i++;&#xD;    /* create table entry */&#xD;    here_bits = len - drop;&#xD;    if (work[sym] &lt; end) {&#xD;      here_op = 0;&#xD;      here_val = work[sym];&#xD;    }&#xD;    else if (work[sym] &gt; end) {&#xD;      here_op = extra[extra_index + work[sym]];&#xD;      here_val = base[base_index + work[sym]];&#xD;    }&#xD;    else {&#xD;      here_op = 32 + 64;         /* end of block */&#xD;      here_val = 0;&#xD;    }&#xD;&#xD;    /* replicate for those indices with low len bits equal to huff */&#xD;    incr = 1 &lt;&lt; (len - drop);&#xD;    fill = 1 &lt;&lt; curr;&#xD;    min = fill;                 /* save offset to next table */&#xD;    do {&#xD;      fill -= incr;&#xD;      table[next + (huff &gt;&gt; drop) + fill] = (here_bits &lt;&lt; 24) | (here_op &lt;&lt; 16) | here_val |0;&#xD;    } while (fill !== 0);&#xD;&#xD;    /* backwards increment the len-bit code huff */&#xD;    incr = 1 &lt;&lt; (len - 1);&#xD;    while (huff &amp; incr) {&#xD;      incr &gt;&gt;= 1;&#xD;    }&#xD;    if (incr !== 0) {&#xD;      huff &amp;= incr - 1;&#xD;      huff += incr;&#xD;    } else {&#xD;      huff = 0;&#xD;    }&#xD;&#xD;    /* go to next symbol, update count, len */&#xD;    sym++;&#xD;    if (--count[len] === 0) {&#xD;      if (len === max) { break; }&#xD;      len = lens[lens_index + work[sym]];&#xD;    }&#xD;&#xD;    /* create new sub-table if needed */&#xD;    if (len &gt; root &amp;&amp; (huff &amp; mask) !== low) {&#xD;      /* if first time, transition to sub-tables */&#xD;      if (drop === 0) {&#xD;        drop = root;&#xD;      }&#xD;&#xD;      /* increment past last table */&#xD;      next += min;            /* here min is 1 &lt;&lt; curr */&#xD;&#xD;      /* determine length of next table */&#xD;      curr = len - drop;&#xD;      left = 1 &lt;&lt; curr;&#xD;      while (curr + drop &lt; max) {&#xD;        left -= count[curr + drop];&#xD;        if (left &lt;= 0) { break; }&#xD;        curr++;&#xD;        left &lt;&lt;= 1;&#xD;      }&#xD;&#xD;      /* check for enough space */&#xD;      used += 1 &lt;&lt; curr;&#xD;      if ((type === LENS &amp;&amp; used &gt; ENOUGH_LENS) ||&#xD;        (type === DISTS &amp;&amp; used &gt; ENOUGH_DISTS)) {&#xD;        return 1;&#xD;      }&#xD;&#xD;      /* point entry in root table to sub-table */&#xD;      low = huff &amp; mask;&#xD;      /*table.op[low] = curr;&#xD;      table.bits[low] = root;&#xD;      table.val[low] = next - opts.table_index;*/&#xD;      table[low] = (root &lt;&lt; 24) | (curr &lt;&lt; 16) | (next - table_index) |0;&#xD;    }&#xD;  }&#xD;&#xD;  /* fill in remaining table entry if code is incomplete (guaranteed to have&#xD;   at most one remaining entry, since if the code is incomplete, the&#xD;   maximum code length that was allowed to get this far is one bit) */&#xD;  if (huff !== 0) {&#xD;    //table.op[next + huff] = 64;            /* invalid code marker */&#xD;    //table.bits[next + huff] = len - drop;&#xD;    //table.val[next + huff] = 0;&#xD;    table[next + huff] = ((len - drop) &lt;&lt; 24) | (64 &lt;&lt; 16) |0;&#xD;  }&#xD;&#xD;  /* set return parameters */&#xD;  //opts.table_index += used;&#xD;  opts.bits = root;&#xD;  return 0;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 379 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;var utils = __webpack_require__(61);&#xD;&#xD;/* Public constants ==========================================================*/&#xD;/* ===========================================================================*/&#xD;&#xD;&#xD;//var Z_FILTERED          = 1;&#xD;//var Z_HUFFMAN_ONLY      = 2;&#xD;//var Z_RLE               = 3;&#xD;var Z_FIXED               = 4;&#xD;//var Z_DEFAULT_STRATEGY  = 0;&#xD;&#xD;/* Possible values of the data_type field (though see inflate()) */&#xD;var Z_BINARY              = 0;&#xD;var Z_TEXT                = 1;&#xD;//var Z_ASCII             = 1; // = Z_TEXT&#xD;var Z_UNKNOWN             = 2;&#xD;&#xD;/*============================================================================*/&#xD;&#xD;&#xD;function zero(buf) { var len = buf.length; while (--len &gt;= 0) { buf[len] = 0; } }&#xD;&#xD;// From zutil.h&#xD;&#xD;var STORED_BLOCK = 0;&#xD;var STATIC_TREES = 1;&#xD;var DYN_TREES    = 2;&#xD;/* The three kinds of block type */&#xD;&#xD;var MIN_MATCH    = 3;&#xD;var MAX_MATCH    = 258;&#xD;/* The minimum and maximum match lengths */&#xD;&#xD;// From deflate.h&#xD;/* ===========================================================================&#xD; * Internal compression state.&#xD; */&#xD;&#xD;var LENGTH_CODES  = 29;&#xD;/* number of length codes, not counting the special END_BLOCK code */&#xD;&#xD;var LITERALS      = 256;&#xD;/* number of literal bytes 0..255 */&#xD;&#xD;var L_CODES       = LITERALS + 1 + LENGTH_CODES;&#xD;/* number of Literal or Length codes, including the END_BLOCK code */&#xD;&#xD;var D_CODES       = 30;&#xD;/* number of distance codes */&#xD;&#xD;var BL_CODES      = 19;&#xD;/* number of codes used to transfer the bit lengths */&#xD;&#xD;var HEAP_SIZE     = 2 * L_CODES + 1;&#xD;/* maximum heap size */&#xD;&#xD;var MAX_BITS      = 15;&#xD;/* All codes must not exceed MAX_BITS bits */&#xD;&#xD;var Buf_size      = 16;&#xD;/* size of bit buffer in bi_buf */&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Constants&#xD; */&#xD;&#xD;var MAX_BL_BITS = 7;&#xD;/* Bit length codes must not exceed MAX_BL_BITS bits */&#xD;&#xD;var END_BLOCK   = 256;&#xD;/* end of block literal code */&#xD;&#xD;var REP_3_6     = 16;&#xD;/* repeat previous bit length 3-6 times (2 bits of repeat count) */&#xD;&#xD;var REPZ_3_10   = 17;&#xD;/* repeat a zero length 3-10 times  (3 bits of repeat count) */&#xD;&#xD;var REPZ_11_138 = 18;&#xD;/* repeat a zero length 11-138 times  (7 bits of repeat count) */&#xD;&#xD;/* eslint-disable comma-spacing,array-bracket-spacing */&#xD;var extra_lbits =   /* extra bits for each length code */&#xD;  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];&#xD;&#xD;var extra_dbits =   /* extra bits for each distance code */&#xD;  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];&#xD;&#xD;var extra_blbits =  /* extra bits for each bit length code */&#xD;  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];&#xD;&#xD;var bl_order =&#xD;  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];&#xD;/* eslint-enable comma-spacing,array-bracket-spacing */&#xD;&#xD;/* The lengths of the bit length codes are sent in order of decreasing&#xD; * probability, to avoid transmitting the lengths for unused bit length codes.&#xD; */&#xD;&#xD;/* ===========================================================================&#xD; * Local data. These are initialized only once.&#xD; */&#xD;&#xD;// We pre-fill arrays with 0 to avoid uninitialized gaps&#xD;&#xD;var DIST_CODE_LEN = 512; /* see definition of array dist_code below */&#xD;&#xD;// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1&#xD;var static_ltree  = new Array((L_CODES + 2) * 2);&#xD;zero(static_ltree);&#xD;/* The static literal tree. Since the bit lengths are imposed, there is no&#xD; * need for the L_CODES extra codes used during heap construction. However&#xD; * The codes 286 and 287 are needed to build a canonical tree (see _tr_init&#xD; * below).&#xD; */&#xD;&#xD;var static_dtree  = new Array(D_CODES * 2);&#xD;zero(static_dtree);&#xD;/* The static distance tree. (Actually a trivial tree since all codes use&#xD; * 5 bits.)&#xD; */&#xD;&#xD;var _dist_code    = new Array(DIST_CODE_LEN);&#xD;zero(_dist_code);&#xD;/* Distance codes. The first 256 values correspond to the distances&#xD; * 3 .. 258, the last 256 values correspond to the top 8 bits of&#xD; * the 15 bit distances.&#xD; */&#xD;&#xD;var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);&#xD;zero(_length_code);&#xD;/* length code for each normalized match length (0 == MIN_MATCH) */&#xD;&#xD;var base_length   = new Array(LENGTH_CODES);&#xD;zero(base_length);&#xD;/* First normalized length for each code (0 = MIN_MATCH) */&#xD;&#xD;var base_dist     = new Array(D_CODES);&#xD;zero(base_dist);&#xD;/* First normalized distance for each code (0 = distance of 1) */&#xD;&#xD;&#xD;function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {&#xD;&#xD;  this.static_tree  = static_tree;  /* static tree or NULL */&#xD;  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */&#xD;  this.extra_base   = extra_base;   /* base index for extra_bits */&#xD;  this.elems        = elems;        /* max number of elements in the tree */&#xD;  this.max_length   = max_length;   /* max bit length for the codes */&#xD;&#xD;  // show if `static_tree` has data or dummy - needed for monomorphic objects&#xD;  this.has_stree    = static_tree &amp;&amp; static_tree.length;&#xD;}&#xD;&#xD;&#xD;var static_l_desc;&#xD;var static_d_desc;&#xD;var static_bl_desc;&#xD;&#xD;&#xD;function TreeDesc(dyn_tree, stat_desc) {&#xD;  this.dyn_tree = dyn_tree;     /* the dynamic tree */&#xD;  this.max_code = 0;            /* largest code with non zero frequency */&#xD;  this.stat_desc = stat_desc;   /* the corresponding static tree */&#xD;}&#xD;&#xD;&#xD;&#xD;function d_code(dist) {&#xD;  return dist &lt; 256 ? _dist_code[dist] : _dist_code[256 + (dist &gt;&gt;&gt; 7)];&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Output a short LSB first on the stream.&#xD; * IN assertion: there is enough room in pendingBuf.&#xD; */&#xD;function put_short(s, w) {&#xD;//    put_byte(s, (uch)((w) &amp; 0xff));&#xD;//    put_byte(s, (uch)((ush)(w) &gt;&gt; 8));&#xD;  s.pending_buf[s.pending++] = (w) &amp; 0xff;&#xD;  s.pending_buf[s.pending++] = (w &gt;&gt;&gt; 8) &amp; 0xff;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Send a value on a given number of bits.&#xD; * IN assertion: length &lt;= 16 and value fits in length bits.&#xD; */&#xD;function send_bits(s, value, length) {&#xD;  if (s.bi_valid &gt; (Buf_size - length)) {&#xD;    s.bi_buf |= (value &lt;&lt; s.bi_valid) &amp; 0xffff;&#xD;    put_short(s, s.bi_buf);&#xD;    s.bi_buf = value &gt;&gt; (Buf_size - s.bi_valid);&#xD;    s.bi_valid += length - Buf_size;&#xD;  } else {&#xD;    s.bi_buf |= (value &lt;&lt; s.bi_valid) &amp; 0xffff;&#xD;    s.bi_valid += length;&#xD;  }&#xD;}&#xD;&#xD;&#xD;function send_code(s, c, tree) {&#xD;  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Reverse the first len bits of a code, using straightforward code (a faster&#xD; * method would use a table)&#xD; * IN assertion: 1 &lt;= len &lt;= 15&#xD; */&#xD;function bi_reverse(code, len) {&#xD;  var res = 0;&#xD;  do {&#xD;    res |= code &amp; 1;&#xD;    code &gt;&gt;&gt;= 1;&#xD;    res &lt;&lt;= 1;&#xD;  } while (--len &gt; 0);&#xD;  return res &gt;&gt;&gt; 1;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Flush the bit buffer, keeping at most 7 bits in it.&#xD; */&#xD;function bi_flush(s) {&#xD;  if (s.bi_valid === 16) {&#xD;    put_short(s, s.bi_buf);&#xD;    s.bi_buf = 0;&#xD;    s.bi_valid = 0;&#xD;&#xD;  } else if (s.bi_valid &gt;= 8) {&#xD;    s.pending_buf[s.pending++] = s.bi_buf &amp; 0xff;&#xD;    s.bi_buf &gt;&gt;= 8;&#xD;    s.bi_valid -= 8;&#xD;  }&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Compute the optimal bit lengths for a tree and update the total bit length&#xD; * for the current block.&#xD; * IN assertion: the fields freq and dad are set, heap[heap_max] and&#xD; *    above are the tree nodes sorted by increasing frequency.&#xD; * OUT assertions: the field len is set to the optimal bit length, the&#xD; *     array bl_count contains the frequencies for each bit length.&#xD; *     The length opt_len is updated; static_len is also updated if stree is&#xD; *     not null.&#xD; */&#xD;function gen_bitlen(s, desc)&#xD;//    deflate_state *s;&#xD;//    tree_desc *desc;    /* the tree descriptor */&#xD;{&#xD;  var tree            = desc.dyn_tree;&#xD;  var max_code        = desc.max_code;&#xD;  var stree           = desc.stat_desc.static_tree;&#xD;  var has_stree       = desc.stat_desc.has_stree;&#xD;  var extra           = desc.stat_desc.extra_bits;&#xD;  var base            = desc.stat_desc.extra_base;&#xD;  var max_length      = desc.stat_desc.max_length;&#xD;  var h;              /* heap index */&#xD;  var n, m;           /* iterate over the tree elements */&#xD;  var bits;           /* bit length */&#xD;  var xbits;          /* extra bits */&#xD;  var f;              /* frequency */&#xD;  var overflow = 0;   /* number of elements with bit length too large */&#xD;&#xD;  for (bits = 0; bits &lt;= MAX_BITS; bits++) {&#xD;    s.bl_count[bits] = 0;&#xD;  }&#xD;&#xD;  /* In a first pass, compute the optimal bit lengths (which may&#xD;   * overflow in the case of the bit length tree).&#xD;   */&#xD;  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */&#xD;&#xD;  for (h = s.heap_max + 1; h &lt; HEAP_SIZE; h++) {&#xD;    n = s.heap[h];&#xD;    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;&#xD;    if (bits &gt; max_length) {&#xD;      bits = max_length;&#xD;      overflow++;&#xD;    }&#xD;    tree[n * 2 + 1]/*.Len*/ = bits;&#xD;    /* We overwrite tree[n].Dad which is no longer needed */&#xD;&#xD;    if (n &gt; max_code) { continue; } /* not a leaf node */&#xD;&#xD;    s.bl_count[bits]++;&#xD;    xbits = 0;&#xD;    if (n &gt;= base) {&#xD;      xbits = extra[n - base];&#xD;    }&#xD;    f = tree[n * 2]/*.Freq*/;&#xD;    s.opt_len += f * (bits + xbits);&#xD;    if (has_stree) {&#xD;      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);&#xD;    }&#xD;  }&#xD;  if (overflow === 0) { return; }&#xD;&#xD;  // Trace((stderr,"\nbit length overflow\n"));&#xD;  /* This happens for example on obj2 and pic of the Calgary corpus */&#xD;&#xD;  /* Find the first bit length which could increase: */&#xD;  do {&#xD;    bits = max_length - 1;&#xD;    while (s.bl_count[bits] === 0) { bits--; }&#xD;    s.bl_count[bits]--;      /* move one leaf down the tree */&#xD;    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */&#xD;    s.bl_count[max_length]--;&#xD;    /* The brother of the overflow item also moves one step up,&#xD;     * but this does not affect bl_count[max_length]&#xD;     */&#xD;    overflow -= 2;&#xD;  } while (overflow &gt; 0);&#xD;&#xD;  /* Now recompute all bit lengths, scanning in increasing frequency.&#xD;   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all&#xD;   * lengths instead of fixing only the wrong ones. This idea is taken&#xD;   * from &apos;ar&apos; written by Haruhiko Okumura.)&#xD;   */&#xD;  for (bits = max_length; bits !== 0; bits--) {&#xD;    n = s.bl_count[bits];&#xD;    while (n !== 0) {&#xD;      m = s.heap[--h];&#xD;      if (m &gt; max_code) { continue; }&#xD;      if (tree[m * 2 + 1]/*.Len*/ !== bits) {&#xD;        // Trace((stderr,"code %d bits %d-&gt;%d\n", m, tree[m].Len, bits));&#xD;        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;&#xD;        tree[m * 2 + 1]/*.Len*/ = bits;&#xD;      }&#xD;      n--;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Generate the codes for a given tree and bit counts (which need not be&#xD; * optimal).&#xD; * IN assertion: the array bl_count contains the bit length statistics for&#xD; * the given tree and the field len is set for all tree elements.&#xD; * OUT assertion: the field code is set for all tree elements of non&#xD; *     zero code length.&#xD; */&#xD;function gen_codes(tree, max_code, bl_count)&#xD;//    ct_data *tree;             /* the tree to decorate */&#xD;//    int max_code;              /* largest code with non zero frequency */&#xD;//    ushf *bl_count;            /* number of codes at each bit length */&#xD;{&#xD;  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */&#xD;  var code = 0;              /* running code value */&#xD;  var bits;                  /* bit index */&#xD;  var n;                     /* code index */&#xD;&#xD;  /* The distribution counts are first used to generate the code values&#xD;   * without bit reversal.&#xD;   */&#xD;  for (bits = 1; bits &lt;= MAX_BITS; bits++) {&#xD;    next_code[bits] = code = (code + bl_count[bits - 1]) &lt;&lt; 1;&#xD;  }&#xD;  /* Check that the bit counts in bl_count are consistent. The last code&#xD;   * must be all ones.&#xD;   */&#xD;  //Assert (code + bl_count[MAX_BITS]-1 == (1&lt;&lt;MAX_BITS)-1,&#xD;  //        "inconsistent bit counts");&#xD;  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));&#xD;&#xD;  for (n = 0;  n &lt;= max_code; n++) {&#xD;    var len = tree[n * 2 + 1]/*.Len*/;&#xD;    if (len === 0) { continue; }&#xD;    /* Now reverse the bits */&#xD;    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);&#xD;&#xD;    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",&#xD;    //     n, (isgraph(n) ? n : &apos; &apos;), len, tree[n].Code, next_code[len]-1));&#xD;  }&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Initialize the various &apos;constant&apos; tables.&#xD; */&#xD;function tr_static_init() {&#xD;  var n;        /* iterates over tree elements */&#xD;  var bits;     /* bit counter */&#xD;  var length;   /* length value */&#xD;  var code;     /* code value */&#xD;  var dist;     /* distance index */&#xD;  var bl_count = new Array(MAX_BITS + 1);&#xD;  /* number of codes at each bit length for an optimal tree */&#xD;&#xD;  // do check in _tr_init()&#xD;  //if (static_init_done) return;&#xD;&#xD;  /* For some embedded targets, global variables are not initialized: */&#xD;/*#ifdef NO_INIT_GLOBAL_POINTERS&#xD;  static_l_desc.static_tree = static_ltree;&#xD;  static_l_desc.extra_bits = extra_lbits;&#xD;  static_d_desc.static_tree = static_dtree;&#xD;  static_d_desc.extra_bits = extra_dbits;&#xD;  static_bl_desc.extra_bits = extra_blbits;&#xD;#endif*/&#xD;&#xD;  /* Initialize the mapping length (0..255) -&gt; length code (0..28) */&#xD;  length = 0;&#xD;  for (code = 0; code &lt; LENGTH_CODES - 1; code++) {&#xD;    base_length[code] = length;&#xD;    for (n = 0; n &lt; (1 &lt;&lt; extra_lbits[code]); n++) {&#xD;      _length_code[length++] = code;&#xD;    }&#xD;  }&#xD;  //Assert (length == 256, "tr_static_init: length != 256");&#xD;  /* Note that the length 255 (match length 258) can be represented&#xD;   * in two different ways: code 284 + 5 bits or code 285, so we&#xD;   * overwrite length_code[255] to use the best encoding:&#xD;   */&#xD;  _length_code[length - 1] = code;&#xD;&#xD;  /* Initialize the mapping dist (0..32K) -&gt; dist code (0..29) */&#xD;  dist = 0;&#xD;  for (code = 0; code &lt; 16; code++) {&#xD;    base_dist[code] = dist;&#xD;    for (n = 0; n &lt; (1 &lt;&lt; extra_dbits[code]); n++) {&#xD;      _dist_code[dist++] = code;&#xD;    }&#xD;  }&#xD;  //Assert (dist == 256, "tr_static_init: dist != 256");&#xD;  dist &gt;&gt;= 7; /* from now on, all distances are divided by 128 */&#xD;  for (; code &lt; D_CODES; code++) {&#xD;    base_dist[code] = dist &lt;&lt; 7;&#xD;    for (n = 0; n &lt; (1 &lt;&lt; (extra_dbits[code] - 7)); n++) {&#xD;      _dist_code[256 + dist++] = code;&#xD;    }&#xD;  }&#xD;  //Assert (dist == 256, "tr_static_init: 256+dist != 512");&#xD;&#xD;  /* Construct the codes of the static literal tree */&#xD;  for (bits = 0; bits &lt;= MAX_BITS; bits++) {&#xD;    bl_count[bits] = 0;&#xD;  }&#xD;&#xD;  n = 0;&#xD;  while (n &lt;= 143) {&#xD;    static_ltree[n * 2 + 1]/*.Len*/ = 8;&#xD;    n++;&#xD;    bl_count[8]++;&#xD;  }&#xD;  while (n &lt;= 255) {&#xD;    static_ltree[n * 2 + 1]/*.Len*/ = 9;&#xD;    n++;&#xD;    bl_count[9]++;&#xD;  }&#xD;  while (n &lt;= 279) {&#xD;    static_ltree[n * 2 + 1]/*.Len*/ = 7;&#xD;    n++;&#xD;    bl_count[7]++;&#xD;  }&#xD;  while (n &lt;= 287) {&#xD;    static_ltree[n * 2 + 1]/*.Len*/ = 8;&#xD;    n++;&#xD;    bl_count[8]++;&#xD;  }&#xD;  /* Codes 286 and 287 do not exist, but we must include them in the&#xD;   * tree construction to get a canonical Huffman tree (longest code&#xD;   * all ones)&#xD;   */&#xD;  gen_codes(static_ltree, L_CODES + 1, bl_count);&#xD;&#xD;  /* The static distance tree is trivial: */&#xD;  for (n = 0; n &lt; D_CODES; n++) {&#xD;    static_dtree[n * 2 + 1]/*.Len*/ = 5;&#xD;    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);&#xD;  }&#xD;&#xD;  // Now data ready and we can init static trees&#xD;  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);&#xD;  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);&#xD;  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);&#xD;&#xD;  //static_init_done = true;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Initialize a new block.&#xD; */&#xD;function init_block(s) {&#xD;  var n; /* iterates over tree elements */&#xD;&#xD;  /* Initialize the trees. */&#xD;  for (n = 0; n &lt; L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }&#xD;  for (n = 0; n &lt; D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }&#xD;  for (n = 0; n &lt; BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }&#xD;&#xD;  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;&#xD;  s.opt_len = s.static_len = 0;&#xD;  s.last_lit = s.matches = 0;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Flush the bit buffer and align the output on a byte boundary&#xD; */&#xD;function bi_windup(s)&#xD;{&#xD;  if (s.bi_valid &gt; 8) {&#xD;    put_short(s, s.bi_buf);&#xD;  } else if (s.bi_valid &gt; 0) {&#xD;    //put_byte(s, (Byte)s-&gt;bi_buf);&#xD;    s.pending_buf[s.pending++] = s.bi_buf;&#xD;  }&#xD;  s.bi_buf = 0;&#xD;  s.bi_valid = 0;&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Copy a stored block, storing first the length and its&#xD; * one&apos;s complement if requested.&#xD; */&#xD;function copy_block(s, buf, len, header)&#xD;//DeflateState *s;&#xD;//charf    *buf;    /* the input data */&#xD;//unsigned len;     /* its length */&#xD;//int      header;  /* true if block header must be written */&#xD;{&#xD;  bi_windup(s);        /* align on byte boundary */&#xD;&#xD;  if (header) {&#xD;    put_short(s, len);&#xD;    put_short(s, &#126;len);&#xD;  }&#xD;//  while (len--) {&#xD;//    put_byte(s, *buf++);&#xD;//  }&#xD;  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);&#xD;  s.pending += len;&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Compares to subtrees, using the tree depth as tie breaker when&#xD; * the subtrees have equal frequency. This minimizes the worst case length.&#xD; */&#xD;function smaller(tree, n, m, depth) {&#xD;  var _n2 = n * 2;&#xD;  var _m2 = m * 2;&#xD;  return (tree[_n2]/*.Freq*/ &lt; tree[_m2]/*.Freq*/ ||&#xD;         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ &amp;&amp; depth[n] &lt;= depth[m]));&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Restore the heap property by moving down the tree starting at node k,&#xD; * exchanging a node with the smallest of its two sons if necessary, stopping&#xD; * when the heap property is re-established (each father smaller than its&#xD; * two sons).&#xD; */&#xD;function pqdownheap(s, tree, k)&#xD;//    deflate_state *s;&#xD;//    ct_data *tree;  /* the tree to restore */&#xD;//    int k;               /* node to move down */&#xD;{&#xD;  var v = s.heap[k];&#xD;  var j = k &lt;&lt; 1;  /* left son of k */&#xD;  while (j &lt;= s.heap_len) {&#xD;    /* Set j to the smallest of the two sons: */&#xD;    if (j &lt; s.heap_len &amp;&amp;&#xD;      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {&#xD;      j++;&#xD;    }&#xD;    /* Exit if v is smaller than both sons */&#xD;    if (smaller(tree, v, s.heap[j], s.depth)) { break; }&#xD;&#xD;    /* Exchange v with the smallest son */&#xD;    s.heap[k] = s.heap[j];&#xD;    k = j;&#xD;&#xD;    /* And continue down the tree, setting j to the left son of k */&#xD;    j &lt;&lt;= 1;&#xD;  }&#xD;  s.heap[k] = v;&#xD;}&#xD;&#xD;&#xD;// inlined manually&#xD;// var SMALLEST = 1;&#xD;&#xD;/* ===========================================================================&#xD; * Send the block data compressed using the given Huffman trees&#xD; */&#xD;function compress_block(s, ltree, dtree)&#xD;//    deflate_state *s;&#xD;//    const ct_data *ltree; /* literal tree */&#xD;//    const ct_data *dtree; /* distance tree */&#xD;{&#xD;  var dist;           /* distance of matched string */&#xD;  var lc;             /* match length or unmatched char (if dist == 0) */&#xD;  var lx = 0;         /* running index in l_buf */&#xD;  var code;           /* the code to send */&#xD;  var extra;          /* number of extra bits to send */&#xD;&#xD;  if (s.last_lit !== 0) {&#xD;    do {&#xD;      dist = (s.pending_buf[s.d_buf + lx * 2] &lt;&lt; 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);&#xD;      lc = s.pending_buf[s.l_buf + lx];&#xD;      lx++;&#xD;&#xD;      if (dist === 0) {&#xD;        send_code(s, lc, ltree); /* send a literal byte */&#xD;        //Tracecv(isgraph(lc), (stderr," &apos;%c&apos; ", lc));&#xD;      } else {&#xD;        /* Here, lc is the match length - MIN_MATCH */&#xD;        code = _length_code[lc];&#xD;        send_code(s, code + LITERALS + 1, ltree); /* send the length code */&#xD;        extra = extra_lbits[code];&#xD;        if (extra !== 0) {&#xD;          lc -= base_length[code];&#xD;          send_bits(s, lc, extra);       /* send the extra length bits */&#xD;        }&#xD;        dist--; /* dist is now the match distance - 1 */&#xD;        code = d_code(dist);&#xD;        //Assert (code &lt; D_CODES, "bad d_code");&#xD;&#xD;        send_code(s, code, dtree);       /* send the distance code */&#xD;        extra = extra_dbits[code];&#xD;        if (extra !== 0) {&#xD;          dist -= base_dist[code];&#xD;          send_bits(s, dist, extra);   /* send the extra distance bits */&#xD;        }&#xD;      } /* literal or match pair ? */&#xD;&#xD;      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */&#xD;      //Assert((uInt)(s-&gt;pending) &lt; s-&gt;lit_bufsize + 2*lx,&#xD;      //       "pendingBuf overflow");&#xD;&#xD;    } while (lx &lt; s.last_lit);&#xD;  }&#xD;&#xD;  send_code(s, END_BLOCK, ltree);&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Construct one Huffman tree and assigns the code bit strings and lengths.&#xD; * Update the total bit length for the current block.&#xD; * IN assertion: the field freq is set for all tree elements.&#xD; * OUT assertions: the fields len and code are set to the optimal bit length&#xD; *     and corresponding code. The length opt_len is updated; static_len is&#xD; *     also updated if stree is not null. The field max_code is set.&#xD; */&#xD;function build_tree(s, desc)&#xD;//    deflate_state *s;&#xD;//    tree_desc *desc; /* the tree descriptor */&#xD;{&#xD;  var tree     = desc.dyn_tree;&#xD;  var stree    = desc.stat_desc.static_tree;&#xD;  var has_stree = desc.stat_desc.has_stree;&#xD;  var elems    = desc.stat_desc.elems;&#xD;  var n, m;          /* iterate over heap elements */&#xD;  var max_code = -1; /* largest code with non zero frequency */&#xD;  var node;          /* new node being created */&#xD;&#xD;  /* Construct the initial heap, with least frequent element in&#xD;   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].&#xD;   * heap[0] is not used.&#xD;   */&#xD;  s.heap_len = 0;&#xD;  s.heap_max = HEAP_SIZE;&#xD;&#xD;  for (n = 0; n &lt; elems; n++) {&#xD;    if (tree[n * 2]/*.Freq*/ !== 0) {&#xD;      s.heap[++s.heap_len] = max_code = n;&#xD;      s.depth[n] = 0;&#xD;&#xD;    } else {&#xD;      tree[n * 2 + 1]/*.Len*/ = 0;&#xD;    }&#xD;  }&#xD;&#xD;  /* The pkzip format requires that at least one distance code exists,&#xD;   * and that at least one bit should be sent even if there is only one&#xD;   * possible code. So to avoid special checks later on we force at least&#xD;   * two codes of non zero frequency.&#xD;   */&#xD;  while (s.heap_len &lt; 2) {&#xD;    node = s.heap[++s.heap_len] = (max_code &lt; 2 ? ++max_code : 0);&#xD;    tree[node * 2]/*.Freq*/ = 1;&#xD;    s.depth[node] = 0;&#xD;    s.opt_len--;&#xD;&#xD;    if (has_stree) {&#xD;      s.static_len -= stree[node * 2 + 1]/*.Len*/;&#xD;    }&#xD;    /* node is 0 or 1 so it does not have extra bits */&#xD;  }&#xD;  desc.max_code = max_code;&#xD;&#xD;  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,&#xD;   * establish sub-heaps of increasing lengths:&#xD;   */&#xD;  for (n = (s.heap_len &gt;&gt; 1/*int /2*/); n &gt;= 1; n--) { pqdownheap(s, tree, n); }&#xD;&#xD;  /* Construct the Huffman tree by repeatedly combining the least two&#xD;   * frequent nodes.&#xD;   */&#xD;  node = elems;              /* next internal node of the tree */&#xD;  do {&#xD;    //pqremove(s, tree, n);  /* n = node of least frequency */&#xD;    /*** pqremove ***/&#xD;    n = s.heap[1/*SMALLEST*/];&#xD;    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];&#xD;    pqdownheap(s, tree, 1/*SMALLEST*/);&#xD;    /***/&#xD;&#xD;    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */&#xD;&#xD;    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */&#xD;    s.heap[--s.heap_max] = m;&#xD;&#xD;    /* Create a new node father of n and m */&#xD;    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;&#xD;    s.depth[node] = (s.depth[n] &gt;= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;&#xD;    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;&#xD;&#xD;    /* and insert the new node in the heap */&#xD;    s.heap[1/*SMALLEST*/] = node++;&#xD;    pqdownheap(s, tree, 1/*SMALLEST*/);&#xD;&#xD;  } while (s.heap_len &gt;= 2);&#xD;&#xD;  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];&#xD;&#xD;  /* At this point, the fields freq and dad are set. We can now&#xD;   * generate the bit lengths.&#xD;   */&#xD;  gen_bitlen(s, desc);&#xD;&#xD;  /* The field len is now set, we can generate the bit codes */&#xD;  gen_codes(tree, max_code, s.bl_count);&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Scan a literal or distance tree to determine the frequencies of the codes&#xD; * in the bit length tree.&#xD; */&#xD;function scan_tree(s, tree, max_code)&#xD;//    deflate_state *s;&#xD;//    ct_data *tree;   /* the tree to be scanned */&#xD;//    int max_code;    /* and its largest code of non zero frequency */&#xD;{&#xD;  var n;                     /* iterates over all tree elements */&#xD;  var prevlen = -1;          /* last emitted length */&#xD;  var curlen;                /* length of current code */&#xD;&#xD;  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */&#xD;&#xD;  var count = 0;             /* repeat count of the current code */&#xD;  var max_count = 7;         /* max repeat count */&#xD;  var min_count = 4;         /* min repeat count */&#xD;&#xD;  if (nextlen === 0) {&#xD;    max_count = 138;&#xD;    min_count = 3;&#xD;  }&#xD;  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */&#xD;&#xD;  for (n = 0; n &lt;= max_code; n++) {&#xD;    curlen = nextlen;&#xD;    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;&#xD;&#xD;    if (++count &lt; max_count &amp;&amp; curlen === nextlen) {&#xD;      continue;&#xD;&#xD;    } else if (count &lt; min_count) {&#xD;      s.bl_tree[curlen * 2]/*.Freq*/ += count;&#xD;&#xD;    } else if (curlen !== 0) {&#xD;&#xD;      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }&#xD;      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;&#xD;&#xD;    } else if (count &lt;= 10) {&#xD;      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;&#xD;&#xD;    } else {&#xD;      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;&#xD;    }&#xD;&#xD;    count = 0;&#xD;    prevlen = curlen;&#xD;&#xD;    if (nextlen === 0) {&#xD;      max_count = 138;&#xD;      min_count = 3;&#xD;&#xD;    } else if (curlen === nextlen) {&#xD;      max_count = 6;&#xD;      min_count = 3;&#xD;&#xD;    } else {&#xD;      max_count = 7;&#xD;      min_count = 4;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Send a literal or distance tree in compressed form, using the codes in&#xD; * bl_tree.&#xD; */&#xD;function send_tree(s, tree, max_code)&#xD;//    deflate_state *s;&#xD;//    ct_data *tree; /* the tree to be scanned */&#xD;//    int max_code;       /* and its largest code of non zero frequency */&#xD;{&#xD;  var n;                     /* iterates over all tree elements */&#xD;  var prevlen = -1;          /* last emitted length */&#xD;  var curlen;                /* length of current code */&#xD;&#xD;  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */&#xD;&#xD;  var count = 0;             /* repeat count of the current code */&#xD;  var max_count = 7;         /* max repeat count */&#xD;  var min_count = 4;         /* min repeat count */&#xD;&#xD;  /* tree[max_code+1].Len = -1; */  /* guard already set */&#xD;  if (nextlen === 0) {&#xD;    max_count = 138;&#xD;    min_count = 3;&#xD;  }&#xD;&#xD;  for (n = 0; n &lt;= max_code; n++) {&#xD;    curlen = nextlen;&#xD;    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;&#xD;&#xD;    if (++count &lt; max_count &amp;&amp; curlen === nextlen) {&#xD;      continue;&#xD;&#xD;    } else if (count &lt; min_count) {&#xD;      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);&#xD;&#xD;    } else if (curlen !== 0) {&#xD;      if (curlen !== prevlen) {&#xD;        send_code(s, curlen, s.bl_tree);&#xD;        count--;&#xD;      }&#xD;      //Assert(count &gt;= 3 &amp;&amp; count &lt;= 6, " 3_6?");&#xD;      send_code(s, REP_3_6, s.bl_tree);&#xD;      send_bits(s, count - 3, 2);&#xD;&#xD;    } else if (count &lt;= 10) {&#xD;      send_code(s, REPZ_3_10, s.bl_tree);&#xD;      send_bits(s, count - 3, 3);&#xD;&#xD;    } else {&#xD;      send_code(s, REPZ_11_138, s.bl_tree);&#xD;      send_bits(s, count - 11, 7);&#xD;    }&#xD;&#xD;    count = 0;&#xD;    prevlen = curlen;&#xD;    if (nextlen === 0) {&#xD;      max_count = 138;&#xD;      min_count = 3;&#xD;&#xD;    } else if (curlen === nextlen) {&#xD;      max_count = 6;&#xD;      min_count = 3;&#xD;&#xD;    } else {&#xD;      max_count = 7;&#xD;      min_count = 4;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Construct the Huffman tree for the bit lengths and return the index in&#xD; * bl_order of the last bit length code to send.&#xD; */&#xD;function build_bl_tree(s) {&#xD;  var max_blindex;  /* index of last bit length code of non zero freq */&#xD;&#xD;  /* Determine the bit length frequencies for literal and distance trees */&#xD;  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);&#xD;  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);&#xD;&#xD;  /* Build the bit length tree: */&#xD;  build_tree(s, s.bl_desc);&#xD;  /* opt_len now includes the length of the tree representations, except&#xD;   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.&#xD;   */&#xD;&#xD;  /* Determine the number of bit length codes to send. The pkzip format&#xD;   * requires that at least 4 bit length codes be sent. (appnote.txt says&#xD;   * 3 but the actual value used is 4.)&#xD;   */&#xD;  for (max_blindex = BL_CODES - 1; max_blindex &gt;= 3; max_blindex--) {&#xD;    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {&#xD;      break;&#xD;    }&#xD;  }&#xD;  /* Update opt_len to include the bit length tree and counts */&#xD;  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;&#xD;  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",&#xD;  //        s-&gt;opt_len, s-&gt;static_len));&#xD;&#xD;  return max_blindex;&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Send the header for a block using dynamic Huffman trees: the counts, the&#xD; * lengths of the bit length codes, the literal tree and the distance tree.&#xD; * IN assertion: lcodes &gt;= 257, dcodes &gt;= 1, blcodes &gt;= 4.&#xD; */&#xD;function send_all_trees(s, lcodes, dcodes, blcodes)&#xD;//    deflate_state *s;&#xD;//    int lcodes, dcodes, blcodes; /* number of codes for each tree */&#xD;{&#xD;  var rank;                    /* index in bl_order */&#xD;&#xD;  //Assert (lcodes &gt;= 257 &amp;&amp; dcodes &gt;= 1 &amp;&amp; blcodes &gt;= 4, "not enough codes");&#xD;  //Assert (lcodes &lt;= L_CODES &amp;&amp; dcodes &lt;= D_CODES &amp;&amp; blcodes &lt;= BL_CODES,&#xD;  //        "too many codes");&#xD;  //Tracev((stderr, "\nbl counts: "));&#xD;  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */&#xD;  send_bits(s, dcodes - 1,   5);&#xD;  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */&#xD;  for (rank = 0; rank &lt; blcodes; rank++) {&#xD;    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));&#xD;    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);&#xD;  }&#xD;  //Tracev((stderr, "\nbl tree: sent %ld", s-&gt;bits_sent));&#xD;&#xD;  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */&#xD;  //Tracev((stderr, "\nlit tree: sent %ld", s-&gt;bits_sent));&#xD;&#xD;  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */&#xD;  //Tracev((stderr, "\ndist tree: sent %ld", s-&gt;bits_sent));&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Check if the data type is TEXT or BINARY, using the following algorithm:&#xD; * - TEXT if the two conditions below are satisfied:&#xD; *    a) There are no non-portable control characters belonging to the&#xD; *       "black list" (0..6, 14..25, 28..31).&#xD; *    b) There is at least one printable character belonging to the&#xD; *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).&#xD; * - BINARY otherwise.&#xD; * - The following partially-portable control characters form a&#xD; *   "gray list" that is ignored in this detection algorithm:&#xD; *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).&#xD; * IN assertion: the fields Freq of dyn_ltree are set.&#xD; */&#xD;function detect_data_type(s) {&#xD;  /* black_mask is the bit mask of black-listed bytes&#xD;   * set bits 0..6, 14..25, and 28..31&#xD;   * 0xf3ffc07f = binary 11110011111111111100000001111111&#xD;   */&#xD;  var black_mask = 0xf3ffc07f;&#xD;  var n;&#xD;&#xD;  /* Check for non-textual ("black-listed") bytes. */&#xD;  for (n = 0; n &lt;= 31; n++, black_mask &gt;&gt;&gt;= 1) {&#xD;    if ((black_mask &amp; 1) &amp;&amp; (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {&#xD;      return Z_BINARY;&#xD;    }&#xD;  }&#xD;&#xD;  /* Check for textual ("white-listed") bytes. */&#xD;  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||&#xD;      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {&#xD;    return Z_TEXT;&#xD;  }&#xD;  for (n = 32; n &lt; LITERALS; n++) {&#xD;    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {&#xD;      return Z_TEXT;&#xD;    }&#xD;  }&#xD;&#xD;  /* There are no "black-listed" or "white-listed" bytes:&#xD;   * this stream either is empty or has tolerated ("gray-listed") bytes only.&#xD;   */&#xD;  return Z_BINARY;&#xD;}&#xD;&#xD;&#xD;var static_init_done = false;&#xD;&#xD;/* ===========================================================================&#xD; * Initialize the tree data structures for a new zlib stream.&#xD; */&#xD;function _tr_init(s)&#xD;{&#xD;&#xD;  if (!static_init_done) {&#xD;    tr_static_init();&#xD;    static_init_done = true;&#xD;  }&#xD;&#xD;  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);&#xD;  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);&#xD;  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);&#xD;&#xD;  s.bi_buf = 0;&#xD;  s.bi_valid = 0;&#xD;&#xD;  /* Initialize the first block of the first file: */&#xD;  init_block(s);&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Send a stored block&#xD; */&#xD;function _tr_stored_block(s, buf, stored_len, last)&#xD;//DeflateState *s;&#xD;//charf *buf;       /* input block */&#xD;//ulg stored_len;   /* length of input block */&#xD;//int last;         /* one if this is the last block for a file */&#xD;{&#xD;  send_bits(s, (STORED_BLOCK &lt;&lt; 1) + (last ? 1 : 0), 3);    /* send block type */&#xD;  copy_block(s, buf, stored_len, true); /* with header */&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Send one empty static block to give enough lookahead for inflate.&#xD; * This takes 10 bits, of which 7 may remain in the bit buffer.&#xD; */&#xD;function _tr_align(s) {&#xD;  send_bits(s, STATIC_TREES &lt;&lt; 1, 3);&#xD;  send_code(s, END_BLOCK, static_ltree);&#xD;  bi_flush(s);&#xD;}&#xD;&#xD;&#xD;/* ===========================================================================&#xD; * Determine the best encoding for the current block: dynamic trees, static&#xD; * trees or store, and output the encoded block to the zip file.&#xD; */&#xD;function _tr_flush_block(s, buf, stored_len, last)&#xD;//DeflateState *s;&#xD;//charf *buf;       /* input block, or NULL if too old */&#xD;//ulg stored_len;   /* length of input block */&#xD;//int last;         /* one if this is the last block for a file */&#xD;{&#xD;  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */&#xD;  var max_blindex = 0;        /* index of last bit length code of non zero freq */&#xD;&#xD;  /* Build the Huffman trees unless a stored block is forced */&#xD;  if (s.level &gt; 0) {&#xD;&#xD;    /* Check if the file is binary or text */&#xD;    if (s.strm.data_type === Z_UNKNOWN) {&#xD;      s.strm.data_type = detect_data_type(s);&#xD;    }&#xD;&#xD;    /* Construct the literal and distance trees */&#xD;    build_tree(s, s.l_desc);&#xD;    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s-&gt;opt_len,&#xD;    //        s-&gt;static_len));&#xD;&#xD;    build_tree(s, s.d_desc);&#xD;    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s-&gt;opt_len,&#xD;    //        s-&gt;static_len));&#xD;    /* At this point, opt_len and static_len are the total bit lengths of&#xD;     * the compressed block data, excluding the tree representations.&#xD;     */&#xD;&#xD;    /* Build the bit length tree for the above two trees, and get the index&#xD;     * in bl_order of the last bit length code to send.&#xD;     */&#xD;    max_blindex = build_bl_tree(s);&#xD;&#xD;    /* Determine the best encoding. Compute the block lengths in bytes. */&#xD;    opt_lenb = (s.opt_len + 3 + 7) &gt;&gt;&gt; 3;&#xD;    static_lenb = (s.static_len + 3 + 7) &gt;&gt;&gt; 3;&#xD;&#xD;    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",&#xD;    //        opt_lenb, s-&gt;opt_len, static_lenb, s-&gt;static_len, stored_len,&#xD;    //        s-&gt;last_lit));&#xD;&#xD;    if (static_lenb &lt;= opt_lenb) { opt_lenb = static_lenb; }&#xD;&#xD;  } else {&#xD;    // Assert(buf != (char*)0, "lost buf");&#xD;    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */&#xD;  }&#xD;&#xD;  if ((stored_len + 4 &lt;= opt_lenb) &amp;&amp; (buf !== -1)) {&#xD;    /* 4: two words for the lengths */&#xD;&#xD;    /* The test buf != NULL is only necessary if LIT_BUFSIZE &gt; WSIZE.&#xD;     * Otherwise we can&apos;t have processed more than WSIZE input bytes since&#xD;     * the last block flush, because compression would have been&#xD;     * successful. If LIT_BUFSIZE &lt;= WSIZE, it is never too late to&#xD;     * transform a block into a stored block.&#xD;     */&#xD;    _tr_stored_block(s, buf, stored_len, last);&#xD;&#xD;  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {&#xD;&#xD;    send_bits(s, (STATIC_TREES &lt;&lt; 1) + (last ? 1 : 0), 3);&#xD;    compress_block(s, static_ltree, static_dtree);&#xD;&#xD;  } else {&#xD;    send_bits(s, (DYN_TREES &lt;&lt; 1) + (last ? 1 : 0), 3);&#xD;    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);&#xD;    compress_block(s, s.dyn_ltree, s.dyn_dtree);&#xD;  }&#xD;  // Assert (s-&gt;compressed_len == s-&gt;bits_sent, "bad compressed size");&#xD;  /* The above check is made mod 2^32, for files larger than 512 MB&#xD;   * and uLong implemented on 32 bits.&#xD;   */&#xD;  init_block(s);&#xD;&#xD;  if (last) {&#xD;    bi_windup(s);&#xD;  }&#xD;  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s-&gt;compressed_len&gt;&gt;3,&#xD;  //       s-&gt;compressed_len-7*last));&#xD;}&#xD;&#xD;/* ===========================================================================&#xD; * Save the match info and tally the frequency counts. Return true if&#xD; * the current block must be flushed.&#xD; */&#xD;function _tr_tally(s, dist, lc)&#xD;//    deflate_state *s;&#xD;//    unsigned dist;  /* distance of matched string */&#xD;//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */&#xD;{&#xD;  //var out_length, in_length, dcode;&#xD;&#xD;  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist &gt;&gt;&gt; 8) &amp; 0xff;&#xD;  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist &amp; 0xff;&#xD;&#xD;  s.pending_buf[s.l_buf + s.last_lit] = lc &amp; 0xff;&#xD;  s.last_lit++;&#xD;&#xD;  if (dist === 0) {&#xD;    /* lc is the unmatched char */&#xD;    s.dyn_ltree[lc * 2]/*.Freq*/++;&#xD;  } else {&#xD;    s.matches++;&#xD;    /* Here, lc is the match length - MIN_MATCH */&#xD;    dist--;             /* dist = match distance - 1 */&#xD;    //Assert((ush)dist &lt; (ush)MAX_DIST(s) &amp;&amp;&#xD;    //       (ush)lc &lt;= (ush)(MAX_MATCH-MIN_MATCH) &amp;&amp;&#xD;    //       (ush)d_code(dist) &lt; (ush)D_CODES,  "_tr_tally: bad match");&#xD;&#xD;    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;&#xD;    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;&#xD;  }&#xD;&#xD;// (!) This block is disabled in zlib defailts,&#xD;// don&apos;t enable it for binary compatibility&#xD;&#xD;//#ifdef TRUNCATE_BLOCK&#xD;//  /* Try to guess if it is profitable to stop the current block here */&#xD;//  if ((s.last_lit &amp; 0x1fff) === 0 &amp;&amp; s.level &gt; 2) {&#xD;//    /* Compute an upper bound for the compressed length */&#xD;//    out_length = s.last_lit*8;&#xD;//    in_length = s.strstart - s.block_start;&#xD;//&#xD;//    for (dcode = 0; dcode &lt; D_CODES; dcode++) {&#xD;//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);&#xD;//    }&#xD;//    out_length &gt;&gt;&gt;= 3;&#xD;//    //Tracev((stderr,"\nlast_lit %u, in %ld, out &#126;%ld(%ld%%) ",&#xD;//    //       s-&gt;last_lit, in_length, out_length,&#xD;//    //       100L - out_length*100L/in_length));&#xD;//    if (s.matches &lt; (s.last_lit&gt;&gt;1)/*int /2*/ &amp;&amp; out_length &lt; (in_length&gt;&gt;1)/*int /2*/) {&#xD;//      return true;&#xD;//    }&#xD;//  }&#xD;//#endif&#xD;&#xD;  return (s.last_lit === s.lit_bufsize - 1);&#xD;  /* We avoid equality with lit_bufsize because of wraparound at 64K&#xD;   * on 16 bit machines and because stored blocks are restricted to&#xD;   * 64K-1 bytes.&#xD;   */&#xD;}&#xD;&#xD;exports._tr_init  = _tr_init;&#xD;exports._tr_stored_block = _tr_stored_block;&#xD;exports._tr_flush_block  = _tr_flush_block;&#xD;exports._tr_tally = _tr_tally;&#xD;exports._tr_align = _tr_align;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 380 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;&#xD;function ZStream() {&#xD;  /* next input byte */&#xD;  this.input = null; // JS specific, because we have no pointers&#xD;  this.next_in = 0;&#xD;  /* number of bytes available at input */&#xD;  this.avail_in = 0;&#xD;  /* total number of input bytes read so far */&#xD;  this.total_in = 0;&#xD;  /* next output byte should be put there */&#xD;  this.output = null; // JS specific, because we have no pointers&#xD;  this.next_out = 0;&#xD;  /* remaining free space at output */&#xD;  this.avail_out = 0;&#xD;  /* total number of bytes output so far */&#xD;  this.total_out = 0;&#xD;  /* last error message, NULL if no error */&#xD;  this.msg = &apos;&apos;/*Z_NULL*/;&#xD;  /* not visible by applications */&#xD;  this.state = null;&#xD;  /* best guess about the data type: binary or text */&#xD;  this.data_type = 2/*Z_UNKNOWN*/;&#xD;  /* adler32 value of the uncompressed data */&#xD;  this.adler = 0;&#xD;}&#xD;&#xD;module.exports = ZStream;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 381 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"2.16.840.1.101.3.4.1.1": "aes-128-ecb",&#xD;	"2.16.840.1.101.3.4.1.2": "aes-128-cbc",&#xD;	"2.16.840.1.101.3.4.1.3": "aes-128-ofb",&#xD;	"2.16.840.1.101.3.4.1.4": "aes-128-cfb",&#xD;	"2.16.840.1.101.3.4.1.21": "aes-192-ecb",&#xD;	"2.16.840.1.101.3.4.1.22": "aes-192-cbc",&#xD;	"2.16.840.1.101.3.4.1.23": "aes-192-ofb",&#xD;	"2.16.840.1.101.3.4.1.24": "aes-192-cfb",&#xD;	"2.16.840.1.101.3.4.1.41": "aes-256-ecb",&#xD;	"2.16.840.1.101.3.4.1.42": "aes-256-cbc",&#xD;	"2.16.840.1.101.3.4.1.43": "aes-256-ofb",&#xD;	"2.16.840.1.101.3.4.1.44": "aes-256-cfb"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 382 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js&#xD;// Fedor, you are amazing.&#xD;&#xD;&#xD;var asn1 = __webpack_require__(45)&#xD;&#xD;exports.certificate = __webpack_require__(383)&#xD;&#xD;var RSAPrivateKey = asn1.define(&apos;RSAPrivateKey&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;version&apos;).int(),&#xD;    this.key(&apos;modulus&apos;).int(),&#xD;    this.key(&apos;publicExponent&apos;).int(),&#xD;    this.key(&apos;privateExponent&apos;).int(),&#xD;    this.key(&apos;prime1&apos;).int(),&#xD;    this.key(&apos;prime2&apos;).int(),&#xD;    this.key(&apos;exponent1&apos;).int(),&#xD;    this.key(&apos;exponent2&apos;).int(),&#xD;    this.key(&apos;coefficient&apos;).int()&#xD;  )&#xD;})&#xD;exports.RSAPrivateKey = RSAPrivateKey&#xD;&#xD;var RSAPublicKey = asn1.define(&apos;RSAPublicKey&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;modulus&apos;).int(),&#xD;    this.key(&apos;publicExponent&apos;).int()&#xD;  )&#xD;})&#xD;exports.RSAPublicKey = RSAPublicKey&#xD;&#xD;var PublicKey = asn1.define(&apos;SubjectPublicKeyInfo&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;algorithm&apos;).use(AlgorithmIdentifier),&#xD;    this.key(&apos;subjectPublicKey&apos;).bitstr()&#xD;  )&#xD;})&#xD;exports.PublicKey = PublicKey&#xD;&#xD;var AlgorithmIdentifier = asn1.define(&apos;AlgorithmIdentifier&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;algorithm&apos;).objid(),&#xD;    this.key(&apos;none&apos;).null_().optional(),&#xD;    this.key(&apos;curve&apos;).objid().optional(),&#xD;    this.key(&apos;params&apos;).seq().obj(&#xD;      this.key(&apos;p&apos;).int(),&#xD;      this.key(&apos;q&apos;).int(),&#xD;      this.key(&apos;g&apos;).int()&#xD;    ).optional()&#xD;  )&#xD;})&#xD;&#xD;var PrivateKeyInfo = asn1.define(&apos;PrivateKeyInfo&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;version&apos;).int(),&#xD;    this.key(&apos;algorithm&apos;).use(AlgorithmIdentifier),&#xD;    this.key(&apos;subjectPrivateKey&apos;).octstr()&#xD;  )&#xD;})&#xD;exports.PrivateKey = PrivateKeyInfo&#xD;var EncryptedPrivateKeyInfo = asn1.define(&apos;EncryptedPrivateKeyInfo&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;algorithm&apos;).seq().obj(&#xD;      this.key(&apos;id&apos;).objid(),&#xD;      this.key(&apos;decrypt&apos;).seq().obj(&#xD;        this.key(&apos;kde&apos;).seq().obj(&#xD;          this.key(&apos;id&apos;).objid(),&#xD;          this.key(&apos;kdeparams&apos;).seq().obj(&#xD;            this.key(&apos;salt&apos;).octstr(),&#xD;            this.key(&apos;iters&apos;).int()&#xD;          )&#xD;        ),&#xD;        this.key(&apos;cipher&apos;).seq().obj(&#xD;          this.key(&apos;algo&apos;).objid(),&#xD;          this.key(&apos;iv&apos;).octstr()&#xD;        )&#xD;      )&#xD;    ),&#xD;    this.key(&apos;subjectPrivateKey&apos;).octstr()&#xD;  )&#xD;})&#xD;&#xD;exports.EncryptedPrivateKey = EncryptedPrivateKeyInfo&#xD;&#xD;var DSAPrivateKey = asn1.define(&apos;DSAPrivateKey&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;version&apos;).int(),&#xD;    this.key(&apos;p&apos;).int(),&#xD;    this.key(&apos;q&apos;).int(),&#xD;    this.key(&apos;g&apos;).int(),&#xD;    this.key(&apos;pub_key&apos;).int(),&#xD;    this.key(&apos;priv_key&apos;).int()&#xD;  )&#xD;})&#xD;exports.DSAPrivateKey = DSAPrivateKey&#xD;&#xD;exports.DSAparam = asn1.define(&apos;DSAparam&apos;, function () {&#xD;  this.int()&#xD;})&#xD;&#xD;var ECPrivateKey = asn1.define(&apos;ECPrivateKey&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;version&apos;).int(),&#xD;    this.key(&apos;privateKey&apos;).octstr(),&#xD;    this.key(&apos;parameters&apos;).optional().explicit(0).use(ECParameters),&#xD;    this.key(&apos;publicKey&apos;).optional().explicit(1).bitstr()&#xD;  )&#xD;})&#xD;exports.ECPrivateKey = ECPrivateKey&#xD;&#xD;var ECParameters = asn1.define(&apos;ECParameters&apos;, function () {&#xD;  this.choice({&#xD;    namedCurve: this.objid()&#xD;  })&#xD;})&#xD;&#xD;exports.signature = asn1.define(&apos;signature&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;r&apos;).int(),&#xD;    this.key(&apos;s&apos;).int()&#xD;  )&#xD;})&#xD;&#xD;&#xD;/***/ }),&#xD;/* 383 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js&#xD;// thanks to @Rantanen&#xD;&#xD;&#xD;&#xD;var asn = __webpack_require__(45)&#xD;&#xD;var Time = asn.define(&apos;Time&apos;, function () {&#xD;  this.choice({&#xD;    utcTime: this.utctime(),&#xD;    generalTime: this.gentime()&#xD;  })&#xD;})&#xD;&#xD;var AttributeTypeValue = asn.define(&apos;AttributeTypeValue&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;type&apos;).objid(),&#xD;    this.key(&apos;value&apos;).any()&#xD;  )&#xD;})&#xD;&#xD;var AlgorithmIdentifier = asn.define(&apos;AlgorithmIdentifier&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;algorithm&apos;).objid(),&#xD;    this.key(&apos;parameters&apos;).optional()&#xD;  )&#xD;})&#xD;&#xD;var SubjectPublicKeyInfo = asn.define(&apos;SubjectPublicKeyInfo&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;algorithm&apos;).use(AlgorithmIdentifier),&#xD;    this.key(&apos;subjectPublicKey&apos;).bitstr()&#xD;  )&#xD;})&#xD;&#xD;var RelativeDistinguishedName = asn.define(&apos;RelativeDistinguishedName&apos;, function () {&#xD;  this.setof(AttributeTypeValue)&#xD;})&#xD;&#xD;var RDNSequence = asn.define(&apos;RDNSequence&apos;, function () {&#xD;  this.seqof(RelativeDistinguishedName)&#xD;})&#xD;&#xD;var Name = asn.define(&apos;Name&apos;, function () {&#xD;  this.choice({&#xD;    rdnSequence: this.use(RDNSequence)&#xD;  })&#xD;})&#xD;&#xD;var Validity = asn.define(&apos;Validity&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;notBefore&apos;).use(Time),&#xD;    this.key(&apos;notAfter&apos;).use(Time)&#xD;  )&#xD;})&#xD;&#xD;var Extension = asn.define(&apos;Extension&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;extnID&apos;).objid(),&#xD;    this.key(&apos;critical&apos;).bool().def(false),&#xD;    this.key(&apos;extnValue&apos;).octstr()&#xD;  )&#xD;})&#xD;&#xD;var TBSCertificate = asn.define(&apos;TBSCertificate&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;version&apos;).explicit(0).int(),&#xD;    this.key(&apos;serialNumber&apos;).int(),&#xD;    this.key(&apos;signature&apos;).use(AlgorithmIdentifier),&#xD;    this.key(&apos;issuer&apos;).use(Name),&#xD;    this.key(&apos;validity&apos;).use(Validity),&#xD;    this.key(&apos;subject&apos;).use(Name),&#xD;    this.key(&apos;subjectPublicKeyInfo&apos;).use(SubjectPublicKeyInfo),&#xD;    this.key(&apos;issuerUniqueID&apos;).implicit(1).bitstr().optional(),&#xD;    this.key(&apos;subjectUniqueID&apos;).implicit(2).bitstr().optional(),&#xD;    this.key(&apos;extensions&apos;).explicit(3).seqof(Extension).optional()&#xD;  )&#xD;})&#xD;&#xD;var X509Certificate = asn.define(&apos;X509Certificate&apos;, function () {&#xD;  this.seq().obj(&#xD;    this.key(&apos;tbsCertificate&apos;).use(TBSCertificate),&#xD;    this.key(&apos;signatureAlgorithm&apos;).use(AlgorithmIdentifier),&#xD;    this.key(&apos;signatureValue&apos;).bitstr()&#xD;  )&#xD;})&#xD;&#xD;module.exports = X509Certificate&#xD;&#xD;&#xD;/***/ }),&#xD;/* 384 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {// adapted from https://github.com/apatil/pemstrip&#xD;var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m&#xD;var startRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n/m&#xD;var fullRegex = /^-----BEGIN ((?:.* KEY)|CERTIFICATE)-----\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?-----END \1-----$/m&#xD;var evp = __webpack_require__(60)&#xD;var ciphers = __webpack_require__(77)&#xD;module.exports = function (okey, password) {&#xD;  var key = okey.toString()&#xD;  var match = key.match(findProc)&#xD;  var decrypted&#xD;  if (!match) {&#xD;    var match2 = key.match(fullRegex)&#xD;    decrypted = new Buffer(match2[2].replace(/\r?\n/g, &apos;&apos;), &apos;base64&apos;)&#xD;  } else {&#xD;    var suite = &apos;aes&apos; + match[1]&#xD;    var iv = new Buffer(match[2], &apos;hex&apos;)&#xD;    var cipherText = new Buffer(match[3].replace(/\r?\n/g, &apos;&apos;), &apos;base64&apos;)&#xD;    var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key&#xD;    var out = []&#xD;    var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)&#xD;    out.push(cipher.update(cipherText))&#xD;    out.push(cipher.final())&#xD;    decrypted = Buffer.concat(out)&#xD;  }&#xD;  var tag = key.match(startRegex)[1]&#xD;  return {&#xD;    tag: tag,&#xD;    data: decrypted&#xD;  }&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 385 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var trim = __webpack_require__(556)&#xD;  , forEach = __webpack_require__(339)&#xD;  , isArray = function(arg) {&#xD;      return Object.prototype.toString.call(arg) === &apos;[object Array]&apos;;&#xD;    }&#xD;&#xD;module.exports = function (headers) {&#xD;  if (!headers)&#xD;    return {}&#xD;&#xD;  var result = {}&#xD;&#xD;  forEach(&#xD;      trim(headers).split(&apos;\n&apos;)&#xD;    , function (row) {&#xD;        var index = row.indexOf(&apos;:&apos;)&#xD;          , key = trim(row.slice(0, index)).toLowerCase()&#xD;          , value = trim(row.slice(index + 1))&#xD;&#xD;        if (typeof(result[key]) === &apos;undefined&apos;) {&#xD;          result[key] = value&#xD;        } else if (isArray(result[key])) {&#xD;          result[key].push(value)&#xD;        } else {&#xD;          result[key] = [ result[key], value ]&#xD;        }&#xD;      }&#xD;  )&#xD;&#xD;  return result&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 386 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs&#xD;module.exports = function (iterations, keylen) {&#xD;  if (typeof iterations !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;Iterations not a number&apos;)&#xD;  }&#xD;&#xD;  if (iterations &lt; 0) {&#xD;    throw new TypeError(&apos;Bad iterations&apos;)&#xD;  }&#xD;&#xD;  if (typeof keylen !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;Key length not a number&apos;)&#xD;  }&#xD;&#xD;  if (keylen &lt; 0 || keylen &gt; MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */&#xD;    throw new TypeError(&apos;Bad key length&apos;)&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 387 */,&#xD;/* 388 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;exports.publicEncrypt = __webpack_require__(390);&#xD;exports.privateDecrypt = __webpack_require__(389);&#xD;&#xD;exports.privateEncrypt = function privateEncrypt(key, buf) {&#xD;  return exports.publicEncrypt(key, buf, true);&#xD;};&#xD;&#xD;exports.publicDecrypt = function publicDecrypt(key, buf) {&#xD;  return exports.privateDecrypt(key, buf, true);&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 389 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var parseKeys = __webpack_require__(62);&#xD;var mgf = __webpack_require__(150);&#xD;var xor = __webpack_require__(152);&#xD;var bn = __webpack_require__(11);&#xD;var crt = __webpack_require__(78);&#xD;var createHash = __webpack_require__(39);&#xD;var withPublic = __webpack_require__(151);&#xD;module.exports = function privateDecrypt(private_key, enc, reverse) {&#xD;  var padding;&#xD;  if (private_key.padding) {&#xD;    padding = private_key.padding;&#xD;  } else if (reverse) {&#xD;    padding = 1;&#xD;  } else {&#xD;    padding = 4;&#xD;  }&#xD;  &#xD;  var key = parseKeys(private_key);&#xD;  var k = key.modulus.byteLength();&#xD;  if (enc.length &gt; k || new bn(enc).cmp(key.modulus) &gt;= 0) {&#xD;    throw new Error(&apos;decryption error&apos;);&#xD;  }&#xD;  var msg;&#xD;  if (reverse) {&#xD;    msg = withPublic(new bn(enc), key);&#xD;  } else {&#xD;    msg = crt(enc, key);&#xD;  }&#xD;  var zBuffer = new Buffer(k - msg.length);&#xD;  zBuffer.fill(0);&#xD;  msg = Buffer.concat([zBuffer, msg], k);&#xD;  if (padding === 4) {&#xD;    return oaep(key, msg);&#xD;  } else if (padding === 1) {&#xD;    return pkcs1(key, msg, reverse);&#xD;  } else if (padding === 3) {&#xD;    return msg;&#xD;  } else {&#xD;    throw new Error(&apos;unknown padding&apos;);&#xD;  }&#xD;};&#xD;&#xD;function oaep(key, msg){&#xD;  var n = key.modulus;&#xD;  var k = key.modulus.byteLength();&#xD;  var mLen = msg.length;&#xD;  var iHash = createHash(&apos;sha1&apos;).update(new Buffer(&apos;&apos;)).digest();&#xD;  var hLen = iHash.length;&#xD;  var hLen2 = 2 * hLen;&#xD;  if (msg[0] !== 0) {&#xD;    throw new Error(&apos;decryption error&apos;);&#xD;  }&#xD;  var maskedSeed = msg.slice(1, hLen + 1);&#xD;  var maskedDb =  msg.slice(hLen + 1);&#xD;  var seed = xor(maskedSeed, mgf(maskedDb, hLen));&#xD;  var db = xor(maskedDb, mgf(seed, k - hLen - 1));&#xD;  if (compare(iHash, db.slice(0, hLen))) {&#xD;    throw new Error(&apos;decryption error&apos;);&#xD;  }&#xD;  var i = hLen;&#xD;  while (db[i] === 0) {&#xD;    i++;&#xD;  }&#xD;  if (db[i++] !== 1) {&#xD;    throw new Error(&apos;decryption error&apos;);&#xD;  }&#xD;  return db.slice(i);&#xD;}&#xD;&#xD;function pkcs1(key, msg, reverse){&#xD;  var p1 = msg.slice(0, 2);&#xD;  var i = 2;&#xD;  var status = 0;&#xD;  while (msg[i++] !== 0) {&#xD;    if (i &gt;= msg.length) {&#xD;      status++;&#xD;      break;&#xD;    }&#xD;  }&#xD;  var ps = msg.slice(2, i - 1);&#xD;  var p2 = msg.slice(i - 1, i);&#xD;&#xD;  if ((p1.toString(&apos;hex&apos;) !== &apos;0002&apos; &amp;&amp; !reverse) || (p1.toString(&apos;hex&apos;) !== &apos;0001&apos; &amp;&amp; reverse)){&#xD;    status++;&#xD;  }&#xD;  if (ps.length &lt; 8) {&#xD;    status++;&#xD;  }&#xD;  if (status) {&#xD;    throw new Error(&apos;decryption error&apos;);&#xD;  }&#xD;  return  msg.slice(i);&#xD;}&#xD;function compare(a, b){&#xD;  a = new Buffer(a);&#xD;  b = new Buffer(b);&#xD;  var dif = 0;&#xD;  var len = a.length;&#xD;  if (a.length !== b.length) {&#xD;    dif++;&#xD;    len = Math.min(a.length, b.length);&#xD;  }&#xD;  var i = -1;&#xD;  while (++i &lt; len) {&#xD;    dif += (a[i] ^ b[i]);&#xD;  }&#xD;  return dif;&#xD;}&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 390 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var parseKeys = __webpack_require__(62);&#xD;var randomBytes = __webpack_require__(49);&#xD;var createHash = __webpack_require__(39);&#xD;var mgf = __webpack_require__(150);&#xD;var xor = __webpack_require__(152);&#xD;var bn = __webpack_require__(11);&#xD;var withPublic = __webpack_require__(151);&#xD;var crt = __webpack_require__(78);&#xD;&#xD;var constants = {&#xD;  RSA_PKCS1_OAEP_PADDING: 4,&#xD;  RSA_PKCS1_PADDIN: 1,&#xD;  RSA_NO_PADDING: 3&#xD;};&#xD;&#xD;module.exports = function publicEncrypt(public_key, msg, reverse) {&#xD;  var padding;&#xD;  if (public_key.padding) {&#xD;    padding = public_key.padding;&#xD;  } else if (reverse) {&#xD;    padding = 1;&#xD;  } else {&#xD;    padding = 4;&#xD;  }&#xD;  var key = parseKeys(public_key);&#xD;  var paddedMsg;&#xD;  if (padding === 4) {&#xD;    paddedMsg = oaep(key, msg);&#xD;  } else if (padding === 1) {&#xD;    paddedMsg = pkcs1(key, msg, reverse);&#xD;  } else if (padding === 3) {&#xD;    paddedMsg = new bn(msg);&#xD;    if (paddedMsg.cmp(key.modulus) &gt;= 0) {&#xD;      throw new Error(&apos;data too long for modulus&apos;);&#xD;    }&#xD;  } else {&#xD;    throw new Error(&apos;unknown padding&apos;);&#xD;  }&#xD;  if (reverse) {&#xD;    return crt(paddedMsg, key);&#xD;  } else {&#xD;    return withPublic(paddedMsg, key);&#xD;  }&#xD;};&#xD;&#xD;function oaep(key, msg){&#xD;  var k = key.modulus.byteLength();&#xD;  var mLen = msg.length;&#xD;  var iHash = createHash(&apos;sha1&apos;).update(new Buffer(&apos;&apos;)).digest();&#xD;  var hLen = iHash.length;&#xD;  var hLen2 = 2 * hLen;&#xD;  if (mLen &gt; k - hLen2 - 2) {&#xD;    throw new Error(&apos;message too long&apos;);&#xD;  }&#xD;  var ps = new Buffer(k - mLen - hLen2 - 2);&#xD;  ps.fill(0);&#xD;  var dblen = k - hLen - 1;&#xD;  var seed = randomBytes(hLen);&#xD;  var maskedDb = xor(Buffer.concat([iHash, ps, new Buffer([1]), msg], dblen), mgf(seed, dblen));&#xD;  var maskedSeed = xor(seed, mgf(maskedDb, hLen));&#xD;  return new bn(Buffer.concat([new Buffer([0]), maskedSeed, maskedDb], k));&#xD;}&#xD;function pkcs1(key, msg, reverse){&#xD;  var mLen = msg.length;&#xD;  var k = key.modulus.byteLength();&#xD;  if (mLen &gt; k - 11) {&#xD;    throw new Error(&apos;message too long&apos;);&#xD;  }&#xD;  var ps;&#xD;  if (reverse) {&#xD;    ps = new Buffer(k - mLen - 3);&#xD;    ps.fill(0xff);&#xD;  } else {&#xD;    ps = nonZero(k - mLen - 3);&#xD;  }&#xD;  return new bn(Buffer.concat([new Buffer([0, reverse?1:2]), ps, new Buffer([0]), msg], k));&#xD;}&#xD;function nonZero(len, crypto) {&#xD;  var out = new Buffer(len);&#xD;  var i = 0;&#xD;  var cache = randomBytes(len*2);&#xD;  var cur = 0;&#xD;  var num;&#xD;  while (i &lt; len) {&#xD;    if (cur === cache.length) {&#xD;      cache = randomBytes(len*2);&#xD;      cur = 0;&#xD;    }&#xD;    num = cache[cur++];&#xD;    if (num) {&#xD;      out[i++] = num;&#xD;    }&#xD;  }&#xD;  return out;&#xD;}&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 391 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */&#xD;;(function(root) {&#xD;&#xD;	/** Detect free variables */&#xD;	var freeExports = typeof exports == &apos;object&apos; &amp;&amp; exports &amp;&amp;&#xD;		!exports.nodeType &amp;&amp; exports;&#xD;	var freeModule = typeof module == &apos;object&apos; &amp;&amp; module &amp;&amp;&#xD;		!module.nodeType &amp;&amp; module;&#xD;	var freeGlobal = typeof global == &apos;object&apos; &amp;&amp; global;&#xD;	if (&#xD;		freeGlobal.global === freeGlobal ||&#xD;		freeGlobal.window === freeGlobal ||&#xD;		freeGlobal.self === freeGlobal&#xD;	) {&#xD;		root = freeGlobal;&#xD;	}&#xD;&#xD;	/**&#xD;	 * The `punycode` object.&#xD;	 * @name punycode&#xD;	 * @type Object&#xD;	 */&#xD;	var punycode,&#xD;&#xD;	/** Highest positive signed 32-bit float value */&#xD;	maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1&#xD;&#xD;	/** Bootstring parameters */&#xD;	base = 36,&#xD;	tMin = 1,&#xD;	tMax = 26,&#xD;	skew = 38,&#xD;	damp = 700,&#xD;	initialBias = 72,&#xD;	initialN = 128, // 0x80&#xD;	delimiter = &apos;-&apos;, // &apos;\x2D&apos;&#xD;&#xD;	/** Regular expressions */&#xD;	regexPunycode = /^xn--/,&#xD;	regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars&#xD;	regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators&#xD;&#xD;	/** Error messages */&#xD;	errors = {&#xD;		&apos;overflow&apos;: &apos;Overflow: input needs wider integers to process&apos;,&#xD;		&apos;not-basic&apos;: &apos;Illegal input &gt;= 0x80 (not a basic code point)&apos;,&#xD;		&apos;invalid-input&apos;: &apos;Invalid input&apos;&#xD;	},&#xD;&#xD;	/** Convenience shortcuts */&#xD;	baseMinusTMin = base - tMin,&#xD;	floor = Math.floor,&#xD;	stringFromCharCode = String.fromCharCode,&#xD;&#xD;	/** Temporary variable */&#xD;	key;&#xD;&#xD;	/*--------------------------------------------------------------------------*/&#xD;&#xD;	/**&#xD;	 * A generic error utility function.&#xD;	 * @private&#xD;	 * @param {String} type The error type.&#xD;	 * @returns {Error} Throws a `RangeError` with the applicable error message.&#xD;	 */&#xD;	function error(type) {&#xD;		throw new RangeError(errors[type]);&#xD;	}&#xD;&#xD;	/**&#xD;	 * A generic `Array#map` utility function.&#xD;	 * @private&#xD;	 * @param {Array} array The array to iterate over.&#xD;	 * @param {Function} callback The function that gets called for every array&#xD;	 * item.&#xD;	 * @returns {Array} A new array of values returned by the callback function.&#xD;	 */&#xD;	function map(array, fn) {&#xD;		var length = array.length;&#xD;		var result = [];&#xD;		while (length--) {&#xD;			result[length] = fn(array[length]);&#xD;		}&#xD;		return result;&#xD;	}&#xD;&#xD;	/**&#xD;	 * A simple `Array#map`-like wrapper to work with domain name strings or email&#xD;	 * addresses.&#xD;	 * @private&#xD;	 * @param {String} domain The domain name or email address.&#xD;	 * @param {Function} callback The function that gets called for every&#xD;	 * character.&#xD;	 * @returns {Array} A new string of characters returned by the callback&#xD;	 * function.&#xD;	 */&#xD;	function mapDomain(string, fn) {&#xD;		var parts = string.split(&apos;@&apos;);&#xD;		var result = &apos;&apos;;&#xD;		if (parts.length &gt; 1) {&#xD;			// In email addresses, only the domain name should be punycoded. Leave&#xD;			// the local part (i.e. everything up to `@`) intact.&#xD;			result = parts[0] + &apos;@&apos;;&#xD;			string = parts[1];&#xD;		}&#xD;		// Avoid `split(regex)` for IE8 compatibility. See #17.&#xD;		string = string.replace(regexSeparators, &apos;\x2E&apos;);&#xD;		var labels = string.split(&apos;.&apos;);&#xD;		var encoded = map(labels, fn).join(&apos;.&apos;);&#xD;		return result + encoded;&#xD;	}&#xD;&#xD;	/**&#xD;	 * Creates an array containing the numeric code points of each Unicode&#xD;	 * character in the string. While JavaScript uses UCS-2 internally,&#xD;	 * this function will convert a pair of surrogate halves (each of which&#xD;	 * UCS-2 exposes as separate characters) into a single code point,&#xD;	 * matching UTF-16.&#xD;	 * @see `punycode.ucs2.encode`&#xD;	 * @see &lt;https://mathiasbynens.be/notes/javascript-encoding&gt;&#xD;	 * @memberOf punycode.ucs2&#xD;	 * @name decode&#xD;	 * @param {String} string The Unicode input string (UCS-2).&#xD;	 * @returns {Array} The new array of code points.&#xD;	 */&#xD;	function ucs2decode(string) {&#xD;		var output = [],&#xD;		    counter = 0,&#xD;		    length = string.length,&#xD;		    value,&#xD;		    extra;&#xD;		while (counter &lt; length) {&#xD;			value = string.charCodeAt(counter++);&#xD;			if (value &gt;= 0xD800 &amp;&amp; value &lt;= 0xDBFF &amp;&amp; counter &lt; length) {&#xD;				// high surrogate, and there is a next character&#xD;				extra = string.charCodeAt(counter++);&#xD;				if ((extra &amp; 0xFC00) == 0xDC00) { // low surrogate&#xD;					output.push(((value &amp; 0x3FF) &lt;&lt; 10) + (extra &amp; 0x3FF) + 0x10000);&#xD;				} else {&#xD;					// unmatched surrogate; only append this code unit, in case the next&#xD;					// code unit is the high surrogate of a surrogate pair&#xD;					output.push(value);&#xD;					counter--;&#xD;				}&#xD;			} else {&#xD;				output.push(value);&#xD;			}&#xD;		}&#xD;		return output;&#xD;	}&#xD;&#xD;	/**&#xD;	 * Creates a string based on an array of numeric code points.&#xD;	 * @see `punycode.ucs2.decode`&#xD;	 * @memberOf punycode.ucs2&#xD;	 * @name encode&#xD;	 * @param {Array} codePoints The array of numeric code points.&#xD;	 * @returns {String} The new Unicode string (UCS-2).&#xD;	 */&#xD;	function ucs2encode(array) {&#xD;		return map(array, function(value) {&#xD;			var output = &apos;&apos;;&#xD;			if (value &gt; 0xFFFF) {&#xD;				value -= 0x10000;&#xD;				output += stringFromCharCode(value &gt;&gt;&gt; 10 &amp; 0x3FF | 0xD800);&#xD;				value = 0xDC00 | value &amp; 0x3FF;&#xD;			}&#xD;			output += stringFromCharCode(value);&#xD;			return output;&#xD;		}).join(&apos;&apos;);&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a basic code point into a digit/integer.&#xD;	 * @see `digitToBasic()`&#xD;	 * @private&#xD;	 * @param {Number} codePoint The basic numeric code point value.&#xD;	 * @returns {Number} The numeric value of a basic code point (for use in&#xD;	 * representing integers) in the range `0` to `base - 1`, or `base` if&#xD;	 * the code point does not represent a value.&#xD;	 */&#xD;	function basicToDigit(codePoint) {&#xD;		if (codePoint - 48 &lt; 10) {&#xD;			return codePoint - 22;&#xD;		}&#xD;		if (codePoint - 65 &lt; 26) {&#xD;			return codePoint - 65;&#xD;		}&#xD;		if (codePoint - 97 &lt; 26) {&#xD;			return codePoint - 97;&#xD;		}&#xD;		return base;&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a digit/integer into a basic code point.&#xD;	 * @see `basicToDigit()`&#xD;	 * @private&#xD;	 * @param {Number} digit The numeric value of a basic code point.&#xD;	 * @returns {Number} The basic code point whose value (when used for&#xD;	 * representing integers) is `digit`, which needs to be in the range&#xD;	 * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is&#xD;	 * used; else, the lowercase form is used. The behavior is undefined&#xD;	 * if `flag` is non-zero and `digit` has no uppercase form.&#xD;	 */&#xD;	function digitToBasic(digit, flag) {&#xD;		//  0..25 map to ASCII a..z or A..Z&#xD;		// 26..35 map to ASCII 0..9&#xD;		return digit + 22 + 75 * (digit &lt; 26) - ((flag != 0) &lt;&lt; 5);&#xD;	}&#xD;&#xD;	/**&#xD;	 * Bias adaptation function as per section 3.4 of RFC 3492.&#xD;	 * https://tools.ietf.org/html/rfc3492#section-3.4&#xD;	 * @private&#xD;	 */&#xD;	function adapt(delta, numPoints, firstTime) {&#xD;		var k = 0;&#xD;		delta = firstTime ? floor(delta / damp) : delta &gt;&gt; 1;&#xD;		delta += floor(delta / numPoints);&#xD;		for (/* no initialization */; delta &gt; baseMinusTMin * tMax &gt;&gt; 1; k += base) {&#xD;			delta = floor(delta / baseMinusTMin);&#xD;		}&#xD;		return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a Punycode string of ASCII-only symbols to a string of Unicode&#xD;	 * symbols.&#xD;	 * @memberOf punycode&#xD;	 * @param {String} input The Punycode string of ASCII-only symbols.&#xD;	 * @returns {String} The resulting string of Unicode symbols.&#xD;	 */&#xD;	function decode(input) {&#xD;		// Don&apos;t use UCS-2&#xD;		var output = [],&#xD;		    inputLength = input.length,&#xD;		    out,&#xD;		    i = 0,&#xD;		    n = initialN,&#xD;		    bias = initialBias,&#xD;		    basic,&#xD;		    j,&#xD;		    index,&#xD;		    oldi,&#xD;		    w,&#xD;		    k,&#xD;		    digit,&#xD;		    t,&#xD;		    /** Cached calculation results */&#xD;		    baseMinusT;&#xD;&#xD;		// Handle the basic code points: let `basic` be the number of input code&#xD;		// points before the last delimiter, or `0` if there is none, then copy&#xD;		// the first basic code points to the output.&#xD;&#xD;		basic = input.lastIndexOf(delimiter);&#xD;		if (basic &lt; 0) {&#xD;			basic = 0;&#xD;		}&#xD;&#xD;		for (j = 0; j &lt; basic; ++j) {&#xD;			// if it&apos;s not a basic code point&#xD;			if (input.charCodeAt(j) &gt;= 0x80) {&#xD;				error(&apos;not-basic&apos;);&#xD;			}&#xD;			output.push(input.charCodeAt(j));&#xD;		}&#xD;&#xD;		// Main decoding loop: start just after the last delimiter if any basic code&#xD;		// points were copied; start at the beginning otherwise.&#xD;&#xD;		for (index = basic &gt; 0 ? basic + 1 : 0; index &lt; inputLength; /* no final expression */) {&#xD;&#xD;			// `index` is the index of the next character to be consumed.&#xD;			// Decode a generalized variable-length integer into `delta`,&#xD;			// which gets added to `i`. The overflow checking is easier&#xD;			// if we increase `i` as we go, then subtract off its starting&#xD;			// value at the end to obtain `delta`.&#xD;			for (oldi = i, w = 1, k = base; /* no condition */; k += base) {&#xD;&#xD;				if (index &gt;= inputLength) {&#xD;					error(&apos;invalid-input&apos;);&#xD;				}&#xD;&#xD;				digit = basicToDigit(input.charCodeAt(index++));&#xD;&#xD;				if (digit &gt;= base || digit &gt; floor((maxInt - i) / w)) {&#xD;					error(&apos;overflow&apos;);&#xD;				}&#xD;&#xD;				i += digit * w;&#xD;				t = k &lt;= bias ? tMin : (k &gt;= bias + tMax ? tMax : k - bias);&#xD;&#xD;				if (digit &lt; t) {&#xD;					break;&#xD;				}&#xD;&#xD;				baseMinusT = base - t;&#xD;				if (w &gt; floor(maxInt / baseMinusT)) {&#xD;					error(&apos;overflow&apos;);&#xD;				}&#xD;&#xD;				w *= baseMinusT;&#xD;&#xD;			}&#xD;&#xD;			out = output.length + 1;&#xD;			bias = adapt(i - oldi, out, oldi == 0);&#xD;&#xD;			// `i` was supposed to wrap around from `out` to `0`,&#xD;			// incrementing `n` each time, so we&apos;ll fix that now:&#xD;			if (floor(i / out) &gt; maxInt - n) {&#xD;				error(&apos;overflow&apos;);&#xD;			}&#xD;&#xD;			n += floor(i / out);&#xD;			i %= out;&#xD;&#xD;			// Insert `n` at position `i` of the output&#xD;			output.splice(i++, 0, n);&#xD;&#xD;		}&#xD;&#xD;		return ucs2encode(output);&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a string of Unicode symbols (e.g. a domain name label) to a&#xD;	 * Punycode string of ASCII-only symbols.&#xD;	 * @memberOf punycode&#xD;	 * @param {String} input The string of Unicode symbols.&#xD;	 * @returns {String} The resulting Punycode string of ASCII-only symbols.&#xD;	 */&#xD;	function encode(input) {&#xD;		var n,&#xD;		    delta,&#xD;		    handledCPCount,&#xD;		    basicLength,&#xD;		    bias,&#xD;		    j,&#xD;		    m,&#xD;		    q,&#xD;		    k,&#xD;		    t,&#xD;		    currentValue,&#xD;		    output = [],&#xD;		    /** `inputLength` will hold the number of code points in `input`. */&#xD;		    inputLength,&#xD;		    /** Cached calculation results */&#xD;		    handledCPCountPlusOne,&#xD;		    baseMinusT,&#xD;		    qMinusT;&#xD;&#xD;		// Convert the input in UCS-2 to Unicode&#xD;		input = ucs2decode(input);&#xD;&#xD;		// Cache the length&#xD;		inputLength = input.length;&#xD;&#xD;		// Initialize the state&#xD;		n = initialN;&#xD;		delta = 0;&#xD;		bias = initialBias;&#xD;&#xD;		// Handle the basic code points&#xD;		for (j = 0; j &lt; inputLength; ++j) {&#xD;			currentValue = input[j];&#xD;			if (currentValue &lt; 0x80) {&#xD;				output.push(stringFromCharCode(currentValue));&#xD;			}&#xD;		}&#xD;&#xD;		handledCPCount = basicLength = output.length;&#xD;&#xD;		// `handledCPCount` is the number of code points that have been handled;&#xD;		// `basicLength` is the number of basic code points.&#xD;&#xD;		// Finish the basic string - if it is not empty - with a delimiter&#xD;		if (basicLength) {&#xD;			output.push(delimiter);&#xD;		}&#xD;&#xD;		// Main encoding loop:&#xD;		while (handledCPCount &lt; inputLength) {&#xD;&#xD;			// All non-basic code points &lt; n have been handled already. Find the next&#xD;			// larger one:&#xD;			for (m = maxInt, j = 0; j &lt; inputLength; ++j) {&#xD;				currentValue = input[j];&#xD;				if (currentValue &gt;= n &amp;&amp; currentValue &lt; m) {&#xD;					m = currentValue;&#xD;				}&#xD;			}&#xD;&#xD;			// Increase `delta` enough to advance the decoder&apos;s &lt;n,i&gt; state to &lt;m,0&gt;,&#xD;			// but guard against overflow&#xD;			handledCPCountPlusOne = handledCPCount + 1;&#xD;			if (m - n &gt; floor((maxInt - delta) / handledCPCountPlusOne)) {&#xD;				error(&apos;overflow&apos;);&#xD;			}&#xD;&#xD;			delta += (m - n) * handledCPCountPlusOne;&#xD;			n = m;&#xD;&#xD;			for (j = 0; j &lt; inputLength; ++j) {&#xD;				currentValue = input[j];&#xD;&#xD;				if (currentValue &lt; n &amp;&amp; ++delta &gt; maxInt) {&#xD;					error(&apos;overflow&apos;);&#xD;				}&#xD;&#xD;				if (currentValue == n) {&#xD;					// Represent delta as a generalized variable-length integer&#xD;					for (q = delta, k = base; /* no condition */; k += base) {&#xD;						t = k &lt;= bias ? tMin : (k &gt;= bias + tMax ? tMax : k - bias);&#xD;						if (q &lt; t) {&#xD;							break;&#xD;						}&#xD;						qMinusT = q - t;&#xD;						baseMinusT = base - t;&#xD;						output.push(&#xD;							stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))&#xD;						);&#xD;						q = floor(qMinusT / baseMinusT);&#xD;					}&#xD;&#xD;					output.push(stringFromCharCode(digitToBasic(q, 0)));&#xD;					bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);&#xD;					delta = 0;&#xD;					++handledCPCount;&#xD;				}&#xD;			}&#xD;&#xD;			++delta;&#xD;			++n;&#xD;&#xD;		}&#xD;		return output.join(&apos;&apos;);&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a Punycode string representing a domain name or an email address&#xD;	 * to Unicode. Only the Punycoded parts of the input will be converted, i.e.&#xD;	 * it doesn&apos;t matter if you call it on a string that has already been&#xD;	 * converted to Unicode.&#xD;	 * @memberOf punycode&#xD;	 * @param {String} input The Punycoded domain name or email address to&#xD;	 * convert to Unicode.&#xD;	 * @returns {String} The Unicode representation of the given Punycode&#xD;	 * string.&#xD;	 */&#xD;	function toUnicode(input) {&#xD;		return mapDomain(input, function(string) {&#xD;			return regexPunycode.test(string)&#xD;				? decode(string.slice(4).toLowerCase())&#xD;				: string;&#xD;		});&#xD;	}&#xD;&#xD;	/**&#xD;	 * Converts a Unicode string representing a domain name or an email address to&#xD;	 * Punycode. Only the non-ASCII parts of the domain name will be converted,&#xD;	 * i.e. it doesn&apos;t matter if you call it with a domain that&apos;s already in&#xD;	 * ASCII.&#xD;	 * @memberOf punycode&#xD;	 * @param {String} input The domain name or email address to convert, as a&#xD;	 * Unicode string.&#xD;	 * @returns {String} The Punycode representation of the given domain name or&#xD;	 * email address.&#xD;	 */&#xD;	function toASCII(input) {&#xD;		return mapDomain(input, function(string) {&#xD;			return regexNonASCII.test(string)&#xD;				? &apos;xn--&apos; + encode(string)&#xD;				: string;&#xD;		});&#xD;	}&#xD;&#xD;	/*--------------------------------------------------------------------------*/&#xD;&#xD;	/** Define the public API */&#xD;	punycode = {&#xD;		/**&#xD;		 * A string representing the current Punycode.js version number.&#xD;		 * @memberOf punycode&#xD;		 * @type String&#xD;		 */&#xD;		&apos;version&apos;: &apos;1.4.1&apos;,&#xD;		/**&#xD;		 * An object of methods to convert from JavaScript&apos;s internal character&#xD;		 * representation (UCS-2) to Unicode code points, and back.&#xD;		 * @see &lt;https://mathiasbynens.be/notes/javascript-encoding&gt;&#xD;		 * @memberOf punycode&#xD;		 * @type Object&#xD;		 */&#xD;		&apos;ucs2&apos;: {&#xD;			&apos;decode&apos;: ucs2decode,&#xD;			&apos;encode&apos;: ucs2encode&#xD;		},&#xD;		&apos;decode&apos;: decode,&#xD;		&apos;encode&apos;: encode,&#xD;		&apos;toASCII&apos;: toASCII,&#xD;		&apos;toUnicode&apos;: toUnicode&#xD;	};&#xD;&#xD;	/** Expose `punycode` */&#xD;	// Some AMD build optimizers, like r.js, check for specific condition patterns&#xD;	// like the following:&#xD;	if (&#xD;		true&#xD;	) {&#xD;		!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {&#xD;			return punycode;&#xD;		}.call(exports, __webpack_require__, exports, module),&#xD;				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;	} else if (freeExports &amp;&amp; freeModule) {&#xD;		if (module.exports == freeExports) {&#xD;			// in Node.js, io.js, or RingoJS v0.8.0+&#xD;			freeModule.exports = punycode;&#xD;		} else {&#xD;			// in Narwhal or RingoJS v0.7.0-&#xD;			for (key in punycode) {&#xD;				punycode.hasOwnProperty(key) &amp;&amp; (freeExports[key] = punycode[key]);&#xD;			}&#xD;		}&#xD;	} else {&#xD;		// in Rhino or a web browser&#xD;		root.punycode = punycode;&#xD;	}&#xD;&#xD;}(this));&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(75)(module), __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 392 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;&#xD;&#xD;// If obj.hasOwnProperty has been overridden, then calling&#xD;// obj.hasOwnProperty(prop) will break.&#xD;// See: https://github.com/joyent/node/issues/1707&#xD;function hasOwnProperty(obj, prop) {&#xD;  return Object.prototype.hasOwnProperty.call(obj, prop);&#xD;}&#xD;&#xD;module.exports = function(qs, sep, eq, options) {&#xD;  sep = sep || &apos;&amp;&apos;;&#xD;  eq = eq || &apos;=&apos;;&#xD;  var obj = {};&#xD;&#xD;  if (typeof qs !== &apos;string&apos; || qs.length === 0) {&#xD;    return obj;&#xD;  }&#xD;&#xD;  var regexp = /\+/g;&#xD;  qs = qs.split(sep);&#xD;&#xD;  var maxKeys = 1000;&#xD;  if (options &amp;&amp; typeof options.maxKeys === &apos;number&apos;) {&#xD;    maxKeys = options.maxKeys;&#xD;  }&#xD;&#xD;  var len = qs.length;&#xD;  // maxKeys &lt;= 0 means that we should not limit keys count&#xD;  if (maxKeys &gt; 0 &amp;&amp; len &gt; maxKeys) {&#xD;    len = maxKeys;&#xD;  }&#xD;&#xD;  for (var i = 0; i &lt; len; ++i) {&#xD;    var x = qs[i].replace(regexp, &apos;%20&apos;),&#xD;        idx = x.indexOf(eq),&#xD;        kstr, vstr, k, v;&#xD;&#xD;    if (idx &gt;= 0) {&#xD;      kstr = x.substr(0, idx);&#xD;      vstr = x.substr(idx + 1);&#xD;    } else {&#xD;      kstr = x;&#xD;      vstr = &apos;&apos;;&#xD;    }&#xD;&#xD;    k = decodeURIComponent(kstr);&#xD;    v = decodeURIComponent(vstr);&#xD;&#xD;    if (!hasOwnProperty(obj, k)) {&#xD;      obj[k] = v;&#xD;    } else if (isArray(obj[k])) {&#xD;      obj[k].push(v);&#xD;    } else {&#xD;      obj[k] = [obj[k], v];&#xD;    }&#xD;  }&#xD;&#xD;  return obj;&#xD;};&#xD;&#xD;var isArray = Array.isArray || function (xs) {&#xD;  return Object.prototype.toString.call(xs) === &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 393 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;&#xD;&#xD;var stringifyPrimitive = function(v) {&#xD;  switch (typeof v) {&#xD;    case &apos;string&apos;:&#xD;      return v;&#xD;&#xD;    case &apos;boolean&apos;:&#xD;      return v ? &apos;true&apos; : &apos;false&apos;;&#xD;&#xD;    case &apos;number&apos;:&#xD;      return isFinite(v) ? v : &apos;&apos;;&#xD;&#xD;    default:&#xD;      return &apos;&apos;;&#xD;  }&#xD;};&#xD;&#xD;module.exports = function(obj, sep, eq, name) {&#xD;  sep = sep || &apos;&amp;&apos;;&#xD;  eq = eq || &apos;=&apos;;&#xD;  if (obj === null) {&#xD;    obj = undefined;&#xD;  }&#xD;&#xD;  if (typeof obj === &apos;object&apos;) {&#xD;    return map(objectKeys(obj), function(k) {&#xD;      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;&#xD;      if (isArray(obj[k])) {&#xD;        return map(obj[k], function(v) {&#xD;          return ks + encodeURIComponent(stringifyPrimitive(v));&#xD;        }).join(sep);&#xD;      } else {&#xD;        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));&#xD;      }&#xD;    }).join(sep);&#xD;&#xD;  }&#xD;&#xD;  if (!name) return &apos;&apos;;&#xD;  return encodeURIComponent(stringifyPrimitive(name)) + eq +&#xD;         encodeURIComponent(stringifyPrimitive(obj));&#xD;};&#xD;&#xD;var isArray = Array.isArray || function (xs) {&#xD;  return Object.prototype.toString.call(xs) === &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;function map (xs, f) {&#xD;  if (xs.map) return xs.map(f);&#xD;  var res = [];&#xD;  for (var i = 0; i &lt; xs.length; i++) {&#xD;    res.push(f(xs[i], i));&#xD;  }&#xD;  return res;&#xD;}&#xD;&#xD;var objectKeys = Object.keys || function (obj) {&#xD;  var res = [];&#xD;  for (var key in obj) {&#xD;    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);&#xD;  }&#xD;  return res;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 394 */,&#xD;/* 395 */,&#xD;/* 396 */,&#xD;/* 397 */,&#xD;/* 398 */,&#xD;/* 399 */,&#xD;/* 400 */,&#xD;/* 401 */,&#xD;/* 402 */,&#xD;/* 403 */,&#xD;/* 404 */,&#xD;/* 405 */,&#xD;/* 406 */,&#xD;/* 407 */,&#xD;/* 408 */,&#xD;/* 409 */,&#xD;/* 410 */,&#xD;/* 411 */,&#xD;/* 412 */,&#xD;/* 413 */,&#xD;/* 414 */,&#xD;/* 415 */,&#xD;/* 416 */,&#xD;/* 417 */,&#xD;/* 418 */,&#xD;/* 419 */,&#xD;/* 420 */,&#xD;/* 421 */,&#xD;/* 422 */,&#xD;/* 423 */,&#xD;/* 424 */,&#xD;/* 425 */,&#xD;/* 426 */,&#xD;/* 427 */,&#xD;/* 428 */,&#xD;/* 429 */,&#xD;/* 430 */,&#xD;/* 431 */,&#xD;/* 432 */,&#xD;/* 433 */,&#xD;/* 434 */,&#xD;/* 435 */,&#xD;/* 436 */,&#xD;/* 437 */,&#xD;/* 438 */,&#xD;/* 439 */,&#xD;/* 440 */,&#xD;/* 441 */,&#xD;/* 442 */,&#xD;/* 443 */,&#xD;/* 444 */,&#xD;/* 445 */,&#xD;/* 446 */,&#xD;/* 447 */,&#xD;/* 448 */,&#xD;/* 449 */,&#xD;/* 450 */,&#xD;/* 451 */,&#xD;/* 452 */,&#xD;/* 453 */,&#xD;/* 454 */,&#xD;/* 455 */,&#xD;/* 456 */,&#xD;/* 457 */,&#xD;/* 458 */,&#xD;/* 459 */,&#xD;/* 460 */,&#xD;/* 461 */,&#xD;/* 462 */,&#xD;/* 463 */,&#xD;/* 464 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;(function webpackUniversalModuleDefinition(root, factory) {&#xD;	if(true)&#xD;		module.exports = factory(__webpack_require__(0), __webpack_require__(37));&#xD;	else if(typeof define === &apos;function&apos; &amp;&amp; define.amd)&#xD;		define(["react", "react-dom"], factory);&#xD;	else if(typeof exports === &apos;object&apos;)&#xD;		exports["ReactDraggable"] = factory(require("react"), require("react-dom"));&#xD;	else&#xD;		root["ReactDraggable"] = factory(root["React"], root["ReactDOM"]);&#xD;})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_11__) {&#xD;return /******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;/******/&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;/******/&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId])&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;/******/&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			exports: {},&#xD;/******/ 			id: moduleId,&#xD;/******/ 			loaded: false&#xD;/******/ 		};&#xD;/******/&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;/******/&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.loaded = true;&#xD;/******/&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;/******/&#xD;/******/&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;/******/&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;/******/&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;/******/&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(0);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	module.exports = __webpack_require__(1).default;&#xD;	module.exports.DraggableCore = __webpack_require__(17).default;&#xD;&#xD;/***/ },&#xD;/* 1 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	&#xD;	var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;	&#xD;	var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i &amp;&amp; _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n &amp;&amp; _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();&#xD;	&#xD;	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;	&#xD;	var _react = __webpack_require__(2);&#xD;	&#xD;	var _react2 = _interopRequireDefault(_react);&#xD;	&#xD;	var _propTypes = __webpack_require__(3);&#xD;	&#xD;	var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;	&#xD;	var _reactDom = __webpack_require__(11);&#xD;	&#xD;	var _reactDom2 = _interopRequireDefault(_reactDom);&#xD;	&#xD;	var _classnames = __webpack_require__(12);&#xD;	&#xD;	var _classnames2 = _interopRequireDefault(_classnames);&#xD;	&#xD;	var _domFns = __webpack_require__(13);&#xD;	&#xD;	var _positionFns = __webpack_require__(16);&#xD;	&#xD;	var _shims = __webpack_require__(14);&#xD;	&#xD;	var _DraggableCore = __webpack_require__(17);&#xD;	&#xD;	var _DraggableCore2 = _interopRequireDefault(_DraggableCore);&#xD;	&#xD;	var _log = __webpack_require__(19);&#xD;	&#xD;	var _log2 = _interopRequireDefault(_log);&#xD;	&#xD;	function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;	&#xD;	function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;	&#xD;	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;	&#xD;	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;	&#xD;	function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;	// $FlowIgnore&#xD;	&#xD;	&#xD;	/*:: import type {DraggableEventHandler} from &apos;./utils/types&apos;;*/&#xD;	/*:: type DraggableState = {&#xD;	  dragging: boolean,&#xD;	  dragged: boolean,&#xD;	  x: number, y: number,&#xD;	  slackX: number, slackY: number,&#xD;	  isElementSVG: boolean&#xD;	};*/&#xD;	&#xD;	&#xD;	//&#xD;	// Define &lt;Draggable&gt;&#xD;	//&#xD;	&#xD;	/*:: type ConstructorProps = {&#xD;	  position: { x: number, y: number },&#xD;	  defaultPosition: { x: number, y: number }&#xD;	};*/&#xD;	&#xD;	var Draggable = function (_React$Component) {&#xD;	  _inherits(Draggable, _React$Component);&#xD;	&#xD;	  function Draggable(props /*: ConstructorProps*/) {&#xD;	    _classCallCheck(this, Draggable);&#xD;	&#xD;	    var _this = _possibleConstructorReturn(this, (Draggable.__proto__ || Object.getPrototypeOf(Draggable)).call(this, props));&#xD;	&#xD;	    _this.onDragStart = function (e, coreData) {&#xD;	      (0, _log2.default)(&apos;Draggable: onDragStart: %j&apos;, coreData);&#xD;	&#xD;	      // Short-circuit if user&apos;s callback killed it.&#xD;	      var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData));&#xD;	      // Kills start event on core as well, so move handlers are never bound.&#xD;	      if (shouldStart === false) return false;&#xD;	&#xD;	      _this.setState({ dragging: true, dragged: true });&#xD;	    };&#xD;	&#xD;	    _this.onDrag = function (e, coreData) {&#xD;	      if (!_this.state.dragging) return false;&#xD;	      (0, _log2.default)(&apos;Draggable: onDrag: %j&apos;, coreData);&#xD;	&#xD;	      var uiData = (0, _positionFns.createDraggableData)(_this, coreData);&#xD;	&#xD;	      var newState /*: $Shape&lt;DraggableState&gt;*/ = {&#xD;	        x: uiData.x,&#xD;	        y: uiData.y&#xD;	      };&#xD;	&#xD;	      // Keep within bounds.&#xD;	      if (_this.props.bounds) {&#xD;	        // Save original x and y.&#xD;	        var _x = newState.x,&#xD;	            _y = newState.y;&#xD;	&#xD;	        // Add slack to the values used to calculate bound position. This will ensure that if&#xD;	        // we start removing slack, the element won&apos;t react to it right away until it&apos;s been&#xD;	        // completely removed.&#xD;	&#xD;	        newState.x += _this.state.slackX;&#xD;	        newState.y += _this.state.slackY;&#xD;	&#xD;	        // Get bound position. This will ceil/floor the x and y within the boundaries.&#xD;	        // $FlowBug&#xD;	&#xD;	        // Recalculate slack by noting how much was shaved by the boundPosition handler.&#xD;	        var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y);&#xD;	&#xD;	        var _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2);&#xD;	&#xD;	        newState.x = _getBoundPosition2[0];&#xD;	        newState.y = _getBoundPosition2[1];&#xD;	        newState.slackX = _this.state.slackX + (_x - newState.x);&#xD;	        newState.slackY = _this.state.slackY + (_y - newState.y);&#xD;	&#xD;	        // Update the event we fire to reflect what really happened after bounds took effect.&#xD;	        uiData.x = _x;&#xD;	        uiData.y = _y;&#xD;	        uiData.deltaX = newState.x - _this.state.x;&#xD;	        uiData.deltaY = newState.y - _this.state.y;&#xD;	      }&#xD;	&#xD;	      // Short-circuit if user&apos;s callback killed it.&#xD;	      var shouldUpdate = _this.props.onDrag(e, uiData);&#xD;	      if (shouldUpdate === false) return false;&#xD;	&#xD;	      _this.setState(newState);&#xD;	    };&#xD;	&#xD;	    _this.onDragStop = function (e, coreData) {&#xD;	      if (!_this.state.dragging) return false;&#xD;	&#xD;	      // Short-circuit if user&apos;s callback killed it.&#xD;	      var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData));&#xD;	      if (shouldStop === false) return false;&#xD;	&#xD;	      (0, _log2.default)(&apos;Draggable: onDragStop: %j&apos;, coreData);&#xD;	&#xD;	      var newState /*: $Shape&lt;DraggableState&gt;*/ = {&#xD;	        dragging: false,&#xD;	        slackX: 0,&#xD;	        slackY: 0&#xD;	      };&#xD;	&#xD;	      // If this is a controlled component, the result of this operation will be to&#xD;	      // revert back to the old position. We expect a handler on `onDragStop`, at the least.&#xD;	      var controlled = Boolean(_this.props.position);&#xD;	      if (controlled) {&#xD;	        var _this$props$position = _this.props.position,&#xD;	            _x2 = _this$props$position.x,&#xD;	            _y2 = _this$props$position.y;&#xD;	&#xD;	        newState.x = _x2;&#xD;	        newState.y = _y2;&#xD;	      }&#xD;	&#xD;	      _this.setState(newState);&#xD;	    };&#xD;	&#xD;	    _this.state = {&#xD;	      // Whether or not we are currently dragging.&#xD;	      dragging: false,&#xD;	&#xD;	      // Whether or not we have been dragged before.&#xD;	      dragged: false,&#xD;	&#xD;	      // Current transform x and y.&#xD;	      x: props.position ? props.position.x : props.defaultPosition.x,&#xD;	      y: props.position ? props.position.y : props.defaultPosition.y,&#xD;	&#xD;	      // Used for compensating for out-of-bounds drags&#xD;	      slackX: 0, slackY: 0,&#xD;	&#xD;	      // Can only determine if SVG after mounting&#xD;	      isElementSVG: false&#xD;	    };&#xD;	    return _this;&#xD;	  }&#xD;	&#xD;	  _createClass(Draggable, [{&#xD;	    key: &apos;componentWillMount&apos;,&#xD;	    value: function componentWillMount() {&#xD;	      if (this.props.position &amp;&amp; !(this.props.onDrag || this.props.onStop)) {&#xD;	        // eslint-disable-next-line&#xD;	        console.warn(&apos;A `position` was applied to this &lt;Draggable&gt;, without drag handlers. This will make this &apos; + &apos;component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the &apos; + &apos;`position` of this element.&apos;);&#xD;	      }&#xD;	    }&#xD;	  }, {&#xD;	    key: &apos;componentDidMount&apos;,&#xD;	    value: function componentDidMount() {&#xD;	      // Check to see if the element passed is an instanceof SVGElement&#xD;	      if (typeof SVGElement !== &apos;undefined&apos; &amp;&amp; _reactDom2.default.findDOMNode(this) instanceof SVGElement) {&#xD;	        this.setState({ isElementSVG: true });&#xD;	      }&#xD;	    }&#xD;	  }, {&#xD;	    key: &apos;componentWillReceiveProps&apos;,&#xD;	    value: function componentWillReceiveProps(nextProps /*: Object*/) {&#xD;	      // Set x/y if position has changed&#xD;	      if (nextProps.position &amp;&amp; (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) {&#xD;	        this.setState({ x: nextProps.position.x, y: nextProps.position.y });&#xD;	      }&#xD;	    }&#xD;	  }, {&#xD;	    key: &apos;componentWillUnmount&apos;,&#xD;	    value: function componentWillUnmount() {&#xD;	      this.setState({ dragging: false }); // prevents invariant if unmounted while dragging&#xD;	    }&#xD;	  }, {&#xD;	    key: &apos;render&apos;,&#xD;	    value: function render() /*: React.Element&lt;any&gt;*/ {&#xD;	      var _classNames;&#xD;	&#xD;	      var style = {},&#xD;	          svgTransform = null;&#xD;	&#xD;	      // If this is controlled, we don&apos;t want to move it - unless it&apos;s dragging.&#xD;	      var controlled = Boolean(this.props.position);&#xD;	      var draggable = !controlled || this.state.dragging;&#xD;	&#xD;	      var position = this.props.position || this.props.defaultPosition;&#xD;	      var transformOpts = {&#xD;	        // Set left if horizontal drag is enabled&#xD;	        x: (0, _positionFns.canDragX)(this) &amp;&amp; draggable ? this.state.x : position.x,&#xD;	&#xD;	        // Set top if vertical drag is enabled&#xD;	        y: (0, _positionFns.canDragY)(this) &amp;&amp; draggable ? this.state.y : position.y&#xD;	      };&#xD;	&#xD;	      // If this element was SVG, we use the `transform` attribute.&#xD;	      if (this.state.isElementSVG) {&#xD;	        svgTransform = (0, _domFns.createSVGTransform)(transformOpts);&#xD;	      } else {&#xD;	        // Add a CSS transform to move the element around. This allows us to move the element around&#xD;	        // without worrying about whether or not it is relatively or absolutely positioned.&#xD;	        // If the item you are dragging already has a transform set, wrap it in a &lt;span&gt; so &lt;Draggable&gt;&#xD;	        // has a clean slate.&#xD;	        style = (0, _domFns.createCSSTransform)(transformOpts);&#xD;	      }&#xD;	&#xD;	      var _props = this.props,&#xD;	          defaultClassName = _props.defaultClassName,&#xD;	          defaultClassNameDragging = _props.defaultClassNameDragging,&#xD;	          defaultClassNameDragged = _props.defaultClassNameDragged;&#xD;	&#xD;	      // Mark with class while dragging&#xD;	&#xD;	      var className = (0, _classnames2.default)(this.props.children.props.className || &apos;&apos;, defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames));&#xD;	&#xD;	      // Reuse the child provided&#xD;	      // This makes it flexible to use whatever element is wanted (div, ul, etc)&#xD;	      return _react2.default.createElement(&#xD;	        _DraggableCore2.default,&#xD;	        _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }),&#xD;	        _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {&#xD;	          className: className,&#xD;	          style: _extends({}, this.props.children.props.style, style),&#xD;	          transform: svgTransform&#xD;	        })&#xD;	      );&#xD;	    }&#xD;	  }]);&#xD;	&#xD;	  return Draggable;&#xD;	}(_react2.default.Component);&#xD;	&#xD;	Draggable.displayName = &apos;Draggable&apos;;&#xD;	Draggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, {&#xD;	&#xD;	  /**&#xD;	   * `axis` determines which axis the draggable can move.&#xD;	   *&#xD;	   *  Note that all callbacks will still return data as normal. This only&#xD;	   *  controls flushing to the DOM.&#xD;	   *&#xD;	   * &apos;both&apos; allows movement horizontally and vertically.&#xD;	   * &apos;x&apos; limits movement to horizontal axis.&#xD;	   * &apos;y&apos; limits movement to vertical axis.&#xD;	   * &apos;none&apos; limits all movement.&#xD;	   *&#xD;	   * Defaults to &apos;both&apos;.&#xD;	   */&#xD;	  axis: _propTypes2.default.oneOf([&apos;both&apos;, &apos;x&apos;, &apos;y&apos;, &apos;none&apos;]),&#xD;	&#xD;	  /**&#xD;	   * `bounds` determines the range of movement available to the element.&#xD;	   * Available values are:&#xD;	   *&#xD;	   * &apos;parent&apos; restricts movement within the Draggable&apos;s parent node.&#xD;	   *&#xD;	   * Alternatively, pass an object with the following properties, all of which are optional:&#xD;	   *&#xD;	   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}&#xD;	   *&#xD;	   * All values are in px.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   * ```jsx&#xD;	   *   let App = React.createClass({&#xD;	   *       render: function () {&#xD;	   *         return (&#xD;	   *            &lt;Draggable bounds={{right: 300, bottom: 300}}&gt;&#xD;	   *              &lt;div&gt;Content&lt;/div&gt;&#xD;	   *           &lt;/Draggable&gt;&#xD;	   *         );&#xD;	   *       }&#xD;	   *   });&#xD;	   * ```&#xD;	   */&#xD;	  bounds: _propTypes2.default.oneOfType([_propTypes2.default.shape({&#xD;	    left: _propTypes2.default.number,&#xD;	    right: _propTypes2.default.number,&#xD;	    top: _propTypes2.default.number,&#xD;	    bottom: _propTypes2.default.number&#xD;	  }), _propTypes2.default.string, _propTypes2.default.oneOf([false])]),&#xD;	&#xD;	  defaultClassName: _propTypes2.default.string,&#xD;	  defaultClassNameDragging: _propTypes2.default.string,&#xD;	  defaultClassNameDragged: _propTypes2.default.string,&#xD;	&#xD;	  /**&#xD;	   * `defaultPosition` specifies the x and y that the dragged item should start at&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   * ```jsx&#xD;	   *      let App = React.createClass({&#xD;	   *          render: function () {&#xD;	   *              return (&#xD;	   *                  &lt;Draggable defaultPosition={{x: 25, y: 25}}&gt;&#xD;	   *                      &lt;div&gt;I start with transformX: 25px and transformY: 25px;&lt;/div&gt;&#xD;	   *                  &lt;/Draggable&gt;&#xD;	   *              );&#xD;	   *          }&#xD;	   *      });&#xD;	   * ```&#xD;	   */&#xD;	  defaultPosition: _propTypes2.default.shape({&#xD;	    x: _propTypes2.default.number,&#xD;	    y: _propTypes2.default.number&#xD;	  }),&#xD;	&#xD;	  /**&#xD;	   * `position`, if present, defines the current position of the element.&#xD;	   *&#xD;	   *  This is similar to how form elements in React work - if no `position` is supplied, the component&#xD;	   *  is uncontrolled.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   * ```jsx&#xD;	   *      let App = React.createClass({&#xD;	   *          render: function () {&#xD;	   *              return (&#xD;	   *                  &lt;Draggable position={{x: 25, y: 25}}&gt;&#xD;	   *                      &lt;div&gt;I start with transformX: 25px and transformY: 25px;&lt;/div&gt;&#xD;	   *                  &lt;/Draggable&gt;&#xD;	   *              );&#xD;	   *          }&#xD;	   *      });&#xD;	   * ```&#xD;	   */&#xD;	  position: _propTypes2.default.shape({&#xD;	    x: _propTypes2.default.number,&#xD;	    y: _propTypes2.default.number&#xD;	  }),&#xD;	&#xD;	  /**&#xD;	   * These properties should be defined on the child, not here.&#xD;	   */&#xD;	  className: _shims.dontSetMe,&#xD;	  style: _shims.dontSetMe,&#xD;	  transform: _shims.dontSetMe&#xD;	});&#xD;	Draggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, {&#xD;	  axis: &apos;both&apos;,&#xD;	  bounds: false,&#xD;	  defaultClassName: &apos;react-draggable&apos;,&#xD;	  defaultClassNameDragging: &apos;react-draggable-dragging&apos;,&#xD;	  defaultClassNameDragged: &apos;react-draggable-dragged&apos;,&#xD;	  defaultPosition: { x: 0, y: 0 },&#xD;	  position: null&#xD;	});&#xD;	exports.default = Draggable;&#xD;&#xD;/***/ },&#xD;/* 2 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	module.exports = __WEBPACK_EXTERNAL_MODULE_2__;&#xD;&#xD;/***/ },&#xD;/* 3 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 */&#xD;	&#xD;	if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	  var REACT_ELEMENT_TYPE = (typeof Symbol === &apos;function&apos; &amp;&amp;&#xD;	    Symbol.for &amp;&amp;&#xD;	    Symbol.for(&apos;react.element&apos;)) ||&#xD;	    0xeac7;&#xD;	&#xD;	  var isValidElement = function(object) {&#xD;	    return typeof object === &apos;object&apos; &amp;&amp;&#xD;	      object !== null &amp;&amp;&#xD;	      object.$$typeof === REACT_ELEMENT_TYPE;&#xD;	  };&#xD;	&#xD;	  // By explicitly using `prop-types` you are opting into new development behavior.&#xD;	  // http://fb.me/prop-types-in-prod&#xD;	  var throwOnDirectAccess = true;&#xD;	  module.exports = __webpack_require__(4)(isValidElement, throwOnDirectAccess);&#xD;	} else {&#xD;	  // By explicitly using `prop-types` you are opting into new production behavior.&#xD;	  // http://fb.me/prop-types-in-prod&#xD;	  module.exports = __webpack_require__(10)();&#xD;	}&#xD;&#xD;&#xD;/***/ },&#xD;/* 4 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	var emptyFunction = __webpack_require__(5);&#xD;	var invariant = __webpack_require__(6);&#xD;	var warning = __webpack_require__(7);&#xD;	&#xD;	var ReactPropTypesSecret = __webpack_require__(8);&#xD;	var checkPropTypes = __webpack_require__(9);&#xD;	&#xD;	module.exports = function(isValidElement, throwOnDirectAccess) {&#xD;	  /* global Symbol */&#xD;	  var ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;&#xD;	  var FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.&#xD;	&#xD;	  /**&#xD;	   * Returns the iterator method function contained on the iterable object.&#xD;	   *&#xD;	   * Be sure to invoke the function with the iterable as context:&#xD;	   *&#xD;	   *     var iteratorFn = getIteratorFn(myIterable);&#xD;	   *     if (iteratorFn) {&#xD;	   *       var iterator = iteratorFn.call(myIterable);&#xD;	   *       ...&#xD;	   *     }&#xD;	   *&#xD;	   * @param {?object} maybeIterable&#xD;	   * @return {?function}&#xD;	   */&#xD;	  function getIteratorFn(maybeIterable) {&#xD;	    var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);&#xD;	    if (typeof iteratorFn === &apos;function&apos;) {&#xD;	      return iteratorFn;&#xD;	    }&#xD;	  }&#xD;	&#xD;	  /**&#xD;	   * Collection of methods that allow declaration and validation of props that are&#xD;	   * supplied to React components. Example usage:&#xD;	   *&#xD;	   *   var Props = require(&apos;ReactPropTypes&apos;);&#xD;	   *   var MyArticle = React.createClass({&#xD;	   *     propTypes: {&#xD;	   *       // An optional string prop named "description".&#xD;	   *       description: Props.string,&#xD;	   *&#xD;	   *       // A required enum prop named "category".&#xD;	   *       category: Props.oneOf([&apos;News&apos;,&apos;Photos&apos;]).isRequired,&#xD;	   *&#xD;	   *       // A prop named "dialog" that requires an instance of Dialog.&#xD;	   *       dialog: Props.instanceOf(Dialog).isRequired&#xD;	   *     },&#xD;	   *     render: function() { ... }&#xD;	   *   });&#xD;	   *&#xD;	   * A more formal specification of how these methods are used:&#xD;	   *&#xD;	   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)&#xD;	   *   decl := ReactPropTypes.{type}(.isRequired)?&#xD;	   *&#xD;	   * Each and every declaration produces a function with the same signature. This&#xD;	   * allows the creation of custom validation functions. For example:&#xD;	   *&#xD;	   *  var MyLink = React.createClass({&#xD;	   *    propTypes: {&#xD;	   *      // An optional string or URI prop named "href".&#xD;	   *      href: function(props, propName, componentName) {&#xD;	   *        var propValue = props[propName];&#xD;	   *        if (propValue != null &amp;&amp; typeof propValue !== &apos;string&apos; &amp;&amp;&#xD;	   *            !(propValue instanceof URI)) {&#xD;	   *          return new Error(&#xD;	   *            &apos;Expected a string or an URI for &apos; + propName + &apos; in &apos; +&#xD;	   *            componentName&#xD;	   *          );&#xD;	   *        }&#xD;	   *      }&#xD;	   *    },&#xD;	   *    render: function() {...}&#xD;	   *  });&#xD;	   *&#xD;	   * @internal&#xD;	   */&#xD;	&#xD;	  var ANONYMOUS = &apos;&lt;&lt;anonymous&gt;&gt;&apos;;&#xD;	&#xD;	  // Important!&#xD;	  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.&#xD;	  var ReactPropTypes = {&#xD;	    array: createPrimitiveTypeChecker(&apos;array&apos;),&#xD;	    bool: createPrimitiveTypeChecker(&apos;boolean&apos;),&#xD;	    func: createPrimitiveTypeChecker(&apos;function&apos;),&#xD;	    number: createPrimitiveTypeChecker(&apos;number&apos;),&#xD;	    object: createPrimitiveTypeChecker(&apos;object&apos;),&#xD;	    string: createPrimitiveTypeChecker(&apos;string&apos;),&#xD;	    symbol: createPrimitiveTypeChecker(&apos;symbol&apos;),&#xD;	&#xD;	    any: createAnyTypeChecker(),&#xD;	    arrayOf: createArrayOfTypeChecker,&#xD;	    element: createElementTypeChecker(),&#xD;	    instanceOf: createInstanceTypeChecker,&#xD;	    node: createNodeChecker(),&#xD;	    objectOf: createObjectOfTypeChecker,&#xD;	    oneOf: createEnumTypeChecker,&#xD;	    oneOfType: createUnionTypeChecker,&#xD;	    shape: createShapeTypeChecker&#xD;	  };&#xD;	&#xD;	  /**&#xD;	   * inlined Object.is polyfill to avoid requiring consumers ship their own&#xD;	   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is&#xD;	   */&#xD;	  /*eslint-disable no-self-compare*/&#xD;	  function is(x, y) {&#xD;	    // SameValue algorithm&#xD;	    if (x === y) {&#xD;	      // Steps 1-5, 7-10&#xD;	      // Steps 6.b-6.e: +0 != -0&#xD;	      return x !== 0 || 1 / x === 1 / y;&#xD;	    } else {&#xD;	      // Step 6.a: NaN == NaN&#xD;	      return x !== x &amp;&amp; y !== y;&#xD;	    }&#xD;	  }&#xD;	  /*eslint-enable no-self-compare*/&#xD;	&#xD;	  /**&#xD;	   * We use an Error-like object for backward compatibility as people may call&#xD;	   * PropTypes directly and inspect their output. However, we don&apos;t use real&#xD;	   * Errors anymore. We don&apos;t inspect their stack anyway, and creating them&#xD;	   * is prohibitively expensive if they are created too often, such as what&#xD;	   * happens in oneOfType() for any type before the one that matched.&#xD;	   */&#xD;	  function PropTypeError(message) {&#xD;	    this.message = message;&#xD;	    this.stack = &apos;&apos;;&#xD;	  }&#xD;	  // Make `instanceof Error` still work for returned errors.&#xD;	  PropTypeError.prototype = Error.prototype;&#xD;	&#xD;	  function createChainableTypeChecker(validate) {&#xD;	    if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	      var manualPropTypeCallCache = {};&#xD;	      var manualPropTypeWarningCount = 0;&#xD;	    }&#xD;	    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {&#xD;	      componentName = componentName || ANONYMOUS;&#xD;	      propFullName = propFullName || propName;&#xD;	&#xD;	      if (secret !== ReactPropTypesSecret) {&#xD;	        if (throwOnDirectAccess) {&#xD;	          // New behavior only for users of `prop-types` package&#xD;	          invariant(&#xD;	            false,&#xD;	            &apos;Calling PropTypes validators directly is not supported by the `prop-types` package. &apos; +&#xD;	            &apos;Use `PropTypes.checkPropTypes()` to call them. &apos; +&#xD;	            &apos;Read more at http://fb.me/use-check-prop-types&apos;&#xD;	          );&#xD;	        } else if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos; &amp;&amp; typeof console !== &apos;undefined&apos;) {&#xD;	          // Old behavior for people using React.PropTypes&#xD;	          var cacheKey = componentName + &apos;:&apos; + propName;&#xD;	          if (&#xD;	            !manualPropTypeCallCache[cacheKey] &amp;&amp;&#xD;	            // Avoid spamming the console because they are often not actionable except for lib authors&#xD;	            manualPropTypeWarningCount &lt; 3&#xD;	          ) {&#xD;	            warning(&#xD;	              false,&#xD;	              &apos;You are manually calling a React.PropTypes validation &apos; +&#xD;	              &apos;function for the `%s` prop on `%s`. This is deprecated &apos; +&#xD;	              &apos;and will throw in the standalone `prop-types` package. &apos; +&#xD;	              &apos;You may be seeing this warning due to a third-party PropTypes &apos; +&#xD;	              &apos;library. See https://fb.me/react-warning-dont-call-proptypes &apos; + &apos;for details.&apos;,&#xD;	              propFullName,&#xD;	              componentName&#xD;	            );&#xD;	            manualPropTypeCallCache[cacheKey] = true;&#xD;	            manualPropTypeWarningCount++;&#xD;	          }&#xD;	        }&#xD;	      }&#xD;	      if (props[propName] == null) {&#xD;	        if (isRequired) {&#xD;	          if (props[propName] === null) {&#xD;	            return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required &apos; + (&apos;in `&apos; + componentName + &apos;`, but its value is `null`.&apos;));&#xD;	          }&#xD;	          return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required in &apos; + (&apos;`&apos; + componentName + &apos;`, but its value is `undefined`.&apos;));&#xD;	        }&#xD;	        return null;&#xD;	      } else {&#xD;	        return validate(props, propName, componentName, location, propFullName);&#xD;	      }&#xD;	    }&#xD;	&#xD;	    var chainedCheckType = checkType.bind(null, false);&#xD;	    chainedCheckType.isRequired = checkType.bind(null, true);&#xD;	&#xD;	    return chainedCheckType;&#xD;	  }&#xD;	&#xD;	  function createPrimitiveTypeChecker(expectedType) {&#xD;	    function validate(props, propName, componentName, location, propFullName, secret) {&#xD;	      var propValue = props[propName];&#xD;	      var propType = getPropType(propValue);&#xD;	      if (propType !== expectedType) {&#xD;	        // `propValue` being instance of, say, date/regexp, pass the &apos;object&apos;&#xD;	        // check, but we can offer a more precise error message here rather than&#xD;	        // &apos;of type `object`&apos;.&#xD;	        var preciseType = getPreciseType(propValue);&#xD;	&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + preciseType + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;`&apos; + expectedType + &apos;`.&apos;));&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createAnyTypeChecker() {&#xD;	    return createChainableTypeChecker(emptyFunction.thatReturnsNull);&#xD;	  }&#xD;	&#xD;	  function createArrayOfTypeChecker(typeChecker) {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      if (typeof typeChecker !== &apos;function&apos;) {&#xD;	        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside arrayOf.&apos;);&#xD;	      }&#xD;	      var propValue = props[propName];&#xD;	      if (!Array.isArray(propValue)) {&#xD;	        var propType = getPropType(propValue);&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an array.&apos;));&#xD;	      }&#xD;	      for (var i = 0; i &lt; propValue.length; i++) {&#xD;	        var error = typeChecker(propValue, i, componentName, location, propFullName + &apos;[&apos; + i + &apos;]&apos;, ReactPropTypesSecret);&#xD;	        if (error instanceof Error) {&#xD;	          return error;&#xD;	        }&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createElementTypeChecker() {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      var propValue = props[propName];&#xD;	      if (!isValidElement(propValue)) {&#xD;	        var propType = getPropType(propValue);&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected a single ReactElement.&apos;));&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createInstanceTypeChecker(expectedClass) {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      if (!(props[propName] instanceof expectedClass)) {&#xD;	        var expectedClassName = expectedClass.name || ANONYMOUS;&#xD;	        var actualClassName = getClassName(props[propName]);&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + actualClassName + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;instance of `&apos; + expectedClassName + &apos;`.&apos;));&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createEnumTypeChecker(expectedValues) {&#xD;	    if (!Array.isArray(expectedValues)) {&#xD;	      ({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid argument supplied to oneOf, expected an instance of array.&apos;) : void 0;&#xD;	      return emptyFunction.thatReturnsNull;&#xD;	    }&#xD;	&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      var propValue = props[propName];&#xD;	      for (var i = 0; i &lt; expectedValues.length; i++) {&#xD;	        if (is(propValue, expectedValues[i])) {&#xD;	          return null;&#xD;	        }&#xD;	      }&#xD;	&#xD;	      var valuesString = JSON.stringify(expectedValues);&#xD;	      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of value `&apos; + propValue + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected one of &apos; + valuesString + &apos;.&apos;));&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createObjectOfTypeChecker(typeChecker) {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      if (typeof typeChecker !== &apos;function&apos;) {&#xD;	        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside objectOf.&apos;);&#xD;	      }&#xD;	      var propValue = props[propName];&#xD;	      var propType = getPropType(propValue);&#xD;	      if (propType !== &apos;object&apos;) {&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an object.&apos;));&#xD;	      }&#xD;	      for (var key in propValue) {&#xD;	        if (propValue.hasOwnProperty(key)) {&#xD;	          var error = typeChecker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);&#xD;	          if (error instanceof Error) {&#xD;	            return error;&#xD;	          }&#xD;	        }&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createUnionTypeChecker(arrayOfTypeCheckers) {&#xD;	    if (!Array.isArray(arrayOfTypeCheckers)) {&#xD;	      ({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid argument supplied to oneOfType, expected an instance of array.&apos;) : void 0;&#xD;	      return emptyFunction.thatReturnsNull;&#xD;	    }&#xD;	&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      for (var i = 0; i &lt; arrayOfTypeCheckers.length; i++) {&#xD;	        var checker = arrayOfTypeCheckers[i];&#xD;	        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {&#xD;	          return null;&#xD;	        }&#xD;	      }&#xD;	&#xD;	      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`.&apos;));&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createNodeChecker() {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      if (!isNode(props[propName])) {&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`, expected a ReactNode.&apos;));&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function createShapeTypeChecker(shapeTypes) {&#xD;	    function validate(props, propName, componentName, location, propFullName) {&#xD;	      var propValue = props[propName];&#xD;	      var propType = getPropType(propValue);&#xD;	      if (propType !== &apos;object&apos;) {&#xD;	        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type `&apos; + propType + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected `object`.&apos;));&#xD;	      }&#xD;	      for (var key in shapeTypes) {&#xD;	        var checker = shapeTypes[key];&#xD;	        if (!checker) {&#xD;	          continue;&#xD;	        }&#xD;	        var error = checker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);&#xD;	        if (error) {&#xD;	          return error;&#xD;	        }&#xD;	      }&#xD;	      return null;&#xD;	    }&#xD;	    return createChainableTypeChecker(validate);&#xD;	  }&#xD;	&#xD;	  function isNode(propValue) {&#xD;	    switch (typeof propValue) {&#xD;	      case &apos;number&apos;:&#xD;	      case &apos;string&apos;:&#xD;	      case &apos;undefined&apos;:&#xD;	        return true;&#xD;	      case &apos;boolean&apos;:&#xD;	        return !propValue;&#xD;	      case &apos;object&apos;:&#xD;	        if (Array.isArray(propValue)) {&#xD;	          return propValue.every(isNode);&#xD;	        }&#xD;	        if (propValue === null || isValidElement(propValue)) {&#xD;	          return true;&#xD;	        }&#xD;	&#xD;	        var iteratorFn = getIteratorFn(propValue);&#xD;	        if (iteratorFn) {&#xD;	          var iterator = iteratorFn.call(propValue);&#xD;	          var step;&#xD;	          if (iteratorFn !== propValue.entries) {&#xD;	            while (!(step = iterator.next()).done) {&#xD;	              if (!isNode(step.value)) {&#xD;	                return false;&#xD;	              }&#xD;	            }&#xD;	          } else {&#xD;	            // Iterator will provide entry [k,v] tuples rather than values.&#xD;	            while (!(step = iterator.next()).done) {&#xD;	              var entry = step.value;&#xD;	              if (entry) {&#xD;	                if (!isNode(entry[1])) {&#xD;	                  return false;&#xD;	                }&#xD;	              }&#xD;	            }&#xD;	          }&#xD;	        } else {&#xD;	          return false;&#xD;	        }&#xD;	&#xD;	        return true;&#xD;	      default:&#xD;	        return false;&#xD;	    }&#xD;	  }&#xD;	&#xD;	  function isSymbol(propType, propValue) {&#xD;	    // Native Symbol.&#xD;	    if (propType === &apos;symbol&apos;) {&#xD;	      return true;&#xD;	    }&#xD;	&#xD;	    // 19.4.3.5 Symbol.prototype[@@toStringTag] === &apos;Symbol&apos;&#xD;	    if (propValue[&apos;@@toStringTag&apos;] === &apos;Symbol&apos;) {&#xD;	      return true;&#xD;	    }&#xD;	&#xD;	    // Fallback for non-spec compliant Symbols which are polyfilled.&#xD;	    if (typeof Symbol === &apos;function&apos; &amp;&amp; propValue instanceof Symbol) {&#xD;	      return true;&#xD;	    }&#xD;	&#xD;	    return false;&#xD;	  }&#xD;	&#xD;	  // Equivalent of `typeof` but with special handling for array and regexp.&#xD;	  function getPropType(propValue) {&#xD;	    var propType = typeof propValue;&#xD;	    if (Array.isArray(propValue)) {&#xD;	      return &apos;array&apos;;&#xD;	    }&#xD;	    if (propValue instanceof RegExp) {&#xD;	      // Old webkits (at least until Android 4.0) return &apos;function&apos; rather than&#xD;	      // &apos;object&apos; for typeof a RegExp. We&apos;ll normalize this here so that /bla/&#xD;	      // passes PropTypes.object.&#xD;	      return &apos;object&apos;;&#xD;	    }&#xD;	    if (isSymbol(propType, propValue)) {&#xD;	      return &apos;symbol&apos;;&#xD;	    }&#xD;	    return propType;&#xD;	  }&#xD;	&#xD;	  // This handles more types than `getPropType`. Only used for error messages.&#xD;	  // See `createPrimitiveTypeChecker`.&#xD;	  function getPreciseType(propValue) {&#xD;	    var propType = getPropType(propValue);&#xD;	    if (propType === &apos;object&apos;) {&#xD;	      if (propValue instanceof Date) {&#xD;	        return &apos;date&apos;;&#xD;	      } else if (propValue instanceof RegExp) {&#xD;	        return &apos;regexp&apos;;&#xD;	      }&#xD;	    }&#xD;	    return propType;&#xD;	  }&#xD;	&#xD;	  // Returns class name of the object, if any.&#xD;	  function getClassName(propValue) {&#xD;	    if (!propValue.constructor || !propValue.constructor.name) {&#xD;	      return ANONYMOUS;&#xD;	    }&#xD;	    return propValue.constructor.name;&#xD;	  }&#xD;	&#xD;	  ReactPropTypes.checkPropTypes = checkPropTypes;&#xD;	  ReactPropTypes.PropTypes = ReactPropTypes;&#xD;	&#xD;	  return ReactPropTypes;&#xD;	};&#xD;&#xD;&#xD;/***/ },&#xD;/* 5 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	"use strict";&#xD;	&#xD;	/**&#xD;	 * Copyright (c) 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 *&#xD;	 * &#xD;	 */&#xD;	&#xD;	function makeEmptyFunction(arg) {&#xD;	  return function () {&#xD;	    return arg;&#xD;	  };&#xD;	}&#xD;	&#xD;	/**&#xD;	 * This function accepts and discards inputs; it has no side effects. This is&#xD;	 * primarily useful idiomatically for overridable function endpoints which&#xD;	 * always need to be callable, since JS lacks a null-call idiom ala Cocoa.&#xD;	 */&#xD;	var emptyFunction = function emptyFunction() {};&#xD;	&#xD;	emptyFunction.thatReturns = makeEmptyFunction;&#xD;	emptyFunction.thatReturnsFalse = makeEmptyFunction(false);&#xD;	emptyFunction.thatReturnsTrue = makeEmptyFunction(true);&#xD;	emptyFunction.thatReturnsNull = makeEmptyFunction(null);&#xD;	emptyFunction.thatReturnsThis = function () {&#xD;	  return this;&#xD;	};&#xD;	emptyFunction.thatReturnsArgument = function (arg) {&#xD;	  return arg;&#xD;	};&#xD;	&#xD;	module.exports = emptyFunction;&#xD;&#xD;/***/ },&#xD;/* 6 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright (c) 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 *&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	/**&#xD;	 * Use invariant() to assert state which your program assumes to be true.&#xD;	 *&#xD;	 * Provide sprintf-style format (only %s is supported) and arguments&#xD;	 * to provide information about what broke and what you were&#xD;	 * expecting.&#xD;	 *&#xD;	 * The invariant message will be stripped in production, but the invariant&#xD;	 * will remain to ensure logic does not differ in production.&#xD;	 */&#xD;	&#xD;	var validateFormat = function validateFormat(format) {};&#xD;	&#xD;	if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	  validateFormat = function validateFormat(format) {&#xD;	    if (format === undefined) {&#xD;	      throw new Error(&apos;invariant requires an error message argument&apos;);&#xD;	    }&#xD;	  };&#xD;	}&#xD;	&#xD;	function invariant(condition, format, a, b, c, d, e, f) {&#xD;	  validateFormat(format);&#xD;	&#xD;	  if (!condition) {&#xD;	    var error;&#xD;	    if (format === undefined) {&#xD;	      error = new Error(&apos;Minified exception occurred; use the non-minified dev environment &apos; + &apos;for the full error message and additional helpful warnings.&apos;);&#xD;	    } else {&#xD;	      var args = [a, b, c, d, e, f];&#xD;	      var argIndex = 0;&#xD;	      error = new Error(format.replace(/%s/g, function () {&#xD;	        return args[argIndex++];&#xD;	      }));&#xD;	      error.name = &apos;Invariant Violation&apos;;&#xD;	    }&#xD;	&#xD;	    error.framesToPop = 1; // we don&apos;t care about invariant&apos;s own frame&#xD;	    throw error;&#xD;	  }&#xD;	}&#xD;	&#xD;	module.exports = invariant;&#xD;&#xD;/***/ },&#xD;/* 7 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright 2014-2015, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 *&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	var emptyFunction = __webpack_require__(5);&#xD;	&#xD;	/**&#xD;	 * Similar to invariant but only logs a warning if the condition is not met.&#xD;	 * This can be used to log issues in development environments in critical&#xD;	 * paths. Removing the logging code for production environments will keep the&#xD;	 * same logic and follow the same code paths.&#xD;	 */&#xD;	&#xD;	var warning = emptyFunction;&#xD;	&#xD;	if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	  (function () {&#xD;	    var printWarning = function printWarning(format) {&#xD;	      for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {&#xD;	        args[_key - 1] = arguments[_key];&#xD;	      }&#xD;	&#xD;	      var argIndex = 0;&#xD;	      var message = &apos;Warning: &apos; + format.replace(/%s/g, function () {&#xD;	        return args[argIndex++];&#xD;	      });&#xD;	      if (typeof console !== &apos;undefined&apos;) {&#xD;	        console.error(message);&#xD;	      }&#xD;	      try {&#xD;	        // --- Welcome to debugging React ---&#xD;	        // This error was thrown as a convenience so that you can use this stack&#xD;	        // to find the callsite that caused this warning to fire.&#xD;	        throw new Error(message);&#xD;	      } catch (x) {}&#xD;	    };&#xD;	&#xD;	    warning = function warning(condition, format) {&#xD;	      if (format === undefined) {&#xD;	        throw new Error(&apos;`warning(condition, format, ...args)` requires a warning &apos; + &apos;message argument&apos;);&#xD;	      }&#xD;	&#xD;	      if (format.indexOf(&apos;Failed Composite propType: &apos;) === 0) {&#xD;	        return; // Ignore CompositeComponent proptype check.&#xD;	      }&#xD;	&#xD;	      if (!condition) {&#xD;	        for (var _len2 = arguments.length, args = Array(_len2 &gt; 2 ? _len2 - 2 : 0), _key2 = 2; _key2 &lt; _len2; _key2++) {&#xD;	          args[_key2 - 2] = arguments[_key2];&#xD;	        }&#xD;	&#xD;	        printWarning.apply(undefined, [format].concat(args));&#xD;	      }&#xD;	    };&#xD;	  })();&#xD;	}&#xD;	&#xD;	module.exports = warning;&#xD;&#xD;/***/ },&#xD;/* 8 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	/**&#xD;	 * Copyright 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	var ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;&#xD;	&#xD;	module.exports = ReactPropTypesSecret;&#xD;&#xD;&#xD;/***/ },&#xD;/* 9 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	  var invariant = __webpack_require__(6);&#xD;	  var warning = __webpack_require__(7);&#xD;	  var ReactPropTypesSecret = __webpack_require__(8);&#xD;	  var loggedTypeFailures = {};&#xD;	}&#xD;	&#xD;	/**&#xD;	 * Assert that the values match with the type specs.&#xD;	 * Error messages are memorized and will only be shown once.&#xD;	 *&#xD;	 * @param {object} typeSpecs Map of name to a ReactPropType&#xD;	 * @param {object} values Runtime values that need to be type-checked&#xD;	 * @param {string} location e.g. "prop", "context", "child context"&#xD;	 * @param {string} componentName Name of the component for error messages.&#xD;	 * @param {?Function} getStack Returns the component stack.&#xD;	 * @private&#xD;	 */&#xD;	function checkPropTypes(typeSpecs, values, location, componentName, getStack) {&#xD;	  if (({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== &apos;production&apos;) {&#xD;	    for (var typeSpecName in typeSpecs) {&#xD;	      if (typeSpecs.hasOwnProperty(typeSpecName)) {&#xD;	        var error;&#xD;	        // Prop type validation may throw. In case they do, we don&apos;t want to&#xD;	        // fail the render phase where it didn&apos;t fail before. So we log it.&#xD;	        // After these have been cleaned up, we&apos;ll let them throw.&#xD;	        try {&#xD;	          // This is intentionally an invariant that gets caught. It&apos;s the same&#xD;	          // behavior as without this statement except with a better message.&#xD;	          invariant(typeof typeSpecs[typeSpecName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, componentName || &apos;React class&apos;, location, typeSpecName);&#xD;	          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);&#xD;	        } catch (ex) {&#xD;	          error = ex;&#xD;	        }&#xD;	        warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, location, typeSpecName, typeof error);&#xD;	        if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {&#xD;	          // Only monitor this failure once because there tends to be a lot of the&#xD;	          // same error.&#xD;	          loggedTypeFailures[error.message] = true;&#xD;	&#xD;	          var stack = getStack ? getStack() : &apos;&apos;;&#xD;	&#xD;	          warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, stack != null ? stack : &apos;&apos;);&#xD;	        }&#xD;	      }&#xD;	    }&#xD;	  }&#xD;	}&#xD;	&#xD;	module.exports = checkPropTypes;&#xD;&#xD;&#xD;/***/ },&#xD;/* 10 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/**&#xD;	 * Copyright 2013-present, Facebook, Inc.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * This source code is licensed under the BSD-style license found in the&#xD;	 * LICENSE file in the root directory of this source tree. An additional grant&#xD;	 * of patent rights can be found in the PATENTS file in the same directory.&#xD;	 */&#xD;	&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	var emptyFunction = __webpack_require__(5);&#xD;	var invariant = __webpack_require__(6);&#xD;	&#xD;	module.exports = function() {&#xD;	  // Important!&#xD;	  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.&#xD;	  function shim() {&#xD;	    invariant(&#xD;	      false,&#xD;	      &apos;Calling PropTypes validators directly is not supported by the `prop-types` package. &apos; +&#xD;	      &apos;Use PropTypes.checkPropTypes() to call them. &apos; +&#xD;	      &apos;Read more at http://fb.me/use-check-prop-types&apos;&#xD;	    );&#xD;	  };&#xD;	  shim.isRequired = shim;&#xD;	  function getShim() {&#xD;	    return shim;&#xD;	  };&#xD;	  var ReactPropTypes = {&#xD;	    array: shim,&#xD;	    bool: shim,&#xD;	    func: shim,&#xD;	    number: shim,&#xD;	    object: shim,&#xD;	    string: shim,&#xD;	    symbol: shim,&#xD;	&#xD;	    any: shim,&#xD;	    arrayOf: getShim,&#xD;	    element: shim,&#xD;	    instanceOf: getShim,&#xD;	    node: shim,&#xD;	    objectOf: getShim,&#xD;	    oneOf: getShim,&#xD;	    oneOfType: getShim,&#xD;	    shape: getShim&#xD;	  };&#xD;	&#xD;	  ReactPropTypes.checkPropTypes = emptyFunction;&#xD;	  ReactPropTypes.PropTypes = ReactPropTypes;&#xD;	&#xD;	  return ReactPropTypes;&#xD;	};&#xD;&#xD;&#xD;/***/ },&#xD;/* 11 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	module.exports = __WEBPACK_EXTERNAL_MODULE_11__;&#xD;&#xD;/***/ },&#xD;/* 12 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!&#xD;	  Copyright (c) 2016 Jed Watson.&#xD;	  Licensed under the MIT License (MIT), see&#xD;	  http://jedwatson.github.io/classnames&#xD;	*/&#xD;	/* global define */&#xD;	&#xD;	(function () {&#xD;		&apos;use strict&apos;;&#xD;	&#xD;		var hasOwn = {}.hasOwnProperty;&#xD;	&#xD;		function classNames () {&#xD;			var classes = [];&#xD;	&#xD;			for (var i = 0; i &lt; arguments.length; i++) {&#xD;				var arg = arguments[i];&#xD;				if (!arg) continue;&#xD;	&#xD;				var argType = typeof arg;&#xD;	&#xD;				if (argType === &apos;string&apos; || argType === &apos;number&apos;) {&#xD;					classes.push(arg);&#xD;				} else if (Array.isArray(arg)) {&#xD;					classes.push(classNames.apply(null, arg));&#xD;				} else if (argType === &apos;object&apos;) {&#xD;					for (var key in arg) {&#xD;						if (hasOwn.call(arg, key) &amp;&amp; arg[key]) {&#xD;							classes.push(key);&#xD;						}&#xD;					}&#xD;				}&#xD;			}&#xD;	&#xD;			return classes.join(&apos; &apos;);&#xD;		}&#xD;	&#xD;		if (typeof module !== &apos;undefined&apos; &amp;&amp; module.exports) {&#xD;			module.exports = classNames;&#xD;		} else if (true) {&#xD;			// register as &apos;classnames&apos;, consistent with npm package name&#xD;			!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;				return classNames;&#xD;			}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;		} else {&#xD;			window.classNames = classNames;&#xD;		}&#xD;	}());&#xD;&#xD;&#xD;/***/ },&#xD;/* 13 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	&#xD;	var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;	&#xD;	exports.matchesSelector = matchesSelector;&#xD;	exports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;&#xD;	exports.addEvent = addEvent;&#xD;	exports.removeEvent = removeEvent;&#xD;	exports.outerHeight = outerHeight;&#xD;	exports.outerWidth = outerWidth;&#xD;	exports.innerHeight = innerHeight;&#xD;	exports.innerWidth = innerWidth;&#xD;	exports.offsetXYFromParent = offsetXYFromParent;&#xD;	exports.createCSSTransform = createCSSTransform;&#xD;	exports.createSVGTransform = createSVGTransform;&#xD;	exports.getTouch = getTouch;&#xD;	exports.getTouchIdentifier = getTouchIdentifier;&#xD;	exports.addUserSelectStyles = addUserSelectStyles;&#xD;	exports.removeUserSelectStyles = removeUserSelectStyles;&#xD;	exports.styleHacks = styleHacks;&#xD;	&#xD;	var _shims = __webpack_require__(14);&#xD;	&#xD;	var _getPrefix = __webpack_require__(15);&#xD;	&#xD;	var _getPrefix2 = _interopRequireDefault(_getPrefix);&#xD;	&#xD;	function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;	&#xD;	function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }&#xD;	&#xD;	/*:: import type {ControlPosition} from &apos;./types&apos;;*/&#xD;	&#xD;	&#xD;	var matchesSelectorFunc = &apos;&apos;;&#xD;	function matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ {&#xD;	  if (!matchesSelectorFunc) {&#xD;	    matchesSelectorFunc = (0, _shims.findInArray)([&apos;matches&apos;, &apos;webkitMatchesSelector&apos;, &apos;mozMatchesSelector&apos;, &apos;msMatchesSelector&apos;, &apos;oMatchesSelector&apos;], function (method) {&#xD;	      // $FlowIgnore: Doesn&apos;t think elements are indexable&#xD;	      return (0, _shims.isFunction)(el[method]);&#xD;	    });&#xD;	  }&#xD;	&#xD;	  // $FlowIgnore: Doesn&apos;t think elements are indexable&#xD;	  return el[matchesSelectorFunc].call(el, selector);&#xD;	}&#xD;	&#xD;	// Works up the tree to the draggable itself attempting to match selector.&#xD;	function matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ {&#xD;	  var node = el;&#xD;	  do {&#xD;	    if (matchesSelector(node, selector)) return true;&#xD;	    if (node === baseNode) return false;&#xD;	    node = node.parentNode;&#xD;	  } while (node);&#xD;	&#xD;	  return false;&#xD;	}&#xD;	&#xD;	function addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {&#xD;	  if (!el) {&#xD;	    return;&#xD;	  }&#xD;	  if (el.attachEvent) {&#xD;	    el.attachEvent(&apos;on&apos; + event, handler);&#xD;	  } else if (el.addEventListener) {&#xD;	    el.addEventListener(event, handler, true);&#xD;	  } else {&#xD;	    // $FlowIgnore: Doesn&apos;t think elements are indexable&#xD;	    el[&apos;on&apos; + event] = handler;&#xD;	  }&#xD;	}&#xD;	&#xD;	function removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ {&#xD;	  if (!el) {&#xD;	    return;&#xD;	  }&#xD;	  if (el.detachEvent) {&#xD;	    el.detachEvent(&apos;on&apos; + event, handler);&#xD;	  } else if (el.removeEventListener) {&#xD;	    el.removeEventListener(event, handler, true);&#xD;	  } else {&#xD;	    // $FlowIgnore: Doesn&apos;t think elements are indexable&#xD;	    el[&apos;on&apos; + event] = null;&#xD;	  }&#xD;	}&#xD;	&#xD;	function outerHeight(node /*: HTMLElement*/) /*: number*/ {&#xD;	  // This is deliberately excluding margin for our calculations, since we are using&#xD;	  // offsetTop which is including margin. See getBoundPosition&#xD;	  var height = node.clientHeight;&#xD;	  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);&#xD;	  height += (0, _shims.int)(computedStyle.borderTopWidth);&#xD;	  height += (0, _shims.int)(computedStyle.borderBottomWidth);&#xD;	  return height;&#xD;	}&#xD;	&#xD;	function outerWidth(node /*: HTMLElement*/) /*: number*/ {&#xD;	  // This is deliberately excluding margin for our calculations, since we are using&#xD;	  // offsetLeft which is including margin. See getBoundPosition&#xD;	  var width = node.clientWidth;&#xD;	  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);&#xD;	  width += (0, _shims.int)(computedStyle.borderLeftWidth);&#xD;	  width += (0, _shims.int)(computedStyle.borderRightWidth);&#xD;	  return width;&#xD;	}&#xD;	function innerHeight(node /*: HTMLElement*/) /*: number*/ {&#xD;	  var height = node.clientHeight;&#xD;	  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);&#xD;	  height -= (0, _shims.int)(computedStyle.paddingTop);&#xD;	  height -= (0, _shims.int)(computedStyle.paddingBottom);&#xD;	  return height;&#xD;	}&#xD;	&#xD;	function innerWidth(node /*: HTMLElement*/) /*: number*/ {&#xD;	  var width = node.clientWidth;&#xD;	  var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);&#xD;	  width -= (0, _shims.int)(computedStyle.paddingLeft);&#xD;	  width -= (0, _shims.int)(computedStyle.paddingRight);&#xD;	  return width;&#xD;	}&#xD;	&#xD;	// Get from offsetParent&#xD;	function offsetXYFromParent(evt /*: {clientX: number, clientY: number}*/, offsetParent /*: HTMLElement*/) /*: ControlPosition*/ {&#xD;	  var isBody = offsetParent === offsetParent.ownerDocument.body;&#xD;	  var offsetParentRect = isBody ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect();&#xD;	&#xD;	  var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;&#xD;	  var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;&#xD;	&#xD;	  return { x: x, y: y };&#xD;	}&#xD;	&#xD;	function createCSSTransform(_ref) /*: Object*/ {&#xD;	  var x = _ref.x,&#xD;	      y = _ref.y;&#xD;	&#xD;	  // Replace unitless items with px&#xD;	  return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)(&apos;transform&apos;, _getPrefix2.default), &apos;translate(&apos; + x + &apos;px,&apos; + y + &apos;px)&apos;);&#xD;	}&#xD;	&#xD;	function createSVGTransform(_ref3) /*: string*/ {&#xD;	  var x = _ref3.x,&#xD;	      y = _ref3.y;&#xD;	&#xD;	  return &apos;translate(&apos; + x + &apos;,&apos; + y + &apos;)&apos;;&#xD;	}&#xD;	&#xD;	function getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ {&#xD;	  return e.targetTouches &amp;&amp; (0, _shims.findInArray)(e.targetTouches, function (t) {&#xD;	    return identifier === t.identifier;&#xD;	  }) || e.changedTouches &amp;&amp; (0, _shims.findInArray)(e.changedTouches, function (t) {&#xD;	    return identifier === t.identifier;&#xD;	  });&#xD;	}&#xD;	&#xD;	function getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/ {&#xD;	  if (e.targetTouches &amp;&amp; e.targetTouches[0]) return e.targetTouches[0].identifier;&#xD;	  if (e.changedTouches &amp;&amp; e.changedTouches[0]) return e.changedTouches[0].identifier;&#xD;	}&#xD;	&#xD;	// User-select Hacks:&#xD;	//&#xD;	// Useful for preventing blue highlights all over everything when dragging.&#xD;	var userSelectPrefix = (0, _getPrefix.getPrefix)(&apos;user-select&apos;);&#xD;	var userSelect = (0, _getPrefix.browserPrefixToStyle)(&apos;user-select&apos;, userSelectPrefix);&#xD;	var userSelectStyle = &apos;;&apos; + userSelect + &apos;: none;&apos;;&#xD;	var userSelectReplaceRegExp = new RegExp(&apos;;?&apos; + userSelect + &apos;: none;&apos;); // leading ; not present on IE&#xD;	&#xD;	// Note we&apos;re passing `document` b/c we could be iframed&#xD;	function addUserSelectStyles(body /*: HTMLElement*/) {&#xD;	  var style = body.getAttribute(&apos;style&apos;) || &apos;&apos;;&#xD;	  if (userSelectReplaceRegExp.test(style)) return; // don&apos;t add twice&#xD;	  body.setAttribute(&apos;style&apos;, style + userSelectStyle);&#xD;	}&#xD;	&#xD;	function removeUserSelectStyles(body /*: HTMLElement*/) {&#xD;	  var style = body.getAttribute(&apos;style&apos;) || &apos;&apos;;&#xD;	  body.setAttribute(&apos;style&apos;, style.replace(userSelectReplaceRegExp, &apos;&apos;));&#xD;	}&#xD;	&#xD;	function styleHacks() /*: Object*/ {&#xD;	  var childStyle /*: Object*/ = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {};&#xD;	&#xD;	  // Workaround IE pointer events; see #51&#xD;	  // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278&#xD;	  return _extends({&#xD;	    touchAction: &apos;none&apos;&#xD;	  }, childStyle);&#xD;	}&#xD;&#xD;/***/ },&#xD;/* 14 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	exports.findInArray = findInArray;&#xD;	exports.isFunction = isFunction;&#xD;	exports.isNum = isNum;&#xD;	exports.int = int;&#xD;	exports.dontSetMe = dontSetMe;&#xD;	&#xD;	// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc&#xD;	function findInArray(array /*: Array&lt;any&gt; | TouchList*/, callback /*: Function*/) /*: any*/ {&#xD;	  for (var i = 0, length = array.length; i &lt; length; i++) {&#xD;	    if (callback.apply(callback, [array[i], i, array])) return array[i];&#xD;	  }&#xD;	}&#xD;	&#xD;	function isFunction(func /*: any*/) /*: boolean*/ {&#xD;	  return typeof func === &apos;function&apos; || Object.prototype.toString.call(func) === &apos;[object Function]&apos;;&#xD;	}&#xD;	&#xD;	function isNum(num /*: any*/) /*: boolean*/ {&#xD;	  return typeof num === &apos;number&apos; &amp;&amp; !isNaN(num);&#xD;	}&#xD;	&#xD;	function int(a /*: string*/) /*: number*/ {&#xD;	  return parseInt(a, 10);&#xD;	}&#xD;	&#xD;	function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) {&#xD;	  if (props[propName]) {&#xD;	    return new Error(&apos;Invalid prop &apos; + propName + &apos; passed to &apos; + componentName + &apos; - do not set this, set it on the child.&apos;);&#xD;	  }&#xD;	}&#xD;&#xD;/***/ },&#xD;/* 15 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	exports.getPrefix = getPrefix;&#xD;	exports.browserPrefixToKey = browserPrefixToKey;&#xD;	exports.browserPrefixToStyle = browserPrefixToStyle;&#xD;	var prefixes = [&apos;Moz&apos;, &apos;Webkit&apos;, &apos;O&apos;, &apos;ms&apos;];&#xD;	function getPrefix() /*: string*/ {&#xD;	  var prop /*: string*/ = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : &apos;transform&apos;;&#xD;	&#xD;	  // Checking specifically for &apos;window.document&apos; is for pseudo-browser server-side&#xD;	  // environments that define &apos;window&apos; as the global context.&#xD;	  // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)&#xD;	  if (typeof window === &apos;undefined&apos; || typeof window.document === &apos;undefined&apos;) return &apos;&apos;;&#xD;	&#xD;	  var style = window.document.documentElement.style;&#xD;	&#xD;	  if (prop in style) return &apos;&apos;;&#xD;	&#xD;	  for (var i = 0; i &lt; prefixes.length; i++) {&#xD;	    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];&#xD;	  }&#xD;	&#xD;	  return &apos;&apos;;&#xD;	}&#xD;	&#xD;	function browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ {&#xD;	  return prefix ? &apos;&apos; + prefix + kebabToTitleCase(prop) : prop;&#xD;	}&#xD;	&#xD;	function browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ {&#xD;	  return prefix ? &apos;-&apos; + prefix.toLowerCase() + &apos;-&apos; + prop : prop;&#xD;	}&#xD;	&#xD;	function kebabToTitleCase(str /*: string*/) /*: string*/ {&#xD;	  var out = &apos;&apos;;&#xD;	  var shouldCapitalize = true;&#xD;	  for (var i = 0; i &lt; str.length; i++) {&#xD;	    if (shouldCapitalize) {&#xD;	      out += str[i].toUpperCase();&#xD;	      shouldCapitalize = false;&#xD;	    } else if (str[i] === &apos;-&apos;) {&#xD;	      shouldCapitalize = true;&#xD;	    } else {&#xD;	      out += str[i];&#xD;	    }&#xD;	  }&#xD;	  return out;&#xD;	}&#xD;	&#xD;	// Default export is the prefix itself, like &apos;Moz&apos;, &apos;Webkit&apos;, etc&#xD;	// Note that you may have to re-test for certain things; for instance, Chrome 50&#xD;	// can handle unprefixed `transform`, but not unprefixed `user-select`&#xD;	exports.default = getPrefix();&#xD;&#xD;/***/ },&#xD;/* 16 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	exports.getBoundPosition = getBoundPosition;&#xD;	exports.snapToGrid = snapToGrid;&#xD;	exports.canDragX = canDragX;&#xD;	exports.canDragY = canDragY;&#xD;	exports.getControlPosition = getControlPosition;&#xD;	exports.createCoreData = createCoreData;&#xD;	exports.createDraggableData = createDraggableData;&#xD;	&#xD;	var _shims = __webpack_require__(14);&#xD;	&#xD;	var _reactDom = __webpack_require__(11);&#xD;	&#xD;	var _reactDom2 = _interopRequireDefault(_reactDom);&#xD;	&#xD;	var _domFns = __webpack_require__(13);&#xD;	&#xD;	function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;	&#xD;	/*:: import type Draggable from &apos;../Draggable&apos;;*/&#xD;	/*:: import type {Bounds, ControlPosition, DraggableData} from &apos;./types&apos;;*/&#xD;	/*:: import type DraggableCore from &apos;../DraggableCore&apos;;*/&#xD;	function getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ {&#xD;	  // If no bounds, short-circuit and move on&#xD;	  if (!draggable.props.bounds) return [x, y];&#xD;	&#xD;	  // Clone new bounds&#xD;	  var bounds = draggable.props.bounds;&#xD;	&#xD;	  bounds = typeof bounds === &apos;string&apos; ? bounds : cloneBounds(bounds);&#xD;	  var node = _reactDom2.default.findDOMNode(draggable);&#xD;	&#xD;	  if (typeof bounds === &apos;string&apos;) {&#xD;	    var ownerDocument = node.ownerDocument;&#xD;	&#xD;	    var ownerWindow = ownerDocument.defaultView;&#xD;	    var boundNode = void 0;&#xD;	    if (bounds === &apos;parent&apos;) {&#xD;	      boundNode = node.parentNode;&#xD;	    } else {&#xD;	      boundNode = ownerDocument.querySelector(bounds);&#xD;	      if (!boundNode) throw new Error(&apos;Bounds selector "&apos; + bounds + &apos;" could not find an element.&apos;);&#xD;	    }&#xD;	    var nodeStyle = ownerWindow.getComputedStyle(node);&#xD;	    var boundNodeStyle = ownerWindow.getComputedStyle(boundNode);&#xD;	    // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.&#xD;	    bounds = {&#xD;	      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),&#xD;	      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),&#xD;	      right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),&#xD;	      bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)&#xD;	    };&#xD;	  }&#xD;	&#xD;	  // Keep x and y below right and bottom limits...&#xD;	  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);&#xD;	  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);&#xD;	&#xD;	  // But above left and top limits.&#xD;	  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);&#xD;	  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);&#xD;	&#xD;	  return [x, y];&#xD;	}&#xD;	&#xD;	function snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ {&#xD;	  var x = Math.round(pendingX / grid[0]) * grid[0];&#xD;	  var y = Math.round(pendingY / grid[1]) * grid[1];&#xD;	  return [x, y];&#xD;	}&#xD;	&#xD;	function canDragX(draggable /*: Draggable*/) /*: boolean*/ {&#xD;	  return draggable.props.axis === &apos;both&apos; || draggable.props.axis === &apos;x&apos;;&#xD;	}&#xD;	&#xD;	function canDragY(draggable /*: Draggable*/) /*: boolean*/ {&#xD;	  return draggable.props.axis === &apos;both&apos; || draggable.props.axis === &apos;y&apos;;&#xD;	}&#xD;	&#xD;	// Get {x, y} positions from event.&#xD;	function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ {&#xD;	  var touchObj = typeof touchIdentifier === &apos;number&apos; ? (0, _domFns.getTouch)(e, touchIdentifier) : null;&#xD;	  if (typeof touchIdentifier === &apos;number&apos; &amp;&amp; !touchObj) return null; // not the right touch&#xD;	  var node = _reactDom2.default.findDOMNode(draggableCore);&#xD;	  // User can provide an offsetParent if desired.&#xD;	  var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;&#xD;	  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent);&#xD;	}&#xD;	&#xD;	// Create an data object exposed by &lt;DraggableCore&gt;&apos;s events&#xD;	function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ {&#xD;	  var state = draggable.state;&#xD;	  var isStart = !(0, _shims.isNum)(state.lastX);&#xD;	&#xD;	  if (isStart) {&#xD;	    // If this is our first move, use the x and y as last coords.&#xD;	    return {&#xD;	      node: _reactDom2.default.findDOMNode(draggable),&#xD;	      deltaX: 0, deltaY: 0,&#xD;	      lastX: x, lastY: y,&#xD;	      x: x, y: y&#xD;	    };&#xD;	  } else {&#xD;	    // Otherwise calculate proper values.&#xD;	    return {&#xD;	      node: _reactDom2.default.findDOMNode(draggable),&#xD;	      deltaX: x - state.lastX, deltaY: y - state.lastY,&#xD;	      lastX: state.lastX, lastY: state.lastY,&#xD;	      x: x, y: y&#xD;	    };&#xD;	  }&#xD;	}&#xD;	&#xD;	// Create an data exposed by &lt;Draggable&gt;&apos;s events&#xD;	function createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ {&#xD;	  return {&#xD;	    node: coreData.node,&#xD;	    x: draggable.state.x + coreData.deltaX,&#xD;	    y: draggable.state.y + coreData.deltaY,&#xD;	    deltaX: coreData.deltaX,&#xD;	    deltaY: coreData.deltaY,&#xD;	    lastX: draggable.state.x,&#xD;	    lastY: draggable.state.y&#xD;	  };&#xD;	}&#xD;	&#xD;	// A lot faster than stringify/parse&#xD;	function cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ {&#xD;	  return {&#xD;	    left: bounds.left,&#xD;	    top: bounds.top,&#xD;	    right: bounds.right,&#xD;	    bottom: bounds.bottom&#xD;	  };&#xD;	}&#xD;&#xD;/***/ },&#xD;/* 17 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/* WEBPACK VAR INJECTION */(function(process) {&apos;use strict&apos;;&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	&#xD;	var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i &amp;&amp; _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n &amp;&amp; _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();&#xD;	&#xD;	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;	&#xD;	var _react = __webpack_require__(2);&#xD;	&#xD;	var _react2 = _interopRequireDefault(_react);&#xD;	&#xD;	var _propTypes = __webpack_require__(3);&#xD;	&#xD;	var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;	&#xD;	var _reactDom = __webpack_require__(11);&#xD;	&#xD;	var _reactDom2 = _interopRequireDefault(_reactDom);&#xD;	&#xD;	var _domFns = __webpack_require__(13);&#xD;	&#xD;	var _positionFns = __webpack_require__(16);&#xD;	&#xD;	var _shims = __webpack_require__(14);&#xD;	&#xD;	var _log = __webpack_require__(19);&#xD;	&#xD;	var _log2 = _interopRequireDefault(_log);&#xD;	&#xD;	function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;	&#xD;	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;	&#xD;	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;	&#xD;	function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;	&#xD;	// Simple abstraction for dragging events names.&#xD;	/*:: import type {EventHandler} from &apos;./utils/types&apos;;*/&#xD;	var eventsFor = {&#xD;	  touch: {&#xD;	    start: &apos;touchstart&apos;,&#xD;	    move: &apos;touchmove&apos;,&#xD;	    stop: &apos;touchend&apos;&#xD;	  },&#xD;	  mouse: {&#xD;	    start: &apos;mousedown&apos;,&#xD;	    move: &apos;mousemove&apos;,&#xD;	    stop: &apos;mouseup&apos;&#xD;	  }&#xD;	};&#xD;	&#xD;	// Default to mouse events.&#xD;	var dragEventFor = eventsFor.mouse;&#xD;	&#xD;	//&#xD;	// Define &lt;DraggableCore&gt;.&#xD;	//&#xD;	// &lt;DraggableCore&gt; is for advanced usage of &lt;Draggable&gt;. It maintains minimal internal state so it can&#xD;	// work well with libraries that require more control over the element.&#xD;	//&#xD;	&#xD;	/*:: type CoreState = {&#xD;	  dragging: boolean,&#xD;	  lastX: number,&#xD;	  lastY: number,&#xD;	  touchIdentifier: ?number&#xD;	};*/&#xD;	&#xD;	var DraggableCore = function (_React$Component) {&#xD;	  _inherits(DraggableCore, _React$Component);&#xD;	&#xD;	  function DraggableCore() {&#xD;	    var _ref;&#xD;	&#xD;	    var _temp, _this, _ret;&#xD;	&#xD;	    _classCallCheck(this, DraggableCore);&#xD;	&#xD;	    for (var _len = arguments.length, args = Array(_len), _key = 0; _key &lt; _len; _key++) {&#xD;	      args[_key] = arguments[_key];&#xD;	    }&#xD;	&#xD;	    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DraggableCore.__proto__ || Object.getPrototypeOf(DraggableCore)).call.apply(_ref, [this].concat(args))), _this), _this.state = {&#xD;	      dragging: false,&#xD;	      // Used while dragging to determine deltas.&#xD;	      lastX: NaN, lastY: NaN,&#xD;	      touchIdentifier: null&#xD;	    }, _this.handleDragStart = function (e) {&#xD;	      // Make it possible to attach event handlers on top of this one.&#xD;	      _this.props.onMouseDown(e);&#xD;	&#xD;	      // Only accept left-clicks.&#xD;	      if (!_this.props.allowAnyClick &amp;&amp; typeof e.button === &apos;number&apos; &amp;&amp; e.button !== 0) return false;&#xD;	&#xD;	      // Get nodes. Be sure to grab relative document (could be iframed)&#xD;	      var domNode = _reactDom2.default.findDOMNode(_this);&#xD;	      var ownerDocument = domNode.ownerDocument;&#xD;	&#xD;	      // Short circuit if handle or cancel prop was provided and selector doesn&apos;t match.&#xD;	&#xD;	      if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle &amp;&amp; !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, domNode) || _this.props.cancel &amp;&amp; (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, domNode)) {&#xD;	        return;&#xD;	      }&#xD;	&#xD;	      // Set touch identifier in component state if this is a touch event. This allows us to&#xD;	      // distinguish between individual touches on multitouch screens by identifying which&#xD;	      // touchpoint was set to this element.&#xD;	      var touchIdentifier = (0, _domFns.getTouchIdentifier)(e);&#xD;	      _this.setState({ touchIdentifier: touchIdentifier });&#xD;	&#xD;	      // Get the current drag point from the event. This is used as the offset.&#xD;	      var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this);&#xD;	      if (position == null) return; // not possible but satisfies flow&#xD;	      var x = position.x,&#xD;	          y = position.y;&#xD;	&#xD;	      // Create an event object with all the data parents need to make a decision here.&#xD;	&#xD;	      var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);&#xD;	&#xD;	      (0, _log2.default)(&apos;DraggableCore: handleDragStart: %j&apos;, coreEvent);&#xD;	&#xD;	      // Call event handler. If it returns explicit false, cancel.&#xD;	      (0, _log2.default)(&apos;calling&apos;, _this.props.onStart);&#xD;	      var shouldUpdate = _this.props.onStart(e, coreEvent);&#xD;	      if (shouldUpdate === false) return;&#xD;	&#xD;	      // Add a style to the body to disable user-select. This prevents text from&#xD;	      // being selected all over the page.&#xD;	      if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument.body);&#xD;	&#xD;	      // Initiate dragging. Set the current x and y as offsets&#xD;	      // so we know how much we&apos;ve moved during the drag. This allows us&#xD;	      // to drag elements around even if they have been moved, without issue.&#xD;	      _this.setState({&#xD;	        dragging: true,&#xD;	&#xD;	        lastX: x,&#xD;	        lastY: y&#xD;	      });&#xD;	&#xD;	      // Add events to the document directly so we catch when the user&apos;s mouse/touch moves outside of&#xD;	      // this element. We use different events depending on whether or not we have detected that this&#xD;	      // is a touch-capable device.&#xD;	      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);&#xD;	      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);&#xD;	    }, _this.handleDrag = function (e) {&#xD;	&#xD;	      // Prevent scrolling on mobile devices, like ipad/iphone.&#xD;	      if (e.type === &apos;touchmove&apos;) e.preventDefault();&#xD;	&#xD;	      // Get the current drag point from the event. This is used as the offset.&#xD;	      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);&#xD;	      if (position == null) return;&#xD;	      var x = position.x,&#xD;	          y = position.y;&#xD;	&#xD;	      // Snap to grid if prop has been provided&#xD;	&#xD;	      if (Array.isArray(_this.props.grid)) {&#xD;	        var deltaX = x - _this.state.lastX,&#xD;	            deltaY = y - _this.state.lastY;&#xD;	&#xD;	        var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, deltaX, deltaY);&#xD;	&#xD;	        var _snapToGrid2 = _slicedToArray(_snapToGrid, 2);&#xD;	&#xD;	        deltaX = _snapToGrid2[0];&#xD;	        deltaY = _snapToGrid2[1];&#xD;	&#xD;	        if (!deltaX &amp;&amp; !deltaY) return; // skip useless drag&#xD;	        x = _this.state.lastX + deltaX, y = _this.state.lastY + deltaY;&#xD;	      }&#xD;	&#xD;	      var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);&#xD;	&#xD;	      (0, _log2.default)(&apos;DraggableCore: handleDrag: %j&apos;, coreEvent);&#xD;	&#xD;	      // Call event handler. If it returns explicit false, trigger end.&#xD;	      var shouldUpdate = _this.props.onDrag(e, coreEvent);&#xD;	      if (shouldUpdate === false) {&#xD;	        try {&#xD;	          // $FlowIgnore&#xD;	          _this.handleDragStop(new MouseEvent(&apos;mouseup&apos;));&#xD;	        } catch (err) {&#xD;	          // Old browsers&#xD;	          var event = ((document.createEvent(&apos;MouseEvents&apos;) /*: any*/) /*: MouseTouchEvent*/);&#xD;	          // I see why this insanity was deprecated&#xD;	          // $FlowIgnore&#xD;	          event.initMouseEvent(&apos;mouseup&apos;, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);&#xD;	          _this.handleDragStop(event);&#xD;	        }&#xD;	        return;&#xD;	      }&#xD;	&#xD;	      _this.setState({&#xD;	        lastX: x,&#xD;	        lastY: y&#xD;	      });&#xD;	    }, _this.handleDragStop = function (e) {&#xD;	      if (!_this.state.dragging) return;&#xD;	&#xD;	      var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this);&#xD;	      if (position == null) return;&#xD;	      var x = position.x,&#xD;	          y = position.y;&#xD;	&#xD;	      var coreEvent = (0, _positionFns.createCoreData)(_this, x, y);&#xD;	&#xD;	      var _ReactDOM$findDOMNode = _reactDom2.default.findDOMNode(_this),&#xD;	          ownerDocument = _ReactDOM$findDOMNode.ownerDocument;&#xD;	&#xD;	      // Remove user-select hack&#xD;	&#xD;	&#xD;	      if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument.body);&#xD;	&#xD;	      (0, _log2.default)(&apos;DraggableCore: handleDragStop: %j&apos;, coreEvent);&#xD;	&#xD;	      // Reset the el.&#xD;	      _this.setState({&#xD;	        dragging: false,&#xD;	        lastX: NaN,&#xD;	        lastY: NaN&#xD;	      });&#xD;	&#xD;	      // Call event handler&#xD;	      _this.props.onStop(e, coreEvent);&#xD;	&#xD;	      // Remove event handlers&#xD;	      (0, _log2.default)(&apos;DraggableCore: Removing handlers&apos;);&#xD;	      (0, _domFns.removeEvent)(ownerDocument, dragEventFor.move, _this.handleDrag);&#xD;	      (0, _domFns.removeEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop);&#xD;	    }, _this.onMouseDown = function (e) {&#xD;	      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse&#xD;	&#xD;	      return _this.handleDragStart(e);&#xD;	    }, _this.onMouseUp = function (e) {&#xD;	      dragEventFor = eventsFor.mouse;&#xD;	&#xD;	      return _this.handleDragStop(e);&#xD;	    }, _this.onTouchStart = function (e) {&#xD;	      // We&apos;re on a touch device now, so change the event handlers&#xD;	      dragEventFor = eventsFor.touch;&#xD;	&#xD;	      return _this.handleDragStart(e);&#xD;	    }, _this.onTouchEnd = function (e) {&#xD;	      // We&apos;re on a touch device now, so change the event handlers&#xD;	      dragEventFor = eventsFor.touch;&#xD;	&#xD;	      return _this.handleDragStop(e);&#xD;	    }, _temp), _possibleConstructorReturn(_this, _ret);&#xD;	  }&#xD;	&#xD;	  _createClass(DraggableCore, [{&#xD;	    key: &apos;componentWillUnmount&apos;,&#xD;	    value: function componentWillUnmount() {&#xD;	      // Remove any leftover event handlers. Remove both touch and mouse handlers in case&#xD;	      // some browser quirk caused a touch event to fire during a mouse move, or vice versa.&#xD;	      var _ReactDOM$findDOMNode2 = _reactDom2.default.findDOMNode(this),&#xD;	          ownerDocument = _ReactDOM$findDOMNode2.ownerDocument;&#xD;	&#xD;	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);&#xD;	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);&#xD;	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);&#xD;	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);&#xD;	      if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument.body);&#xD;	    }&#xD;	&#xD;	    // Same as onMouseDown (start drag), but now consider this a touch device.&#xD;	&#xD;	  }, {&#xD;	    key: &apos;render&apos;,&#xD;	    value: function render() /*: React.Element&lt;any&gt;*/ {&#xD;	      // Reuse the child provided&#xD;	      // This makes it flexible to use whatever element is wanted (div, ul, etc)&#xD;	      return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), {&#xD;	        style: (0, _domFns.styleHacks)(this.props.children.props.style),&#xD;	&#xD;	        // Note: mouseMove handler is attached to document so it will still function&#xD;	        // when the user drags quickly and leaves the bounds of the element.&#xD;	        onMouseDown: this.onMouseDown,&#xD;	        onTouchStart: this.onTouchStart,&#xD;	        onMouseUp: this.onMouseUp,&#xD;	        onTouchEnd: this.onTouchEnd&#xD;	      });&#xD;	    }&#xD;	  }]);&#xD;	&#xD;	  return DraggableCore;&#xD;	}(_react2.default.Component);&#xD;	&#xD;	DraggableCore.displayName = &apos;DraggableCore&apos;;&#xD;	DraggableCore.propTypes = {&#xD;	  /**&#xD;	   * `allowAnyClick` allows dragging using any mouse button.&#xD;	   * By default, we only accept the left button.&#xD;	   *&#xD;	   * Defaults to `false`.&#xD;	   */&#xD;	  allowAnyClick: _propTypes2.default.bool,&#xD;	&#xD;	  /**&#xD;	   * `disabled`, if true, stops the &lt;Draggable&gt; from dragging. All handlers,&#xD;	   * with the exception of `onMouseDown`, will not fire.&#xD;	   */&#xD;	  disabled: _propTypes2.default.bool,&#xD;	&#xD;	  /**&#xD;	   * By default, we add &apos;user-select:none&apos; attributes to the document body&#xD;	   * to prevent ugly text selection during drag. If this is causing problems&#xD;	   * for your app, set this to `false`.&#xD;	   */&#xD;	  enableUserSelectHack: _propTypes2.default.bool,&#xD;	&#xD;	  /**&#xD;	   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets&#xD;	   * instead of using the parent node.&#xD;	   */&#xD;	  offsetParent: function offsetParent(props, propName) {&#xD;	    if (process.browser &amp;&amp; props[propName] &amp;&amp; props[propName].nodeType !== 1) {&#xD;	      throw new Error(&apos;Draggable\&apos;s offsetParent must be a DOM Node.&apos;);&#xD;	    }&#xD;	  },&#xD;	&#xD;	  /**&#xD;	   * `grid` specifies the x and y that dragging should snap to.&#xD;	   */&#xD;	  grid: _propTypes2.default.arrayOf(_propTypes2.default.number),&#xD;	&#xD;	  /**&#xD;	   * `handle` specifies a selector to be used as the handle that initiates drag.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   * ```jsx&#xD;	   *   let App = React.createClass({&#xD;	   *       render: function () {&#xD;	   *         return (&#xD;	   *            &lt;Draggable handle=".handle"&gt;&#xD;	   *              &lt;div&gt;&#xD;	   *                  &lt;div className="handle"&gt;Click me to drag&lt;/div&gt;&#xD;	   *                  &lt;div&gt;This is some other content&lt;/div&gt;&#xD;	   *              &lt;/div&gt;&#xD;	   *           &lt;/Draggable&gt;&#xD;	   *         );&#xD;	   *       }&#xD;	   *   });&#xD;	   * ```&#xD;	   */&#xD;	  handle: _propTypes2.default.string,&#xD;	&#xD;	  /**&#xD;	   * `cancel` specifies a selector to be used to prevent drag initialization.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   * ```jsx&#xD;	   *   let App = React.createClass({&#xD;	   *       render: function () {&#xD;	   *           return(&#xD;	   *               &lt;Draggable cancel=".cancel"&gt;&#xD;	   *                   &lt;div&gt;&#xD;	   *                     &lt;div className="cancel"&gt;You can&apos;t drag from here&lt;/div&gt;&#xD;	   *                     &lt;div&gt;Dragging here works fine&lt;/div&gt;&#xD;	   *                   &lt;/div&gt;&#xD;	   *               &lt;/Draggable&gt;&#xD;	   *           );&#xD;	   *       }&#xD;	   *   });&#xD;	   * ```&#xD;	   */&#xD;	  cancel: _propTypes2.default.string,&#xD;	&#xD;	  /**&#xD;	   * Called when dragging starts.&#xD;	   * If this function returns the boolean false, dragging will be canceled.&#xD;	   */&#xD;	  onStart: _propTypes2.default.func,&#xD;	&#xD;	  /**&#xD;	   * Called while dragging.&#xD;	   * If this function returns the boolean false, dragging will be canceled.&#xD;	   */&#xD;	  onDrag: _propTypes2.default.func,&#xD;	&#xD;	  /**&#xD;	   * Called when dragging stops.&#xD;	   * If this function returns the boolean false, the drag will remain active.&#xD;	   */&#xD;	  onStop: _propTypes2.default.func,&#xD;	&#xD;	  /**&#xD;	   * A workaround option which can be passed if onMouseDown needs to be accessed,&#xD;	   * since it&apos;ll always be blocked (as there is internal use of onMouseDown)&#xD;	   */&#xD;	  onMouseDown: _propTypes2.default.func,&#xD;	&#xD;	  /**&#xD;	   * These properties should be defined on the child, not here.&#xD;	   */&#xD;	  className: _shims.dontSetMe,&#xD;	  style: _shims.dontSetMe,&#xD;	  transform: _shims.dontSetMe&#xD;	};&#xD;	DraggableCore.defaultProps = {&#xD;	  allowAnyClick: false, // by default only accept left click&#xD;	  cancel: null,&#xD;	  disabled: false,&#xD;	  enableUserSelectHack: true,&#xD;	  offsetParent: null,&#xD;	  handle: null,&#xD;	  grid: null,&#xD;	  transform: null,&#xD;	  onStart: function onStart() {},&#xD;	  onDrag: function onDrag() {},&#xD;	  onStop: function onStop() {},&#xD;	  onMouseDown: function onMouseDown() {}&#xD;	};&#xD;	exports.default = DraggableCore;&#xD;	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(18)))&#xD;&#xD;/***/ },&#xD;/* 18 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	// shim for using process in browser&#xD;	var process = module.exports = {};&#xD;	&#xD;	// cached from whatever global is present so that test runners that stub it&#xD;	// don&apos;t break things.  But we need to wrap it in a try catch in case it is&#xD;	// wrapped in strict mode code which doesn&apos;t define any globals.  It&apos;s inside a&#xD;	// function because try/catches deoptimize in certain engines.&#xD;	&#xD;	var cachedSetTimeout;&#xD;	var cachedClearTimeout;&#xD;	&#xD;	function defaultSetTimout() {&#xD;	    throw new Error(&apos;setTimeout has not been defined&apos;);&#xD;	}&#xD;	function defaultClearTimeout () {&#xD;	    throw new Error(&apos;clearTimeout has not been defined&apos;);&#xD;	}&#xD;	(function () {&#xD;	    try {&#xD;	        if (typeof setTimeout === &apos;function&apos;) {&#xD;	            cachedSetTimeout = setTimeout;&#xD;	        } else {&#xD;	            cachedSetTimeout = defaultSetTimout;&#xD;	        }&#xD;	    } catch (e) {&#xD;	        cachedSetTimeout = defaultSetTimout;&#xD;	    }&#xD;	    try {&#xD;	        if (typeof clearTimeout === &apos;function&apos;) {&#xD;	            cachedClearTimeout = clearTimeout;&#xD;	        } else {&#xD;	            cachedClearTimeout = defaultClearTimeout;&#xD;	        }&#xD;	    } catch (e) {&#xD;	        cachedClearTimeout = defaultClearTimeout;&#xD;	    }&#xD;	} ())&#xD;	function runTimeout(fun) {&#xD;	    if (cachedSetTimeout === setTimeout) {&#xD;	        //normal enviroments in sane situations&#xD;	        return setTimeout(fun, 0);&#xD;	    }&#xD;	    // if setTimeout wasn&apos;t available but was latter defined&#xD;	    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) &amp;&amp; setTimeout) {&#xD;	        cachedSetTimeout = setTimeout;&#xD;	        return setTimeout(fun, 0);&#xD;	    }&#xD;	    try {&#xD;	        // when when somebody has screwed with setTimeout but no I.E. maddness&#xD;	        return cachedSetTimeout(fun, 0);&#xD;	    } catch(e){&#xD;	        try {&#xD;	            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t trust the global object when called normally&#xD;	            return cachedSetTimeout.call(null, fun, 0);&#xD;	        } catch(e){&#xD;	            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error&#xD;	            return cachedSetTimeout.call(this, fun, 0);&#xD;	        }&#xD;	    }&#xD;	&#xD;	&#xD;	}&#xD;	function runClearTimeout(marker) {&#xD;	    if (cachedClearTimeout === clearTimeout) {&#xD;	        //normal enviroments in sane situations&#xD;	        return clearTimeout(marker);&#xD;	    }&#xD;	    // if clearTimeout wasn&apos;t available but was latter defined&#xD;	    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) &amp;&amp; clearTimeout) {&#xD;	        cachedClearTimeout = clearTimeout;&#xD;	        return clearTimeout(marker);&#xD;	    }&#xD;	    try {&#xD;	        // when when somebody has screwed with setTimeout but no I.E. maddness&#xD;	        return cachedClearTimeout(marker);&#xD;	    } catch (e){&#xD;	        try {&#xD;	            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t  trust the global object when called normally&#xD;	            return cachedClearTimeout.call(null, marker);&#xD;	        } catch (e){&#xD;	            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error.&#xD;	            // Some versions of I.E. have different rules for clearTimeout vs setTimeout&#xD;	            return cachedClearTimeout.call(this, marker);&#xD;	        }&#xD;	    }&#xD;	&#xD;	&#xD;	&#xD;	}&#xD;	var queue = [];&#xD;	var draining = false;&#xD;	var currentQueue;&#xD;	var queueIndex = -1;&#xD;	&#xD;	function cleanUpNextTick() {&#xD;	    if (!draining || !currentQueue) {&#xD;	        return;&#xD;	    }&#xD;	    draining = false;&#xD;	    if (currentQueue.length) {&#xD;	        queue = currentQueue.concat(queue);&#xD;	    } else {&#xD;	        queueIndex = -1;&#xD;	    }&#xD;	    if (queue.length) {&#xD;	        drainQueue();&#xD;	    }&#xD;	}&#xD;	&#xD;	function drainQueue() {&#xD;	    if (draining) {&#xD;	        return;&#xD;	    }&#xD;	    var timeout = runTimeout(cleanUpNextTick);&#xD;	    draining = true;&#xD;	&#xD;	    var len = queue.length;&#xD;	    while(len) {&#xD;	        currentQueue = queue;&#xD;	        queue = [];&#xD;	        while (++queueIndex &lt; len) {&#xD;	            if (currentQueue) {&#xD;	                currentQueue[queueIndex].run();&#xD;	            }&#xD;	        }&#xD;	        queueIndex = -1;&#xD;	        len = queue.length;&#xD;	    }&#xD;	    currentQueue = null;&#xD;	    draining = false;&#xD;	    runClearTimeout(timeout);&#xD;	}&#xD;	&#xD;	process.nextTick = function (fun) {&#xD;	    var args = new Array(arguments.length - 1);&#xD;	    if (arguments.length &gt; 1) {&#xD;	        for (var i = 1; i &lt; arguments.length; i++) {&#xD;	            args[i - 1] = arguments[i];&#xD;	        }&#xD;	    }&#xD;	    queue.push(new Item(fun, args));&#xD;	    if (queue.length === 1 &amp;&amp; !draining) {&#xD;	        runTimeout(drainQueue);&#xD;	    }&#xD;	};&#xD;	&#xD;	// v8 likes predictible objects&#xD;	function Item(fun, array) {&#xD;	    this.fun = fun;&#xD;	    this.array = array;&#xD;	}&#xD;	Item.prototype.run = function () {&#xD;	    this.fun.apply(null, this.array);&#xD;	};&#xD;	process.title = &apos;browser&apos;;&#xD;	process.browser = true;&#xD;	process.env = {};&#xD;	process.argv = [];&#xD;	process.version = &apos;&apos;; // empty string to avoid regexp issues&#xD;	process.versions = {};&#xD;	&#xD;	function noop() {}&#xD;	&#xD;	process.on = noop;&#xD;	process.addListener = noop;&#xD;	process.once = noop;&#xD;	process.off = noop;&#xD;	process.removeListener = noop;&#xD;	process.removeAllListeners = noop;&#xD;	process.emit = noop;&#xD;	&#xD;	process.binding = function (name) {&#xD;	    throw new Error(&apos;process.binding is not supported&apos;);&#xD;	};&#xD;	&#xD;	process.cwd = function () { return &apos;/&apos; };&#xD;	process.chdir = function (dir) {&#xD;	    throw new Error(&apos;process.chdir is not supported&apos;);&#xD;	};&#xD;	process.umask = function() { return 0; };&#xD;&#xD;&#xD;/***/ },&#xD;/* 19 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	"use strict";&#xD;	&#xD;	Object.defineProperty(exports, "__esModule", {&#xD;	  value: true&#xD;	});&#xD;	exports.default = log;&#xD;	&#xD;	/*eslint no-console:0*/&#xD;	function log() {&#xD;	  var _console;&#xD;	&#xD;	  if ((undefined)) (_console = console).log.apply(_console, arguments);&#xD;	}&#xD;&#xD;/***/ }&#xD;/******/ ])&#xD;});&#xD;;&#xD;//# sourceMappingURL=react-draggable.js.map&#xD;&#xD;/***/ }),&#xD;/* 465 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var React = __webpack_require__(0);&#xD;var ReactDOM = __webpack_require__(37);&#xD;var PropTypes = __webpack_require__(2);&#xD;var ExecutionEnvironment = __webpack_require__(324);&#xD;var ModalPortal = React.createFactory(__webpack_require__(466));&#xD;var ariaAppHider = __webpack_require__(467);&#xD;var refCount = __webpack_require__(469);&#xD;var elementClass = __webpack_require__(309);&#xD;var renderSubtreeIntoContainer = __webpack_require__(37).unstable_renderSubtreeIntoContainer;&#xD;var Assign = __webpack_require__(139);&#xD;var createReactClass = __webpack_require__(131)&#xD;&#xD;var SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};&#xD;var AppElement = ExecutionEnvironment.canUseDOM ? document.body : {appendChild: function() {}};&#xD;&#xD;function getParentElement(parentSelector) {&#xD;  return parentSelector();&#xD;}&#xD;&#xD;var Modal = createReactClass({&#xD;&#xD;  displayName: &apos;Modal&apos;,&#xD;  statics: {&#xD;    setAppElement: function(element) {&#xD;        AppElement = ariaAppHider.setElement(element);&#xD;    },&#xD;    injectCSS: function() {&#xD;      "production" !== "undefined"&#xD;        &amp;&amp; console.warn(&apos;React-Modal: injectCSS has been deprecated &apos; +&#xD;                        &apos;and no longer has any effect. It will be removed in a later version&apos;);&#xD;    }&#xD;  },&#xD;&#xD;  propTypes: {&#xD;    isOpen: PropTypes.bool.isRequired,&#xD;    style: PropTypes.shape({&#xD;      content: PropTypes.object,&#xD;      overlay: PropTypes.object&#xD;    }),&#xD;    portalClassName: PropTypes.string,&#xD;    appElement: PropTypes.instanceOf(SafeHTMLElement),&#xD;    onAfterOpen: PropTypes.func,&#xD;    onRequestClose: PropTypes.func,&#xD;    closeTimeoutMS: PropTypes.number,&#xD;    ariaHideApp: PropTypes.bool,&#xD;    shouldCloseOnOverlayClick: PropTypes.bool,&#xD;    parentSelector: PropTypes.func,&#xD;    role: PropTypes.string,&#xD;    contentLabel: PropTypes.string.isRequired&#xD;  },&#xD;&#xD;  getDefaultProps: function () {&#xD;    return {&#xD;      isOpen: false,&#xD;      portalClassName: &apos;ReactModalPortal&apos;,&#xD;      ariaHideApp: true,&#xD;      closeTimeoutMS: 0,&#xD;      shouldCloseOnOverlayClick: true,&#xD;      parentSelector: function () { return document.body; }&#xD;    };&#xD;  },&#xD;&#xD;  componentDidMount: function() {&#xD;    this.node = document.createElement(&apos;div&apos;);&#xD;    this.node.className = this.props.portalClassName;&#xD;&#xD;    if (this.props.isOpen) refCount.add(this);&#xD;&#xD;    var parent = getParentElement(this.props.parentSelector);&#xD;    parent.appendChild(this.node);&#xD;    this.renderPortal(this.props);&#xD;  },&#xD;&#xD;  componentWillReceiveProps: function(newProps) {&#xD;    if (newProps.isOpen) refCount.add(this);&#xD;    if (!newProps.isOpen) refCount.remove(this);&#xD;    var currentParent = getParentElement(this.props.parentSelector);&#xD;    var newParent = getParentElement(newProps.parentSelector);&#xD;&#xD;    if(newParent !== currentParent) {&#xD;      currentParent.removeChild(this.node);&#xD;      newParent.appendChild(this.node);&#xD;    }&#xD;&#xD;    this.renderPortal(newProps);&#xD;  },&#xD;&#xD;  componentWillUnmount: function() {&#xD;    refCount.remove(this);&#xD;&#xD;    if (this.props.ariaHideApp) {&#xD;      ariaAppHider.show(this.props.appElement);&#xD;    }&#xD;&#xD;    var state = this.portal.state;&#xD;    var now = Date.now();&#xD;    var closesAt = state.isOpen &amp;&amp; this.props.closeTimeoutMS&#xD;      &amp;&amp; (state.closesAt&#xD;        || now + this.props.closeTimeoutMS);&#xD;&#xD;    if (closesAt) {&#xD;      if (!state.beforeClose) {&#xD;        this.portal.closeWithTimeout();&#xD;      }&#xD;&#xD;      var that = this;&#xD;      setTimeout(function() { that.removePortal(); }, closesAt - now);&#xD;    } else {&#xD;      this.removePortal();&#xD;    }&#xD;  },&#xD;&#xD;  removePortal: function() {&#xD;    ReactDOM.unmountComponentAtNode(this.node);&#xD;    var parent = getParentElement(this.props.parentSelector);&#xD;    parent.removeChild(this.node);&#xD;    if (refCount.count() === 0) {&#xD;      elementClass(document.body).remove(&apos;ReactModal__Body--open&apos;);&#xD;    }&#xD;  },&#xD;&#xD;  renderPortal: function(props) {&#xD;    if (props.isOpen || refCount.count() &gt; 0) {&#xD;      elementClass(document.body).add(&apos;ReactModal__Body--open&apos;);&#xD;    } else {&#xD;      elementClass(document.body).remove(&apos;ReactModal__Body--open&apos;);&#xD;    }&#xD;&#xD;    if (props.ariaHideApp) {&#xD;      ariaAppHider.toggle(props.isOpen, props.appElement);&#xD;    }&#xD;&#xD;    this.portal = renderSubtreeIntoContainer(this, ModalPortal(Assign({}, props, {defaultStyles: Modal.defaultStyles})), this.node);&#xD;  },&#xD;&#xD;  render: function () {&#xD;    return React.DOM.noscript();&#xD;  }&#xD;});&#xD;&#xD;Modal.defaultStyles = {&#xD;  overlay: {&#xD;    position        : &apos;fixed&apos;,&#xD;    top             : 0,&#xD;    left            : 0,&#xD;    right           : 0,&#xD;    bottom          : 0,&#xD;    backgroundColor : &apos;rgba(255, 255, 255, 0.75)&apos;&#xD;  },&#xD;  content: {&#xD;    position                : &apos;absolute&apos;,&#xD;    top                     : &apos;40px&apos;,&#xD;    left                    : &apos;40px&apos;,&#xD;    right                   : &apos;40px&apos;,&#xD;    bottom                  : &apos;40px&apos;,&#xD;    border                  : &apos;5px solid #000000&apos;,&#xD;    background              : &apos;#fff&apos;,&#xD;    overflow                : &apos;auto&apos;,&#xD;    WebkitOverflowScrolling : &apos;touch&apos;,&#xD;    borderRadius            : &apos;4px&apos;,&#xD;    outline                 : &apos;none&apos;,&#xD;    padding                 : &apos;20px&apos;&#xD;  }&#xD;}&#xD;&#xD;module.exports = Modal&#xD;&#xD;&#xD;/***/ }),&#xD;/* 466 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var React = __webpack_require__(0);&#xD;var div = React.DOM.div;&#xD;var focusManager = __webpack_require__(468);&#xD;var scopeTab = __webpack_require__(470);&#xD;var Assign = __webpack_require__(139);&#xD;var createReactClass = __webpack_require__(131);&#xD;&#xD;// so that our CSS is statically analyzable&#xD;var CLASS_NAMES = {&#xD;  overlay: {&#xD;    base: &apos;ReactModal__Overlay&apos;,&#xD;    afterOpen: &apos;ReactModal__Overlay--after-open&apos;,&#xD;    beforeClose: &apos;ReactModal__Overlay--before-close&apos;&#xD;  },&#xD;  content: {&#xD;    base: &apos;ReactModal__Content&apos;,&#xD;    afterOpen: &apos;ReactModal__Content--after-open&apos;,&#xD;    beforeClose: &apos;ReactModal__Content--before-close&apos;&#xD;  }&#xD;};&#xD;&#xD;var ModalPortal = module.exports = createReactClass({&#xD;&#xD;  displayName: &apos;ModalPortal&apos;,&#xD;  shouldClose: null,&#xD;&#xD;  getDefaultProps: function() {&#xD;    return {&#xD;      style: {&#xD;        overlay: {},&#xD;        content: {}&#xD;      }&#xD;    };&#xD;  },&#xD;&#xD;  getInitialState: function() {&#xD;    return {&#xD;      afterOpen: false,&#xD;      beforeClose: false&#xD;    };&#xD;  },&#xD;&#xD;  componentDidMount: function() {&#xD;    // Focus needs to be set when mounting and already open&#xD;    if (this.props.isOpen) {&#xD;      this.setFocusAfterRender(true);&#xD;      this.open();&#xD;    }&#xD;  },&#xD;&#xD;  componentWillUnmount: function() {&#xD;    clearTimeout(this.closeTimer);&#xD;  },&#xD;&#xD;  componentWillReceiveProps: function(newProps) {&#xD;    // Focus only needs to be set once when the modal is being opened&#xD;    if (!this.props.isOpen &amp;&amp; newProps.isOpen) {&#xD;      this.setFocusAfterRender(true);&#xD;      this.open();&#xD;    } else if (this.props.isOpen &amp;&amp; !newProps.isOpen) {&#xD;      this.close();&#xD;    }&#xD;  },&#xD;&#xD;  componentDidUpdate: function () {&#xD;    if (this.focusAfterRender) {&#xD;      this.focusContent();&#xD;      this.setFocusAfterRender(false);&#xD;    }&#xD;  },&#xD;&#xD;  setFocusAfterRender: function (focus) {&#xD;    this.focusAfterRender = focus;&#xD;  },&#xD;&#xD;  afterClose: function () {&#xD;    focusManager.returnFocus();&#xD;    focusManager.teardownScopedFocus();&#xD;  },&#xD;&#xD;  open: function () {&#xD;    if (this.state.afterOpen &amp;&amp; this.state.beforeClose) {&#xD;      clearTimeout(this.closeTimer);&#xD;      this.setState({ beforeClose: false });&#xD;    } else {&#xD;      focusManager.setupScopedFocus(this.node);&#xD;      focusManager.markForFocusLater();&#xD;      this.setState({isOpen: true}, function() {&#xD;        this.setState({afterOpen: true});&#xD;&#xD;        if (this.props.isOpen &amp;&amp; this.props.onAfterOpen) {&#xD;          this.props.onAfterOpen();&#xD;        }&#xD;      }.bind(this));&#xD;    }&#xD;  },&#xD;&#xD;  close: function() {&#xD;    if (this.props.closeTimeoutMS &gt; 0)&#xD;      this.closeWithTimeout();&#xD;    else&#xD;      this.closeWithoutTimeout();&#xD;  },&#xD;&#xD;  focusContent: function() {&#xD;    // Don&apos;t steal focus from inner elements&#xD;    if (!this.contentHasFocus()) {&#xD;      this.refs.content.focus();&#xD;    }&#xD;  },&#xD;&#xD;  closeWithTimeout: function() {&#xD;    var closesAt = Date.now() + this.props.closeTimeoutMS;&#xD;    this.setState({beforeClose: true, closesAt: closesAt}, function() {&#xD;      this.closeTimer = setTimeout(this.closeWithoutTimeout, this.state.closesAt - Date.now());&#xD;    }.bind(this));&#xD;  },&#xD;&#xD;  closeWithoutTimeout: function() {&#xD;    this.setState({&#xD;      beforeClose: false,&#xD;      isOpen: false,&#xD;      afterOpen: false,&#xD;      closesAt: null&#xD;    }, this.afterClose);&#xD;  },&#xD;&#xD;  handleKeyDown: function(event) {&#xD;    if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);&#xD;    if (event.keyCode == 27 /*esc*/) {&#xD;      event.preventDefault();&#xD;      this.requestClose(event);&#xD;    }&#xD;  },&#xD;&#xD;  handleOverlayOnClick: function (event) {&#xD;    if (this.shouldClose === null) {&#xD;      this.shouldClose = true;&#xD;    }&#xD;&#xD;    if (this.shouldClose &amp;&amp; this.props.shouldCloseOnOverlayClick) {&#xD;      if (this.ownerHandlesClose())&#xD;        this.requestClose(event);&#xD;      else&#xD;        this.focusContent();&#xD;    }&#xD;    this.shouldClose = null;&#xD;  },&#xD;&#xD;  handleContentOnClick: function () {&#xD;    this.shouldClose = false;&#xD;  },&#xD;&#xD;  requestClose: function(event) {&#xD;    if (this.ownerHandlesClose())&#xD;      this.props.onRequestClose(event);&#xD;  },&#xD;&#xD;  ownerHandlesClose: function() {&#xD;    return this.props.onRequestClose;&#xD;  },&#xD;&#xD;  shouldBeClosed: function() {&#xD;    return !this.state.isOpen &amp;&amp; !this.state.beforeClose;&#xD;  },&#xD;&#xD;  contentHasFocus: function() {&#xD;    return document.activeElement === this.refs.content || this.refs.content.contains(document.activeElement);&#xD;  },&#xD;&#xD;  buildClassName: function(which, additional) {&#xD;    var className = CLASS_NAMES[which].base;&#xD;    if (this.state.afterOpen)&#xD;      className += &apos; &apos;+CLASS_NAMES[which].afterOpen;&#xD;    if (this.state.beforeClose)&#xD;      className += &apos; &apos;+CLASS_NAMES[which].beforeClose;&#xD;    return additional ? className + &apos; &apos; + additional : className;&#xD;  },&#xD;&#xD;  render: function() {&#xD;    var contentStyles = (this.props.className) ? {} : this.props.defaultStyles.content;&#xD;    var overlayStyles = (this.props.overlayClassName) ? {} : this.props.defaultStyles.overlay;&#xD;&#xD;    return this.shouldBeClosed() ? div() : (&#xD;      div({&#xD;        ref: "overlay",&#xD;        className: this.buildClassName(&apos;overlay&apos;, this.props.overlayClassName),&#xD;        style: Assign({}, overlayStyles, this.props.style.overlay || {}),&#xD;        onClick: this.handleOverlayOnClick&#xD;      },&#xD;        div({&#xD;          ref: "content",&#xD;          style: Assign({}, contentStyles, this.props.style.content || {}),&#xD;          className: this.buildClassName(&apos;content&apos;, this.props.className),&#xD;          tabIndex: "-1",&#xD;          onKeyDown: this.handleKeyDown,&#xD;          onClick: this.handleContentOnClick,&#xD;          role: this.props.role,&#xD;          "aria-label": this.props.contentLabel&#xD;        },&#xD;          this.props.children&#xD;        )&#xD;      )&#xD;    );&#xD;  }&#xD;});&#xD;&#xD;&#xD;/***/ }),&#xD;/* 467 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var _element = typeof document !== &apos;undefined&apos; ? document.body : null;&#xD;&#xD;function setElement(element) {&#xD;  if (typeof element === &apos;string&apos;) {&#xD;    var el = document.querySelectorAll(element);&#xD;    element = &apos;length&apos; in el ? el[0] : el;&#xD;  }&#xD;  _element = element || _element;&#xD;  return _element;&#xD;}&#xD;&#xD;function hide(appElement) {&#xD;  validateElement(appElement);&#xD;  (appElement || _element).setAttribute(&apos;aria-hidden&apos;, &apos;true&apos;);&#xD;}&#xD;&#xD;function show(appElement) {&#xD;  validateElement(appElement);&#xD;  (appElement || _element).removeAttribute(&apos;aria-hidden&apos;);&#xD;}&#xD;&#xD;function toggle(shouldHide, appElement) {&#xD;  if (shouldHide)&#xD;    hide(appElement);&#xD;  else&#xD;    show(appElement);&#xD;}&#xD;&#xD;function validateElement(appElement) {&#xD;  if (!appElement &amp;&amp; !_element)&#xD;    throw new Error(&apos;react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible&apos;);&#xD;}&#xD;&#xD;function resetForTesting() {&#xD;  _element = document.body;&#xD;}&#xD;&#xD;exports.toggle = toggle;&#xD;exports.setElement = setElement;&#xD;exports.show = show;&#xD;exports.hide = hide;&#xD;exports.resetForTesting = resetForTesting;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 468 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var findTabbable = __webpack_require__(175);&#xD;var focusLaterElements = [];&#xD;var modalElement = null;&#xD;var needToFocus = false;&#xD;&#xD;function handleBlur(event) {&#xD;  needToFocus = true;&#xD;}&#xD;&#xD;function handleFocus(event) {&#xD;  if (needToFocus) {&#xD;    needToFocus = false;&#xD;    if (!modalElement) {&#xD;      return;&#xD;    }&#xD;    // need to see how jQuery shims document.on(&apos;focusin&apos;) so we don&apos;t need the&#xD;    // setTimeout, firefox doesn&apos;t support focusin, if it did, we could focus&#xD;    // the element outside of a setTimeout. Side-effect of this implementation&#xD;    // is that the document.body gets focus, and then we focus our element right&#xD;    // after, seems fine.&#xD;    setTimeout(function() {&#xD;      if (modalElement.contains(document.activeElement))&#xD;        return;&#xD;      var el = (findTabbable(modalElement)[0] || modalElement);&#xD;      el.focus();&#xD;    }, 0);&#xD;  }&#xD;}&#xD;&#xD;exports.markForFocusLater = function() {&#xD;  focusLaterElements.push(document.activeElement);&#xD;};&#xD;&#xD;exports.returnFocus = function() {&#xD;  var toFocus = null;&#xD;  try {&#xD;    toFocus = focusLaterElements.pop();&#xD;    toFocus.focus();&#xD;    return;&#xD;  }&#xD;  catch (e) {&#xD;    console.warn(&apos;You tried to return focus to &apos;+toFocus+&apos; but it is not in the DOM anymore&apos;);&#xD;  }&#xD;};&#xD;&#xD;exports.setupScopedFocus = function(element) {&#xD;  modalElement = element;&#xD;&#xD;  if (window.addEventListener) {&#xD;    window.addEventListener(&apos;blur&apos;, handleBlur, false);&#xD;    document.addEventListener(&apos;focus&apos;, handleFocus, true);&#xD;  } else {&#xD;    window.attachEvent(&apos;onBlur&apos;, handleBlur);&#xD;    document.attachEvent(&apos;onFocus&apos;, handleFocus);&#xD;  }&#xD;};&#xD;&#xD;exports.teardownScopedFocus = function() {&#xD;  modalElement = null;&#xD;&#xD;  if (window.addEventListener) {&#xD;    window.removeEventListener(&apos;blur&apos;, handleBlur);&#xD;    document.removeEventListener(&apos;focus&apos;, handleFocus);&#xD;  } else {&#xD;    window.detachEvent(&apos;onBlur&apos;, handleBlur);&#xD;    document.detachEvent(&apos;onFocus&apos;, handleFocus);&#xD;  }&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 469 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var modals = [];&#xD;&#xD;module.exports = {&#xD;  add: function (element) {&#xD;    if (modals.indexOf(element) === -1) {&#xD;      modals.push(element);&#xD;    }&#xD;  },&#xD;  remove: function (element) {&#xD;    var index = modals.indexOf(element);&#xD;    if (index === -1) {&#xD;      return;&#xD;    }&#xD;    modals.splice(index, 1);&#xD;  },&#xD;  count: function () {&#xD;    return modals.length;&#xD;  }&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 470 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var findTabbable = __webpack_require__(175);&#xD;&#xD;module.exports = function(node, event) {&#xD;  var tabbable = findTabbable(node);&#xD;  if (!tabbable.length) {&#xD;      event.preventDefault();&#xD;      return;&#xD;  }&#xD;  var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];&#xD;  var leavingFinalTabbable = (&#xD;    finalTabbable === document.activeElement ||&#xD;    // handle immediate shift+tab after opening with mouse&#xD;    node === document.activeElement&#xD;  );&#xD;  if (!leavingFinalTabbable) return;&#xD;  event.preventDefault();&#xD;  var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];&#xD;  target.focus();&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 471 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(2);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_PropTypes__ = __webpack_require__(179);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_warning__ = __webpack_require__(100);&#xD;/* harmony export (immutable) */ __webpack_exports__["b"] = createProvider;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;var didWarnAboutReceivingStore = false;&#xD;function warnAboutReceivingStore() {&#xD;  if (didWarnAboutReceivingStore) {&#xD;    return;&#xD;  }&#xD;  didWarnAboutReceivingStore = true;&#xD;&#xD;  __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__utils_warning__["a" /* default */])(&apos;&lt;Provider&gt; does not support changing `store` on the fly. &apos; + &apos;It is most likely that you see this error because you updated to &apos; + &apos;Redux 2.x and React Redux 2.x which no longer hot reload reducers &apos; + &apos;automatically. See https://github.com/reactjs/react-redux/releases/&apos; + &apos;tag/v2.0.0 for the migration instructions.&apos;);&#xD;}&#xD;&#xD;function createProvider() {&#xD;  var _Provider$childContex;&#xD;&#xD;  var storeKey = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : &apos;store&apos;;&#xD;  var subKey = arguments[1];&#xD;&#xD;  var subscriptionKey = subKey || storeKey + &apos;Subscription&apos;;&#xD;&#xD;  var Provider = function (_Component) {&#xD;    _inherits(Provider, _Component);&#xD;&#xD;    Provider.prototype.getChildContext = function getChildContext() {&#xD;      var _ref;&#xD;&#xD;      return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;&#xD;    };&#xD;&#xD;    function Provider(props, context) {&#xD;      _classCallCheck(this, Provider);&#xD;&#xD;      var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));&#xD;&#xD;      _this[storeKey] = props.store;&#xD;      return _this;&#xD;    }&#xD;&#xD;    Provider.prototype.render = function render() {&#xD;      return __WEBPACK_IMPORTED_MODULE_0_react__["Children"].only(this.props.children);&#xD;    };&#xD;&#xD;    return Provider;&#xD;  }(__WEBPACK_IMPORTED_MODULE_0_react__["Component"]);&#xD;&#xD;  if (true) {&#xD;    Provider.prototype.componentWillReceiveProps = function (nextProps) {&#xD;      if (this[storeKey] !== nextProps.store) {&#xD;        warnAboutReceivingStore();&#xD;      }&#xD;    };&#xD;  }&#xD;&#xD;  Provider.propTypes = {&#xD;    store: __WEBPACK_IMPORTED_MODULE_2__utils_PropTypes__["a" /* storeShape */].isRequired,&#xD;    children: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.element.isRequired&#xD;  };&#xD;  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = __WEBPACK_IMPORTED_MODULE_2__utils_PropTypes__["a" /* storeShape */].isRequired, _Provider$childContex[subscriptionKey] = __WEBPACK_IMPORTED_MODULE_2__utils_PropTypes__["b" /* subscriptionShape */], _Provider$childContex);&#xD;  Provider.displayName = &apos;Provider&apos;;&#xD;&#xD;  return Provider;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (createProvider());&#xD;&#xD;/***/ }),&#xD;/* 472 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_connectAdvanced__ = __webpack_require__(177);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_shallowEqual__ = __webpack_require__(479);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__mapDispatchToProps__ = __webpack_require__(473);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__mapStateToProps__ = __webpack_require__(474);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mergeProps__ = __webpack_require__(475);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__selectorFactory__ = __webpack_require__(476);&#xD;/* unused harmony export createConnect */&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;&#xD;/*&#xD;  connect is a facade over connectAdvanced. It turns its args into a compatible&#xD;  selectorFactory, which has the signature:&#xD;&#xD;    (dispatch, options) =&gt; (nextState, nextOwnProps) =&gt; nextFinalProps&#xD;  &#xD;  connect passes its args to connectAdvanced as options, which will in turn pass them to&#xD;  selectorFactory each time a Connect component instance is instantiated or hot reloaded.&#xD;&#xD;  selectorFactory returns a final props selector from its mapStateToProps,&#xD;  mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,&#xD;  mergePropsFactories, and pure args.&#xD;&#xD;  The resulting final props selector is called by the Connect component instance whenever&#xD;  it receives new props or store state.&#xD; */&#xD;&#xD;function match(arg, factories, name) {&#xD;  for (var i = factories.length - 1; i &gt;= 0; i--) {&#xD;    var result = factories[i](arg);&#xD;    if (result) return result;&#xD;  }&#xD;&#xD;  return function (dispatch, options) {&#xD;    throw new Error(&apos;Invalid value of type &apos; + typeof arg + &apos; for &apos; + name + &apos; argument when connecting component &apos; + options.wrappedComponentName + &apos;.&apos;);&#xD;  };&#xD;}&#xD;&#xD;function strictEqual(a, b) {&#xD;  return a === b;&#xD;}&#xD;&#xD;// createConnect with default args builds the &apos;official&apos; connect behavior. Calling it with&#xD;// different options opens up some testing and extensibility scenarios&#xD;function createConnect() {&#xD;  var _ref = arguments.length &gt; 0 &amp;&amp; arguments[0] !== undefined ? arguments[0] : {},&#xD;      _ref$connectHOC = _ref.connectHOC,&#xD;      connectHOC = _ref$connectHOC === undefined ? __WEBPACK_IMPORTED_MODULE_0__components_connectAdvanced__["a" /* default */] : _ref$connectHOC,&#xD;      _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,&#xD;      mapStateToPropsFactories = _ref$mapStateToPropsF === undefined ? __WEBPACK_IMPORTED_MODULE_3__mapStateToProps__["a" /* default */] : _ref$mapStateToPropsF,&#xD;      _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,&#xD;      mapDispatchToPropsFactories = _ref$mapDispatchToPro === undefined ? __WEBPACK_IMPORTED_MODULE_2__mapDispatchToProps__["a" /* default */] : _ref$mapDispatchToPro,&#xD;      _ref$mergePropsFactor = _ref.mergePropsFactories,&#xD;      mergePropsFactories = _ref$mergePropsFactor === undefined ? __WEBPACK_IMPORTED_MODULE_4__mergeProps__["a" /* default */] : _ref$mergePropsFactor,&#xD;      _ref$selectorFactory = _ref.selectorFactory,&#xD;      selectorFactory = _ref$selectorFactory === undefined ? __WEBPACK_IMPORTED_MODULE_5__selectorFactory__["a" /* default */] : _ref$selectorFactory;&#xD;&#xD;  return function connect(mapStateToProps, mapDispatchToProps, mergeProps) {&#xD;    var _ref2 = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : {},&#xD;        _ref2$pure = _ref2.pure,&#xD;        pure = _ref2$pure === undefined ? true : _ref2$pure,&#xD;        _ref2$areStatesEqual = _ref2.areStatesEqual,&#xD;        areStatesEqual = _ref2$areStatesEqual === undefined ? strictEqual : _ref2$areStatesEqual,&#xD;        _ref2$areOwnPropsEqua = _ref2.areOwnPropsEqual,&#xD;        areOwnPropsEqual = _ref2$areOwnPropsEqua === undefined ? __WEBPACK_IMPORTED_MODULE_1__utils_shallowEqual__["a" /* default */] : _ref2$areOwnPropsEqua,&#xD;        _ref2$areStatePropsEq = _ref2.areStatePropsEqual,&#xD;        areStatePropsEqual = _ref2$areStatePropsEq === undefined ? __WEBPACK_IMPORTED_MODULE_1__utils_shallowEqual__["a" /* default */] : _ref2$areStatePropsEq,&#xD;        _ref2$areMergedPropsE = _ref2.areMergedPropsEqual,&#xD;        areMergedPropsEqual = _ref2$areMergedPropsE === undefined ? __WEBPACK_IMPORTED_MODULE_1__utils_shallowEqual__["a" /* default */] : _ref2$areMergedPropsE,&#xD;        extraOptions = _objectWithoutProperties(_ref2, [&apos;pure&apos;, &apos;areStatesEqual&apos;, &apos;areOwnPropsEqual&apos;, &apos;areStatePropsEqual&apos;, &apos;areMergedPropsEqual&apos;]);&#xD;&#xD;    var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, &apos;mapStateToProps&apos;);&#xD;    var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, &apos;mapDispatchToProps&apos;);&#xD;    var initMergeProps = match(mergeProps, mergePropsFactories, &apos;mergeProps&apos;);&#xD;&#xD;    return connectHOC(selectorFactory, _extends({&#xD;      // used in error messages&#xD;      methodName: &apos;connect&apos;,&#xD;&#xD;      // used to compute Connect&apos;s displayName from the wrapped component&apos;s displayName.&#xD;      getDisplayName: function getDisplayName(name) {&#xD;        return &apos;Connect(&apos; + name + &apos;)&apos;;&#xD;      },&#xD;&#xD;      // if mapStateToProps is falsy, the Connect component doesn&apos;t subscribe to store state changes&#xD;      shouldHandleStateChanges: Boolean(mapStateToProps),&#xD;&#xD;      // passed through to selectorFactory&#xD;      initMapStateToProps: initMapStateToProps,&#xD;      initMapDispatchToProps: initMapDispatchToProps,&#xD;      initMergeProps: initMergeProps,&#xD;      pure: pure,&#xD;      areStatesEqual: areStatesEqual,&#xD;      areOwnPropsEqual: areOwnPropsEqual,&#xD;      areStatePropsEqual: areStatePropsEqual,&#xD;      areMergedPropsEqual: areMergedPropsEqual&#xD;&#xD;    }, extraOptions));&#xD;  };&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = (createConnect());&#xD;&#xD;/***/ }),&#xD;/* 473 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_redux__ = __webpack_require__(76);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__wrapMapToProps__ = __webpack_require__(178);&#xD;/* unused harmony export whenMapDispatchToPropsIsFunction */&#xD;/* unused harmony export whenMapDispatchToPropsIsMissing */&#xD;/* unused harmony export whenMapDispatchToPropsIsObject */&#xD;&#xD;&#xD;&#xD;function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {&#xD;  return typeof mapDispatchToProps === &apos;function&apos; ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__wrapMapToProps__["a" /* wrapMapToPropsFunc */])(mapDispatchToProps, &apos;mapDispatchToProps&apos;) : undefined;&#xD;}&#xD;&#xD;function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {&#xD;  return !mapDispatchToProps ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__wrapMapToProps__["b" /* wrapMapToPropsConstant */])(function (dispatch) {&#xD;    return { dispatch: dispatch };&#xD;  }) : undefined;&#xD;}&#xD;&#xD;function whenMapDispatchToPropsIsObject(mapDispatchToProps) {&#xD;  return mapDispatchToProps &amp;&amp; typeof mapDispatchToProps === &apos;object&apos; ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__wrapMapToProps__["b" /* wrapMapToPropsConstant */])(function (dispatch) {&#xD;    return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_redux__["bindActionCreators"])(mapDispatchToProps, dispatch);&#xD;  }) : undefined;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = ([whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject]);&#xD;&#xD;/***/ }),&#xD;/* 474 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__wrapMapToProps__ = __webpack_require__(178);&#xD;/* unused harmony export whenMapStateToPropsIsFunction */&#xD;/* unused harmony export whenMapStateToPropsIsMissing */&#xD;&#xD;&#xD;function whenMapStateToPropsIsFunction(mapStateToProps) {&#xD;  return typeof mapStateToProps === &apos;function&apos; ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__wrapMapToProps__["a" /* wrapMapToPropsFunc */])(mapStateToProps, &apos;mapStateToProps&apos;) : undefined;&#xD;}&#xD;&#xD;function whenMapStateToPropsIsMissing(mapStateToProps) {&#xD;  return !mapStateToProps ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__wrapMapToProps__["b" /* wrapMapToPropsConstant */])(function () {&#xD;    return {};&#xD;  }) : undefined;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = ([whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing]);&#xD;&#xD;/***/ }),&#xD;/* 475 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_verifyPlainObject__ = __webpack_require__(180);&#xD;/* unused harmony export defaultMergeProps */&#xD;/* unused harmony export wrapMergePropsFunc */&#xD;/* unused harmony export whenMergePropsIsFunction */&#xD;/* unused harmony export whenMergePropsIsOmitted */&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;&#xD;&#xD;function defaultMergeProps(stateProps, dispatchProps, ownProps) {&#xD;  return _extends({}, ownProps, stateProps, dispatchProps);&#xD;}&#xD;&#xD;function wrapMergePropsFunc(mergeProps) {&#xD;  return function initMergePropsProxy(dispatch, _ref) {&#xD;    var displayName = _ref.displayName,&#xD;        pure = _ref.pure,&#xD;        areMergedPropsEqual = _ref.areMergedPropsEqual;&#xD;&#xD;    var hasRunOnce = false;&#xD;    var mergedProps = void 0;&#xD;&#xD;    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {&#xD;      var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);&#xD;&#xD;      if (hasRunOnce) {&#xD;        if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;&#xD;      } else {&#xD;        hasRunOnce = true;&#xD;        mergedProps = nextMergedProps;&#xD;&#xD;        if (true) __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_verifyPlainObject__["a" /* default */])(mergedProps, displayName, &apos;mergeProps&apos;);&#xD;      }&#xD;&#xD;      return mergedProps;&#xD;    };&#xD;  };&#xD;}&#xD;&#xD;function whenMergePropsIsFunction(mergeProps) {&#xD;  return typeof mergeProps === &apos;function&apos; ? wrapMergePropsFunc(mergeProps) : undefined;&#xD;}&#xD;&#xD;function whenMergePropsIsOmitted(mergeProps) {&#xD;  return !mergeProps ? function () {&#xD;    return defaultMergeProps;&#xD;  } : undefined;&#xD;}&#xD;&#xD;/* harmony default export */ __webpack_exports__["a"] = ([whenMergePropsIsFunction, whenMergePropsIsOmitted]);&#xD;&#xD;/***/ }),&#xD;/* 476 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__verifySubselectors__ = __webpack_require__(477);&#xD;/* unused harmony export impureFinalPropsSelectorFactory */&#xD;/* unused harmony export pureFinalPropsSelectorFactory */&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = finalPropsSelectorFactory;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;&#xD;&#xD;function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {&#xD;  return function impureFinalPropsSelector(state, ownProps) {&#xD;    return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);&#xD;  };&#xD;}&#xD;&#xD;function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {&#xD;  var areStatesEqual = _ref.areStatesEqual,&#xD;      areOwnPropsEqual = _ref.areOwnPropsEqual,&#xD;      areStatePropsEqual = _ref.areStatePropsEqual;&#xD;&#xD;  var hasRunAtLeastOnce = false;&#xD;  var state = void 0;&#xD;  var ownProps = void 0;&#xD;  var stateProps = void 0;&#xD;  var dispatchProps = void 0;&#xD;  var mergedProps = void 0;&#xD;&#xD;  function handleFirstCall(firstState, firstOwnProps) {&#xD;    state = firstState;&#xD;    ownProps = firstOwnProps;&#xD;    stateProps = mapStateToProps(state, ownProps);&#xD;    dispatchProps = mapDispatchToProps(dispatch, ownProps);&#xD;    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);&#xD;    hasRunAtLeastOnce = true;&#xD;    return mergedProps;&#xD;  }&#xD;&#xD;  function handleNewPropsAndNewState() {&#xD;    stateProps = mapStateToProps(state, ownProps);&#xD;&#xD;    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);&#xD;&#xD;    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);&#xD;    return mergedProps;&#xD;  }&#xD;&#xD;  function handleNewProps() {&#xD;    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);&#xD;&#xD;    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);&#xD;&#xD;    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);&#xD;    return mergedProps;&#xD;  }&#xD;&#xD;  function handleNewState() {&#xD;    var nextStateProps = mapStateToProps(state, ownProps);&#xD;    var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);&#xD;    stateProps = nextStateProps;&#xD;&#xD;    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);&#xD;&#xD;    return mergedProps;&#xD;  }&#xD;&#xD;  function handleSubsequentCalls(nextState, nextOwnProps) {&#xD;    var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);&#xD;    var stateChanged = !areStatesEqual(nextState, state);&#xD;    state = nextState;&#xD;    ownProps = nextOwnProps;&#xD;&#xD;    if (propsChanged &amp;&amp; stateChanged) return handleNewPropsAndNewState();&#xD;    if (propsChanged) return handleNewProps();&#xD;    if (stateChanged) return handleNewState();&#xD;    return mergedProps;&#xD;  }&#xD;&#xD;  return function pureFinalPropsSelector(nextState, nextOwnProps) {&#xD;    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);&#xD;  };&#xD;}&#xD;&#xD;// TODO: Add more comments&#xD;&#xD;// If pure is true, the selector returned by selectorFactory will memoize its results,&#xD;// allowing connectAdvanced&apos;s shouldComponentUpdate to return false if final&#xD;// props have not changed. If false, the selector will always return a new&#xD;// object and shouldComponentUpdate will always return true.&#xD;&#xD;function finalPropsSelectorFactory(dispatch, _ref2) {&#xD;  var initMapStateToProps = _ref2.initMapStateToProps,&#xD;      initMapDispatchToProps = _ref2.initMapDispatchToProps,&#xD;      initMergeProps = _ref2.initMergeProps,&#xD;      options = _objectWithoutProperties(_ref2, [&apos;initMapStateToProps&apos;, &apos;initMapDispatchToProps&apos;, &apos;initMergeProps&apos;]);&#xD;&#xD;  var mapStateToProps = initMapStateToProps(dispatch, options);&#xD;  var mapDispatchToProps = initMapDispatchToProps(dispatch, options);&#xD;  var mergeProps = initMergeProps(dispatch, options);&#xD;&#xD;  if (true) {&#xD;    __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__verifySubselectors__["a" /* default */])(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);&#xD;  }&#xD;&#xD;  var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;&#xD;&#xD;  return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 477 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_warning__ = __webpack_require__(100);&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = verifySubselectors;&#xD;&#xD;&#xD;function verify(selector, methodName, displayName) {&#xD;  if (!selector) {&#xD;    throw new Error(&apos;Unexpected value for &apos; + methodName + &apos; in &apos; + displayName + &apos;.&apos;);&#xD;  } else if (methodName === &apos;mapStateToProps&apos; || methodName === &apos;mapDispatchToProps&apos;) {&#xD;    if (!selector.hasOwnProperty(&apos;dependsOnOwnProps&apos;)) {&#xD;      __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__utils_warning__["a" /* default */])(&apos;The selector for &apos; + methodName + &apos; of &apos; + displayName + &apos; did not specify a value for dependsOnOwnProps.&apos;);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {&#xD;  verify(mapStateToProps, &apos;mapStateToProps&apos;, displayName);&#xD;  verify(mapDispatchToProps, &apos;mapDispatchToProps&apos;, displayName);&#xD;  verify(mergeProps, &apos;mergeProps&apos;, displayName);&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 478 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; });&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;// encapsulates the subscription logic for connecting a component to the redux store, as&#xD;// well as nesting subscriptions of descendant components, so that we can ensure the&#xD;// ancestor components re-render before descendants&#xD;&#xD;var CLEARED = null;&#xD;var nullListeners = {&#xD;  notify: function notify() {}&#xD;};&#xD;&#xD;function createListenerCollection() {&#xD;  // the current/next pattern is copied from redux&apos;s createStore code.&#xD;  // TODO: refactor+expose that code to be reusable here?&#xD;  var current = [];&#xD;  var next = [];&#xD;&#xD;  return {&#xD;    clear: function clear() {&#xD;      next = CLEARED;&#xD;      current = CLEARED;&#xD;    },&#xD;    notify: function notify() {&#xD;      var listeners = current = next;&#xD;      for (var i = 0; i &lt; listeners.length; i++) {&#xD;        listeners[i]();&#xD;      }&#xD;    },&#xD;    subscribe: function subscribe(listener) {&#xD;      var isSubscribed = true;&#xD;      if (next === current) next = current.slice();&#xD;      next.push(listener);&#xD;&#xD;      return function unsubscribe() {&#xD;        if (!isSubscribed || current === CLEARED) return;&#xD;        isSubscribed = false;&#xD;&#xD;        if (next === current) next = current.slice();&#xD;        next.splice(next.indexOf(listener), 1);&#xD;      };&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;var Subscription = function () {&#xD;  function Subscription(store, parentSub, onStateChange) {&#xD;    _classCallCheck(this, Subscription);&#xD;&#xD;    this.store = store;&#xD;    this.parentSub = parentSub;&#xD;    this.onStateChange = onStateChange;&#xD;    this.unsubscribe = null;&#xD;    this.listeners = nullListeners;&#xD;  }&#xD;&#xD;  Subscription.prototype.addNestedSub = function addNestedSub(listener) {&#xD;    this.trySubscribe();&#xD;    return this.listeners.subscribe(listener);&#xD;  };&#xD;&#xD;  Subscription.prototype.notifyNestedSubs = function notifyNestedSubs() {&#xD;    this.listeners.notify();&#xD;  };&#xD;&#xD;  Subscription.prototype.isSubscribed = function isSubscribed() {&#xD;    return Boolean(this.unsubscribe);&#xD;  };&#xD;&#xD;  Subscription.prototype.trySubscribe = function trySubscribe() {&#xD;    if (!this.unsubscribe) {&#xD;      this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);&#xD;&#xD;      this.listeners = createListenerCollection();&#xD;    }&#xD;  };&#xD;&#xD;  Subscription.prototype.tryUnsubscribe = function tryUnsubscribe() {&#xD;    if (this.unsubscribe) {&#xD;      this.unsubscribe();&#xD;      this.unsubscribe = null;&#xD;      this.listeners.clear();&#xD;      this.listeners = nullListeners;&#xD;    }&#xD;  };&#xD;&#xD;  return Subscription;&#xD;}();&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 479 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = shallowEqual;&#xD;var hasOwn = Object.prototype.hasOwnProperty;&#xD;&#xD;function is(x, y) {&#xD;  if (x === y) {&#xD;    return x !== 0 || y !== 0 || 1 / x === 1 / y;&#xD;  } else {&#xD;    return x !== x &amp;&amp; y !== y;&#xD;  }&#xD;}&#xD;&#xD;function shallowEqual(objA, objB) {&#xD;  if (is(objA, objB)) return true;&#xD;&#xD;  if (typeof objA !== &apos;object&apos; || objA === null || typeof objB !== &apos;object&apos; || objB === null) {&#xD;    return false;&#xD;  }&#xD;&#xD;  var keysA = Object.keys(objA);&#xD;  var keysB = Object.keys(objB);&#xD;&#xD;  if (keysA.length !== keysB.length) return false;&#xD;&#xD;  for (var i = 0; i &lt; keysA.length; i++) {&#xD;    if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {&#xD;      return false;&#xD;    }&#xD;  }&#xD;&#xD;  return true;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 480 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// GENERATED DO NOT EDIT&#xD;module.exports = [&#xD;  "alignContent",&#xD;  "MozAlignContent",&#xD;  "WebkitAlignContent",&#xD;  "MSAlignContent",&#xD;  "OAlignContent",&#xD;  "alignItems",&#xD;  "MozAlignItems",&#xD;  "WebkitAlignItems",&#xD;  "MSAlignItems",&#xD;  "OAlignItems",&#xD;  "alignSelf",&#xD;  "MozAlignSelf",&#xD;  "WebkitAlignSelf",&#xD;  "MSAlignSelf",&#xD;  "OAlignSelf",&#xD;  "all",&#xD;  "MozAll",&#xD;  "WebkitAll",&#xD;  "MSAll",&#xD;  "OAll",&#xD;  "animation",&#xD;  "MozAnimation",&#xD;  "WebkitAnimation",&#xD;  "MSAnimation",&#xD;  "OAnimation",&#xD;  "animationDelay",&#xD;  "MozAnimationDelay",&#xD;  "WebkitAnimationDelay",&#xD;  "MSAnimationDelay",&#xD;  "OAnimationDelay",&#xD;  "animationDirection",&#xD;  "MozAnimationDirection",&#xD;  "WebkitAnimationDirection",&#xD;  "MSAnimationDirection",&#xD;  "OAnimationDirection",&#xD;  "animationDuration",&#xD;  "MozAnimationDuration",&#xD;  "WebkitAnimationDuration",&#xD;  "MSAnimationDuration",&#xD;  "OAnimationDuration",&#xD;  "animationFillMode",&#xD;  "MozAnimationFillMode",&#xD;  "WebkitAnimationFillMode",&#xD;  "MSAnimationFillMode",&#xD;  "OAnimationFillMode",&#xD;  "animationIterationCount",&#xD;  "MozAnimationIterationCount",&#xD;  "WebkitAnimationIterationCount",&#xD;  "MSAnimationIterationCount",&#xD;  "OAnimationIterationCount",&#xD;  "animationName",&#xD;  "MozAnimationName",&#xD;  "WebkitAnimationName",&#xD;  "MSAnimationName",&#xD;  "OAnimationName",&#xD;  "animationPlayState",&#xD;  "MozAnimationPlayState",&#xD;  "WebkitAnimationPlayState",&#xD;  "MSAnimationPlayState",&#xD;  "OAnimationPlayState",&#xD;  "animationTimingFunction",&#xD;  "MozAnimationTimingFunction",&#xD;  "WebkitAnimationTimingFunction",&#xD;  "MSAnimationTimingFunction",&#xD;  "OAnimationTimingFunction",&#xD;  "backfaceVisibility",&#xD;  "MozBackfaceVisibility",&#xD;  "WebkitBackfaceVisibility",&#xD;  "MSBackfaceVisibility",&#xD;  "OBackfaceVisibility",&#xD;  "background",&#xD;  "MozBackground",&#xD;  "WebkitBackground",&#xD;  "MSBackground",&#xD;  "OBackground",&#xD;  "backgroundAttachment",&#xD;  "MozBackgroundAttachment",&#xD;  "WebkitBackgroundAttachment",&#xD;  "MSBackgroundAttachment",&#xD;  "OBackgroundAttachment",&#xD;  "backgroundBlendMode",&#xD;  "MozBackgroundBlendMode",&#xD;  "WebkitBackgroundBlendMode",&#xD;  "MSBackgroundBlendMode",&#xD;  "OBackgroundBlendMode",&#xD;  "backgroundClip",&#xD;  "MozBackgroundClip",&#xD;  "WebkitBackgroundClip",&#xD;  "MSBackgroundClip",&#xD;  "OBackgroundClip",&#xD;  "backgroundColor",&#xD;  "MozBackgroundColor",&#xD;  "WebkitBackgroundColor",&#xD;  "MSBackgroundColor",&#xD;  "OBackgroundColor",&#xD;  "backgroundImage",&#xD;  "MozBackgroundImage",&#xD;  "WebkitBackgroundImage",&#xD;  "MSBackgroundImage",&#xD;  "OBackgroundImage",&#xD;  "backgroundOrigin",&#xD;  "MozBackgroundOrigin",&#xD;  "WebkitBackgroundOrigin",&#xD;  "MSBackgroundOrigin",&#xD;  "OBackgroundOrigin",&#xD;  "backgroundPosition",&#xD;  "MozBackgroundPosition",&#xD;  "WebkitBackgroundPosition",&#xD;  "MSBackgroundPosition",&#xD;  "OBackgroundPosition",&#xD;  "backgroundRepeat",&#xD;  "MozBackgroundRepeat",&#xD;  "WebkitBackgroundRepeat",&#xD;  "MSBackgroundRepeat",&#xD;  "OBackgroundRepeat",&#xD;  "backgroundSize",&#xD;  "MozBackgroundSize",&#xD;  "WebkitBackgroundSize",&#xD;  "MSBackgroundSize",&#xD;  "OBackgroundSize",&#xD;  "blockSize",&#xD;  "MozBlockSize",&#xD;  "WebkitBlockSize",&#xD;  "MSBlockSize",&#xD;  "OBlockSize",&#xD;  "border",&#xD;  "MozBorder",&#xD;  "WebkitBorder",&#xD;  "MSBorder",&#xD;  "OBorder",&#xD;  "borderBlockEnd",&#xD;  "MozBorderBlockEnd",&#xD;  "WebkitBorderBlockEnd",&#xD;  "MSBorderBlockEnd",&#xD;  "OBorderBlockEnd",&#xD;  "borderBlockEndColor",&#xD;  "MozBorderBlockEndColor",&#xD;  "WebkitBorderBlockEndColor",&#xD;  "MSBorderBlockEndColor",&#xD;  "OBorderBlockEndColor",&#xD;  "borderBlockEndStyle",&#xD;  "MozBorderBlockEndStyle",&#xD;  "WebkitBorderBlockEndStyle",&#xD;  "MSBorderBlockEndStyle",&#xD;  "OBorderBlockEndStyle",&#xD;  "borderBlockEndWidth",&#xD;  "MozBorderBlockEndWidth",&#xD;  "WebkitBorderBlockEndWidth",&#xD;  "MSBorderBlockEndWidth",&#xD;  "OBorderBlockEndWidth",&#xD;  "borderBlockStart",&#xD;  "MozBorderBlockStart",&#xD;  "WebkitBorderBlockStart",&#xD;  "MSBorderBlockStart",&#xD;  "OBorderBlockStart",&#xD;  "borderBlockStartColor",&#xD;  "MozBorderBlockStartColor",&#xD;  "WebkitBorderBlockStartColor",&#xD;  "MSBorderBlockStartColor",&#xD;  "OBorderBlockStartColor",&#xD;  "borderBlockStartStyle",&#xD;  "MozBorderBlockStartStyle",&#xD;  "WebkitBorderBlockStartStyle",&#xD;  "MSBorderBlockStartStyle",&#xD;  "OBorderBlockStartStyle",&#xD;  "borderBlockStartWidth",&#xD;  "MozBorderBlockStartWidth",&#xD;  "WebkitBorderBlockStartWidth",&#xD;  "MSBorderBlockStartWidth",&#xD;  "OBorderBlockStartWidth",&#xD;  "borderBottom",&#xD;  "MozBorderBottom",&#xD;  "WebkitBorderBottom",&#xD;  "MSBorderBottom",&#xD;  "OBorderBottom",&#xD;  "borderBottomColor",&#xD;  "MozBorderBottomColor",&#xD;  "WebkitBorderBottomColor",&#xD;  "MSBorderBottomColor",&#xD;  "OBorderBottomColor",&#xD;  "borderBottomLeftRadius",&#xD;  "MozBorderBottomLeftRadius",&#xD;  "WebkitBorderBottomLeftRadius",&#xD;  "MSBorderBottomLeftRadius",&#xD;  "OBorderBottomLeftRadius",&#xD;  "borderBottomRightRadius",&#xD;  "MozBorderBottomRightRadius",&#xD;  "WebkitBorderBottomRightRadius",&#xD;  "MSBorderBottomRightRadius",&#xD;  "OBorderBottomRightRadius",&#xD;  "borderBottomStyle",&#xD;  "MozBorderBottomStyle",&#xD;  "WebkitBorderBottomStyle",&#xD;  "MSBorderBottomStyle",&#xD;  "OBorderBottomStyle",&#xD;  "borderBottomWidth",&#xD;  "MozBorderBottomWidth",&#xD;  "WebkitBorderBottomWidth",&#xD;  "MSBorderBottomWidth",&#xD;  "OBorderBottomWidth",&#xD;  "borderCollapse",&#xD;  "MozBorderCollapse",&#xD;  "WebkitBorderCollapse",&#xD;  "MSBorderCollapse",&#xD;  "OBorderCollapse",&#xD;  "borderColor",&#xD;  "MozBorderColor",&#xD;  "WebkitBorderColor",&#xD;  "MSBorderColor",&#xD;  "OBorderColor",&#xD;  "borderImage",&#xD;  "MozBorderImage",&#xD;  "WebkitBorderImage",&#xD;  "MSBorderImage",&#xD;  "OBorderImage",&#xD;  "borderImageOutset",&#xD;  "MozBorderImageOutset",&#xD;  "WebkitBorderImageOutset",&#xD;  "MSBorderImageOutset",&#xD;  "OBorderImageOutset",&#xD;  "borderImageRepeat",&#xD;  "MozBorderImageRepeat",&#xD;  "WebkitBorderImageRepeat",&#xD;  "MSBorderImageRepeat",&#xD;  "OBorderImageRepeat",&#xD;  "borderImageSlice",&#xD;  "MozBorderImageSlice",&#xD;  "WebkitBorderImageSlice",&#xD;  "MSBorderImageSlice",&#xD;  "OBorderImageSlice",&#xD;  "borderImageSource",&#xD;  "MozBorderImageSource",&#xD;  "WebkitBorderImageSource",&#xD;  "MSBorderImageSource",&#xD;  "OBorderImageSource",&#xD;  "borderImageWidth",&#xD;  "MozBorderImageWidth",&#xD;  "WebkitBorderImageWidth",&#xD;  "MSBorderImageWidth",&#xD;  "OBorderImageWidth",&#xD;  "borderInlineEnd",&#xD;  "MozBorderInlineEnd",&#xD;  "WebkitBorderInlineEnd",&#xD;  "MSBorderInlineEnd",&#xD;  "OBorderInlineEnd",&#xD;  "borderInlineEndColor",&#xD;  "MozBorderInlineEndColor",&#xD;  "WebkitBorderInlineEndColor",&#xD;  "MSBorderInlineEndColor",&#xD;  "OBorderInlineEndColor",&#xD;  "borderInlineEndStyle",&#xD;  "MozBorderInlineEndStyle",&#xD;  "WebkitBorderInlineEndStyle",&#xD;  "MSBorderInlineEndStyle",&#xD;  "OBorderInlineEndStyle",&#xD;  "borderInlineEndWidth",&#xD;  "MozBorderInlineEndWidth",&#xD;  "WebkitBorderInlineEndWidth",&#xD;  "MSBorderInlineEndWidth",&#xD;  "OBorderInlineEndWidth",&#xD;  "borderInlineStart",&#xD;  "MozBorderInlineStart",&#xD;  "WebkitBorderInlineStart",&#xD;  "MSBorderInlineStart",&#xD;  "OBorderInlineStart",&#xD;  "borderInlineStartColor",&#xD;  "MozBorderInlineStartColor",&#xD;  "WebkitBorderInlineStartColor",&#xD;  "MSBorderInlineStartColor",&#xD;  "OBorderInlineStartColor",&#xD;  "borderInlineStartStyle",&#xD;  "MozBorderInlineStartStyle",&#xD;  "WebkitBorderInlineStartStyle",&#xD;  "MSBorderInlineStartStyle",&#xD;  "OBorderInlineStartStyle",&#xD;  "borderInlineStartWidth",&#xD;  "MozBorderInlineStartWidth",&#xD;  "WebkitBorderInlineStartWidth",&#xD;  "MSBorderInlineStartWidth",&#xD;  "OBorderInlineStartWidth",&#xD;  "borderLeft",&#xD;  "MozBorderLeft",&#xD;  "WebkitBorderLeft",&#xD;  "MSBorderLeft",&#xD;  "OBorderLeft",&#xD;  "borderLeftColor",&#xD;  "MozBorderLeftColor",&#xD;  "WebkitBorderLeftColor",&#xD;  "MSBorderLeftColor",&#xD;  "OBorderLeftColor",&#xD;  "borderLeftStyle",&#xD;  "MozBorderLeftStyle",&#xD;  "WebkitBorderLeftStyle",&#xD;  "MSBorderLeftStyle",&#xD;  "OBorderLeftStyle",&#xD;  "borderLeftWidth",&#xD;  "MozBorderLeftWidth",&#xD;  "WebkitBorderLeftWidth",&#xD;  "MSBorderLeftWidth",&#xD;  "OBorderLeftWidth",&#xD;  "borderRadius",&#xD;  "MozBorderRadius",&#xD;  "WebkitBorderRadius",&#xD;  "MSBorderRadius",&#xD;  "OBorderRadius",&#xD;  "borderRight",&#xD;  "MozBorderRight",&#xD;  "WebkitBorderRight",&#xD;  "MSBorderRight",&#xD;  "OBorderRight",&#xD;  "borderRightColor",&#xD;  "MozBorderRightColor",&#xD;  "WebkitBorderRightColor",&#xD;  "MSBorderRightColor",&#xD;  "OBorderRightColor",&#xD;  "borderRightStyle",&#xD;  "MozBorderRightStyle",&#xD;  "WebkitBorderRightStyle",&#xD;  "MSBorderRightStyle",&#xD;  "OBorderRightStyle",&#xD;  "borderRightWidth",&#xD;  "MozBorderRightWidth",&#xD;  "WebkitBorderRightWidth",&#xD;  "MSBorderRightWidth",&#xD;  "OBorderRightWidth",&#xD;  "borderSpacing",&#xD;  "MozBorderSpacing",&#xD;  "WebkitBorderSpacing",&#xD;  "MSBorderSpacing",&#xD;  "OBorderSpacing",&#xD;  "borderStyle",&#xD;  "MozBorderStyle",&#xD;  "WebkitBorderStyle",&#xD;  "MSBorderStyle",&#xD;  "OBorderStyle",&#xD;  "borderTop",&#xD;  "MozBorderTop",&#xD;  "WebkitBorderTop",&#xD;  "MSBorderTop",&#xD;  "OBorderTop",&#xD;  "borderTopColor",&#xD;  "MozBorderTopColor",&#xD;  "WebkitBorderTopColor",&#xD;  "MSBorderTopColor",&#xD;  "OBorderTopColor",&#xD;  "borderTopLeftRadius",&#xD;  "MozBorderTopLeftRadius",&#xD;  "WebkitBorderTopLeftRadius",&#xD;  "MSBorderTopLeftRadius",&#xD;  "OBorderTopLeftRadius",&#xD;  "borderTopRightRadius",&#xD;  "MozBorderTopRightRadius",&#xD;  "WebkitBorderTopRightRadius",&#xD;  "MSBorderTopRightRadius",&#xD;  "OBorderTopRightRadius",&#xD;  "borderTopStyle",&#xD;  "MozBorderTopStyle",&#xD;  "WebkitBorderTopStyle",&#xD;  "MSBorderTopStyle",&#xD;  "OBorderTopStyle",&#xD;  "borderTopWidth",&#xD;  "MozBorderTopWidth",&#xD;  "WebkitBorderTopWidth",&#xD;  "MSBorderTopWidth",&#xD;  "OBorderTopWidth",&#xD;  "borderWidth",&#xD;  "MozBorderWidth",&#xD;  "WebkitBorderWidth",&#xD;  "MSBorderWidth",&#xD;  "OBorderWidth",&#xD;  "bottom",&#xD;  "MozBottom",&#xD;  "WebkitBottom",&#xD;  "MSBottom",&#xD;  "OBottom",&#xD;  "boxDecorationBreak",&#xD;  "MozBoxDecorationBreak",&#xD;  "WebkitBoxDecorationBreak",&#xD;  "MSBoxDecorationBreak",&#xD;  "OBoxDecorationBreak",&#xD;  "boxShadow",&#xD;  "MozBoxShadow",&#xD;  "WebkitBoxShadow",&#xD;  "MSBoxShadow",&#xD;  "OBoxShadow",&#xD;  "boxSizing",&#xD;  "MozBoxSizing",&#xD;  "WebkitBoxSizing",&#xD;  "MSBoxSizing",&#xD;  "OBoxSizing",&#xD;  "breakAfter",&#xD;  "MozBreakAfter",&#xD;  "WebkitBreakAfter",&#xD;  "MSBreakAfter",&#xD;  "OBreakAfter",&#xD;  "breakBefore",&#xD;  "MozBreakBefore",&#xD;  "WebkitBreakBefore",&#xD;  "MSBreakBefore",&#xD;  "OBreakBefore",&#xD;  "breakInside",&#xD;  "MozBreakInside",&#xD;  "WebkitBreakInside",&#xD;  "MSBreakInside",&#xD;  "OBreakInside",&#xD;  "captionSide",&#xD;  "MozCaptionSide",&#xD;  "WebkitCaptionSide",&#xD;  "MSCaptionSide",&#xD;  "OCaptionSide",&#xD;  "caretColor",&#xD;  "MozCaretColor",&#xD;  "WebkitCaretColor",&#xD;  "MSCaretColor",&#xD;  "OCaretColor",&#xD;  "ch",&#xD;  "MozCh",&#xD;  "WebkitCh",&#xD;  "MSCh",&#xD;  "OCh",&#xD;  "clear",&#xD;  "MozClear",&#xD;  "WebkitClear",&#xD;  "MSClear",&#xD;  "OClear",&#xD;  "clip",&#xD;  "MozClip",&#xD;  "WebkitClip",&#xD;  "MSClip",&#xD;  "OClip",&#xD;  "clipPath",&#xD;  "MozClipPath",&#xD;  "WebkitClipPath",&#xD;  "MSClipPath",&#xD;  "OClipPath",&#xD;  "cm",&#xD;  "MozCm",&#xD;  "WebkitCm",&#xD;  "MSCm",&#xD;  "OCm",&#xD;  "color",&#xD;  "MozColor",&#xD;  "WebkitColor",&#xD;  "MSColor",&#xD;  "OColor",&#xD;  "columnCount",&#xD;  "MozColumnCount",&#xD;  "WebkitColumnCount",&#xD;  "MSColumnCount",&#xD;  "OColumnCount",&#xD;  "columnFill",&#xD;  "MozColumnFill",&#xD;  "WebkitColumnFill",&#xD;  "MSColumnFill",&#xD;  "OColumnFill",&#xD;  "columnGap",&#xD;  "MozColumnGap",&#xD;  "WebkitColumnGap",&#xD;  "MSColumnGap",&#xD;  "OColumnGap",&#xD;  "columnRule",&#xD;  "MozColumnRule",&#xD;  "WebkitColumnRule",&#xD;  "MSColumnRule",&#xD;  "OColumnRule",&#xD;  "columnRuleColor",&#xD;  "MozColumnRuleColor",&#xD;  "WebkitColumnRuleColor",&#xD;  "MSColumnRuleColor",&#xD;  "OColumnRuleColor",&#xD;  "columnRuleStyle",&#xD;  "MozColumnRuleStyle",&#xD;  "WebkitColumnRuleStyle",&#xD;  "MSColumnRuleStyle",&#xD;  "OColumnRuleStyle",&#xD;  "columnRuleWidth",&#xD;  "MozColumnRuleWidth",&#xD;  "WebkitColumnRuleWidth",&#xD;  "MSColumnRuleWidth",&#xD;  "OColumnRuleWidth",&#xD;  "columnSpan",&#xD;  "MozColumnSpan",&#xD;  "WebkitColumnSpan",&#xD;  "MSColumnSpan",&#xD;  "OColumnSpan",&#xD;  "columnWidth",&#xD;  "MozColumnWidth",&#xD;  "WebkitColumnWidth",&#xD;  "MSColumnWidth",&#xD;  "OColumnWidth",&#xD;  "columns",&#xD;  "MozColumns",&#xD;  "WebkitColumns",&#xD;  "MSColumns",&#xD;  "OColumns",&#xD;  "content",&#xD;  "MozContent",&#xD;  "WebkitContent",&#xD;  "MSContent",&#xD;  "OContent",&#xD;  "counterIncrement",&#xD;  "MozCounterIncrement",&#xD;  "WebkitCounterIncrement",&#xD;  "MSCounterIncrement",&#xD;  "OCounterIncrement",&#xD;  "counterReset",&#xD;  "MozCounterReset",&#xD;  "WebkitCounterReset",&#xD;  "MSCounterReset",&#xD;  "OCounterReset",&#xD;  "cursor",&#xD;  "MozCursor",&#xD;  "WebkitCursor",&#xD;  "MSCursor",&#xD;  "OCursor",&#xD;  "deg",&#xD;  "MozDeg",&#xD;  "WebkitDeg",&#xD;  "MSDeg",&#xD;  "ODeg",&#xD;  "direction",&#xD;  "MozDirection",&#xD;  "WebkitDirection",&#xD;  "MSDirection",&#xD;  "ODirection",&#xD;  "display",&#xD;  "MozDisplay",&#xD;  "WebkitDisplay",&#xD;  "MSDisplay",&#xD;  "ODisplay",&#xD;  "dpcm",&#xD;  "MozDpcm",&#xD;  "WebkitDpcm",&#xD;  "MSDpcm",&#xD;  "ODpcm",&#xD;  "dpi",&#xD;  "MozDpi",&#xD;  "WebkitDpi",&#xD;  "MSDpi",&#xD;  "ODpi",&#xD;  "dppx",&#xD;  "MozDppx",&#xD;  "WebkitDppx",&#xD;  "MSDppx",&#xD;  "ODppx",&#xD;  "em",&#xD;  "MozEm",&#xD;  "WebkitEm",&#xD;  "MSEm",&#xD;  "OEm",&#xD;  "emptyCells",&#xD;  "MozEmptyCells",&#xD;  "WebkitEmptyCells",&#xD;  "MSEmptyCells",&#xD;  "OEmptyCells",&#xD;  "ex",&#xD;  "MozEx",&#xD;  "WebkitEx",&#xD;  "MSEx",&#xD;  "OEx",&#xD;  "filter",&#xD;  "MozFilter",&#xD;  "WebkitFilter",&#xD;  "MSFilter",&#xD;  "OFilter",&#xD;  "flexBasis",&#xD;  "MozFlexBasis",&#xD;  "WebkitFlexBasis",&#xD;  "MSFlexBasis",&#xD;  "OFlexBasis",&#xD;  "flexDirection",&#xD;  "MozFlexDirection",&#xD;  "WebkitFlexDirection",&#xD;  "MSFlexDirection",&#xD;  "OFlexDirection",&#xD;  "flexFlow",&#xD;  "MozFlexFlow",&#xD;  "WebkitFlexFlow",&#xD;  "MSFlexFlow",&#xD;  "OFlexFlow",&#xD;  "flexGrow",&#xD;  "MozFlexGrow",&#xD;  "WebkitFlexGrow",&#xD;  "MSFlexGrow",&#xD;  "OFlexGrow",&#xD;  "flexShrink",&#xD;  "MozFlexShrink",&#xD;  "WebkitFlexShrink",&#xD;  "MSFlexShrink",&#xD;  "OFlexShrink",&#xD;  "flexWrap",&#xD;  "MozFlexWrap",&#xD;  "WebkitFlexWrap",&#xD;  "MSFlexWrap",&#xD;  "OFlexWrap",&#xD;  "float",&#xD;  "MozFloat",&#xD;  "WebkitFloat",&#xD;  "MSFloat",&#xD;  "OFloat",&#xD;  "font",&#xD;  "MozFont",&#xD;  "WebkitFont",&#xD;  "MSFont",&#xD;  "OFont",&#xD;  "fontFamily",&#xD;  "MozFontFamily",&#xD;  "WebkitFontFamily",&#xD;  "MSFontFamily",&#xD;  "OFontFamily",&#xD;  "fontFeatureSettings",&#xD;  "MozFontFeatureSettings",&#xD;  "WebkitFontFeatureSettings",&#xD;  "MSFontFeatureSettings",&#xD;  "OFontFeatureSettings",&#xD;  "fontKerning",&#xD;  "MozFontKerning",&#xD;  "WebkitFontKerning",&#xD;  "MSFontKerning",&#xD;  "OFontKerning",&#xD;  "fontLanguageOverride",&#xD;  "MozFontLanguageOverride",&#xD;  "WebkitFontLanguageOverride",&#xD;  "MSFontLanguageOverride",&#xD;  "OFontLanguageOverride",&#xD;  "fontSize",&#xD;  "MozFontSize",&#xD;  "WebkitFontSize",&#xD;  "MSFontSize",&#xD;  "OFontSize",&#xD;  "fontSizeAdjust",&#xD;  "MozFontSizeAdjust",&#xD;  "WebkitFontSizeAdjust",&#xD;  "MSFontSizeAdjust",&#xD;  "OFontSizeAdjust",&#xD;  "fontStretch",&#xD;  "MozFontStretch",&#xD;  "WebkitFontStretch",&#xD;  "MSFontStretch",&#xD;  "OFontStretch",&#xD;  "fontStyle",&#xD;  "MozFontStyle",&#xD;  "WebkitFontStyle",&#xD;  "MSFontStyle",&#xD;  "OFontStyle",&#xD;  "fontSynthesis",&#xD;  "MozFontSynthesis",&#xD;  "WebkitFontSynthesis",&#xD;  "MSFontSynthesis",&#xD;  "OFontSynthesis",&#xD;  "fontVariant",&#xD;  "MozFontVariant",&#xD;  "WebkitFontVariant",&#xD;  "MSFontVariant",&#xD;  "OFontVariant",&#xD;  "fontVariantAlternates",&#xD;  "MozFontVariantAlternates",&#xD;  "WebkitFontVariantAlternates",&#xD;  "MSFontVariantAlternates",&#xD;  "OFontVariantAlternates",&#xD;  "fontVariantCaps",&#xD;  "MozFontVariantCaps",&#xD;  "WebkitFontVariantCaps",&#xD;  "MSFontVariantCaps",&#xD;  "OFontVariantCaps",&#xD;  "fontVariantEastAsian",&#xD;  "MozFontVariantEastAsian",&#xD;  "WebkitFontVariantEastAsian",&#xD;  "MSFontVariantEastAsian",&#xD;  "OFontVariantEastAsian",&#xD;  "fontVariantLigatures",&#xD;  "MozFontVariantLigatures",&#xD;  "WebkitFontVariantLigatures",&#xD;  "MSFontVariantLigatures",&#xD;  "OFontVariantLigatures",&#xD;  "fontVariantNumeric",&#xD;  "MozFontVariantNumeric",&#xD;  "WebkitFontVariantNumeric",&#xD;  "MSFontVariantNumeric",&#xD;  "OFontVariantNumeric",&#xD;  "fontVariantPosition",&#xD;  "MozFontVariantPosition",&#xD;  "WebkitFontVariantPosition",&#xD;  "MSFontVariantPosition",&#xD;  "OFontVariantPosition",&#xD;  "fontWeight",&#xD;  "MozFontWeight",&#xD;  "WebkitFontWeight",&#xD;  "MSFontWeight",&#xD;  "OFontWeight",&#xD;  "fr",&#xD;  "MozFr",&#xD;  "WebkitFr",&#xD;  "MSFr",&#xD;  "OFr",&#xD;  "grad",&#xD;  "MozGrad",&#xD;  "WebkitGrad",&#xD;  "MSGrad",&#xD;  "OGrad",&#xD;  "grid",&#xD;  "MozGrid",&#xD;  "WebkitGrid",&#xD;  "MSGrid",&#xD;  "OGrid",&#xD;  "gridArea",&#xD;  "MozGridArea",&#xD;  "WebkitGridArea",&#xD;  "MSGridArea",&#xD;  "OGridArea",&#xD;  "gridAutoColumns",&#xD;  "MozGridAutoColumns",&#xD;  "WebkitGridAutoColumns",&#xD;  "MSGridAutoColumns",&#xD;  "OGridAutoColumns",&#xD;  "gridAutoFlow",&#xD;  "MozGridAutoFlow",&#xD;  "WebkitGridAutoFlow",&#xD;  "MSGridAutoFlow",&#xD;  "OGridAutoFlow",&#xD;  "gridAutoRows",&#xD;  "MozGridAutoRows",&#xD;  "WebkitGridAutoRows",&#xD;  "MSGridAutoRows",&#xD;  "OGridAutoRows",&#xD;  "gridColumn",&#xD;  "MozGridColumn",&#xD;  "WebkitGridColumn",&#xD;  "MSGridColumn",&#xD;  "OGridColumn",&#xD;  "gridColumnEnd",&#xD;  "MozGridColumnEnd",&#xD;  "WebkitGridColumnEnd",&#xD;  "MSGridColumnEnd",&#xD;  "OGridColumnEnd",&#xD;  "gridColumnGap",&#xD;  "MozGridColumnGap",&#xD;  "WebkitGridColumnGap",&#xD;  "MSGridColumnGap",&#xD;  "OGridColumnGap",&#xD;  "gridColumnStart",&#xD;  "MozGridColumnStart",&#xD;  "WebkitGridColumnStart",&#xD;  "MSGridColumnStart",&#xD;  "OGridColumnStart",&#xD;  "gridGap",&#xD;  "MozGridGap",&#xD;  "WebkitGridGap",&#xD;  "MSGridGap",&#xD;  "OGridGap",&#xD;  "gridRow",&#xD;  "MozGridRow",&#xD;  "WebkitGridRow",&#xD;  "MSGridRow",&#xD;  "OGridRow",&#xD;  "gridRowEnd",&#xD;  "MozGridRowEnd",&#xD;  "WebkitGridRowEnd",&#xD;  "MSGridRowEnd",&#xD;  "OGridRowEnd",&#xD;  "gridRowGap",&#xD;  "MozGridRowGap",&#xD;  "WebkitGridRowGap",&#xD;  "MSGridRowGap",&#xD;  "OGridRowGap",&#xD;  "gridRowStart",&#xD;  "MozGridRowStart",&#xD;  "WebkitGridRowStart",&#xD;  "MSGridRowStart",&#xD;  "OGridRowStart",&#xD;  "gridTemplate",&#xD;  "MozGridTemplate",&#xD;  "WebkitGridTemplate",&#xD;  "MSGridTemplate",&#xD;  "OGridTemplate",&#xD;  "gridTemplateAreas",&#xD;  "MozGridTemplateAreas",&#xD;  "WebkitGridTemplateAreas",&#xD;  "MSGridTemplateAreas",&#xD;  "OGridTemplateAreas",&#xD;  "gridTemplateColumns",&#xD;  "MozGridTemplateColumns",&#xD;  "WebkitGridTemplateColumns",&#xD;  "MSGridTemplateColumns",&#xD;  "OGridTemplateColumns",&#xD;  "gridTemplateRows",&#xD;  "MozGridTemplateRows",&#xD;  "WebkitGridTemplateRows",&#xD;  "MSGridTemplateRows",&#xD;  "OGridTemplateRows",&#xD;  "height",&#xD;  "MozHeight",&#xD;  "WebkitHeight",&#xD;  "MSHeight",&#xD;  "OHeight",&#xD;  "hyphens",&#xD;  "MozHyphens",&#xD;  "WebkitHyphens",&#xD;  "MSHyphens",&#xD;  "OHyphens",&#xD;  "hz",&#xD;  "MozHz",&#xD;  "WebkitHz",&#xD;  "MSHz",&#xD;  "OHz",&#xD;  "imageOrientation",&#xD;  "MozImageOrientation",&#xD;  "WebkitImageOrientation",&#xD;  "MSImageOrientation",&#xD;  "OImageOrientation",&#xD;  "imageRendering",&#xD;  "MozImageRendering",&#xD;  "WebkitImageRendering",&#xD;  "MSImageRendering",&#xD;  "OImageRendering",&#xD;  "imageResolution",&#xD;  "MozImageResolution",&#xD;  "WebkitImageResolution",&#xD;  "MSImageResolution",&#xD;  "OImageResolution",&#xD;  "imeMode",&#xD;  "MozImeMode",&#xD;  "WebkitImeMode",&#xD;  "MSImeMode",&#xD;  "OImeMode",&#xD;  "in",&#xD;  "MozIn",&#xD;  "WebkitIn",&#xD;  "MSIn",&#xD;  "OIn",&#xD;  "inherit",&#xD;  "MozInherit",&#xD;  "WebkitInherit",&#xD;  "MSInherit",&#xD;  "OInherit",&#xD;  "initial",&#xD;  "MozInitial",&#xD;  "WebkitInitial",&#xD;  "MSInitial",&#xD;  "OInitial",&#xD;  "inlineSize",&#xD;  "MozInlineSize",&#xD;  "WebkitInlineSize",&#xD;  "MSInlineSize",&#xD;  "OInlineSize",&#xD;  "isolation",&#xD;  "MozIsolation",&#xD;  "WebkitIsolation",&#xD;  "MSIsolation",&#xD;  "OIsolation",&#xD;  "justifyContent",&#xD;  "MozJustifyContent",&#xD;  "WebkitJustifyContent",&#xD;  "MSJustifyContent",&#xD;  "OJustifyContent",&#xD;  "khz",&#xD;  "MozKhz",&#xD;  "WebkitKhz",&#xD;  "MSKhz",&#xD;  "OKhz",&#xD;  "left",&#xD;  "MozLeft",&#xD;  "WebkitLeft",&#xD;  "MSLeft",&#xD;  "OLeft",&#xD;  "letterSpacing",&#xD;  "MozLetterSpacing",&#xD;  "WebkitLetterSpacing",&#xD;  "MSLetterSpacing",&#xD;  "OLetterSpacing",&#xD;  "lineBreak",&#xD;  "MozLineBreak",&#xD;  "WebkitLineBreak",&#xD;  "MSLineBreak",&#xD;  "OLineBreak",&#xD;  "lineHeight",&#xD;  "MozLineHeight",&#xD;  "WebkitLineHeight",&#xD;  "MSLineHeight",&#xD;  "OLineHeight",&#xD;  "listStyle",&#xD;  "MozListStyle",&#xD;  "WebkitListStyle",&#xD;  "MSListStyle",&#xD;  "OListStyle",&#xD;  "listStyleImage",&#xD;  "MozListStyleImage",&#xD;  "WebkitListStyleImage",&#xD;  "MSListStyleImage",&#xD;  "OListStyleImage",&#xD;  "listStylePosition",&#xD;  "MozListStylePosition",&#xD;  "WebkitListStylePosition",&#xD;  "MSListStylePosition",&#xD;  "OListStylePosition",&#xD;  "listStyleType",&#xD;  "MozListStyleType",&#xD;  "WebkitListStyleType",&#xD;  "MSListStyleType",&#xD;  "OListStyleType",&#xD;  "margin",&#xD;  "MozMargin",&#xD;  "WebkitMargin",&#xD;  "MSMargin",&#xD;  "OMargin",&#xD;  "marginBlockEnd",&#xD;  "MozMarginBlockEnd",&#xD;  "WebkitMarginBlockEnd",&#xD;  "MSMarginBlockEnd",&#xD;  "OMarginBlockEnd",&#xD;  "marginBlockStart",&#xD;  "MozMarginBlockStart",&#xD;  "WebkitMarginBlockStart",&#xD;  "MSMarginBlockStart",&#xD;  "OMarginBlockStart",&#xD;  "marginBottom",&#xD;  "MozMarginBottom",&#xD;  "WebkitMarginBottom",&#xD;  "MSMarginBottom",&#xD;  "OMarginBottom",&#xD;  "marginInlineEnd",&#xD;  "MozMarginInlineEnd",&#xD;  "WebkitMarginInlineEnd",&#xD;  "MSMarginInlineEnd",&#xD;  "OMarginInlineEnd",&#xD;  "marginInlineStart",&#xD;  "MozMarginInlineStart",&#xD;  "WebkitMarginInlineStart",&#xD;  "MSMarginInlineStart",&#xD;  "OMarginInlineStart",&#xD;  "marginLeft",&#xD;  "MozMarginLeft",&#xD;  "WebkitMarginLeft",&#xD;  "MSMarginLeft",&#xD;  "OMarginLeft",&#xD;  "marginRight",&#xD;  "MozMarginRight",&#xD;  "WebkitMarginRight",&#xD;  "MSMarginRight",&#xD;  "OMarginRight",&#xD;  "marginTop",&#xD;  "MozMarginTop",&#xD;  "WebkitMarginTop",&#xD;  "MSMarginTop",&#xD;  "OMarginTop",&#xD;  "mask",&#xD;  "MozMask",&#xD;  "WebkitMask",&#xD;  "MSMask",&#xD;  "OMask",&#xD;  "maskClip",&#xD;  "MozMaskClip",&#xD;  "WebkitMaskClip",&#xD;  "MSMaskClip",&#xD;  "OMaskClip",&#xD;  "maskComposite",&#xD;  "MozMaskComposite",&#xD;  "WebkitMaskComposite",&#xD;  "MSMaskComposite",&#xD;  "OMaskComposite",&#xD;  "maskImage",&#xD;  "MozMaskImage",&#xD;  "WebkitMaskImage",&#xD;  "MSMaskImage",&#xD;  "OMaskImage",&#xD;  "maskMode",&#xD;  "MozMaskMode",&#xD;  "WebkitMaskMode",&#xD;  "MSMaskMode",&#xD;  "OMaskMode",&#xD;  "maskOrigin",&#xD;  "MozMaskOrigin",&#xD;  "WebkitMaskOrigin",&#xD;  "MSMaskOrigin",&#xD;  "OMaskOrigin",&#xD;  "maskPosition",&#xD;  "MozMaskPosition",&#xD;  "WebkitMaskPosition",&#xD;  "MSMaskPosition",&#xD;  "OMaskPosition",&#xD;  "maskRepeat",&#xD;  "MozMaskRepeat",&#xD;  "WebkitMaskRepeat",&#xD;  "MSMaskRepeat",&#xD;  "OMaskRepeat",&#xD;  "maskSize",&#xD;  "MozMaskSize",&#xD;  "WebkitMaskSize",&#xD;  "MSMaskSize",&#xD;  "OMaskSize",&#xD;  "maskType",&#xD;  "MozMaskType",&#xD;  "WebkitMaskType",&#xD;  "MSMaskType",&#xD;  "OMaskType",&#xD;  "maxHeight",&#xD;  "MozMaxHeight",&#xD;  "WebkitMaxHeight",&#xD;  "MSMaxHeight",&#xD;  "OMaxHeight",&#xD;  "maxWidth",&#xD;  "MozMaxWidth",&#xD;  "WebkitMaxWidth",&#xD;  "MSMaxWidth",&#xD;  "OMaxWidth",&#xD;  "minBlockSize",&#xD;  "MozMinBlockSize",&#xD;  "WebkitMinBlockSize",&#xD;  "MSMinBlockSize",&#xD;  "OMinBlockSize",&#xD;  "minHeight",&#xD;  "MozMinHeight",&#xD;  "WebkitMinHeight",&#xD;  "MSMinHeight",&#xD;  "OMinHeight",&#xD;  "minInlineSize",&#xD;  "MozMinInlineSize",&#xD;  "WebkitMinInlineSize",&#xD;  "MSMinInlineSize",&#xD;  "OMinInlineSize",&#xD;  "minWidth",&#xD;  "MozMinWidth",&#xD;  "WebkitMinWidth",&#xD;  "MSMinWidth",&#xD;  "OMinWidth",&#xD;  "mixBlendMode",&#xD;  "MozMixBlendMode",&#xD;  "WebkitMixBlendMode",&#xD;  "MSMixBlendMode",&#xD;  "OMixBlendMode",&#xD;  "mm",&#xD;  "MozMm",&#xD;  "WebkitMm",&#xD;  "MSMm",&#xD;  "OMm",&#xD;  "ms",&#xD;  "MozMs",&#xD;  "WebkitMs",&#xD;  "MSMs",&#xD;  "OMs",&#xD;  "objectFit",&#xD;  "MozObjectFit",&#xD;  "WebkitObjectFit",&#xD;  "MSObjectFit",&#xD;  "OObjectFit",&#xD;  "objectPosition",&#xD;  "MozObjectPosition",&#xD;  "WebkitObjectPosition",&#xD;  "MSObjectPosition",&#xD;  "OObjectPosition",&#xD;  "offsetBlockEnd",&#xD;  "MozOffsetBlockEnd",&#xD;  "WebkitOffsetBlockEnd",&#xD;  "MSOffsetBlockEnd",&#xD;  "OOffsetBlockEnd",&#xD;  "offsetBlockStart",&#xD;  "MozOffsetBlockStart",&#xD;  "WebkitOffsetBlockStart",&#xD;  "MSOffsetBlockStart",&#xD;  "OOffsetBlockStart",&#xD;  "offsetInlineEnd",&#xD;  "MozOffsetInlineEnd",&#xD;  "WebkitOffsetInlineEnd",&#xD;  "MSOffsetInlineEnd",&#xD;  "OOffsetInlineEnd",&#xD;  "offsetInlineStart",&#xD;  "MozOffsetInlineStart",&#xD;  "WebkitOffsetInlineStart",&#xD;  "MSOffsetInlineStart",&#xD;  "OOffsetInlineStart",&#xD;  "opacity",&#xD;  "MozOpacity",&#xD;  "WebkitOpacity",&#xD;  "MSOpacity",&#xD;  "OOpacity",&#xD;  "order",&#xD;  "MozOrder",&#xD;  "WebkitOrder",&#xD;  "MSOrder",&#xD;  "OOrder",&#xD;  "orphans",&#xD;  "MozOrphans",&#xD;  "WebkitOrphans",&#xD;  "MSOrphans",&#xD;  "OOrphans",&#xD;  "outline",&#xD;  "MozOutline",&#xD;  "WebkitOutline",&#xD;  "MSOutline",&#xD;  "OOutline",&#xD;  "outlineColor",&#xD;  "MozOutlineColor",&#xD;  "WebkitOutlineColor",&#xD;  "MSOutlineColor",&#xD;  "OOutlineColor",&#xD;  "outlineOffset",&#xD;  "MozOutlineOffset",&#xD;  "WebkitOutlineOffset",&#xD;  "MSOutlineOffset",&#xD;  "OOutlineOffset",&#xD;  "outlineStyle",&#xD;  "MozOutlineStyle",&#xD;  "WebkitOutlineStyle",&#xD;  "MSOutlineStyle",&#xD;  "OOutlineStyle",&#xD;  "outlineWidth",&#xD;  "MozOutlineWidth",&#xD;  "WebkitOutlineWidth",&#xD;  "MSOutlineWidth",&#xD;  "OOutlineWidth",&#xD;  "overflow",&#xD;  "MozOverflow",&#xD;  "WebkitOverflow",&#xD;  "MSOverflow",&#xD;  "OOverflow",&#xD;  "overflowWrap",&#xD;  "MozOverflowWrap",&#xD;  "WebkitOverflowWrap",&#xD;  "MSOverflowWrap",&#xD;  "OOverflowWrap",&#xD;  "overflowX",&#xD;  "MozOverflowX",&#xD;  "WebkitOverflowX",&#xD;  "MSOverflowX",&#xD;  "OOverflowX",&#xD;  "overflowY",&#xD;  "MozOverflowY",&#xD;  "WebkitOverflowY",&#xD;  "MSOverflowY",&#xD;  "OOverflowY",&#xD;  "padding",&#xD;  "MozPadding",&#xD;  "WebkitPadding",&#xD;  "MSPadding",&#xD;  "OPadding",&#xD;  "paddingBlockEnd",&#xD;  "MozPaddingBlockEnd",&#xD;  "WebkitPaddingBlockEnd",&#xD;  "MSPaddingBlockEnd",&#xD;  "OPaddingBlockEnd",&#xD;  "paddingBlockStart",&#xD;  "MozPaddingBlockStart",&#xD;  "WebkitPaddingBlockStart",&#xD;  "MSPaddingBlockStart",&#xD;  "OPaddingBlockStart",&#xD;  "paddingBottom",&#xD;  "MozPaddingBottom",&#xD;  "WebkitPaddingBottom",&#xD;  "MSPaddingBottom",&#xD;  "OPaddingBottom",&#xD;  "paddingInlineEnd",&#xD;  "MozPaddingInlineEnd",&#xD;  "WebkitPaddingInlineEnd",&#xD;  "MSPaddingInlineEnd",&#xD;  "OPaddingInlineEnd",&#xD;  "paddingInlineStart",&#xD;  "MozPaddingInlineStart",&#xD;  "WebkitPaddingInlineStart",&#xD;  "MSPaddingInlineStart",&#xD;  "OPaddingInlineStart",&#xD;  "paddingLeft",&#xD;  "MozPaddingLeft",&#xD;  "WebkitPaddingLeft",&#xD;  "MSPaddingLeft",&#xD;  "OPaddingLeft",&#xD;  "paddingRight",&#xD;  "MozPaddingRight",&#xD;  "WebkitPaddingRight",&#xD;  "MSPaddingRight",&#xD;  "OPaddingRight",&#xD;  "paddingTop",&#xD;  "MozPaddingTop",&#xD;  "WebkitPaddingTop",&#xD;  "MSPaddingTop",&#xD;  "OPaddingTop",&#xD;  "pageBreakAfter",&#xD;  "MozPageBreakAfter",&#xD;  "WebkitPageBreakAfter",&#xD;  "MSPageBreakAfter",&#xD;  "OPageBreakAfter",&#xD;  "pageBreakBefore",&#xD;  "MozPageBreakBefore",&#xD;  "WebkitPageBreakBefore",&#xD;  "MSPageBreakBefore",&#xD;  "OPageBreakBefore",&#xD;  "pageBreakInside",&#xD;  "MozPageBreakInside",&#xD;  "WebkitPageBreakInside",&#xD;  "MSPageBreakInside",&#xD;  "OPageBreakInside",&#xD;  "pc",&#xD;  "MozPc",&#xD;  "WebkitPc",&#xD;  "MSPc",&#xD;  "OPc",&#xD;  "perspective",&#xD;  "MozPerspective",&#xD;  "WebkitPerspective",&#xD;  "MSPerspective",&#xD;  "OPerspective",&#xD;  "perspectiveOrigin",&#xD;  "MozPerspectiveOrigin",&#xD;  "WebkitPerspectiveOrigin",&#xD;  "MSPerspectiveOrigin",&#xD;  "OPerspectiveOrigin",&#xD;  "pointerEvents",&#xD;  "MozPointerEvents",&#xD;  "WebkitPointerEvents",&#xD;  "MSPointerEvents",&#xD;  "OPointerEvents",&#xD;  "position",&#xD;  "MozPosition",&#xD;  "WebkitPosition",&#xD;  "MSPosition",&#xD;  "OPosition",&#xD;  "pt",&#xD;  "MozPt",&#xD;  "WebkitPt",&#xD;  "MSPt",&#xD;  "OPt",&#xD;  "px",&#xD;  "MozPx",&#xD;  "WebkitPx",&#xD;  "MSPx",&#xD;  "OPx",&#xD;  "q",&#xD;  "MozQ",&#xD;  "WebkitQ",&#xD;  "MSQ",&#xD;  "OQ",&#xD;  "quotes",&#xD;  "MozQuotes",&#xD;  "WebkitQuotes",&#xD;  "MSQuotes",&#xD;  "OQuotes",&#xD;  "rad",&#xD;  "MozRad",&#xD;  "WebkitRad",&#xD;  "MSRad",&#xD;  "ORad",&#xD;  "rem",&#xD;  "MozRem",&#xD;  "WebkitRem",&#xD;  "MSRem",&#xD;  "ORem",&#xD;  "resize",&#xD;  "MozResize",&#xD;  "WebkitResize",&#xD;  "MSResize",&#xD;  "OResize",&#xD;  "revert",&#xD;  "MozRevert",&#xD;  "WebkitRevert",&#xD;  "MSRevert",&#xD;  "ORevert",&#xD;  "right",&#xD;  "MozRight",&#xD;  "WebkitRight",&#xD;  "MSRight",&#xD;  "ORight",&#xD;  "rubyAlign",&#xD;  "MozRubyAlign",&#xD;  "WebkitRubyAlign",&#xD;  "MSRubyAlign",&#xD;  "ORubyAlign",&#xD;  "rubyMerge",&#xD;  "MozRubyMerge",&#xD;  "WebkitRubyMerge",&#xD;  "MSRubyMerge",&#xD;  "ORubyMerge",&#xD;  "rubyPosition",&#xD;  "MozRubyPosition",&#xD;  "WebkitRubyPosition",&#xD;  "MSRubyPosition",&#xD;  "ORubyPosition",&#xD;  "s",&#xD;  "MozS",&#xD;  "WebkitS",&#xD;  "MSS",&#xD;  "OS",&#xD;  "scrollBehavior",&#xD;  "MozScrollBehavior",&#xD;  "WebkitScrollBehavior",&#xD;  "MSScrollBehavior",&#xD;  "OScrollBehavior",&#xD;  "scrollSnapCoordinate",&#xD;  "MozScrollSnapCoordinate",&#xD;  "WebkitScrollSnapCoordinate",&#xD;  "MSScrollSnapCoordinate",&#xD;  "OScrollSnapCoordinate",&#xD;  "scrollSnapDestination",&#xD;  "MozScrollSnapDestination",&#xD;  "WebkitScrollSnapDestination",&#xD;  "MSScrollSnapDestination",&#xD;  "OScrollSnapDestination",&#xD;  "scrollSnapType",&#xD;  "MozScrollSnapType",&#xD;  "WebkitScrollSnapType",&#xD;  "MSScrollSnapType",&#xD;  "OScrollSnapType",&#xD;  "shapeImageThreshold",&#xD;  "MozShapeImageThreshold",&#xD;  "WebkitShapeImageThreshold",&#xD;  "MSShapeImageThreshold",&#xD;  "OShapeImageThreshold",&#xD;  "shapeMargin",&#xD;  "MozShapeMargin",&#xD;  "WebkitShapeMargin",&#xD;  "MSShapeMargin",&#xD;  "OShapeMargin",&#xD;  "shapeOutside",&#xD;  "MozShapeOutside",&#xD;  "WebkitShapeOutside",&#xD;  "MSShapeOutside",&#xD;  "OShapeOutside",&#xD;  "tabSize",&#xD;  "MozTabSize",&#xD;  "WebkitTabSize",&#xD;  "MSTabSize",&#xD;  "OTabSize",&#xD;  "tableLayout",&#xD;  "MozTableLayout",&#xD;  "WebkitTableLayout",&#xD;  "MSTableLayout",&#xD;  "OTableLayout",&#xD;  "textAlign",&#xD;  "MozTextAlign",&#xD;  "WebkitTextAlign",&#xD;  "MSTextAlign",&#xD;  "OTextAlign",&#xD;  "textAlignLast",&#xD;  "MozTextAlignLast",&#xD;  "WebkitTextAlignLast",&#xD;  "MSTextAlignLast",&#xD;  "OTextAlignLast",&#xD;  "textCombineUpright",&#xD;  "MozTextCombineUpright",&#xD;  "WebkitTextCombineUpright",&#xD;  "MSTextCombineUpright",&#xD;  "OTextCombineUpright",&#xD;  "textDecoration",&#xD;  "MozTextDecoration",&#xD;  "WebkitTextDecoration",&#xD;  "MSTextDecoration",&#xD;  "OTextDecoration",&#xD;  "textDecorationColor",&#xD;  "MozTextDecorationColor",&#xD;  "WebkitTextDecorationColor",&#xD;  "MSTextDecorationColor",&#xD;  "OTextDecorationColor",&#xD;  "textDecorationLine",&#xD;  "MozTextDecorationLine",&#xD;  "WebkitTextDecorationLine",&#xD;  "MSTextDecorationLine",&#xD;  "OTextDecorationLine",&#xD;  "textDecorationStyle",&#xD;  "MozTextDecorationStyle",&#xD;  "WebkitTextDecorationStyle",&#xD;  "MSTextDecorationStyle",&#xD;  "OTextDecorationStyle",&#xD;  "textEmphasis",&#xD;  "MozTextEmphasis",&#xD;  "WebkitTextEmphasis",&#xD;  "MSTextEmphasis",&#xD;  "OTextEmphasis",&#xD;  "textEmphasisColor",&#xD;  "MozTextEmphasisColor",&#xD;  "WebkitTextEmphasisColor",&#xD;  "MSTextEmphasisColor",&#xD;  "OTextEmphasisColor",&#xD;  "textEmphasisPosition",&#xD;  "MozTextEmphasisPosition",&#xD;  "WebkitTextEmphasisPosition",&#xD;  "MSTextEmphasisPosition",&#xD;  "OTextEmphasisPosition",&#xD;  "textEmphasisStyle",&#xD;  "MozTextEmphasisStyle",&#xD;  "WebkitTextEmphasisStyle",&#xD;  "MSTextEmphasisStyle",&#xD;  "OTextEmphasisStyle",&#xD;  "textIndent",&#xD;  "MozTextIndent",&#xD;  "WebkitTextIndent",&#xD;  "MSTextIndent",&#xD;  "OTextIndent",&#xD;  "textOrientation",&#xD;  "MozTextOrientation",&#xD;  "WebkitTextOrientation",&#xD;  "MSTextOrientation",&#xD;  "OTextOrientation",&#xD;  "textOverflow",&#xD;  "MozTextOverflow",&#xD;  "WebkitTextOverflow",&#xD;  "MSTextOverflow",&#xD;  "OTextOverflow",&#xD;  "textRendering",&#xD;  "MozTextRendering",&#xD;  "WebkitTextRendering",&#xD;  "MSTextRendering",&#xD;  "OTextRendering",&#xD;  "textShadow",&#xD;  "MozTextShadow",&#xD;  "WebkitTextShadow",&#xD;  "MSTextShadow",&#xD;  "OTextShadow",&#xD;  "textTransform",&#xD;  "MozTextTransform",&#xD;  "WebkitTextTransform",&#xD;  "MSTextTransform",&#xD;  "OTextTransform",&#xD;  "textUnderlinePosition",&#xD;  "MozTextUnderlinePosition",&#xD;  "WebkitTextUnderlinePosition",&#xD;  "MSTextUnderlinePosition",&#xD;  "OTextUnderlinePosition",&#xD;  "top",&#xD;  "MozTop",&#xD;  "WebkitTop",&#xD;  "MSTop",&#xD;  "OTop",&#xD;  "touchAction",&#xD;  "MozTouchAction",&#xD;  "WebkitTouchAction",&#xD;  "MSTouchAction",&#xD;  "OTouchAction",&#xD;  "transform",&#xD;  "MozTransform",&#xD;  "WebkitTransform",&#xD;  "msTransform",&#xD;  "OTransform",&#xD;  "transformBox",&#xD;  "MozTransformBox",&#xD;  "WebkitTransformBox",&#xD;  "MSTransformBox",&#xD;  "OTransformBox",&#xD;  "transformOrigin",&#xD;  "MozTransformOrigin",&#xD;  "WebkitTransformOrigin",&#xD;  "MSTransformOrigin",&#xD;  "OTransformOrigin",&#xD;  "transformStyle",&#xD;  "MozTransformStyle",&#xD;  "WebkitTransformStyle",&#xD;  "MSTransformStyle",&#xD;  "OTransformStyle",&#xD;  "transition",&#xD;  "MozTransition",&#xD;  "WebkitTransition",&#xD;  "MSTransition",&#xD;  "OTransition",&#xD;  "transitionDelay",&#xD;  "MozTransitionDelay",&#xD;  "WebkitTransitionDelay",&#xD;  "MSTransitionDelay",&#xD;  "OTransitionDelay",&#xD;  "transitionDuration",&#xD;  "MozTransitionDuration",&#xD;  "WebkitTransitionDuration",&#xD;  "MSTransitionDuration",&#xD;  "OTransitionDuration",&#xD;  "transitionProperty",&#xD;  "MozTransitionProperty",&#xD;  "WebkitTransitionProperty",&#xD;  "MSTransitionProperty",&#xD;  "OTransitionProperty",&#xD;  "transitionTimingFunction",&#xD;  "MozTransitionTimingFunction",&#xD;  "WebkitTransitionTimingFunction",&#xD;  "MSTransitionTimingFunction",&#xD;  "OTransitionTimingFunction",&#xD;  "turn",&#xD;  "MozTurn",&#xD;  "WebkitTurn",&#xD;  "MSTurn",&#xD;  "OTurn",&#xD;  "unicodeBidi",&#xD;  "MozUnicodeBidi",&#xD;  "WebkitUnicodeBidi",&#xD;  "MSUnicodeBidi",&#xD;  "OUnicodeBidi",&#xD;  "unset",&#xD;  "MozUnset",&#xD;  "WebkitUnset",&#xD;  "MSUnset",&#xD;  "OUnset",&#xD;  "verticalAlign",&#xD;  "MozVerticalAlign",&#xD;  "WebkitVerticalAlign",&#xD;  "MSVerticalAlign",&#xD;  "OVerticalAlign",&#xD;  "vh",&#xD;  "MozVh",&#xD;  "WebkitVh",&#xD;  "MSVh",&#xD;  "OVh",&#xD;  "visibility",&#xD;  "MozVisibility",&#xD;  "WebkitVisibility",&#xD;  "MSVisibility",&#xD;  "OVisibility",&#xD;  "vmax",&#xD;  "MozVmax",&#xD;  "WebkitVmax",&#xD;  "MSVmax",&#xD;  "OVmax",&#xD;  "vmin",&#xD;  "MozVmin",&#xD;  "WebkitVmin",&#xD;  "MSVmin",&#xD;  "OVmin",&#xD;  "vw",&#xD;  "MozVw",&#xD;  "WebkitVw",&#xD;  "MSVw",&#xD;  "OVw",&#xD;  "whiteSpace",&#xD;  "MozWhiteSpace",&#xD;  "WebkitWhiteSpace",&#xD;  "MSWhiteSpace",&#xD;  "OWhiteSpace",&#xD;  "widows",&#xD;  "MozWidows",&#xD;  "WebkitWidows",&#xD;  "MSWidows",&#xD;  "OWidows",&#xD;  "width",&#xD;  "MozWidth",&#xD;  "WebkitWidth",&#xD;  "MSWidth",&#xD;  "OWidth",&#xD;  "willChange",&#xD;  "MozWillChange",&#xD;  "WebkitWillChange",&#xD;  "MSWillChange",&#xD;  "OWillChange",&#xD;  "wordBreak",&#xD;  "MozWordBreak",&#xD;  "WebkitWordBreak",&#xD;  "MSWordBreak",&#xD;  "OWordBreak",&#xD;  "wordSpacing",&#xD;  "MozWordSpacing",&#xD;  "WebkitWordSpacing",&#xD;  "MSWordSpacing",&#xD;  "OWordSpacing",&#xD;  "wordWrap",&#xD;  "MozWordWrap",&#xD;  "WebkitWordWrap",&#xD;  "MSWordWrap",&#xD;  "OWordWrap",&#xD;  "writingMode",&#xD;  "MozWritingMode",&#xD;  "WebkitWritingMode",&#xD;  "MSWritingMode",&#xD;  "OWritingMode",&#xD;  "zIndex",&#xD;  "MozZIndex",&#xD;  "WebkitZIndex",&#xD;  "MSZIndex",&#xD;  "OZIndex",&#xD;  "fontSize",&#xD;  "MozFontSize",&#xD;  "WebkitFontSize",&#xD;  "MSFontSize",&#xD;  "OFontSize",&#xD;  "flex",&#xD;  "MozFlex",&#xD;  "WebkitFlex",&#xD;  "MSFlex",&#xD;  "OFlex",&#xD;  "fr",&#xD;  "MozFr",&#xD;  "WebkitFr",&#xD;  "MSFr",&#xD;  "OFr",&#xD;  "overflowScrolling",&#xD;  "MozOverflowScrolling",&#xD;  "WebkitOverflowScrolling",&#xD;  "MSOverflowScrolling",&#xD;  "OOverflowScrolling"&#xD;]&#xD;&#xD;&#xD;/***/ }),&#xD;/* 481 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var properties = __webpack_require__(480);&#xD;var PropTypes = __webpack_require__(2);&#xD;&#xD;module.exports = function(props, propName, componentName) {&#xD;  var styles = props[propName];&#xD;  if (!styles) {&#xD;    return;&#xD;  }&#xD;&#xD;  var failures = [];&#xD;  Object.keys(styles).forEach(function(styleKey){&#xD;    if (properties.indexOf(styleKey) === -1) {&#xD;      failures.push(styleKey);&#xD;    }&#xD;  });&#xD;  if (failures.length) {&#xD;    throw new Error(&apos;Prop &apos; + propName + &apos; passed to &apos; + componentName + &apos;. Has invalid keys &apos; + failures.join(&apos;, &apos;));&#xD;  }&#xD;};&#xD;&#xD;module.exports.isRequired = function(props, propName, componentName) {&#xD;  if (!props[propName]) {&#xD;    throw new Error(&apos;Prop &apos; + propName + &apos; passed to &apos; + componentName + &apos; is required&apos;);&#xD;  }&#xD;  return module.exports(props, propName, componentName);&#xD;};&#xD;&#xD;module.exports.supportingArrays = PropTypes.oneOfType([&#xD;  PropTypes.arrayOf(module.exports),&#xD;  module.exports&#xD;]);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 482 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _propTypes = __webpack_require__(2);&#xD;&#xD;var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _propTypes3 = __webpack_require__(182);&#xD;&#xD;var _UncontrolledTabs = __webpack_require__(483);&#xD;&#xD;var _UncontrolledTabs2 = _interopRequireDefault(_UncontrolledTabs);&#xD;&#xD;var _count = __webpack_require__(181);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var Tabs = function (_Component) {&#xD;  _inherits(Tabs, _Component);&#xD;&#xD;  function Tabs(props) {&#xD;    _classCallCheck(this, Tabs);&#xD;&#xD;    var _this = _possibleConstructorReturn(this, _Component.call(this, props));&#xD;&#xD;    _this.handleSelected = function (index, last, event) {&#xD;      // Call change event handler&#xD;      if (typeof _this.props.onSelect === &apos;function&apos;) {&#xD;        // Check if the change event handler cancels the tab change&#xD;        if (_this.props.onSelect(index, last, event) === false) return;&#xD;      }&#xD;&#xD;      var state = {&#xD;        // Set focus if the change was triggered from the keyboard&#xD;        focus: event.type === &apos;keydown&apos;&#xD;      };&#xD;&#xD;      if (Tabs.inUncontrolledMode(_this.props)) {&#xD;        // Update selected index&#xD;        state.selectedIndex = index;&#xD;      }&#xD;&#xD;      _this.setState(state);&#xD;    };&#xD;&#xD;    _this.state = Tabs.copyPropsToState(_this.props, {}, _this.props.defaultFocus);&#xD;    return _this;&#xD;  }&#xD;&#xD;  Tabs.prototype.componentWillReceiveProps = function componentWillReceiveProps(newProps) {&#xD;    if ("undefined" !== &apos;production&apos; &amp;&amp; Tabs.inUncontrolledMode(newProps) !== Tabs.inUncontrolledMode(this.props)) {&#xD;      throw new Error(&apos;Switching between controlled mode (by using `selectedIndex`) and uncontrolled mode is not supported in `Tabs`.\nFor more information about controlled and uncontrolled mode of react-tabs see the README.&apos;);&#xD;    }&#xD;    // Use a transactional update to prevent race conditions&#xD;    // when reading the state in copyPropsToState&#xD;    // See https://github.com/reactjs/react-tabs/issues/51&#xD;    this.setState(function (state) {&#xD;      return Tabs.copyPropsToState(newProps, state);&#xD;    });&#xD;  };&#xD;&#xD;  Tabs.inUncontrolledMode = function inUncontrolledMode(props) {&#xD;    return props.selectedIndex === null;&#xD;  };&#xD;&#xD;  // preserve the existing selectedIndex from state.&#xD;  // If the state has not selectedIndex, default to the defaultIndex or 0&#xD;  Tabs.copyPropsToState = function copyPropsToState(props, state) {&#xD;    var focus = arguments.length &gt; 2 &amp;&amp; arguments[2] !== undefined ? arguments[2] : false;&#xD;&#xD;    var newState = {&#xD;      focus: focus&#xD;    };&#xD;&#xD;    if (Tabs.inUncontrolledMode(props)) {&#xD;      var maxTabIndex = (0, _count.getTabsCount)(props.children) - 1;&#xD;      var selectedIndex = null;&#xD;&#xD;      if (state.selectedIndex != null) {&#xD;        selectedIndex = Math.min(state.selectedIndex, maxTabIndex);&#xD;      } else {&#xD;        selectedIndex = props.defaultIndex || 0;&#xD;      }&#xD;      newState.selectedIndex = selectedIndex;&#xD;    }&#xD;&#xD;    return newState;&#xD;  };&#xD;&#xD;  Tabs.prototype.render = function render() {&#xD;    var _props = this.props,&#xD;        children = _props.children,&#xD;        defaultIndex = _props.defaultIndex,&#xD;        defaultFocus = _props.defaultFocus,&#xD;        props = _objectWithoutProperties(_props, [&apos;children&apos;, &apos;defaultIndex&apos;, &apos;defaultFocus&apos;]);&#xD;&#xD;    props.focus = this.state.focus;&#xD;    props.onSelect = this.handleSelected;&#xD;&#xD;    if (this.state.selectedIndex != null) {&#xD;      props.selectedIndex = this.state.selectedIndex;&#xD;    }&#xD;&#xD;    return _react2.default.createElement(&#xD;      _UncontrolledTabs2.default,&#xD;      props,&#xD;      children&#xD;    );&#xD;  };&#xD;&#xD;  return Tabs;&#xD;}(_react.Component);&#xD;&#xD;Tabs.defaultProps = {&#xD;  defaultFocus: false,&#xD;  forceRenderTabPanel: false,&#xD;  selectedIndex: null,&#xD;  defaultIndex: null&#xD;};&#xD;exports.default = Tabs;&#xD;Tabs.propTypes =  true ? {&#xD;  children: _propTypes3.childrenPropType,&#xD;  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.object]),&#xD;  defaultFocus: _propTypes2.default.bool,&#xD;  defaultIndex: _propTypes2.default.number,&#xD;  disabledTabClassName: _propTypes2.default.string,&#xD;  forceRenderTabPanel: _propTypes2.default.bool,&#xD;  onSelect: _propTypes3.onSelectPropType,&#xD;  selectedIndex: _propTypes3.selectedIndexPropType,&#xD;  selectedTabClassName: _propTypes2.default.string,&#xD;  selectedTabPanelClassName: _propTypes2.default.string&#xD;} : {};&#xD;&#xD;/***/ }),&#xD;/* 483 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;var _propTypes = __webpack_require__(2);&#xD;&#xD;var _propTypes2 = _interopRequireDefault(_propTypes);&#xD;&#xD;var _react = __webpack_require__(0);&#xD;&#xD;var _react2 = _interopRequireDefault(_react);&#xD;&#xD;var _classnames = __webpack_require__(17);&#xD;&#xD;var _classnames2 = _interopRequireDefault(_classnames);&#xD;&#xD;var _uuid = __webpack_require__(183);&#xD;&#xD;var _uuid2 = _interopRequireDefault(_uuid);&#xD;&#xD;var _propTypes3 = __webpack_require__(182);&#xD;&#xD;var _Tab = __webpack_require__(69);&#xD;&#xD;var _Tab2 = _interopRequireDefault(_Tab);&#xD;&#xD;var _TabList = __webpack_require__(70);&#xD;&#xD;var _TabList2 = _interopRequireDefault(_TabList);&#xD;&#xD;var _TabPanel = __webpack_require__(71);&#xD;&#xD;var _TabPanel2 = _interopRequireDefault(_TabPanel);&#xD;&#xD;var _count = __webpack_require__(181);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) &gt;= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;// Determine if a node from event.target is a Tab element&#xD;function isTabNode(node) {&#xD;  return node.nodeName === &apos;LI&apos; &amp;&amp; node.getAttribute(&apos;role&apos;) === &apos;tab&apos;;&#xD;}&#xD;&#xD;// Determine if a tab node is disabled&#xD;function isTabDisabled(node) {&#xD;  return node.getAttribute(&apos;aria-disabled&apos;) === &apos;true&apos;;&#xD;}&#xD;&#xD;var canUseActiveElement = !!(typeof window !== &apos;undefined&apos; &amp;&amp; window.document &amp;&amp; window.document.activeElement);&#xD;&#xD;var UncontrolledTabs = function (_Component) {&#xD;  _inherits(UncontrolledTabs, _Component);&#xD;&#xD;  function UncontrolledTabs() {&#xD;    var _temp, _this, _ret;&#xD;&#xD;    _classCallCheck(this, UncontrolledTabs);&#xD;&#xD;    for (var _len = arguments.length, args = Array(_len), _key = 0; _key &lt; _len; _key++) {&#xD;      args[_key] = arguments[_key];&#xD;    }&#xD;&#xD;    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.tabNodes = [], _this.handleKeyDown = function (e) {&#xD;      if (_this.isTabFromContainer(e.target)) {&#xD;        var index = _this.props.selectedIndex;&#xD;        var preventDefault = false;&#xD;&#xD;        if (e.keyCode === 37 || e.keyCode === 38) {&#xD;          // Select next tab to the left&#xD;          index = _this.getPrevTab(index);&#xD;          preventDefault = true;&#xD;        } else if (e.keyCode === 39 || e.keyCode === 40) {&#xD;          // Select next tab to the right&#xD;          index = _this.getNextTab(index);&#xD;          preventDefault = true;&#xD;        }&#xD;&#xD;        // This prevents scrollbars from moving around&#xD;        if (preventDefault) {&#xD;          e.preventDefault();&#xD;        }&#xD;&#xD;        _this.setSelected(index, e);&#xD;      }&#xD;    }, _this.handleClick = function (e) {&#xD;      var node = e.target;&#xD;      // eslint-disable-next-line no-cond-assign&#xD;      do {&#xD;        if (_this.isTabFromContainer(node)) {&#xD;          if (isTabDisabled(node)) {&#xD;            return;&#xD;          }&#xD;&#xD;          var index = [].slice.call(node.parentNode.children).filter(isTabNode).indexOf(node);&#xD;          _this.setSelected(index, e);&#xD;          return;&#xD;        }&#xD;      } while ((node = node.parentNode) !== null);&#xD;    }, _temp), _possibleConstructorReturn(_this, _ret);&#xD;  }&#xD;&#xD;  UncontrolledTabs.prototype.setSelected = function setSelected(index, event) {&#xD;    // Don&apos;t do anything if nothing has changed&#xD;    if (index === this.props.selectedIndex) return;&#xD;    // Check index boundary&#xD;    if (index &lt; 0 || index &gt;= this.getTabsCount()) return;&#xD;&#xD;    // Call change event handler&#xD;    this.props.onSelect(index, this.props.selectedIndex, event);&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getNextTab = function getNextTab(index) {&#xD;    var count = this.getTabsCount();&#xD;&#xD;    // Look for non-disabled tab from index to the last tab on the right&#xD;    for (var i = index + 1; i &lt; count; i++) {&#xD;      if (!isTabDisabled(this.getTab(i))) {&#xD;        return i;&#xD;      }&#xD;    }&#xD;&#xD;    // If no tab found, continue searching from first on left to index&#xD;    for (var _i = 0; _i &lt; index; _i++) {&#xD;      if (!isTabDisabled(this.getTab(_i))) {&#xD;        return _i;&#xD;      }&#xD;    }&#xD;&#xD;    // No tabs are disabled, return index&#xD;    return index;&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getPrevTab = function getPrevTab(index) {&#xD;    var i = index;&#xD;&#xD;    // Look for non-disabled tab from index to first tab on the left&#xD;    while (i--) {&#xD;      if (!isTabDisabled(this.getTab(i))) {&#xD;        return i;&#xD;      }&#xD;    }&#xD;&#xD;    // If no tab found, continue searching from last tab on right to index&#xD;    i = this.getTabsCount();&#xD;    while (i-- &gt; index) {&#xD;      if (!isTabDisabled(this.getTab(i))) {&#xD;        return i;&#xD;      }&#xD;    }&#xD;&#xD;    // No tabs are disabled, return index&#xD;    return index;&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getTabsCount = function getTabsCount() {&#xD;    return (0, _count.getTabsCount)(this.props.children);&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getPanelsCount = function getPanelsCount() {&#xD;    return (0, _count.getPanelsCount)(this.props.children);&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getTab = function getTab(index) {&#xD;    return this.tabNodes[&apos;tabs-&apos; + index];&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.getChildren = function getChildren() {&#xD;    var _this2 = this;&#xD;&#xD;    var index = 0;&#xD;    var _props = this.props,&#xD;        children = _props.children,&#xD;        disabledTabClassName = _props.disabledTabClassName,&#xD;        focus = _props.focus,&#xD;        forceRenderTabPanel = _props.forceRenderTabPanel,&#xD;        selectedIndex = _props.selectedIndex,&#xD;        selectedTabClassName = _props.selectedTabClassName,&#xD;        selectedTabPanelClassName = _props.selectedTabPanelClassName;&#xD;&#xD;&#xD;    this.tabIds = this.tabIds || [];&#xD;    this.panelIds = this.panelIds || [];&#xD;    var diff = this.tabIds.length - this.getTabsCount();&#xD;&#xD;    // Add ids if new tabs have been added&#xD;    // Don&apos;t bother removing ids, just keep them in case they are added again&#xD;    // This is more efficient, and keeps the uuid counter under control&#xD;    while (diff++ &lt; 0) {&#xD;      this.tabIds.push((0, _uuid2.default)());&#xD;      this.panelIds.push((0, _uuid2.default)());&#xD;    }&#xD;&#xD;    // Map children to dynamically setup refs&#xD;    return _react2.default.Children.map(children, function (child) {&#xD;      // null happens when conditionally rendering TabPanel/Tab&#xD;      // see https://github.com/reactjs/react-tabs/issues/37&#xD;      if (child === null) {&#xD;        return null;&#xD;      }&#xD;&#xD;      var result = child;&#xD;&#xD;      // Clone TabList and Tab components to have refs&#xD;      if (child.type === _TabList2.default) {&#xD;        var listIndex = 0;&#xD;&#xD;        // Figure out if the current focus in the DOM is set on a Tab&#xD;        // If it is we should keep the focus on the next selected tab&#xD;        var wasTabFocused = false;&#xD;&#xD;        if (canUseActiveElement) {&#xD;          wasTabFocused = _react2.default.Children.toArray(child.props.children).filter(function (tab) {&#xD;            return tab.type === _Tab2.default;&#xD;          }).some(function (tab, i) {&#xD;            return document.activeElement === _this2.getTab(i);&#xD;          });&#xD;        }&#xD;&#xD;        result = (0, _react.cloneElement)(child, {&#xD;          children: _react2.default.Children.map(child.props.children, function (tab) {&#xD;            // null happens when conditionally rendering TabPanel/Tab&#xD;            // see https://github.com/reactjs/react-tabs/issues/37&#xD;            if (tab === null) {&#xD;              return null;&#xD;            }&#xD;&#xD;            // Exit early if this is not a tab. That way we can have arbitrary&#xD;            // elements anywhere inside &lt;TabList&gt;&#xD;            if (tab.type !== _Tab2.default) return tab;&#xD;&#xD;            var key = &apos;tabs-&apos; + listIndex;&#xD;            var selected = selectedIndex === listIndex;&#xD;&#xD;            var props = {&#xD;              tabRef: function tabRef(node) {&#xD;                _this2.tabNodes[key] = node;&#xD;              },&#xD;              id: _this2.tabIds[listIndex],&#xD;              panelId: _this2.panelIds[listIndex],&#xD;              selected: selected,&#xD;              focus: selected &amp;&amp; (focus || wasTabFocused)&#xD;            };&#xD;&#xD;            if (selectedTabClassName) props.selectedClassName = selectedTabClassName;&#xD;            if (disabledTabClassName) props.disabledClassName = disabledTabClassName;&#xD;&#xD;            listIndex++;&#xD;&#xD;            return (0, _react.cloneElement)(tab, props);&#xD;          })&#xD;        });&#xD;      } else if (child.type === _TabPanel2.default) {&#xD;        var props = {&#xD;          id: _this2.panelIds[index],&#xD;          tabId: _this2.tabIds[index],&#xD;          selected: selectedIndex === index&#xD;        };&#xD;&#xD;        if (forceRenderTabPanel) props.forceRender = forceRenderTabPanel;&#xD;        if (selectedTabPanelClassName) props.selectedClassName = selectedTabPanelClassName;&#xD;&#xD;        index++;&#xD;&#xD;        result = (0, _react.cloneElement)(child, props);&#xD;      }&#xD;&#xD;      return result;&#xD;    });&#xD;  };&#xD;&#xD;  /**&#xD;   * Determine if a node from event.target is a Tab element for the current Tabs container.&#xD;   * If the clicked element is not a Tab, it returns false.&#xD;   * If it finds another Tabs container between the Tab and `this`, it returns false.&#xD;   */&#xD;  UncontrolledTabs.prototype.isTabFromContainer = function isTabFromContainer(node) {&#xD;    // return immediately if the clicked element is not a Tab.&#xD;    if (!isTabNode(node)) {&#xD;      return false;&#xD;    }&#xD;&#xD;    // Check if the first occurrence of a Tabs container is `this` one.&#xD;    var nodeAncestor = node.parentElement;&#xD;    do {&#xD;      if (nodeAncestor === this.node) return true;else if (nodeAncestor.getAttribute(&apos;data-tabs&apos;)) break;&#xD;&#xD;      nodeAncestor = nodeAncestor.parentElement;&#xD;    } while (nodeAncestor);&#xD;&#xD;    return false;&#xD;  };&#xD;&#xD;  UncontrolledTabs.prototype.render = function render() {&#xD;    var _this3 = this;&#xD;&#xD;    // Delete all known props, so they don&apos;t get added to DOM&#xD;    var _props2 = this.props,&#xD;        children = _props2.children,&#xD;        className = _props2.className,&#xD;        disabledTabClassName = _props2.disabledTabClassName,&#xD;        focus = _props2.focus,&#xD;        forceRenderTabPanel = _props2.forceRenderTabPanel,&#xD;        onSelect = _props2.onSelect,&#xD;        selectedIndex = _props2.selectedIndex,&#xD;        selectedTabClassName = _props2.selectedTabClassName,&#xD;        selectedTabPanelClassName = _props2.selectedTabPanelClassName,&#xD;        attributes = _objectWithoutProperties(_props2, [&apos;children&apos;, &apos;className&apos;, &apos;disabledTabClassName&apos;, &apos;focus&apos;, &apos;forceRenderTabPanel&apos;, &apos;onSelect&apos;, &apos;selectedIndex&apos;, &apos;selectedTabClassName&apos;, &apos;selectedTabPanelClassName&apos;]);&#xD;&#xD;    return _react2.default.createElement(&#xD;      &apos;div&apos;,&#xD;      _extends({}, attributes, {&#xD;        className: (0, _classnames2.default)(className),&#xD;        onClick: this.handleClick,&#xD;        onKeyDown: this.handleKeyDown,&#xD;        ref: function ref(node) {&#xD;          _this3.node = node;&#xD;        },&#xD;        &apos;data-tabs&apos;: true&#xD;      }),&#xD;      this.getChildren()&#xD;    );&#xD;  };&#xD;&#xD;  return UncontrolledTabs;&#xD;}(_react.Component);&#xD;&#xD;UncontrolledTabs.defaultProps = {&#xD;  className: &apos;react-tabs&apos;,&#xD;  focus: false&#xD;};&#xD;exports.default = UncontrolledTabs;&#xD;UncontrolledTabs.propTypes =  true ? {&#xD;  children: _propTypes3.childrenPropType,&#xD;  className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.object]),&#xD;  disabledTabClassName: _propTypes2.default.string,&#xD;  focus: _propTypes2.default.bool,&#xD;  forceRenderTabPanel: _propTypes2.default.bool,&#xD;  onSelect: _propTypes2.default.func.isRequired,&#xD;  selectedIndex: _propTypes2.default.number.isRequired,&#xD;  selectedTabClassName: _propTypes2.default.string,&#xD;  selectedTabPanelClassName: _propTypes2.default.string&#xD;} : {};&#xD;&#xD;/***/ }),&#xD;/* 484 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;exports.__esModule = true;&#xD;exports.resetIdCounter = exports.Tabs = exports.TabPanel = exports.TabList = exports.Tab = undefined;&#xD;&#xD;var _Tabs = __webpack_require__(482);&#xD;&#xD;var _Tabs2 = _interopRequireDefault(_Tabs);&#xD;&#xD;var _TabList = __webpack_require__(70);&#xD;&#xD;var _TabList2 = _interopRequireDefault(_TabList);&#xD;&#xD;var _Tab = __webpack_require__(69);&#xD;&#xD;var _Tab2 = _interopRequireDefault(_Tab);&#xD;&#xD;var _TabPanel = __webpack_require__(71);&#xD;&#xD;var _TabPanel2 = _interopRequireDefault(_TabPanel);&#xD;&#xD;var _uuid = __webpack_require__(183);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { default: obj }; }&#xD;&#xD;exports.Tab = _Tab2.default;&#xD;exports.TabList = _TabList2.default;&#xD;exports.TabPanel = _TabPanel2.default;&#xD;exports.Tabs = _Tabs2.default;&#xD;exports.resetIdCounter = _uuid.reset;&#xD;&#xD;/***/ }),&#xD;/* 485 */,&#xD;/* 486 */,&#xD;/* 487 */,&#xD;/* 488 */,&#xD;/* 489 */,&#xD;/* 490 */,&#xD;/* 491 */,&#xD;/* 492 */,&#xD;/* 493 */,&#xD;/* 494 */,&#xD;/* 495 */,&#xD;/* 496 */,&#xD;/* 497 */,&#xD;/* 498 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(36)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 499 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Buffer = __webpack_require__(1).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(79);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = BufferList;&#xD;&#xD;function BufferList() {&#xD;  this.head = null;&#xD;  this.tail = null;&#xD;  this.length = 0;&#xD;}&#xD;&#xD;BufferList.prototype.push = function (v) {&#xD;  var entry = { data: v, next: null };&#xD;  if (this.length &gt; 0) this.tail.next = entry;else this.head = entry;&#xD;  this.tail = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.unshift = function (v) {&#xD;  var entry = { data: v, next: this.head };&#xD;  if (this.length === 0) this.tail = entry;&#xD;  this.head = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.shift = function () {&#xD;  if (this.length === 0) return;&#xD;  var ret = this.head.data;&#xD;  if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;&#xD;  --this.length;&#xD;  return ret;&#xD;};&#xD;&#xD;BufferList.prototype.clear = function () {&#xD;  this.head = this.tail = null;&#xD;  this.length = 0;&#xD;};&#xD;&#xD;BufferList.prototype.join = function (s) {&#xD;  if (this.length === 0) return &apos;&apos;;&#xD;  var p = this.head;&#xD;  var ret = &apos;&apos; + p.data;&#xD;  while (p = p.next) {&#xD;    ret += s + p.data;&#xD;  }return ret;&#xD;};&#xD;&#xD;BufferList.prototype.concat = function (n) {&#xD;  if (this.length === 0) return bufferShim.alloc(0);&#xD;  if (this.length === 1) return this.head.data;&#xD;  var ret = bufferShim.allocUnsafe(n &gt;&gt;&gt; 0);&#xD;  var p = this.head;&#xD;  var i = 0;&#xD;  while (p) {&#xD;    p.data.copy(ret, i);&#xD;    i += p.data.length;&#xD;    p = p.next;&#xD;  }&#xD;  return ret;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 500 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(188)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 501 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(104)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 502 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__compose__ = __webpack_require__(191);&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = applyMiddleware;&#xD;var _extends = Object.assign || function (target) { for (var i = 1; i &lt; arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };&#xD;&#xD;&#xD;&#xD;/**&#xD; * Creates a store enhancer that applies middleware to the dispatch method&#xD; * of the Redux store. This is handy for a variety of tasks, such as expressing&#xD; * asynchronous actions in a concise manner, or logging every action payload.&#xD; *&#xD; * See `redux-thunk` package as an example of the Redux middleware.&#xD; *&#xD; * Because middleware is potentially asynchronous, this should be the first&#xD; * store enhancer in the composition chain.&#xD; *&#xD; * Note that each middleware will be given the `dispatch` and `getState` functions&#xD; * as named arguments.&#xD; *&#xD; * @param {...Function} middlewares The middleware chain to be applied.&#xD; * @returns {Function} A store enhancer applying the middleware.&#xD; */&#xD;function applyMiddleware() {&#xD;  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key &lt; _len; _key++) {&#xD;    middlewares[_key] = arguments[_key];&#xD;  }&#xD;&#xD;  return function (createStore) {&#xD;    return function (reducer, preloadedState, enhancer) {&#xD;      var store = createStore(reducer, preloadedState, enhancer);&#xD;      var _dispatch = store.dispatch;&#xD;      var chain = [];&#xD;&#xD;      var middlewareAPI = {&#xD;        getState: store.getState,&#xD;        dispatch: function dispatch(action) {&#xD;          return _dispatch(action);&#xD;        }&#xD;      };&#xD;      chain = middlewares.map(function (middleware) {&#xD;        return middleware(middlewareAPI);&#xD;      });&#xD;      _dispatch = __WEBPACK_IMPORTED_MODULE_0__compose__["a" /* default */].apply(undefined, chain)(store.dispatch);&#xD;&#xD;      return _extends({}, store, {&#xD;        dispatch: _dispatch&#xD;      });&#xD;    };&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 503 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = bindActionCreators;&#xD;function bindActionCreator(actionCreator, dispatch) {&#xD;  return function () {&#xD;    return dispatch(actionCreator.apply(undefined, arguments));&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Turns an object whose values are action creators, into an object with the&#xD; * same keys, but with every function wrapped into a `dispatch` call so they&#xD; * may be invoked directly. This is just a convenience method, as you can call&#xD; * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.&#xD; *&#xD; * For convenience, you can also pass a single function as the first argument,&#xD; * and get a function in return.&#xD; *&#xD; * @param {Function|Object} actionCreators An object whose values are action&#xD; * creator functions. One handy way to obtain it is to use ES6 `import * as`&#xD; * syntax. You may also pass a single function.&#xD; *&#xD; * @param {Function} dispatch The `dispatch` function available on your Redux&#xD; * store.&#xD; *&#xD; * @returns {Function|Object} The object mimicking the original object, but with&#xD; * every action creator wrapped into the `dispatch` call. If you passed a&#xD; * function as `actionCreators`, the return value will also be a single&#xD; * function.&#xD; */&#xD;function bindActionCreators(actionCreators, dispatch) {&#xD;  if (typeof actionCreators === &apos;function&apos;) {&#xD;    return bindActionCreator(actionCreators, dispatch);&#xD;  }&#xD;&#xD;  if (typeof actionCreators !== &apos;object&apos; || actionCreators === null) {&#xD;    throw new Error(&apos;bindActionCreators expected an object or a function, instead received &apos; + (actionCreators === null ? &apos;null&apos; : typeof actionCreators) + &apos;. &apos; + &apos;Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?&apos;);&#xD;  }&#xD;&#xD;  var keys = Object.keys(actionCreators);&#xD;  var boundActionCreators = {};&#xD;  for (var i = 0; i &lt; keys.length; i++) {&#xD;    var key = keys[i];&#xD;    var actionCreator = actionCreators[key];&#xD;    if (typeof actionCreator === &apos;function&apos;) {&#xD;      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);&#xD;    }&#xD;  }&#xD;  return boundActionCreators;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 504 */&#xD;/***/ (function(module, __webpack_exports__, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createStore__ = __webpack_require__(192);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_lodash_es_isPlainObject__ = __webpack_require__(83);&#xD;/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_warning__ = __webpack_require__(193);&#xD;/* harmony export (immutable) */ __webpack_exports__["a"] = combineReducers;&#xD;&#xD;&#xD;&#xD;&#xD;function getUndefinedStateErrorMessage(key, action) {&#xD;  var actionType = action &amp;&amp; action.type;&#xD;  var actionName = actionType &amp;&amp; &apos;"&apos; + actionType.toString() + &apos;"&apos; || &apos;an action&apos;;&#xD;&#xD;  return &apos;Given action &apos; + actionName + &apos;, reducer "&apos; + key + &apos;" returned undefined. &apos; + &apos;To ignore an action, you must explicitly return the previous state.&apos;;&#xD;}&#xD;&#xD;function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {&#xD;  var reducerKeys = Object.keys(reducers);&#xD;  var argumentName = action &amp;&amp; action.type === __WEBPACK_IMPORTED_MODULE_0__createStore__["b" /* ActionTypes */].INIT ? &apos;preloadedState argument passed to createStore&apos; : &apos;previous state received by the reducer&apos;;&#xD;&#xD;  if (reducerKeys.length === 0) {&#xD;    return &apos;Store does not have a valid reducer. Make sure the argument passed &apos; + &apos;to combineReducers is an object whose values are reducers.&apos;;&#xD;  }&#xD;&#xD;  if (!__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_lodash_es_isPlainObject__["a" /* default */])(inputState)) {&#xD;    return &apos;The &apos; + argumentName + &apos; has unexpected type of "&apos; + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + &apos;". Expected argument to be an object with the following &apos; + (&apos;keys: "&apos; + reducerKeys.join(&apos;", "&apos;) + &apos;"&apos;);&#xD;  }&#xD;&#xD;  var unexpectedKeys = Object.keys(inputState).filter(function (key) {&#xD;    return !reducers.hasOwnProperty(key) &amp;&amp; !unexpectedKeyCache[key];&#xD;  });&#xD;&#xD;  unexpectedKeys.forEach(function (key) {&#xD;    unexpectedKeyCache[key] = true;&#xD;  });&#xD;&#xD;  if (unexpectedKeys.length &gt; 0) {&#xD;    return &apos;Unexpected &apos; + (unexpectedKeys.length &gt; 1 ? &apos;keys&apos; : &apos;key&apos;) + &apos; &apos; + (&apos;"&apos; + unexpectedKeys.join(&apos;", "&apos;) + &apos;" found in &apos; + argumentName + &apos;. &apos;) + &apos;Expected to find one of the known reducer keys instead: &apos; + (&apos;"&apos; + reducerKeys.join(&apos;", "&apos;) + &apos;". Unexpected keys will be ignored.&apos;);&#xD;  }&#xD;}&#xD;&#xD;function assertReducerSanity(reducers) {&#xD;  Object.keys(reducers).forEach(function (key) {&#xD;    var reducer = reducers[key];&#xD;    var initialState = reducer(undefined, { type: __WEBPACK_IMPORTED_MODULE_0__createStore__["b" /* ActionTypes */].INIT });&#xD;&#xD;    if (typeof initialState === &apos;undefined&apos;) {&#xD;      throw new Error(&apos;Reducer "&apos; + key + &apos;" returned undefined during initialization. &apos; + &apos;If the state passed to the reducer is undefined, you must &apos; + &apos;explicitly return the initial state. The initial state may &apos; + &apos;not be undefined.&apos;);&#xD;    }&#xD;&#xD;    var type = &apos;@@redux/PROBE_UNKNOWN_ACTION_&apos; + Math.random().toString(36).substring(7).split(&apos;&apos;).join(&apos;.&apos;);&#xD;    if (typeof reducer(undefined, { type: type }) === &apos;undefined&apos;) {&#xD;      throw new Error(&apos;Reducer "&apos; + key + &apos;" returned undefined when probed with a random type. &apos; + (&apos;Don\&apos;t try to handle &apos; + __WEBPACK_IMPORTED_MODULE_0__createStore__["b" /* ActionTypes */].INIT + &apos; or other actions in "redux/*" &apos;) + &apos;namespace. They are considered private. Instead, you must return the &apos; + &apos;current state for any unknown actions, unless it is undefined, &apos; + &apos;in which case you must return the initial state, regardless of the &apos; + &apos;action type. The initial state may not be undefined.&apos;);&#xD;    }&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Turns an object whose values are different reducer functions, into a single&#xD; * reducer function. It will call every child reducer, and gather their results&#xD; * into a single state object, whose keys correspond to the keys of the passed&#xD; * reducer functions.&#xD; *&#xD; * @param {Object} reducers An object whose values correspond to different&#xD; * reducer functions that need to be combined into one. One handy way to obtain&#xD; * it is to use ES6 `import * as reducers` syntax. The reducers may never return&#xD; * undefined for any action. Instead, they should return their initial state&#xD; * if the state passed to them was undefined, and the current state for any&#xD; * unrecognized action.&#xD; *&#xD; * @returns {Function} A reducer function that invokes every reducer inside the&#xD; * passed object, and builds a state object with the same shape.&#xD; */&#xD;function combineReducers(reducers) {&#xD;  var reducerKeys = Object.keys(reducers);&#xD;  var finalReducers = {};&#xD;  for (var i = 0; i &lt; reducerKeys.length; i++) {&#xD;    var key = reducerKeys[i];&#xD;&#xD;    if (true) {&#xD;      if (typeof reducers[key] === &apos;undefined&apos;) {&#xD;        __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__utils_warning__["a" /* default */])(&apos;No reducer provided for key "&apos; + key + &apos;"&apos;);&#xD;      }&#xD;    }&#xD;&#xD;    if (typeof reducers[key] === &apos;function&apos;) {&#xD;      finalReducers[key] = reducers[key];&#xD;    }&#xD;  }&#xD;  var finalReducerKeys = Object.keys(finalReducers);&#xD;&#xD;  if (true) {&#xD;    var unexpectedKeyCache = {};&#xD;  }&#xD;&#xD;  var sanityError;&#xD;  try {&#xD;    assertReducerSanity(finalReducers);&#xD;  } catch (e) {&#xD;    sanityError = e;&#xD;  }&#xD;&#xD;  return function combination() {&#xD;    var state = arguments.length &lt;= 0 || arguments[0] === undefined ? {} : arguments[0];&#xD;    var action = arguments[1];&#xD;&#xD;    if (sanityError) {&#xD;      throw sanityError;&#xD;    }&#xD;&#xD;    if (true) {&#xD;      var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);&#xD;      if (warningMessage) {&#xD;        __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__utils_warning__["a" /* default */])(warningMessage);&#xD;      }&#xD;    }&#xD;&#xD;    var hasChanged = false;&#xD;    var nextState = {};&#xD;    for (var i = 0; i &lt; finalReducerKeys.length; i++) {&#xD;      var key = finalReducerKeys[i];&#xD;      var reducer = finalReducers[key];&#xD;      var previousStateForKey = state[key];&#xD;      var nextStateForKey = reducer(previousStateForKey, action);&#xD;      if (typeof nextStateForKey === &apos;undefined&apos;) {&#xD;        var errorMessage = getUndefinedStateErrorMessage(key, action);&#xD;        throw new Error(errorMessage);&#xD;      }&#xD;      nextState[key] = nextStateForKey;&#xD;      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;&#xD;    }&#xD;    return hasChanged ? nextState : state;&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 505 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {/*&#xD;CryptoJS v3.1.2&#xD;code.google.com/p/crypto-js&#xD;(c) 2009-2013 by Jeff Mott. All rights reserved.&#xD;code.google.com/p/crypto-js/wiki/License&#xD;*/&#xD;/** @preserve&#xD;(c) 2012 by Cédric Mesnil. All rights reserved.&#xD;&#xD;Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:&#xD;&#xD;    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.&#xD;    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.&#xD;&#xD;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;*/&#xD;&#xD;// constants table&#xD;var zl = [&#xD;  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,&#xD;  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,&#xD;  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,&#xD;  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,&#xD;  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13&#xD;]&#xD;&#xD;var zr = [&#xD;  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,&#xD;  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,&#xD;  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,&#xD;  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,&#xD;  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11&#xD;]&#xD;&#xD;var sl = [&#xD;  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,&#xD;  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,&#xD;  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,&#xD;  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,&#xD;  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6&#xD;]&#xD;&#xD;var sr = [&#xD;  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,&#xD;  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,&#xD;  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,&#xD;  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,&#xD;  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11&#xD;]&#xD;&#xD;var hl = [0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]&#xD;var hr = [0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]&#xD;&#xD;function bytesToWords (bytes) {&#xD;  var words = []&#xD;  for (var i = 0, b = 0; i &lt; bytes.length; i++, b += 8) {&#xD;    words[b &gt;&gt;&gt; 5] |= bytes[i] &lt;&lt; (24 - b % 32)&#xD;  }&#xD;  return words&#xD;}&#xD;&#xD;function wordsToBytes (words) {&#xD;  var bytes = []&#xD;  for (var b = 0; b &lt; words.length * 32; b += 8) {&#xD;    bytes.push((words[b &gt;&gt;&gt; 5] &gt;&gt;&gt; (24 - b % 32)) &amp; 0xFF)&#xD;  }&#xD;  return bytes&#xD;}&#xD;&#xD;function processBlock (H, M, offset) {&#xD;  // swap endian&#xD;  for (var i = 0; i &lt; 16; i++) {&#xD;    var offset_i = offset + i&#xD;    var M_offset_i = M[offset_i]&#xD;&#xD;    // Swap&#xD;    M[offset_i] = (&#xD;      (((M_offset_i &lt;&lt; 8) | (M_offset_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |&#xD;      (((M_offset_i &lt;&lt; 24) | (M_offset_i &gt;&gt;&gt; 8)) &amp; 0xff00ff00)&#xD;    )&#xD;  }&#xD;&#xD;  // Working variables&#xD;  var al, bl, cl, dl, el&#xD;  var ar, br, cr, dr, er&#xD;&#xD;  ar = al = H[0]&#xD;  br = bl = H[1]&#xD;  cr = cl = H[2]&#xD;  dr = dl = H[3]&#xD;  er = el = H[4]&#xD;&#xD;  // computation&#xD;  var t&#xD;  for (i = 0; i &lt; 80; i += 1) {&#xD;    t = (al + M[offset + zl[i]]) | 0&#xD;    if (i &lt; 16) {&#xD;      t += f1(bl, cl, dl) + hl[0]&#xD;    } else if (i &lt; 32) {&#xD;      t += f2(bl, cl, dl) + hl[1]&#xD;    } else if (i &lt; 48) {&#xD;      t += f3(bl, cl, dl) + hl[2]&#xD;    } else if (i &lt; 64) {&#xD;      t += f4(bl, cl, dl) + hl[3]&#xD;    } else {// if (i&lt;80) {&#xD;      t += f5(bl, cl, dl) + hl[4]&#xD;    }&#xD;    t = t | 0&#xD;    t = rotl(t, sl[i])&#xD;    t = (t + el) | 0&#xD;    al = el&#xD;    el = dl&#xD;    dl = rotl(cl, 10)&#xD;    cl = bl&#xD;    bl = t&#xD;&#xD;    t = (ar + M[offset + zr[i]]) | 0&#xD;    if (i &lt; 16) {&#xD;      t += f5(br, cr, dr) + hr[0]&#xD;    } else if (i &lt; 32) {&#xD;      t += f4(br, cr, dr) + hr[1]&#xD;    } else if (i &lt; 48) {&#xD;      t += f3(br, cr, dr) + hr[2]&#xD;    } else if (i &lt; 64) {&#xD;      t += f2(br, cr, dr) + hr[3]&#xD;    } else {// if (i&lt;80) {&#xD;      t += f1(br, cr, dr) + hr[4]&#xD;    }&#xD;&#xD;    t = t | 0&#xD;    t = rotl(t, sr[i])&#xD;    t = (t + er) | 0&#xD;    ar = er&#xD;    er = dr&#xD;    dr = rotl(cr, 10)&#xD;    cr = br&#xD;    br = t&#xD;  }&#xD;&#xD;  // intermediate hash value&#xD;  t = (H[1] + cl + dr) | 0&#xD;  H[1] = (H[2] + dl + er) | 0&#xD;  H[2] = (H[3] + el + ar) | 0&#xD;  H[3] = (H[4] + al + br) | 0&#xD;  H[4] = (H[0] + bl + cr) | 0&#xD;  H[0] = t&#xD;}&#xD;&#xD;function f1 (x, y, z) {&#xD;  return ((x) ^ (y) ^ (z))&#xD;}&#xD;&#xD;function f2 (x, y, z) {&#xD;  return (((x) &amp; (y)) | ((&#126;x) &amp; (z)))&#xD;}&#xD;&#xD;function f3 (x, y, z) {&#xD;  return (((x) | (&#126;(y))) ^ (z))&#xD;}&#xD;&#xD;function f4 (x, y, z) {&#xD;  return (((x) &amp; (z)) | ((y) &amp; (&#126;(z))))&#xD;}&#xD;&#xD;function f5 (x, y, z) {&#xD;  return ((x) ^ ((y) | (&#126;(z))))&#xD;}&#xD;&#xD;function rotl (x, n) {&#xD;  return (x &lt;&lt; n) | (x &gt;&gt;&gt; (32 - n))&#xD;}&#xD;&#xD;function ripemd160 (message) {&#xD;  var H = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]&#xD;&#xD;  if (typeof message === &apos;string&apos;) {&#xD;    message = new Buffer(message, &apos;utf8&apos;)&#xD;  }&#xD;&#xD;  var m = bytesToWords(message)&#xD;&#xD;  var nBitsLeft = message.length * 8&#xD;  var nBitsTotal = message.length * 8&#xD;&#xD;  // Add padding&#xD;  m[nBitsLeft &gt;&gt;&gt; 5] |= 0x80 &lt;&lt; (24 - nBitsLeft % 32)&#xD;  m[(((nBitsLeft + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = (&#xD;    (((nBitsTotal &lt;&lt; 8) | (nBitsTotal &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |&#xD;    (((nBitsTotal &lt;&lt; 24) | (nBitsTotal &gt;&gt;&gt; 8)) &amp; 0xff00ff00)&#xD;  )&#xD;&#xD;  for (var i = 0; i &lt; m.length; i += 16) {&#xD;    processBlock(H, m, i)&#xD;  }&#xD;&#xD;  // swap endian&#xD;  for (i = 0; i &lt; 5; i++) {&#xD;    // shortcut&#xD;    var H_i = H[i]&#xD;&#xD;    // Swap&#xD;    H[i] = (((H_i &lt;&lt; 8) | (H_i &gt;&gt;&gt; 24)) &amp; 0x00ff00ff) |&#xD;      (((H_i &lt;&lt; 24) | (H_i &gt;&gt;&gt; 8)) &amp; 0xff00ff00)&#xD;  }&#xD;&#xD;  var digestbytes = wordsToBytes(H)&#xD;  return new Buffer(digestbytes)&#xD;}&#xD;&#xD;module.exports = ripemd160&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 506 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports =&#xD;/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId])&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			exports: {},&#xD;/******/ 			id: moduleId,&#xD;/******/ 			loaded: false&#xD;/******/ 		};&#xD;&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.loaded = true;&#xD;&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;&#xD;&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(0);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(10);&#xD;&#xD;/***/ },&#xD;/* 1 */,&#xD;/* 2 */,&#xD;/* 3 */,&#xD;/* 4 */,&#xD;/* 5 */,&#xD;/* 6 */,&#xD;/* 7 */,&#xD;/* 8 */,&#xD;/* 9 */,&#xD;/* 10 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/*** IMPORTS FROM imports-loader ***/&#xD;	var Blockly = __webpack_require__(11);&#xD;	var goog = __webpack_require__(13);&#xD;&#xD;	/**&#xD;	 * @license&#xD;	 * Visual Blocks Language&#xD;	 *&#xD;	 * Copyright 2012 Google Inc.&#xD;	 * https://developers.google.com/blockly/&#xD;	 *&#xD;	 * Licensed under the Apache License, Version 2.0 (the "License");&#xD;	 * you may not use this file except in compliance with the License.&#xD;	 * You may obtain a copy of the License at&#xD;	 *&#xD;	 *   http://www.apache.org/licenses/LICENSE-2.0&#xD;	 *&#xD;	 * Unless required by applicable law or agreed to in writing, software&#xD;	 * distributed under the License is distributed on an "AS IS" BASIS,&#xD;	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#xD;	 * See the License for the specific language governing permissions and&#xD;	 * limitations under the License.&#xD;	 */&#xD;&#xD;	/**&#xD;	 * @fileoverview English strings.&#xD;	 * @author fraser@google.com (Neil Fraser)&#xD;	 *&#xD;	 * After modifying this file, either run "build.py" from the parent directory,&#xD;	 * or run (from this directory):&#xD;	 * ../i18n/js_to_json.py&#xD;	 * to regenerate json/{en,qqq,synonyms}.json.&#xD;	 *&#xD;	 * To convert all of the json files to .js files, run:&#xD;	 * ../i18n/create_messages.py json/*.json&#xD;	 */&#xD;	&apos;use strict&apos;;&#xD;&#xD;	goog.provide(&apos;Blockly.Msg.en&apos;);&#xD;&#xD;	goog.require(&apos;Blockly.Msg&apos;);&#xD;&#xD;&#xD;	/**&#xD;	 * Due to the frequency of long strings, the 80-column wrap rule need not apply&#xD;	 * to message files.&#xD;	 */&#xD;&#xD;	/**&#xD;	 * Each message is preceded with a tripple-slash comment that becomes the&#xD;	 * message descriptor.  The build process extracts these descriptors, adds&#xD;	 * them to msg/json/qqq.json, and they show up in the translation console.&#xD;	 */&#xD;&#xD;	/// {{Notranslate}} Hue value for all logic blocks.&#xD;	Blockly.Msg.LOGIC_HUE = &apos;210&apos;;&#xD;	/// {{Notranslate}} Hue value for all loop blocks.&#xD;	Blockly.Msg.LOOPS_HUE = &apos;120&apos;;&#xD;	/// {{Notranslate}} Hue value for all math blocks.&#xD;	Blockly.Msg.MATH_HUE = &apos;230&apos;;&#xD;	/// {{Notranslate}} Hue value for all text blocks.&#xD;	Blockly.Msg.TEXTS_HUE = &apos;160&apos;;&#xD;	/// {{Notranslate}} Hue value for all list blocks.&#xD;	Blockly.Msg.LISTS_HUE = &apos;260&apos;;&#xD;	/// {{Notranslate}} Hue value for all colour blocks.&#xD;	Blockly.Msg.COLOUR_HUE = &apos;20&apos;;&#xD;	/// {{Notranslate}} Hue value for all variable blocks.&#xD;	Blockly.Msg.VARIABLES_HUE = &apos;330&apos;;&#xD;	/// {{Notranslate}} Hue value for all procedure blocks.&#xD;	Blockly.Msg.PROCEDURES_HUE = &apos;290&apos;;&#xD;&#xD;	/// default name - A simple, general default name for a variable, preferably short.&#xD;	/// For more context, see&#xD;	/// [[Translating:Blockly#infrequent_message_types]].\n{{Identical|Item}}&#xD;	Blockly.Msg.VARIABLES_DEFAULT_NAME = &apos;item&apos;;&#xD;	/// button text - Button that sets a calendar to today&apos;s date.\n{{Identical|Today}}&#xD;	Blockly.Msg.TODAY = &apos;Today&apos;;&#xD;&#xD;	// Context menus.&#xD;	/// context menu - Make a copy of the selected block (and any blocks it contains).\n{{Identical|Duplicate}}&#xD;	Blockly.Msg.DUPLICATE_BLOCK = &apos;Duplicate&apos;;&#xD;	/// context menu - Add a descriptive comment to the selected block.&#xD;	Blockly.Msg.ADD_COMMENT = &apos;Add Comment&apos;;&#xD;	/// context menu - Remove the descriptive comment from the selected block.&#xD;	Blockly.Msg.REMOVE_COMMENT = &apos;Remove Comment&apos;;&#xD;	/// context menu - Change from &apos;external&apos; to &apos;inline&apos; mode for displaying blocks used as inputs to the selected block.  See [[Translating:Blockly#context_menus]].&#xD;	Blockly.Msg.EXTERNAL_INPUTS = &apos;External Inputs&apos;;&#xD;	/// context menu - Change from &apos;internal&apos; to &apos;external&apos; mode for displaying blocks used as inputs to the selected block.  See [[Translating:Blockly#context_menus]].&#xD;	Blockly.Msg.INLINE_INPUTS = &apos;Inline Inputs&apos;;&#xD;	/// context menu - Permanently delete the selected block.&#xD;	Blockly.Msg.DELETE_BLOCK = &apos;Delete Block&apos;;&#xD;	/// context menu - Permanently delete the %1 selected blocks.\n\nParameters:\n* %1 - an integer greater than 1.&#xD;	Blockly.Msg.DELETE_X_BLOCKS = &apos;Delete %1 Blocks&apos;;&#xD;	/// confirmation prompt - Question the user if they really wanted to permanently delete all %1 blocks.\n\nParameters:\n* %1 - an integer greater than 1.&#xD;	Blockly.Msg.DELETE_ALL_BLOCKS = &apos;Delete all %1 blocks?&apos;;&#xD;	/// context menu - Reposition all the blocks so that they form a neat line.&#xD;	Blockly.Msg.CLEAN_UP = &apos;Clean up Blocks&apos;;&#xD;	/// context menu - Make the appearance of the selected block smaller by hiding some information about it.&#xD;	Blockly.Msg.COLLAPSE_BLOCK = &apos;Collapse Block&apos;;&#xD;	/// context menu - Make the appearance of all blocks smaller by hiding some information about it.  Use the same terminology as in the previous message.&#xD;	Blockly.Msg.COLLAPSE_ALL = &apos;Collapse Blocks&apos;;&#xD;	/// context menu - Restore the appearance of the selected block by showing information about it that was hidden (collapsed) earlier.&#xD;	Blockly.Msg.EXPAND_BLOCK = &apos;Expand Block&apos;;&#xD;	/// context menu - Restore the appearance of all blocks by showing information about it that was hidden (collapsed) earlier.  Use the same terminology as in the previous message.&#xD;	Blockly.Msg.EXPAND_ALL = &apos;Expand Blocks&apos;;&#xD;	/// context menu - Make the selected block have no effect (unless reenabled).&#xD;	Blockly.Msg.DISABLE_BLOCK = &apos;Disable Block&apos;;&#xD;	/// context menu - Make the selected block have effect (after having been disabled earlier).&#xD;	Blockly.Msg.ENABLE_BLOCK = &apos;Enable Block&apos;;&#xD;	/// context menu - Provide helpful information about the selected block.\n{{Identical|Help}}&#xD;	Blockly.Msg.HELP = &apos;Help&apos;;&#xD;	/// context menu - Undo the previous action.\n{{Identical|Undo}}&#xD;	Blockly.Msg.UNDO = &apos;Undo&apos;;&#xD;	/// context menu - Undo the previous undo action.\n{{Identical|Redo}}&#xD;	Blockly.Msg.REDO = &apos;Redo&apos;;&#xD;&#xD;	// Variable renaming.&#xD;	/// prompt - This message is only seen in the Opera browser.  With most browsers, users can edit numeric values in blocks by just clicking and typing.  Opera does not allows this, so we have to open a new window and prompt users with this message to chanage a value.&#xD;	Blockly.Msg.CHANGE_VALUE_TITLE = &apos;Change value:&apos;;&#xD;	/// dropdown choice - When the user clicks on a variable block, this is one of the dropdown menu choices.  It is used to rename the current variable.  See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].&#xD;	Blockly.Msg.RENAME_VARIABLE = &apos;Rename variable...&apos;;&#xD;	/// prompt - Prompts the user to enter the new name for the selected variable.  See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].\n\nParameters:\n* %1 - the name of the variable to be renamed.&#xD;	Blockly.Msg.RENAME_VARIABLE_TITLE = &apos;Rename all "%1" variables to:&apos;;&#xD;&#xD;	// Variable creation&#xD;	/// button text - Text on the button used to launch the variable creation dialogue.&#xD;	Blockly.Msg.NEW_VARIABLE = &apos;Create variable...&apos;;&#xD;	/// prompt - Prompts the user to enter the name for a new variable.  See [https://github.com/google/blockly/wiki/Variables#dropdown-menu https://github.com/google/blockly/wiki/Variables#dropdown-menu].&#xD;	Blockly.Msg.NEW_VARIABLE_TITLE = &apos;New variable name:&apos;;&#xD;	/// alert - Tells the user that the name they entered is already in use.&#xD;	Blockly.Msg.VARIABLE_ALREADY_EXISTS = &apos;A variable named "%1" already exists.&apos;&#xD;	/// alert - Tells the user that the name they entered is already in use for a procedure.&#xD;	Blockly.Msg.PROCEDURE_ALREADY_EXISTS = &apos;A procedure named "%1" already exists.&apos;&#xD;&#xD;	// Variable deletion.&#xD;	/// confirm -  Ask the user to confirm their deletion of multiple uses of a variable.&#xD;	Blockly.Msg.DELETE_VARIABLE_CONFIRMATION = &apos;Delete %1 uses of the "%2" variable?&apos;;&#xD;	/// alert - Tell the user that they can&apos;t delete a variable because it&apos;s part of the definition of a function.&#xD;	Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE = &apos;Can\&apos;t delete the variable "%1" because it\&apos;s part of the definition of the function "%2"&apos;;&#xD;	/// dropdown choice - Delete the currently selected variable.&#xD;	Blockly.Msg.DELETE_VARIABLE = &apos;Delete the "%1" variable&apos;;&#xD;&#xD;	// Colour Blocks.&#xD;	/// url - Information about colour.&#xD;	Blockly.Msg.COLOUR_PICKER_HELPURL = &apos;https://en.wikipedia.org/wiki/Color&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette https://github.com/google/blockly/wiki/Colour#picking-a-colour-from-a-palette].&#xD;	Blockly.Msg.COLOUR_PICKER_TOOLTIP = &apos;Choose a colour from the palette.&apos;;&#xD;	/// url - A link that displays a random colour each time you visit it.&#xD;	Blockly.Msg.COLOUR_RANDOM_HELPURL = &apos;http://randomcolour.com&apos;;&#xD;	/// block text - Title of block that generates a colour at random.&#xD;	Blockly.Msg.COLOUR_RANDOM_TITLE = &apos;random colour&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Colour#generating-a-random-colour https://github.com/google/blockly/wiki/Colour#generating-a-random-colour].&#xD;	Blockly.Msg.COLOUR_RANDOM_TOOLTIP = &apos;Choose a colour at random.&apos;;&#xD;	/// url - A link for color codes with percentages (0-100%) for each component, instead of the more common 0-255, which may be more difficult for beginners.&#xD;	Blockly.Msg.COLOUR_RGB_HELPURL = &apos;http://www.december.com/html/spec/colorper.html&apos;;&#xD;	/// block text - Title of block for [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].&#xD;	Blockly.Msg.COLOUR_RGB_TITLE = &apos;colour with&apos;;&#xD;	/// block input text - The amount of red (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Red}}&#xD;	Blockly.Msg.COLOUR_RGB_RED = &apos;red&apos;;&#xD;	/// block input text - The amount of green (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].&#xD;	Blockly.Msg.COLOUR_RGB_GREEN = &apos;green&apos;;&#xD;	/// block input text - The amount of blue (from 0 to 100) to use when [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].\n{{Identical|Blue}}&#xD;	Blockly.Msg.COLOUR_RGB_BLUE = &apos;blue&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components https://github.com/google/blockly/wiki/Colour#creating-a-colour-from-red-green-and-blue-components].&#xD;	Blockly.Msg.COLOUR_RGB_TOOLTIP = &apos;Create a colour with the specified amount of red, green, and blue. All values must be between 0 and 100.&apos;;&#xD;	/// url - A useful link that displays blending of two colors.&#xD;	Blockly.Msg.COLOUR_BLEND_HELPURL = &apos;http://meyerweb.com/eric/tools/color-blend/&apos;;&#xD;	/// block text - A verb for blending two shades of paint.&#xD;	Blockly.Msg.COLOUR_BLEND_TITLE = &apos;blend&apos;;&#xD;	/// block input text - The first of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].&#xD;	Blockly.Msg.COLOUR_BLEND_COLOUR1 = &apos;colour 1&apos;;&#xD;	/// block input text - The second of two colours to [https://github.com/google/blockly/wiki/Colour#blending-colours blend].&#xD;	Blockly.Msg.COLOUR_BLEND_COLOUR2 = &apos;colour 2&apos;;&#xD;	/// block input text - The proportion of the [https://github.com/google/blockly/wiki/Colour#blending-colours blend] containing the first color; the remaining proportion is of the second colour.  For example, if the first colour is red and the second color blue, a ratio of 1 would yield pure red, a ratio of .5 would yield purple (equal amounts of red and blue), and a ratio of 0 would yield pure blue.\n{{Identical|Ratio}}&#xD;	Blockly.Msg.COLOUR_BLEND_RATIO = &apos;ratio&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Colour#blending-colours https://github.com/google/blockly/wiki/Colour#blending-colours].&#xD;	Blockly.Msg.COLOUR_BLEND_TOOLTIP = &apos;Blends two colours together with a given ratio (0.0 - 1.0).&apos;;&#xD;&#xD;	// Loop Blocks.&#xD;	/// url - Describes &apos;repeat loops&apos; in computer programs; consider using the translation of the page [https://en.wikipedia.org/wiki/Control_flow http://en.wikipedia.org/wiki/Control_flow].&#xD;	Blockly.Msg.CONTROLS_REPEAT_HELPURL = &apos;https://en.wikipedia.org/wiki/For_loop&apos;;&#xD;	/// block input text - Title of [https://github.com/google/blockly/wiki/Loops#repeat repeat block].\n\nParameters:\n* %1 - the number of times the body of the loop should be repeated.&#xD;	Blockly.Msg.CONTROLS_REPEAT_TITLE = &apos;repeat %1 times&apos;;&#xD;	/// block text - Preceding the blocks in the body of the loop.  See [https://github.com/google/blockly/wiki/Loops https://github.com/google/blockly/wiki/Loops].\n{{Identical|Do}}&#xD;	Blockly.Msg.CONTROLS_REPEAT_INPUT_DO = &apos;do&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat https://github.com/google/blockly/wiki/Loops#repeat].&#xD;	Blockly.Msg.CONTROLS_REPEAT_TOOLTIP = &apos;Do some statements several times.&apos;;&#xD;	/// url - Describes &apos;while loops&apos; in computer programs; consider using the translation of [https://en.wikipedia.org/wiki/While_loop https://en.wikipedia.org/wiki/While_loop], if present, or [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow].&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL = &apos;https://github.com/google/blockly/wiki/Loops#repeat&apos;;&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;&#xD;	/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-while repeat while] the following condition is true.&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE = &apos;repeat while&apos;;&#xD;	/// dropdown - Specifies that a loop should [https://github.com/google/blockly/wiki/Loops#repeat-until repeat until] the following condition becomes true.&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL = &apos;repeat until&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while https://github.com/google/blockly/wiki/Loops#repeat-while Loops#repeat-while].&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE = &apos;While a value is true, then do some statements.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#repeat-until https://github.com/google/blockly/wiki/Loops#repeat-until].&#xD;	Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL = &apos;While a value is false, then do some statements.&apos;;&#xD;&#xD;	/// url - Describes &apos;for loops&apos; in computer programs.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/For_loop https://en.wikipedia.org/wiki/For_loop], if present.&#xD;	Blockly.Msg.CONTROLS_FOR_HELPURL = &apos;https://github.com/google/blockly/wiki/Loops#count-with&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#count-with https://github.com/google/blockly/wiki/Loops#count-with].\n\nParameters:\n* %1 - the name of the loop variable.&#xD;	Blockly.Msg.CONTROLS_FOR_TOOLTIP = &apos;Have the variable "%1" take on the values from the start number to the end number, counting by the specified interval, and do the specified blocks.&apos;;&#xD;	/// block text - Repeatedly counts a variable (%1)&#xD;	/// starting with a (usually lower) number in a range (%2),&#xD;	/// ending with a (usually higher) number in a range (%3), and counting the&#xD;	/// iterations by a number of steps (%4).  As in&#xD;	/// [https://github.com/google/blockly/wiki/Loops#count-with&#xD;	/// https://github.com/google/blockly/wiki/Loops#count-with].&#xD;	/// [[File:Blockly-count-with.png]]&#xD;	Blockly.Msg.CONTROLS_FOR_TITLE = &apos;count with %1 from %2 to %3 by %4&apos;;&#xD;	Blockly.Msg.CONTROLS_FOR_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;&#xD;&#xD;	/// url - Describes &apos;for-each loops&apos; in computer programs.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/Foreach https://en.wikipedia.org/wiki/Foreach] if present.&#xD;	Blockly.Msg.CONTROLS_FOREACH_HELPURL = &apos;https://github.com/google/blockly/wiki/Loops#for-each&apos;;&#xD;	/// block text - Title of [https://github.com/google/blockly/wiki/Loops#for-each for each block].&#xD;	/// Sequentially assigns every item in array %2 to the valiable %1.&#xD;	Blockly.Msg.CONTROLS_FOREACH_TITLE = &apos;for each item %1 in list %2&apos;;&#xD;	Blockly.Msg.CONTROLS_FOREACH_INPUT_DO = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;&#xD;	/// block text - Description of [https://github.com/google/blockly/wiki/Loops#for-each for each blocks].\n\nParameters:\n* %1 - the name of the loop variable.&#xD;	Blockly.Msg.CONTROLS_FOREACH_TOOLTIP = &apos;For each item in a list, set the variable "%1" to the item, and then do some statements.&apos;;&#xD;&#xD;	/// url - Describes control flow in computer programs.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/Control_flow https://en.wikipedia.org/wiki/Control_flow], if it exists.&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL = &apos;https://github.com/google/blockly/wiki/Loops#loop-termination-blocks&apos;;&#xD;	/// dropdown - The current loop should be exited.  See [https://github.com/google/blockly/wiki/Loops#break https://github.com/google/blockly/wiki/Loops#break].&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK = &apos;break out of loop&apos;;&#xD;	/// dropdown - The current iteration of the loop should be ended and the next should begin.  See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE = &apos;continue with next iteration of loop&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#break-out-of-loop https://github.com/google/blockly/wiki/Loops#break-out-of-loop].&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK = &apos;Break out of the containing loop.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration https://github.com/google/blockly/wiki/Loops#continue-with-next-iteration].&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE = &apos;Skip the rest of this loop, and continue with the next iteration.&apos;;&#xD;	/// warning - The user has tried placing a block outside of a loop (for each, while, repeat, etc.), but this type of block may only be used within a loop.  See [https://github.com/google/blockly/wiki/Loops#loop-termination-blocks https://github.com/google/blockly/wiki/Loops#loop-termination-blocks].&#xD;	Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING = &apos;Warning: This block may only be used within a loop.&apos;;&#xD;&#xD;	// Logic Blocks.&#xD;	/// url - Describes conditional statements (if-then-else) in computer programs.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/If_else https://en.wikipedia.org/wiki/If_else], if present.&#xD;	Blockly.Msg.CONTROLS_IF_HELPURL = &apos;https://github.com/google/blockly/wiki/IfElse&apos;;&#xD;	/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-blocks &apos;if&apos; blocks].  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.&#xD;	Blockly.Msg.CONTROLS_IF_TOOLTIP_1 = &apos;If a value is true, then do some statements.&apos;;&#xD;	/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-blocks if-else blocks].  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.&#xD;	Blockly.Msg.CONTROLS_IF_TOOLTIP_2 = &apos;If a value is true, then do the first block of statements. Otherwise, do the second block of statements.&apos;;&#xD;	/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-blocks if-else-if blocks].  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.&#xD;	Blockly.Msg.CONTROLS_IF_TOOLTIP_3 = &apos;If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements.&apos;;&#xD;	/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#if-else-if-else-blocks if-else-if-else blocks].  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/If_statement https://en.wikipedia.org/wiki/If_statement], if present.&#xD;	Blockly.Msg.CONTROLS_IF_TOOLTIP_4 = &apos;If the first value is true, then do the first block of statements. Otherwise, if the second value is true, do the second block of statements. If none of the values are true, do the last block of statements.&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse].&#xD;	/// It is recommended, but not essential, that this have text in common with the translation of &apos;else if&apos;\n{{Identical|If}}&#xD;	Blockly.Msg.CONTROLS_IF_MSG_IF = &apos;if&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse].  The English words "otherwise if" would probably be clearer than "else if", but the latter is used because it is traditional and shorter.&#xD;	Blockly.Msg.CONTROLS_IF_MSG_ELSEIF = &apos;else if&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/IfElse https://github.com/google/blockly/wiki/IfElse].  The English word "otherwise" would probably be superior to "else", but the latter is used because it is traditional and shorter.&#xD;	Blockly.Msg.CONTROLS_IF_MSG_ELSE = &apos;else&apos;;&#xD;	Blockly.Msg.CONTROLS_IF_MSG_THEN = Blockly.Msg.CONTROLS_REPEAT_INPUT_DO;&#xD;	Blockly.Msg.CONTROLS_IF_IF_TITLE_IF = Blockly.Msg.CONTROLS_IF_MSG_IF;&#xD;	/// tooltip - Describes [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].&#xD;	Blockly.Msg.CONTROLS_IF_IF_TOOLTIP = &apos;Add, remove, or reorder sections to reconfigure this if block.&apos;;&#xD;	Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF = Blockly.Msg.CONTROLS_IF_MSG_ELSEIF;&#xD;	/// tooltip - Describes the &apos;else if&apos; subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].&#xD;	Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP = &apos;Add a condition to the if block.&apos;;&#xD;	Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;&#xD;	/// tooltip - Describes the &apos;else&apos; subblock during [https://github.com/google/blockly/wiki/IfElse#block-modification if block modification].&#xD;	Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP = &apos;Add a final, catch-all condition to the if block.&apos;;&#xD;&#xD;	/// button text - Text on a button inside a dialogue window, which will accept or acknowledge the contents of the dialogue when pressed.&#xD;	Blockly.Msg.IOS_OK = &apos;OK&apos;;&#xD;	/// button text - Text on a button inside a dialogue window, which will close or cancel the dialogue when pressed.&#xD;	Blockly.Msg.IOS_CANCEL = &apos;Cancel&apos;;&#xD;	/// alert - Title text for an error dialogue.&#xD;	Blockly.Msg.IOS_ERROR = &apos;Error&apos;;&#xD;	/// header text - Title of a section that displays a list of parameters (aka. "inputs") that have been defined for a procedure. This is used inside a dialogue window to configure a procedure.&#xD;	Blockly.Msg.IOS_PROCEDURES_INPUTS = &apos;INPUTS&apos;;&#xD;	/// button text - Text on a button which will add a parameter (aka. "input") to a procedure. This is used inside a dialogue window to configure a procedure. NOTE: The "+" should be preserved at the beginning of the text.&#xD;	Blockly.Msg.IOS_PROCEDURES_ADD_INPUT = &apos;+ Add Input&apos;;&#xD;	/// option text - Text describing an option to allow statements to be added within a procedure. This is used inside a dialogue window to configure a procedure.&#xD;	Blockly.Msg.IOS_PROCEDURES_ALLOW_STATEMENTS = &apos;Allow statements&apos;;&#xD;	/// alert - Error message when duplicate parameters (aka. "inputs") have been defined on a procedure. This is used inside a dialogue window to configure procedure parameters.&#xD;	Blockly.Msg.IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR = &apos;This function has duplicate inputs.&apos;;&#xD;	/// button text - Text on a button which will open a variable creation dialogue when pressed. NOTE: The "+" should be preserved at the beginning of the text.&#xD;	Blockly.Msg.IOS_VARIABLES_ADD_VARIABLE = &apos;+ Add Variable&apos;;&#xD;	/// button text - Text on a button inside a variable creation dialogue, which will add a variable when pressed.&#xD;	Blockly.Msg.IOS_VARIABLES_ADD_BUTTON = &apos;Add&apos;;&#xD;	/// button text - Text on a button inside a variable rename dialogue, which will rename a variable when pressed.&#xD;	Blockly.Msg.IOS_VARIABLES_RENAME_BUTTON = &apos;Rename&apos;;&#xD;	/// button text - Text on a button inside a variable deletion dialogue, which will delete a variable when pressed.&#xD;	Blockly.Msg.IOS_VARIABLES_DELETE_BUTTON = &apos;Delete&apos;;&#xD;	/// placeholder text - Placeholder text used inside a text input, where a variable name should be entered.&#xD;	Blockly.Msg.IOS_VARIABLES_VARIABLE_NAME = &apos;Variable name&apos;;&#xD;	/// alert - Error message that is displayed when the user attempts to create a variable without a name.&#xD;	Blockly.Msg.IOS_VARIABLES_EMPTY_NAME_ERROR = &apos;You can\&apos;t use an empty variable name.&apos;;&#xD;&#xD;	/// url - Information about comparisons.&#xD;	Blockly.Msg.LOGIC_COMPARE_HELPURL = &apos;https://en.wikipedia.org/wiki/Inequality_(mathematics)&apos;;&#xD;	/// tooltip - Describes the equals (=) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ = &apos;Return true if both inputs equal each other.&apos;;&#xD;	/// tooltip - Describes the not equals (≠) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ = &apos;Return true if both inputs are not equal to each other.&apos;;&#xD;	/// tooltip - Describes the less than (&lt;) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT = &apos;Return true if the first input is smaller than the second input.&apos;;&#xD;	/// tooltip - Describes the less than or equals (≤) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE = &apos;Return true if the first input is smaller than or equal to the second input.&apos;;&#xD;	/// tooltip - Describes the greater than (&gt;) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT = &apos;Return true if the first input is greater than the second input.&apos;;&#xD;	/// tooltip - Describes the greater than or equals (≥) block.&#xD;	Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE = &apos;Return true if the first input is greater than or equal to the second input.&apos;;&#xD;&#xD;	/// url - Information about the Boolean conjunction ("and") and disjunction ("or") operators.  Consider using the translation of [https://en.wikipedia.org/wiki/Boolean_logic https://en.wikipedia.org/wiki/Boolean_logic], if it exists in your language.&#xD;	Blockly.Msg.LOGIC_OPERATION_HELPURL = &apos;https://github.com/google/blockly/wiki/Logic#logical-operations&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].&#xD;	Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND = &apos;Return true if both inputs are true.&apos;;&#xD;	/// block text - See [https://en.wikipedia.org/wiki/Logical_conjunction https://en.wikipedia.org/wiki/Logical_conjunction].\n{{Identical|And}}&#xD;	Blockly.Msg.LOGIC_OPERATION_AND = &apos;and&apos;;&#xD;	/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].&#xD;	Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR = &apos;Return true if at least one of the inputs is true.&apos;;&#xD;	/// block text - See [https://en.wikipedia.org/wiki/Disjunction https://en.wikipedia.org/wiki/Disjunction].\n{{Identical|Or}}&#xD;	Blockly.Msg.LOGIC_OPERATION_OR = &apos;or&apos;;&#xD;&#xD;	/// url - Information about logical negation.  The translation of [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation] is recommended if it exists in the target language.&#xD;	Blockly.Msg.LOGIC_NEGATE_HELPURL = &apos;https://github.com/google/blockly/wiki/Logic#not&apos;;&#xD;	/// block text - This is a unary operator that returns &apos;&apos;false&apos;&apos; when the input is &apos;&apos;true&apos;&apos;, and &apos;&apos;true&apos;&apos; when the input is &apos;&apos;false&apos;&apos;.&#xD;	/// \n\nParameters:\n* %1 - the input (which should be either the value "true" or "false")&#xD;	Blockly.Msg.LOGIC_NEGATE_TITLE = &apos;not %1&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Logical_negation https://en.wikipedia.org/wiki/Logical_negation].&#xD;	Blockly.Msg.LOGIC_NEGATE_TOOLTIP = &apos;Returns true if the input is false. Returns false if the input is true.&apos;;&#xD;&#xD;	/// url - Information about the logic values &apos;&apos;true&apos;&apos; and &apos;&apos;false&apos;&apos;.  Consider using the translation of [https://en.wikipedia.org/wiki/Truth_value https://en.wikipedia.org/wiki/Truth_value] if it exists in your language.&#xD;	Blockly.Msg.LOGIC_BOOLEAN_HELPURL = &apos;https://github.com/google/blockly/wiki/Logic#values&apos;;&#xD;	/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] &apos;&apos;true&apos;&apos;.\n{{Identical|True}}&#xD;	Blockly.Msg.LOGIC_BOOLEAN_TRUE = &apos;true&apos;;&#xD;	/// block text - The word for the [https://en.wikipedia.org/wiki/Truth_value logical value] &apos;&apos;false&apos;&apos;.\n{{Identical|False}}&#xD;	Blockly.Msg.LOGIC_BOOLEAN_FALSE = &apos;false&apos;;&#xD;	/// tooltip - Indicates that the block returns either of the two possible [https://en.wikipedia.org/wiki/Truth_value logical values].&#xD;	Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP = &apos;Returns either true or false.&apos;;&#xD;&#xD;	/// url - Provide a link to the translation of [https://en.wikipedia.org/wiki/Nullable_type https://en.wikipedia.org/wiki/Nullable_type], if it exists in your language; otherwise, do not worry about translating this advanced concept.&#xD;	Blockly.Msg.LOGIC_NULL_HELPURL = &apos;https://en.wikipedia.org/wiki/Nullable_type&apos;;&#xD;	/// block text - In computer languages, &apos;&apos;null&apos;&apos; is a special value that indicates that no value has been set.  You may use your language&apos;s word for "nothing" or "invalid".\n{{Identical|Null}}&#xD;	Blockly.Msg.LOGIC_NULL = &apos;null&apos;;&#xD;	/// tooltip - This should use the word from the previous message.&#xD;	Blockly.Msg.LOGIC_NULL_TOOLTIP = &apos;Returns null.&apos;;&#xD;&#xD;	/// url - Describes the programming language operator known as the &apos;&apos;ternary&apos;&apos; or &apos;&apos;conditional&apos;&apos; operator.  It is recommended that you use the translation of [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:] if it exists.&#xD;	Blockly.Msg.LOGIC_TERNARY_HELPURL = &apos;https://en.wikipedia.org/wiki/%3F:&apos;;&#xD;	/// block input text - Label for the input whose value determines which of the other two inputs is returned.  In some programming languages, this is called a &apos;&apos;&apos;&apos;predicate&apos;&apos;&apos;&apos;.&#xD;	Blockly.Msg.LOGIC_TERNARY_CONDITION = &apos;test&apos;;&#xD;	/// block input text - Indicates that the following input should be returned (used as output) if the test input is true.  Remember to try to keep block text terse (short).&#xD;	Blockly.Msg.LOGIC_TERNARY_IF_TRUE = &apos;if true&apos;;&#xD;	/// block input text - Indicates that the following input should be returned (used as output) if the test input is false.&#xD;	Blockly.Msg.LOGIC_TERNARY_IF_FALSE = &apos;if false&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/%3F: https://en.wikipedia.org/wiki/%3F:].&#xD;	Blockly.Msg.LOGIC_TERNARY_TOOLTIP = &apos;Check the condition in "test". If the condition is true, returns the "if true" value; otherwise returns the "if false" value.&apos;;&#xD;&#xD;	// Math Blocks.&#xD;	/// url - Information about (real) numbers.&#xD;	Blockly.Msg.MATH_NUMBER_HELPURL = &apos;https://en.wikipedia.org/wiki/Number&apos;;&#xD;	/// tooltip - Any positive or negative number, not necessarily an integer.&#xD;	Blockly.Msg.MATH_NUMBER_TOOLTIP = &apos;A number.&apos;;&#xD;&#xD;	/// {{optional}}\nmath - The symbol for the binary operation addition.&#xD;	Blockly.Msg.MATH_ADDITION_SYMBOL = &apos;+&apos;;&#xD;	/// {{optional}}\nmath - The symbol for the binary operation indicating that the right operand should be&#xD;	/// subtracted from the left operand.&#xD;	Blockly.Msg.MATH_SUBTRACTION_SYMBOL = &apos;-&apos;;&#xD;	/// {{optional}}\nmath - The binary operation indicating that the left operand should be divided by&#xD;	/// the right operand.&#xD;	Blockly.Msg.MATH_DIVISION_SYMBOL = &apos;÷&apos;;&#xD;	/// {{optional}}\nmath - The symbol for the binary operation multiplication.&#xD;	Blockly.Msg.MATH_MULTIPLICATION_SYMBOL = &apos;×&apos;;&#xD;	/// {{optional}}\nmath - The symbol for the binary operation exponentiation.  Specifically, if the&#xD;	/// value of the left operand is L and the value of the right operand (the exponent) is&#xD;	/// R, multiply L by itself R times.  (Fractional and negative exponents are also legal.)&#xD;	Blockly.Msg.MATH_POWER_SYMBOL = &apos;^&apos;;&#xD;&#xD;	/// math - The short name of the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].&#xD;	Blockly.Msg.MATH_TRIG_SIN = &apos;sin&apos;;&#xD;	/// math - The short name of the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].&#xD;	Blockly.Msg.MATH_TRIG_COS = &apos;cos&apos;;&#xD;	/// math - The short name of the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].&#xD;	Blockly.Msg.MATH_TRIG_TAN = &apos;tan&apos;;&#xD;	/// math - The short name of the &apos;&apos;inverse of&apos;&apos; the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine].&#xD;	Blockly.Msg.MATH_TRIG_ASIN = &apos;asin&apos;;&#xD;	/// math - The short name of the &apos;&apos;inverse of&apos;&apos; the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine].&#xD;	Blockly.Msg.MATH_TRIG_ACOS = &apos;acos&apos;;&#xD;	/// math - The short name of the &apos;&apos;inverse of&apos;&apos; the trigonometric function&#xD;	/// [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent].&#xD;	Blockly.Msg.MATH_TRIG_ATAN = &apos;atan&apos;;&#xD;&#xD;	/// url - Information about addition, subtraction, multiplication, division, and exponentiation.&#xD;	Blockly.Msg.MATH_ARITHMETIC_HELPURL = &apos;https://en.wikipedia.org/wiki/Arithmetic&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition].&#xD;	Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD = &apos;Return the sum of the two numbers.&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Subtraction https://en.wikipedia.org/wiki/Subtraction].&#xD;	Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS = &apos;Return the difference of the two numbers.&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Multiplication https://en.wikipedia.org/wiki/Multiplication].&#xD;	Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY = &apos;Return the product of the two numbers.&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Division_(mathematics) https://en.wikipedia.org/wiki/Division_(mathematics)].&#xD;	Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE = &apos;Return the quotient of the two numbers.&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Exponentiation https://en.wikipedia.org/wiki/Exponentiation].&#xD;	Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER = &apos;Return the first number raised to the power of the second number.&apos;;&#xD;&#xD;	/// url - Information about the square root operation.&#xD;	Blockly.Msg.MATH_SINGLE_HELPURL = &apos;https://en.wikipedia.org/wiki/Square_root&apos;;&#xD;	/// dropdown - This computes the positive [https://en.wikipedia.org/wiki/Square_root square root] of its input.  For example, the square root of 16 is 4.&#xD;	Blockly.Msg.MATH_SINGLE_OP_ROOT = &apos;square root&apos;;&#xD;	/// tooltip - Please use the same term as in the previous message.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT = &apos;Return the square root of a number.&apos;;&#xD;	/// dropdown - This leaves positive numeric inputs changed and inverts negative inputs.  For example, the absolute value of 5 is 5; the absolute value of -5 is also 5.  For more information, see [https://en.wikipedia.org/wiki/Absolute_value https://en.wikipedia.org/wiki/Absolute_value].&#xD;	Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE = &apos;absolute&apos;;&#xD;	/// tooltip - Please use the same term as in the previous message.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS = &apos;Return the absolute value of a number.&apos;;&#xD;&#xD;	/// tooltip - Calculates &apos;&apos;&apos;0-n&apos;&apos;&apos;, where &apos;&apos;&apos;n&apos;&apos;&apos; is the single numeric input.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG = &apos;Return the negation of a number.&apos;;&#xD;	/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Natural_logarithm|natural logarithm] of its single numeric input.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_LN = &apos;Return the natural logarithm of a number.&apos;;&#xD;	/// tooltip - Calculates the [https://en.wikipedia.org/wiki/Common_logarithm common logarithm] of its single numeric input.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10 = &apos;Return the base 10 logarithm of a number.&apos;;&#xD;	/// tooltip - Multiplies [https://en.wikipedia.org/wiki/E_(mathematical_constant) e] by itself n times, where n is the single numeric input.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP = &apos;Return e to the power of a number.&apos;;&#xD;	/// tooltip - Multiplies 10 by itself n times, where n is the single numeric input.&#xD;	Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10 = &apos;Return 10 to the power of a number.&apos;;&#xD;&#xD;	/// url - Information about the trigonometric functions sine, cosine, tangent, and their inverses (ideally using degrees, not radians).&#xD;	Blockly.Msg.MATH_TRIG_HELPURL = &apos;https://en.wikipedia.org/wiki/Trigonometric_functions&apos;;&#xD;	/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent sine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_SIN = &apos;Return the sine of a degree (not radian).&apos;;&#xD;	/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent cosine] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_COS = &apos;Return the cosine of a degree (not radian).&apos;;&#xD;	/// tooltip - Return the [https://en.wikipedia.org/wiki/Trigonometric_functions#Sine.2C_cosine_and_tangent tangent] of an [https://en.wikipedia.org/wiki/Degree_(angle) angle in degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_TAN = &apos;Return the tangent of a degree (not radian).&apos;;&#xD;	/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent sine function], using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN = &apos;Return the arcsine of a number.&apos;;&#xD;	/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent cosine] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS = &apos;Return the arccosine of a number.&apos;;&#xD;	/// tooltip - The [https://en.wikipedia.org/wiki/Inverse_trigonometric_functions inverse] of the [https://en.wikipedia.org/wiki/Cosine#Sine.2C_cosine_and_tangent tangent] function, using [https://en.wikipedia.org/wiki/Degree_(angle) degrees], not radians.&#xD;	Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN = &apos;Return the arctangent of a number.&apos;;&#xD;&#xD;	/// url - Information about the mathematical constants Pi (π), e, the golden ratio (φ), √ 2, √ 1/2, and infinity (∞).&#xD;	Blockly.Msg.MATH_CONSTANT_HELPURL = &apos;https://en.wikipedia.org/wiki/Mathematical_constant&apos;;&#xD;	/// tooltip - Provides the specified [https://en.wikipedia.org/wiki/Mathematical_constant mathematical constant].&#xD;	Blockly.Msg.MATH_CONSTANT_TOOLTIP = &apos;Return one of the common constants: π (3.141…), e (2.718…), φ (1.618…), sqrt(2) (1.414…), sqrt(½) (0.707…), or ∞ (infinity).&apos;;&#xD;	/// dropdown - A number is &apos;&apos;&apos;even&apos;&apos;&apos; if it is a multiple of 2.  For example, 4 is even (yielding true), but 3 is not (false).&#xD;	Blockly.Msg.MATH_IS_EVEN = &apos;is even&apos;;&#xD;	/// dropdown - A number is &apos;&apos;&apos;odd&apos;&apos;&apos; if it is not a multiple of 2.  For example, 3 is odd (yielding true), but 4 is not (false).  The opposite of "odd" is "even".&#xD;	Blockly.Msg.MATH_IS_ODD = &apos;is odd&apos;;&#xD;	/// dropdown - A number is [https://en.wikipedia.org/wiki/Prime prime] if it cannot be evenly divided by any positive integers except for 1 and itself.  For example, 5 is prime, but 6 is not because 2 × 3 = 6.&#xD;	Blockly.Msg.MATH_IS_PRIME = &apos;is prime&apos;;&#xD;	/// dropdown - A number is &apos;&apos;&apos;whole&apos;&apos;&apos; if it is an [https://en.wikipedia.org/wiki/Integer integer].  For example, 5 is whole, but 5.1 is not.&#xD;	Blockly.Msg.MATH_IS_WHOLE = &apos;is whole&apos;;&#xD;	/// dropdown - A number is &apos;&apos;&apos;positive&apos;&apos;&apos; if it is greater than 0.  (0 is neither negative nor positive.)&#xD;	Blockly.Msg.MATH_IS_POSITIVE = &apos;is positive&apos;;&#xD;	/// dropdown - A number is &apos;&apos;&apos;negative&apos;&apos;&apos; if it is less than 0.  (0 is neither negative nor positive.)&#xD;	Blockly.Msg.MATH_IS_NEGATIVE = &apos;is negative&apos;;&#xD;	/// dropdown - A number x is divisible by y if y goes into x evenly.  For example, 10 is divisible by 5, but 10 is not divisible by 3.&#xD;	Blockly.Msg.MATH_IS_DIVISIBLE_BY = &apos;is divisible by&apos;;&#xD;	/// tooltip - This block lets the user specify via a dropdown menu whether to check if the numeric input is even, odd, prime, whole, positive, negative, or divisible by a given value.&#xD;	Blockly.Msg.MATH_IS_TOOLTIP = &apos;Check if a number is an even, odd, prime, whole, positive, negative, or if it is divisible by certain number. Returns true or false.&apos;;&#xD;&#xD;	/// url - Information about incrementing (increasing the value of) a variable.&#xD;	/// For other languages, just use the translation of the Wikipedia page about&#xD;	/// addition ([https://en.wikipedia.org/wiki/Addition https://en.wikipedia.org/wiki/Addition]).&#xD;	Blockly.Msg.MATH_CHANGE_HELPURL = &apos;https://en.wikipedia.org/wiki/Programming_idiom#Incrementing_a_counter&apos;;&#xD;	/// - As in: &apos;&apos;change&apos;&apos; [the value of variable] &apos;&apos;item&apos;&apos; &apos;&apos;by&apos;&apos; 1 (e.g., if the variable named &apos;item&apos; had the value 5, change it to 6).&#xD;	/// %1 is a variable name.&#xD;	/// %2 is the amount of change.&#xD;	Blockly.Msg.MATH_CHANGE_TITLE = &apos;change %1 by %2&apos;;&#xD;	Blockly.Msg.MATH_CHANGE_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;&#xD;	/// tooltip - This updates the value of the variable by adding to it the following numeric input.\n\nParameters:\n* %1 - the name of the variable whose value should be increased.&#xD;	Blockly.Msg.MATH_CHANGE_TOOLTIP = &apos;Add a number to variable "%1".&apos;;&#xD;&#xD;	/// url - Information about how numbers are rounded to the nearest integer&#xD;	Blockly.Msg.MATH_ROUND_HELPURL = &apos;https://en.wikipedia.org/wiki/Rounding&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Rounding https://en.wikipedia.org/wiki/Rounding].&#xD;	Blockly.Msg.MATH_ROUND_TOOLTIP = &apos;Round a number up or down.&apos;;&#xD;	/// dropdown - This rounds its input to the nearest whole number.  For example, 3.4 is rounded to 3.&#xD;	Blockly.Msg.MATH_ROUND_OPERATOR_ROUND = &apos;round&apos;;&#xD;	/// dropdown - This rounds its input up to the nearest whole number.  For example, if the input was 2.2, the result would be 3.&#xD;	Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP = &apos;round up&apos;;&#xD;	/// dropdown - This rounds its input down to the nearest whole number.  For example, if the input was 3.8, the result would be 3.&#xD;	Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN = &apos;round down&apos;;&#xD;&#xD;	/// url - Information about applying a function to a list of numbers.  (We were unable to find such information in English.  Feel free to skip this and any other URLs that are difficult.)&#xD;	Blockly.Msg.MATH_ONLIST_HELPURL = &apos;&apos;;&#xD;	/// dropdown - This computes the sum of the numeric elements in the list.  For example, the sum of the list {1, 4} is 5.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_SUM = &apos;sum of list&apos;;&#xD;	/// tooltip - Please use the same term for "sum" as in the previous message.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM = &apos;Return the sum of all the numbers in the list.&apos;;&#xD;	/// dropdown - This finds the smallest (minimum) number in a list.  For example, the smallest number in the list [-5, 0, 3] is -5.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_MIN = &apos;min of list&apos;;&#xD;	/// tooltip - Please use the same term for "min" or "minimum" as in the previous message.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN = &apos;Return the smallest number in the list.&apos;;&#xD;	/// dropdown - This finds the largest (maximum) number in a list.  For example, the largest number in the list [-5, 0, 3] is 3.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_MAX = &apos;max of list&apos;;&#xD;	/// tooltip&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX = &apos;Return the largest number in the list.&apos;;&#xD;	/// dropdown - This adds up all of the numbers in a list and divides the sum by the number of elements in the list.  For example, the [https://en.wikipedia.org/wiki/Arithmetic_mean average] of the list [1, 2, 3, 4] is 2.5 (10/4).&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE = &apos;average of list&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Arithmetic_mean https://en.wikipedia.org/wiki/Arithmetic_mean] for more informatin.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE = &apos;Return the average (arithmetic mean) of the numeric values in the list.&apos;;&#xD;	/// dropdown - This finds the [https://en.wikipedia.org/wiki/Median median] of the numeric values in a list.  For example, the median of the list {1, 2, 7, 12, 13} is 7.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN = &apos;median of list&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Median median https://en.wikipedia.org/wiki/Median median] for more information.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN = &apos;Return the median number in the list.&apos;;&#xD;	/// dropdown - This finds the most common numbers ([https://en.wikipedia.org/wiki/Mode_(statistics) modes]) in a list.  For example, the modes of the list {1, 3, 9, 3, 9}  are {3, 9}.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_MODE = &apos;modes of list&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Mode_(statistics) https://en.wikipedia.org/wiki/Mode_(statistics)] for more information.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE = &apos;Return a list of the most common item(s) in the list.&apos;;&#xD;	/// dropdown - This finds the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of the numeric values in a list.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV = &apos;standard deviation of list&apos;;&#xD;	/// tooltip - See [https://en.wikipedia.org/wiki/Standard_deviation https://en.wikipedia.org/wiki/Standard_deviation] for more information.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV = &apos;Return the standard deviation of the list.&apos;;&#xD;	/// dropdown - This choose an element at random from a list.  Each element is chosen with equal probability.&#xD;	Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM = &apos;random item of list&apos;;&#xD;	/// tooltip - Please use same term for &apos;random&apos; as in previous entry.&#xD;	Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM = &apos;Return a random element from the list.&apos;;&#xD;&#xD;	/// url - information about the modulo (remainder) operation.&#xD;	Blockly.Msg.MATH_MODULO_HELPURL = &apos;https://en.wikipedia.org/wiki/Modulo_operation&apos;;&#xD;	/// block text - Title of block providing the remainder when dividing the first numerical input by the second.  For example, the remainder of 10 divided by 3 is 1.\n\nParameters:\n* %1 - the dividend (10, in our example)\n* %2 - the divisor (3 in our example).&#xD;	Blockly.Msg.MATH_MODULO_TITLE = &apos;remainder of %1 ÷ %2&apos;;&#xD;	/// tooltip - For example, the remainder of 10 divided by 3 is 1.&#xD;	Blockly.Msg.MATH_MODULO_TOOLTIP = &apos;Return the remainder from dividing the two numbers.&apos;;&#xD;&#xD;	/// url - Information about constraining a numeric value to be in a specific range.  (The English URL is not ideal.  Recall that translating URLs is the lowest priority.)&#xD;	Blockly.Msg.MATH_CONSTRAIN_HELPURL = &apos;https://en.wikipedia.org/wiki/Clamping_(graphics)&apos;;&#xD;	/// block text - The title of the block that &apos;&apos;&apos;constrain&apos;&apos;&apos;s (forces) a number to be in a given range.&#xD;	///For example, if the number 150 is constrained to be between 5 and 100, the result will be 100.&#xD;	///\n\nParameters:\n* %1 - the value to constrain (e.g., 150)\n* %2 - the minimum value (e.g., 5)\n* %3 - the maximum value (e.g., 100).&#xD;	Blockly.Msg.MATH_CONSTRAIN_TITLE = &apos;constrain %1 low %2 high %3&apos;;&#xD;	/// tooltip - This compares a number &apos;&apos;x&apos;&apos; to a low value &apos;&apos;L&apos;&apos; and a high value &apos;&apos;H&apos;&apos;.  If &apos;&apos;x&apos;&apos; is less then &apos;&apos;L&apos;&apos;, the result is &apos;&apos;L&apos;&apos;.  If &apos;&apos;x&apos;&apos; is greater than &apos;&apos;H&apos;&apos;, the result is &apos;&apos;H&apos;&apos;.  Otherwise, the result is &apos;&apos;x&apos;&apos;.&#xD;	Blockly.Msg.MATH_CONSTRAIN_TOOLTIP = &apos;Constrain a number to be between the specified limits (inclusive).&apos;;&#xD;&#xD;	/// url - Information about how computers generate random numbers.&#xD;	Blockly.Msg.MATH_RANDOM_INT_HELPURL = &apos;https://en.wikipedia.org/wiki/Random_number_generation&apos;;&#xD;	/// block text - The title of the block that generates a random integer (whole number) in the specified range.  For example, if the range is from 5 to 7, this returns 5, 6, or 7 with equal likelihood. %1 is a placeholder for the lower number, %2 is the placeholder for the larger number.&#xD;	Blockly.Msg.MATH_RANDOM_INT_TITLE = &apos;random integer from %1 to %2&apos;;&#xD;	/// tooltip - Return a random integer between two values specified as inputs.  For example, if one input was 7 and another 9, any of the numbers 7, 8, or 9 could be produced.&#xD;	Blockly.Msg.MATH_RANDOM_INT_TOOLTIP = &apos;Return a random integer between the two specified limits, inclusive.&apos;;&#xD;&#xD;	/// url - Information about how computers generate random numbers (specifically, numbers in the range from 0 to just below 1).&#xD;	Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL = &apos;https://en.wikipedia.org/wiki/Random_number_generation&apos;;&#xD;	/// block text - The title of the block that generates a random number greater than or equal to 0 and less than 1.&#xD;	Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM = &apos;random fraction&apos;;&#xD;	/// tooltip - Return a random fraction between 0 and 1.  The value may be equal to 0 but must be less than 1.&#xD;	Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP = &apos;Return a random fraction between 0.0 (inclusive) and 1.0 (exclusive).&apos;;&#xD;&#xD;	// Text Blocks.&#xD;	/// url - Information about how computers represent text (sometimes referred to as &apos;&apos;string&apos;&apos;s).&#xD;	Blockly.Msg.TEXT_TEXT_HELPURL = &apos;https://en.wikipedia.org/wiki/String_(computer_science)&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text https://github.com/google/blockly/wiki/Text].&#xD;	Blockly.Msg.TEXT_TEXT_TOOLTIP = &apos;A letter, word, or line of text.&apos;;&#xD;&#xD;	/// url - Information on concatenating/appending pieces of text.&#xD;	Blockly.Msg.TEXT_JOIN_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#text-creation&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation].&#xD;	Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH = &apos;create text with&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation create text with] for more information.&#xD;	Blockly.Msg.TEXT_JOIN_TOOLTIP = &apos;Create a piece of text by joining together any number of items.&apos;;&#xD;&#xD;	/// block text - This is shown when the programmer wants to change the number of pieces of text being joined together.  See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the &apos;Text creation&apos; section.\n{{Identical|Join}}&#xD;	Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN = &apos;join&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the &apos;Text creation&apos; section.&#xD;	Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP = &apos;Add, remove, or reorder sections to reconfigure this text block.&apos;;&#xD;	Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM = Blockly.Msg.VARIABLES_DEFAULT_NAME;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Text#text-creation https://github.com/google/blockly/wiki/Text#text-creation], specifically the last picture in the &apos;Text creation&apos; section.&#xD;	Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP = &apos;Add an item to the text.&apos;;&#xD;&#xD;	/// url - This and the other text-related URLs are going to be hard to translate.  As always, it is okay to leave untranslated or paste in the English-language URL.  For these URLs, you might also consider a general URL about how computers represent text (such as the translation of [https://en.wikipedia.org/wiki/String_(computer_science) this Wikipedia page]).&#xD;	Blockly.Msg.TEXT_APPEND_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#text-modification&apos;;&#xD;	/// block input text - Message preceding the name of a variable to which text should be appended.&#xD;	/// [[File:blockly-append-text.png]]&#xD;	Blockly.Msg.TEXT_APPEND_TO = &apos;to&apos;;&#xD;	/// block input text - Message following the variable and preceding the piece of text that should&#xD;	/// be appended, as shown below.&#xD;	/// [[File:blockly-append-text.png]]&#xD;	Blockly.Msg.TEXT_APPEND_APPENDTEXT = &apos;append text&apos;;&#xD;	Blockly.Msg.TEXT_APPEND_VARIABLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-modification https://github.com/google/blockly/wiki/Text#text-modification] for more information.\n\nParameters:\n* %1 - the name of the variable to which text should be appended&#xD;	Blockly.Msg.TEXT_APPEND_TOOLTIP = &apos;Append some text to variable "%1".&apos;;&#xD;&#xD;	/// url - Information about text on computers (usually referred to as &apos;strings&apos;).&#xD;	Blockly.Msg.TEXT_LENGTH_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#text-modification&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length].&#xD;	/// \n\nParameters:\n* %1 - the piece of text to take the length of&#xD;	Blockly.Msg.TEXT_LENGTH_TITLE = &apos;length of %1&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#text-length https://github.com/google/blockly/wiki/Text#text-length].&#xD;	Blockly.Msg.TEXT_LENGTH_TOOLTIP = &apos;Returns the number of letters (including spaces) in the provided text.&apos;;&#xD;&#xD;	/// url - Information about empty pieces of text on computers (usually referred to as &apos;empty strings&apos;).&#xD;	Blockly.Msg.TEXT_ISEMPTY_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#checking-for-empty-text&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text].&#xD;	/// \n\nParameters:\n* %1 - the piece of text to test for emptiness&#xD;	Blockly.Msg.TEXT_ISEMPTY_TITLE = &apos;%1 is empty&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#checking-for-empty-text https://github.com/google/blockly/wiki/Text#checking-for-empty-text].&#xD;	Blockly.Msg.TEXT_ISEMPTY_TOOLTIP = &apos;Returns true if the provided text is empty.&apos;;&#xD;&#xD;	/// url - Information about finding a character in a piece of text.&#xD;	Blockly.Msg.TEXT_INDEXOF_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#finding-text&apos;;&#xD;	/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode. See [https://github.com/google/blockly/wiki/Text#finding-text https://github.com/google/blockly/wiki/Text#finding-text].&#xD;	Blockly.Msg.TEXT_INDEXOF_TOOLTIP = &apos;Returns the index of the first/last occurrence of the first text in the second text. Returns %1 if text is not found.&apos;;&#xD;	/// block text - Title of blocks allowing users to find text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#finding-text&#xD;	/// https://github.com/google/blockly/wiki/Text#finding-text].&#xD;	/// [[File:Blockly-find-text.png]].&#xD;	Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT = &apos;in text&apos;;&#xD;	/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text&#xD;	/// https://github.com/google/blockly/wiki/Text#finding-text].&#xD;	/// [[File:Blockly-find-text.png]].&#xD;	Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST = &apos;find first occurrence of text&apos;;&#xD;	/// dropdown - See [https://github.com/google/blockly/wiki/Text#finding-text&#xD;	/// https://github.com/google/blockly/wiki/Text#finding-text].  This would&#xD;	/// replace "find first occurrence of text" below.  (For more information on&#xD;	/// how common text is factored out of dropdown menus, see&#xD;	/// [https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus&#xD;	/// https://translatewiki.net/wiki/Translating:Blockly#Drop-Down_Menus)].)&#xD;	/// [[File:Blockly-find-text.png]].&#xD;	Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST = &apos;find last occurrence of text&apos;;&#xD;	/// block text - Optional text to follow the rightmost block in a&#xD;	/// [https://github.com/google/blockly/wiki/Text#finding-text&#xD;	/// https://github.com/google/blockly/wiki/Text#finding-text in text ... find block]&#xD;	/// (after the "a" in the below picture).  This will be the empty string in most languages.&#xD;	/// [[File:Blockly-find-text.png]].&#xD;	Blockly.Msg.TEXT_INDEXOF_TAIL = &apos;&apos;;&#xD;&#xD;	/// url - Information about extracting characters (letters, number, symbols, etc.) from text.&#xD;	Blockly.Msg.TEXT_CHARAT_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#extracting-text&apos;;&#xD;	/// block text - Appears before the piece of text from which a letter (or number,&#xD;	/// punctuation character, etc.) should be extracted, as shown below.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT = &apos;in text&apos;;&#xD;	/// dropdown - Indicates that the letter (or number, punctuation character, etc.) with the&#xD;	/// specified index should be obtained from the preceding piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_FROM_START = &apos;get letter #&apos;;&#xD;	/// block text - Indicates that the letter (or number, punctuation character, etc.) with the&#xD;	/// specified index from the end of a given piece of text should be obtained. See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_FROM_END = &apos;get letter # from end&apos;;&#xD;	/// block text - Indicates that the first letter of the following piece of text should be&#xD;	/// retrieved.  See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_FIRST = &apos;get first letter&apos;;&#xD;	/// block text - Indicates that the last letter (or number, punctuation mark, etc.) of the&#xD;	/// following piece of text should be retrieved.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_LAST = &apos;get last letter&apos;;&#xD;	/// block text - Indicates that any letter (or number, punctuation mark, etc.) in the&#xD;	/// following piece of text should be randomly selected.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_RANDOM = &apos;get random letter&apos;;&#xD;	/// block text - Text that goes after the rightmost block/dropdown when getting a single letter from&#xD;	/// a piece of text, as in [https://blockly-demo.appspot.com/static/apps/code/index.html#3m23km these&#xD;	/// blocks] or shown below.  For most languages, this will be blank.&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_TAIL = &apos;&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#extracting-a-single-character&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-single-character].&#xD;	/// [[File:Blockly-text-get.png]]&#xD;	Blockly.Msg.TEXT_CHARAT_TOOLTIP = &apos;Returns the letter at the specified position.&apos;;&#xD;&#xD;	/// See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP = &apos;Returns a specified portion of the text.&apos;;&#xD;	/// url - Information about extracting characters from text.  Reminder: urls are the&#xD;	/// lowest priority translations.  Feel free to skip.&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&apos;;&#xD;	/// block text - Precedes a piece of text from which a portion should be extracted.&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT = &apos;in text&apos;;&#xD;	/// dropdown - Indicates that the following number specifies the position (relative to the start&#xD;	/// position) of the beginning of the region of text that should be obtained from the preceding&#xD;	/// piece of text.  See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START = &apos;get substring from letter #&apos;;&#xD;	/// dropdown - Indicates that the following number specifies the position (relative to the end&#xD;	/// position) of the beginning of the region of text that should be obtained from the preceding&#xD;	/// piece of text.  See [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// Note: If {{msg-Blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will&#xD;	/// automatically appear &apos;&apos;after&apos;&apos; this and any other&#xD;	/// [https://translatewiki.net/wiki/Translating:Blockly#Ordinal_numbers ordinal numbers]&#xD;	/// on this block.&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END = &apos;get substring from letter # from end&apos;;&#xD;	/// block text - Indicates that a region starting with the first letter of the preceding piece&#xD;	/// of text should be extracted.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST = &apos;get substring from first letter&apos;;&#xD;	/// dropdown - Indicates that the following number specifies the position (relative to&#xD;	/// the start position) of the end of the region of text that should be obtained from the&#xD;	/// preceding piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START = &apos;to letter #&apos;;&#xD;	/// dropdown - Indicates that the following number specifies the position (relative to the&#xD;	/// end position) of the end of the region of text that should be obtained from the preceding&#xD;	/// piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END = &apos;to letter # from end&apos;;&#xD;	/// block text - Indicates that a region ending with the last letter of the preceding piece&#xD;	/// of text should be extracted.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text].&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST = &apos;to last letter&apos;;&#xD;	/// block text - Text that should go after the rightmost block/dropdown when&#xD;	/// [https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text&#xD;	/// extracting a region of text].  In most languages, this will be the empty string.&#xD;	/// [[File:Blockly-get-substring.png]]&#xD;	Blockly.Msg.TEXT_GET_SUBSTRING_TAIL = &apos;&apos;;&#xD;&#xD;	/// url - Information about the case of letters (upper-case and lower-case).&#xD;	Blockly.Msg.TEXT_CHANGECASE_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#adjusting-text-case&apos;;&#xD;	/// tooltip - Describes a block to adjust the case of letters.  For more information on this block,&#xD;	/// see [https://github.com/google/blockly/wiki/Text#adjusting-text-case&#xD;	/// https://github.com/google/blockly/wiki/Text#adjusting-text-case].&#xD;	Blockly.Msg.TEXT_CHANGECASE_TOOLTIP = &apos;Return a copy of the text in a different case.&apos;;&#xD;	/// block text - Indicates that all of the letters in the following piece of text should be&#xD;	/// capitalized.  If your language does not use case, you may indicate that this is not&#xD;	/// applicable to your language.  For more information on this block, see&#xD;	/// [https://github.com/google/blockly/wiki/Text#adjusting-text-case&#xD;	/// https://github.com/google/blockly/wiki/Text#adjusting-text-case].&#xD;	Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE = &apos;to UPPER CASE&apos;;&#xD;	/// block text - Indicates that all of the letters in the following piece of text should be converted to lower-case.  If your language does not use case, you may indicate that this is not applicable to your language.  For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].&#xD;	Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE = &apos;to lower case&apos;;&#xD;	/// block text - Indicates that the first letter of each of the following words should be capitalized and the rest converted to lower-case.  If your language does not use case, you may indicate that this is not applicable to your language.  For more information on this block, see [https://github.com/google/blockly/wiki/Text#adjusting-text-case https://github.com/google/blockly/wiki/Text#adjusting-text-case].&#xD;	Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE = &apos;to Title Case&apos;;&#xD;&#xD;	/// url - Information about trimming (removing) text off the beginning and ends of pieces of text.&#xD;	Blockly.Msg.TEXT_TRIM_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#trimming-removing-spaces&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces&#xD;	/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].&#xD;	Blockly.Msg.TEXT_TRIM_TOOLTIP = &apos;Return a copy of the text with spaces removed from one or both ends.&apos;;&#xD;	/// dropdown - Removes spaces from the beginning and end of a piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces&#xD;	/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].  Note that neither&#xD;	/// this nor the other options modify the original piece of text (that follows);&#xD;	/// the block just returns a version of the text without the specified spaces.&#xD;	Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH = &apos;trim spaces from both sides of&apos;;&#xD;	/// dropdown - Removes spaces from the beginning of a piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces&#xD;	/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].&#xD;	/// Note that in right-to-left scripts, this will remove spaces from the right side.&#xD;	Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT = &apos;trim spaces from left side of&apos;;&#xD;	/// dropdown - Removes spaces from the end of a piece of text.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#trimming-removing-spaces&#xD;	/// https://github.com/google/blockly/wiki/Text#trimming-removing-spaces].&#xD;	/// Note that in right-to-left scripts, this will remove spaces from the left side.&#xD;	Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT = &apos;trim spaces from right side of&apos;;&#xD;&#xD;	/// url - Information about displaying text on computers.&#xD;	Blockly.Msg.TEXT_PRINT_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#printing-text&apos;;&#xD;	/// block text - Display the input on the screen.  See&#xD;	/// [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	/// \n\nParameters:\n* %1 - the value to print&#xD;	Blockly.Msg.TEXT_PRINT_TITLE = &apos;print %1&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	Blockly.Msg.TEXT_PRINT_TOOLTIP = &apos;Print the specified text, number or other value.&apos;;&#xD;	/// url - Information about getting text from users.&#xD;	Blockly.Msg.TEXT_PROMPT_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#getting-input-from-the-user&apos;;&#xD;	/// dropdown - Specifies that a piece of text should be requested from the user with&#xD;	/// the following message.  See [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	Blockly.Msg.TEXT_PROMPT_TYPE_TEXT = &apos;prompt for text with message&apos;;&#xD;	/// dropdown - Specifies that a number should be requested from the user with the&#xD;	/// following message.  See [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER = &apos;prompt for number with message&apos;;&#xD;	/// dropdown - Precedes the message with which the user should be prompted for&#xD;	/// a number.  See [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER = &apos;Prompt for user for a number.&apos;;&#xD;	/// dropdown - Precedes the message with which the user should be prompted for some text.&#xD;	/// See [https://github.com/google/blockly/wiki/Text#printing-text&#xD;	/// https://github.com/google/blockly/wiki/Text#printing-text].&#xD;	Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT = &apos;Prompt for user for some text.&apos;;&#xD;&#xD;	/// block text - Title of a block that counts the number of instances of&#xD;	/// a smaller pattern (%1) inside a longer string (%2).&#xD;	Blockly.Msg.TEXT_COUNT_MESSAGE0 = &apos;count %1 in %2&apos;;&#xD;	/// url - Information about counting how many times a string appears in another string.&#xD;	Blockly.Msg.TEXT_COUNT_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#counting-substrings&apos;;&#xD;	/// tooltip - Short description of a block that counts how many times some text occurs within some other text.&#xD;	Blockly.Msg.TEXT_COUNT_TOOLTIP = &apos;Count how many times some text occurs within some other text.&apos;;&#xD;&#xD;	/// block text - Title of a block that returns a copy of text (%3) with all&#xD;	/// instances of some smaller text (%1) replaced with other text (%2).&#xD;	Blockly.Msg.TEXT_REPLACE_MESSAGE0 = &apos;replace %1 with %2 in %3&apos;;&#xD;	/// url - Information about replacing each copy text (or string, in computer lingo) with other text.&#xD;	Blockly.Msg.TEXT_REPLACE_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#replacing-substrings&apos;;&#xD;	/// tooltip - Short description of a block that replaces copies of text in a large text with other text.&#xD;	Blockly.Msg.TEXT_REPLACE_TOOLTIP = &apos;Replace all occurances of some text within some other text.&apos;;&#xD;&#xD;	/// block text - Title of block that returns a copy of text (%1) with the order&#xD;	/// of letters and characters reversed.&#xD;	Blockly.Msg.TEXT_REVERSE_MESSAGE0 = &apos;reverse %1&apos;;&#xD;	/// url - Information about reversing a letters/characters in text.&#xD;	Blockly.Msg.TEXT_REVERSE_HELPURL = &apos;https://github.com/google/blockly/wiki/Text#reversing-text&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Text].&#xD;	Blockly.Msg.TEXT_REVERSE_TOOLTIP = &apos;Reverses the order of the characters in the text.&apos;;&#xD;&#xD;	// Lists Blocks.&#xD;	/// url - Information on empty lists.&#xD;	Blockly.Msg.LISTS_CREATE_EMPTY_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#create-empty-list&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].&#xD;	Blockly.Msg.LISTS_CREATE_EMPTY_TITLE = &apos;create empty list&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#create-empty-list https://github.com/google/blockly/wiki/Lists#create-empty-list].&#xD;	Blockly.Msg.LISTS_CREATE_EMPTY_TOOLTIP = &apos;Returns a list, of length 0, containing no data records&apos;;&#xD;&#xD;	/// url - Information on building lists.&#xD;	Blockly.Msg.LISTS_CREATE_WITH_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#create-list-with&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].&#xD;	Blockly.Msg.LISTS_CREATE_WITH_TOOLTIP = &apos;Create a list with any number of items.&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with https://github.com/google/blockly/wiki/Lists#create-list-with].&#xD;	Blockly.Msg.LISTS_CREATE_WITH_INPUT_WITH = &apos;create list with&apos;;&#xD;	/// block text - This appears in a sub-block when [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs changing the number of inputs in a &apos;&apos;&apos;&apos;create list with&apos;&apos;&apos;&apos; block].\n{{Identical|List}}&#xD;	Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TITLE_ADD = &apos;list&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].&#xD;	Blockly.Msg.LISTS_CREATE_WITH_CONTAINER_TOOLTIP = &apos;Add, remove, or reorder sections to reconfigure this list block.&apos;;&#xD;	Blockly.Msg.LISTS_CREATE_WITH_ITEM_TITLE = Blockly.Msg.VARIABLES_DEFAULT_NAME;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs https://github.com/google/blockly/wiki/Lists#changing-number-of-inputs].&#xD;	Blockly.Msg.LISTS_CREATE_WITH_ITEM_TOOLTIP = &apos;Add an item to the list.&apos;;&#xD;&#xD;	/// url - Information about [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].&#xD;	Blockly.Msg.LISTS_REPEAT_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#create-list-with&apos;;&#xD;	/// url - See [https://github.com/google/blockly/wiki/Lists#create-list-with creating a list with multiple copies of a single item].&#xD;	Blockly.Msg.LISTS_REPEAT_TOOLTIP = &apos;Creates a list consisting of the given value repeated the specified number of times.&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#create-list-with&#xD;	/// https://github.com/google/blockly/wiki/Lists#create-list-with].&#xD;	///\n\nParameters:\n* %1 - the item (text) to be repeated\n* %2 - the number of times to repeat it&#xD;	Blockly.Msg.LISTS_REPEAT_TITLE = &apos;create list with item %1 repeated %2 times&apos;;&#xD;&#xD;	/// url - Information about how the length of a list is computed (i.e., by the total number of elements, not the number of different elements).&#xD;	Blockly.Msg.LISTS_LENGTH_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#length-of&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of].&#xD;	/// \n\nParameters:\n* %1 - the list whose length is desired&#xD;	Blockly.Msg.LISTS_LENGTH_TITLE = &apos;length of %1&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#length-of https://github.com/google/blockly/wiki/Lists#length-of Blockly:Lists:length of].&#xD;	Blockly.Msg.LISTS_LENGTH_TOOLTIP = &apos;Returns the length of a list.&apos;;&#xD;&#xD;	/// url - See [https://github.com/google/blockly/wiki/Lists#is-empty https://github.com/google/blockly/wiki/Lists#is-empty].&#xD;	Blockly.Msg.LISTS_ISEMPTY_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#is-empty&apos;;&#xD;	/// block text - See [https://github.com/google/blockly/wiki/Lists#is-empty&#xD;	/// https://github.com/google/blockly/wiki/Lists#is-empty].&#xD;	/// \n\nParameters:\n* %1 - the list to test&#xD;	Blockly.Msg.LISTS_ISEMPTY_TITLE = &apos;%1 is empty&apos;;&#xD;	/// block tooltip - See [https://github.com/google/blockly/wiki/Lists#is-empty&#xD;	/// https://github.com/google/blockly/wiki/Lists#is-empty].&#xD;	Blockly.Msg.LISTS_ISEMPTY_TOOLTIP = &apos;Returns true if the list is empty.&apos;;&#xD;&#xD;	/// block text - Title of blocks operating on [https://github.com/google/blockly/wiki/Lists lists].&#xD;	Blockly.Msg.LISTS_INLIST = &apos;in list&apos;;&#xD;&#xD;	/// url - See [https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list&#xD;	/// https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list].&#xD;	Blockly.Msg.LISTS_INDEX_OF_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list&apos;;&#xD;	Blockly.Msg.LISTS_INDEX_OF_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;&#xD;	/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list&#xD;	/// Lists#finding-items-in-a-list].&#xD;	/// [[File:Blockly-list-find.png]]&#xD;	Blockly.Msg.LISTS_INDEX_OF_FIRST = &apos;find first occurrence of item&apos;;&#xD;	/// dropdown - See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list&#xD;	/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list].&#xD;	/// [[File:Blockly-list-find.png]]&#xD;	Blockly.Msg.LISTS_INDEX_OF_LAST = &apos;find last occurrence of item&apos;;&#xD;	/// tooltip - %1 will be replaced by either the number 0 or -1 depending on the indexing mode.  See [https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list&#xD;	/// https://github.com/google/blockly/wiki/Lists#finding-items-in-a-list].&#xD;	/// [[File:Blockly-list-find.png]]&#xD;	Blockly.Msg.LISTS_INDEX_OF_TOOLTIP = &apos;Returns the index of the first/last occurrence of the item in the list. Returns %1 if item is not found.&apos;;&#xD;&#xD;	Blockly.Msg.LISTS_GET_INDEX_HELPURL = Blockly.Msg.LISTS_INDEX_OF_HELPURL;&#xD;	/// dropdown - Indicates that the user wishes to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item&#xD;	/// get an item from a list] without removing it from the list.&#xD;	Blockly.Msg.LISTS_GET_INDEX_GET = &apos;get&apos;;&#xD;	/// dropdown - Indicates that the user wishes to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item&#xD;	/// get and remove an item from a list], as opposed to merely getting&#xD;	/// it without modifying the list.&#xD;	Blockly.Msg.LISTS_GET_INDEX_GET_REMOVE = &apos;get and remove&apos;;&#xD;	/// dropdown - Indicates that the user wishes to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#removing-an-item&#xD;	/// remove an item from a list].\n{{Identical|Remove}}&#xD;	Blockly.Msg.LISTS_GET_INDEX_REMOVE = &apos;remove&apos;;&#xD;	/// dropdown - Indicates that an index relative to the front of the list should be used to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item get and/or remove&#xD;	/// an item from a list].  Note: If {{msg-Blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will&#xD;	/// automatically appear &apos;&apos;after&apos;&apos; this number (and any other ordinal numbers on this block).&#xD;	/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly.&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_FROM_START = &apos;#&apos;;&#xD;	/// dropdown - Indicates that an index relative to the end of the list should be used&#xD;	/// to [https://github.com/google/blockly/wiki/Lists#getting-a-single-item access an item in a list].&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_FROM_END = &apos;# from end&apos;;&#xD;	/// dropdown - Indicates that the &apos;&apos;&apos;first&apos;&apos;&apos; item should be&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list].&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_FIRST = &apos;first&apos;;&#xD;	/// dropdown - Indicates that the &apos;&apos;&apos;last&apos;&apos;&apos; item should be&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list].&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_LAST = &apos;last&apos;;&#xD;	/// dropdown - Indicates that a &apos;&apos;&apos;random&apos;&apos;&apos; item should be&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item accessed in a list].&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_RANDOM = &apos;random&apos;;&#xD;	/// block text - Text that should go after the rightmost block/dropdown when&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-single-item&#xD;	/// accessing an item from a list].  In most languages, this will be the empty string.&#xD;	/// [[File:Blockly-list-get-item.png]]&#xD;	Blockly.Msg.LISTS_GET_INDEX_TAIL = &apos;&apos;;&#xD;	Blockly.Msg.LISTS_GET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;&#xD;	/// tooltip - Indicates the ordinal number that the first item in a list is referenced by.  %1 will be replaced by either "#0" or "#1" depending on the indexing mode.&#xD;	Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP = &apos;%1 is the first item.&apos;;&#xD;	/// tooltip - Indicates the ordinal number that the last item in a list is referenced by.  %1 will be replaced by either "#0" or "#1" depending on the indexing mode.&#xD;	Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP = &apos;%1 is the last item.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FROM = &apos;Returns the item at the specified position in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_FIRST = &apos;Returns the first item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_LAST = &apos;Returns the last item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for more information.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_RANDOM = &apos;Returns a random item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;#&apos; or &apos;# from end&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM = &apos;Removes and returns the item at the specified position in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;first&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST = &apos;Removes and returns the first item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;last&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST = &apos;Removes and returns the last item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;random&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM = &apos;Removes and returns a random item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;#&apos; or &apos;# from end&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM = &apos;Removes the item at the specified position in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;first&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST = &apos;Removes the first item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;last&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST = &apos;Removes the last item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-and-removing-an-item] (for remove and return) and [https://github.com/google/blockly/wiki/Lists#getting-a-single-item] for &apos;random&apos;.&#xD;	Blockly.Msg.LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM = &apos;Removes a random item in a list.&apos;;&#xD;	/// url - Information about putting items in lists.&#xD;	Blockly.Msg.LISTS_SET_INDEX_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#in-list--set&apos;;&#xD;	Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;&#xD;	/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--set&#xD;	/// Replaces an item in a list].&#xD;	/// [[File:Blockly-in-list-set-insert.png]]&#xD;	Blockly.Msg.LISTS_SET_INDEX_SET = &apos;set&apos;;&#xD;	/// block text - [https://github.com/google/blockly/wiki/Lists#in-list--insert-at&#xD;	/// Inserts an item into a list].&#xD;	/// [[File:Blockly-in-list-set-insert.png]]&#xD;	Blockly.Msg.LISTS_SET_INDEX_INSERT = &apos;insert at&apos;;&#xD;	/// block text - The word(s) after the position in the list and before the item to be set/inserted.&#xD;	/// [[File:Blockly-in-list-set-insert.png]]&#xD;	Blockly.Msg.LISTS_SET_INDEX_INPUT_TO = &apos;as&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FROM = &apos;Sets the item at the specified position in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_FIRST = &apos;Sets the first item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_LAST = &apos;Sets the last item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "set" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_SET_RANDOM = &apos;Sets a random item in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FROM = &apos;Inserts the item at the specified position in a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST = &apos;Inserts the item at the start of a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_LAST = &apos;Append the item to the end of a list.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-single-item} (even though the page describes the "get" block, the idea is the same for the "insert" block).&#xD;	Blockly.Msg.LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM = &apos;Inserts the item randomly in a list.&apos;;&#xD;&#xD;	/// url - Information describing extracting a sublist from an existing list.&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#getting-a-sublist&apos;;&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST = Blockly.Msg.LISTS_INLIST;&#xD;	/// dropdown - Indicates that an index relative to the front of the list should be used&#xD;	/// to specify the beginning of the range from which to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	/// Note: If {{msg-Blockly|ORDINAL_NUMBER_SUFFIX}} is defined, it will&#xD;	/// automatically appear &apos;&apos;after&apos;&apos; this number (and any other ordinal numbers on this block).&#xD;	/// See [[Translating:Blockly#Ordinal_numbers]] for more information on ordinal numbers in Blockly.&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START = &apos;get sub-list from #&apos;;&#xD;	/// dropdown - Indicates that an index relative to the end of the list should be used&#xD;	/// to specify the beginning of the range from which to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END = &apos;get sub-list from # from end&apos;;&#xD;	/// dropdown - Indicates that the&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist sublist to extract]&#xD;	/// should begin with the list&apos;s first item.&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST = &apos;get sub-list from first&apos;;&#xD;	/// dropdown - Indicates that an index relative to the front of the list should be&#xD;	/// used to specify the end of the range from which to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START = &apos;to #&apos;;&#xD;	/// dropdown - Indicates that an index relative to the end of the list should be&#xD;	/// used to specify the end of the range from which to&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist get a sublist].&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END = &apos;to # from end&apos;;&#xD;	/// dropdown - Indicates that the &apos;&apos;&apos;last&apos;&apos;&apos; item in the given list should be&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist the end&#xD;	/// of the selected sublist].&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_END_LAST = &apos;to last&apos;;&#xD;	/// block text - This appears in the rightmost position ("tail") of the&#xD;	/// sublist block, as described at&#xD;	/// [https://github.com/google/blockly/wiki/Lists#getting-a-sublist&#xD;	/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist].&#xD;	/// In English and most other languages, this is the empty string.&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_TAIL = &apos;&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#getting-a-sublist&#xD;	/// https://github.com/google/blockly/wiki/Lists#getting-a-sublist] for more information.&#xD;	/// [[File:Blockly-get-sublist.png]]&#xD;	Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP = &apos;Creates a copy of the specified portion of a list.&apos;;&#xD;&#xD;	/// {{optional}}\nurl - Information describing sorting a list.&#xD;	Blockly.Msg.LISTS_SORT_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#sorting-a-list&apos;;&#xD;	/// Sort as type %1 (numeric or alphabetic) in order %2 (ascending or descending) a list of items %3.\n{{Identical|Sort}}&#xD;	Blockly.Msg.LISTS_SORT_TITLE = &apos;sort %1 %2 %3&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#sorting-a-list].&#xD;	Blockly.Msg.LISTS_SORT_TOOLTIP = &apos;Sort a copy of a list.&apos;;&#xD;	/// sorting order or direction from low to high value for numeric, or A-Z for alphabetic.\n{{Identical|Ascending}}&#xD;	Blockly.Msg.LISTS_SORT_ORDER_ASCENDING = &apos;ascending&apos;;&#xD;	/// sorting order or direction from high to low value for numeric, or Z-A for alphabetic.\n{{Identical|Descending}}&#xD;	Blockly.Msg.LISTS_SORT_ORDER_DESCENDING = &apos;descending&apos;;&#xD;	/// sort by treating each item as a number.&#xD;	Blockly.Msg.LISTS_SORT_TYPE_NUMERIC = &apos;numeric&apos;;&#xD;	/// sort by treating each item alphabetically, case-sensitive.&#xD;	Blockly.Msg.LISTS_SORT_TYPE_TEXT = &apos;alphabetic&apos;;&#xD;	/// sort by treating each item alphabetically, ignoring differences in case.&#xD;	Blockly.Msg.LISTS_SORT_TYPE_IGNORECASE = &apos;alphabetic, ignore case&apos;;&#xD;&#xD;	/// url - Information describing splitting text into a list, or joining a list into text.&#xD;	Blockly.Msg.LISTS_SPLIT_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists&apos;;&#xD;	/// dropdown - Indicates that text will be split up into a list (e.g. "a-b-c" -&gt; ["a", "b", "c"]).&#xD;	Blockly.Msg.LISTS_SPLIT_LIST_FROM_TEXT = &apos;make list from text&apos;;&#xD;	/// dropdown - Indicates that a list will be joined together to form text (e.g. ["a", "b", "c"] -&gt; "a-b-c").&#xD;	Blockly.Msg.LISTS_SPLIT_TEXT_FROM_LIST = &apos;make text from list&apos;;&#xD;	/// block text - Prompts for a letter to be used as a separator when splitting or joining text.&#xD;	Blockly.Msg.LISTS_SPLIT_WITH_DELIMITER = &apos;with delimiter&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-list-from-text&#xD;	/// https://github.com/google/blockly/wiki/Lists#make-list-from-text] for more information.&#xD;	Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT = &apos;Split text into a list of texts, breaking at each delimiter.&apos;;&#xD;	/// tooltip - See [https://github.com/google/blockly/wiki/Lists#make-text-from-list&#xD;	/// https://github.com/google/blockly/wiki/Lists#make-text-from-list] for more information.&#xD;	Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN = &apos;Join a list of texts into one text, separated by a delimiter.&apos;;&#xD;&#xD;	/// url - Information describing reversing a list.&#xD;	Blockly.Msg.LISTS_REVERSE_HELPURL = &apos;https://github.com/google/blockly/wiki/Lists#reversing-a-list&apos;;&#xD;	/// block text - Title of block that returns a copy of a list (%1) with the order of items reversed.&#xD;	Blockly.Msg.LISTS_REVERSE_MESSAGE0 = &apos;reverse %1&apos;;&#xD;	/// tooltip - Short description for a block that reverses a copy of a list.&#xD;	Blockly.Msg.LISTS_REVERSE_TOOLTIP = &apos;Reverse a copy of a list.&apos;;&#xD;&#xD;	/// grammar - Text that follows an ordinal number (a number that indicates&#xD;	/// position relative to other numbers).  In most languages, such text appears&#xD;	/// before the number, so this should be blank.  An exception is Hungarian.&#xD;	/// See [[Translating:Blockly#Ordinal_numbers]] for more information.&#xD;	Blockly.Msg.ORDINAL_NUMBER_SUFFIX = &apos;&apos;;&#xD;&#xD;	// Variables Blocks.&#xD;	/// url - Information about &apos;&apos;variables&apos;&apos; in computer programming.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.&#xD;	Blockly.Msg.VARIABLES_GET_HELPURL = &apos;https://github.com/google/blockly/wiki/Variables#get&apos;;&#xD;	/// tooltip - This gets the value of the named variable without modifying it.&#xD;	Blockly.Msg.VARIABLES_GET_TOOLTIP = &apos;Returns the value of this variable.&apos;;&#xD;	/// context menu - Selecting this creates a block to set (change) the value of this variable.&#xD;	/// \n\nParameters:\n* %1 - the name of the variable.&#xD;	Blockly.Msg.VARIABLES_GET_CREATE_SET = &apos;Create "set %1"&apos;;&#xD;&#xD;	/// url - Information about &apos;&apos;variables&apos;&apos; in computer programming.  Consider using your language&apos;s translation of [https://en.wikipedia.org/wiki/Variable_(computer_science) https://en.wikipedia.org/wiki/Variable_(computer_science)], if it exists.&#xD;	Blockly.Msg.VARIABLES_SET_HELPURL = &apos;https://github.com/google/blockly/wiki/Variables#set&apos;;&#xD;	/// block text - Change the value of a mathematical variable: &apos;&apos;&apos;set [the value of] x to 7&apos;&apos;&apos;.\n\nParameters:\n* %1 - the name of the variable.\n* %2 - the value to be assigned.&#xD;	Blockly.Msg.VARIABLES_SET = &apos;set %1 to %2&apos;;&#xD;	/// tooltip - This initializes or changes the value of the named variable.&#xD;	Blockly.Msg.VARIABLES_SET_TOOLTIP = &apos;Sets this variable to be equal to the input.&apos;;&#xD;	/// context menu - Selecting this creates a block to get (change) the value of&#xD;	/// this variable.\n\nParameters:\n* %1 - the name of the variable.&#xD;	Blockly.Msg.VARIABLES_SET_CREATE_GET = &apos;Create "get %1"&apos;;&#xD;&#xD;	// Procedures Blocks.&#xD;	/// url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that do not have return values.&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL = &apos;https://en.wikipedia.org/wiki/Subroutine&apos;;&#xD;	/// block text - This precedes the name of the function when defining it.  See&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#c84aoc this sample&#xD;	/// function definition].&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE = &apos;to&apos;;&#xD;	/// default name - This acts as a placeholder for the name of a function on a&#xD;	/// function definition block, as shown on&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#w7cfju this block].&#xD;	/// The user will replace it with the function&apos;s name.&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE = &apos;do something&apos;;&#xD;	/// block text - This precedes the list of parameters on a function&apos;s defiition block.  See&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample&#xD;	/// function with parameters].&#xD;	Blockly.Msg.PROCEDURES_BEFORE_PARAMS = &apos;with:&apos;;&#xD;	/// block text - This precedes the list of parameters on a function&apos;s caller block.  See&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample&#xD;	/// function with parameters].&#xD;	Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS = &apos;with:&apos;;&#xD;	/// block text - This appears next to the function&apos;s "body", the blocks that should be&#xD;	/// run when the function is called, as shown in&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#voztpd this sample&#xD;	/// function definition].&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_DO = &apos;&apos;;&#xD;	/// tooltip&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP = &apos;Creates a function with no output.&apos;;&#xD;	/// Placeholder text that the user is encouraged to replace with a description of what their function does.&#xD;	Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT = &apos;Describe this function...&apos;;&#xD;	/// url - Information about defining [https://en.wikipedia.org/wiki/Subroutine functions] that have return values.&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL = &apos;https://en.wikipedia.org/wiki/Subroutine&apos;;&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_TITLE = Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE;&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE = Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE;&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_DO = Blockly.Msg.PROCEDURES_DEFNORETURN_DO;&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_COMMENT = Blockly.Msg.PROCEDURES_DEFNORETURN_COMMENT;&#xD;	/// block text - This imperative or infinite verb precedes the value that is used as the return value&#xD;	/// (output) of this function.  See&#xD;	/// [https://blockly-demo.appspot.com/static/apps/code/index.html?lang=en#6ot5y5 this sample&#xD;	/// function that returns a value].&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_RETURN = &apos;return&apos;;&#xD;	/// tooltip&#xD;	Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP = &apos;Creates a function with an output.&apos;;&#xD;	/// Label for a checkbox that controls if statements are allowed in a function.&#xD;	Blockly.Msg.PROCEDURES_ALLOW_STATEMENTS = &apos;allow statements&apos;;&#xD;&#xD;	/// alert - The user has created a function with two parameters that have the same name.  Every parameter must have a different name.&#xD;	Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING = &apos;Warning: This function has duplicate parameters.&apos;;&#xD;&#xD;	/// url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that do not return values.&#xD;	Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL = &apos;https://en.wikipedia.org/wiki/Subroutine&apos;;&#xD;	/// tooltip - This block causes the body (blocks inside) of the named function definition to be run.&#xD;	Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP = &apos;Run the user-defined function "%1".&apos;;&#xD;&#xD;	/// url - Information about calling [https://en.wikipedia.org/wiki/Subroutine functions] that return values.&#xD;	Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL = &apos;https://en.wikipedia.org/wiki/Subroutine&apos;;&#xD;	/// tooltip - This block causes the body (blocks inside) of the named function definition to be run.\n\nParameters:\n* %1 - the name of the function.&#xD;	Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP = &apos;Run the user-defined function "%1" and use its output.&apos;;&#xD;&#xD;	/// block text - This text appears on a block in a window that appears when the user clicks&#xD;	/// on the plus sign or star on a function definition block.  It refers to the set of parameters&#xD;	/// (referred to by the simpler term "inputs") to the function.  See&#xD;	/// [[Translating:Blockly#function_definitions]].&#xD;	Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE = &apos;inputs&apos;;&#xD;	/// tooltip&#xD;	Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TOOLTIP = &apos;Add, remove, or reorder inputs to this function.&apos;;&#xD;	/// block text - This text appears on a block in a window that appears when the user clicks&#xD;	/// on the plus sign or star on a function definition block].  It appears on the block for&#xD;	/// adding an individual parameter (referred to by the simpler term "inputs") to the function.&#xD;	/// See [[Translating:Blockly#function_definitions]].&#xD;	Blockly.Msg.PROCEDURES_MUTATORARG_TITLE = &apos;input name:&apos;;&#xD;	/// tooltip&#xD;	Blockly.Msg.PROCEDURES_MUTATORARG_TOOLTIP = &apos;Add an input to the function.&apos;;&#xD;&#xD;	/// context menu - This appears on the context menu for function calls.  Selecting&#xD;	/// it causes the corresponding function definition to be highlighted (as shown at&#xD;	/// [[Translating:Blockly#context_menus]].&#xD;	Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF = &apos;Highlight function definition&apos;;&#xD;	/// context menu - This appears on the context menu for function definitions.&#xD;	/// Selecting it creates a block to call the function.\n\nParameters:\n* %1 - the name of the function.\n{{Identical|Create}}&#xD;	Blockly.Msg.PROCEDURES_CREATE_DO = &apos;Create "%1"&apos;;&#xD;&#xD;	/// tooltip - If the first value is true, this causes the second value to be returned&#xD;	/// immediately from the enclosing function.&#xD;	Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP = &apos;If a value is true, then return a second value.&apos;;&#xD;	/// {{optional}}\nurl - Information about guard clauses.&#xD;	Blockly.Msg.PROCEDURES_IFRETURN_HELPURL = &apos;http://c2.com/cgi/wiki?GuardClause&apos;;&#xD;	/// warning - This appears if the user tries to use this block outside of a function definition.&#xD;	Blockly.Msg.PROCEDURES_IFRETURN_WARNING = &apos;Warning: This block may be used only within a function definition.&apos;;&#xD;&#xD;&#xD;	/*** EXPORTS FROM exports-loader ***/&#xD;	module.exports = Blockly;&#xD;&#xD;&#xD;/***/ },&#xD;/* 11 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(12);&#xD;&#xD;&#xD;/***/ },&#xD;/* 12 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/*** IMPORTS FROM imports-loader ***/&#xD;	var goog = __webpack_require__(13);&#xD;	var Blockly = __webpack_require__(16);&#xD;&#xD;	// Do not edit this file; automatically generated by build.py.&#xD;	&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;&#xD;	 Visual Blocks Editor&#xD;&#xD;	 Copyright 2016 Massachusetts Institute of Technology&#xD;	 All rights reserved.&#xD;&#xD;	 Licensed under the Apache License, Version 2.0 (the "License");&#xD;	 you may not use this file except in compliance with the License.&#xD;	 You may obtain a copy of the License at&#xD;&#xD;	   http://www.apache.org/licenses/LICENSE-2.0&#xD;&#xD;	 Unless required by applicable law or agreed to in writing, software&#xD;	 distributed under the License is distributed on an "AS IS" BASIS,&#xD;	 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#xD;	 See the License for the specific language governing permissions and&#xD;	 limitations under the License.&#xD;	*/&#xD;	Blockly.Colours={motion:{primary:"#4C97FF",secondary:"#4280D7",tertiary:"#3373CC"},looks:{primary:"#9966FF",secondary:"#855CD6",tertiary:"#774DCB"},sounds:{primary:"#CF63CF",secondary:"#C94FC9",tertiary:"#BD42BD"},control:{primary:"#FFAB19",secondary:"#EC9C13",tertiary:"#CF8B17"},event:{primary:"#FFBF00",secondary:"#E6AC00",tertiary:"#CC9900"},sensing:{primary:"#5CB1D6",secondary:"#47A8D1",tertiary:"#2E8EB8"},pen:{primary:"#0fBD8C",secondary:"#0DA57A",tertiary:"#0B8E69"},operators: {primary:"#59C059",secondary:"#46B946",tertiary:"#389438"},data:{primary:"#FF8C1A",secondary:"#FF8000",tertiary:"#DB6E00"},list:{primary:"#FF661A",secondary:"#FF5A00",tertiary:"#DB4800"},more:{primary:"#A3A2A5",secondary:"#83818A",tertiary:"#6C6A72"},text:"#575E75",workspace:"#F5F8FF",toolbox:"#DDDDDD",toolboxText:"#000000",flyout:"#DDDDDD",scrollbar:"#CCCCCC",scrollbarHover:"#BBBBBB",textField:"#FFFFFF",insertionMarker:"#949494",insertionMarkerOpacity:.6,dragShadowOpacity:.3,stackGlow:"#FFF200",stackGlowOpacity:1,replacementGlow:"#FFFFFF",replacementGlowOpacity:1,colourPickerStroke:"#FFFFFF",fieldShadow:"rgba(0,0,0,0.1)",dropDownShadow:"rgba(0, 0, 0, .3)",numPadBackground:"#547AB2",numPadBorder:"#435F91",numPadActiveBackground:"#435F91",numPadText:"#FFFFFF",valueReportBackground:"#FFFFFF",valueReportBorder:"#AAAAAA"};Blockly.Blocks.control={};&#xD;	Blockly.Blocks.control_forever={init:function(){this.jsonInit({id:"control_forever",message0:"forever",message1:"%1",message2:"%1",lastDummyAlign2:"RIGHT",args1:[{type:"input_statement",name:"SUBSTACK"}],args2:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"/c_arrow.svg",width:16,height:16,alt:"*",flip_rtl:!0}],inputsInline:!0,previousStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_warp={init:function(){this.jsonInit({id:"control_warp",message0:"warp",message1:"%1",message2:"%1",lastDummyAlign2:"RIGHT",args1:[{type:"input_statement",name:"SUBSTACK"}],args2:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"icons/control_forever.svg",width:10,height:10,alt:"*",flip_rtl:!0}],inputsInline:!0,previousStatement:null,nextStatement:null,colour:Blockly.Colours.more.primary,colourSecondary:Blockly.Colours.more.secondary,colourTertiary:Blockly.Colours.more.secondary})}};&#xD;	Blockly.Blocks.control_repeat={init:function(){this.jsonInit({id:"control_repeat",message0:"repeat %1",message1:"%1",message2:"%1",lastDummyAlign2:"RIGHT",args0:[{type:"input_value",name:"TIMES"}],args1:[{type:"input_statement",name:"SUBSTACK"}],args2:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"/c_arrow.svg",width:16,height:16,alt:"*",flip_rtl:!0}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,&#xD;	colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_if={init:function(){this.jsonInit({type:"control_if",message0:"if %1 then",message1:"%1",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"}],args1:[{type:"input_statement",name:"SUBSTACK"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_conditional_string={init:function(){this.jsonInit({message0:"if %1 then %2 else %3",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"},{type:"input_value",name:"TRUE"},{type:"input_value",name:"FALSE"}],output:"String",inputsInline:!0,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.control_if_else={init:function(){this.jsonInit({type:"control_if_else",message0:"if %1 then",message1:"%1",message2:"else",message3:"%1",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"}],args1:[{type:"input_statement",name:"SUBSTACK"}],args3:[{type:"input_statement",name:"SUBSTACK2"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_stop={init:function(){var a=new Blockly.FieldDropdown(function(){return this.sourceBlock_&amp;&amp;this.sourceBlock_.nextConnection&amp;&amp;this.sourceBlock_.nextConnection.isConnected()?[["other scripts in sprite","other scripts in sprite"]]:[["all","all"],["this script","this script"],["other scripts in sprite","other scripts in sprite"]]},function(a){this.sourceBlock_.setNextStatement("other scripts in sprite"==a)});this.appendDummyInput().appendField("stop").appendField(a,"STOP_OPTION");&#xD;	this.setCategory(Blockly.Categories.control);this.setColour(Blockly.Colours.control.primary,Blockly.Colours.control.secondary,Blockly.Colours.control.tertiary);this.setPreviousStatement(!0)},mutationToDom:function(){var a=document.createElement("mutation"),b="other scripts in sprite"==this.getFieldValue("STOP_OPTION");a.setAttribute("hasnext",b);return a},domToMutation:function(a){a="true"==a.getAttribute("hasnext");this.setNextStatement(a)}};&#xD;	Blockly.Blocks.control_wait={init:function(){this.jsonInit({id:"control_wait",message0:"wait %1 secs",args0:[{type:"input_value",name:"DURATION"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_report={init:function(){this.jsonInit({id:"control_report",message0:"report %1",args0:[{type:"input_value",name:"OUTPUT"}],inputsInline:!0,previousStatement:null,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_when={init:function(){this.jsonInit({message0:"when %1",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"}],inputsInline:!0,nextStatement:null,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_wait_until={init:function(){this.jsonInit({message0:"wait until %1",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_repeat_until={init:function(){this.jsonInit({message0:"repeat until %1",message1:"%1",message2:"%1",lastDummyAlign2:"RIGHT",args0:[{type:"input_value",name:"CONDITION",check:"Boolean"}],args1:[{type:"input_statement",name:"SUBSTACK"}],args2:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"/c_arrow.svg",width:16,height:16,alt:"*",flip_rtl:!0}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,&#xD;	colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};Blockly.Blocks.control_start_as_clone={init:function(){this.jsonInit({id:"control_start_as_clone",message0:"when I start as a clone",args0:[],inputsInline:!0,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_create_clone_of_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"CLONE_OPTION",options:[["myself","_myself_"]]}],inputsInline:!0,output:"String",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.control.secondary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_create_clone_of={init:function(){this.jsonInit({id:"control_start_as_clone",message0:"create clone of %1",args0:[{type:"input_value",name:"CLONE_OPTION"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	Blockly.Blocks.control_delete_this_clone={init:function(){this.jsonInit({message0:"delete this clone",args0:[],inputsInline:!0,previousStatement:null,category:Blockly.Categories.control,colour:Blockly.Colours.control.primary,colourSecondary:Blockly.Colours.control.secondary,colourTertiary:Blockly.Colours.control.tertiary})}};&#xD;	// Copyright 2016 Google Inc.  Apache License 2.0&#xD;	Blockly.constants={};Blockly.DRAG_RADIUS=3;Blockly.FLYOUT_DRAG_RADIUS=10;Blockly.SNAP_RADIUS=48;Blockly.CONNECTING_SNAP_RADIUS=96;Blockly.CURRENT_CONNECTION_PREFERENCE=20;Blockly.BUMP_DELAY=0;Blockly.COLLAPSE_CHARS=30;Blockly.LONGPRESS=750;Blockly.SOUND_LIMIT=100;Blockly.DRAG_STACK=!0;Blockly.HSV_SATURATION=.45;Blockly.HSV_VALUE=.65;Blockly.SPRITE={width:96,height:124,url:"sprites.png"};Blockly.SVG_NS="http://www.w3.org/2000/svg";Blockly.HTML_NS="http://www.w3.org/1999/xhtml";&#xD;	Blockly.INPUT_VALUE=1;Blockly.OUTPUT_VALUE=2;Blockly.NEXT_STATEMENT=3;Blockly.PREVIOUS_STATEMENT=4;Blockly.DUMMY_INPUT=5;Blockly.ALIGN_LEFT=-1;Blockly.ALIGN_CENTRE=0;Blockly.ALIGN_RIGHT=1;Blockly.DRAG_NONE=0;Blockly.DRAG_STICKY=1;Blockly.DRAG_BEGIN=1;Blockly.DRAG_FREE=2;Blockly.OPPOSITE_TYPE=[];Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE]=Blockly.OUTPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE]=Blockly.INPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT]=Blockly.PREVIOUS_STATEMENT;&#xD;	Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;Blockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.OUTPUT_SHAPE_HEXAGONAL=1;Blockly.OUTPUT_SHAPE_ROUND=2;Blockly.OUTPUT_SHAPE_SQUARE=3;Blockly.STACK_GLOW_RADIUS=1.3;Blockly.REPLACEMENT_GLOW_RADIUS=2;Blockly.Categories={motion:"motion",looks:"looks",sound:"sounds",pen:"pen",data:"data",event:"events",control:"control",sensing:"sensing",operators:"operators",more:"more"};&#xD;	Blockly.DELETE_AREA_NONE=null;Blockly.DELETE_AREA_TRASH=1;Blockly.DELETE_AREA_TOOLBOX=2;Blockly.VARIABLE_CATEGORY_NAME="VARIABLE";Blockly.PROCEDURE_CATEGORY_NAME="PROCEDURE";Blockly.Blocks.data={};Blockly.Constants={};Blockly.Constants.Data={};Blockly.Blocks.data_variablemenu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_variable",name:"VARIABLE"}],inputsInline:!0,output:"String",colour:Blockly.Colours.data.secondary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.data_variable={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_variable_getter",text:"",name:"VARIABLE"}],category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary,output:"String",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0,extensions:["contextMenu_getVariableBlock"]})}};&#xD;	Blockly.Blocks.data_setvariableto={init:function(){this.jsonInit({message0:"set %1 to %2",args0:[{type:"input_value",name:"VARIABLE"},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_changevariableby={init:function(){this.jsonInit({message0:"change %1 by %2",args0:[{type:"input_value",name:"VARIABLE"},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_showvariable={init:function(){this.jsonInit({message0:"show variable %1",args0:[{type:"input_value",name:"VARIABLE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_hidevariable={init:function(){this.jsonInit({message0:"hide variable %1",args0:[{type:"input_value",name:"VARIABLE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_listcontents={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_variable_getter",text:"",name:"LIST"}],category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary,output:"String",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.data_listindexall={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_numberdropdown",name:"INDEX",value:"1",min:1,precision:1,options:[["1","1"],["last","last"],["all","all"]]}],output:"String",category:Blockly.Categories.data,outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};&#xD;	Blockly.Blocks.data_listindexrandom={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_numberdropdown",name:"INDEX",value:"1",min:1,precision:1,options:[["1","1"],["last","last"],["random","random"]]}],output:"String",category:Blockly.Categories.data,outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};&#xD;	Blockly.Blocks.data_addtolist={init:function(){this.jsonInit({message0:"add %1 to %2",args0:[{type:"input_value",name:"ITEM"},{type:"field_variable",name:"LIST"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_deleteoflist={init:function(){this.jsonInit({message0:"delete %1 of %2",args0:[{type:"input_value",name:"INDEX"},{type:"field_variable",name:"LIST"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_insertatlist={init:function(){this.jsonInit({message0:"insert %1 at %2 of %3",args0:[{type:"input_value",name:"ITEM"},{type:"input_value",name:"INDEX"},{type:"field_variable",name:"LIST"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_replaceitemoflist={init:function(){this.jsonInit({message0:"replace item %1 of %2 with %3",args0:[{type:"input_value",name:"INDEX"},{type:"field_variable",name:"LIST"},{type:"input_value",name:"ITEM"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_itemoflist={init:function(){this.jsonInit({message0:"item %1 of %2",args0:[{type:"input_value",name:"INDEX"},{type:"field_variable",name:"LIST"}],output:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.data_lengthoflist={init:function(){this.jsonInit({message0:"length of %1",args0:[{type:"field_variable",name:"LIST"}],output:"Number",category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.data_listcontainsitem={init:function(){this.jsonInit({message0:"%1 contains %2?",args0:[{type:"field_variable",name:"LIST"},{type:"input_value",name:"ITEM"}],output:"Boolean",outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_showlist={init:function(){this.jsonInit({message0:"show list %1",args0:[{type:"field_variable",name:"LIST"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Blocks.data_hidelist={init:function(){this.jsonInit({message0:"hide list %1",args0:[{type:"field_variable",name:"LIST"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.data,colour:Blockly.Colours.data.primary,colourSecondary:Blockly.Colours.data.secondary,colourTertiary:Blockly.Colours.data.tertiary})}};&#xD;	Blockly.Constants.Data.CUSTOM_CONTEXT_MENU_GET_VARIABLE_MIXIN={customContextMenu:function(a){if(!this.isCollapsed())for(var b=this.workspace.variableList,d=0;d&lt;b.length;d++){var c={enabled:!0};c.text=b[d];c.callback=Blockly.Constants.Data.VARIABLE_OPTION_CALLBACK_FACTORY(this,c.text);a.push(c)}}};Blockly.Extensions.registerMixin("contextMenu_getVariableBlock",Blockly.Constants.Data.CUSTOM_CONTEXT_MENU_GET_VARIABLE_MIXIN);&#xD;	Blockly.Constants.Data.VARIABLE_OPTION_CALLBACK_FACTORY=function(a,b){return function(){var d=a.getField("VARIABLE");d||console.log("Tried to get a variable field on the wrong type of block.");d.setText(b)}};Blockly.Blocks.defaultToolbox=&apos;&lt;xml id="toolbox-categories" style="display: none"&gt;&lt;category name="Motion" colour="#4C97FF" secondaryColour="#3373CC"&gt;&lt;block type="motion_movesteps" id="motion_movesteps"&gt;&lt;value name="STEPS"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_turnright" id="motion_turnright"&gt;&lt;value name="DEGREES"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;15&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_turnleft" id="motion_turnleft"&gt;&lt;value name="DEGREES"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;15&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_pointindirection" id="motion_pointindirection"&gt;&lt;value name="DIRECTION"&gt;&lt;shadow type="math_angle"&gt;&lt;field name="NUM"&gt;90&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_pointtowards" id="motion_pointtowards"&gt;&lt;value name="TOWARDS"&gt;&lt;shadow type="motion_pointtowards_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_gotoxy" id="motion_gotoxy"&gt;&lt;value name="X"&gt;&lt;shadow id="movex" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="Y"&gt;&lt;shadow id="movey" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_goto" id="motion_goto"&gt;&lt;value name="TO"&gt;&lt;shadow type="motion_goto_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_glidesecstoxy" id="motion_glidesecstoxy"&gt;&lt;value name="SECS"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="X"&gt;&lt;shadow id="glidex" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="Y"&gt;&lt;shadow id="glidey" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_changexby" id="motion_changexby"&gt;&lt;value name="DX"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_setx" id="motion_setx"&gt;&lt;value name="X"&gt;&lt;shadow id="setx" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_changeyby" id="motion_changeyby"&gt;&lt;value name="DY"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_sety" id="motion_sety"&gt;&lt;value name="Y"&gt;&lt;shadow id="sety" type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="motion_ifonedgebounce" id="motion_ifonedgebounce"&gt;&lt;/block&gt;&lt;block type="motion_setrotationstyle" id="motion_setrotationstyle"&gt;&lt;/block&gt;&lt;block type="motion_position" id="motion_position"&gt;&lt;/block&gt;&lt;block type="motion_xposition" id="motion_xposition"&gt;&lt;/block&gt;&lt;block type="motion_yposition" id="motion_yposition"&gt;&lt;/block&gt;&lt;block type="motion_direction" id="motion_direction"&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Looks" colour="#9966FF" secondaryColour="#774DCB"&gt;&lt;block type="looks_show" id="looks_show"&gt;&lt;/block&gt;&lt;block type="looks_hide" id="looks_hide"&gt;&lt;/block&gt;&lt;block type="looks_switchcostumeto" id="looks_switchcostumeto"&gt;&lt;value name="COSTUME"&gt;&lt;shadow type="looks_costume"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_nextcostume" id="looks_nextcostume"&gt;&lt;/block&gt;&lt;block type="looks_nextbackdrop" id="looks_nextbackdrop"&gt;&lt;/block&gt;&lt;block type="looks_switchbackdropto" id="looks_switchbackdropto"&gt;&lt;value name="BACKDROP"&gt;&lt;shadow type="looks_backdrops"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_switchbackdroptoandwait" id="looks_switchbackdroptoandwait"&gt;&lt;value name="BACKDROP"&gt;&lt;shadow type="looks_backdrops"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_changeeffectby" id="looks_changeeffectby"&gt;&lt;value name="CHANGE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_seteffectto" id="looks_seteffectto"&gt;&lt;value name="VALUE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_cleargraphiceffects" id="looks_cleargraphiceffects"&gt;&lt;/block&gt;&lt;block type="looks_changesizeby" id="looks_changesizeby"&gt;&lt;value name="CHANGE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_setsizeto" id="looks_setsizeto"&gt;&lt;value name="SIZE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;100&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_gotofront" id="looks_gotofront"&gt;&lt;/block&gt;&lt;block type="looks_gobacklayers" id="looks_gobacklayers"&gt;&lt;value name="NUM"&gt;&lt;shadow type="math_integer"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="looks_costumeorder" id="looks_costumeorder"&gt;&lt;/block&gt;&lt;block type="looks_backdroporder" id="looks_backdroporder"&gt;&lt;/block&gt;&lt;block type="looks_backdropname" id="looks_backdropname"&gt;&lt;/block&gt;&lt;block type="looks_size" id="looks_size"&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Sound" colour="#D65CD6" secondaryColour="#BD42BD"&gt;&lt;block type="sound_play" id="sound_play"&gt;&lt;value name="SOUND_MENU"&gt;&lt;shadow type="sound_sounds_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_playuntildone" id="sound_playuntildone"&gt;&lt;value name="SOUND_MENU"&gt;&lt;shadow type="sound_sounds_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_stopallsounds" id="sound_stopallsounds"&gt;&lt;/block&gt;&lt;block type="sound_playdrumforbeats" id="sound_playdrumforbeats"&gt;&lt;value name="DRUM"&gt;&lt;shadow type="sound_drums_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="BEATS"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;0.25&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_restforbeats" id="sound_restforbeats"&gt;&lt;value name="BEATS"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;0.25&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_playnoteforbeats" id="sound_playnoteforbeats"&gt;&lt;value name="NOTE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;60&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="BEATS"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;0.5&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_setinstrumentto" id="sound_setinstrumentto"&gt;&lt;value name="INSTRUMENT"&gt;&lt;shadow type="sound_instruments_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_changeeffectby" id="sound_changeeffectby"&gt;&lt;value name="VALUE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_seteffectto" id="sound_seteffectto"&gt;&lt;value name="VALUE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;100&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_cleareffects" id="sound_cleareffects"&gt;&lt;/block&gt;&lt;block type="sound_changevolumeby" id="sound_changevolumeby"&gt;&lt;value name="VOLUME"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;-10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_setvolumeto" id="sound_setvolumeto"&gt;&lt;value name="VOLUME"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;100&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_volume" id="sound_volume"&gt;&lt;/block&gt;&lt;block type="sound_changetempoby" id="sound_changetempoby"&gt;&lt;value name="TEMPO"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;20&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_settempotobpm" id="sound_settempotobpm"&gt;&lt;value name="TEMPO"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;60&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sound_tempo" id="sound_tempo"&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Pen" colour="#00B295" secondaryColour="#0B8E69"&gt;&lt;block type="pen_clear" id="pen_clear"&gt;&lt;/block&gt;&lt;block type="pen_stamp" id="pen_stamp"&gt;&lt;/block&gt;&lt;block type="pen_pendown" id="pen_pendown"&gt;&lt;/block&gt;&lt;block type="pen_penup" id="pen_penup"&gt;&lt;/block&gt;&lt;block type="pen_setpencolortocolor" id="pen_setpencolortocolor"&gt;&lt;value name="COLOR"&gt;&lt;shadow type="colour_picker"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_changepencolorby" id="pen_changepencolorby"&gt;&lt;value name="COLOR"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_setpencolortonum" id="pen_setpencolortonum"&gt;&lt;value name="COLOR"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;0&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_changepenshadeby" id="pen_changepenshadeby"&gt;&lt;value name="SHADE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_setpenshadeto" id="pen_setpenshadeto"&gt;&lt;value name="SHADE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;50&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_changepensizeby" id="pen_changepensizeby"&gt;&lt;value name="SIZE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="pen_setpensizeto" id="pen_setpensizeto"&gt;&lt;value name="SIZE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Data" colour="#FF8C1A" secondaryColour="#DB6E00" custom="VARIABLE"&gt;&lt;/category&gt;&lt;category name="Events" colour="#FFD500" secondaryColour="#CC9900"&gt;&lt;block type="event_whenflagclicked" id="event_whenflagclicked"&gt;&lt;/block&gt;&lt;block type="event_whenkeypressed" id="event_whenkeypressed"&gt;&lt;/block&gt;&lt;block type="event_whenthisspriteclicked" id="event_whenthisspriteclicked"&gt;&lt;/block&gt;&lt;block type="event_whenbackdropswitchesto" id="event_whenbackdropswitchesto"&gt;&lt;/block&gt;&lt;block type="event_whengreaterthan" id="event_whengreaterthan"&gt;&lt;value name="VALUE"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="event_whenbroadcastreceived" id="event_whenbroadcastreceived"&gt;&lt;/block&gt;&lt;block type="event_broadcast" id="event_broadcast"&gt;&lt;value name="BROADCAST_OPTION"&gt;&lt;shadow type="event_broadcast_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="event_broadcastandwait" id="event_broadcastandwait"&gt;&lt;value name="BROADCAST_OPTION"&gt;&lt;shadow type="event_broadcast_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Control" colour="#FFAB19" secondaryColour="#CF8B17"&gt;&lt;block type="control_when" id="control_when"&gt;&lt;/block&gt;&lt;block type="control_warp" id="control_warp"&gt;&lt;/block&gt;&lt;block type="control_wait" id="control_wait"&gt;&lt;value name="DURATION"&gt;&lt;shadow type="math_positive_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="control_report" id="control_report"&gt;&lt;value name="OUTPUT"&gt;&lt;shadow type="text"&gt;&lt;field name="OPERAND"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="control_repeat" id="control_repeat"&gt;&lt;value name="TIMES"&gt;&lt;shadow type="math_whole_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="control_forever" id="control_forever"&gt;&lt;/block&gt;&lt;block type="control_if" id="control_if"&gt;&lt;/block&gt;&lt;block type="control_if_else" id="control_if_else"&gt;&lt;/block&gt;&lt;block type="control_conditional_string" id="control_conditional_string"&gt;&lt;value name="TRUE"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="FALSE"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="control_wait_until" id="control_wait_until"&gt;&lt;/block&gt;&lt;block type="control_repeat_until" id="control_repeat_until"&gt;&lt;/block&gt;&lt;block type="control_stop" id="control_stop"&gt;&lt;/block&gt;&lt;block type="control_start_as_clone" id="control_start_as_clone"&gt;&lt;/block&gt;&lt;block type="control_create_clone_of" id="control_create_clone_of"&gt;&lt;value name="CLONE_OPTION"&gt;&lt;shadow type="control_create_clone_of_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="control_delete_this_clone" id="control_delete_this_clone"&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Sensing" colour="#4CBFE6" secondaryColour="#2E8EB8"&gt;&lt;block type="sensing_touchingobject" id="sensing_touchingobject"&gt;&lt;value name="TOUCHINGOBJECTMENU"&gt;&lt;shadow type="sensing_touchingobjectmenu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_touchingcolor" id="sensing_touchingcolor"&gt;&lt;value name="COLOR"&gt;&lt;shadow type="colour_picker"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_coloristouchingcolor" id="sensing_coloristouchingcolor"&gt;&lt;value name="COLOR"&gt;&lt;shadow type="colour_picker"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="COLOR2"&gt;&lt;shadow type="colour_picker"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_distanceto" id="sensing_distanceto"&gt;&lt;value name="DISTANCETOMENU"&gt;&lt;shadow type="sensing_distancetomenu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_keypressed" id="sensing_keypressed"&gt;&lt;value name="KEY_OPTION"&gt;&lt;shadow type="sensing_keyoptions"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_mousedown" id="sensing_mousedown"&gt;&lt;/block&gt;&lt;block type="sensing_mouse" id="sensing_mouse"&gt;&lt;/block&gt;&lt;block type="sensing_mousex" id="sensing_mousex"&gt;&lt;/block&gt;&lt;block type="sensing_mousey" id="sensing_mousey"&gt;&lt;/block&gt;&lt;block type="sensing_loudness" id="sensing_loudness"&gt;&lt;/block&gt;&lt;block type="sensing_timer" id="sensing_timer"&gt;&lt;/block&gt;&lt;block type="sensing_resettimer" id="sensing_resettimer"&gt;&lt;/block&gt;&lt;block type="sensing_neighbors" id="sensing_neighbors"&gt;&lt;/block&gt;&lt;block type="sensing_object" id="sensing_object"&gt;&lt;/block&gt;&lt;block type="sensing_of" id="sensing_of"&gt;&lt;value name="PROPERTY"&gt;&lt;shadow type="sensing_of_property_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="OBJECT"&gt;&lt;shadow type="sensing_of_object_menu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_current" id="sensing_current"&gt;&lt;value name="CURRENTMENU"&gt;&lt;shadow type="sensing_currentmenu"&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="sensing_dayssince2000" id="sensing_dayssince2000"&gt;&lt;/block&gt;&lt;/category&gt;&lt;category name="Operators" colour="#40BF4A" secondaryColour="#389438"&gt;&lt;block type="operator_reify" id="operator_reify"&gt;&lt;/block&gt;&lt;block type="operator_reify_bool" id="operator_reify_bool"&gt;&lt;/block&gt;&lt;block type="operator_reify_rep" id="operator_reify_rep"&gt;&lt;/block&gt;&lt;block type="operator_add" id="operator_add"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_subtract" id="operator_subtract"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_multiply" id="operator_multiply"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_divide" id="operator_divide"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_raise" id="operator_raise"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_random" id="operator_random"&gt;&lt;value name="FROM"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="TO"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;10&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_lt" id="operator_lt"&gt;&lt;value name="OPERAND1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="OPERAND2"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_equals" id="operator_equals"&gt;&lt;value name="OPERAND1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="OPERAND2"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_gt" id="operator_gt"&gt;&lt;value name="OPERAND1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="OPERAND2"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_and" id="operator_and"&gt;&lt;/block&gt;&lt;block type="operator_or" id="operator_or"&gt;&lt;/block&gt;&lt;block type="operator_not" id="operator_not"&gt;&lt;/block&gt;&lt;block type="operator_validity" id="operator_validity"&gt;&lt;/block&gt;&lt;block type="operator_is" id="operator_is"&gt;&lt;value name="OPERAND1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;5&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_join" id="operator_join"&gt;&lt;value name="STRING1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;hello&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="STRING2"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;world&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_letter_of" id="operator_letter_of"&gt;&lt;value name="LETTER"&gt;&lt;shadow type="math_whole_number"&gt;&lt;field name="NUM"&gt;1&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="STRING"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;world&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_length" id="operator_length"&gt;&lt;value name="STRING"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;world&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_mod" id="operator_mod"&gt;&lt;value name="NUM1"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="NUM2"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_round" id="operator_round"&gt;&lt;value name="NUM"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_mathop" id="operator_mathop"&gt;&lt;value name="NUM"&gt;&lt;shadow type="math_number"&gt;&lt;field name="NUM"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_split" id="operator_split"&gt;&lt;value name="STRING1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;hello world&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;block type="operator_js" id="operator_js"&gt;&lt;value name="STRING1"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;value name="STRING2"&gt;&lt;shadow type="text"&gt;&lt;field name="TEXT"&gt;&lt;/field&gt;&lt;/shadow&gt;&lt;/value&gt;&lt;/block&gt;&lt;/category&gt;&lt;/xml&gt;&apos;;Blockly.Blocks.event={};Blockly.Blocks.event_whenflagclicked={init:function(){this.jsonInit({id:"event_whenflagclicked",message0:"when %1 clicked",args0:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"icons/event_whenflagclicked.svg",width:24,height:24,alt:"flag",flip_rtl:!0}],inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_whenthisspriteclicked={init:function(){this.jsonInit({message0:"when this sprite clicked",inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_whenbroadcastreceived={init:function(){this.jsonInit({id:"event_whenbroadcastreceived",message0:"when I receive %1",args0:[{type:"field_dropdown",name:"BROADCAST_OPTION",options:[["message1","message1"],["message2","message2"],["new message","new message"]]}],inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_whenbackdropswitchesto={init:function(){this.jsonInit({message0:"when backdrop switches to %1",args0:[{type:"field_dropdown",name:"BACKDROP",options:[["backdrop1","BACKDROP1"]]}],inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_whengreaterthan={init:function(){this.jsonInit({message0:"when %1 &gt; %2",args0:[{type:"field_dropdown",name:"WHENGREATERTHANMENU",options:[["timer","TIMER"]]},{type:"input_value",name:"VALUE"}],inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_broadcast_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"BROADCAST_OPTION",options:[["message1","message1"],["message2","message2"],["new message","new message"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.event.secondary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.event_broadcast={init:function(){this.jsonInit({id:"event_broadcast",message0:"broadcast %1",args0:[{type:"input_value",name:"BROADCAST_OPTION"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_broadcastandwait={init:function(){this.jsonInit({message0:"broadcast %1 and wait",args0:[{type:"input_value",name:"BROADCAST_OPTION"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};&#xD;	Blockly.Blocks.event_whenkeypressed={init:function(){this.jsonInit({id:"event_whenkeypressed",message0:"when %1 key pressed",args0:[{type:"field_dropdown",name:"KEY_OPTION",options:[["space","space"],["left arrow","left arrow"],["right arrow","right arrow"],["down arrow","down arrow"],["up arrow","up arrow"],["any","any"],["a","a"],["b","b"],["c","c"],["d","d"],["e","e"],["f","f"],["g","g"],["h","h"],["i","i"],["j","j"],["k","k"],["l","l"],["m","m"],["n","n"],["o","o"],["p","p"],["q","q"],["r","r"],&#xD;	["s","s"],["t","t"],["u","u"],["v","v"],["w","w"],["x","x"],["y","y"],["z","z"],["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"],["8","8"],["9","9"]]}],inputsInline:!0,nextStatement:null,category:Blockly.Categories.event,colour:Blockly.Colours.event.primary,colourSecondary:Blockly.Colours.event.secondary,colourTertiary:Blockly.Colours.event.tertiary})}};Blockly.Blocks.looks={};Blockly.Blocks.looks_sayforsecs={init:function(){this.jsonInit({message0:"say %1 for %2 secs",args0:[{type:"input_value",name:"MESSAGE"},{type:"input_value",name:"SECS"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_say={init:function(){this.jsonInit({message0:"say %1",args0:[{type:"input_value",name:"MESSAGE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_thinkforsecs={init:function(){this.jsonInit({message0:"think %1 for %2 secs",args0:[{type:"input_value",name:"MESSAGE"},{type:"input_value",name:"SECS"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_think={init:function(){this.jsonInit({message0:"think %1",args0:[{type:"input_value",name:"MESSAGE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_show={init:function(){this.jsonInit({message0:"show",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_hide={init:function(){this.jsonInit({message0:"hide",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};Blockly.Blocks.looks_effect_menu_options=[["color","COLOR"],["fisheye","FISHEYE"],["whirl","WHIRL"],["pixelate","PIXELATE"],["mosaic","MOSAIC"],["brightness","BRIGHTNESS"],["ghost","GHOST"]];&#xD;	Blockly.Blocks.looks_shown={init:function(){this.jsonInit({message0:"shown?",inputsInline:!0,output:"Boolean",colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.looks_changeeffectby={init:function(){this.jsonInit({message0:"change %1 effect by %2",args0:[{type:"field_dropdown",name:"EFFECT",options:Blockly.Blocks.looks_effect_menu_options},{type:"input_value",name:"CHANGE"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_seteffectto={init:function(){this.jsonInit({message0:"set %1 effect to %2",args0:[{type:"field_dropdown",name:"EFFECT",options:Blockly.Blocks.looks_effect_menu_options},{type:"input_value",name:"VALUE"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_cleargraphiceffects={init:function(){this.jsonInit({message0:"clear graphic effects",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_changesizeby={init:function(){this.jsonInit({message0:"change size by %1",args0:[{type:"input_value",name:"CHANGE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_setsizeto={init:function(){this.jsonInit({message0:"set size to %1 %",args0:[{type:"input_value",name:"SIZE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_size={init:function(){this.jsonInit({message0:"size",category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.looks_costume={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"COSTUME",options:[["costume1","COSTUME1"],["costume2","COSTUME2"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.looks.secondary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.looks_switchcostumeto={init:function(){this.jsonInit({message0:"switch costume to %1",args0:[{type:"input_value",name:"COSTUME"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_nextcostume={init:function(){this.jsonInit({message0:"next costume",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_switchbackdropto={init:function(){this.jsonInit({message0:"switch backdrop to %1",args0:[{type:"input_value",name:"BACKDROP"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_backdrops={init:function(){this.jsonInit({id:"looks_backdrops",message0:"%1",args0:[{type:"field_dropdown",name:"BACKDROP",options:[["backdrop1","BACKDROP1"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.looks.secondary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.looks_gotofront={init:function(){this.jsonInit({message0:"go to front",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_gobacklayers={init:function(){this.jsonInit({message0:"go back %1 layers",args0:[{type:"input_value",name:"NUM"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_backdropname={init:function(){this.jsonInit({message0:"backdrop name",category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.looks_costumeorder={init:function(){this.jsonInit({message0:"costume #",category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.looks_backdroporder={init:function(){this.jsonInit({message0:"backdrop #",category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.looks_switchbackdroptoandwait={init:function(){this.jsonInit({message0:"switch backdrop to %1 and wait",args0:[{type:"input_value",name:"BACKDROP"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};&#xD;	Blockly.Blocks.looks_effect={init:function(){this.jsonInit({message0:"%1 effect",args0:[{type:"field_dropdown",name:"EFFECT",options:[["color","COLOR"],["fisheye","FISHEYE"],["whirl","WHIRL"],["pixelate","PIXELATE"],["mosaic","MOSAIC"],["brightness","BRIGHTNESS"],["ghost","GHOST"]]}],inputsInline:!0,output:"Number",colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.looks_nextbackdrop={init:function(){this.jsonInit({message0:"next backdrop",previousStatement:null,nextStatement:null,category:Blockly.Categories.looks,colour:Blockly.Colours.looks.primary,colourSecondary:Blockly.Colours.looks.secondary,colourTertiary:Blockly.Colours.looks.tertiary})}};Blockly.Blocks.motion={};Blockly.Blocks.motion_movesteps={init:function(){this.jsonInit({message0:"move %1 steps",args0:[{type:"input_value",name:"STEPS"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_turnright={init:function(){this.jsonInit({message0:"turn %1 %2 degrees",args0:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"/turnright_arrow.png",width:16,height:16},{type:"input_value",name:"DEGREES"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_turnleft={init:function(){this.jsonInit({message0:"turn %1 %2 degrees",args0:[{type:"field_image",src:Blockly.mainWorkspace.options.pathToMedia+"/turnleft_arrow.png",width:16,height:16},{type:"input_value",name:"DEGREES"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_pointindirection={init:function(){this.jsonInit({message0:"point in direction %1",args0:[{type:"input_value",name:"DIRECTION"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_pointtowards_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"TOWARDS",options:[["mouse-pointer","_mouse_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.motion.secondary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.motion_pointtowards={init:function(){this.jsonInit({message0:"point towards %1",args0:[{type:"input_value",name:"TOWARDS"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_goto_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"TO",options:[["mouse-pointer","_mouse_"],["random position","_random_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.motion.secondary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.motion_gotoxy={init:function(){this.jsonInit({message0:"go to x: %1 y: %2",args0:[{type:"input_value",name:"X"},{type:"input_value",name:"Y"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_goto={init:function(){this.jsonInit({message0:"go to %1",args0:[{type:"input_value",name:"TO"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_glidesecstoxy={init:function(){this.jsonInit({message0:"glide %1 secs to x: %2 y: %3",args0:[{type:"input_value",name:"SECS"},{type:"input_value",name:"X"},{type:"input_value",name:"Y"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_changexby={init:function(){this.jsonInit({message0:"change x by %1",args0:[{type:"input_value",name:"DX"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_setx={init:function(){this.jsonInit({message0:"set x to %1",args0:[{type:"input_value",name:"X"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_changeyby={init:function(){this.jsonInit({message0:"change y by %1",args0:[{type:"input_value",name:"DY"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_sety={init:function(){this.jsonInit({message0:"set y to %1",args0:[{type:"input_value",name:"Y"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_ifonedgebounce={init:function(){this.jsonInit({message0:"if on edge, bounce",previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_setrotationstyle={init:function(){this.jsonInit({message0:"set rotation style %1",args0:[{type:"field_dropdown",name:"STYLE",options:[["left-right","left-right"],["don&apos;t rotate","don&apos;t rotate"],["all around","all around"]]}],previousStatement:null,nextStatement:null,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_position={init:function(){this.jsonInit({message0:"position",output:"String",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary})}};&#xD;	Blockly.Blocks.motion_xposition={init:function(){this.jsonInit({message0:"x position",output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.motion_yposition={init:function(){this.jsonInit({message0:"y position",output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.motion_direction={init:function(){this.jsonInit({message0:"direction",output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,category:Blockly.Categories.motion,colour:Blockly.Colours.motion.primary,colourSecondary:Blockly.Colours.motion.secondary,colourTertiary:Blockly.Colours.motion.tertiary,checkboxInFlyout:!0})}};&#xD;	// Copyright 2012 Google Inc.  Apache License 2.0&#xD;	Blockly.Blocks.operators={};Blockly.Blocks.operator_reify={init:function(){this.jsonInit({message0:"ring %1",args0:[{type:"input_statement",name:"SUBSTACK"}],inputsInline:!0,output:"String",colour:Blockly.Colours.more.primary,colourSecondary:Blockly.Colours.more.secondary,colourTertiary:Blockly.Colours.more.secondary,outputShape:Blockly.OUTPUT_SHAPE_SQUARE})}};&#xD;		Blockly.Blocks.operator_reify_bool={init:function(){this.jsonInit({message0:"ring %1",args0:[{type:"input_value",name:"OPERAND",check:"Boolean"}],inputsInline:!0,output:"String",colour:Blockly.Colours.more.primary,colourSecondary:Blockly.Colours.more.secondary,colourTertiary:Blockly.Colours.more.secondary,outputShape:Blockly.OUTPUT_SHAPE_SQUARE})}};&#xD;		Blockly.Blocks.operator_reify_rep={init:function(){this.jsonInit({message0:"ring %1",args0:[{type:"input_value",name:"OPERAND"}],inputsInline:!0,output:"String",colour:Blockly.Colours.more.primary,colourSecondary:Blockly.Colours.more.secondary,colourTertiary:Blockly.Colours.more.secondary,outputShape:Blockly.OUTPUT_SHAPE_SQUARE})}};&#xD;		Blockly.Blocks.operator_add={init:function(){this.jsonInit({message0:"%1 + %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_subtract={init:function(){this.jsonInit({message0:"%1 - %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_multiply={init:function(){this.jsonInit({message0:"%1 * %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_divide={init:function(){this.jsonInit({message0:"%1 / %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_raise={init:function(){this.jsonInit({message0:"%1 ^ %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_random={init:function(){this.jsonInit({message0:"pick random %1 to %2",args0:[{type:"input_value",name:"FROM"},{type:"input_value",name:"TO"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_lt={init:function(){this.jsonInit({message0:"%1 &lt; %2",args0:[{type:"input_value",name:"OPERAND1"},{type:"input_value",name:"OPERAND2"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_equals={init:function(){this.jsonInit({message0:"%1 = %2",args0:[{type:"input_value",name:"OPERAND1"},{type:"input_value",name:"OPERAND2"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_gt={init:function(){this.jsonInit({message0:"%1 &gt; %2",args0:[{type:"input_value",name:"OPERAND1"},{type:"input_value",name:"OPERAND2"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_and={init:function(){this.jsonInit({message0:"%1 and %2",args0:[{type:"input_value",name:"OPERAND1",check:"Boolean"},{type:"input_value",name:"OPERAND2",check:"Boolean"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_or={init:function(){this.jsonInit({message0:"%1 or %2",args0:[{type:"input_value",name:"OPERAND1",check:"Boolean"},{type:"input_value",name:"OPERAND2",check:"Boolean"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_not={init:function(){this.jsonInit({message0:"not %1",args0:[{type:"input_value",name:"OPERAND",check:"Boolean"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.operator_join={init:function(){this.jsonInit({message0:"join %1 %2",args0:[{type:"input_value",name:"STRING1"},{type:"input_value",name:"STRING2"}],inputsInline:!0,output:"String",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_js={init:function(){this.jsonInit({message0:"javascript function (%1) {%2}",args0:[{type:"input_value",name:"STRING1"},{type:"input_value",name:"STRING2"}],inputsInline:!0,output:"String",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_identity={init:function(){this.jsonInit({message0:"is %1 identical to %2?",args0:[{type:"input_value",name:"STRING1"},{type:"input_value",name:"STRING2"}],inputsInline:!0,output:"String",colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;		Blockly.Blocks.operator_split_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"SPLIT",options:[["letter","letter"],["word","word"],["line","line"],["tab","tab"],["cr","cr"],["csv","csv"],["json","json"],["blocks","blocks"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.operators.secondary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;		Blockly.Blocks.operator_split={init:function(){this.jsonInit({message0:"split %1 by %2",args0:[{type:"input_value",name:"STRING1"},{type:"field_dropdown",name:"SPLIT",options:[["letter","letter"],["word","word"],["line","line"],["tab","tab"],["cr","cr"],["csv","csv"],["json","json"],["blocks","blocks"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_letter_of={init:function(){this.jsonInit({message0:"letter %1 of %2",args0:[{type:"input_value",name:"LETTER"},{type:"input_value",name:"STRING"}],inputsInline:!0,output:"String",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_length={init:function(){this.jsonInit({message0:"length of %1",args0:[{type:"input_value",name:"STRING"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_mod={init:function(){this.jsonInit({message0:"%1 mod %2",args0:[{type:"input_value",name:"NUM1"},{type:"input_value",name:"NUM2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_round={init:function(){this.jsonInit({message0:"round %1",args0:[{type:"input_value",name:"NUM"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_type_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"TYPE",options:[["number","number"],["text","text"],["boolean","boolean"],["list","list"],["sprite","sprite"],["costume","costume"],["sound","sound"],["command","command"],["reporter","reporter"],["predicate","predicate"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.operators.secondary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_validity_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"operator_validity_menu",options:[["true","true"],["false","false"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.operators.secondary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.operator_mathop={init:function(){this.jsonInit({message0:"%1 of %2",args0:[{type:"field_dropdown",name:"OPERATOR",options:[["abs","abs"],["floor","floor"],["ceiling","ceiling"],["sqrt","sqrt"],["sin","sin"],["cos","cos"],["tan","tan"],["asin","asin"],["acos","acos"],["atan","atan"],["ln","ln"],["log","log"],["e ^","e ^"],["10 ^","10 ^"],["2 ^","2 ^"],["id","id"]]},{type:"input_value",name:"NUM"}],inputsInline:!0,output:"Number",category:Blockly.Categories.operators,colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,&#xD;	colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};Blockly.Blocks.operator_is={init:function(){this.jsonInit({message0:"is %1 a %2?",args0:[{type:"input_value",name:"OPERAND1"},{type:"field_dropdown",name:"TYPE",options:[["number","number"],["text","text"],["boolean","boolean"],["list","list"],["sprite","sprite"],["costume","costume"],["sound","sound"],["command","command"],["reporter","reporter"],["predicate","predicate"]]}],inputsInline:!0,output:"Boolean",colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};Blockly.Blocks.operator_validity={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"operator_validity_menu",options:[["true","true"],["false","false"]]}],inputsInline:!0,output:"Boolean",colour:Blockly.Colours.operators.primary,colourSecondary:Blockly.Colours.operators.secondary,colourTertiary:Blockly.Colours.operators.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};Blockly.Blocks.pen={};Blockly.Blocks.pen_clear={init:function(){this.jsonInit({message0:"clear",previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_stamp={init:function(){this.jsonInit({message0:"stamp",previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_pendown={init:function(){this.jsonInit({message0:"pen down",previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_penup={init:function(){this.jsonInit({message0:"pen up",previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_setpencolortocolor={init:function(){this.jsonInit({message0:"set pen color to %1",args0:[{type:"input_value",name:"COLOR"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_changepencolorby={init:function(){this.jsonInit({message0:"change pen color by %1",args0:[{type:"input_value",name:"COLOR"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_setpencolortonum={init:function(){this.jsonInit({message0:"set pen color to %1",args0:[{type:"input_value",name:"COLOR"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_changepenshadeby={init:function(){this.jsonInit({message0:"change pen shade by %1",args0:[{type:"input_value",name:"SHADE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_setpenshadeto={init:function(){this.jsonInit({message0:"set pen shade to %1",args0:[{type:"input_value",name:"SHADE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_changepensizeby={init:function(){this.jsonInit({message0:"change pen size by %1",args0:[{type:"input_value",name:"SIZE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};&#xD;	Blockly.Blocks.pen_setpensizeto={init:function(){this.jsonInit({message0:"set pen size to %1",args0:[{type:"input_value",name:"SIZE"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.pen,colour:Blockly.Colours.pen.primary,colourSecondary:Blockly.Colours.pen.secondary,colourTertiary:Blockly.Colours.pen.tertiary})}};Blockly.Blocks.procedures={};&#xD;	Blockly.Blocks.procedures_defnoreturn={init:function(){this.appendDummyInput().appendField(new Blockly.FieldLabel,"procCode");this.appendDummyInput().appendField(new Blockly.FieldLabel,"argumentNames");this.appendDummyInput().appendField(new Blockly.FieldLabel,"argumentDefaults");this.appendDummyInput().appendField(new Blockly.FieldLabel,"warp");this.setCategory(Blockly.Categories.more);this.setColour(Blockly.Colours.more.primary,Blockly.Colours.more.secondary,Blockly.Colours.more.tertiary);this.setNextStatement(!0);&#xD;	this._procCode="";this._argumentNames=[];this._argumentDefaults=[];this._warp=!1},mutationToDom:function(){var a=document.createElement("mutation"),b=document.createElement("proccode");b.setAttribute("value",this._procCode);a.appendChild(b);b=document.createElement("argumentnames");b.setAttribute("value",JSON.stringify(this._argumentNames));a.appendChild(b);b=document.createElement("argumentdefaults");b.setAttribute("value",JSON.stringify(this._argumentDefaults));a.appendChild(b);b=document.createElement("warp");&#xD;	b.setAttribute("value",this._warp);a.appendChild(b);return a},domToMutation:function(a){this._procCode=a.getAttribute("proccode");this._argumentNames=JSON.parse(a.getAttribute("argumentnames"));this._argumentValues=JSON.parse(a.getAttribute("argumentvalues"));this._warp=a.getAttribute("warp");this._updateDisplay()},_updateDisplay:function(){this.setFieldValue(this._procCode,"procCode");this.setFieldValue(this._argumentNames,"argumentNames");this.setFieldValue(this._argumentDefaults,"argumentDefaults");&#xD;	this.setFieldValue(this._warp,"warp")}};&#xD;	Blockly.Blocks.procedures_callnoreturn={init:function(){this.setPreviousStatement(!0);this.setNextStatement(!0);this.setCategory(Blockly.Categories.more);this.setColour(Blockly.Colours.more.primary,Blockly.Colours.more.secondary,Blockly.Colours.more.tertiary);this._procCode=""},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("proccode",this._procCode);return a},domToMutation:function(a){this._procCode=a.getAttribute("proccode");this._updateDisplay()},_updateDisplay:function(){for(var a=&#xD;	this._procCode.split(/(?=[^\\]\%[nbs])/),a=a.map(function(a){return a.trim()}),b=0,d=0,c;c=a[d];d++){if("%"==c.substring(0,1)){var f=c.substring(1,2);c=c.substring(2).trim();var e="input"+b++;switch(f){case "n":f=this.appendValueInput(e);e=this.workspace.newBlock("math_number");e.setShadow(!0);e.outputConnection.connect(f.connection);break;case "b":f=this.appendValueInput(e);f.setCheck("Boolean");break;case "s":f=this.appendValueInput(e),e=this.workspace.newBlock("text"),e.setShadow(!0),e.outputConnection.connect(f.connection)}}else c=&#xD;	c.trim();this.appendDummyInput().appendField(c.replace(/\\%/,"%"))}}};&#xD;	Blockly.Blocks.procedures_param={init:function(){this.appendDummyInput().appendField(new Blockly.FieldLabel,"paramName");this.setPreviousStatement(!1);this.setNextStatement(!1);this.setOutput(!0);this.setCategory(Blockly.Categories.more);this.setColour(Blockly.Colours.more.primary,Blockly.Colours.more.secondary,Blockly.Colours.more.tertiary);this._paramName="undefined";this._shape="r"},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("paramname",this._paramName);a.setAttribute("shape",&#xD;	this._shape);return a},domToMutation:function(a){this._paramName=a.getAttribute("paramname");this._shape=a.getAttribute("shape");this._updateDisplay()},_updateDisplay:function(){this.setFieldValue(this._paramName,"paramName");switch(this._shape){case "b":this.setOutputShape(Blockly.OUTPUT_SHAPE_HEXAGONAL);this.setOutput(!0,"Boolean");break;default:this.setOutputShape(Blockly.OUTPUT_SHAPE_ROUND),this.setOutput(!0,"String")}}};Blockly.Blocks.sensing={};Blockly.Blocks.sensing_touchingobject={init:function(){this.jsonInit({message0:"touching %1?",args0:[{type:"input_value",name:"TOUCHINGOBJECTMENU"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.sensing_touchingobjectmenu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"TOUCHINGOBJECTMENU",options:[["mouse-pointer","_mouse_"],["edge","_edge_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_touchingcolor={init:function(){this.jsonInit({message0:"touching color %1?",args0:[{type:"input_value",name:"COLOR"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.sensing_coloristouchingcolor={init:function(){this.jsonInit({message0:"color %1 is touching %2?",args0:[{type:"input_value",name:"COLOR"},{type:"input_value",name:"COLOR2"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.sensing_distanceto={init:function(){this.jsonInit({message0:"distance to %1",args0:[{type:"input_value",name:"DISTANCETOMENU"}],category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_distancetomenu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"DISTANCETOMENU",options:[["mouse-pointer","_mouse_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_askandwait={init:function(){this.jsonInit({message0:"ask %1 and wait",args0:[{type:"input_value",name:"QUESTION"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary})}};&#xD;	Blockly.Blocks.sensing_answer={init:function(){this.jsonInit({message0:"answer",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_keypressed={init:function(){this.jsonInit({message0:"key %1 pressed?",args0:[{type:"input_value",name:"KEY_OPTION"}],inputsInline:!0,output:"Boolean",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.sensing_keyoptions={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"KEY_OPTION",options:[["space","space"],["left arrow","left arrow"],["right arrow","right arrow"],["down arrow","down arrow"],["up arrow","up arrow"],["any","any"],["a","a"],["b","b"],["c","c"],["d","d"],["e","e"],["f","f"],["g","g"],["h","h"],["i","i"],["j","j"],["k","k"],["l","l"],["m","m"],["n","n"],["o","o"],["p","p"],["q","q"],["r","r"],["s","s"],["t","t"],["u","u"],["v","v"],["w",&#xD;	"w"],["x","x"],["y","y"],["z","z"],["0","0"],["1","1"],["2","2"],["3","3"],["4","4"],["5","5"],["6","6"],["7","7"],["8","8"],["9","9"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_mousedown={init:function(){this.jsonInit({message0:"mouse down?",inputsInline:!0,output:"Boolean",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_HEXAGONAL})}};&#xD;	Blockly.Blocks.sensing_mouse={init:function(){this.jsonInit({message0:"mouse position",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_mousex={init:function(){this.jsonInit({message0:"mouse x",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_mousey={init:function(){this.jsonInit({message0:"mouse y",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_loudness={init:function(){this.jsonInit({message0:"loudness",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_videoon={init:function(){this.jsonInit({message0:"video %1 on %2",args0:[{type:"input_value",name:"VIDEOONMENU1"},{type:"input_value",name:"VIDEOONMENU2"}],inputsInline:!0,output:"Number",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_videoonmenuone={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"VIDEOONMENU1",options:[["motion","MOTION"],["direction","DIRECTION"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_videoonmenutwo={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"VIDEOONMENU2",options:[["stage","STAGE"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_videotoggle={init:function(){this.jsonInit({message0:"turn video %1",args0:[{type:"input_value",name:"VIDEOTOGGLEMENU"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary})}};&#xD;	Blockly.Blocks.sensing_videotogglemenu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"VIDEOTOGGLEMENU",options:[["on","ON"],["off","OFF"],["on-flipped","ONFLIPPED"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_setvideotransparency={init:function(){this.jsonInit({message0:"set video transparency to %1%",args0:[{type:"input_value",name:"TRANSPARENCY"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary})}};&#xD;	Blockly.Blocks.sensing_timer={init:function(){this.jsonInit({message0:"timer",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_resettimer={init:function(){this.jsonInit({message0:"reset timer",previousStatement:null,nextStatement:null,category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary})}};&#xD;	Blockly.Blocks.sensing_of_property_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"PROPERTY",options:[["x position","x position"],["y position","y position"],["direction","direction"],["costume #","costume #"],["costume name","costume name"],["size","size"],["volume","volume"],["backdrop #","backdrop #"],["backdrop name","backdrop name"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,&#xD;	colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};Blockly.Blocks.sensing_of_object_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"OBJECT",options:[["Sprite1","Sprite1"],["Stage","_stage_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_of={init:function(){this.jsonInit({message0:"%1 of %2",args0:[{type:"input_value",name:"PROPERTY"},{type:"input_value",name:"OBJECT"}],output:!0,category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_current={init:function(){this.jsonInit({message0:"current %1",args0:[{type:"input_value",name:"CURRENTMENU"}],inputsInline:!0,output:"Number",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sensing_currentmenu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"CURRENTMENU",options:[["year","YEAR"],["month","MONTH"],["date","DATE"],["day of week","DAYOFWEEK"],["hour","HOUR"],["minute","MINUTE"],["second","SECOND"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.secondary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_dayssince2000={init:function(){this.jsonInit({message0:"days since 2000",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sensing_username={init:function(){this.jsonInit({message0:"username",category:Blockly.Categories.sensing,colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};Blockly.Blocks.sensing_neighbors={init:function(){this.jsonInit({message0:"my %1",args0:[{type:"field_dropdown",name:"NEIGHBORMENU",options:[["neighbors","neighbors"],["self","myself"],["clones","clones"],["center","pivot"],["Stage","_stage_"],["parent","parent"],["name","name"],["scripts","BLOCKS"],["x position","x position"],["y position","y position"],["direction","direction"],["costume #","costume #"],["costume name","costume name"],["size","size"],["volume","volume"],["backdrop #","backdrop #"],["backdrop name","backdrop name"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};Blockly.Blocks.sensing_object={init:function(){this.jsonInit({message0:"object %1",args0:[{type:"field_dropdown",name:"OBJECT",options:[["Sprite1","Sprite1"],["Stage","_stage_"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sensing.primary,colourSecondary:Blockly.Colours.sensing.secondary,colourTertiary:Blockly.Colours.sensing.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};Blockly.Blocks.sound={};Blockly.Blocks.sound_sounds_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"SOUND_MENU",options:[["1","0"],["2","1"],["3","2"],["4","3"],["5","4"],["6","5"],["7","6"],["8","7"],["9","8"],["10","9"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sounds.secondary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sound_play={init:function(){this.jsonInit({message0:"play sound %1",args0:[{type:"input_value",name:"SOUND_MENU"}],inputsInline:!0,previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_playuntildone={init:function(){this.jsonInit({message0:"play sound %1 until done",args0:[{type:"input_value",name:"SOUND_MENU"}],inputsInline:!0,previousStatement:null,nextStatement:null,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_stopallsounds={init:function(){this.jsonInit({message0:"stop all sounds",previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_drums_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"DRUM",options:[["(1) Snare Drum","1"],["(2) Bass Drum","2"],["(3) Side Stick","3"],["(4) Crash Cymbal","4"],["(5) Open Hi-Hat","5"],["(6) Closed Hi-Hat","6"],["(7) Tambourine","7"],["(8) Hand Clap","8"],["(9) Claves","9"],["(10) Wood Block","10"],["(11) Cowbell","11"],["(12) Triangle","12"],["(13) Bongo","13"],["(14) Conga","14"],["(15) Cabasa","15"],["(16) Guiro","16"],["(17) Vibraslap",&#xD;	"17"],["(18) Open Cuica","18"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sounds.secondary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sound_playdrumforbeats={init:function(){this.jsonInit({message0:"play drum %1 for %2 beats",args0:[{type:"input_value",name:"DRUM"},{type:"input_value",name:"BEATS"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_restforbeats={init:function(){this.jsonInit({message0:"rest for %1 beats",args0:[{type:"input_value",name:"BEATS"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_playnoteforbeats={init:function(){this.jsonInit({message0:"play note %1 for %2 beats",args0:[{type:"input_value",name:"NOTE"},{type:"input_value",name:"BEATS"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_effects_menu_options=[["pitch","PITCH"],["pan left/right","PAN"],["echo","ECHO"],["reverb","REVERB"],["fuzz","FUZZ"],["robot","ROBOT"]];&#xD;	Blockly.Blocks.sound_seteffectto={init:function(){this.jsonInit({message0:"set %1 effect to %2",args0:[{type:"field_dropdown",name:"EFFECT",options:Blockly.Blocks.sound_effects_menu_options},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_changeeffectby={init:function(){this.jsonInit({message0:"change %1 effect by %2",args0:[{type:"field_dropdown",name:"EFFECT",options:Blockly.Blocks.sound_effects_menu_options},{type:"input_value",name:"VALUE"}],previousStatement:null,nextStatement:null,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_cleareffects={init:function(){this.jsonInit({message0:"clear sound effects",previousStatement:null,nextStatement:null,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_instruments_menu={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_dropdown",name:"INSTRUMENT",options:[["(1) Piano","1"],["(2) Electric Piano","2"],["(3) Organ","3"],["(4) Guitar","4"],["(5) Electric Guitar","5"],["(6) Bass","6"],["(7) Pizzicato","7"],["(8) Cello","8"],["(9) Trombone","9"],["(10) Clarinet","10"],["(11) Saxophone","11"],["(12) Flute","12"],["(13) Wooden Flute","13"],["(14) Bassoon","14"],["(15) Choir","15"],["(16) Vibraphone","16"],["(17) Music Box",&#xD;	"17"],["(18) Steel Drum","18"],["(19) Marimba","19"],["(20) Synth Lead","20"],["(21) Synth Pad","21"]]}],inputsInline:!0,output:"String",colour:Blockly.Colours.sounds.secondary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary,outputShape:Blockly.OUTPUT_SHAPE_ROUND})}};&#xD;	Blockly.Blocks.sound_setinstrumentto={init:function(){this.jsonInit({message0:"set instrument to %1",args0:[{type:"input_value",name:"INSTRUMENT"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_changevolumeby={init:function(){this.jsonInit({message0:"change volume by %1",args0:[{type:"input_value",name:"VOLUME"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_setvolumeto={init:function(){this.jsonInit({message0:"set volume to %1%",args0:[{type:"input_value",name:"VOLUME"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_volume={init:function(){this.jsonInit({message0:"volume",category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;	Blockly.Blocks.sound_changetempoby={init:function(){this.jsonInit({message0:"change tempo by %1",args0:[{type:"input_value",name:"TEMPO"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_settempotobpm={init:function(){this.jsonInit({message0:"set tempo to %1 bpm",args0:[{type:"input_value",name:"TEMPO"}],previousStatement:null,nextStatement:null,category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary})}};&#xD;	Blockly.Blocks.sound_tempo={init:function(){this.jsonInit({message0:"tempo",category:Blockly.Categories.sound,colour:Blockly.Colours.sounds.primary,colourSecondary:Blockly.Colours.sounds.secondary,colourTertiary:Blockly.Colours.sounds.tertiary,output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,checkboxInFlyout:!0})}};&#xD;&#xD;	/*** EXPORTS FROM exports-loader ***/&#xD;	module.exports = Blockly;&#xD;&#xD;&#xD;/***/ },&#xD;/* 13 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(14).goog;&#xD;&#xD;&#xD;/***/ },&#xD;/* 14 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(15);&#xD;&#xD;&#xD;/***/ },&#xD;/* 15 */&#xD;/***/ function(module, exports) {&#xD;&#xD;	/*** IMPORTS FROM imports-loader ***/&#xD;	(function() {&#xD;&#xD;	// Do not edit this file; automatically generated by build.py.&#xD;	&apos;use strict&apos;;&#xD;&#xD;	var COMPILED=!0,goog=goog||{};goog.global=this;goog.isDef=function(a){return void 0!==a};goog.isString=function(a){return"string"==typeof a};goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&amp;&amp;(d=a.shift());)!a.length&amp;&amp;goog.isDef(b)?c[d]=b:c=c[d]&amp;&amp;c[d]!==Object.prototype[d]?c[d]:c[d]={}};&#xD;	goog.define=function(a,b){var c=b;COMPILED||(goog.global.CLOSURE_UNCOMPILED_DEFINES&amp;&amp;void 0===goog.global.CLOSURE_UNCOMPILED_DEFINES.nodeType&amp;&amp;Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES,a)?c=goog.global.CLOSURE_UNCOMPILED_DEFINES[a]:goog.global.CLOSURE_DEFINES&amp;&amp;void 0===goog.global.CLOSURE_DEFINES.nodeType&amp;&amp;Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,a)&amp;&amp;(c=goog.global.CLOSURE_DEFINES[a]));goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";&#xD;	goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&amp;&amp;!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide can not be used within a goog.module.");if(!COMPILED&amp;&amp;goog.isProvided_(a))throw Error(&apos;Namespace "&apos;+a+&apos;" already declared.&apos;);goog.constructNamespace_(a)};&#xD;	goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(".")))&amp;&amp;!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;&#xD;	goog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You&apos;re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");&#xD;	goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(&apos;Namespace "&apos;+a+&apos;" already declared.&apos;);delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a];if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.moduleLoaderState_=null;&#xD;	goog.isInModuleLoader_=function(){return null!=goog.moduleLoaderState_};goog.module.declareLegacyNamespace=function(){if(!COMPILED&amp;&amp;!goog.isInModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&amp;&amp;!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};&#xD;	goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&amp;&amp;goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={"goog.module":!0});&#xD;	goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};&#xD;	goog.addDependency=function(a,b,c,d){if(goog.DEPENDENCIES_ENABLED){var e;a=a.replace(/\\/g,"/");var f=goog.dependencies_;d&amp;&amp;"boolean"!==typeof d||(d=d?{module:"goog"}:{});for(var g=0;e=b[g];g++)f.nameToPath[e]=a,f.loadFlags[a]=d;for(d=0;b=c[d];d++)a in f.requires||(f.requires[a]={}),f.requires[a][b]=!0}};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&amp;&amp;goog.global.console.error(a)};&#xD;	goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&amp;&amp;goog.IS_OLD_IE_&amp;&amp;goog.maybeProcessDeferredDep_(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b)goog.writeScripts_(b);else throw a="goog.require could not find: "+a,goog.logToConsole_(a),Error(a);}return null}};goog.basePath="";goog.nullFunction=function(){};&#xD;	goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&amp;&amp;(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&amp;&amp;goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";&#xD;	goog.TRANSPILER="transpile.js";&#xD;	goog.DEPENDENCIES_ENABLED&amp;&amp;(goog.dependencies_={loadFlags:{},nameToPath:{},requires:{},visited:{},written:{},deferred:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&amp;&amp;"write"in a},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&amp;&amp;goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document;var b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=&#xD;	a.length-1;0&lt;=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.importScript_=function(a,b){(goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_)(a,b)&amp;&amp;(goog.dependencies_.written[a]=!0)},goog.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.oldIeWaiting_=!1,goog.importProcessedScript_=function(a,b,c){goog.importScript_("",&apos;goog.retrieveAndExec_("&apos;+a+&apos;", &apos;+b+", "+c+");")},&#xD;	goog.queuedModules_=[],goog.wrapModule_=function(a,b){return goog.LOAD_MODULE_USING_EVAL&amp;&amp;goog.isDef(goog.global.JSON)?"goog.loadModule("+goog.global.JSON.stringify(b+"\n//# sourceURL="+a+"\n")+");":&apos;goog.loadModule(function(exports) {"use strict";&apos;+b+"\n;return exports});\n//# sourceURL="+a+"\n"},goog.loadQueuedModules_=function(){var a=goog.queuedModules_.length;if(0&lt;a){var b=goog.queuedModules_;goog.queuedModules_=[];for(var c=0;c&lt;a;c++)goog.maybeProcessDeferredPath_(b[c])}goog.oldIeWaiting_=!1},&#xD;	goog.maybeProcessDeferredDep_=function(a){goog.isDeferredModule_(a)&amp;&amp;goog.allDepsAreAvailable_(a)&amp;&amp;(a=goog.getPathFromDeps_(a),goog.maybeProcessDeferredPath_(goog.basePath+a))},goog.isDeferredModule_=function(a){var b=(a=goog.getPathFromDeps_(a))&amp;&amp;goog.dependencies_.loadFlags[a]||{},c=b.lang||"es3";return a&amp;&amp;("goog"==b.module||goog.needsTranspile_(c))?goog.basePath+a in goog.dependencies_.deferred:!1},goog.allDepsAreAvailable_=function(a){if((a=goog.getPathFromDeps_(a))&amp;&amp;a in goog.dependencies_.requires)for(var b in goog.dependencies_.requires[a])if(!goog.isProvided_(b)&amp;&amp;&#xD;	!goog.isDeferredModule_(b))return!1;return!0},goog.maybeProcessDeferredPath_=function(a){if(a in goog.dependencies_.deferred){var b=goog.dependencies_.deferred[a];delete goog.dependencies_.deferred[a];goog.globalEval(b)}},goog.loadModuleFromUrl=function(a){goog.retrieveAndExec_(a,!0,!1)},goog.writeScriptSrcNode_=function(a){goog.global.document.write(&apos;&lt;script type="text/javascript" src="&apos;+a+&apos;"&gt;\x3c/script&gt;&apos;)},goog.appendScriptSrcNode_=function(a){var b=goog.global.document,c=b.createElement("script");&#xD;	c.type="text/javascript";c.src=a;c.defer=!1;c.async=!1;b.head.appendChild(c)},goog.writeScriptTag_=function(a,b){if(goog.inHtmlDocument_()){var c=goog.global.document;if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&amp;&amp;"complete"==c.readyState){if(/\bdeps.js$/.test(a))return!1;throw Error(&apos;Cannot write "&apos;+a+&apos;" after document load&apos;);}if(void 0===b)if(goog.IS_OLD_IE_){goog.oldIeWaiting_=!0;var d=" onreadystatechange=&apos;goog.onScriptLoad_(this, "+ ++goog.lastNonModuleScriptIndex_+")&apos; ";c.write(&apos;&lt;script type="text/javascript" src="&apos;+&#xD;	a+&apos;"&apos;+d+"&gt;\x3c/script&gt;")}else goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING?goog.appendScriptSrcNode_(a):goog.writeScriptSrcNode_(a);else c.write(&apos;&lt;script type="text/javascript"&gt;&apos;+goog.protectScriptTag_(b)+"\x3c/script&gt;");return!0}return!1},goog.protectScriptTag_=function(a){return a.replace(/&lt;\/(SCRIPT)/ig,"\\x3c/$1")},goog.needsTranspile_=function(a){if("always"==goog.TRANSPILE)return!0;if("never"==goog.TRANSPILE)return!1;goog.requiresTranspilation_||(goog.requiresTranspilation_=goog.createRequiresTranspilation_());&#xD;	if(a in goog.requiresTranspilation_)return goog.requiresTranspilation_[a];throw Error("Unknown language mode: "+a);},goog.requiresTranspilation_=null,goog.lastNonModuleScriptIndex_=0,goog.onScriptLoad_=function(a,b){"complete"==a.readyState&amp;&amp;goog.lastNonModuleScriptIndex_==b&amp;&amp;goog.loadQueuedModules_();return!0},goog.writeScripts_=function(a){function b(a){if(!(a in e.written||a in e.visited)){e.visited[a]=!0;if(a in e.requires)for(var f in e.requires[a])if(!goog.isProvided_(f))if(f in e.nameToPath)b(e.nameToPath[f]);&#xD;	else throw Error("Undefined nameToPath for "+f);a in d||(d[a]=!0,c.push(a))}}var c=[],d={},e=goog.dependencies_;b(a);for(var f=0;f&lt;c.length;f++)a=c[f],goog.dependencies_.written[a]=!0;var g=goog.moduleLoaderState_;goog.moduleLoaderState_=null;for(f=0;f&lt;c.length;f++)if(a=c[f]){var h=e.loadFlags[a]||{},k=goog.needsTranspile_(h.lang||"es3");"goog"==h.module||k?goog.importProcessedScript_(goog.basePath+a,"goog"==h.module,k):goog.importScript_(goog.basePath+a)}else throw goog.moduleLoaderState_=g,Error("Undefined script input");&#xD;	goog.moduleLoaderState_=g},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval(&apos;"use strict";let x = 1; function f() { return typeof x; };f() == "number";&apos;)}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};&#xD;	goog.workaroundSafari10EvalBug=function(a){return"(function(){"+a+"\n;})();\n"};&#xD;	goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:void 0,declareLegacyNamespace:!1};if(goog.isFunction(a))var c=a.call(void 0,{});else if(goog.isString(a))goog.useSafari10Workaround()&amp;&amp;(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error("Invalid module definition");var d=goog.moduleLoaderState_.moduleName;if(!goog.isString(d)||!d)throw Error(&apos;Invalid module name "&apos;+d+&apos;"&apos;);goog.moduleLoaderState_.declareLegacyNamespace?&#xD;	goog.constructNamespace_(d,c):goog.SEAL_MODULE_EXPORTS&amp;&amp;Object.seal&amp;&amp;"object"==typeof c&amp;&amp;null!=c&amp;&amp;Object.seal(c);goog.loadedModules_[d]=c}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b&lt;a.length;)"."==a[b]?a.splice(b,1):b&amp;&amp;".."==a[b]&amp;&amp;a[b-1]&amp;&amp;".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};&#xD;	goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};&#xD;	goog.retrieveAndExec_=function(a,b,c){if(!COMPILED){var d=a;a=goog.normalizePath_(a);var e=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_,f=goog.loadFileSync_(a);if(null==f)throw Error(&apos;Load of "&apos;+a+&apos;" failed&apos;);c&amp;&amp;(f=goog.transpile_.call(goog.global,f,a));f=b?goog.wrapModule_(a,f):f+("\n//# sourceURL="+a);goog.IS_OLD_IE_&amp;&amp;goog.oldIeWaiting_?(goog.dependencies_.deferred[d]=f,goog.queuedModules_.push(d)):e(a,f)}};&#xD;	goog.transpile_=function(a,b){var c=goog.global.$jscomp;c||(goog.global.$jscomp=c={});var d=c.transpile;if(!d){var e=goog.basePath+goog.TRANSPILER,f=goog.loadFileSync_(e);if(f){eval(f+"\n//# sourceURL="+e);if(goog.global.$gwtExport&amp;&amp;goog.global.$gwtExport.$jscomp&amp;&amp;!goog.global.$gwtExport.$jscomp.transpile)throw Error(&apos;The transpiler did not properly export the "transpile" method. $gwtExport: &apos;+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=goog.global.$gwtExport.$jscomp.transpile;&#xD;	c=goog.global.$jscomp;d=c.transpile}}d||(d=c.transpile=function(a,b){goog.logToConsole_(b+" requires transpilation but no transpiler was found.");return a});return d(a,b)};&#xD;	goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&amp;&amp;"undefined"!=typeof a.splice&amp;&amp;"undefined"!=typeof a.propertyIsEnumerable&amp;&amp;!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&amp;&amp;"undefined"!=typeof a.propertyIsEnumerable&amp;&amp;!a.propertyIsEnumerable("call"))return"function"}else return"null";&#xD;	else if("function"==b&amp;&amp;"undefined"==typeof a.call)return"object";return b};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&amp;&amp;"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&amp;&amp;"function"==typeof a.getFullYear};goog.isFunction=function(a){return"function"==goog.typeOf(a)};&#xD;	goog.isObject=function(a){var b=typeof a;return"object"==b&amp;&amp;null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&amp;&amp;"removeAttribute"in a&amp;&amp;a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()&gt;&gt;&gt;0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;&#xD;	goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};&#xD;	goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2&lt;arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&amp;&amp;-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};&#xD;	goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&amp;&amp;Date.now||function(){return+new Date};&#xD;	goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval){if(null==goog.evalWorksForGlobals_)if(goog.global.eval("var _evalTest_ = 1;"),"undefined"!=typeof goog.global._evalTest_){try{delete goog.global._evalTest_}catch(d){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1;if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("SCRIPT");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));&#xD;	b.body.appendChild(c);b.body.removeChild(c)}}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;&#xD;	goog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(&apos;className passed in goog.getCssName must not start with ".". You passed: &apos;+a);var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d&lt;a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a},d=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(d):d};&#xD;	goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&amp;&amp;goog.global.CLOSURE_CSS_NAME_MAPPING&amp;&amp;(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b){b&amp;&amp;(a=a.replace(/\{\$([^}]+)}/g,function(a,d){return null!=b&amp;&amp;d in b?b[d]:a}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};&#xD;	goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e&lt;arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};&#xD;	goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&amp;&amp;!d)throw Error("arguments.caller not defined.  goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_){for(var e=Array(arguments.length-1),f=1;f&lt;arguments.length;f++)e[f-1]=arguments[f];return d.superClass_.constructor.apply(a,e)}e=Array(arguments.length-2);for(f=2;f&lt;arguments.length;f++)e[f-2]=arguments[f];for(var f=!1,g=a.constructor;g;g=&#xD;	g.superClass_&amp;&amp;g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.prototype[b].apply(a,e);if(a[b]===d)return a.constructor.prototype[b].apply(a,e);throw Error("goog.base called from a method of one name to a method of a different name");};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a goog.module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);&#xD;	goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&amp;&amp;c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&amp;&amp;goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&amp;&amp;(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;&#xD;	goog.defineClass.createSealingConstructor_=function(a,b){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return a;var c=!goog.defineClass.isUnsealable_(b),d=function(){var b=a.apply(this,arguments)||this;b[goog.UID_PROPERTY_]=b[goog.UID_PROPERTY_];this.constructor===d&amp;&amp;c&amp;&amp;Object.seal instanceof Function&amp;&amp;Object.seal(b);return b};return d};goog.defineClass.isUnsealable_=function(a){return a&amp;&amp;a.prototype&amp;&amp;a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");&#xD;	goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&amp;&amp;(a[c]=b[c]);for(var d=0;d&lt;goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&amp;&amp;(a[c]=b[c])};goog.tagUnsealableClass=function(a){!COMPILED&amp;&amp;goog.defineClass.SEAL_CLASS_INSTANCES&amp;&amp;(a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)};goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_="goog_defineClass_legacy_unsealable";&#xD;	goog.createRequiresTranspilation_=function(){function a(a,b){d?c[a]=!0:b()?c[a]=!1:d=c[a]=!0}function b(a){try{return!!eval(a)}catch(g){return!1}}var c={es3:!1},d=!1,e=goog.global.navigator&amp;&amp;goog.global.navigator.userAgent?goog.global.navigator.userAgent:"";a("es5",function(){return b("[1,].length==1")});a("es6",function(){var a=e.match(/Edge\/(\d+)(\.\d)*/i);return a&amp;&amp;15&gt;Number(a[1])?!1:b(&apos;(()=&gt;{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()&apos;)});&#xD;	a("es6-impl",function(){return!0});a("es7",function(){return b("2 ** 2 == 4")});a("es8",function(){return b("async () =&gt; 1, true")});return c};goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&amp;&amp;(this.stack=b)}a&amp;&amp;(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0&lt;=c&amp;&amp;a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};&#xD;	goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&amp;&amp;1&lt;c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};&#xD;	goog.string.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};&#xD;	goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&amp;&amp;" "&lt;=a&amp;&amp;"&#126;"&gt;=a||"\u0080"&lt;=a&amp;&amp;"\ufffd"&gt;=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};&#xD;	goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.TRUSTED_SITE&amp;&amp;String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};&#xD;	goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c&lt;d?-1:c==d?0:1};&#xD;	goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length),g=0;g&lt;f;g++){c=d[g];var h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&amp;&amp;(b=parseInt(h,10),!isNaN(b)&amp;&amp;a-b)?a-b:c&lt;h?-1:1}return d.length!=e.length?d.length-e.length:a&lt;b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\D+/g)};&#xD;	goog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\.\d+|\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"&lt;br /&gt;":"&lt;br&gt;")};&#xD;	goog.string.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.AMP_RE_,"&amp;amp;").replace(goog.string.LT_RE_,"&amp;lt;").replace(goog.string.GT_RE_,"&amp;gt;").replace(goog.string.QUOT_RE_,"&amp;quot;").replace(goog.string.SINGLE_QUOTE_RE_,"&amp;#39;").replace(goog.string.NULL_RE_,"&amp;#0;"),goog.string.DETECT_DOUBLE_ESCAPING&amp;&amp;(a=a.replace(goog.string.E_RE_,"&amp;#101;"));else{if(!goog.string.ALL_RE_.test(a))return a;-1!=a.indexOf("&amp;")&amp;&amp;(a=a.replace(goog.string.AMP_RE_,"&amp;amp;"));-1!=a.indexOf("&lt;")&amp;&amp;(a=a.replace(goog.string.LT_RE_,&#xD;	"&amp;lt;"));-1!=a.indexOf("&gt;")&amp;&amp;(a=a.replace(goog.string.GT_RE_,"&amp;gt;"));-1!=a.indexOf(&apos;"&apos;)&amp;&amp;(a=a.replace(goog.string.QUOT_RE_,"&amp;quot;"));-1!=a.indexOf("&apos;")&amp;&amp;(a=a.replace(goog.string.SINGLE_QUOTE_RE_,"&amp;#39;"));-1!=a.indexOf("\x00")&amp;&amp;(a=a.replace(goog.string.NULL_RE_,"&amp;#0;"));goog.string.DETECT_DOUBLE_ESCAPING&amp;&amp;-1!=a.indexOf("e")&amp;&amp;(a=a.replace(goog.string.E_RE_,"&amp;#101;"))}return a};goog.string.AMP_RE_=/&amp;/g;goog.string.LT_RE_=/&lt;/g;goog.string.GT_RE_=/&gt;/g;goog.string.QUOT_RE_=/"/g;&#xD;	goog.string.SINGLE_QUOTE_RE_=/&apos;/g;goog.string.NULL_RE_=/\x00/g;goog.string.E_RE_=/e/g;goog.string.ALL_RE_=goog.string.DETECT_DOUBLE_ESCAPING?/[\x00&amp;&lt;&gt;"&apos;e]/:/[\x00&amp;&lt;&gt;"&apos;]/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&amp;")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&amp;&amp;"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};&#xD;	goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&amp;")?goog.string.unescapeEntitiesUsingDom_(a,b):a};&#xD;	goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;amp;":"&amp;","&amp;lt;":"&lt;","&amp;gt;":"&gt;","&amp;quot;":&apos;"&apos;};var d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var e=c[a];if(e)return e;if("#"==b.charAt(0)){var f=Number("0"+b.substr(1));isNaN(f)||(e=String.fromCharCode(f))}e||(d.innerHTML=a+" ",e=d.firstChild.nodeValue.slice(0,-1));return c[a]=e})};&#xD;	goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&amp;([^;]+);/g,function(a,c){switch(c){case "amp":return"&amp;";case "lt":return"&lt;";case "gt":return"&gt;";case "quot":return&apos;"&apos;;default:if("#"==c.charAt(0)){var b=Number("0"+c.substr(1));if(!isNaN(b))return String.fromCharCode(b)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&amp;([^;\s&lt;&amp;]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/  /g," &amp;#160;"),b)};&#xD;	goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d&lt;c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&amp;&amp;a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&amp;&amp;(a=goog.string.unescapeEntities(a));a.length&gt;b&amp;&amp;(a=a.substring(0,b-3)+"...");c&amp;&amp;(a=goog.string.htmlEscape(a));return a};&#xD;	goog.string.truncateMiddle=function(a,b,c,d){c&amp;&amp;(a=goog.string.unescapeEntities(a));if(d&amp;&amp;a.length&gt;b){d&gt;b&amp;&amp;(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length&gt;b&amp;&amp;(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&amp;&amp;(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",&apos;"&apos;:&apos;\\"&apos;,"\\":"\\\\","&lt;":"&lt;"};goog.string.jsEscapeCache_={"&apos;":"\\&apos;"};&#xD;	goog.string.quote=function(a){a=String(a);for(var b=[&apos;"&apos;],c=0;c&lt;a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31&lt;e&amp;&amp;127&gt;e?d:goog.string.escapeChar(d))}b.push(&apos;"&apos;);return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c&lt;a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};&#xD;	goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a.charCodeAt(0);if(31&lt;b&amp;&amp;127&gt;b)var c=a;else{if(256&gt;b){if(c="\\x",16&gt;b||256&lt;b)c+="0"}else c="\\u",4096&gt;b&amp;&amp;(c+="0");c+=b.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=c};goog.string.contains=function(a,b){return-1!=a.indexOf(b)};&#xD;	goog.string.caseInsensitiveContains=function(a,b){return goog.string.contains(a.toLowerCase(),b.toLowerCase())};goog.string.countOf=function(a,b){return a&amp;&amp;b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0&lt;=b&amp;&amp;b&lt;a.length&amp;&amp;0&lt;c&amp;&amp;(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){var c=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};&#xD;	goog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#&lt;!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};&#xD;	goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&amp;&amp;(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};&#xD;	goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&amp;&amp;g&lt;f;g++){var h=d[g]||"",k=e[g]||"";do{h=/(\d*)(\D*)(.*)/.exec(h)||["","","",""];k=/(\d*)(\D*)(.*)/.exec(k)||["","","",""];if(0==h[0].length&amp;&amp;0==k[0].length)break;var c=0==h[1].length?0:parseInt(h[1],10),l=0==k[1].length?0:parseInt(k[1],10),c=goog.string.compareElements_(c,l)||goog.string.compareElements_(0==h[2].length,0==k[2].length)||&#xD;	goog.string.compareElements_(h[2],k[2]),h=h[3],k=k[3]}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a&lt;b?-1:a&gt;b?1:0};goog.string.hashCode=function(a){for(var b=0,c=0;c&lt;a.length;++c)b=31*b+a.charCodeAt(c)&gt;&gt;&gt;0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){var b=Number(a);return 0==b&amp;&amp;goog.string.isEmptyOrWhitespace(a)?NaN:b};&#xD;	goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};&#xD;	goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(c?"|["+c+"]+":"")+")([a-z])","g"),function(a,b,c){return b+c.toUpperCase()})};goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.substr(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&amp;&amp;(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};&#xD;	goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0&lt;c&amp;&amp;a.length;)d.push(a.shift()),c--;a.length&amp;&amp;d.push(a.join(b));return d};goog.string.lastComponent=function(a,b){if(b)"string"==typeof b&amp;&amp;(b=[b]);else return a;for(var c=-1,d=0;d&lt;b.length;d++)if(""!=b[d]){var e=a.lastIndexOf(b[d]);e&gt;c&amp;&amp;(c=e)}return-1==c?a:a.slice(c+1)};&#xD;	goog.string.editDistance=function(a,b){var c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e&lt;b.length+1;e++)c[e]=e;for(e=0;e&lt;a.length;e++){d[0]=e+1;for(var f=0;f&lt;b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f&lt;c.length;f++)c[f]=d[f]}return d[b.length]};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift();this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;&#xD;	goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c){e+=": "+c;var f=d}else a&amp;&amp;(e+=": "+a,f=b);a=new goog.asserts.AssertionError(""+e,f||[]);goog.asserts.errorHandler_(a)};goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;(goog.asserts.errorHandler_=a)};goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!a&amp;&amp;goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};&#xD;	goog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&amp;&amp;goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isNumber(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};&#xD;	goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isString(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isFunction(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};&#xD;	goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isObject(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isArray(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};&#xD;	goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&amp;&amp;!goog.isBoolean(a)&amp;&amp;goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&amp;&amp;a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};&#xD;	goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.",[goog.asserts.getType_(b),goog.asserts.getType_(a)],c,Array.prototype.slice.call(arguments,3));return a};goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};&#xD;	goog.asserts.getType_=function(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.debug.entryPointRegistry={};goog.debug.EntryPointMonitor=function(){};goog.debug.entryPointRegistry.refList_=[];goog.debug.entryPointRegistry.monitors_=[];goog.debug.entryPointRegistry.monitorsMayExist_=!1;goog.debug.entryPointRegistry.register=function(a){goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length]=a;if(goog.debug.entryPointRegistry.monitorsMayExist_)for(var b=goog.debug.entryPointRegistry.monitors_,c=0;c&lt;b.length;c++)a(goog.bind(b[c].wrap,b[c]))};&#xD;	goog.debug.entryPointRegistry.monitorAll=function(a){goog.debug.entryPointRegistry.monitorsMayExist_=!0;for(var b=goog.bind(a.wrap,a),c=0;c&lt;goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](b);goog.debug.entryPointRegistry.monitors_.push(a)};&#xD;	goog.debug.entryPointRegistry.unmonitorAllIfPossible=function(a){var b=goog.debug.entryPointRegistry.monitors_;goog.asserts.assert(a==b[b.length-1],"Only the most recent monitor can be unwrapped.");a=goog.bind(a.unwrap,a);for(var c=0;c&lt;goog.debug.entryPointRegistry.refList_.length;c++)goog.debug.entryPointRegistry.refList_[c](a);b.length--};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.ASSUME_NATIVE_FUNCTIONS=!1;goog.array.peek=function(a){return a[a.length-1]};goog.array.last=goog.array.peek;&#xD;	goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0&gt;c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&amp;&amp;1==b.length?a.indexOf(b,c):-1;for(;c&lt;a.length;c++)if(c in a&amp;&amp;a[c]===b)return c;return-1};&#xD;	goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0&gt;c&amp;&amp;(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&amp;&amp;1==b.length?a.lastIndexOf(b,c):-1;for(;0&lt;=c;c--)if(c in a&amp;&amp;a[c]===b)return c;return-1};&#xD;	goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f&lt;d;f++)f in e&amp;&amp;b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0&lt;=d;--d)d in e&amp;&amp;b.call(c,e[d],d,a)};&#xD;	goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h&lt;d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&amp;&amp;(e[f++]=k)}return e};&#xD;	goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g&lt;d;g++)g in f&amp;&amp;(e[g]=b.call(c,f[g],g,a));return e};&#xD;	goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&amp;&amp;(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};&#xD;	goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&amp;&amp;(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};&#xD;	goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f&lt;d;f++)if(f in e&amp;&amp;b.call(c,e[f],f,a))return!0;return!1};&#xD;	goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&amp;&amp;(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f&lt;d;f++)if(f in e&amp;&amp;!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&amp;&amp;++d},c);return d};&#xD;	goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0&gt;b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f&lt;d;f++)if(f in e&amp;&amp;b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0&gt;b?null:goog.isString(a)?a.charAt(b):a[b]};&#xD;	goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0&lt;=d;d--)if(d in e&amp;&amp;b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0&lt;=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0&lt;=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};&#xD;	goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0&gt;(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0&lt;=c)&amp;&amp;goog.array.removeAt(a,c);return d};&#xD;	goog.array.removeLast=function(a,b){var c=goog.array.lastIndexOf(a,b);return 0&lt;=c?(goog.array.removeAt(a,c),!0):!1};goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0&lt;=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAllIf=function(a,b,c){var d=0;goog.array.forEachRight(a,function(e,f){b.call(c,e,f,a)&amp;&amp;goog.array.removeAt(a,f)&amp;&amp;d++});return d};&#xD;	goog.array.concat=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.join=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.toArray=function(a){var b=a.length;if(0&lt;b){for(var c=Array(b),d=0;d&lt;b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;goog.array.extend=function(a,b){for(var c=1;c&lt;arguments.length;c++){var d=arguments[c];if(goog.isArrayLike(d)){var e=a.length||0,f=d.length||0;a.length=e+f;for(var g=0;g&lt;f;g++)a[e+g]=d[g]}else a.push(d)}};&#xD;	goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,goog.array.slice(arguments,1))};goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2&gt;=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};&#xD;	goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(a){return goog.isObject(a)?"o"+goog.getUid(a):(typeof a).charAt(0)+a};c=c||d;for(var d={},e=0,f=0;f&lt;a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};&#xD;	goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f&lt;g;){var k=f+g&gt;&gt;1;var l=c?b.call(e,a[k],k,a):b(d,a[k]);0&lt;l?f=k+1:(g=k,h=!l)}return h?f:&#126;f};goog.array.sort=function(a,b){a.sort(b||goog.array.defaultCompare)};goog.array.stableSort=function(a,b){for(var c=Array(a.length),d=0;d&lt;a.length;d++)c[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(c,function(a,b){return e(a.value,b.value)||a.index-b.index});for(d=0;d&lt;a.length;d++)a[d]=c[d].value};&#xD;	goog.array.sortByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(b(a),b(c))})};goog.array.sortObjectsByKey=function(a,b,c){goog.array.sortByKey(a,function(a){return a[b]},c)};goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d&lt;a.length;d++){var e=b(a[d-1],a[d]);if(0&lt;e||0==e&amp;&amp;c)return!1}return!0};&#xD;	goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e&lt;d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e&lt;d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a&gt;b?1:a&lt;b?-1:0};&#xD;	goog.array.inverseDefaultCompare=function(a,b){return-goog.array.defaultCompare(a,b)};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0&gt;c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0&lt;=b?goog.array.removeAt(a,b):!1};&#xD;	goog.array.bucket=function(a,b,c){for(var d={},e=0;e&lt;a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&amp;&amp;(d[g]||(d[g]=[])).push(f)}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&amp;&amp;(e=a,f=b);if(0&gt;c*(f-e))return[];if(0&lt;c)for(a=e;a&lt;f;a+=c)d.push(a);else for(a=e;a&gt;f;a+=c)d.push(a);return d};&#xD;	goog.array.repeat=function(a,b){for(var c=[],d=0;d&lt;b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c&lt;arguments.length;c++){var d=arguments[c];if(goog.isArray(d))for(var e=0;e&lt;d.length;e+=8192)for(var f=goog.array.slice(d,e,e+8192),f=goog.array.flatten.apply(null,f),g=0;g&lt;f.length;g++)b.push(f[g]);else b.push(d)}return b};&#xD;	goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&amp;&amp;(b%=a.length,0&lt;b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0&gt;b&amp;&amp;Array.prototype.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0&lt;=b&amp;&amp;b&lt;a.length);goog.asserts.assert(0&lt;=c&amp;&amp;c&lt;a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])};&#xD;	goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=arguments[0].length,d=1;d&lt;arguments.length;d++)arguments[d].length&lt;c&amp;&amp;(c=arguments[d].length);for(d=0;d&lt;c;d++){for(var e=[],f=0;f&lt;arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0&lt;d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.array.copyByIndex=function(a,b){var c=[];goog.array.forEach(b,function(b){c.push(a[b])});return c};&#xD;	goog.array.concatMap=function(a,b,c){return goog.array.concat.apply([],goog.array.map(a,b,c))};goog.labs={};goog.labs.userAgent={};goog.labs.userAgent.util={};goog.labs.userAgent.util.getNativeUserAgentString_=function(){var a=goog.labs.userAgent.util.getNavigator_();return a&amp;&amp;(a=a.userAgent)?a:""};goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator};goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_();goog.labs.userAgent.util.setUserAgent=function(a){goog.labs.userAgent.util.userAgent_=a||goog.labs.userAgent.util.getNativeUserAgentString_()};&#xD;	goog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_};goog.labs.userAgent.util.matchUserAgent=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.contains(b,a)};goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.caseInsensitiveContains(b,a)};&#xD;	goog.labs.userAgent.util.extractVersionTuples=function(a){for(var b=RegExp("(\\w[\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[],d;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c};goog.object={};goog.object.is=function(a,b){return a===b?0!==a||1/a===1/b:a!==a&amp;&amp;b!==b};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&amp;&amp;(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};&#xD;	goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};&#xD;	goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c&lt;d.length&amp;&amp;(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return null!==a&amp;&amp;b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};&#xD;	goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&amp;&amp;a[b]};goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&amp;&amp;delete a[b];return c};goog.object.add=function(a,b,c){if(null!==a&amp;&amp;b in a)throw Error(&apos;The object already contains the key "&apos;+b+&apos;"&apos;);goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return null!==a&amp;&amp;b in a?a[b]:c};&#xD;	goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};goog.object.setWithReturnValueIfNotSet=function(a,b,c){if(b in a)return a[b];c=c();return a[b]=c};goog.object.equals=function(a,b){for(var c in a)if(!(c in b)||a[c]!==b[c])return!1;for(c in b)if(!(c in a))return!1;return!0};goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};&#xD;	goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(goog.isFunction(a.clone))return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");&#xD;	goog.object.extend=function(a,b){for(var c,d,e=1;e&lt;arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f&lt;goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&amp;&amp;(a[c]=d[c])}};&#xD;	goog.object.create=function(a){var b=arguments.length;if(1==b&amp;&amp;goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d&lt;b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&amp;&amp;goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d&lt;b;d++)c[arguments[d]]=!0;return c};&#xD;	goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&amp;&amp;!Object.isFrozen(a)&amp;&amp;(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&amp;&amp;Object.isFrozen(a)};&#xD;	goog.object.getAllPropertyNames=function(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(a);for(var d={};a&amp;&amp;(a!==Object.prototype||b)&amp;&amp;(a!==Function.prototype||c);){for(var e=Object.getOwnPropertyNames(a),f=0;f&lt;e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return goog.object.getKeys(d)};goog.labs.userAgent.browser={};goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent("Opera")};goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.browser.matchEdge_=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent("Firefox")};&#xD;	goog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent("Safari")&amp;&amp;!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdge_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent("Android"))};goog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent("Coast")};&#xD;	goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent("iPad")||goog.labs.userAgent.util.matchUserAgent("iPhone"))&amp;&amp;!goog.labs.userAgent.browser.matchSafari_()&amp;&amp;!goog.labs.userAgent.browser.matchChrome_()&amp;&amp;!goog.labs.userAgent.browser.matchCoast_()&amp;&amp;goog.labs.userAgent.util.matchUserAgent("AppleWebKit")};&#xD;	goog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent("Chrome")||goog.labs.userAgent.util.matchUserAgent("CriOS"))&amp;&amp;!goog.labs.userAgent.browser.matchEdge_()};goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent("Android")&amp;&amp;!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())};&#xD;	goog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_;goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_;goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdge_;goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_;goog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_;goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_;goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_;&#xD;	goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_;goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_;goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent("Silk")};&#xD;	goog.labs.userAgent.browser.getVersion=function(){function a(a){a=goog.array.find(a,d);return c[a]||""}var b=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(b);var b=goog.labs.userAgent.util.extractVersionTuples(b),c={};goog.array.forEach(b,function(a){c[a[0]]=a[1]});var d=goog.partial(goog.object.containsKey,c);return goog.labs.userAgent.browser.isOpera()?a(["Version","Opera"]):goog.labs.userAgent.browser.isEdge()?a(["Edge"]):&#xD;	goog.labs.userAgent.browser.isChrome()?a(["Chrome","CriOS"]):(b=b[2])&amp;&amp;b[1]||""};goog.labs.userAgent.browser.isVersionOrHigher=function(a){return 0&lt;=goog.string.compareVersions(goog.labs.userAgent.browser.getVersion(),a)};&#xD;	goog.labs.userAgent.browser.getIEVersion_=function(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&amp;&amp;b[1])return b[1];var b="",c=/MSIE +([\d\.]+)/.exec(a);if(c&amp;&amp;c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&amp;&amp;a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b};goog.labs.userAgent.engine={};goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent("Presto")};goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent("Trident")||goog.labs.userAgent.util.matchUserAgent("MSIE")};goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent("Edge")};&#xD;	goog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit")&amp;&amp;!goog.labs.userAgent.engine.isEdge()};goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent("Gecko")&amp;&amp;!goog.labs.userAgent.engine.isWebKit()&amp;&amp;!goog.labs.userAgent.engine.isTrident()&amp;&amp;!goog.labs.userAgent.engine.isEdge()};&#xD;	goog.labs.userAgent.engine.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();if(a){var a=goog.labs.userAgent.util.extractVersionTuples(a),b=goog.labs.userAgent.engine.getEngineTuple_(a);if(b)return"Gecko"==b[0]?goog.labs.userAgent.engine.getVersionForKey_(a,"Firefox"):b[1];var a=a[0],c;if(a&amp;&amp;(c=a[2])&amp;&amp;(c=/Trident\/([^\s;]+)/.exec(c)))return c[1]}return""};&#xD;	goog.labs.userAgent.engine.getEngineTuple_=function(a){if(!goog.labs.userAgent.engine.isEdge())return a[1];for(var b=0;b&lt;a.length;b++){var c=a[b];if("Edge"==c[0])return c}};goog.labs.userAgent.engine.isVersionOrHigher=function(a){return 0&lt;=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),a)};goog.labs.userAgent.engine.getVersionForKey_=function(a,b){var c=goog.array.find(a,function(a){return b==a[0]});return c&amp;&amp;c[1]||""};goog.labs.userAgent.platform={};goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent("Android")};goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent("iPod")};goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent("iPhone")&amp;&amp;!goog.labs.userAgent.util.matchUserAgent("iPod")&amp;&amp;!goog.labs.userAgent.util.matchUserAgent("iPad")};goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent("iPad")};&#xD;	goog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()};goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent("Macintosh")};goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent("Linux")};goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent("Windows")};&#xD;	goog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent("CrOS")};&#xD;	goog.labs.userAgent.platform.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();var b="";goog.labs.userAgent.platform.isWindows()?(b=/Windows (?:NT|Phone) ([0-9.]+)/,b=(a=b.exec(a))?a[1]:"0.0"):goog.labs.userAgent.platform.isIos()?(b=/(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/,b=(a=b.exec(a))&amp;&amp;a[1].replace(/_/g,".")):goog.labs.userAgent.platform.isMacintosh()?(b=/Mac OS X ([0-9_.]+)/,b=(a=b.exec(a))?a[1].replace(/_/g,"."):"10"):goog.labs.userAgent.platform.isAndroid()?(b=/Android\s+([^\);]+)(\)|;)/,&#xD;	b=(a=b.exec(a))&amp;&amp;a[1]):goog.labs.userAgent.platform.isChromeOS()&amp;&amp;(b=/(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/,b=(a=b.exec(a))&amp;&amp;a[1]);return b||""};goog.labs.userAgent.platform.isVersionOrHigher=function(a){return 0&lt;=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),a)};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.objectProperty=function(a,b){return a};goog.reflect.sinkValue=function(a){goog.reflect.sinkValue[" "](a);return a};goog.reflect.sinkValue[" "]=goog.nullFunction;goog.reflect.canAccessProperty=function(a,b){try{return goog.reflect.sinkValue(a[b]),!0}catch(c){}return!1};goog.reflect.cache=function(a,b,c,d){d=d?d(b):b;return Object.prototype.hasOwnProperty.call(a,d)?a[d]:a[d]=c(b)};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_EDGE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_ANY_VERSION=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()};&#xD;	goog.userAgent.getNavigator=function(){return goog.global.navigator||null};goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera();goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE();goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge();goog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;&#xD;	goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko();goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit();goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&amp;&amp;goog.labs.userAgent.util.matchUserAgent("Mobile")};goog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_();goog.userAgent.SAFARI=goog.userAgent.WEBKIT;&#xD;	goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigator();return a&amp;&amp;a.platform||""};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.ASSUME_ANDROID=!1;goog.userAgent.ASSUME_IPHONE=!1;goog.userAgent.ASSUME_IPAD=!1;goog.userAgent.ASSUME_IPOD=!1;&#xD;	goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD;goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh();goog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows();&#xD;	goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()};goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_();goog.userAgent.isX11_=function(){var a=goog.userAgent.getNavigator();return!!a&amp;&amp;goog.string.contains(a.appVersion||"","X11")};goog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_();&#xD;	goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid();goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone();goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();goog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod();&#xD;	goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos();goog.userAgent.determineVersion_=function(){var a="",b=goog.userAgent.getVersionRegexResult_();b&amp;&amp;(a=b?b[1]:"");return goog.userAgent.IE&amp;&amp;(b=goog.userAgent.getDocumentMode_(),null!=b&amp;&amp;b&gt;parseFloat(a))?String(b):a};&#xD;	goog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv\:([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\/([\d\.]+)/.exec(a);if(goog.userAgent.IE)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\/(\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \/]?(\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};&#xD;	goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={};goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,a,function(){return 0&lt;=goog.string.compareVersions(goog.userAgent.VERSION,a)})};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;&#xD;	goog.userAgent.isDocumentModeOrHigher=function(a){return Number(goog.userAgent.DOCUMENT_MODE)&gt;=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher;goog.userAgent.DOCUMENT_MODE=function(){var a=goog.global.document,b=goog.userAgent.getDocumentMode_();if(a&amp;&amp;goog.userAgent.IE)return b||("CSS1Compat"==a.compatMode?parseInt(goog.userAgent.VERSION,10):5)}();goog.events={};&#xD;	goog.events.BrowserFeature={HAS_W3C_BUTTON:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("9"),HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT||goog.userAgent.isVersionOrHigher("528"),HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO&amp;&amp;goog.userAgent.isVersionOrHigher("1.9b")||goog.userAgent.IE&amp;&amp;goog.userAgent.isVersionOrHigher("8")||&#xD;	goog.userAgent.OPERA&amp;&amp;goog.userAgent.isVersionOrHigher("9.5")||goog.userAgent.WEBKIT&amp;&amp;goog.userAgent.isVersionOrHigher("528"),HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO&amp;&amp;!goog.userAgent.isVersionOrHigher("8")||goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("9"),TOUCH_ENABLED:"ontouchstart"in goog.global||!!(goog.global.document&amp;&amp;document.documentElement&amp;&amp;"ontouchstart"in document.documentElement)||!(!goog.global.navigator||!goog.global.navigator.msMaxTouchPoints)};goog.disposable={};goog.disposable.IDisposable=function(){};goog.disposable.IDisposable.prototype.dispose=goog.abstractMethod;goog.disposable.IDisposable.prototype.isDisposed=goog.abstractMethod;goog.Disposable=function(){goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF&amp;&amp;(goog.Disposable.INCLUDE_STACK_ON_CREATION&amp;&amp;(this.creationStack=Error().stack),goog.Disposable.instances_[goog.getUid(this)]=this);this.disposed_=this.disposed_;this.onDisposeCallbacks_=this.onDisposeCallbacks_};goog.Disposable.MonitoringMode={OFF:0,PERMANENT:1,INTERACTIVE:2};goog.Disposable.MONITORING_MODE=0;goog.Disposable.INCLUDE_STACK_ON_CREATION=!0;goog.Disposable.instances_={};&#xD;	goog.Disposable.getUndisposedObjects=function(){var a=[],b;for(b in goog.Disposable.instances_)goog.Disposable.instances_.hasOwnProperty(b)&amp;&amp;a.push(goog.Disposable.instances_[Number(b)]);return a};goog.Disposable.clearUndisposedObjects=function(){goog.Disposable.instances_={}};goog.Disposable.prototype.disposed_=!1;goog.Disposable.prototype.isDisposed=function(){return this.disposed_};goog.Disposable.prototype.getDisposed=goog.Disposable.prototype.isDisposed;&#xD;	goog.Disposable.prototype.dispose=function(){if(!this.disposed_&amp;&amp;(this.disposed_=!0,this.disposeInternal(),goog.Disposable.MONITORING_MODE!=goog.Disposable.MonitoringMode.OFF)){var a=goog.getUid(this);if(goog.Disposable.MONITORING_MODE==goog.Disposable.MonitoringMode.PERMANENT&amp;&amp;!goog.Disposable.instances_.hasOwnProperty(a))throw Error(this+" did not call the goog.Disposable base constructor or was disposed of after a clearUndisposedObjects call");delete goog.Disposable.instances_[a]}};&#xD;	goog.Disposable.prototype.registerDisposable=function(a){this.addOnDisposeCallback(goog.partial(goog.dispose,a))};goog.Disposable.prototype.addOnDisposeCallback=function(a,b){this.disposed_?goog.isDef(b)?a.call(b):a():(this.onDisposeCallbacks_||(this.onDisposeCallbacks_=[]),this.onDisposeCallbacks_.push(goog.isDef(b)?goog.bind(a,b):a))};goog.Disposable.prototype.disposeInternal=function(){if(this.onDisposeCallbacks_)for(;this.onDisposeCallbacks_.length;)this.onDisposeCallbacks_.shift()()};&#xD;	goog.Disposable.isDisposed=function(a){return a&amp;&amp;"function"==typeof a.isDisposed?a.isDisposed():!1};goog.dispose=function(a){a&amp;&amp;"function"==typeof a.dispose&amp;&amp;a.dispose()};goog.disposeAll=function(a){for(var b=0,c=arguments.length;b&lt;c;++b){var d=arguments[b];goog.isArrayLike(d)?goog.disposeAll.apply(null,d):goog.dispose(d)}};goog.events.EventId=function(a){this.id=a};goog.events.EventId.prototype.toString=function(){return this.id};goog.events.Event=function(a,b){this.type=a instanceof goog.events.EventId?String(a):a;this.currentTarget=this.target=b;this.defaultPrevented=this.propagationStopped_=!1;this.returnValue_=!0};goog.events.Event.prototype.stopPropagation=function(){this.propagationStopped_=!0};goog.events.Event.prototype.preventDefault=function(){this.defaultPrevented=!0;this.returnValue_=!1};goog.events.Event.stopPropagation=function(a){a.stopPropagation()};goog.events.Event.preventDefault=function(a){a.preventDefault()};goog.events.getVendorPrefixedName_=function(a){return goog.userAgent.WEBKIT?"webkit"+a:goog.userAgent.OPERA?"o"+a.toLowerCase():a.toLowerCase()};&#xD;	goog.events.EventType={CLICK:"click",RIGHTCLICK:"rightclick",DBLCLICK:"dblclick",MOUSEDOWN:"mousedown",MOUSEUP:"mouseup",MOUSEOVER:"mouseover",MOUSEOUT:"mouseout",MOUSEMOVE:"mousemove",MOUSEENTER:"mouseenter",MOUSELEAVE:"mouseleave",SELECTIONCHANGE:"selectionchange",SELECTSTART:"selectstart",WHEEL:"wheel",KEYPRESS:"keypress",KEYDOWN:"keydown",KEYUP:"keyup",BLUR:"blur",FOCUS:"focus",DEACTIVATE:"deactivate",FOCUSIN:goog.userAgent.IE?"focusin":"DOMFocusIn",FOCUSOUT:goog.userAgent.IE?"focusout":"DOMFocusOut",&#xD;	CHANGE:"change",RESET:"reset",SELECT:"select",SUBMIT:"submit",INPUT:"input",PROPERTYCHANGE:"propertychange",DRAGSTART:"dragstart",DRAG:"drag",DRAGENTER:"dragenter",DRAGOVER:"dragover",DRAGLEAVE:"dragleave",DROP:"drop",DRAGEND:"dragend",TOUCHSTART:"touchstart",TOUCHMOVE:"touchmove",TOUCHEND:"touchend",TOUCHCANCEL:"touchcancel",BEFOREUNLOAD:"beforeunload",CONSOLEMESSAGE:"consolemessage",CONTEXTMENU:"contextmenu",DEVICEMOTION:"devicemotion",DEVICEORIENTATION:"deviceorientation",DOMCONTENTLOADED:"DOMContentLoaded",&#xD;	ERROR:"error",HELP:"help",LOAD:"load",LOSECAPTURE:"losecapture",ORIENTATIONCHANGE:"orientationchange",READYSTATECHANGE:"readystatechange",RESIZE:"resize",SCROLL:"scroll",UNLOAD:"unload",CANPLAY:"canplay",CANPLAYTHROUGH:"canplaythrough",DURATIONCHANGE:"durationchange",EMPTIED:"emptied",ENDED:"ended",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",PAUSE:"pause",PLAY:"play",PLAYING:"playing",RATECHANGE:"ratechange",SEEKED:"seeked",SEEKING:"seeking",STALLED:"stalled",SUSPEND:"suspend",TIMEUPDATE:"timeupdate",&#xD;	VOLUMECHANGE:"volumechange",WAITING:"waiting",SOURCEOPEN:"sourceopen",SOURCEENDED:"sourceended",SOURCECLOSED:"sourceclosed",ABORT:"abort",UPDATE:"update",UPDATESTART:"updatestart",UPDATEEND:"updateend",HASHCHANGE:"hashchange",PAGEHIDE:"pagehide",PAGESHOW:"pageshow",POPSTATE:"popstate",COPY:"copy",PASTE:"paste",CUT:"cut",BEFORECOPY:"beforecopy",BEFORECUT:"beforecut",BEFOREPASTE:"beforepaste",ONLINE:"online",OFFLINE:"offline",MESSAGE:"message",CONNECT:"connect",INSTALL:"install",ACTIVATE:"activate",&#xD;	FETCH:"fetch",FOREIGNFETCH:"foreignfetch",MESSAGEERROR:"messageerror",STATECHANGE:"statechange",UPDATEFOUND:"updatefound",CONTROLLERCHANGE:"controllerchange",ANIMATIONSTART:goog.events.getVendorPrefixedName_("AnimationStart"),ANIMATIONEND:goog.events.getVendorPrefixedName_("AnimationEnd"),ANIMATIONITERATION:goog.events.getVendorPrefixedName_("AnimationIteration"),TRANSITIONEND:goog.events.getVendorPrefixedName_("TransitionEnd"),POINTERDOWN:"pointerdown",POINTERUP:"pointerup",POINTERCANCEL:"pointercancel",&#xD;	POINTERMOVE:"pointermove",POINTEROVER:"pointerover",POINTEROUT:"pointerout",POINTERENTER:"pointerenter",POINTERLEAVE:"pointerleave",GOTPOINTERCAPTURE:"gotpointercapture",LOSTPOINTERCAPTURE:"lostpointercapture",MSGESTURECHANGE:"MSGestureChange",MSGESTUREEND:"MSGestureEnd",MSGESTUREHOLD:"MSGestureHold",MSGESTURESTART:"MSGestureStart",MSGESTURETAP:"MSGestureTap",MSGOTPOINTERCAPTURE:"MSGotPointerCapture",MSINERTIASTART:"MSInertiaStart",MSLOSTPOINTERCAPTURE:"MSLostPointerCapture",MSPOINTERCANCEL:"MSPointerCancel",&#xD;	MSPOINTERDOWN:"MSPointerDown",MSPOINTERENTER:"MSPointerEnter",MSPOINTERHOVER:"MSPointerHover",MSPOINTERLEAVE:"MSPointerLeave",MSPOINTERMOVE:"MSPointerMove",MSPOINTEROUT:"MSPointerOut",MSPOINTEROVER:"MSPointerOver",MSPOINTERUP:"MSPointerUp",TEXT:"text",TEXTINPUT:goog.userAgent.IE?"textinput":"textInput",COMPOSITIONSTART:"compositionstart",COMPOSITIONUPDATE:"compositionupdate",COMPOSITIONEND:"compositionend",BEFOREINPUT:"beforeinput",EXIT:"exit",LOADABORT:"loadabort",LOADCOMMIT:"loadcommit",LOADREDIRECT:"loadredirect",&#xD;	LOADSTART:"loadstart",LOADSTOP:"loadstop",RESPONSIVE:"responsive",SIZECHANGED:"sizechanged",UNRESPONSIVE:"unresponsive",VISIBILITYCHANGE:"visibilitychange",STORAGE:"storage",DOMSUBTREEMODIFIED:"DOMSubtreeModified",DOMNODEINSERTED:"DOMNodeInserted",DOMNODEREMOVED:"DOMNodeRemoved",DOMNODEREMOVEDFROMDOCUMENT:"DOMNodeRemovedFromDocument",DOMNODEINSERTEDINTODOCUMENT:"DOMNodeInsertedIntoDocument",DOMATTRMODIFIED:"DOMAttrModified",DOMCHARACTERDATAMODIFIED:"DOMCharacterDataModified",BEFOREPRINT:"beforeprint",&#xD;	AFTERPRINT:"afterprint"};goog.events.BrowserEvent=function(a,b){goog.events.Event.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.key="";this.charCode=this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.platformModifierKey=!1;this.event_=null;a&amp;&amp;this.init(a,b)};goog.inherits(goog.events.BrowserEvent,goog.events.Event);&#xD;	goog.events.BrowserEvent.MouseButton={LEFT:0,MIDDLE:1,RIGHT:2};goog.events.BrowserEvent.IEButtonMap=[1,4,2];&#xD;	goog.events.BrowserEvent.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;var e=a.relatedTarget;e?goog.userAgent.GECKO&amp;&amp;(goog.reflect.canAccessProperty(e,"nodeName")||(e=null)):c==goog.events.EventType.MOUSEOVER?e=a.fromElement:c==goog.events.EventType.MOUSEOUT&amp;&amp;(e=a.toElement);this.relatedTarget=e;goog.isNull(d)?(this.offsetX=goog.userAgent.WEBKIT||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=&#xD;	goog.userAgent.WEBKIT||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.key=a.key||"";this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=&#xD;	a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.platformModifierKey=goog.userAgent.MAC?a.metaKey:a.ctrlKey;this.state=a.state;this.event_=a;a.defaultPrevented&amp;&amp;this.preventDefault()};goog.events.BrowserEvent.prototype.isButton=function(a){return goog.events.BrowserFeature.HAS_W3C_BUTTON?this.event_.button==a:"click"==this.type?a==goog.events.BrowserEvent.MouseButton.LEFT:!!(this.event_.button&amp;goog.events.BrowserEvent.IEButtonMap[a])};&#xD;	goog.events.BrowserEvent.prototype.isMouseActionButton=function(){return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT)&amp;&amp;!(goog.userAgent.WEBKIT&amp;&amp;goog.userAgent.MAC&amp;&amp;this.ctrlKey)};goog.events.BrowserEvent.prototype.stopPropagation=function(){goog.events.BrowserEvent.superClass_.stopPropagation.call(this);this.event_.stopPropagation?this.event_.stopPropagation():this.event_.cancelBubble=!0};&#xD;	goog.events.BrowserEvent.prototype.preventDefault=function(){goog.events.BrowserEvent.superClass_.preventDefault.call(this);var a=this.event_;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT)try{if(a.ctrlKey||112&lt;=a.keyCode&amp;&amp;123&gt;=a.keyCode)a.keyCode=-1}catch(b){}};goog.events.BrowserEvent.prototype.getBrowserEvent=function(){return this.event_};goog.events.Listenable=function(){};goog.events.Listenable.IMPLEMENTED_BY_PROP="closure_listenable_"+(1E6*Math.random()|0);goog.events.Listenable.addImplementation=function(a){a.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP]=!0};goog.events.Listenable.isImplementedBy=function(a){return!(!a||!a[goog.events.Listenable.IMPLEMENTED_BY_PROP])};goog.events.ListenableKey=function(){};goog.events.ListenableKey.counter_=0;goog.events.ListenableKey.reserveKey=function(){return++goog.events.ListenableKey.counter_};goog.events.Listener=function(a,b,c,d,e,f){goog.events.Listener.ENABLE_MONITORING&amp;&amp;(this.creationStack=Error().stack);this.listener=a;this.proxy=b;this.src=c;this.type=d;this.capture=!!e;this.handler=f;this.key=goog.events.ListenableKey.reserveKey();this.removed=this.callOnce=!1};goog.events.Listener.ENABLE_MONITORING=!1;goog.events.Listener.prototype.markAsRemoved=function(){this.removed=!0;this.handler=this.src=this.proxy=this.listener=null};goog.events.ListenerMap=function(a){this.src=a;this.listeners={};this.typeCount_=0};goog.events.ListenerMap.prototype.getTypeCount=function(){return this.typeCount_};goog.events.ListenerMap.prototype.getListenerCount=function(){var a=0,b;for(b in this.listeners)a+=this.listeners[b].length;return a};&#xD;	goog.events.ListenerMap.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.listeners[f];a||(a=this.listeners[f]=[],this.typeCount_++);var g=goog.events.ListenerMap.findListenerIndex_(a,b,d,e);-1&lt;g?(b=a[g],c||(b.callOnce=!1)):(b=new goog.events.Listener(b,null,this.src,f,!!d,e),b.callOnce=c,a.push(b));return b};&#xD;	goog.events.ListenerMap.prototype.remove=function(a,b,c,d){a=a.toString();if(!(a in this.listeners))return!1;var e=this.listeners[a];b=goog.events.ListenerMap.findListenerIndex_(e,b,c,d);return-1&lt;b?(e[b].markAsRemoved(),goog.array.removeAt(e,b),0==e.length&amp;&amp;(delete this.listeners[a],this.typeCount_--),!0):!1};&#xD;	goog.events.ListenerMap.prototype.removeByKey=function(a){var b=a.type;if(!(b in this.listeners))return!1;var c=goog.array.remove(this.listeners[b],a);c&amp;&amp;(a.markAsRemoved(),0==this.listeners[b].length&amp;&amp;(delete this.listeners[b],this.typeCount_--));return c};goog.events.ListenerMap.prototype.removeAll=function(a){a=a&amp;&amp;a.toString();var b=0,c;for(c in this.listeners)if(!a||c==a){for(var d=this.listeners[c],e=0;e&lt;d.length;e++)++b,d[e].markAsRemoved();delete this.listeners[c];this.typeCount_--}return b};&#xD;	goog.events.ListenerMap.prototype.getListeners=function(a,b){var c=this.listeners[a.toString()],d=[];if(c)for(var e=0;e&lt;c.length;++e){var f=c[e];f.capture==b&amp;&amp;d.push(f)}return d};goog.events.ListenerMap.prototype.getListener=function(a,b,c,d){a=this.listeners[a.toString()];var e=-1;a&amp;&amp;(e=goog.events.ListenerMap.findListenerIndex_(a,b,c,d));return-1&lt;e?a[e]:null};&#xD;	goog.events.ListenerMap.prototype.hasListener=function(a,b){var c=goog.isDef(a),d=c?a.toString():"",e=goog.isDef(b);return goog.object.some(this.listeners,function(a,g){for(var f=0;f&lt;a.length;++f)if(!(c&amp;&amp;a[f].type!=d||e&amp;&amp;a[f].capture!=b))return!0;return!1})};goog.events.ListenerMap.findListenerIndex_=function(a,b,c,d){for(var e=0;e&lt;a.length;++e){var f=a[e];if(!f.removed&amp;&amp;f.listener==b&amp;&amp;f.capture==!!c&amp;&amp;f.handler==d)return e}return-1};goog.events.LISTENER_MAP_PROP_="closure_lm_"+(1E6*Math.random()|0);goog.events.onString_="on";goog.events.onStringMap_={};goog.events.CaptureSimulationMode={OFF_AND_FAIL:0,OFF_AND_SILENT:1,ON:2};goog.events.CAPTURE_SIMULATION_MODE=2;goog.events.listenerCountEstimate_=0;&#xD;	goog.events.listen=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f&lt;b.length;f++)goog.events.listen(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listen(b,c,d,e):goog.events.listen_(a,b,c,!1,d,e)};&#xD;	goog.events.listen_=function(a,b,c,d,e,f){if(!b)throw Error("Invalid event type");var g=!!e;if(g&amp;&amp;!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_FAIL)return goog.asserts.fail("Can not register capture listener in IE8-."),null;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.OFF_AND_SILENT)return null}var h=goog.events.getListenerMap_(a);h||(a[goog.events.LISTENER_MAP_PROP_]=h=new goog.events.ListenerMap(a));&#xD;	c=h.add(b,c,d,e,f);if(c.proxy)return c;d=goog.events.getProxy();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)a.addEventListener(b.toString(),d,g);else if(a.attachEvent)a.attachEvent(goog.events.getOnString_(b.toString()),d);else throw Error("addEventListener and attachEvent are unavailable.");goog.events.listenerCountEstimate_++;return c};&#xD;	goog.events.getProxy=function(){var a=goog.events.handleBrowserEvent_,b=goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b};&#xD;	goog.events.listenOnce=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f&lt;b.length;f++)goog.events.listenOnce(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);return goog.events.Listenable.isImplementedBy(a)?a.listenOnce(b,c,d,e):goog.events.listen_(a,b,c,!0,d,e)};goog.events.listenWithWrapper=function(a,b,c,d,e){b.listen(a,c,d,e)};&#xD;	goog.events.unlisten=function(a,b,c,d,e){if(goog.isArray(b)){for(var f=0;f&lt;b.length;f++)goog.events.unlisten(a,b[f],c,d,e);return null}c=goog.events.wrapListener(c);if(goog.events.Listenable.isImplementedBy(a))return a.unlisten(b,c,d,e);if(!a)return!1;d=!!d;if(a=goog.events.getListenerMap_(a))if(b=a.getListener(b,c,d,e))return goog.events.unlistenByKey(b);return!1};&#xD;	goog.events.unlistenByKey=function(a){if(goog.isNumber(a)||!a||a.removed)return!1;var b=a.src;if(goog.events.Listenable.isImplementedBy(b))return b.unlistenByKey(a);var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent&amp;&amp;b.detachEvent(goog.events.getOnString_(c),d);goog.events.listenerCountEstimate_--;(c=goog.events.getListenerMap_(b))?(c.removeByKey(a),0==c.getTypeCount()&amp;&amp;(c.src=null,b[goog.events.LISTENER_MAP_PROP_]=null)):a.markAsRemoved();return!0};&#xD;	goog.events.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e)};goog.events.removeAll=function(a,b){if(!a)return 0;if(goog.events.Listenable.isImplementedBy(a))return a.removeAllListeners(b);var c=goog.events.getListenerMap_(a);if(!c)return 0;var d=0,e=b&amp;&amp;b.toString(),f;for(f in c.listeners)if(!e||f==e)for(var g=c.listeners[f].concat(),h=0;h&lt;g.length;++h)goog.events.unlistenByKey(g[h])&amp;&amp;++d;return d};&#xD;	goog.events.getListeners=function(a,b,c){return goog.events.Listenable.isImplementedBy(a)?a.getListeners(b,c):a?(a=goog.events.getListenerMap_(a))?a.getListeners(b,c):[]:[]};goog.events.getListener=function(a,b,c,d,e){c=goog.events.wrapListener(c);d=!!d;return goog.events.Listenable.isImplementedBy(a)?a.getListener(b,c,d,e):a?(a=goog.events.getListenerMap_(a))?a.getListener(b,c,d,e):null:null};&#xD;	goog.events.hasListener=function(a,b,c){if(goog.events.Listenable.isImplementedBy(a))return a.hasListener(b,c);a=goog.events.getListenerMap_(a);return!!a&amp;&amp;a.hasListener(b,c)};goog.events.expose=function(a){var b=[],c;for(c in a)a[c]&amp;&amp;a[c].id?b.push(c+" = "+a[c]+" ("+a[c].id+")"):b.push(c+" = "+a[c]);return b.join("\n")};goog.events.getOnString_=function(a){return a in goog.events.onStringMap_?goog.events.onStringMap_[a]:goog.events.onStringMap_[a]=goog.events.onString_+a};&#xD;	goog.events.fireListeners=function(a,b,c,d){return goog.events.Listenable.isImplementedBy(a)?a.fireListeners(b,c,d):goog.events.fireListeners_(a,b,c,d)};goog.events.fireListeners_=function(a,b,c,d){var e=!0;if(a=goog.events.getListenerMap_(a))if(b=a.listeners[b.toString()])for(b=b.concat(),a=0;a&lt;b.length;a++){var f=b[a];f&amp;&amp;f.capture==c&amp;&amp;!f.removed&amp;&amp;(f=goog.events.fireListener(f,d),e=e&amp;&amp;!1!==f)}return e};&#xD;	goog.events.fireListener=function(a,b){var c=a.listener,d=a.handler||a.src;a.callOnce&amp;&amp;goog.events.unlistenByKey(a);return c.call(d,b)};goog.events.getTotalListenerCount=function(){return goog.events.listenerCountEstimate_};goog.events.dispatchEvent=function(a,b){goog.asserts.assert(goog.events.Listenable.isImplementedBy(a),"Can not use goog.events.dispatchEvent with non-goog.events.Listenable instance.");return a.dispatchEvent(b)};&#xD;	goog.events.protectBrowserEventEntryPoint=function(a){goog.events.handleBrowserEvent_=a.protectEntryPoint(goog.events.handleBrowserEvent_)};&#xD;	goog.events.handleBrowserEvent_=function(a,b){var c;if(a.removed)return!0;if(!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT){var d=b||goog.getObjectByName("window.event"),e=new goog.events.BrowserEvent(d,this),f=!0;if(goog.events.CAPTURE_SIMULATION_MODE==goog.events.CaptureSimulationMode.ON){if(!goog.events.isMarkedIeEvent_(d)){goog.events.markIeEvent_(d);d=[];for(c=e.currentTarget;c;c=c.parentNode)d.push(c);for(var g=a.type,h=d.length-1;!e.propagationStopped_&amp;&amp;0&lt;=h;h--)e.currentTarget=d[h],c=&#xD;	goog.events.fireListeners_(d[h],g,!0,e),f=f&amp;&amp;c;for(h=0;!e.propagationStopped_&amp;&amp;h&lt;d.length;h++)e.currentTarget=d[h],c=goog.events.fireListeners_(d[h],g,!1,e),f=f&amp;&amp;c}}else f=goog.events.fireListener(a,e);return f}return goog.events.fireListener(a,new goog.events.BrowserEvent(b,this))};goog.events.markIeEvent_=function(a){var b=!1;if(0==a.keyCode)try{a.keyCode=-1;return}catch(c){b=!0}if(b||void 0==a.returnValue)a.returnValue=!0};goog.events.isMarkedIeEvent_=function(a){return 0&gt;a.keyCode||void 0!=a.returnValue};&#xD;	goog.events.uniqueIdCounter_=0;goog.events.getUniqueId=function(a){return a+"_"+goog.events.uniqueIdCounter_++};goog.events.getListenerMap_=function(a){a=a[goog.events.LISTENER_MAP_PROP_];return a instanceof goog.events.ListenerMap?a:null};goog.events.LISTENER_WRAPPER_PROP_="__closure_events_fn_"+(1E9*Math.random()&gt;&gt;&gt;0);&#xD;	goog.events.wrapListener=function(a){goog.asserts.assert(a,"Listener can not be null.");if(goog.isFunction(a))return a;goog.asserts.assert(a.handleEvent,"An object listener must have handleEvent method.");a[goog.events.LISTENER_WRAPPER_PROP_]||(a[goog.events.LISTENER_WRAPPER_PROP_]=function(b){return a.handleEvent(b)});return a[goog.events.LISTENER_WRAPPER_PROP_]};goog.debug.entryPointRegistry.register(function(a){goog.events.handleBrowserEvent_=a(goog.events.handleBrowserEvent_)});goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0&gt;c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)&lt;=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};&#xD;	goog.math.standardAngleInRadians=function(a){return goog.math.modulo(a,2*Math.PI)};goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};&#xD;	goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180&lt;c?c-=360:-180&gt;=c&amp;&amp;(c=360+c);return c};goog.math.sign=function(a){return 0&lt;a?1:0&gt;a?-1:a};&#xD;	goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b,c){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h&lt;e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k&lt;f+1;k++)g[0][k]=0;for(h=1;h&lt;=e;h++)for(k=1;k&lt;=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0&lt;h&amp;&amp;0&lt;k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]&gt;g[h][k-1]?h--:k--;return l};&#xD;	goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2&gt;b)return 0;var c=goog.math.average.apply(null,arguments);return goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};&#xD;	goog.math.isInt=function(a){return isFinite(a)&amp;&amp;0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)};goog.math.isNegativeZero=function(a){return 0==a&amp;&amp;0&gt;1/a};goog.math.log10Floor=function(a){if(0&lt;a){var b=Math.round(Math.log(a)*Math.LOG10E);return b-(parseFloat("1e"+b)&gt;a?1:0)}return 0==a?-Infinity:NaN};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0&lt;b);return Math.floor(a+(b||2E-15))};&#xD;	goog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0&lt;b);return Math.ceil(a-(b||2E-15))};goog.dom.BrowserFeature={CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9),CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO&amp;&amp;!goog.userAgent.IE||goog.userAgent.IE&amp;&amp;goog.userAgent.isDocumentModeOrHigher(9)||goog.userAgent.GECKO&amp;&amp;goog.userAgent.isVersionOrHigher("1.9.1"),CAN_USE_INNER_TEXT:goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("9"),CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE||goog.userAgent.OPERA||goog.userAgent.WEBKIT,INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE,&#xD;	LEGACY_IE_RANGES:goog.userAgent.IE&amp;&amp;!goog.userAgent.isDocumentModeOrHigher(9)};goog.dom.HtmlElement=function(){};goog.dom.TagName=function(a){this.tagName_=a};goog.dom.TagName.prototype.toString=function(){return this.tagName_};goog.dom.TagName.A=new goog.dom.TagName("A");goog.dom.TagName.ABBR=new goog.dom.TagName("ABBR");goog.dom.TagName.ACRONYM=new goog.dom.TagName("ACRONYM");goog.dom.TagName.ADDRESS=new goog.dom.TagName("ADDRESS");goog.dom.TagName.APPLET=new goog.dom.TagName("APPLET");goog.dom.TagName.AREA=new goog.dom.TagName("AREA");goog.dom.TagName.ARTICLE=new goog.dom.TagName("ARTICLE");&#xD;	goog.dom.TagName.ASIDE=new goog.dom.TagName("ASIDE");goog.dom.TagName.AUDIO=new goog.dom.TagName("AUDIO");goog.dom.TagName.B=new goog.dom.TagName("B");goog.dom.TagName.BASE=new goog.dom.TagName("BASE");goog.dom.TagName.BASEFONT=new goog.dom.TagName("BASEFONT");goog.dom.TagName.BDI=new goog.dom.TagName("BDI");goog.dom.TagName.BDO=new goog.dom.TagName("BDO");goog.dom.TagName.BIG=new goog.dom.TagName("BIG");goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName("BLOCKQUOTE");goog.dom.TagName.BODY=new goog.dom.TagName("BODY");&#xD;	goog.dom.TagName.BR=new goog.dom.TagName("BR");goog.dom.TagName.BUTTON=new goog.dom.TagName("BUTTON");goog.dom.TagName.CANVAS=new goog.dom.TagName("CANVAS");goog.dom.TagName.CAPTION=new goog.dom.TagName("CAPTION");goog.dom.TagName.CENTER=new goog.dom.TagName("CENTER");goog.dom.TagName.CITE=new goog.dom.TagName("CITE");goog.dom.TagName.CODE=new goog.dom.TagName("CODE");goog.dom.TagName.COL=new goog.dom.TagName("COL");goog.dom.TagName.COLGROUP=new goog.dom.TagName("COLGROUP");&#xD;	goog.dom.TagName.COMMAND=new goog.dom.TagName("COMMAND");goog.dom.TagName.DATA=new goog.dom.TagName("DATA");goog.dom.TagName.DATALIST=new goog.dom.TagName("DATALIST");goog.dom.TagName.DD=new goog.dom.TagName("DD");goog.dom.TagName.DEL=new goog.dom.TagName("DEL");goog.dom.TagName.DETAILS=new goog.dom.TagName("DETAILS");goog.dom.TagName.DFN=new goog.dom.TagName("DFN");goog.dom.TagName.DIALOG=new goog.dom.TagName("DIALOG");goog.dom.TagName.DIR=new goog.dom.TagName("DIR");goog.dom.TagName.DIV=new goog.dom.TagName("DIV");&#xD;	goog.dom.TagName.DL=new goog.dom.TagName("DL");goog.dom.TagName.DT=new goog.dom.TagName("DT");goog.dom.TagName.EM=new goog.dom.TagName("EM");goog.dom.TagName.EMBED=new goog.dom.TagName("EMBED");goog.dom.TagName.FIELDSET=new goog.dom.TagName("FIELDSET");goog.dom.TagName.FIGCAPTION=new goog.dom.TagName("FIGCAPTION");goog.dom.TagName.FIGURE=new goog.dom.TagName("FIGURE");goog.dom.TagName.FONT=new goog.dom.TagName("FONT");goog.dom.TagName.FOOTER=new goog.dom.TagName("FOOTER");goog.dom.TagName.FORM=new goog.dom.TagName("FORM");&#xD;	goog.dom.TagName.FRAME=new goog.dom.TagName("FRAME");goog.dom.TagName.FRAMESET=new goog.dom.TagName("FRAMESET");goog.dom.TagName.H1=new goog.dom.TagName("H1");goog.dom.TagName.H2=new goog.dom.TagName("H2");goog.dom.TagName.H3=new goog.dom.TagName("H3");goog.dom.TagName.H4=new goog.dom.TagName("H4");goog.dom.TagName.H5=new goog.dom.TagName("H5");goog.dom.TagName.H6=new goog.dom.TagName("H6");goog.dom.TagName.HEAD=new goog.dom.TagName("HEAD");goog.dom.TagName.HEADER=new goog.dom.TagName("HEADER");&#xD;	goog.dom.TagName.HGROUP=new goog.dom.TagName("HGROUP");goog.dom.TagName.HR=new goog.dom.TagName("HR");goog.dom.TagName.HTML=new goog.dom.TagName("HTML");goog.dom.TagName.I=new goog.dom.TagName("I");goog.dom.TagName.IFRAME=new goog.dom.TagName("IFRAME");goog.dom.TagName.IMG=new goog.dom.TagName("IMG");goog.dom.TagName.INPUT=new goog.dom.TagName("INPUT");goog.dom.TagName.INS=new goog.dom.TagName("INS");goog.dom.TagName.ISINDEX=new goog.dom.TagName("ISINDEX");goog.dom.TagName.KBD=new goog.dom.TagName("KBD");&#xD;	goog.dom.TagName.KEYGEN=new goog.dom.TagName("KEYGEN");goog.dom.TagName.LABEL=new goog.dom.TagName("LABEL");goog.dom.TagName.LEGEND=new goog.dom.TagName("LEGEND");goog.dom.TagName.LI=new goog.dom.TagName("LI");goog.dom.TagName.LINK=new goog.dom.TagName("LINK");goog.dom.TagName.MAP=new goog.dom.TagName("MAP");goog.dom.TagName.MARK=new goog.dom.TagName("MARK");goog.dom.TagName.MATH=new goog.dom.TagName("MATH");goog.dom.TagName.MENU=new goog.dom.TagName("MENU");goog.dom.TagName.META=new goog.dom.TagName("META");&#xD;	goog.dom.TagName.METER=new goog.dom.TagName("METER");goog.dom.TagName.NAV=new goog.dom.TagName("NAV");goog.dom.TagName.NOFRAMES=new goog.dom.TagName("NOFRAMES");goog.dom.TagName.NOSCRIPT=new goog.dom.TagName("NOSCRIPT");goog.dom.TagName.OBJECT=new goog.dom.TagName("OBJECT");goog.dom.TagName.OL=new goog.dom.TagName("OL");goog.dom.TagName.OPTGROUP=new goog.dom.TagName("OPTGROUP");goog.dom.TagName.OPTION=new goog.dom.TagName("OPTION");goog.dom.TagName.OUTPUT=new goog.dom.TagName("OUTPUT");&#xD;	goog.dom.TagName.P=new goog.dom.TagName("P");goog.dom.TagName.PARAM=new goog.dom.TagName("PARAM");goog.dom.TagName.PRE=new goog.dom.TagName("PRE");goog.dom.TagName.PROGRESS=new goog.dom.TagName("PROGRESS");goog.dom.TagName.Q=new goog.dom.TagName("Q");goog.dom.TagName.RP=new goog.dom.TagName("RP");goog.dom.TagName.RT=new goog.dom.TagName("RT");goog.dom.TagName.RUBY=new goog.dom.TagName("RUBY");goog.dom.TagName.S=new goog.dom.TagName("S");goog.dom.TagName.SAMP=new goog.dom.TagName("SAMP");&#xD;	goog.dom.TagName.SCRIPT=new goog.dom.TagName("SCRIPT");goog.dom.TagName.SECTION=new goog.dom.TagName("SECTION");goog.dom.TagName.SELECT=new goog.dom.TagName("SELECT");goog.dom.TagName.SMALL=new goog.dom.TagName("SMALL");goog.dom.TagName.SOURCE=new goog.dom.TagName("SOURCE");goog.dom.TagName.SPAN=new goog.dom.TagName("SPAN");goog.dom.TagName.STRIKE=new goog.dom.TagName("STRIKE");goog.dom.TagName.STRONG=new goog.dom.TagName("STRONG");goog.dom.TagName.STYLE=new goog.dom.TagName("STYLE");&#xD;	goog.dom.TagName.SUB=new goog.dom.TagName("SUB");goog.dom.TagName.SUMMARY=new goog.dom.TagName("SUMMARY");goog.dom.TagName.SUP=new goog.dom.TagName("SUP");goog.dom.TagName.SVG=new goog.dom.TagName("SVG");goog.dom.TagName.TABLE=new goog.dom.TagName("TABLE");goog.dom.TagName.TBODY=new goog.dom.TagName("TBODY");goog.dom.TagName.TD=new goog.dom.TagName("TD");goog.dom.TagName.TEMPLATE=new goog.dom.TagName("TEMPLATE");goog.dom.TagName.TEXTAREA=new goog.dom.TagName("TEXTAREA");goog.dom.TagName.TFOOT=new goog.dom.TagName("TFOOT");&#xD;	goog.dom.TagName.TH=new goog.dom.TagName("TH");goog.dom.TagName.THEAD=new goog.dom.TagName("THEAD");goog.dom.TagName.TIME=new goog.dom.TagName("TIME");goog.dom.TagName.TITLE=new goog.dom.TagName("TITLE");goog.dom.TagName.TR=new goog.dom.TagName("TR");goog.dom.TagName.TRACK=new goog.dom.TagName("TRACK");goog.dom.TagName.TT=new goog.dom.TagName("TT");goog.dom.TagName.U=new goog.dom.TagName("U");goog.dom.TagName.UL=new goog.dom.TagName("UL");goog.dom.TagName.VAR=new goog.dom.TagName("VAR");&#xD;	goog.dom.TagName.VIDEO=new goog.dom.TagName("VIDEO");goog.dom.TagName.WBR=new goog.dom.TagName("WBR");goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};goog.string.TypedString=function(){};goog.string.Const=function(){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_="";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};&#xD;	goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"};goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&amp;&amp;a.constructor===goog.string.Const&amp;&amp;a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got &apos;"+a+"&apos;");return"type_error:Const"};&#xD;	goog.string.Const.from=function(a){return goog.string.Const.create__googStringSecurityPrivate_(a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.create__googStringSecurityPrivate_=function(a){var b=new goog.string.Const;b.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a;return b};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_="";this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0;goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeScript.fromConstant=function(a){a=goog.string.Const.unwrap(a);return 0===a.length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)};&#xD;	goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_};goog.DEBUG&amp;&amp;(goog.html.SafeScript.prototype.toString=function(){return"SafeScript{"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+"}"});&#xD;	goog.html.SafeScript.unwrap=function(a){if(a instanceof goog.html.SafeScript&amp;&amp;a.constructor===goog.html.SafeScript&amp;&amp;a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;goog.asserts.fail("expected object of type SafeScript, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:SafeScript"};goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a)};&#xD;	goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=a;return this};goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_="";this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};&#xD;	goog.html.SafeStyle.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyle.EMPTY;goog.html.SafeStyle.checkStyle_(a);goog.asserts.assert(goog.string.endsWith(a,";"),"Last character of style string is not &apos;;&apos;: "+a);goog.asserts.assert(goog.string.contains(a,":"),"Style string must contain at least one &apos;:&apos;, to specify a \"name: value\" pair: "+a);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};&#xD;	goog.html.SafeStyle.checkStyle_=function(a){goog.asserts.assert(!/[&lt;&gt;]/.test(a),"Forbidden characters in style string: "+a)};goog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_};goog.DEBUG&amp;&amp;(goog.html.SafeStyle.prototype.toString=function(){return"SafeStyle{"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+"}"});&#xD;	goog.html.SafeStyle.unwrap=function(a){if(a instanceof goog.html.SafeStyle&amp;&amp;a.constructor===goog.html.SafeStyle&amp;&amp;a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;goog.asserts.fail("expected object of type SafeStyle, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:SafeStyle"};goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a)};&#xD;	goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=a;return this};goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyle.INNOCUOUS_STRING="zClosurez";&#xD;	goog.html.SafeStyle.create=function(a){var b="",c;for(c in a){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error("Name allows only [-_a-zA-Z0-9], got: "+c);var d=a[c];null!=d&amp;&amp;(d instanceof goog.string.Const?(d=goog.string.Const.unwrap(d),goog.asserts.assert(!/[{;}]/.test(d),"Value does not allow [{;}].")):goog.html.SafeStyle.VALUE_RE_.test(d)?goog.html.SafeStyle.hasBalancedQuotes_(d)||(goog.asserts.fail("String value requires balanced quotes, got: "+d),d=goog.html.SafeStyle.INNOCUOUS_STRING):(goog.asserts.fail("String value allows only [-,.\"&apos;%_!# a-zA-Z0-9], rgb() and rgba(), got: "+&#xD;	d),d=goog.html.SafeStyle.INNOCUOUS_STRING),b+=c+":"+d+";")}if(!b)return goog.html.SafeStyle.EMPTY;goog.html.SafeStyle.checkStyle_(b);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeStyle.hasBalancedQuotes_=function(a){for(var b=!0,c=!0,d=0;d&lt;a.length;d++){var e=a.charAt(d);"&apos;"==e&amp;&amp;c?b=!b:&apos;"&apos;==e&amp;&amp;b&amp;&amp;(c=!c)}return b&amp;&amp;c};goog.html.SafeStyle.VALUE_RE_=/^([-,."&apos;%_!# a-zA-Z0-9]+|(?:rgb|hsl)a?\([0-9.%, ]+\))$/;&#xD;	goog.html.SafeStyle.concat=function(a){var b="",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyle.unwrap(a)};goog.array.forEach(arguments,c);return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_="";this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};&#xD;	goog.html.SafeStyleSheet.concat=function(a){var b="",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyleSheet.unwrap(a)};goog.array.forEach(arguments,c);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};&#xD;	goog.html.SafeStyleSheet.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyleSheet.EMPTY;goog.asserts.assert(!goog.string.contains(a,"&lt;"),"Forbidden &apos;&lt;&apos; character in style sheet string: "+a);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_};&#xD;	goog.DEBUG&amp;&amp;(goog.html.SafeStyleSheet.prototype.toString=function(){return"SafeStyleSheet{"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+"}"});&#xD;	goog.html.SafeStyleSheet.unwrap=function(a){if(a instanceof goog.html.SafeStyleSheet&amp;&amp;a.constructor===goog.html.SafeStyleSheet&amp;&amp;a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;goog.asserts.fail("expected object of type SafeStyleSheet, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"};&#xD;	goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a)};goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=a;return this};goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.getUrlObject_=function(){var a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn&apos;t seem to support blob URLs");};&#xD;	goog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&amp;&amp;goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&amp;&amp;goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.i18n={};goog.i18n.bidi={};goog.i18n.bidi.FORCE_RTL=!1;&#xD;	goog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||("ar"==goog.LOCALE.substring(0,2).toLowerCase()||"fa"==goog.LOCALE.substring(0,2).toLowerCase()||"he"==goog.LOCALE.substring(0,2).toLowerCase()||"iw"==goog.LOCALE.substring(0,2).toLowerCase()||"ps"==goog.LOCALE.substring(0,2).toLowerCase()||"sd"==goog.LOCALE.substring(0,2).toLowerCase()||"ug"==goog.LOCALE.substring(0,2).toLowerCase()||"ur"==goog.LOCALE.substring(0,2).toLowerCase()||"yi"==goog.LOCALE.substring(0,2).toLowerCase())&amp;&amp;(2==goog.LOCALE.length||&#xD;	"-"==goog.LOCALE.substring(2,3)||"_"==goog.LOCALE.substring(2,3))||3&lt;=goog.LOCALE.length&amp;&amp;"ckb"==goog.LOCALE.substring(0,3).toLowerCase()&amp;&amp;(3==goog.LOCALE.length||"-"==goog.LOCALE.substring(3,4)||"_"==goog.LOCALE.substring(3,4));goog.i18n.bidi.Format={LRE:"\u202a",RLE:"\u202b",PDF:"\u202c",LRM:"\u200e",RLM:"\u200f"};goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0};goog.i18n.bidi.RIGHT="right";goog.i18n.bidi.LEFT="left";goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT;&#xD;	goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT;goog.i18n.bidi.toDir=function(a,b){return"number"==typeof a?0&lt;a?goog.i18n.bidi.Dir.LTR:0&gt;a?goog.i18n.bidi.Dir.RTL:b?null:goog.i18n.bidi.Dir.NEUTRAL:null==a?null:a?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};goog.i18n.bidi.ltrChars_="A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0800-\u1fff\u200e\u2c00-\ufb1c\ufe00-\ufe6f\ufefd-\uffff";goog.i18n.bidi.rtlChars_="\u0591-\u06ef\u06fa-\u07ff\u200f\ufb1d-\ufdff\ufe70-\ufefc";&#xD;	goog.i18n.bidi.htmlSkipReg_=/&lt;[^&gt;]*&gt;|&amp;[^;]+;/g;goog.i18n.bidi.stripHtmlIfNeeded_=function(a,b){return b?a.replace(goog.i18n.bidi.htmlSkipReg_,""):a};goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.hasAnyRtl=function(a,b){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl;&#xD;	goog.i18n.bidi.hasAnyLtr=function(a,b){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.isRtlChar=function(a){return goog.i18n.bidi.rtlRe_.test(a)};goog.i18n.bidi.isLtrChar=function(a){return goog.i18n.bidi.ltrRe_.test(a)};goog.i18n.bidi.isNeutralChar=function(a){return!goog.i18n.bidi.isLtrChar(a)&amp;&amp;!goog.i18n.bidi.isRtlChar(a)};&#xD;	goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]");goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]");goog.i18n.bidi.startsWithRtl=function(a,b){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl;&#xD;	goog.i18n.bidi.startsWithLtr=function(a,b){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr;goog.i18n.bidi.isRequiredLtrRe_=/^http:\/\/.*/;goog.i18n.bidi.isNeutralText=function(a,b){a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b);return goog.i18n.bidi.isRequiredLtrRe_.test(a)||!goog.i18n.bidi.hasAnyLtr(a)&amp;&amp;!goog.i18n.bidi.hasAnyRtl(a)};&#xD;	goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$");goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$");goog.i18n.bidi.endsWithLtr=function(a,b){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr;&#xD;	goog.i18n.bidi.endsWithRtl=function(a,b){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl;goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;goog.i18n.bidi.isRtlLanguage=function(a){return goog.i18n.bidi.rtlLocalesRe_.test(a)};goog.i18n.bidi.bracketGuardTextRe_=/(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(&lt;.*?&gt;+)/g;&#xD;	goog.i18n.bidi.guardBracketInText=function(a,b){var c=(void 0===b?goog.i18n.bidi.hasAnyRtl(a):b)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM;return a.replace(goog.i18n.bidi.bracketGuardTextRe_,c+"$&amp;"+c)};goog.i18n.bidi.enforceRtlInHtml=function(a){return"&lt;"==a.charAt(0)?a.replace(/&lt;\w+/,"$&amp; dir=rtl"):"\n&lt;span dir=rtl&gt;"+a+"&lt;/span&gt;"};goog.i18n.bidi.enforceRtlInText=function(a){return goog.i18n.bidi.Format.RLE+a+goog.i18n.bidi.Format.PDF};&#xD;	goog.i18n.bidi.enforceLtrInHtml=function(a){return"&lt;"==a.charAt(0)?a.replace(/&lt;\w+/,"$&amp; dir=ltr"):"\n&lt;span dir=ltr&gt;"+a+"&lt;/span&gt;"};goog.i18n.bidi.enforceLtrInText=function(a){return goog.i18n.bidi.Format.LRE+a+goog.i18n.bidi.Format.PDF};goog.i18n.bidi.dimensionsRe_=/:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;goog.i18n.bidi.leftRe_=/left/gi;goog.i18n.bidi.rightRe_=/right/gi;goog.i18n.bidi.tempRe_=/%%%%/g;&#xD;	goog.i18n.bidi.mirrorCSS=function(a){return a.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)};goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\u0591-\u05f2])"/g;goog.i18n.bidi.singleQuoteSubstituteRe_=/([\u0591-\u05f2])&apos;/g;&#xD;	goog.i18n.bidi.normalizeHebrewQuote=function(a){return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1\u05f3")};goog.i18n.bidi.wordSeparatorRe_=/\s+/;goog.i18n.bidi.hasNumeralsRe_=/[\d\u06f0-\u06f9]/;goog.i18n.bidi.rtlDetectionThreshold_=.4;&#xD;	goog.i18n.bidi.estimateDirection=function(a,b){for(var c=0,d=0,e=!1,f=goog.i18n.bidi.stripHtmlIfNeeded_(a,b).split(goog.i18n.bidi.wordSeparatorRe_),g=0;g&lt;f.length;g++){var h=f[g];goog.i18n.bidi.startsWithRtl(h)?(c++,d++):goog.i18n.bidi.isRequiredLtrRe_.test(h)?e=!0:goog.i18n.bidi.hasAnyLtr(h)?d++:goog.i18n.bidi.hasNumeralsRe_.test(h)&amp;&amp;(e=!0)}return 0==d?e?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:c/d&gt;goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};&#xD;	goog.i18n.bidi.detectRtlDirectionality=function(a,b){return goog.i18n.bidi.estimateDirection(a,b)==goog.i18n.bidi.Dir.RTL};goog.i18n.bidi.setElementDirAndAlign=function(a,b){a&amp;&amp;(b=goog.i18n.bidi.toDir(b))&amp;&amp;(a.style.textAlign=b==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,a.dir=b==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")};&#xD;	goog.i18n.bidi.setElementDirByTextDirectionality=function(a,b){switch(goog.i18n.bidi.estimateDirection(b)){case goog.i18n.bidi.Dir.LTR:a.dir="ltr";break;case goog.i18n.bidi.Dir.RTL:a.dir="rtl";break;default:a.removeAttribute("dir")}};goog.i18n.bidi.DirectionalString=function(){};goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_="";this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_};&#xD;	goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&amp;&amp;(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"});&#xD;	goog.html.TrustedResourceUrl.unwrap=function(a){if(a instanceof goog.html.TrustedResourceUrl&amp;&amp;a.constructor===goog.html.TrustedResourceUrl&amp;&amp;a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};&#xD;	goog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);var d=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(a,d){if(!Object.prototype.hasOwnProperty.call(b,d))throw Error(&apos;Found marker, "&apos;+d+&apos;", in format string, "&apos;+c+&apos;", but no valid label mapping found in args: &apos;+JSON.stringify(b));var e=b[d];return e instanceof goog.string.Const?goog.string.Const.unwrap(e):&#xD;	encodeURIComponent(String(e))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(d)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=/^(?:https:)?\/\/[0-9a-z.:[\]-]+\/|^\/[^\/\\]|^about:blank(#|$)/i;goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};&#xD;	goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c&lt;a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.TrustedResourceUrl;b.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=a;return b};goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="";this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_};&#xD;	goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&amp;&amp;(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"});&#xD;	goog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&amp;&amp;a.constructor===goog.html.SafeUrl&amp;&amp;a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};&#xD;	goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm))$/i;goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SAFE_MIME_TYPE_PATTERN_.test(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:([^;,]*);base64,[a-z0-9+\/]+=*$/i;&#xD;	goog.html.SafeUrl.fromDataUrl=function(a){var b=a.match(goog.html.DATA_URL_PATTERN_),b=b&amp;&amp;goog.html.SAFE_MIME_TYPE_PATTERN_.test(b[1]);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b?a:goog.html.SafeUrl.INNOCUOUS_STRING)};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};&#xD;	goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.sanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);goog.html.SAFE_URL_PATTERN_.test(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};&#xD;	goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.SafeUrl;b.privateDoNotAccessOrElseSafeHtmlWrappedValue_=a;return b};goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_="";this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;this.dir_=null};goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_};goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0;goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_};&#xD;	goog.DEBUG&amp;&amp;(goog.html.SafeHtml.prototype.toString=function(){return"SafeHtml{"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+"}"});&#xD;	goog.html.SafeHtml.unwrap=function(a){if(a instanceof goog.html.SafeHtml&amp;&amp;a.constructor===goog.html.SafeHtml&amp;&amp;a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail("expected object of type SafeHtml, got &apos;"+a+"&apos; of type "+goog.typeOf(a));return"type_error:SafeHtml"};&#xD;	goog.html.SafeHtml.htmlEscape=function(a){if(a instanceof goog.html.SafeHtml)return a;var b=null;a.implementsGoogI18nBidiDirectionalString&amp;&amp;(b=a.getDirection());a=a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.htmlEscape(a),b)};&#xD;	goog.html.SafeHtml.htmlEscapePreservingNewlines=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.newLineToBr(goog.html.SafeHtml.unwrap(a)),a.getDirection())};&#xD;	goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.whitespaceEscape(goog.html.SafeHtml.unwrap(a)),a.getDirection())};goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape;goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/;&#xD;	goog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0};goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};goog.html.SafeHtml.create=function(a,b,c){goog.html.SafeHtml.verifyTagName(String(a));return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)};&#xD;	goog.html.SafeHtml.verifyTagName=function(a){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a))throw Error("Invalid tag name &lt;"+a+"&gt;.");if(a.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error("Tag name &lt;"+a+"&gt; is not allowed for SafeHtml.");};&#xD;	goog.html.SafeHtml.createIframe=function(a,b,c,d){a&amp;&amp;goog.html.TrustedResourceUrl.unwrap(a);var e={};e.src=a||null;e.srcdoc=b&amp;&amp;goog.html.SafeHtml.unwrap(b);a=goog.html.SafeHtml.combineAttributes(e,{sandbox:""},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)};&#xD;	goog.html.SafeHtml.createSandboxIframe=function(a,b,c,d){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error("The browser does not support sandboxed iframes.");var e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=goog.html.SafeHtml.combineAttributes(e,{},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)};&#xD;	goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&amp;&amp;"sandbox"in goog.global.HTMLIFrameElement.prototype};goog.html.SafeHtml.createScriptSrc=function(a,b){goog.html.TrustedResourceUrl.unwrap(a);var c=goog.html.SafeHtml.combineAttributes({src:a},{},b);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",c)};&#xD;	goog.html.SafeHtml.createScript=function(a,b){for(var c in b){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d||"type"==d)throw Error(&apos;Cannot set "&apos;+d+&apos;" attribute&apos;);}c="";a=goog.array.concat(a);for(d=0;d&lt;a.length;d++)c+=goog.html.SafeScript.unwrap(a[d]);c=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,c)};&#xD;	goog.html.SafeHtml.createStyle=function(a,b){var c=goog.html.SafeHtml.combineAttributes({type:"text/css"},{},b),d="";a=goog.array.concat(a);for(var e=0;e&lt;a.length;e++)d+=goog.html.SafeStyleSheet.unwrap(a[e]);d=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",c,d)};&#xD;	goog.html.SafeHtml.createMetaRefresh=function(a,b){var c=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&amp;&amp;goog.string.contains(c,";")&amp;&amp;(c="&apos;"+c.replace(/&apos;/g,"%27")+"&apos;");return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",{"http-equiv":"refresh",content:(b||0)+"; url="+c})};&#xD;	goog.html.SafeHtml.getAttrNameAndValue_=function(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())c=goog.html.SafeHtml.getStyleValue_(c);else{if(/^on/i.test(b))throw Error(&apos;Attribute "&apos;+b+&apos;" requires goog.string.Const value, "&apos;+c+&apos;" given.&apos;);if(b.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);&#xD;	else if(goog.isString(c))c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(&apos;Attribute "&apos;+b+&apos;" on tag "&apos;+a+&apos;" requires goog.html.SafeUrl, goog.string.Const, or string, value "&apos;+c+&apos;" given.&apos;);}c.implementsGoogStringTypedString&amp;&amp;(c=c.getTypedStringValue());goog.asserts.assert(goog.isString(c)||goog.isNumber(c),"String or number value expected, got "+typeof c+" with value: "+c);return b+&apos;="&apos;+goog.string.htmlEscape(String(c))+&apos;"&apos;};&#xD;	goog.html.SafeHtml.getStyleValue_=function(a){if(!goog.isObject(a))throw Error(&apos;The "style" attribute requires goog.html.SafeStyle or map of style properties, &apos;+typeof a+" given: "+a);a instanceof goog.html.SafeStyle||(a=goog.html.SafeStyle.create(a));return goog.html.SafeStyle.unwrap(a)};goog.html.SafeHtml.createWithDir=function(a,b,c,d){b=goog.html.SafeHtml.create(b,c,d);b.dir_=a;return b};&#xD;	goog.html.SafeHtml.concat=function(a){var b=goog.i18n.bidi.Dir.NEUTRAL,c="",d=function(a){goog.isArray(a)?goog.array.forEach(a,d):(a=goog.html.SafeHtml.htmlEscape(a),c+=goog.html.SafeHtml.unwrap(a),a=a.getDirection(),b==goog.i18n.bidi.Dir.NEUTRAL?b=a:a!=goog.i18n.bidi.Dir.NEUTRAL&amp;&amp;b!=a&amp;&amp;(b=null))};goog.array.forEach(arguments,d);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,b)};&#xD;	goog.html.SafeHtml.concatWithDir=function(a,b){var c=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));c.dir_=a;return c};goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(a,b){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a,b)};goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=a;this.dir_=b;return this};&#xD;	goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(a,b,c){var d=null;var e="&lt;"+a+goog.html.SafeHtml.stringifyAttributes(a,b);goog.isDefAndNotNull(c)?goog.isArray(c)||(c=[c]):c=[];goog.dom.tags.isVoidTag(a.toLowerCase())?(goog.asserts.assert(!c.length,"Void tag &lt;"+a+"&gt; does not allow content."),e+="&gt;"):(d=goog.html.SafeHtml.concat(c),e+="&gt;"+goog.html.SafeHtml.unwrap(d)+"&lt;/"+a+"&gt;",d=d.getDirection());(a=b&amp;&amp;b.dir)&amp;&amp;(d=/^(ltr|rtl|auto)$/i.test(a)?goog.i18n.bidi.Dir.NEUTRAL:&#xD;	null);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e,d)};goog.html.SafeHtml.stringifyAttributes=function(a,b){var c="";if(b)for(var d in b){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d))throw Error(&apos;Invalid attribute name "&apos;+d+&apos;".&apos;);var e=b[d];goog.isDefAndNotNull(e)&amp;&amp;(c+=" "+goog.html.SafeHtml.getAttrNameAndValue_(a,d,e))}return c};&#xD;	goog.html.SafeHtml.combineAttributes=function(a,b,c){var d={},e;for(e in a)goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e];for(e in b)goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=b[e];for(e in c){var f=e.toLowerCase();if(f in a)throw Error(&apos;Cannot override "&apos;+f+&apos;" attribute, got "&apos;+e+&apos;" with value "&apos;+c[e]+&apos;"&apos;);f in b&amp;&amp;delete d[f];d[e]=c[e]}return d};&#xD;	goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("&lt;!DOCTYPE html&gt;",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("&lt;br&gt;",goog.i18n.bidi.Dir.NEUTRAL);goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,goog.html.SafeHtml.unwrap(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};&#xD;	goog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}a.innerHTML=goog.html.SafeHtml.unwrap(b)};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=goog.html.SafeHtml.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=goog.html.SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(goog.html.SafeHtml.unwrap(b))};&#xD;	goog.dom.safe.setAnchorHref=function(a,b){goog.dom.safe.assertIsHTMLAnchorElement_(a);var c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.href=goog.html.SafeUrl.unwrap(c)};goog.dom.safe.setImageSrc=function(a,b){goog.dom.safe.assertIsHTMLImageElement_(a);var c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.src=goog.html.SafeUrl.unwrap(c)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.safe.assertIsHTMLEmbedElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};&#xD;	goog.dom.safe.setFrameSrc=function(a,b){goog.dom.safe.assertIsHTMLFrameElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrc=function(a,b){goog.dom.safe.assertIsHTMLIFrameElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.safe.assertIsHTMLIFrameElement_(a);a.srcdoc=goog.html.SafeHtml.unwrap(b)};&#xD;	goog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.safe.assertIsHTMLLinkElement_(a);a.rel=c;goog.string.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,&apos;URL must be TrustedResourceUrl because "rel" contains "stylesheet"&apos;),a.href=goog.html.TrustedResourceUrl.unwrap(b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.sanitize(b).getTypedStringValue()};&#xD;	goog.dom.safe.setObjectData=function(a,b){goog.dom.safe.assertIsHTMLObjectElement_(a);a.data=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.safe.assertIsHTMLScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setScriptContent=function(a,b){goog.dom.safe.assertIsHTMLScriptElement_(a);a.text=goog.html.SafeScript.unwrap(b)};&#xD;	goog.dom.safe.setLocationHref=function(a,b){goog.dom.safe.assertIsLocation_(a);var c=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitize(b);a.href=goog.html.SafeUrl.unwrap(c)};goog.dom.safe.openInWindow=function(a,b,c,d,e){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitize(a);return(b||window).open(goog.html.SafeUrl.unwrap(a),c?goog.string.Const.unwrap(c):"",d,e)};&#xD;	goog.dom.safe.assertIsLocation_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof Location&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof Location||!(a instanceof Element)),"Argument is not a Location (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLAnchorElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLAnchorElement&amp;&amp;"undefined"!=typeof Location&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLAnchorElement||!(a instanceof Location||a instanceof Element)),"Argument is not a HTMLAnchorElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLLinkElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLLinkElement&amp;&amp;"undefined"!=typeof Location&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLLinkElement||!(a instanceof Location||a instanceof Element)),"Argument is not a HTMLLinkElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLImageElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLImageElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLImageElement||!(a instanceof Element)),"Argument is not a HTMLImageElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLEmbedElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLEmbedElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLEmbedElement||!(a instanceof Element)),"Argument is not a HTMLEmbedElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLFrameElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLFrameElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLFrameElement||!(a instanceof Element)),"Argument is not a HTMLFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLIFrameElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLIFrameElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLIFrameElement||!(a instanceof Element)),"Argument is not a HTMLIFrameElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLObjectElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLObjectElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLObjectElement||!(a instanceof Element)),"Argument is not a HTMLObjectElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.assertIsHTMLScriptElement_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;"undefined"!=typeof HTMLScriptElement&amp;&amp;"undefined"!=typeof Element&amp;&amp;goog.asserts.assert(a&amp;&amp;(a instanceof HTMLScriptElement||!(a instanceof Element)),"Argument is not a HTMLScriptElement (or a non-Element mock); got: %s",goog.dom.safe.debugStringForType_(a));return a};&#xD;	goog.dom.safe.debugStringForType_=function(a){return goog.isObject(a)?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):void 0===a?"undefined":null===a?"null":typeof a};goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b,c){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b,c||null)};&#xD;	goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};&#xD;	goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};&#xD;	goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};&#xD;	goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};&#xD;	goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.math.Coordinate=function(a,b){this.x=goog.isDef(a)?a:0;this.y=goog.isDef(b)?b:0};goog.math.Coordinate.prototype.clone=function(){return new goog.math.Coordinate(this.x,this.y)};goog.DEBUG&amp;&amp;(goog.math.Coordinate.prototype.toString=function(){return"("+this.x+", "+this.y+")"});goog.math.Coordinate.prototype.equals=function(a){return a instanceof goog.math.Coordinate&amp;&amp;goog.math.Coordinate.equals(this,a)};goog.math.Coordinate.equals=function(a,b){return a==b?!0:a&amp;&amp;b?a.x==b.x&amp;&amp;a.y==b.y:!1};&#xD;	goog.math.Coordinate.distance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)};goog.math.Coordinate.magnitude=function(a){return Math.sqrt(a.x*a.x+a.y*a.y)};goog.math.Coordinate.azimuth=function(a){return goog.math.angle(0,0,a.x,a.y)};goog.math.Coordinate.squaredDistance=function(a,b){var c=a.x-b.x,d=a.y-b.y;return c*c+d*d};goog.math.Coordinate.difference=function(a,b){return new goog.math.Coordinate(a.x-b.x,a.y-b.y)};&#xD;	goog.math.Coordinate.sum=function(a,b){return new goog.math.Coordinate(a.x+b.x,a.y+b.y)};goog.math.Coordinate.prototype.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};goog.math.Coordinate.prototype.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};goog.math.Coordinate.prototype.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};&#xD;	goog.math.Coordinate.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.x+=a.x,this.y+=a.y):(this.x+=Number(a),goog.isNumber(b)&amp;&amp;(this.y+=b));return this};goog.math.Coordinate.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.x*=a;this.y*=c;return this};goog.math.Coordinate.prototype.rotateRadians=function(a,b){var c=b||new goog.math.Coordinate(0,0),d=this.x,e=this.y,f=Math.cos(a),g=Math.sin(a);this.x=(d-c.x)*f-(e-c.y)*g+c.x;this.y=(d-c.x)*g+(e-c.y)*f+c.y};&#xD;	goog.math.Coordinate.prototype.rotateDegrees=function(a,b){this.rotateRadians(goog.math.toRadians(a),b)};goog.math.Size=function(a,b){this.width=a;this.height=b};goog.math.Size.equals=function(a,b){return a==b?!0:a&amp;&amp;b?a.width==b.width&amp;&amp;a.height==b.height:!1};goog.math.Size.prototype.clone=function(){return new goog.math.Size(this.width,this.height)};goog.DEBUG&amp;&amp;(goog.math.Size.prototype.toString=function(){return"("+this.width+" x "+this.height+")"});goog.math.Size.prototype.getLongest=function(){return Math.max(this.width,this.height)};&#xD;	goog.math.Size.prototype.getShortest=function(){return Math.min(this.width,this.height)};goog.math.Size.prototype.area=function(){return this.width*this.height};goog.math.Size.prototype.perimeter=function(){return 2*(this.width+this.height)};goog.math.Size.prototype.aspectRatio=function(){return this.width/this.height};goog.math.Size.prototype.isEmpty=function(){return!this.area()};goog.math.Size.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};&#xD;	goog.math.Size.prototype.fitsInside=function(a){return this.width&lt;=a.width&amp;&amp;this.height&lt;=a.height};goog.math.Size.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};goog.math.Size.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Size.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.width*=a;this.height*=c;return this};&#xD;	goog.math.Size.prototype.scaleToCover=function(a){a=this.aspectRatio()&lt;=a.aspectRatio()?a.width/this.width:a.height/this.height;return this.scale(a)};goog.math.Size.prototype.scaleToFit=function(a){a=this.aspectRatio()&gt;a.aspectRatio()?a.width/this.width:a.height/this.height;return this.scale(a)};goog.dom.ASSUME_QUIRKS_MODE=!1;goog.dom.ASSUME_STANDARDS_MODE=!1;goog.dom.COMPAT_MODE_KNOWN_=goog.dom.ASSUME_QUIRKS_MODE||goog.dom.ASSUME_STANDARDS_MODE;goog.dom.getDomHelper=function(a){return a?new goog.dom.DomHelper(goog.dom.getOwnerDocument(a)):goog.dom.defaultDomHelper_||(goog.dom.defaultDomHelper_=new goog.dom.DomHelper)};goog.dom.getDocument=function(){return document};goog.dom.getElement=function(a){return goog.dom.getElementHelper_(document,a)};&#xD;	goog.dom.getElementHelper_=function(a,b){return goog.isString(b)?a.getElementById(b):b};goog.dom.getRequiredElement=function(a){return goog.dom.getRequiredElementHelper_(document,a)};goog.dom.getRequiredElementHelper_=function(a,b){goog.asserts.assertString(b);var c=goog.dom.getElementHelper_(a,b);return c=goog.asserts.assertElement(c,"No element found with id: "+b)};goog.dom.$=goog.dom.getElement;goog.dom.getElementsByTagName=function(a,b){return(b||document).getElementsByTagName(String(a))};&#xD;	goog.dom.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(document,a,b,c)};goog.dom.getElementsByClass=function(a,b){var c=b||document;return goog.dom.canUseQuerySelector_(c)?c.querySelectorAll("."+a):goog.dom.getElementsByTagNameAndClass_(document,"*",a,b)};&#xD;	goog.dom.getElementByClass=function(a,b){var c=b||document;return(c.getElementsByClassName?c.getElementsByClassName(a)[0]:goog.dom.canUseQuerySelector_(c)?c.querySelector("."+a):goog.dom.getElementsByTagNameAndClass_(document,"*",a,b)[0])||null};goog.dom.getRequiredElementByClass=function(a,b){var c=goog.dom.getElementByClass(a,b);return goog.asserts.assert(c,"No element found with className: "+a)};goog.dom.canUseQuerySelector_=function(a){return!(!a.querySelectorAll||!a.querySelector)};&#xD;	goog.dom.getElementsByTagNameAndClass_=function(a,b,c,d){a=d||a;var e=b&amp;&amp;"*"!=b?String(b).toUpperCase():"";if(goog.dom.canUseQuerySelector_(a)&amp;&amp;(e||c))return a.querySelectorAll(e+(c?"."+c:""));if(c&amp;&amp;a.getElementsByClassName){d=a.getElementsByClassName(c);if(e){a={};for(var f=b=0,g;g=d[f];f++)e==g.nodeName&amp;&amp;(a[b++]=g);a.length=b;return a}return d}d=a.getElementsByTagName(e||"*");if(c){a={};for(f=b=0;g=d[f];f++)e=g.className,"function"==typeof e.split&amp;&amp;goog.array.contains(e.split(/\s+/),c)&amp;&amp;(a[b++]=&#xD;	g);a.length=b;return a}return d};goog.dom.$$=goog.dom.getElementsByTagNameAndClass;goog.dom.setProperties=function(a,b){goog.object.forEach(b,function(b,d){b&amp;&amp;b.implementsGoogStringTypedString&amp;&amp;(b=b.getTypedStringValue());"style"==d?a.style.cssText=b:"class"==d?a.className=b:"for"==d?a.htmlFor=b:goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(d)?a.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[d],b):goog.string.startsWith(d,"aria-")||goog.string.startsWith(d,"data-")?a.setAttribute(d,b):a[d]=b})};&#xD;	goog.dom.DIRECT_ATTRIBUTE_MAP_={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};goog.dom.getViewportSize=function(a){return goog.dom.getViewportSize_(a||window)};goog.dom.getViewportSize_=function(a){a=a.document;a=goog.dom.isCss1CompatMode_(a)?a.documentElement:a.body;return new goog.math.Size(a.clientWidth,a.clientHeight)};&#xD;	goog.dom.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(window)};goog.dom.getDocumentHeightForWindow=function(a){return goog.dom.getDocumentHeight_(a)};&#xD;	goog.dom.getDocumentHeight_=function(a){var b=a.document,c=0;if(b){var c=b.body,d=b.documentElement;if(!d||!c)return 0;a=goog.dom.getViewportSize_(a).height;if(goog.dom.isCss1CompatMode_(b)&amp;&amp;d.scrollHeight)c=d.scrollHeight!=a?d.scrollHeight:d.offsetHeight;else{var b=d.scrollHeight,e=d.offsetHeight;d.clientHeight!=e&amp;&amp;(b=c.scrollHeight,e=c.offsetHeight);c=b&gt;a?b&gt;e?b:e:b&lt;e?b:e}}return c};goog.dom.getPageScroll=function(a){return goog.dom.getDomHelper((a||goog.global||window).document).getDocumentScroll()};&#xD;	goog.dom.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(document)};goog.dom.getDocumentScroll_=function(a){var b=goog.dom.getDocumentScrollElement_(a);a=goog.dom.getWindow_(a);return goog.userAgent.IE&amp;&amp;goog.userAgent.isVersionOrHigher("10")&amp;&amp;a.pageYOffset!=b.scrollTop?new goog.math.Coordinate(b.scrollLeft,b.scrollTop):new goog.math.Coordinate(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)};goog.dom.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(document)};&#xD;	goog.dom.getDocumentScrollElement_=function(a){return a.scrollingElement?a.scrollingElement:!goog.userAgent.WEBKIT&amp;&amp;goog.dom.isCss1CompatMode_(a)?a.documentElement:a.body||a.documentElement};goog.dom.getWindow=function(a){return a?goog.dom.getWindow_(a):window};goog.dom.getWindow_=function(a){return a.parentWindow||a.defaultView};goog.dom.createDom=function(a,b,c){return goog.dom.createDom_(document,arguments)};&#xD;	goog.dom.createDom_=function(a,b){var c=String(b[0]),d=b[1];if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES&amp;&amp;d&amp;&amp;(d.name||d.type)){c=["&lt;",c];d.name&amp;&amp;c.push(&apos; name="&apos;,goog.string.htmlEscape(d.name),&apos;"&apos;);if(d.type){c.push(&apos; type="&apos;,goog.string.htmlEscape(d.type),&apos;"&apos;);var e={};goog.object.extend(e,d);delete e.type;d=e}c.push("&gt;");c=c.join("")}c=a.createElement(c);d&amp;&amp;(goog.isString(d)?c.className=d:goog.isArray(d)?c.className=d.join(" "):goog.dom.setProperties(c,d));2&lt;b.length&amp;&amp;goog.dom.append_(a,&#xD;	c,b,2);return c};goog.dom.append_=function(a,b,c,d){function e(c){c&amp;&amp;b.appendChild(goog.isString(c)?a.createTextNode(c):c)}for(;d&lt;c.length;d++){var f=c[d];goog.isArrayLike(f)&amp;&amp;!goog.dom.isNodeLike(f)?goog.array.forEach(goog.dom.isNodeList(f)?goog.array.toArray(f):f,e):e(f)}};goog.dom.$dom=goog.dom.createDom;goog.dom.createElement=function(a){return goog.dom.createElement_(document,a)};goog.dom.createElement_=function(a,b){return a.createElement(String(b))};goog.dom.createTextNode=function(a){return document.createTextNode(String(a))};&#xD;	goog.dom.createTable=function(a,b,c){return goog.dom.createTable_(document,a,b,!!c)};goog.dom.createTable_=function(a,b,c,d){for(var e=goog.dom.createElement_(a,"TABLE"),f=e.appendChild(goog.dom.createElement_(a,"TBODY")),g=0;g&lt;b;g++){for(var h=goog.dom.createElement_(a,"TR"),k=0;k&lt;c;k++){var l=goog.dom.createElement_(a,"TD");d&amp;&amp;goog.dom.setTextContent(l,goog.string.Unicode.NBSP);h.appendChild(l)}f.appendChild(h)}return e};&#xD;	goog.dom.constHtmlToNode=function(a){var b=goog.array.map(arguments,goog.string.Const.unwrap),b=goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML string, that gets turned into a Node later, so it will be automatically balanced."),b.join(""));return goog.dom.safeHtmlToNode(b)};goog.dom.safeHtmlToNode=function(a){return goog.dom.safeHtmlToNode_(document,a)};&#xD;	goog.dom.safeHtmlToNode_=function(a,b){var c=goog.dom.createElement_(a,"DIV");goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT?(goog.dom.safe.setInnerHtml(c,goog.html.SafeHtml.concat(goog.html.SafeHtml.BR,b)),c.removeChild(c.firstChild)):goog.dom.safe.setInnerHtml(c,b);return goog.dom.childrenToNode_(a,c)};goog.dom.childrenToNode_=function(a,b){if(1==b.childNodes.length)return b.removeChild(b.firstChild);for(var c=a.createDocumentFragment();b.firstChild;)c.appendChild(b.firstChild);return c};&#xD;	goog.dom.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(document)};goog.dom.isCss1CompatMode_=function(a){return goog.dom.COMPAT_MODE_KNOWN_?goog.dom.ASSUME_STANDARDS_MODE:"CSS1Compat"==a.compatMode};goog.dom.canHaveChildren=function(a){if(a.nodeType!=goog.dom.NodeType.ELEMENT)return!1;switch(a.tagName){case "APPLET":case "AREA":case "BASE":case "BR":case "COL":case "COMMAND":case "EMBED":case "FRAME":case "HR":case "IMG":case "INPUT":case "IFRAME":case "ISINDEX":case "KEYGEN":case "LINK":case "NOFRAMES":case "NOSCRIPT":case "META":case "OBJECT":case "PARAM":case "SCRIPT":case "SOURCE":case "STYLE":case "TRACK":case "WBR":return!1}return!0};&#xD;	goog.dom.appendChild=function(a,b){a.appendChild(b)};goog.dom.append=function(a,b){goog.dom.append_(goog.dom.getOwnerDocument(a),a,arguments,1)};goog.dom.removeChildren=function(a){for(var b;b=a.firstChild;)a.removeChild(b)};goog.dom.insertSiblingBefore=function(a,b){b.parentNode&amp;&amp;b.parentNode.insertBefore(a,b)};goog.dom.insertSiblingAfter=function(a,b){b.parentNode&amp;&amp;b.parentNode.insertBefore(a,b.nextSibling)};goog.dom.insertChildAt=function(a,b,c){a.insertBefore(b,a.childNodes[c]||null)};&#xD;	goog.dom.removeNode=function(a){return a&amp;&amp;a.parentNode?a.parentNode.removeChild(a):null};goog.dom.replaceNode=function(a,b){var c=b.parentNode;c&amp;&amp;c.replaceChild(a,b)};goog.dom.flattenElement=function(a){var b,c=a.parentNode;if(c&amp;&amp;c.nodeType!=goog.dom.NodeType.DOCUMENT_FRAGMENT){if(a.removeNode)return a.removeNode(!1);for(;b=a.firstChild;)c.insertBefore(b,a);return goog.dom.removeNode(a)}};&#xD;	goog.dom.getChildren=function(a){return goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE&amp;&amp;void 0!=a.children?a.children:goog.array.filter(a.childNodes,function(a){return a.nodeType==goog.dom.NodeType.ELEMENT})};goog.dom.getFirstElementChild=function(a){return goog.isDef(a.firstElementChild)?a.firstElementChild:goog.dom.getNextElementNode_(a.firstChild,!0)};goog.dom.getLastElementChild=function(a){return goog.isDef(a.lastElementChild)?a.lastElementChild:goog.dom.getNextElementNode_(a.lastChild,!1)};&#xD;	goog.dom.getNextElementSibling=function(a){return goog.isDef(a.nextElementSibling)?a.nextElementSibling:goog.dom.getNextElementNode_(a.nextSibling,!0)};goog.dom.getPreviousElementSibling=function(a){return goog.isDef(a.previousElementSibling)?a.previousElementSibling:goog.dom.getNextElementNode_(a.previousSibling,!1)};goog.dom.getNextElementNode_=function(a,b){for(;a&amp;&amp;a.nodeType!=goog.dom.NodeType.ELEMENT;)a=b?a.nextSibling:a.previousSibling;return a};&#xD;	goog.dom.getNextNode=function(a){if(!a)return null;if(a.firstChild)return a.firstChild;for(;a&amp;&amp;!a.nextSibling;)a=a.parentNode;return a?a.nextSibling:null};goog.dom.getPreviousNode=function(a){if(!a)return null;if(!a.previousSibling)return a.parentNode;for(a=a.previousSibling;a&amp;&amp;a.lastChild;)a=a.lastChild;return a};goog.dom.isNodeLike=function(a){return goog.isObject(a)&amp;&amp;0&lt;a.nodeType};goog.dom.isElement=function(a){return goog.isObject(a)&amp;&amp;a.nodeType==goog.dom.NodeType.ELEMENT};&#xD;	goog.dom.isWindow=function(a){return goog.isObject(a)&amp;&amp;a.window==a};goog.dom.getParentElement=function(a){var b;if(goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY&amp;&amp;!(goog.userAgent.IE&amp;&amp;goog.userAgent.isVersionOrHigher("9")&amp;&amp;!goog.userAgent.isVersionOrHigher("10")&amp;&amp;goog.global.SVGElement&amp;&amp;a instanceof goog.global.SVGElement)&amp;&amp;(b=a.parentElement))return b;b=a.parentNode;return goog.dom.isElement(b)?b:null};&#xD;	goog.dom.contains=function(a,b){if(!a||!b)return!1;if(a.contains&amp;&amp;b.nodeType==goog.dom.NodeType.ELEMENT)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&amp;16);for(;b&amp;&amp;a!=b;)b=b.parentNode;return b==a};&#xD;	goog.dom.compareNodeOrder=function(a,b){if(a==b)return 0;if(a.compareDocumentPosition)return a.compareDocumentPosition(b)&amp;2?1:-1;if(goog.userAgent.IE&amp;&amp;!goog.userAgent.isDocumentModeOrHigher(9)){if(a.nodeType==goog.dom.NodeType.DOCUMENT)return-1;if(b.nodeType==goog.dom.NodeType.DOCUMENT)return 1}if("sourceIndex"in a||a.parentNode&amp;&amp;"sourceIndex"in a.parentNode){var c=a.nodeType==goog.dom.NodeType.ELEMENT,d=b.nodeType==goog.dom.NodeType.ELEMENT;if(c&amp;&amp;d)return a.sourceIndex-b.sourceIndex;var e=a.parentNode,&#xD;	f=b.parentNode;return e==f?goog.dom.compareSiblingOrder_(a,b):!c&amp;&amp;goog.dom.contains(e,b)?-1*goog.dom.compareParentsDescendantNodeIe_(a,b):!d&amp;&amp;goog.dom.contains(f,a)?goog.dom.compareParentsDescendantNodeIe_(b,a):(c?a.sourceIndex:e.sourceIndex)-(d?b.sourceIndex:f.sourceIndex)}d=goog.dom.getOwnerDocument(a);c=d.createRange();c.selectNode(a);c.collapse(!0);d=d.createRange();d.selectNode(b);d.collapse(!0);return c.compareBoundaryPoints(goog.global.Range.START_TO_END,d)};&#xD;	goog.dom.compareParentsDescendantNodeIe_=function(a,b){var c=a.parentNode;if(c==b)return-1;for(var d=b;d.parentNode!=c;)d=d.parentNode;return goog.dom.compareSiblingOrder_(d,a)};goog.dom.compareSiblingOrder_=function(a,b){for(var c=b;c=c.previousSibling;)if(c==a)return-1;return 1};&#xD;	goog.dom.findCommonAncestor=function(a){var b,c=arguments.length;if(!c)return null;if(1==c)return arguments[0];var d=[],e=Infinity;for(b=0;b&lt;c;b++){for(var f=[],g=arguments[b];g;)f.unshift(g),g=g.parentNode;d.push(f);e=Math.min(e,f.length)}f=null;for(b=0;b&lt;e;b++){for(var g=d[0][b],h=1;h&lt;c;h++)if(g!=d[h][b])return f;f=g}return f};goog.dom.getOwnerDocument=function(a){goog.asserts.assert(a,"Node cannot be null or undefined.");return a.nodeType==goog.dom.NodeType.DOCUMENT?a:a.ownerDocument||a.document};&#xD;	goog.dom.getFrameContentDocument=function(a){return a.contentDocument||a.contentWindow.document};goog.dom.getFrameContentWindow=function(a){try{return a.contentWindow||(a.contentDocument?goog.dom.getWindow(a.contentDocument):null)}catch(b){}return null};&#xD;	goog.dom.setTextContent=function(a,b){goog.asserts.assert(null!=a,"goog.dom.setTextContent expects a non-null value for node");if("textContent"in a)a.textContent=b;else if(a.nodeType==goog.dom.NodeType.TEXT)a.data=b;else if(a.firstChild&amp;&amp;a.firstChild.nodeType==goog.dom.NodeType.TEXT){for(;a.lastChild!=a.firstChild;)a.removeChild(a.lastChild);a.firstChild.data=b}else{goog.dom.removeChildren(a);var c=goog.dom.getOwnerDocument(a);a.appendChild(c.createTextNode(String(b)))}};&#xD;	goog.dom.getOuterHtml=function(a){goog.asserts.assert(null!==a,"goog.dom.getOuterHtml expects a non-null value for element");if("outerHTML"in a)return a.outerHTML;var b=goog.dom.getOwnerDocument(a),b=goog.dom.createElement_(b,"DIV");b.appendChild(a.cloneNode(!0));return b.innerHTML};goog.dom.findNode=function(a,b){var c=[];return goog.dom.findNodes_(a,b,c,!0)?c[0]:void 0};goog.dom.findNodes=function(a,b){var c=[];goog.dom.findNodes_(a,b,c,!1);return c};&#xD;	goog.dom.findNodes_=function(a,b,c,d){if(null!=a)for(a=a.firstChild;a;){if(b(a)&amp;&amp;(c.push(a),d)||goog.dom.findNodes_(a,b,c,d))return!0;a=a.nextSibling}return!1};goog.dom.TAGS_TO_IGNORE_={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1};goog.dom.PREDEFINED_TAG_VALUES_={IMG:" ",BR:"\n"};goog.dom.isFocusableTabIndex=function(a){return goog.dom.hasSpecifiedTabIndex_(a)&amp;&amp;goog.dom.isTabIndexFocusable_(a)};goog.dom.setFocusableTabIndex=function(a,b){b?a.tabIndex=0:(a.tabIndex=-1,a.removeAttribute("tabIndex"))};&#xD;	goog.dom.isFocusable=function(a){var b;return(b=goog.dom.nativelySupportsFocus_(a)?!a.disabled&amp;&amp;(!goog.dom.hasSpecifiedTabIndex_(a)||goog.dom.isTabIndexFocusable_(a)):goog.dom.isFocusableTabIndex(a))&amp;&amp;goog.userAgent.IE?goog.dom.hasNonZeroBoundingRect_(a):b};goog.dom.hasSpecifiedTabIndex_=function(a){return goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("9")?(a=a.getAttributeNode("tabindex"),goog.isDefAndNotNull(a)&amp;&amp;a.specified):a.hasAttribute("tabindex")};&#xD;	goog.dom.isTabIndexFocusable_=function(a){a=a.tabIndex;return goog.isNumber(a)&amp;&amp;0&lt;=a&amp;&amp;32768&gt;a};goog.dom.nativelySupportsFocus_=function(a){return"A"==a.tagName||"INPUT"==a.tagName||"TEXTAREA"==a.tagName||"SELECT"==a.tagName||"BUTTON"==a.tagName};goog.dom.hasNonZeroBoundingRect_=function(a){a=!goog.isFunction(a.getBoundingClientRect)||goog.userAgent.IE&amp;&amp;null==a.parentElement?{height:a.offsetHeight,width:a.offsetWidth}:a.getBoundingClientRect();return goog.isDefAndNotNull(a)&amp;&amp;0&lt;a.height&amp;&amp;0&lt;a.width};&#xD;	goog.dom.getTextContent=function(a){if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT&amp;&amp;null!==a&amp;&amp;"innerText"in a)a=goog.string.canonicalizeNewlines(a.innerText);else{var b=[];goog.dom.getTextContent_(a,b,!0);a=b.join("")}a=a.replace(/ \xAD /g," ").replace(/\xAD/g,"");a=a.replace(/\u200B/g,"");goog.dom.BrowserFeature.CAN_USE_INNER_TEXT||(a=a.replace(/ +/g," "));" "!=a&amp;&amp;(a=a.replace(/^\s*/,""));return a};goog.dom.getRawTextContent=function(a){var b=[];goog.dom.getTextContent_(a,b,!1);return b.join("")};&#xD;	goog.dom.getTextContent_=function(a,b,c){if(!(a.nodeName in goog.dom.TAGS_TO_IGNORE_))if(a.nodeType==goog.dom.NodeType.TEXT)c?b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):b.push(a.nodeValue);else if(a.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)b.push(goog.dom.PREDEFINED_TAG_VALUES_[a.nodeName]);else for(a=a.firstChild;a;)goog.dom.getTextContent_(a,b,c),a=a.nextSibling};goog.dom.getNodeTextLength=function(a){return goog.dom.getTextContent(a).length};&#xD;	goog.dom.getNodeTextOffset=function(a,b){for(var c=b||goog.dom.getOwnerDocument(a).body,d=[];a&amp;&amp;a!=c;){for(var e=a;e=e.previousSibling;)d.unshift(goog.dom.getTextContent(e));a=a.parentNode}return goog.string.trimLeft(d.join("")).replace(/ +/g," ").length};&#xD;	goog.dom.getNodeAtOffset=function(a,b,c){a=[a];for(var d=0,e=null;0&lt;a.length&amp;&amp;d&lt;b;)if(e=a.pop(),!(e.nodeName in goog.dom.TAGS_TO_IGNORE_))if(e.nodeType==goog.dom.NodeType.TEXT)var f=e.nodeValue.replace(/(\r\n|\r|\n)/g,"").replace(/ +/g," "),d=d+f.length;else if(e.nodeName in goog.dom.PREDEFINED_TAG_VALUES_)d+=goog.dom.PREDEFINED_TAG_VALUES_[e.nodeName].length;else for(f=e.childNodes.length-1;0&lt;=f;f--)a.push(e.childNodes[f]);goog.isObject(c)&amp;&amp;(c.remainder=e?e.nodeValue.length+b-d-1:0,c.node=e);return e};&#xD;	goog.dom.isNodeList=function(a){if(a&amp;&amp;"number"==typeof a.length){if(goog.isObject(a))return"function"==typeof a.item||"string"==typeof a.item;if(goog.isFunction(a))return"function"==typeof a.item}return!1};goog.dom.getAncestorByTagNameAndClass=function(a,b,c,d){if(!b&amp;&amp;!c)return null;var e=b?String(b).toUpperCase():null;return goog.dom.getAncestor(a,function(a){return(!e||a.nodeName==e)&amp;&amp;(!c||goog.isString(a.className)&amp;&amp;goog.array.contains(a.className.split(/\s+/),c))},!0,d)};&#xD;	goog.dom.getAncestorByClass=function(a,b,c){return goog.dom.getAncestorByTagNameAndClass(a,null,b,c)};goog.dom.getAncestor=function(a,b,c,d){a&amp;&amp;!c&amp;&amp;(a=a.parentNode);for(c=0;a&amp;&amp;(null==d||c&lt;=d);){goog.asserts.assert("parentNode"!=a.name);if(b(a))return a;a=a.parentNode;c++}return null};goog.dom.getActiveElement=function(a){try{return a&amp;&amp;a.activeElement}catch(b){}return null};&#xD;	goog.dom.getPixelRatio=function(){var a=goog.dom.getWindow();return goog.isDef(a.devicePixelRatio)?a.devicePixelRatio:a.matchMedia?goog.dom.matchesPixelRatio_(3)||goog.dom.matchesPixelRatio_(2)||goog.dom.matchesPixelRatio_(1.5)||goog.dom.matchesPixelRatio_(1)||.75:1};goog.dom.matchesPixelRatio_=function(a){return goog.dom.getWindow().matchMedia("(min-resolution: "+a+"dppx),(min--moz-device-pixel-ratio: "+a+"),(min-resolution: "+96*a+"dpi)").matches?a:0};goog.dom.getCanvasContext2D=function(a){return a.getContext("2d")};&#xD;	goog.dom.DomHelper=function(a){this.document_=a||goog.global.document||document};goog.dom.DomHelper.prototype.getDomHelper=goog.dom.getDomHelper;goog.dom.DomHelper.prototype.setDocument=function(a){this.document_=a};goog.dom.DomHelper.prototype.getDocument=function(){return this.document_};goog.dom.DomHelper.prototype.getElement=function(a){return goog.dom.getElementHelper_(this.document_,a)};&#xD;	goog.dom.DomHelper.prototype.getRequiredElement=function(a){return goog.dom.getRequiredElementHelper_(this.document_,a)};goog.dom.DomHelper.prototype.$=goog.dom.DomHelper.prototype.getElement;goog.dom.DomHelper.prototype.getElementsByTagName=function(a,b){return(b||this.document_).getElementsByTagName(String(a))};goog.dom.DomHelper.prototype.getElementsByTagNameAndClass=function(a,b,c){return goog.dom.getElementsByTagNameAndClass_(this.document_,a,b,c)};&#xD;	goog.dom.DomHelper.prototype.getElementsByClass=function(a,b){return goog.dom.getElementsByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.getElementByClass=function(a,b){return goog.dom.getElementByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.getRequiredElementByClass=function(a,b){return goog.dom.getRequiredElementByClass(a,b||this.document_)};goog.dom.DomHelper.prototype.$$=goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;&#xD;	goog.dom.DomHelper.prototype.setProperties=goog.dom.setProperties;goog.dom.DomHelper.prototype.getViewportSize=function(a){return goog.dom.getViewportSize(a||this.getWindow())};goog.dom.DomHelper.prototype.getDocumentHeight=function(){return goog.dom.getDocumentHeight_(this.getWindow())};goog.dom.DomHelper.prototype.createDom=function(a,b,c){return goog.dom.createDom_(this.document_,arguments)};goog.dom.DomHelper.prototype.$dom=goog.dom.DomHelper.prototype.createDom;&#xD;	goog.dom.DomHelper.prototype.createElement=function(a){return goog.dom.createElement_(this.document_,a)};goog.dom.DomHelper.prototype.createTextNode=function(a){return this.document_.createTextNode(String(a))};goog.dom.DomHelper.prototype.createTable=function(a,b,c){return goog.dom.createTable_(this.document_,a,b,!!c)};goog.dom.DomHelper.prototype.safeHtmlToNode=function(a){return goog.dom.safeHtmlToNode_(this.document_,a)};goog.dom.DomHelper.prototype.isCss1CompatMode=function(){return goog.dom.isCss1CompatMode_(this.document_)};&#xD;	goog.dom.DomHelper.prototype.getWindow=function(){return goog.dom.getWindow_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScrollElement=function(){return goog.dom.getDocumentScrollElement_(this.document_)};goog.dom.DomHelper.prototype.getDocumentScroll=function(){return goog.dom.getDocumentScroll_(this.document_)};goog.dom.DomHelper.prototype.getActiveElement=function(a){return goog.dom.getActiveElement(a||this.document_)};goog.dom.DomHelper.prototype.appendChild=goog.dom.appendChild;&#xD;	goog.dom.DomHelper.prototype.append=goog.dom.append;goog.dom.DomHelper.prototype.canHaveChildren=goog.dom.canHaveChildren;goog.dom.DomHelper.prototype.removeChildren=goog.dom.removeChildren;goog.dom.DomHelper.prototype.insertSiblingBefore=goog.dom.insertSiblingBefore;goog.dom.DomHelper.prototype.insertSiblingAfter=goog.dom.insertSiblingAfter;goog.dom.DomHelper.prototype.insertChildAt=goog.dom.insertChildAt;goog.dom.DomHelper.prototype.removeNode=goog.dom.removeNode;&#xD;	goog.dom.DomHelper.prototype.replaceNode=goog.dom.replaceNode;goog.dom.DomHelper.prototype.flattenElement=goog.dom.flattenElement;goog.dom.DomHelper.prototype.getChildren=goog.dom.getChildren;goog.dom.DomHelper.prototype.getFirstElementChild=goog.dom.getFirstElementChild;goog.dom.DomHelper.prototype.getLastElementChild=goog.dom.getLastElementChild;goog.dom.DomHelper.prototype.getNextElementSibling=goog.dom.getNextElementSibling;goog.dom.DomHelper.prototype.getPreviousElementSibling=goog.dom.getPreviousElementSibling;&#xD;	goog.dom.DomHelper.prototype.getNextNode=goog.dom.getNextNode;goog.dom.DomHelper.prototype.getPreviousNode=goog.dom.getPreviousNode;goog.dom.DomHelper.prototype.isNodeLike=goog.dom.isNodeLike;goog.dom.DomHelper.prototype.isElement=goog.dom.isElement;goog.dom.DomHelper.prototype.isWindow=goog.dom.isWindow;goog.dom.DomHelper.prototype.getParentElement=goog.dom.getParentElement;goog.dom.DomHelper.prototype.contains=goog.dom.contains;goog.dom.DomHelper.prototype.compareNodeOrder=goog.dom.compareNodeOrder;&#xD;	goog.dom.DomHelper.prototype.findCommonAncestor=goog.dom.findCommonAncestor;goog.dom.DomHelper.prototype.getOwnerDocument=goog.dom.getOwnerDocument;goog.dom.DomHelper.prototype.getFrameContentDocument=goog.dom.getFrameContentDocument;goog.dom.DomHelper.prototype.getFrameContentWindow=goog.dom.getFrameContentWindow;goog.dom.DomHelper.prototype.setTextContent=goog.dom.setTextContent;goog.dom.DomHelper.prototype.getOuterHtml=goog.dom.getOuterHtml;goog.dom.DomHelper.prototype.findNode=goog.dom.findNode;&#xD;	goog.dom.DomHelper.prototype.findNodes=goog.dom.findNodes;goog.dom.DomHelper.prototype.isFocusableTabIndex=goog.dom.isFocusableTabIndex;goog.dom.DomHelper.prototype.setFocusableTabIndex=goog.dom.setFocusableTabIndex;goog.dom.DomHelper.prototype.isFocusable=goog.dom.isFocusable;goog.dom.DomHelper.prototype.getTextContent=goog.dom.getTextContent;goog.dom.DomHelper.prototype.getNodeTextLength=goog.dom.getNodeTextLength;goog.dom.DomHelper.prototype.getNodeTextOffset=goog.dom.getNodeTextOffset;&#xD;	goog.dom.DomHelper.prototype.getNodeAtOffset=goog.dom.getNodeAtOffset;goog.dom.DomHelper.prototype.isNodeList=goog.dom.isNodeList;goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass=goog.dom.getAncestorByTagNameAndClass;goog.dom.DomHelper.prototype.getAncestorByClass=goog.dom.getAncestorByClass;goog.dom.DomHelper.prototype.getAncestor=goog.dom.getAncestor;goog.dom.DomHelper.prototype.getCanvasContext2D=goog.dom.getCanvasContext2D;goog.dom.vendor={};goog.dom.vendor.getVendorJsPrefix=function(){return goog.userAgent.WEBKIT?"Webkit":goog.userAgent.GECKO?"Moz":goog.userAgent.IE?"ms":goog.userAgent.OPERA?"O":null};goog.dom.vendor.getVendorPrefix=function(){return goog.userAgent.WEBKIT?"-webkit":goog.userAgent.GECKO?"-moz":goog.userAgent.IE?"-ms":goog.userAgent.OPERA?"-o":null};&#xD;	goog.dom.vendor.getPrefixedPropertyName=function(a,b){if(b&amp;&amp;a in b)return a;var c=goog.dom.vendor.getVendorJsPrefix();return c?(c=c.toLowerCase(),c+=goog.string.toTitleCase(a),!goog.isDef(b)||c in b?c:null):null};goog.dom.vendor.getPrefixedEventType=function(a){return((goog.dom.vendor.getVendorJsPrefix()||"")+a).toLowerCase()};goog.html.legacyconversions={};goog.html.legacyconversions.safeHtmlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(a,null)};goog.html.legacyconversions.safeStyleFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};&#xD;	goog.html.legacyconversions.safeStyleSheetFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.legacyconversions.safeUrlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.legacyconversions.trustedResourceUrlFromString=function(a){goog.html.legacyconversions.reportCallback_();return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};&#xD;	goog.html.legacyconversions.reportCallback_=goog.nullFunction;goog.html.legacyconversions.setReportCallback=function(a){goog.html.legacyconversions.reportCallback_=a};goog.math.Box=function(a,b,c,d){this.top=a;this.right=b;this.bottom=c;this.left=d};goog.math.Box.boundingBox=function(a){for(var b=new goog.math.Box(arguments[0].y,arguments[0].x,arguments[0].y,arguments[0].x),c=1;c&lt;arguments.length;c++)b.expandToIncludeCoordinate(arguments[c]);return b};goog.math.Box.prototype.getWidth=function(){return this.right-this.left};goog.math.Box.prototype.getHeight=function(){return this.bottom-this.top};&#xD;	goog.math.Box.prototype.clone=function(){return new goog.math.Box(this.top,this.right,this.bottom,this.left)};goog.DEBUG&amp;&amp;(goog.math.Box.prototype.toString=function(){return"("+this.top+"t, "+this.right+"r, "+this.bottom+"b, "+this.left+"l)"});goog.math.Box.prototype.contains=function(a){return goog.math.Box.contains(this,a)};&#xD;	goog.math.Box.prototype.expand=function(a,b,c,d){goog.isObject(a)?(this.top-=a.top,this.right+=a.right,this.bottom+=a.bottom,this.left-=a.left):(this.top-=a,this.right+=Number(b),this.bottom+=Number(c),this.left-=Number(d));return this};goog.math.Box.prototype.expandToInclude=function(a){this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.right=Math.max(this.right,a.right);this.bottom=Math.max(this.bottom,a.bottom)};&#xD;	goog.math.Box.prototype.expandToIncludeCoordinate=function(a){this.top=Math.min(this.top,a.y);this.right=Math.max(this.right,a.x);this.bottom=Math.max(this.bottom,a.y);this.left=Math.min(this.left,a.x)};goog.math.Box.equals=function(a,b){return a==b?!0:a&amp;&amp;b?a.top==b.top&amp;&amp;a.right==b.right&amp;&amp;a.bottom==b.bottom&amp;&amp;a.left==b.left:!1};&#xD;	goog.math.Box.contains=function(a,b){return a&amp;&amp;b?b instanceof goog.math.Box?b.left&gt;=a.left&amp;&amp;b.right&lt;=a.right&amp;&amp;b.top&gt;=a.top&amp;&amp;b.bottom&lt;=a.bottom:b.x&gt;=a.left&amp;&amp;b.x&lt;=a.right&amp;&amp;b.y&gt;=a.top&amp;&amp;b.y&lt;=a.bottom:!1};goog.math.Box.relativePositionX=function(a,b){return b.x&lt;a.left?b.x-a.left:b.x&gt;a.right?b.x-a.right:0};goog.math.Box.relativePositionY=function(a,b){return b.y&lt;a.top?b.y-a.top:b.y&gt;a.bottom?b.y-a.bottom:0};&#xD;	goog.math.Box.distance=function(a,b){var c=goog.math.Box.relativePositionX(a,b),d=goog.math.Box.relativePositionY(a,b);return Math.sqrt(c*c+d*d)};goog.math.Box.intersects=function(a,b){return a.left&lt;=b.right&amp;&amp;b.left&lt;=a.right&amp;&amp;a.top&lt;=b.bottom&amp;&amp;b.top&lt;=a.bottom};goog.math.Box.intersectsWithPadding=function(a,b,c){return a.left&lt;=b.right+c&amp;&amp;b.left&lt;=a.right+c&amp;&amp;a.top&lt;=b.bottom+c&amp;&amp;b.top&lt;=a.bottom+c};&#xD;	goog.math.Box.prototype.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};goog.math.Box.prototype.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};&#xD;	goog.math.Box.prototype.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};goog.math.Box.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.left+=a.x,this.right+=a.x,this.top+=a.y,this.bottom+=a.y):(goog.asserts.assertNumber(a),this.left+=a,this.right+=a,goog.isNumber(b)&amp;&amp;(this.top+=b,this.bottom+=b));return this};&#xD;	goog.math.Box.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.left*=a;this.right*=a;this.top*=c;this.bottom*=c;return this};goog.math.IRect=function(){};goog.math.Rect=function(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d};goog.math.Rect.prototype.clone=function(){return new goog.math.Rect(this.left,this.top,this.width,this.height)};goog.math.Rect.prototype.toBox=function(){return new goog.math.Box(this.top,this.left+this.width,this.top+this.height,this.left)};goog.math.Rect.createFromPositionAndSize=function(a,b){return new goog.math.Rect(a.x,a.y,b.width,b.height)};&#xD;	goog.math.Rect.createFromBox=function(a){return new goog.math.Rect(a.left,a.top,a.right-a.left,a.bottom-a.top)};goog.DEBUG&amp;&amp;(goog.math.Rect.prototype.toString=function(){return"("+this.left+", "+this.top+" - "+this.width+"w x "+this.height+"h)"});goog.math.Rect.equals=function(a,b){return a==b?!0:a&amp;&amp;b?a.left==b.left&amp;&amp;a.width==b.width&amp;&amp;a.top==b.top&amp;&amp;a.height==b.height:!1};&#xD;	goog.math.Rect.prototype.intersection=function(a){var b=Math.max(this.left,a.left),c=Math.min(this.left+this.width,a.left+a.width);if(b&lt;=c){var d=Math.max(this.top,a.top);a=Math.min(this.top+this.height,a.top+a.height);if(d&lt;=a)return this.left=b,this.top=d,this.width=c-b,this.height=a-d,!0}return!1};&#xD;	goog.math.Rect.intersection=function(a,b){var c=Math.max(a.left,b.left),d=Math.min(a.left+a.width,b.left+b.width);if(c&lt;=d){var e=Math.max(a.top,b.top),f=Math.min(a.top+a.height,b.top+b.height);if(e&lt;=f)return new goog.math.Rect(c,e,d-c,f-e)}return null};goog.math.Rect.intersects=function(a,b){return a.left&lt;=b.left+b.width&amp;&amp;b.left&lt;=a.left+a.width&amp;&amp;a.top&lt;=b.top+b.height&amp;&amp;b.top&lt;=a.top+a.height};goog.math.Rect.prototype.intersects=function(a){return goog.math.Rect.intersects(this,a)};&#xD;	goog.math.Rect.difference=function(a,b){var c=goog.math.Rect.intersection(a,b);if(!c||!c.height||!c.width)return[a.clone()];var c=[],d=a.top,e=a.height,f=a.left+a.width,g=a.top+a.height,h=b.left+b.width,k=b.top+b.height;b.top&gt;a.top&amp;&amp;(c.push(new goog.math.Rect(a.left,a.top,a.width,b.top-a.top)),d=b.top,e-=b.top-a.top);k&lt;g&amp;&amp;(c.push(new goog.math.Rect(a.left,k,a.width,g-k)),e=k-d);b.left&gt;a.left&amp;&amp;c.push(new goog.math.Rect(a.left,d,b.left-a.left,e));h&lt;f&amp;&amp;c.push(new goog.math.Rect(h,d,f-h,e));return c};&#xD;	goog.math.Rect.prototype.difference=function(a){return goog.math.Rect.difference(this,a)};goog.math.Rect.prototype.boundingRect=function(a){var b=Math.max(this.left+this.width,a.left+a.width),c=Math.max(this.top+this.height,a.top+a.height);this.left=Math.min(this.left,a.left);this.top=Math.min(this.top,a.top);this.width=b-this.left;this.height=c-this.top};goog.math.Rect.boundingRect=function(a,b){if(!a||!b)return null;var c=new goog.math.Rect(a.left,a.top,a.width,a.height);c.boundingRect(b);return c};&#xD;	goog.math.Rect.prototype.contains=function(a){return a instanceof goog.math.Coordinate?a.x&gt;=this.left&amp;&amp;a.x&lt;=this.left+this.width&amp;&amp;a.y&gt;=this.top&amp;&amp;a.y&lt;=this.top+this.height:this.left&lt;=a.left&amp;&amp;this.left+this.width&gt;=a.left+a.width&amp;&amp;this.top&lt;=a.top&amp;&amp;this.top+this.height&gt;=a.top+a.height};goog.math.Rect.prototype.squaredDistance=function(a){var b=a.x&lt;this.left?this.left-a.x:Math.max(a.x-(this.left+this.width),0);a=a.y&lt;this.top?this.top-a.y:Math.max(a.y-(this.top+this.height),0);return b*b+a*a};&#xD;	goog.math.Rect.prototype.distance=function(a){return Math.sqrt(this.squaredDistance(a))};goog.math.Rect.prototype.getSize=function(){return new goog.math.Size(this.width,this.height)};goog.math.Rect.prototype.getTopLeft=function(){return new goog.math.Coordinate(this.left,this.top)};goog.math.Rect.prototype.getCenter=function(){return new goog.math.Coordinate(this.left+this.width/2,this.top+this.height/2)};&#xD;	goog.math.Rect.prototype.getBottomRight=function(){return new goog.math.Coordinate(this.left+this.width,this.top+this.height)};goog.math.Rect.prototype.ceil=function(){this.left=Math.ceil(this.left);this.top=Math.ceil(this.top);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};goog.math.Rect.prototype.floor=function(){this.left=Math.floor(this.left);this.top=Math.floor(this.top);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};&#xD;	goog.math.Rect.prototype.round=function(){this.left=Math.round(this.left);this.top=Math.round(this.top);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};goog.math.Rect.prototype.translate=function(a,b){a instanceof goog.math.Coordinate?(this.left+=a.x,this.top+=a.y):(this.left+=goog.asserts.assertNumber(a),goog.isNumber(b)&amp;&amp;(this.top+=b));return this};&#xD;	goog.math.Rect.prototype.scale=function(a,b){var c=goog.isNumber(b)?b:a;this.left*=a;this.width*=a;this.top*=c;this.height*=c;return this};goog.style={};goog.style.setStyle=function(a,b,c){if(goog.isString(b))goog.style.setStyle_(a,c,b);else for(var d in b)goog.style.setStyle_(a,b[d],d)};goog.style.setStyle_=function(a,b,c){(c=goog.style.getVendorJsStyleName_(a,c))&amp;&amp;(a.style[c]=b)};goog.style.styleNameCache_={};&#xD;	goog.style.getVendorJsStyleName_=function(a,b){var c=goog.style.styleNameCache_[b];if(!c){var d=goog.string.toCamelCase(b),c=d;void 0===a.style[d]&amp;&amp;(d=goog.dom.vendor.getVendorJsPrefix()+goog.string.toTitleCase(d),void 0!==a.style[d]&amp;&amp;(c=d));goog.style.styleNameCache_[b]=c}return c};&#xD;	goog.style.getVendorStyleName_=function(a,b){var c=goog.string.toCamelCase(b);return void 0===a.style[c]&amp;&amp;(c=goog.dom.vendor.getVendorJsPrefix()+goog.string.toTitleCase(c),void 0!==a.style[c])?goog.dom.vendor.getVendorPrefix()+"-"+b:b};goog.style.getStyle=function(a,b){var c=a.style[goog.string.toCamelCase(b)];return"undefined"!==typeof c?c:a.style[goog.style.getVendorJsStyleName_(a,b)]||""};&#xD;	goog.style.getComputedStyle=function(a,b){var c=goog.dom.getOwnerDocument(a);return c.defaultView&amp;&amp;c.defaultView.getComputedStyle&amp;&amp;(c=c.defaultView.getComputedStyle(a,null))?c[b]||c.getPropertyValue(b)||"":""};goog.style.getCascadedStyle=function(a,b){return a.currentStyle?a.currentStyle[b]:null};goog.style.getStyle_=function(a,b){return goog.style.getComputedStyle(a,b)||goog.style.getCascadedStyle(a,b)||a.style&amp;&amp;a.style[b]};&#xD;	goog.style.getComputedBoxSizing=function(a){return goog.style.getStyle_(a,"boxSizing")||goog.style.getStyle_(a,"MozBoxSizing")||goog.style.getStyle_(a,"WebkitBoxSizing")||null};goog.style.getComputedPosition=function(a){return goog.style.getStyle_(a,"position")};goog.style.getBackgroundColor=function(a){return goog.style.getStyle_(a,"backgroundColor")};goog.style.getComputedOverflowX=function(a){return goog.style.getStyle_(a,"overflowX")};&#xD;	goog.style.getComputedOverflowY=function(a){return goog.style.getStyle_(a,"overflowY")};goog.style.getComputedZIndex=function(a){return goog.style.getStyle_(a,"zIndex")};goog.style.getComputedTextAlign=function(a){return goog.style.getStyle_(a,"textAlign")};goog.style.getComputedCursor=function(a){return goog.style.getStyle_(a,"cursor")};goog.style.getComputedTransform=function(a){var b=goog.style.getVendorStyleName_(a,"transform");return goog.style.getStyle_(a,b)||goog.style.getStyle_(a,"transform")};&#xD;	goog.style.setPosition=function(a,b,c){if(b instanceof goog.math.Coordinate){var d=b.x;b=b.y}else d=b,b=c;a.style.left=goog.style.getPixelStyleValue_(d,!1);a.style.top=goog.style.getPixelStyleValue_(b,!1)};goog.style.getPosition=function(a){return new goog.math.Coordinate(a.offsetLeft,a.offsetTop)};&#xD;	goog.style.getClientViewportElement=function(a){a=a?goog.dom.getOwnerDocument(a):goog.dom.getDocument();return!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9)||goog.dom.getDomHelper(a).isCss1CompatMode()?a.documentElement:a.body};goog.style.getViewportPageOffset=function(a){var b=a.body;a=a.documentElement;return new goog.math.Coordinate(b.scrollLeft||a.scrollLeft,b.scrollTop||a.scrollTop)};&#xD;	goog.style.getBoundingClientRect_=function(a){try{var b=a.getBoundingClientRect()}catch(c){return{left:0,top:0,right:0,bottom:0}}goog.userAgent.IE&amp;&amp;a.ownerDocument.body&amp;&amp;(a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop);return b};&#xD;	goog.style.getOffsetParent=function(a){if(goog.userAgent.IE&amp;&amp;!goog.userAgent.isDocumentModeOrHigher(8))return goog.asserts.assert(a&amp;&amp;"offsetParent"in a),a.offsetParent;var b=goog.dom.getOwnerDocument(a),c=goog.style.getStyle_(a,"position"),d="fixed"==c||"absolute"==c;for(a=a.parentNode;a&amp;&amp;a!=b;a=a.parentNode)if(a.nodeType==goog.dom.NodeType.DOCUMENT_FRAGMENT&amp;&amp;a.host&amp;&amp;(a=a.host),c=goog.style.getStyle_(a,"position"),d=d&amp;&amp;"static"==c&amp;&amp;a!=b.documentElement&amp;&amp;a!=b.body,!d&amp;&amp;(a.scrollWidth&gt;a.clientWidth||&#xD;	a.scrollHeight&gt;a.clientHeight||"fixed"==c||"absolute"==c||"relative"==c))return a;return null};&#xD;	goog.style.getVisibleRectForElement=function(a){for(var b=new goog.math.Box(0,Infinity,Infinity,0),c=goog.dom.getDomHelper(a),d=c.getDocument().body,e=c.getDocument().documentElement,f=c.getDocumentScrollElement();a=goog.style.getOffsetParent(a);)if(!(goog.userAgent.IE&amp;&amp;0==a.clientWidth||goog.userAgent.WEBKIT&amp;&amp;0==a.clientHeight&amp;&amp;a==d)&amp;&amp;a!=d&amp;&amp;a!=e&amp;&amp;"visible"!=goog.style.getStyle_(a,"overflow")){var g=goog.style.getPageOffset(a),h=goog.style.getClientLeftTop(a);g.x+=h.x;g.y+=h.y;b.top=Math.max(b.top,&#xD;	g.y);b.right=Math.min(b.right,g.x+a.clientWidth);b.bottom=Math.min(b.bottom,g.y+a.clientHeight);b.left=Math.max(b.left,g.x)}d=f.scrollLeft;f=f.scrollTop;b.left=Math.max(b.left,d);b.top=Math.max(b.top,f);c=c.getViewportSize();b.right=Math.min(b.right,d+c.width);b.bottom=Math.min(b.bottom,f+c.height);return 0&lt;=b.top&amp;&amp;0&lt;=b.left&amp;&amp;b.bottom&gt;b.top&amp;&amp;b.right&gt;b.left?b:null};&#xD;	goog.style.getContainerOffsetToScrollInto=function(a,b,c){var d=b||goog.dom.getDocumentScrollElement();var e=goog.style.getPageOffset(a);var f=goog.style.getPageOffset(d),g=goog.style.getBorderBox(d);d==goog.dom.getDocumentScrollElement()?(b=e.x-d.scrollLeft,e=e.y-d.scrollTop,goog.userAgent.IE&amp;&amp;!goog.userAgent.isDocumentModeOrHigher(10)&amp;&amp;(b+=g.left,e+=g.top)):(b=e.x-f.x-g.left,e=e.y-f.y-g.top);g=goog.style.getSizeWithDisplay_(a);a=d.clientWidth-g.width;g=d.clientHeight-g.height;f=d.scrollLeft;d=d.scrollTop;&#xD;	c?(f+=b-a/2,d+=e-g/2):(f+=Math.min(b,Math.max(b-a,0)),d+=Math.min(e,Math.max(e-g,0)));return new goog.math.Coordinate(f,d)};goog.style.scrollIntoContainerView=function(a,b,c){b=b||goog.dom.getDocumentScrollElement();a=goog.style.getContainerOffsetToScrollInto(a,b,c);b.scrollLeft=a.x;b.scrollTop=a.y};goog.style.getClientLeftTop=function(a){return new goog.math.Coordinate(a.clientLeft,a.clientTop)};&#xD;	goog.style.getPageOffset=function(a){var b=goog.dom.getOwnerDocument(a);goog.asserts.assertObject(a,"Parameter is required");var c=new goog.math.Coordinate(0,0),d=goog.style.getClientViewportElement(b);if(a==d)return c;a=goog.style.getBoundingClientRect_(a);b=goog.dom.getDomHelper(b).getDocumentScroll();c.x=a.left+b.x;c.y=a.top+b.y;return c};goog.style.getPageOffsetLeft=function(a){return goog.style.getPageOffset(a).x};goog.style.getPageOffsetTop=function(a){return goog.style.getPageOffset(a).y};&#xD;	goog.style.getFramedPageOffset=function(a,b){var c=new goog.math.Coordinate(0,0),d=goog.dom.getWindow(goog.dom.getOwnerDocument(a));if(!goog.reflect.canAccessProperty(d,"parent"))return c;var e=a;do{var f=d==b?goog.style.getPageOffset(e):goog.style.getClientPositionForElement_(goog.asserts.assert(e));c.x+=f.x;c.y+=f.y}while(d&amp;&amp;d!=b&amp;&amp;d!=d.parent&amp;&amp;(e=d.frameElement)&amp;&amp;(d=d.parent));return c};&#xD;	goog.style.translateRectForAnotherFrame=function(a,b,c){if(b.getDocument()!=c.getDocument()){var d=b.getDocument().body;c=goog.style.getFramedPageOffset(d,c.getWindow());c=goog.math.Coordinate.difference(c,goog.style.getPageOffset(d));!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9)||b.isCss1CompatMode()||(c=goog.math.Coordinate.difference(c,b.getDocumentScroll()));a.left+=c.x;a.top+=c.y}};&#xD;	goog.style.getRelativePosition=function(a,b){var c=goog.style.getClientPosition(a),d=goog.style.getClientPosition(b);return new goog.math.Coordinate(c.x-d.x,c.y-d.y)};goog.style.getClientPositionForElement_=function(a){a=goog.style.getBoundingClientRect_(a);return new goog.math.Coordinate(a.left,a.top)};&#xD;	goog.style.getClientPosition=function(a){goog.asserts.assert(a);if(a.nodeType==goog.dom.NodeType.ELEMENT)return goog.style.getClientPositionForElement_(a);a=a.changedTouches?a.changedTouches[0]:a;return new goog.math.Coordinate(a.clientX,a.clientY)};goog.style.setPageOffset=function(a,b,c){var d=goog.style.getPageOffset(a);b instanceof goog.math.Coordinate&amp;&amp;(c=b.y,b=b.x);b=goog.asserts.assertNumber(b)-d.x;goog.style.setPosition(a,a.offsetLeft+b,a.offsetTop+(Number(c)-d.y))};&#xD;	goog.style.setSize=function(a,b,c){if(b instanceof goog.math.Size)c=b.height,b=b.width;else if(void 0==c)throw Error("missing height argument");goog.style.setWidth(a,b);goog.style.setHeight(a,c)};goog.style.getPixelStyleValue_=function(a,b){"number"==typeof a&amp;&amp;(a=(b?Math.round(a):a)+"px");return a};goog.style.setHeight=function(a,b){a.style.height=goog.style.getPixelStyleValue_(b,!0)};goog.style.setWidth=function(a,b){a.style.width=goog.style.getPixelStyleValue_(b,!0)};&#xD;	goog.style.getSize=function(a){return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_,a)};goog.style.evaluateWithTemporaryDisplay_=function(a,b){if("none"!=goog.style.getStyle_(b,"display"))return a(b);var c=b.style,d=c.display,e=c.visibility,f=c.position;c.visibility="hidden";c.position="absolute";c.display="inline";var g=a(b);c.display=d;c.position=f;c.visibility=e;return g};&#xD;	goog.style.getSizeWithDisplay_=function(a){var b=a.offsetWidth,c=a.offsetHeight,d=goog.userAgent.WEBKIT&amp;&amp;!b&amp;&amp;!c;return goog.isDef(b)&amp;&amp;!d||!a.getBoundingClientRect?new goog.math.Size(b,c):(a=goog.style.getBoundingClientRect_(a),new goog.math.Size(a.right-a.left,a.bottom-a.top))};goog.style.getTransformedSize=function(a){if(!a.getBoundingClientRect)return null;a=goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_,a);return new goog.math.Size(a.right-a.left,a.bottom-a.top)};&#xD;	goog.style.getBounds=function(a){var b=goog.style.getPageOffset(a);a=goog.style.getSize(a);return new goog.math.Rect(b.x,b.y,a.width,a.height)};goog.style.toCamelCase=function(a){return goog.string.toCamelCase(String(a))};goog.style.toSelectorCase=function(a){return goog.string.toSelectorCase(a)};&#xD;	goog.style.getOpacity=function(a){goog.asserts.assert(a);var b=a.style;a="";"opacity"in b?a=b.opacity:"MozOpacity"in b?a=b.MozOpacity:"filter"in b&amp;&amp;(b=b.filter.match(/alpha\(opacity=([\d.]+)\)/))&amp;&amp;(a=String(b[1]/100));return""==a?a:Number(a)};goog.style.setOpacity=function(a,b){goog.asserts.assert(a);var c=a.style;"opacity"in c?c.opacity=b:"MozOpacity"in c?c.MozOpacity=b:"filter"in c&amp;&amp;(c.filter=""===b?"":"alpha(opacity="+100*Number(b)+")")};&#xD;	goog.style.setTransparentBackgroundImage=function(a,b){var c=a.style;goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("8")?c.filter=&apos;progid:DXImageTransform.Microsoft.AlphaImageLoader(src="&apos;+b+&apos;", sizingMethod="crop")&apos;:(c.backgroundImage="url("+b+")",c.backgroundPosition="top left",c.backgroundRepeat="no-repeat")};goog.style.clearTransparentBackgroundImage=function(a){a=a.style;"filter"in a?a.filter="":a.backgroundImage="none"};&#xD;	goog.style.showElement=function(a,b){goog.style.setElementShown(a,b)};goog.style.setElementShown=function(a,b){a.style.display=b?"":"none"};goog.style.isElementShown=function(a){return"none"!=a.style.display};goog.style.installStyles=function(a,b){return goog.style.installSafeStyleSheet(goog.html.legacyconversions.safeStyleSheetFromString(a),b)};&#xD;	goog.style.installSafeStyleSheet=function(a,b){var c=goog.dom.getDomHelper(b),d=c.getDocument();if(goog.userAgent.IE&amp;&amp;d.createStyleSheet){var e=d.createStyleSheet();goog.style.setSafeStyleSheet(e,a)}else d=c.getElementsByTagNameAndClass("HEAD")[0],d||(e=c.getElementsByTagNameAndClass("BODY")[0],d=c.createDom("HEAD"),e.parentNode.insertBefore(d,e)),e=c.createDom("STYLE"),goog.style.setSafeStyleSheet(e,a),c.appendChild(d,e);return e};&#xD;	goog.style.uninstallStyles=function(a){goog.dom.removeNode(a.ownerNode||a.owningElement||a)};goog.style.setStyles=function(a,b){goog.style.setSafeStyleSheet(a,goog.html.legacyconversions.safeStyleSheetFromString(b))};goog.style.setSafeStyleSheet=function(a,b){var c=goog.html.SafeStyleSheet.unwrap(b);goog.userAgent.IE&amp;&amp;goog.isDef(a.cssText)?a.cssText=c:a.innerHTML=c};&#xD;	goog.style.setPreWrap=function(a){a=a.style;goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("8")?(a.whiteSpace="pre",a.wordWrap="break-word"):a.whiteSpace=goog.userAgent.GECKO?"-moz-pre-wrap":"pre-wrap"};goog.style.setInlineBlock=function(a){a=a.style;a.position="relative";goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("8")?(a.zoom="1",a.display="inline"):a.display="inline-block"};goog.style.isRightToLeft=function(a){return"rtl"==goog.style.getStyle_(a,"direction")};&#xD;	goog.style.unselectableStyle_=goog.userAgent.GECKO?"MozUserSelect":goog.userAgent.WEBKIT||goog.userAgent.EDGE?"WebkitUserSelect":null;goog.style.isUnselectable=function(a){return goog.style.unselectableStyle_?"none"==a.style[goog.style.unselectableStyle_].toLowerCase():goog.userAgent.IE||goog.userAgent.OPERA?"on"==a.getAttribute("unselectable"):!1};&#xD;	goog.style.setUnselectable=function(a,b,c){c=c?null:a.getElementsByTagName("*");var d=goog.style.unselectableStyle_;if(d){if(b=b?"none":"",a.style&amp;&amp;(a.style[d]=b),c){a=0;for(var e;e=c[a];a++)e.style&amp;&amp;(e.style[d]=b)}}else if(goog.userAgent.IE||goog.userAgent.OPERA)if(b=b?"on":"",a.setAttribute("unselectable",b),c)for(a=0;e=c[a];a++)e.setAttribute("unselectable",b)};goog.style.getBorderBoxSize=function(a){return new goog.math.Size(a.offsetWidth,a.offsetHeight)};&#xD;	goog.style.setBorderBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||d&amp;&amp;goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(a,b,"border-box");else if(c=a.style,d){var d=goog.style.getPaddingBox(a),e=goog.style.getBorderBox(a);c.pixelWidth=b.width-e.left-d.left-d.right-e.right;c.pixelHeight=b.height-e.top-d.top-d.bottom-e.bottom}else c.pixelWidth=b.width,c.pixelHeight=&#xD;	b.height};&#xD;	goog.style.getContentBoxSize=function(a){var b=goog.dom.getOwnerDocument(a),c=goog.userAgent.IE&amp;&amp;a.currentStyle;if(c&amp;&amp;goog.dom.getDomHelper(b).isCss1CompatMode()&amp;&amp;"auto"!=c.width&amp;&amp;"auto"!=c.height&amp;&amp;!c.boxSizing)return b=goog.style.getIePixelValue_(a,c.width,"width","pixelWidth"),a=goog.style.getIePixelValue_(a,c.height,"height","pixelHeight"),new goog.math.Size(b,a);c=goog.style.getBorderBoxSize(a);b=goog.style.getPaddingBox(a);a=goog.style.getBorderBox(a);return new goog.math.Size(c.width-a.left-&#xD;	b.left-b.right-a.right,c.height-a.top-b.top-b.bottom-a.bottom)};&#xD;	goog.style.setContentBoxSize=function(a,b){var c=goog.dom.getOwnerDocument(a),d=goog.dom.getDomHelper(c).isCss1CompatMode();if(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher("10")||d&amp;&amp;goog.userAgent.isVersionOrHigher("8"))goog.style.setBoxSizingSize_(a,b,"content-box");else if(c=a.style,d)c.pixelWidth=b.width,c.pixelHeight=b.height;else{var d=goog.style.getPaddingBox(a),e=goog.style.getBorderBox(a);c.pixelWidth=b.width+e.left+d.left+d.right+e.right;c.pixelHeight=b.height+e.top+d.top+d.bottom+&#xD;	e.bottom}};goog.style.setBoxSizingSize_=function(a,b,c){a=a.style;goog.userAgent.GECKO?a.MozBoxSizing=c:goog.userAgent.WEBKIT?a.WebkitBoxSizing=c:a.boxSizing=c;a.width=Math.max(b.width,0)+"px";a.height=Math.max(b.height,0)+"px"};goog.style.getIePixelValue_=function(a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(b,10);var e=a.style[c],f=a.runtimeStyle[c];a.runtimeStyle[c]=a.currentStyle[c];a.style[c]=b;b=a.style[d];a.style[c]=e;a.runtimeStyle[c]=f;return+b};&#xD;	goog.style.getIePixelDistance_=function(a,b){var c=goog.style.getCascadedStyle(a,b);return c?goog.style.getIePixelValue_(a,c,"left","pixelLeft"):0};&#xD;	goog.style.getBox_=function(a,b){if(goog.userAgent.IE){var c=goog.style.getIePixelDistance_(a,b+"Left");var d=goog.style.getIePixelDistance_(a,b+"Right");var e=goog.style.getIePixelDistance_(a,b+"Top");var f=goog.style.getIePixelDistance_(a,b+"Bottom");return new goog.math.Box(e,d,f,c)}c=goog.style.getComputedStyle(a,b+"Left");d=goog.style.getComputedStyle(a,b+"Right");e=goog.style.getComputedStyle(a,b+"Top");f=goog.style.getComputedStyle(a,b+"Bottom");return new goog.math.Box(parseFloat(e),parseFloat(d),&#xD;	parseFloat(f),parseFloat(c))};goog.style.getPaddingBox=function(a){return goog.style.getBox_(a,"padding")};goog.style.getMarginBox=function(a){return goog.style.getBox_(a,"margin")};goog.style.ieBorderWidthKeywords_={thin:2,medium:4,thick:6};&#xD;	goog.style.getIePixelBorder_=function(a,b){if("none"==goog.style.getCascadedStyle(a,b+"Style"))return 0;var c=goog.style.getCascadedStyle(a,b+"Width");return c in goog.style.ieBorderWidthKeywords_?goog.style.ieBorderWidthKeywords_[c]:goog.style.getIePixelValue_(a,c,"left","pixelLeft")};&#xD;	goog.style.getBorderBox=function(a){if(goog.userAgent.IE&amp;&amp;!goog.userAgent.isDocumentModeOrHigher(9)){var b=goog.style.getIePixelBorder_(a,"borderLeft");var c=goog.style.getIePixelBorder_(a,"borderRight");var d=goog.style.getIePixelBorder_(a,"borderTop");a=goog.style.getIePixelBorder_(a,"borderBottom");return new goog.math.Box(d,c,a,b)}b=goog.style.getComputedStyle(a,"borderLeftWidth");c=goog.style.getComputedStyle(a,"borderRightWidth");d=goog.style.getComputedStyle(a,"borderTopWidth");a=goog.style.getComputedStyle(a,&#xD;	"borderBottomWidth");return new goog.math.Box(parseFloat(d),parseFloat(c),parseFloat(a),parseFloat(b))};goog.style.getFontFamily=function(a){var b=goog.dom.getOwnerDocument(a),c="";if(b.body.createTextRange&amp;&amp;goog.dom.contains(b,a)){b=b.body.createTextRange();b.moveToElementText(a);try{c=b.queryCommandValue("FontName")}catch(d){c=""}}c||(c=goog.style.getStyle_(a,"fontFamily"));a=c.split(",");1&lt;a.length&amp;&amp;(c=a[0]);return goog.string.stripQuotes(c,"\"&apos;")};goog.style.lengthUnitRegex_=/[^\d]+$/;&#xD;	goog.style.getLengthUnits=function(a){return(a=a.match(goog.style.lengthUnitRegex_))&amp;&amp;a[0]||null};goog.style.ABSOLUTE_CSS_LENGTH_UNITS_={cm:1,"in":1,mm:1,pc:1,pt:1};goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_={em:1,ex:1};&#xD;	goog.style.getFontSize=function(a){var b=goog.style.getStyle_(a,"fontSize"),c=goog.style.getLengthUnits(b);if(b&amp;&amp;"px"==c)return parseInt(b,10);if(goog.userAgent.IE){if(String(c)in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_)return goog.style.getIePixelValue_(a,b,"left","pixelLeft");if(a.parentNode&amp;&amp;a.parentNode.nodeType==goog.dom.NodeType.ELEMENT&amp;&amp;String(c)in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_)return a=a.parentNode,c=goog.style.getStyle_(a,"fontSize"),goog.style.getIePixelValue_(a,b==c?"1em":b,&#xD;	"left","pixelLeft")}c=goog.dom.createDom("SPAN",{style:"visibility:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;height:1em;"});goog.dom.appendChild(a,c);b=c.offsetHeight;goog.dom.removeNode(c);return b};goog.style.parseStyleAttribute=function(a){var b={};goog.array.forEach(a.split(/\s*;\s*/),function(a){var c=a.match(/\s*([\w-]+)\s*\:(.+)/);c&amp;&amp;(a=c[1],c=goog.string.trim(c[2]),b[goog.string.toCamelCase(a.toLowerCase())]=c)});return b};&#xD;	goog.style.toStyleAttribute=function(a){var b=[];goog.object.forEach(a,function(a,d){b.push(goog.string.toSelectorCase(d),":",a,";")});return b.join("")};goog.style.setFloat=function(a,b){a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]=b};goog.style.getFloat=function(a){return a.style[goog.userAgent.IE?"styleFloat":"cssFloat"]||""};&#xD;	goog.style.getScrollbarWidth=function(a){var b=goog.dom.createElement("DIV");a&amp;&amp;(b.className=a);b.style.cssText="overflow:auto;position:absolute;top:0;width:100px;height:100px";a=goog.dom.createElement("DIV");goog.style.setSize(a,"200px","200px");b.appendChild(a);goog.dom.appendChild(goog.dom.getDocument().body,b);a=b.offsetWidth-b.clientWidth;goog.dom.removeNode(b);return a};goog.style.MATRIX_TRANSLATION_REGEX_=/matrix\([0-9\.\-]+, [0-9\.\-]+, [0-9\.\-]+, [0-9\.\-]+, ([0-9\.\-]+)p?x?, ([0-9\.\-]+)p?x?\)/;&#xD;	goog.style.getCssTranslation=function(a){a=goog.style.getComputedTransform(a);return a?(a=a.match(goog.style.MATRIX_TRANSLATION_REGEX_))?new goog.math.Coordinate(parseFloat(a[1]),parseFloat(a[2])):new goog.math.Coordinate(0,0):new goog.math.Coordinate(0,0)};goog.events.EventHandler=function(a){goog.Disposable.call(this);this.handler_=a;this.keys_={}};goog.inherits(goog.events.EventHandler,goog.Disposable);goog.events.EventHandler.typeArray_=[];goog.events.EventHandler.prototype.listen=function(a,b,c,d){return this.listen_(a,b,c,d)};goog.events.EventHandler.prototype.listenWithScope=function(a,b,c,d,e){return this.listen_(a,b,c,d,e)};&#xD;	goog.events.EventHandler.prototype.listen_=function(a,b,c,d,e){goog.isArray(b)||(b&amp;&amp;(goog.events.EventHandler.typeArray_[0]=b.toString()),b=goog.events.EventHandler.typeArray_);for(var f=0;f&lt;b.length;f++){var g=goog.events.listen(a,b[f],c||this.handleEvent,d||!1,e||this.handler_||this);if(!g)break;this.keys_[g.key]=g}return this};goog.events.EventHandler.prototype.listenOnce=function(a,b,c,d){return this.listenOnce_(a,b,c,d)};&#xD;	goog.events.EventHandler.prototype.listenOnceWithScope=function(a,b,c,d,e){return this.listenOnce_(a,b,c,d,e)};goog.events.EventHandler.prototype.listenOnce_=function(a,b,c,d,e){if(goog.isArray(b))for(var f=0;f&lt;b.length;f++)this.listenOnce_(a,b[f],c,d,e);else{a=goog.events.listenOnce(a,b,c||this.handleEvent,d,e||this.handler_||this);if(!a)return this;this.keys_[a.key]=a}return this};goog.events.EventHandler.prototype.listenWithWrapper=function(a,b,c,d){return this.listenWithWrapper_(a,b,c,d)};&#xD;	goog.events.EventHandler.prototype.listenWithWrapperAndScope=function(a,b,c,d,e){return this.listenWithWrapper_(a,b,c,d,e)};goog.events.EventHandler.prototype.listenWithWrapper_=function(a,b,c,d,e){b.listen(a,c,d,e||this.handler_||this,this);return this};goog.events.EventHandler.prototype.getListenerCount=function(){var a=0,b;for(b in this.keys_)Object.prototype.hasOwnProperty.call(this.keys_,b)&amp;&amp;a++;return a};&#xD;	goog.events.EventHandler.prototype.unlisten=function(a,b,c,d,e){if(goog.isArray(b))for(var f=0;f&lt;b.length;f++)this.unlisten(a,b[f],c,d,e);else if(a=goog.events.getListener(a,b,c||this.handleEvent,d,e||this.handler_||this))goog.events.unlistenByKey(a),delete this.keys_[a.key];return this};goog.events.EventHandler.prototype.unlistenWithWrapper=function(a,b,c,d,e){b.unlisten(a,c,d,e||this.handler_||this,this);return this};&#xD;	goog.events.EventHandler.prototype.removeAll=function(){goog.object.forEach(this.keys_,function(a,b){this.keys_.hasOwnProperty(b)&amp;&amp;goog.events.unlistenByKey(a)},this);this.keys_={}};goog.events.EventHandler.prototype.disposeInternal=function(){goog.events.EventHandler.superClass_.disposeInternal.call(this);this.removeAll()};goog.events.EventHandler.prototype.handleEvent=function(a){throw Error("EventHandler.handleEvent not implemented");};goog.events.EventTarget=function(){goog.Disposable.call(this);this.eventTargetListeners_=new goog.events.ListenerMap(this);this.actualEventTarget_=this;this.parentEventTarget_=null};goog.inherits(goog.events.EventTarget,goog.Disposable);goog.events.Listenable.addImplementation(goog.events.EventTarget);goog.events.EventTarget.MAX_ANCESTORS_=1E3;goog.events.EventTarget.prototype.getParentEventTarget=function(){return this.parentEventTarget_};&#xD;	goog.events.EventTarget.prototype.setParentEventTarget=function(a){this.parentEventTarget_=a};goog.events.EventTarget.prototype.addEventListener=function(a,b,c,d){goog.events.listen(this,a,b,c,d)};goog.events.EventTarget.prototype.removeEventListener=function(a,b,c,d){goog.events.unlisten(this,a,b,c,d)};&#xD;	goog.events.EventTarget.prototype.dispatchEvent=function(a){this.assertInitialized_();var b=this.getParentEventTarget();if(b){var c=[];for(var d=1;b;b=b.getParentEventTarget())c.push(b),goog.asserts.assert(++d&lt;goog.events.EventTarget.MAX_ANCESTORS_,"infinite loop")}return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_,a,c)};&#xD;	goog.events.EventTarget.prototype.disposeInternal=function(){goog.events.EventTarget.superClass_.disposeInternal.call(this);this.removeAllListeners();this.parentEventTarget_=null};goog.events.EventTarget.prototype.listen=function(a,b,c,d){this.assertInitialized_();return this.eventTargetListeners_.add(String(a),b,!1,c,d)};goog.events.EventTarget.prototype.listenOnce=function(a,b,c,d){return this.eventTargetListeners_.add(String(a),b,!0,c,d)};&#xD;	goog.events.EventTarget.prototype.unlisten=function(a,b,c,d){return this.eventTargetListeners_.remove(String(a),b,c,d)};goog.events.EventTarget.prototype.unlistenByKey=function(a){return this.eventTargetListeners_.removeByKey(a)};goog.events.EventTarget.prototype.removeAllListeners=function(a){return this.eventTargetListeners_?this.eventTargetListeners_.removeAll(a):0};&#xD;	goog.events.EventTarget.prototype.fireListeners=function(a,b,c){a=this.eventTargetListeners_.listeners[String(a)];if(!a)return!0;a=a.concat();for(var d=!0,e=0;e&lt;a.length;++e){var f=a[e];if(f&amp;&amp;!f.removed&amp;&amp;f.capture==b){var g=f.listener,h=f.handler||f.src;f.callOnce&amp;&amp;this.unlistenByKey(f);d=!1!==g.call(h,c)&amp;&amp;d}}return d&amp;&amp;0!=c.returnValue_};goog.events.EventTarget.prototype.getListeners=function(a,b){return this.eventTargetListeners_.getListeners(String(a),b)};&#xD;	goog.events.EventTarget.prototype.getListener=function(a,b,c,d){return this.eventTargetListeners_.getListener(String(a),b,c,d)};goog.events.EventTarget.prototype.hasListener=function(a,b){var c=goog.isDef(a)?String(a):void 0;return this.eventTargetListeners_.hasListener(c,b)};goog.events.EventTarget.prototype.setTargetForTesting=function(a){this.actualEventTarget_=a};goog.events.EventTarget.prototype.assertInitialized_=function(){goog.asserts.assert(this.eventTargetListeners_,"Event target is not initialized. Did you call the superclass (goog.events.EventTarget) constructor?")};&#xD;	goog.events.EventTarget.dispatchEventInternal_=function(a,b,c){var d=b.type||b;if(goog.isString(b))b=new goog.events.Event(b,a);else if(b instanceof goog.events.Event)b.target=b.target||a;else{var e=b;b=new goog.events.Event(d,a);goog.object.extend(b,e)}var e=!0;if(c)for(var f=c.length-1;!b.propagationStopped_&amp;&amp;0&lt;=f;f--){var g=b.currentTarget=c[f];e=g.fireListeners(d,!0,b)&amp;&amp;e}b.propagationStopped_||(g=b.currentTarget=a,e=g.fireListeners(d,!0,b)&amp;&amp;e,b.propagationStopped_||(e=g.fireListeners(d,!1,b)&amp;&amp;&#xD;	e));if(c)for(f=0;!b.propagationStopped_&amp;&amp;f&lt;c.length;f++)g=b.currentTarget=c[f],e=g.fireListeners(d,!1,b)&amp;&amp;e;return e};goog.ui={};goog.ui.IdGenerator=function(){};goog.addSingletonGetter(goog.ui.IdGenerator);goog.ui.IdGenerator.prototype.nextId_=0;goog.ui.IdGenerator.prototype.getNextUniqueId=function(){return":"+(this.nextId_++).toString(36)};goog.ui.Component=function(a){goog.events.EventTarget.call(this);this.dom_=a||goog.dom.getDomHelper();this.rightToLeft_=goog.ui.Component.defaultRightToLeft_;this.id_=null;this.inDocument_=!1;this.element_=null;this.googUiComponentHandler_=void 0;this.childIndex_=this.children_=this.parent_=this.model_=null;this.wasDecorated_=!1};goog.inherits(goog.ui.Component,goog.events.EventTarget);goog.ui.Component.ALLOW_DETACHED_DECORATION=!1;goog.ui.Component.prototype.idGenerator_=goog.ui.IdGenerator.getInstance();&#xD;	goog.ui.Component.DEFAULT_BIDI_DIR=0;goog.ui.Component.defaultRightToLeft_=1==goog.ui.Component.DEFAULT_BIDI_DIR?!1:-1==goog.ui.Component.DEFAULT_BIDI_DIR?!0:null;&#xD;	goog.ui.Component.EventType={BEFORE_SHOW:"beforeshow",SHOW:"show",HIDE:"hide",DISABLE:"disable",ENABLE:"enable",HIGHLIGHT:"highlight",UNHIGHLIGHT:"unhighlight",ACTIVATE:"activate",DEACTIVATE:"deactivate",SELECT:"select",UNSELECT:"unselect",CHECK:"check",UNCHECK:"uncheck",FOCUS:"focus",BLUR:"blur",OPEN:"open",CLOSE:"close",ENTER:"enter",LEAVE:"leave",ACTION:"action",CHANGE:"change"};&#xD;	goog.ui.Component.Error={NOT_SUPPORTED:"Method not supported",DECORATE_INVALID:"Invalid element to decorate",ALREADY_RENDERED:"Component already rendered",PARENT_UNABLE_TO_BE_SET:"Unable to set parent component",CHILD_INDEX_OUT_OF_BOUNDS:"Child component index out of bounds",NOT_OUR_CHILD:"Child is not in parent component",NOT_IN_DOCUMENT:"Operation not supported while component is not in document",STATE_INVALID:"Invalid component state"};&#xD;	goog.ui.Component.State={ALL:255,DISABLED:1,HOVER:2,ACTIVE:4,SELECTED:8,CHECKED:16,FOCUSED:32,OPENED:64};&#xD;	goog.ui.Component.getStateTransitionEvent=function(a,b){switch(a){case goog.ui.Component.State.DISABLED:return b?goog.ui.Component.EventType.DISABLE:goog.ui.Component.EventType.ENABLE;case goog.ui.Component.State.HOVER:return b?goog.ui.Component.EventType.HIGHLIGHT:goog.ui.Component.EventType.UNHIGHLIGHT;case goog.ui.Component.State.ACTIVE:return b?goog.ui.Component.EventType.ACTIVATE:goog.ui.Component.EventType.DEACTIVATE;case goog.ui.Component.State.SELECTED:return b?goog.ui.Component.EventType.SELECT:&#xD;	goog.ui.Component.EventType.UNSELECT;case goog.ui.Component.State.CHECKED:return b?goog.ui.Component.EventType.CHECK:goog.ui.Component.EventType.UNCHECK;case goog.ui.Component.State.FOCUSED:return b?goog.ui.Component.EventType.FOCUS:goog.ui.Component.EventType.BLUR;case goog.ui.Component.State.OPENED:return b?goog.ui.Component.EventType.OPEN:goog.ui.Component.EventType.CLOSE}throw Error(goog.ui.Component.Error.STATE_INVALID);};&#xD;	goog.ui.Component.setDefaultRightToLeft=function(a){goog.ui.Component.defaultRightToLeft_=a};goog.ui.Component.prototype.getId=function(){return this.id_||(this.id_=this.idGenerator_.getNextUniqueId())};goog.ui.Component.prototype.setId=function(a){this.parent_&amp;&amp;this.parent_.childIndex_&amp;&amp;(goog.object.remove(this.parent_.childIndex_,this.id_),goog.object.add(this.parent_.childIndex_,a,this));this.id_=a};goog.ui.Component.prototype.getElement=function(){return this.element_};&#xD;	goog.ui.Component.prototype.getElementStrict=function(){var a=this.element_;goog.asserts.assert(a,"Can not call getElementStrict before rendering/decorating.");return a};goog.ui.Component.prototype.setElementInternal=function(a){this.element_=a};goog.ui.Component.prototype.getElementsByClass=function(a){return this.element_?this.dom_.getElementsByClass(a,this.element_):[]};goog.ui.Component.prototype.getElementByClass=function(a){return this.element_?this.dom_.getElementByClass(a,this.element_):null};&#xD;	goog.ui.Component.prototype.getRequiredElementByClass=function(a){var b=this.getElementByClass(a);goog.asserts.assert(b,"Expected element in component with class: %s",a);return b};goog.ui.Component.prototype.getHandler=function(){this.googUiComponentHandler_||(this.googUiComponentHandler_=new goog.events.EventHandler(this));return this.googUiComponentHandler_};&#xD;	goog.ui.Component.prototype.setParent=function(a){if(this==a)throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);if(a&amp;&amp;this.parent_&amp;&amp;this.id_&amp;&amp;this.parent_.getChild(this.id_)&amp;&amp;this.parent_!=a)throw Error(goog.ui.Component.Error.PARENT_UNABLE_TO_BE_SET);this.parent_=a;goog.ui.Component.superClass_.setParentEventTarget.call(this,a)};goog.ui.Component.prototype.getParent=function(){return this.parent_};&#xD;	goog.ui.Component.prototype.setParentEventTarget=function(a){if(this.parent_&amp;&amp;this.parent_!=a)throw Error(goog.ui.Component.Error.NOT_SUPPORTED);goog.ui.Component.superClass_.setParentEventTarget.call(this,a)};goog.ui.Component.prototype.getDomHelper=function(){return this.dom_};goog.ui.Component.prototype.isInDocument=function(){return this.inDocument_};goog.ui.Component.prototype.createDom=function(){this.element_=this.dom_.createElement("DIV")};goog.ui.Component.prototype.render=function(a){this.render_(a)};&#xD;	goog.ui.Component.prototype.renderBefore=function(a){this.render_(a.parentNode,a)};goog.ui.Component.prototype.render_=function(a,b){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.element_||this.createDom();a?a.insertBefore(this.element_,b||null):this.dom_.getDocument().body.appendChild(this.element_);this.parent_&amp;&amp;!this.parent_.isInDocument()||this.enterDocument()};&#xD;	goog.ui.Component.prototype.decorate=function(a){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);if(a&amp;&amp;this.canDecorate(a)){this.wasDecorated_=!0;var b=goog.dom.getOwnerDocument(a);this.dom_&amp;&amp;this.dom_.getDocument()==b||(this.dom_=goog.dom.getDomHelper(a));this.decorateInternal(a);goog.ui.Component.ALLOW_DETACHED_DECORATION&amp;&amp;!goog.dom.contains(b,a)||this.enterDocument()}else throw Error(goog.ui.Component.Error.DECORATE_INVALID);};goog.ui.Component.prototype.canDecorate=function(a){return!0};&#xD;	goog.ui.Component.prototype.wasDecorated=function(){return this.wasDecorated_};goog.ui.Component.prototype.decorateInternal=function(a){this.element_=a};goog.ui.Component.prototype.enterDocument=function(){this.inDocument_=!0;this.forEachChild(function(a){!a.isInDocument()&amp;&amp;a.getElement()&amp;&amp;a.enterDocument()})};&#xD;	goog.ui.Component.prototype.exitDocument=function(){this.forEachChild(function(a){a.isInDocument()&amp;&amp;a.exitDocument()});this.googUiComponentHandler_&amp;&amp;this.googUiComponentHandler_.removeAll();this.inDocument_=!1};&#xD;	goog.ui.Component.prototype.disposeInternal=function(){this.inDocument_&amp;&amp;this.exitDocument();this.googUiComponentHandler_&amp;&amp;(this.googUiComponentHandler_.dispose(),delete this.googUiComponentHandler_);this.forEachChild(function(a){a.dispose()});!this.wasDecorated_&amp;&amp;this.element_&amp;&amp;goog.dom.removeNode(this.element_);this.parent_=this.model_=this.element_=this.childIndex_=this.children_=null;goog.ui.Component.superClass_.disposeInternal.call(this)};&#xD;	goog.ui.Component.prototype.makeId=function(a){return this.getId()+"."+a};goog.ui.Component.prototype.makeIds=function(a){var b={},c;for(c in a)b[c]=this.makeId(a[c]);return b};goog.ui.Component.prototype.getModel=function(){return this.model_};goog.ui.Component.prototype.setModel=function(a){this.model_=a};goog.ui.Component.prototype.getFragmentFromId=function(a){return a.substring(this.getId().length+1)};&#xD;	goog.ui.Component.prototype.getElementByFragment=function(a){if(!this.inDocument_)throw Error(goog.ui.Component.Error.NOT_IN_DOCUMENT);return this.dom_.getElement(this.makeId(a))};goog.ui.Component.prototype.addChild=function(a,b){this.addChildAt(a,this.getChildCount(),b)};&#xD;	goog.ui.Component.prototype.addChildAt=function(a,b,c){goog.asserts.assert(!!a,"Provided element must not be null.");if(a.inDocument_&amp;&amp;(c||!this.inDocument_))throw Error(goog.ui.Component.Error.ALREADY_RENDERED);if(0&gt;b||b&gt;this.getChildCount())throw Error(goog.ui.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);this.childIndex_&amp;&amp;this.children_||(this.childIndex_={},this.children_=[]);a.getParent()==this?(goog.object.set(this.childIndex_,a.getId(),a),goog.array.remove(this.children_,a)):goog.object.add(this.childIndex_,&#xD;	a.getId(),a);a.setParent(this);goog.array.insertAt(this.children_,a,b);a.inDocument_&amp;&amp;this.inDocument_&amp;&amp;a.getParent()==this?(c=this.getContentElement(),b=c.childNodes[b]||null,b!=a.getElement()&amp;&amp;c.insertBefore(a.getElement(),b)):c?(this.element_||this.createDom(),b=this.getChildAt(b+1),a.render_(this.getContentElement(),b?b.element_:null)):this.inDocument_&amp;&amp;!a.inDocument_&amp;&amp;a.element_&amp;&amp;a.element_.parentNode&amp;&amp;a.element_.parentNode.nodeType==goog.dom.NodeType.ELEMENT&amp;&amp;a.enterDocument()};&#xD;	goog.ui.Component.prototype.getContentElement=function(){return this.element_};goog.ui.Component.prototype.isRightToLeft=function(){null==this.rightToLeft_&amp;&amp;(this.rightToLeft_=goog.style.isRightToLeft(this.inDocument_?this.element_:this.dom_.getDocument().body));return this.rightToLeft_};goog.ui.Component.prototype.setRightToLeft=function(a){if(this.inDocument_)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.rightToLeft_=a};&#xD;	goog.ui.Component.prototype.hasChildren=function(){return!!this.children_&amp;&amp;0!=this.children_.length};goog.ui.Component.prototype.getChildCount=function(){return this.children_?this.children_.length:0};goog.ui.Component.prototype.getChildIds=function(){var a=[];this.forEachChild(function(b){a.push(b.getId())});return a};goog.ui.Component.prototype.getChild=function(a){return this.childIndex_&amp;&amp;a?goog.object.get(this.childIndex_,a)||null:null};&#xD;	goog.ui.Component.prototype.getChildAt=function(a){return this.children_?this.children_[a]||null:null};goog.ui.Component.prototype.forEachChild=function(a,b){this.children_&amp;&amp;goog.array.forEach(this.children_,a,b)};goog.ui.Component.prototype.indexOfChild=function(a){return this.children_&amp;&amp;a?goog.array.indexOf(this.children_,a):-1};&#xD;	goog.ui.Component.prototype.removeChild=function(a,b){if(a){var c=goog.isString(a)?a:a.getId();a=this.getChild(c);c&amp;&amp;a&amp;&amp;(goog.object.remove(this.childIndex_,c),goog.array.remove(this.children_,a),b&amp;&amp;(a.exitDocument(),a.element_&amp;&amp;goog.dom.removeNode(a.element_)),a.setParent(null))}if(!a)throw Error(goog.ui.Component.Error.NOT_OUR_CHILD);return a};goog.ui.Component.prototype.removeChildAt=function(a,b){return this.removeChild(this.getChildAt(a),b)};&#xD;	goog.ui.Component.prototype.removeChildren=function(a){for(var b=[];this.hasChildren();)b.push(this.removeChildAt(0,a));return b};goog.a11y={};goog.a11y.aria={};&#xD;	goog.a11y.aria.Role={ALERT:"alert",ALERTDIALOG:"alertdialog",APPLICATION:"application",ARTICLE:"article",BANNER:"banner",BUTTON:"button",CHECKBOX:"checkbox",COLUMNHEADER:"columnheader",COMBOBOX:"combobox",COMPLEMENTARY:"complementary",CONTENTINFO:"contentinfo",DEFINITION:"definition",DIALOG:"dialog",DIRECTORY:"directory",DOCUMENT:"document",FORM:"form",GRID:"grid",GRIDCELL:"gridcell",GROUP:"group",HEADING:"heading",IMG:"img",LINK:"link",LIST:"list",LISTBOX:"listbox",LISTITEM:"listitem",LOG:"log",&#xD;	MAIN:"main",MARQUEE:"marquee",MATH:"math",MENU:"menu",MENUBAR:"menubar",MENU_ITEM:"menuitem",MENU_ITEM_CHECKBOX:"menuitemcheckbox",MENU_ITEM_RADIO:"menuitemradio",NAVIGATION:"navigation",NOTE:"note",OPTION:"option",PRESENTATION:"presentation",PROGRESSBAR:"progressbar",RADIO:"radio",RADIOGROUP:"radiogroup",REGION:"region",ROW:"row",ROWGROUP:"rowgroup",ROWHEADER:"rowheader",SCROLLBAR:"scrollbar",SEARCH:"search",SEPARATOR:"separator",SLIDER:"slider",SPINBUTTON:"spinbutton",STATUS:"status",TAB:"tab",&#xD;	TAB_LIST:"tablist",TAB_PANEL:"tabpanel",TEXTBOX:"textbox",TEXTINFO:"textinfo",TIMER:"timer",TOOLBAR:"toolbar",TOOLTIP:"tooltip",TREE:"tree",TREEGRID:"treegrid",TREEITEM:"treeitem"};goog.a11y.aria.State={ACTIVEDESCENDANT:"activedescendant",ATOMIC:"atomic",AUTOCOMPLETE:"autocomplete",BUSY:"busy",CHECKED:"checked",CONTROLS:"controls",DESCRIBEDBY:"describedby",DISABLED:"disabled",DROPEFFECT:"dropeffect",EXPANDED:"expanded",FLOWTO:"flowto",GRABBED:"grabbed",HASPOPUP:"haspopup",HIDDEN:"hidden",INVALID:"invalid",LABEL:"label",LABELLEDBY:"labelledby",LEVEL:"level",LIVE:"live",MULTILINE:"multiline",MULTISELECTABLE:"multiselectable",ORIENTATION:"orientation",OWNS:"owns",POSINSET:"posinset",&#xD;	PRESSED:"pressed",READONLY:"readonly",RELEVANT:"relevant",REQUIRED:"required",SELECTED:"selected",SETSIZE:"setsize",SORT:"sort",VALUEMAX:"valuemax",VALUEMIN:"valuemin",VALUENOW:"valuenow",VALUETEXT:"valuetext"};goog.a11y.aria.AutoCompleteValues={INLINE:"inline",LIST:"list",BOTH:"both",NONE:"none"};goog.a11y.aria.DropEffectValues={COPY:"copy",MOVE:"move",LINK:"link",EXECUTE:"execute",POPUP:"popup",NONE:"none"};goog.a11y.aria.LivePriority={OFF:"off",POLITE:"polite",ASSERTIVE:"assertive"};&#xD;	goog.a11y.aria.OrientationValues={VERTICAL:"vertical",HORIZONTAL:"horizontal"};goog.a11y.aria.RelevantValues={ADDITIONS:"additions",REMOVALS:"removals",TEXT:"text",ALL:"all"};goog.a11y.aria.SortValues={ASCENDING:"ascending",DESCENDING:"descending",NONE:"none",OTHER:"other"};goog.a11y.aria.CheckedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"};goog.a11y.aria.ExpandedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};&#xD;	goog.a11y.aria.GrabbedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};goog.a11y.aria.InvalidValues={FALSE:"false",TRUE:"true",GRAMMAR:"grammar",SPELLING:"spelling"};goog.a11y.aria.PressedValues={TRUE:"true",FALSE:"false",MIXED:"mixed",UNDEFINED:"undefined"};goog.a11y.aria.SelectedValues={TRUE:"true",FALSE:"false",UNDEFINED:"undefined"};goog.a11y.aria.datatables={};&#xD;	goog.a11y.aria.datatables.getDefaultValuesMap=function(){goog.a11y.aria.DefaultStateValueMap_||(goog.a11y.aria.DefaultStateValueMap_=goog.object.create(goog.a11y.aria.State.ATOMIC,!1,goog.a11y.aria.State.AUTOCOMPLETE,"none",goog.a11y.aria.State.DROPEFFECT,"none",goog.a11y.aria.State.HASPOPUP,!1,goog.a11y.aria.State.LIVE,"off",goog.a11y.aria.State.MULTILINE,!1,goog.a11y.aria.State.MULTISELECTABLE,!1,goog.a11y.aria.State.ORIENTATION,"vertical",goog.a11y.aria.State.READONLY,!1,goog.a11y.aria.State.RELEVANT,&#xD;	"additions text",goog.a11y.aria.State.REQUIRED,!1,goog.a11y.aria.State.SORT,"none",goog.a11y.aria.State.BUSY,!1,goog.a11y.aria.State.DISABLED,!1,goog.a11y.aria.State.HIDDEN,!1,goog.a11y.aria.State.INVALID,"false"));return goog.a11y.aria.DefaultStateValueMap_};goog.a11y.aria.ARIA_PREFIX_="aria-";goog.a11y.aria.ROLE_ATTRIBUTE_="role";goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_=goog.object.createSet("A AREA BUTTON HEAD INPUT LINK MENU META OPTGROUP OPTION PROGRESS STYLE SELECT SOURCE TEXTAREA TITLE TRACK".split(" "));&#xD;	goog.a11y.aria.CONTAINER_ROLES_=[goog.a11y.aria.Role.COMBOBOX,goog.a11y.aria.Role.GRID,goog.a11y.aria.Role.GROUP,goog.a11y.aria.Role.LISTBOX,goog.a11y.aria.Role.MENU,goog.a11y.aria.Role.MENUBAR,goog.a11y.aria.Role.RADIOGROUP,goog.a11y.aria.Role.ROW,goog.a11y.aria.Role.ROWGROUP,goog.a11y.aria.Role.TAB_LIST,goog.a11y.aria.Role.TEXTBOX,goog.a11y.aria.Role.TOOLBAR,goog.a11y.aria.Role.TREE,goog.a11y.aria.Role.TREEGRID];&#xD;	goog.a11y.aria.setRole=function(a,b){b?(goog.asserts.ENABLE_ASSERTS&amp;&amp;goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.Role,b),"No such ARIA role "+b),a.setAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_,b)):goog.a11y.aria.removeRole(a)};goog.a11y.aria.getRole=function(a){return a.getAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)||null};goog.a11y.aria.removeRole=function(a){a.removeAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_)};&#xD;	goog.a11y.aria.setState=function(a,b,c){goog.isArray(c)&amp;&amp;(c=c.join(" "));var d=goog.a11y.aria.getAriaAttributeName_(b);""===c||void 0==c?(c=goog.a11y.aria.datatables.getDefaultValuesMap(),b in c?a.setAttribute(d,c[b]):a.removeAttribute(d)):a.setAttribute(d,c)};goog.a11y.aria.toggleState=function(a,b){var c=goog.a11y.aria.getState(a,b);goog.string.isEmptyOrWhitespace(goog.string.makeSafe(c))||"true"==c||"false"==c?goog.a11y.aria.setState(a,b,"true"==c?"false":"true"):goog.a11y.aria.removeState(a,b)};&#xD;	goog.a11y.aria.removeState=function(a,b){a.removeAttribute(goog.a11y.aria.getAriaAttributeName_(b))};goog.a11y.aria.getState=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));return null==c||void 0==c?"":String(c)};goog.a11y.aria.getActiveDescendant=function(a){var b=goog.a11y.aria.getState(a,goog.a11y.aria.State.ACTIVEDESCENDANT);return goog.dom.getOwnerDocument(a).getElementById(b)};&#xD;	goog.a11y.aria.setActiveDescendant=function(a,b){var c="";b&amp;&amp;(c=b.id,goog.asserts.assert(c,"The active element should have an id."));goog.a11y.aria.setState(a,goog.a11y.aria.State.ACTIVEDESCENDANT,c)};goog.a11y.aria.getLabel=function(a){return goog.a11y.aria.getState(a,goog.a11y.aria.State.LABEL)};goog.a11y.aria.setLabel=function(a,b){goog.a11y.aria.setState(a,goog.a11y.aria.State.LABEL,b)};&#xD;	goog.a11y.aria.assertRoleIsSetInternalUtil=function(a,b){if(!goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_[a.tagName]){var c=goog.a11y.aria.getRole(a);goog.asserts.assert(null!=c,"The element ARIA role cannot be null.");goog.asserts.assert(goog.array.contains(b,c),&apos;Non existing or incorrect role set for element.The role set is "&apos;+c+&apos;". The role should be any of "&apos;+b+&apos;". Check the ARIA specification for more details http://www.w3.org/TR/wai-aria/roles.&apos;)}};&#xD;	goog.a11y.aria.getStateBoolean=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert(goog.isBoolean(c)||null==c||"true"==c||"false"==c);return null==c?c:goog.isBoolean(c)?c:"true"==c};goog.a11y.aria.getStateNumber=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert((null==c||!isNaN(Number(c)))&amp;&amp;!goog.isBoolean(c));return null==c?null:Number(c)};&#xD;	goog.a11y.aria.getStateString=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));goog.asserts.assert((null==c||goog.isString(c))&amp;&amp;(""==c||isNaN(Number(c)))&amp;&amp;"true"!=c&amp;&amp;"false"!=c);return null==c||""==c?null:c};goog.a11y.aria.getStringArrayStateInternalUtil=function(a,b){var c=a.getAttribute(goog.a11y.aria.getAriaAttributeName_(b));return goog.a11y.aria.splitStringOnWhitespace_(c)};goog.a11y.aria.hasState=function(a,b){return a.hasAttribute(goog.a11y.aria.getAriaAttributeName_(b))};&#xD;	goog.a11y.aria.isContainerRole=function(a){a=goog.a11y.aria.getRole(a);return goog.array.contains(goog.a11y.aria.CONTAINER_ROLES_,a)};goog.a11y.aria.splitStringOnWhitespace_=function(a){return a?a.split(/\s+/):[]};goog.a11y.aria.getAriaAttributeName_=function(a){goog.asserts.ENABLE_ASSERTS&amp;&amp;(goog.asserts.assert(a,"ARIA attribute cannot be empty."),goog.asserts.assert(goog.object.containsValue(goog.a11y.aria.State,a),"No such ARIA attribute "+a));return goog.a11y.aria.ARIA_PREFIX_+a};goog.events.KeyCodes={WIN_KEY_FF_LINUX:0,MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PLUS_SIGN:43,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,FF_SEMICOLON:59,FF_EQUALS:61,FF_DASH:173,QUESTION_MARK:63,AT_SIGN:64,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,&#xD;	Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SCROLL_LOCK:145,FIRST_MEDIA_KEY:166,LAST_MEDIA_KEY:183,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,&#xD;	SLASH:191,APOSTROPHE:192,TILDE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,MAC_WK_CMD_LEFT:91,MAC_WK_CMD_RIGHT:93,WIN_IME:229,VK_NONAME:252,PHANTOM:255};&#xD;	goog.events.KeyCodes.isTextModifyingKeyEvent=function(a){if(a.altKey&amp;&amp;!a.ctrlKey||a.metaKey||a.keyCode&gt;=goog.events.KeyCodes.F1&amp;&amp;a.keyCode&lt;=goog.events.KeyCodes.F12)return!1;switch(a.keyCode){case goog.events.KeyCodes.ALT:case goog.events.KeyCodes.CAPS_LOCK:case goog.events.KeyCodes.CONTEXT_MENU:case goog.events.KeyCodes.CTRL:case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.END:case goog.events.KeyCodes.ESC:case goog.events.KeyCodes.HOME:case goog.events.KeyCodes.INSERT:case goog.events.KeyCodes.LEFT:case goog.events.KeyCodes.MAC_FF_META:case goog.events.KeyCodes.META:case goog.events.KeyCodes.NUMLOCK:case goog.events.KeyCodes.NUM_CENTER:case goog.events.KeyCodes.PAGE_DOWN:case goog.events.KeyCodes.PAGE_UP:case goog.events.KeyCodes.PAUSE:case goog.events.KeyCodes.PHANTOM:case goog.events.KeyCodes.PRINT_SCREEN:case goog.events.KeyCodes.RIGHT:case goog.events.KeyCodes.SCROLL_LOCK:case goog.events.KeyCodes.SHIFT:case goog.events.KeyCodes.UP:case goog.events.KeyCodes.VK_NONAME:case goog.events.KeyCodes.WIN_KEY:case goog.events.KeyCodes.WIN_KEY_RIGHT:return!1;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return!goog.userAgent.GECKO;&#xD;	default:return a.keyCode&lt;goog.events.KeyCodes.FIRST_MEDIA_KEY||a.keyCode&gt;goog.events.KeyCodes.LAST_MEDIA_KEY}};&#xD;	goog.events.KeyCodes.firesKeyPressEvent=function(a,b,c,d,e,f){if(!(goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&amp;&amp;goog.userAgent.isVersionOrHigher("525")))return!0;if(goog.userAgent.MAC&amp;&amp;e)return goog.events.KeyCodes.isCharacterKey(a);if(e&amp;&amp;!d)return!1;goog.isNumber(b)&amp;&amp;(b=goog.events.KeyCodes.normalizeKeyCode(b));e=b==goog.events.KeyCodes.CTRL||b==goog.events.KeyCodes.ALT||goog.userAgent.MAC&amp;&amp;b==goog.events.KeyCodes.META;f=b==goog.events.KeyCodes.SHIFT&amp;&amp;(d||f);if((!c||goog.userAgent.MAC)&amp;&amp;&#xD;	e||goog.userAgent.MAC&amp;&amp;f)return!1;if((goog.userAgent.WEBKIT||goog.userAgent.EDGE)&amp;&amp;d&amp;&amp;c)switch(a){case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:case goog.events.KeyCodes.TILDE:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:return!1}if(goog.userAgent.IE&amp;&amp;&#xD;	d&amp;&amp;b==a)return!1;switch(a){case goog.events.KeyCodes.ENTER:return!0;case goog.events.KeyCodes.ESC:return!(goog.userAgent.WEBKIT||goog.userAgent.EDGE)}return goog.events.KeyCodes.isCharacterKey(a)};&#xD;	goog.events.KeyCodes.isCharacterKey=function(a){if(a&gt;=goog.events.KeyCodes.ZERO&amp;&amp;a&lt;=goog.events.KeyCodes.NINE||a&gt;=goog.events.KeyCodes.NUM_ZERO&amp;&amp;a&lt;=goog.events.KeyCodes.NUM_MULTIPLY||a&gt;=goog.events.KeyCodes.A&amp;&amp;a&lt;=goog.events.KeyCodes.Z||(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&amp;&amp;0==a)return!0;switch(a){case goog.events.KeyCodes.SPACE:case goog.events.KeyCodes.PLUS_SIGN:case goog.events.KeyCodes.QUESTION_MARK:case goog.events.KeyCodes.AT_SIGN:case goog.events.KeyCodes.NUM_PLUS:case goog.events.KeyCodes.NUM_MINUS:case goog.events.KeyCodes.NUM_PERIOD:case goog.events.KeyCodes.NUM_DIVISION:case goog.events.KeyCodes.SEMICOLON:case goog.events.KeyCodes.FF_SEMICOLON:case goog.events.KeyCodes.DASH:case goog.events.KeyCodes.EQUALS:case goog.events.KeyCodes.FF_EQUALS:case goog.events.KeyCodes.COMMA:case goog.events.KeyCodes.PERIOD:case goog.events.KeyCodes.SLASH:case goog.events.KeyCodes.APOSTROPHE:case goog.events.KeyCodes.SINGLE_QUOTE:case goog.events.KeyCodes.OPEN_SQUARE_BRACKET:case goog.events.KeyCodes.BACKSLASH:case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET:return!0;default:return!1}};&#xD;	goog.events.KeyCodes.normalizeKeyCode=function(a){return goog.userAgent.GECKO?goog.events.KeyCodes.normalizeGeckoKeyCode(a):goog.userAgent.MAC&amp;&amp;goog.userAgent.WEBKIT?goog.events.KeyCodes.normalizeMacWebKitKeyCode(a):a};&#xD;	goog.events.KeyCodes.normalizeGeckoKeyCode=function(a){switch(a){case goog.events.KeyCodes.FF_EQUALS:return goog.events.KeyCodes.EQUALS;case goog.events.KeyCodes.FF_SEMICOLON:return goog.events.KeyCodes.SEMICOLON;case goog.events.KeyCodes.FF_DASH:return goog.events.KeyCodes.DASH;case goog.events.KeyCodes.MAC_FF_META:return goog.events.KeyCodes.META;case goog.events.KeyCodes.WIN_KEY_FF_LINUX:return goog.events.KeyCodes.WIN_KEY;default:return a}};&#xD;	goog.events.KeyCodes.normalizeMacWebKitKeyCode=function(a){switch(a){case goog.events.KeyCodes.MAC_WK_CMD_RIGHT:return goog.events.KeyCodes.META;default:return a}};goog.events.KeyHandler=function(a,b){goog.events.EventTarget.call(this);a&amp;&amp;this.attach(a,b)};goog.inherits(goog.events.KeyHandler,goog.events.EventTarget);goog.events.KeyHandler.prototype.element_=null;goog.events.KeyHandler.prototype.keyPressKey_=null;goog.events.KeyHandler.prototype.keyDownKey_=null;goog.events.KeyHandler.prototype.keyUpKey_=null;goog.events.KeyHandler.prototype.lastKey_=-1;goog.events.KeyHandler.prototype.keyCode_=-1;goog.events.KeyHandler.prototype.altKey_=!1;&#xD;	goog.events.KeyHandler.EventType={KEY:"key"};&#xD;	goog.events.KeyHandler.safariKey_={3:goog.events.KeyCodes.ENTER,12:goog.events.KeyCodes.NUMLOCK,63232:goog.events.KeyCodes.UP,63233:goog.events.KeyCodes.DOWN,63234:goog.events.KeyCodes.LEFT,63235:goog.events.KeyCodes.RIGHT,63236:goog.events.KeyCodes.F1,63237:goog.events.KeyCodes.F2,63238:goog.events.KeyCodes.F3,63239:goog.events.KeyCodes.F4,63240:goog.events.KeyCodes.F5,63241:goog.events.KeyCodes.F6,63242:goog.events.KeyCodes.F7,63243:goog.events.KeyCodes.F8,63244:goog.events.KeyCodes.F9,63245:goog.events.KeyCodes.F10,&#xD;	63246:goog.events.KeyCodes.F11,63247:goog.events.KeyCodes.F12,63248:goog.events.KeyCodes.PRINT_SCREEN,63272:goog.events.KeyCodes.DELETE,63273:goog.events.KeyCodes.HOME,63275:goog.events.KeyCodes.END,63276:goog.events.KeyCodes.PAGE_UP,63277:goog.events.KeyCodes.PAGE_DOWN,63289:goog.events.KeyCodes.NUMLOCK,63302:goog.events.KeyCodes.INSERT};&#xD;	goog.events.KeyHandler.keyIdentifier_={Up:goog.events.KeyCodes.UP,Down:goog.events.KeyCodes.DOWN,Left:goog.events.KeyCodes.LEFT,Right:goog.events.KeyCodes.RIGHT,Enter:goog.events.KeyCodes.ENTER,F1:goog.events.KeyCodes.F1,F2:goog.events.KeyCodes.F2,F3:goog.events.KeyCodes.F3,F4:goog.events.KeyCodes.F4,F5:goog.events.KeyCodes.F5,F6:goog.events.KeyCodes.F6,F7:goog.events.KeyCodes.F7,F8:goog.events.KeyCodes.F8,F9:goog.events.KeyCodes.F9,F10:goog.events.KeyCodes.F10,F11:goog.events.KeyCodes.F11,F12:goog.events.KeyCodes.F12,&#xD;	"U+007F":goog.events.KeyCodes.DELETE,Home:goog.events.KeyCodes.HOME,End:goog.events.KeyCodes.END,PageUp:goog.events.KeyCodes.PAGE_UP,PageDown:goog.events.KeyCodes.PAGE_DOWN,Insert:goog.events.KeyCodes.INSERT};goog.events.KeyHandler.USES_KEYDOWN_=goog.userAgent.IE||goog.userAgent.EDGE||goog.userAgent.WEBKIT&amp;&amp;goog.userAgent.isVersionOrHigher("525");goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_=goog.userAgent.MAC&amp;&amp;goog.userAgent.GECKO;&#xD;	goog.events.KeyHandler.prototype.handleKeyDown_=function(a){(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&amp;&amp;(this.lastKey_==goog.events.KeyCodes.CTRL&amp;&amp;!a.ctrlKey||this.lastKey_==goog.events.KeyCodes.ALT&amp;&amp;!a.altKey||goog.userAgent.MAC&amp;&amp;this.lastKey_==goog.events.KeyCodes.META&amp;&amp;!a.metaKey)&amp;&amp;this.resetState();-1==this.lastKey_&amp;&amp;(a.ctrlKey&amp;&amp;a.keyCode!=goog.events.KeyCodes.CTRL?this.lastKey_=goog.events.KeyCodes.CTRL:a.altKey&amp;&amp;a.keyCode!=goog.events.KeyCodes.ALT?this.lastKey_=goog.events.KeyCodes.ALT:a.metaKey&amp;&amp;&#xD;	a.keyCode!=goog.events.KeyCodes.META&amp;&amp;(this.lastKey_=goog.events.KeyCodes.META));goog.events.KeyHandler.USES_KEYDOWN_&amp;&amp;!goog.events.KeyCodes.firesKeyPressEvent(a.keyCode,this.lastKey_,a.shiftKey,a.ctrlKey,a.altKey,a.metaKey)?this.handleEvent(a):(this.keyCode_=goog.events.KeyCodes.normalizeKeyCode(a.keyCode),goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&amp;&amp;(this.altKey_=a.altKey))};goog.events.KeyHandler.prototype.resetState=function(){this.keyCode_=this.lastKey_=-1};&#xD;	goog.events.KeyHandler.prototype.handleKeyup_=function(a){this.resetState();this.altKey_=a.altKey};&#xD;	goog.events.KeyHandler.prototype.handleEvent=function(a){var b=a.getBrowserEvent(),c=b.altKey;if(goog.userAgent.IE&amp;&amp;a.type==goog.events.EventType.KEYPRESS){var d=this.keyCode_;var e=d!=goog.events.KeyCodes.ENTER&amp;&amp;d!=goog.events.KeyCodes.ESC?b.keyCode:0}else(goog.userAgent.WEBKIT||goog.userAgent.EDGE)&amp;&amp;a.type==goog.events.EventType.KEYPRESS?(d=this.keyCode_,e=0&lt;=b.charCode&amp;&amp;63232&gt;b.charCode&amp;&amp;goog.events.KeyCodes.isCharacterKey(d)?b.charCode:0):goog.userAgent.OPERA&amp;&amp;!goog.userAgent.WEBKIT?(d=this.keyCode_,&#xD;	e=goog.events.KeyCodes.isCharacterKey(d)?b.keyCode:0):(d=b.keyCode||this.keyCode_,e=b.charCode||0,goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_&amp;&amp;(c=this.altKey_),goog.userAgent.MAC&amp;&amp;e==goog.events.KeyCodes.QUESTION_MARK&amp;&amp;d==goog.events.KeyCodes.WIN_KEY&amp;&amp;(d=goog.events.KeyCodes.SLASH));var f=d=goog.events.KeyCodes.normalizeKeyCode(d);d?63232&lt;=d&amp;&amp;d in goog.events.KeyHandler.safariKey_?f=goog.events.KeyHandler.safariKey_[d]:25==d&amp;&amp;a.shiftKey&amp;&amp;(f=9):b.keyIdentifier&amp;&amp;b.keyIdentifier in goog.events.KeyHandler.keyIdentifier_&amp;&amp;&#xD;	(f=goog.events.KeyHandler.keyIdentifier_[b.keyIdentifier]);a=f==this.lastKey_;this.lastKey_=f;b=new goog.events.KeyEvent(f,e,a,b);b.altKey=c;this.dispatchEvent(b)};goog.events.KeyHandler.prototype.getElement=function(){return this.element_};&#xD;	goog.events.KeyHandler.prototype.attach=function(a,b){this.keyUpKey_&amp;&amp;this.detach();this.element_=a;this.keyPressKey_=goog.events.listen(this.element_,goog.events.EventType.KEYPRESS,this,b);this.keyDownKey_=goog.events.listen(this.element_,goog.events.EventType.KEYDOWN,this.handleKeyDown_,b,this);this.keyUpKey_=goog.events.listen(this.element_,goog.events.EventType.KEYUP,this.handleKeyup_,b,this)};&#xD;	goog.events.KeyHandler.prototype.detach=function(){this.keyPressKey_&amp;&amp;(goog.events.unlistenByKey(this.keyPressKey_),goog.events.unlistenByKey(this.keyDownKey_),goog.events.unlistenByKey(this.keyUpKey_),this.keyUpKey_=this.keyDownKey_=this.keyPressKey_=null);this.element_=null;this.keyCode_=this.lastKey_=-1};goog.events.KeyHandler.prototype.disposeInternal=function(){goog.events.KeyHandler.superClass_.disposeInternal.call(this);this.detach()};&#xD;	goog.events.KeyEvent=function(a,b,c,d){goog.events.BrowserEvent.call(this,d);this.type=goog.events.KeyHandler.EventType.KEY;this.keyCode=a;this.charCode=b;this.repeat=c};goog.inherits(goog.events.KeyEvent,goog.events.BrowserEvent);goog.dom.classlist={};goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST=!1;goog.dom.classlist.get=function(a){if(goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList)return a.classList;a=a.className;return goog.isString(a)&amp;&amp;a.match(/\S+/g)||[]};goog.dom.classlist.set=function(a,b){a.className=b};goog.dom.classlist.contains=function(a,b){return goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.contains(b):goog.array.contains(goog.dom.classlist.get(a),b)};&#xD;	goog.dom.classlist.add=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.add(b):goog.dom.classlist.contains(a,b)||(a.className+=0&lt;a.className.length?" "+b:b)};&#xD;	goog.dom.classlist.addAll=function(a,b){if(goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList)goog.array.forEach(b,function(b){goog.dom.classlist.add(a,b)});else{var c={};goog.array.forEach(goog.dom.classlist.get(a),function(a){c[a]=!0});goog.array.forEach(b,function(a){c[a]=!0});a.className="";for(var d in c)a.className+=0&lt;a.className.length?" "+d:d}};&#xD;	goog.dom.classlist.remove=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?a.classList.remove(b):goog.dom.classlist.contains(a,b)&amp;&amp;(a.className=goog.array.filter(goog.dom.classlist.get(a),function(a){return a!=b}).join(" "))};&#xD;	goog.dom.classlist.removeAll=function(a,b){goog.dom.classlist.ALWAYS_USE_DOM_TOKEN_LIST||a.classList?goog.array.forEach(b,function(b){goog.dom.classlist.remove(a,b)}):a.className=goog.array.filter(goog.dom.classlist.get(a),function(a){return!goog.array.contains(b,a)}).join(" ")};goog.dom.classlist.enable=function(a,b,c){c?goog.dom.classlist.add(a,b):goog.dom.classlist.remove(a,b)};goog.dom.classlist.enableAll=function(a,b,c){(c?goog.dom.classlist.addAll:goog.dom.classlist.removeAll)(a,b)};&#xD;	goog.dom.classlist.swap=function(a,b,c){return goog.dom.classlist.contains(a,b)?(goog.dom.classlist.remove(a,b),goog.dom.classlist.add(a,c),!0):!1};goog.dom.classlist.toggle=function(a,b){var c=!goog.dom.classlist.contains(a,b);goog.dom.classlist.enable(a,b,c);return c};goog.dom.classlist.addRemove=function(a,b,c){goog.dom.classlist.remove(a,b);goog.dom.classlist.add(a,c)};goog.ui.registry={};goog.ui.registry.getDefaultRenderer=function(a){for(var b;a;){b=goog.getUid(a);if(b=goog.ui.registry.defaultRenderers_[b])break;a=a.superClass_?a.superClass_.constructor:null}return b?goog.isFunction(b.getInstance)?b.getInstance():new b:null};&#xD;	goog.ui.registry.setDefaultRenderer=function(a,b){if(!goog.isFunction(a))throw Error("Invalid component class "+a);if(!goog.isFunction(b))throw Error("Invalid renderer class "+b);var c=goog.getUid(a);goog.ui.registry.defaultRenderers_[c]=b};goog.ui.registry.getDecoratorByClassName=function(a){return a in goog.ui.registry.decoratorFunctions_?goog.ui.registry.decoratorFunctions_[a]():null};&#xD;	goog.ui.registry.setDecoratorByClassName=function(a,b){if(!a)throw Error("Invalid class name "+a);if(!goog.isFunction(b))throw Error("Invalid decorator function "+b);goog.ui.registry.decoratorFunctions_[a]=b};goog.ui.registry.getDecorator=function(a){goog.asserts.assert(a);for(var b=goog.dom.classlist.get(a),c=0,d=b.length;c&lt;d;c++)if(a=goog.ui.registry.getDecoratorByClassName(b[c]))return a;return null};&#xD;	goog.ui.registry.reset=function(){goog.ui.registry.defaultRenderers_={};goog.ui.registry.decoratorFunctions_={}};goog.ui.registry.defaultRenderers_={};goog.ui.registry.decoratorFunctions_={};goog.ui.ContainerRenderer=function(a){this.ariaRole_=a};goog.addSingletonGetter(goog.ui.ContainerRenderer);goog.ui.ContainerRenderer.getCustomRenderer=function(a,b){var c=new a;c.getCssClass=function(){return b};return c};goog.ui.ContainerRenderer.CSS_CLASS="goog-container";goog.ui.ContainerRenderer.prototype.getAriaRole=function(){return this.ariaRole_};goog.ui.ContainerRenderer.prototype.enableTabIndex=function(a,b){a&amp;&amp;(a.tabIndex=b?0:-1)};&#xD;	goog.ui.ContainerRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "))};goog.ui.ContainerRenderer.prototype.getContentElement=function(a){return a};goog.ui.ContainerRenderer.prototype.canDecorate=function(a){return"DIV"==a.tagName};&#xD;	goog.ui.ContainerRenderer.prototype.decorate=function(a,b){b.id&amp;&amp;a.setId(b.id);var c=this.getCssClass(),d=!1,e=goog.dom.classlist.get(b);e&amp;&amp;goog.array.forEach(e,function(b){b==c?d=!0:b&amp;&amp;this.setStateFromClassName(a,b,c)},this);d||goog.dom.classlist.add(b,c);this.decorateChildren(a,this.getContentElement(b));return b};&#xD;	goog.ui.ContainerRenderer.prototype.setStateFromClassName=function(a,b,c){b==c+"-disabled"?a.setEnabled(!1):b==c+"-horizontal"?a.setOrientation(goog.ui.Container.Orientation.HORIZONTAL):b==c+"-vertical"&amp;&amp;a.setOrientation(goog.ui.Container.Orientation.VERTICAL)};&#xD;	goog.ui.ContainerRenderer.prototype.decorateChildren=function(a,b,c){if(b){c=c||b.firstChild;for(var d;c&amp;&amp;c.parentNode==b;){d=c.nextSibling;if(c.nodeType==goog.dom.NodeType.ELEMENT){var e=this.getDecoratorForChild(c);e&amp;&amp;(e.setElementInternal(c),a.isEnabled()||e.setEnabled(!1),a.addChild(e),e.decorate(c))}else c.nodeValue&amp;&amp;""!=goog.string.trim(c.nodeValue)||b.removeChild(c);c=d}}};goog.ui.ContainerRenderer.prototype.getDecoratorForChild=function(a){return goog.ui.registry.getDecorator(a)};&#xD;	goog.ui.ContainerRenderer.prototype.initializeDom=function(a){a=a.getElement();goog.asserts.assert(a,"The container DOM element cannot be null.");goog.style.setUnselectable(a,!0,goog.userAgent.GECKO);goog.userAgent.IE&amp;&amp;(a.hideFocus=!0);var b=this.getAriaRole();b&amp;&amp;goog.a11y.aria.setRole(a,b)};goog.ui.ContainerRenderer.prototype.getKeyEventTarget=function(a){return a.getElement()};goog.ui.ContainerRenderer.prototype.getCssClass=function(){return goog.ui.ContainerRenderer.CSS_CLASS};&#xD;	goog.ui.ContainerRenderer.prototype.getClassNames=function(a){var b=this.getCssClass(),c=a.getOrientation()==goog.ui.Container.Orientation.HORIZONTAL,c=[b,c?b+"-horizontal":b+"-vertical"];a.isEnabled()||c.push(b+"-disabled");return c};goog.ui.ContainerRenderer.prototype.getDefaultOrientation=function(){return goog.ui.Container.Orientation.VERTICAL};goog.ui.ControlRenderer=function(){};goog.addSingletonGetter(goog.ui.ControlRenderer);goog.tagUnsealableClass(goog.ui.ControlRenderer);goog.ui.ControlRenderer.getCustomRenderer=function(a,b){var c=new a;c.getCssClass=function(){return b};return c};goog.ui.ControlRenderer.CSS_CLASS="goog-control";goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS=[];&#xD;	goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_=goog.object.create(goog.a11y.aria.Role.BUTTON,goog.a11y.aria.State.PRESSED,goog.a11y.aria.Role.CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.MENU_ITEM_CHECKBOX,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.MENU_ITEM_RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.RADIO,goog.a11y.aria.State.CHECKED,goog.a11y.aria.Role.TAB,goog.a11y.aria.State.SELECTED,goog.a11y.aria.Role.TREEITEM,&#xD;	goog.a11y.aria.State.SELECTED);goog.ui.ControlRenderer.prototype.getAriaRole=function(){};goog.ui.ControlRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "),a.getContent())};goog.ui.ControlRenderer.prototype.getContentElement=function(a){return a};&#xD;	goog.ui.ControlRenderer.prototype.enableClassName=function(a,b,c){if(a=a.getElement?a.getElement():a){var d=[b];goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("7")&amp;&amp;(d=this.getAppliedCombinedClassNames_(goog.dom.classlist.get(a),b),d.push(b));goog.dom.classlist.enableAll(a,d,c)}};goog.ui.ControlRenderer.prototype.enableExtraClassName=function(a,b,c){this.enableClassName(a,b,c)};goog.ui.ControlRenderer.prototype.canDecorate=function(a){return!0};&#xD;	goog.ui.ControlRenderer.prototype.decorate=function(a,b){b.id&amp;&amp;a.setId(b.id);var c=this.getContentElement(b);c&amp;&amp;c.firstChild?a.setContentInternal(c.firstChild.nextSibling?goog.array.clone(c.childNodes):c.firstChild):a.setContentInternal(null);var d=0,e=this.getCssClass(),f=this.getStructuralCssClass(),g=!1,h=!1,k=!1,l=goog.array.toArray(goog.dom.classlist.get(b));goog.array.forEach(l,function(a){g||a!=e?h||a!=f?d|=this.getStateFromClass(a):h=!0:(g=!0,f==e&amp;&amp;(h=!0));this.getStateFromClass(a)==goog.ui.Component.State.DISABLED&amp;&amp;&#xD;	(goog.asserts.assertElement(c),goog.dom.isFocusableTabIndex(c)&amp;&amp;goog.dom.setFocusableTabIndex(c,!1))},this);a.setStateInternal(d);g||(l.push(e),f==e&amp;&amp;(h=!0));h||l.push(f);var m=a.getExtraClassNames();m&amp;&amp;l.push.apply(l,m);if(goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("7")){var n=this.getAppliedCombinedClassNames_(l);0&lt;n.length&amp;&amp;(l.push.apply(l,n),k=!0)}g&amp;&amp;h&amp;&amp;!m&amp;&amp;!k||goog.dom.classlist.set(b,l.join(" "));return b};&#xD;	goog.ui.ControlRenderer.prototype.initializeDom=function(a){a.isRightToLeft()&amp;&amp;this.setRightToLeft(a.getElement(),!0);a.isEnabled()&amp;&amp;this.setFocusable(a,a.isVisible())};goog.ui.ControlRenderer.prototype.setAriaRole=function(a,b){var c=b||this.getAriaRole();if(c){goog.asserts.assert(a,"The element passed as a first parameter cannot be null.");var d=goog.a11y.aria.getRole(a);c!=d&amp;&amp;goog.a11y.aria.setRole(a,c)}};&#xD;	goog.ui.ControlRenderer.prototype.setAriaStates=function(a,b){goog.asserts.assert(a);goog.asserts.assert(b);var c=a.getAriaLabel();goog.isDefAndNotNull(c)&amp;&amp;this.setAriaLabel(b,c);a.isVisible()||goog.a11y.aria.setState(b,goog.a11y.aria.State.HIDDEN,!a.isVisible());a.isEnabled()||this.updateAriaState(b,goog.ui.Component.State.DISABLED,!a.isEnabled());a.isSupportedState(goog.ui.Component.State.SELECTED)&amp;&amp;this.updateAriaState(b,goog.ui.Component.State.SELECTED,a.isSelected());a.isSupportedState(goog.ui.Component.State.CHECKED)&amp;&amp;&#xD;	this.updateAriaState(b,goog.ui.Component.State.CHECKED,a.isChecked());a.isSupportedState(goog.ui.Component.State.OPENED)&amp;&amp;this.updateAriaState(b,goog.ui.Component.State.OPENED,a.isOpen())};goog.ui.ControlRenderer.prototype.setAriaLabel=function(a,b){goog.a11y.aria.setLabel(a,b)};goog.ui.ControlRenderer.prototype.setAllowTextSelection=function(a,b){goog.style.setUnselectable(a,!b,!goog.userAgent.IE&amp;&amp;!goog.userAgent.OPERA)};&#xD;	goog.ui.ControlRenderer.prototype.setRightToLeft=function(a,b){this.enableClassName(a,this.getStructuralCssClass()+"-rtl",b)};goog.ui.ControlRenderer.prototype.isFocusable=function(a){var b;return a.isSupportedState(goog.ui.Component.State.FOCUSED)&amp;&amp;(b=a.getKeyEventTarget())?goog.dom.isFocusableTabIndex(b):!1};&#xD;	goog.ui.ControlRenderer.prototype.setFocusable=function(a,b){var c;if(a.isSupportedState(goog.ui.Component.State.FOCUSED)&amp;&amp;(c=a.getKeyEventTarget())){if(!b&amp;&amp;a.isFocused()){try{c.blur()}catch(d){}a.isFocused()&amp;&amp;a.handleBlur(null)}goog.dom.isFocusableTabIndex(c)!=b&amp;&amp;goog.dom.setFocusableTabIndex(c,b)}};goog.ui.ControlRenderer.prototype.setVisible=function(a,b){goog.style.setElementShown(a,b);a&amp;&amp;goog.a11y.aria.setState(a,goog.a11y.aria.State.HIDDEN,!b)};&#xD;	goog.ui.ControlRenderer.prototype.setState=function(a,b,c){var d=a.getElement();if(d){var e=this.getClassForState(b);e&amp;&amp;this.enableClassName(a,e,c);this.updateAriaState(d,b,c)}};&#xD;	goog.ui.ControlRenderer.prototype.updateAriaState=function(a,b,c){goog.ui.ControlRenderer.ariaAttributeMap_||(goog.ui.ControlRenderer.ariaAttributeMap_=goog.object.create(goog.ui.Component.State.DISABLED,goog.a11y.aria.State.DISABLED,goog.ui.Component.State.SELECTED,goog.a11y.aria.State.SELECTED,goog.ui.Component.State.CHECKED,goog.a11y.aria.State.CHECKED,goog.ui.Component.State.OPENED,goog.a11y.aria.State.EXPANDED));goog.asserts.assert(a,"The element passed as a first parameter cannot be null.");&#xD;	(b=goog.ui.ControlRenderer.getAriaStateForAriaRole_(a,goog.ui.ControlRenderer.ariaAttributeMap_[b]))&amp;&amp;goog.a11y.aria.setState(a,b,c)};goog.ui.ControlRenderer.getAriaStateForAriaRole_=function(a,b){var c=goog.a11y.aria.getRole(a);if(!c)return b;c=goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_[c]||b;return goog.ui.ControlRenderer.isAriaState_(b)?c:b};goog.ui.ControlRenderer.isAriaState_=function(a){return a==goog.a11y.aria.State.CHECKED||a==goog.a11y.aria.State.SELECTED};&#xD;	goog.ui.ControlRenderer.prototype.setContent=function(a,b){var c=this.getContentElement(a);if(c&amp;&amp;(goog.dom.removeChildren(c),b))if(goog.isString(b))goog.dom.setTextContent(c,b);else{var d=function(a){if(a){var b=goog.dom.getOwnerDocument(c);c.appendChild(goog.isString(a)?b.createTextNode(a):a)}};goog.isArray(b)?goog.array.forEach(b,d):!goog.isArrayLike(b)||"nodeType"in b?d(b):goog.array.forEach(goog.array.clone(b),d)}};goog.ui.ControlRenderer.prototype.getKeyEventTarget=function(a){return a.getElement()};&#xD;	goog.ui.ControlRenderer.prototype.getCssClass=function(){return goog.ui.ControlRenderer.CSS_CLASS};goog.ui.ControlRenderer.prototype.getIe6ClassCombinations=function(){return[]};goog.ui.ControlRenderer.prototype.getStructuralCssClass=function(){return this.getCssClass()};&#xD;	goog.ui.ControlRenderer.prototype.getClassNames=function(a){var b=this.getCssClass(),c=[b],d=this.getStructuralCssClass();d!=b&amp;&amp;c.push(d);b=this.getClassNamesForState(a.getState());c.push.apply(c,b);(a=a.getExtraClassNames())&amp;&amp;c.push.apply(c,a);goog.userAgent.IE&amp;&amp;!goog.userAgent.isVersionOrHigher("7")&amp;&amp;c.push.apply(c,this.getAppliedCombinedClassNames_(c));return c};&#xD;	goog.ui.ControlRenderer.prototype.getAppliedCombinedClassNames_=function(a,b){var c=[];b&amp;&amp;(a=goog.array.concat(a,[b]));goog.array.forEach(this.getIe6ClassCombinations(),function(d){!goog.array.every(d,goog.partial(goog.array.contains,a))||b&amp;&amp;!goog.array.contains(d,b)||c.push(d.join("_"))});return c};goog.ui.ControlRenderer.prototype.getClassNamesForState=function(a){for(var b=[];a;){var c=a&amp;-a;b.push(this.getClassForState(c));a&amp;=&#126;c}return b};&#xD;	goog.ui.ControlRenderer.prototype.getClassForState=function(a){this.classByState_||this.createClassByStateMap_();return this.classByState_[a]};goog.ui.ControlRenderer.prototype.getStateFromClass=function(a){this.stateByClass_||this.createStateByClassMap_();a=parseInt(this.stateByClass_[a],10);return isNaN(a)?0:a};&#xD;	goog.ui.ControlRenderer.prototype.createClassByStateMap_=function(){var a=this.getStructuralCssClass(),b=!goog.string.contains(goog.string.normalizeWhitespace(a)," ");goog.asserts.assert(b,"ControlRenderer has an invalid css class: &apos;"+a+"&apos;");this.classByState_=goog.object.create(goog.ui.Component.State.DISABLED,a+"-disabled",goog.ui.Component.State.HOVER,a+"-hover",goog.ui.Component.State.ACTIVE,a+"-active",goog.ui.Component.State.SELECTED,a+"-selected",goog.ui.Component.State.CHECKED,a+"-checked",&#xD;	goog.ui.Component.State.FOCUSED,a+"-focused",goog.ui.Component.State.OPENED,a+"-open")};goog.ui.ControlRenderer.prototype.createStateByClassMap_=function(){this.classByState_||this.createClassByStateMap_();this.stateByClass_=goog.object.transpose(this.classByState_)};goog.ui.Control=function(a,b,c){goog.ui.Component.call(this,c);this.renderer_=b||goog.ui.registry.getDefaultRenderer(this.constructor);this.setContentInternal(goog.isDef(a)?a:null);this.ariaLabel_=null};goog.inherits(goog.ui.Control,goog.ui.Component);goog.tagUnsealableClass(goog.ui.Control);goog.ui.Control.registerDecorator=goog.ui.registry.setDecoratorByClassName;goog.ui.Control.getDecorator=goog.ui.registry.getDecorator;goog.ui.Control.prototype.content_=null;goog.ui.Control.prototype.state_=0;&#xD;	goog.ui.Control.prototype.supportedStates_=goog.ui.Component.State.DISABLED|goog.ui.Component.State.HOVER|goog.ui.Component.State.ACTIVE|goog.ui.Component.State.FOCUSED;goog.ui.Control.prototype.autoStates_=goog.ui.Component.State.ALL;goog.ui.Control.prototype.statesWithTransitionEvents_=0;goog.ui.Control.prototype.visible_=!0;goog.ui.Control.prototype.extraClassNames_=null;goog.ui.Control.prototype.handleMouseEvents_=!0;goog.ui.Control.prototype.allowTextSelection_=!1;&#xD;	goog.ui.Control.prototype.preferredAriaRole_=null;goog.ui.Control.prototype.isHandleMouseEvents=function(){return this.handleMouseEvents_};goog.ui.Control.prototype.setHandleMouseEvents=function(a){this.isInDocument()&amp;&amp;a!=this.handleMouseEvents_&amp;&amp;this.enableMouseEventHandling_(a);this.handleMouseEvents_=a};goog.ui.Control.prototype.getKeyEventTarget=function(){return this.renderer_.getKeyEventTarget(this)};&#xD;	goog.ui.Control.prototype.getKeyHandler=function(){return this.keyHandler_||(this.keyHandler_=new goog.events.KeyHandler)};goog.ui.Control.prototype.getRenderer=function(){return this.renderer_};goog.ui.Control.prototype.setRenderer=function(a){if(this.isInDocument())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.getElement()&amp;&amp;this.setElementInternal(null);this.renderer_=a};goog.ui.Control.prototype.getExtraClassNames=function(){return this.extraClassNames_};&#xD;	goog.ui.Control.prototype.addClassName=function(a){a&amp;&amp;(this.extraClassNames_?goog.array.contains(this.extraClassNames_,a)||this.extraClassNames_.push(a):this.extraClassNames_=[a],this.renderer_.enableExtraClassName(this,a,!0))};goog.ui.Control.prototype.removeClassName=function(a){a&amp;&amp;this.extraClassNames_&amp;&amp;goog.array.remove(this.extraClassNames_,a)&amp;&amp;(0==this.extraClassNames_.length&amp;&amp;(this.extraClassNames_=null),this.renderer_.enableExtraClassName(this,a,!1))};&#xD;	goog.ui.Control.prototype.enableClassName=function(a,b){b?this.addClassName(a):this.removeClassName(a)};goog.ui.Control.prototype.createDom=function(){var a=this.renderer_.createDom(this);this.setElementInternal(a);this.renderer_.setAriaRole(a,this.getPreferredAriaRole());this.isAllowTextSelection()||this.renderer_.setAllowTextSelection(a,!1);this.isVisible()||this.renderer_.setVisible(a,!1)};goog.ui.Control.prototype.getPreferredAriaRole=function(){return this.preferredAriaRole_};&#xD;	goog.ui.Control.prototype.setPreferredAriaRole=function(a){this.preferredAriaRole_=a};goog.ui.Control.prototype.getAriaLabel=function(){return this.ariaLabel_};goog.ui.Control.prototype.setAriaLabel=function(a){this.ariaLabel_=a;var b=this.getElement();b&amp;&amp;this.renderer_.setAriaLabel(b,a)};goog.ui.Control.prototype.getContentElement=function(){return this.renderer_.getContentElement(this.getElement())};goog.ui.Control.prototype.canDecorate=function(a){return this.renderer_.canDecorate(a)};&#xD;	goog.ui.Control.prototype.decorateInternal=function(a){a=this.renderer_.decorate(this,a);this.setElementInternal(a);this.renderer_.setAriaRole(a,this.getPreferredAriaRole());this.isAllowTextSelection()||this.renderer_.setAllowTextSelection(a,!1);this.visible_="none"!=a.style.display};&#xD;	goog.ui.Control.prototype.enterDocument=function(){goog.ui.Control.superClass_.enterDocument.call(this);this.renderer_.setAriaStates(this,this.getElementStrict());this.renderer_.initializeDom(this);if(this.supportedStates_&amp;&#126;goog.ui.Component.State.DISABLED&amp;&amp;(this.isHandleMouseEvents()&amp;&amp;this.enableMouseEventHandling_(!0),this.isSupportedState(goog.ui.Component.State.FOCUSED))){var a=this.getKeyEventTarget();if(a){var b=this.getKeyHandler();b.attach(a);this.getHandler().listen(b,goog.events.KeyHandler.EventType.KEY,&#xD;	this.handleKeyEvent).listen(a,goog.events.EventType.FOCUS,this.handleFocus).listen(a,goog.events.EventType.BLUR,this.handleBlur)}}};&#xD;	goog.ui.Control.prototype.enableMouseEventHandling_=function(a){var b=this.getHandler(),c=this.getElement();a?(b.listen(c,goog.events.EventType.MOUSEOVER,this.handleMouseOver).listen(c,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).listen(c,goog.events.EventType.MOUSEUP,this.handleMouseUp).listen(c,goog.events.EventType.MOUSEOUT,this.handleMouseOut),this.handleContextMenu!=goog.nullFunction&amp;&amp;b.listen(c,goog.events.EventType.CONTEXTMENU,this.handleContextMenu),goog.userAgent.IE&amp;&amp;(goog.userAgent.isVersionOrHigher(9)||&#xD;	b.listen(c,goog.events.EventType.DBLCLICK,this.handleDblClick),this.ieMouseEventSequenceSimulator_||(this.ieMouseEventSequenceSimulator_=new goog.ui.Control.IeMouseEventSequenceSimulator_(this),this.registerDisposable(this.ieMouseEventSequenceSimulator_)))):(b.unlisten(c,goog.events.EventType.MOUSEOVER,this.handleMouseOver).unlisten(c,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).unlisten(c,goog.events.EventType.MOUSEUP,this.handleMouseUp).unlisten(c,goog.events.EventType.MOUSEOUT,this.handleMouseOut),&#xD;	this.handleContextMenu!=goog.nullFunction&amp;&amp;b.unlisten(c,goog.events.EventType.CONTEXTMENU,this.handleContextMenu),goog.userAgent.IE&amp;&amp;(goog.userAgent.isVersionOrHigher(9)||b.unlisten(c,goog.events.EventType.DBLCLICK,this.handleDblClick),goog.dispose(this.ieMouseEventSequenceSimulator_),this.ieMouseEventSequenceSimulator_=null))};&#xD;	goog.ui.Control.prototype.exitDocument=function(){goog.ui.Control.superClass_.exitDocument.call(this);this.keyHandler_&amp;&amp;this.keyHandler_.detach();this.isVisible()&amp;&amp;this.isEnabled()&amp;&amp;this.renderer_.setFocusable(this,!1)};goog.ui.Control.prototype.disposeInternal=function(){goog.ui.Control.superClass_.disposeInternal.call(this);this.keyHandler_&amp;&amp;(this.keyHandler_.dispose(),delete this.keyHandler_);delete this.renderer_;this.ieMouseEventSequenceSimulator_=this.extraClassNames_=this.content_=null};&#xD;	goog.ui.Control.prototype.getContent=function(){return this.content_};goog.ui.Control.prototype.setContent=function(a){this.renderer_.setContent(this.getElement(),a);this.setContentInternal(a)};goog.ui.Control.prototype.setContentInternal=function(a){this.content_=a};goog.ui.Control.prototype.getCaption=function(){var a=this.getContent();if(!a)return"";a=goog.isString(a)?a:goog.isArray(a)?goog.array.map(a,goog.dom.getRawTextContent).join(""):goog.dom.getTextContent(a);return goog.string.collapseBreakingSpaces(a)};&#xD;	goog.ui.Control.prototype.setCaption=function(a){this.setContent(a)};goog.ui.Control.prototype.setRightToLeft=function(a){goog.ui.Control.superClass_.setRightToLeft.call(this,a);var b=this.getElement();b&amp;&amp;this.renderer_.setRightToLeft(b,a)};goog.ui.Control.prototype.isAllowTextSelection=function(){return this.allowTextSelection_};goog.ui.Control.prototype.setAllowTextSelection=function(a){this.allowTextSelection_=a;var b=this.getElement();b&amp;&amp;this.renderer_.setAllowTextSelection(b,a)};&#xD;	goog.ui.Control.prototype.isVisible=function(){return this.visible_};goog.ui.Control.prototype.setVisible=function(a,b){if(b||this.visible_!=a&amp;&amp;this.dispatchEvent(a?goog.ui.Component.EventType.SHOW:goog.ui.Component.EventType.HIDE)){var c=this.getElement();c&amp;&amp;this.renderer_.setVisible(c,a);this.isEnabled()&amp;&amp;this.renderer_.setFocusable(this,a);this.visible_=a;return!0}return!1};goog.ui.Control.prototype.isEnabled=function(){return!this.hasState(goog.ui.Component.State.DISABLED)};&#xD;	goog.ui.Control.prototype.isParentDisabled_=function(){var a=this.getParent();return!!a&amp;&amp;"function"==typeof a.isEnabled&amp;&amp;!a.isEnabled()};goog.ui.Control.prototype.setEnabled=function(a){!this.isParentDisabled_()&amp;&amp;this.isTransitionAllowed(goog.ui.Component.State.DISABLED,!a)&amp;&amp;(a||(this.setActive(!1),this.setHighlighted(!1)),this.isVisible()&amp;&amp;this.renderer_.setFocusable(this,a),this.setState(goog.ui.Component.State.DISABLED,!a,!0))};goog.ui.Control.prototype.isHighlighted=function(){return this.hasState(goog.ui.Component.State.HOVER)};&#xD;	goog.ui.Control.prototype.setHighlighted=function(a){this.isTransitionAllowed(goog.ui.Component.State.HOVER,a)&amp;&amp;this.setState(goog.ui.Component.State.HOVER,a)};goog.ui.Control.prototype.isActive=function(){return this.hasState(goog.ui.Component.State.ACTIVE)};goog.ui.Control.prototype.setActive=function(a){this.isTransitionAllowed(goog.ui.Component.State.ACTIVE,a)&amp;&amp;this.setState(goog.ui.Component.State.ACTIVE,a)};goog.ui.Control.prototype.isSelected=function(){return this.hasState(goog.ui.Component.State.SELECTED)};&#xD;	goog.ui.Control.prototype.setSelected=function(a){this.isTransitionAllowed(goog.ui.Component.State.SELECTED,a)&amp;&amp;this.setState(goog.ui.Component.State.SELECTED,a)};goog.ui.Control.prototype.isChecked=function(){return this.hasState(goog.ui.Component.State.CHECKED)};goog.ui.Control.prototype.setChecked=function(a){this.isTransitionAllowed(goog.ui.Component.State.CHECKED,a)&amp;&amp;this.setState(goog.ui.Component.State.CHECKED,a)};goog.ui.Control.prototype.isFocused=function(){return this.hasState(goog.ui.Component.State.FOCUSED)};&#xD;	goog.ui.Control.prototype.setFocused=function(a){this.isTransitionAllowed(goog.ui.Component.State.FOCUSED,a)&amp;&amp;this.setState(goog.ui.Component.State.FOCUSED,a)};goog.ui.Control.prototype.isOpen=function(){return this.hasState(goog.ui.Component.State.OPENED)};goog.ui.Control.prototype.setOpen=function(a){this.isTransitionAllowed(goog.ui.Component.State.OPENED,a)&amp;&amp;this.setState(goog.ui.Component.State.OPENED,a)};goog.ui.Control.prototype.getState=function(){return this.state_};&#xD;	goog.ui.Control.prototype.hasState=function(a){return!!(this.state_&amp;a)};goog.ui.Control.prototype.setState=function(a,b,c){c||a!=goog.ui.Component.State.DISABLED?this.isSupportedState(a)&amp;&amp;b!=this.hasState(a)&amp;&amp;(this.renderer_.setState(this,a,b),this.state_=b?this.state_|a:this.state_&amp;&#126;a):this.setEnabled(!b)};goog.ui.Control.prototype.setStateInternal=function(a){this.state_=a};goog.ui.Control.prototype.isSupportedState=function(a){return!!(this.supportedStates_&amp;a)};&#xD;	goog.ui.Control.prototype.setSupportedState=function(a,b){if(this.isInDocument()&amp;&amp;this.hasState(a)&amp;&amp;!b)throw Error(goog.ui.Component.Error.ALREADY_RENDERED);!b&amp;&amp;this.hasState(a)&amp;&amp;this.setState(a,!1);this.supportedStates_=b?this.supportedStates_|a:this.supportedStates_&amp;&#126;a};goog.ui.Control.prototype.isAutoState=function(a){return!!(this.autoStates_&amp;a)&amp;&amp;this.isSupportedState(a)};goog.ui.Control.prototype.setAutoStates=function(a,b){this.autoStates_=b?this.autoStates_|a:this.autoStates_&amp;&#126;a};&#xD;	goog.ui.Control.prototype.isDispatchTransitionEvents=function(a){return!!(this.statesWithTransitionEvents_&amp;a)&amp;&amp;this.isSupportedState(a)};goog.ui.Control.prototype.setDispatchTransitionEvents=function(a,b){this.statesWithTransitionEvents_=b?this.statesWithTransitionEvents_|a:this.statesWithTransitionEvents_&amp;&#126;a};&#xD;	goog.ui.Control.prototype.isTransitionAllowed=function(a,b){return this.isSupportedState(a)&amp;&amp;this.hasState(a)!=b&amp;&amp;(!(this.statesWithTransitionEvents_&amp;a)||this.dispatchEvent(goog.ui.Component.getStateTransitionEvent(a,b)))&amp;&amp;!this.isDisposed()};goog.ui.Control.prototype.handleMouseOver=function(a){!goog.ui.Control.isMouseEventWithinElement_(a,this.getElement())&amp;&amp;this.dispatchEvent(goog.ui.Component.EventType.ENTER)&amp;&amp;this.isEnabled()&amp;&amp;this.isAutoState(goog.ui.Component.State.HOVER)&amp;&amp;this.setHighlighted(!0)};&#xD;	goog.ui.Control.prototype.handleMouseOut=function(a){!goog.ui.Control.isMouseEventWithinElement_(a,this.getElement())&amp;&amp;this.dispatchEvent(goog.ui.Component.EventType.LEAVE)&amp;&amp;(this.isAutoState(goog.ui.Component.State.ACTIVE)&amp;&amp;this.setActive(!1),this.isAutoState(goog.ui.Component.State.HOVER)&amp;&amp;this.setHighlighted(!1))};goog.ui.Control.prototype.handleContextMenu=goog.nullFunction;goog.ui.Control.isMouseEventWithinElement_=function(a,b){return!!a.relatedTarget&amp;&amp;goog.dom.contains(b,a.relatedTarget)};&#xD;	goog.ui.Control.prototype.handleMouseDown=function(a){this.isEnabled()&amp;&amp;(this.isAutoState(goog.ui.Component.State.HOVER)&amp;&amp;this.setHighlighted(!0),a.isMouseActionButton()&amp;&amp;(this.isAutoState(goog.ui.Component.State.ACTIVE)&amp;&amp;this.setActive(!0),this.renderer_&amp;&amp;this.renderer_.isFocusable(this)&amp;&amp;this.getKeyEventTarget().focus()));!this.isAllowTextSelection()&amp;&amp;a.isMouseActionButton()&amp;&amp;a.preventDefault()};&#xD;	goog.ui.Control.prototype.handleMouseUp=function(a){this.isEnabled()&amp;&amp;(this.isAutoState(goog.ui.Component.State.HOVER)&amp;&amp;this.setHighlighted(!0),this.isActive()&amp;&amp;this.performActionInternal(a)&amp;&amp;this.isAutoState(goog.ui.Component.State.ACTIVE)&amp;&amp;this.setActive(!1))};goog.ui.Control.prototype.handleDblClick=function(a){this.isEnabled()&amp;&amp;this.performActionInternal(a)};&#xD;	goog.ui.Control.prototype.performActionInternal=function(a){this.isAutoState(goog.ui.Component.State.CHECKED)&amp;&amp;this.setChecked(!this.isChecked());this.isAutoState(goog.ui.Component.State.SELECTED)&amp;&amp;this.setSelected(!0);this.isAutoState(goog.ui.Component.State.OPENED)&amp;&amp;this.setOpen(!this.isOpen());var b=new goog.events.Event(goog.ui.Component.EventType.ACTION,this);a&amp;&amp;(b.altKey=a.altKey,b.ctrlKey=a.ctrlKey,b.metaKey=a.metaKey,b.shiftKey=a.shiftKey,b.platformModifierKey=a.platformModifierKey);return this.dispatchEvent(b)};&#xD;	goog.ui.Control.prototype.handleFocus=function(a){this.isAutoState(goog.ui.Component.State.FOCUSED)&amp;&amp;this.setFocused(!0)};goog.ui.Control.prototype.handleBlur=function(a){this.isAutoState(goog.ui.Component.State.ACTIVE)&amp;&amp;this.setActive(!1);this.isAutoState(goog.ui.Component.State.FOCUSED)&amp;&amp;this.setFocused(!1)};goog.ui.Control.prototype.handleKeyEvent=function(a){return this.isVisible()&amp;&amp;this.isEnabled()&amp;&amp;this.handleKeyEventInternal(a)?(a.preventDefault(),a.stopPropagation(),!0):!1};&#xD;	goog.ui.Control.prototype.handleKeyEventInternal=function(a){return a.keyCode==goog.events.KeyCodes.ENTER&amp;&amp;this.performActionInternal(a)};goog.ui.registry.setDefaultRenderer(goog.ui.Control,goog.ui.ControlRenderer);goog.ui.registry.setDecoratorByClassName(goog.ui.ControlRenderer.CSS_CLASS,function(){return new goog.ui.Control(null)});&#xD;	goog.ui.Control.IeMouseEventSequenceSimulator_=function(a){goog.Disposable.call(this);this.control_=a;this.clickExpected_=!1;this.handler_=new goog.events.EventHandler(this);this.registerDisposable(this.handler_);a=this.control_.getElementStrict();this.handler_.listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseDown_).listen(a,goog.events.EventType.MOUSEUP,this.handleMouseUp_).listen(a,goog.events.EventType.CLICK,this.handleClick_)};&#xD;	goog.inherits(goog.ui.Control.IeMouseEventSequenceSimulator_,goog.Disposable);goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_=!goog.userAgent.IE||goog.userAgent.isDocumentModeOrHigher(9);goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseDown_=function(){this.clickExpected_=!1};goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleMouseUp_=function(){this.clickExpected_=!0};&#xD;	goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_=function(a,b){if(!goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_)return a.button=goog.events.BrowserEvent.MouseButton.LEFT,a.type=b,a;var c=document.createEvent("MouseEvents");c.initMouseEvent(b,a.bubbles,a.cancelable,a.view||null,a.detail,a.screenX,a.screenY,a.clientX,a.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,goog.events.BrowserEvent.MouseButton.LEFT,a.relatedTarget||null);return c};&#xD;	goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.handleClick_=function(a){if(this.clickExpected_)this.clickExpected_=!1;else{var b=a.getBrowserEvent(),c=b.button,d=b.type,e=goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b,goog.events.EventType.MOUSEDOWN);this.control_.handleMouseDown(new goog.events.BrowserEvent(e,a.currentTarget));e=goog.ui.Control.IeMouseEventSequenceSimulator_.makeLeftMouseEvent_(b,goog.events.EventType.MOUSEUP);this.control_.handleMouseUp(new goog.events.BrowserEvent(e,&#xD;	a.currentTarget));goog.ui.Control.IeMouseEventSequenceSimulator_.SYNTHETIC_EVENTS_||(b.button=c,b.type=d)}};goog.ui.Control.IeMouseEventSequenceSimulator_.prototype.disposeInternal=function(){this.control_=null;goog.ui.Control.IeMouseEventSequenceSimulator_.superClass_.disposeInternal.call(this)};goog.ui.Container=function(a,b,c){goog.ui.Component.call(this,c);this.renderer_=b||goog.ui.ContainerRenderer.getInstance();this.orientation_=a||this.renderer_.getDefaultOrientation()};goog.inherits(goog.ui.Container,goog.ui.Component);goog.tagUnsealableClass(goog.ui.Container);goog.ui.Container.EventType={AFTER_SHOW:"aftershow",AFTER_HIDE:"afterhide"};goog.ui.Container.Orientation={HORIZONTAL:"horizontal",VERTICAL:"vertical"};goog.ui.Container.prototype.keyEventTarget_=null;&#xD;	goog.ui.Container.prototype.keyHandler_=null;goog.ui.Container.prototype.renderer_=null;goog.ui.Container.prototype.orientation_=null;goog.ui.Container.prototype.visible_=!0;goog.ui.Container.prototype.enabled_=!0;goog.ui.Container.prototype.focusable_=!0;goog.ui.Container.prototype.highlightedIndex_=-1;goog.ui.Container.prototype.openItem_=null;goog.ui.Container.prototype.mouseButtonPressed_=!1;goog.ui.Container.prototype.allowFocusableChildren_=!1;&#xD;	goog.ui.Container.prototype.openFollowsHighlight_=!0;goog.ui.Container.prototype.childElementIdMap_=null;goog.ui.Container.prototype.getKeyEventTarget=function(){return this.keyEventTarget_||this.renderer_.getKeyEventTarget(this)};&#xD;	goog.ui.Container.prototype.setKeyEventTarget=function(a){if(this.focusable_){var b=this.getKeyEventTarget(),c=this.isInDocument();this.keyEventTarget_=a;var d=this.getKeyEventTarget();c&amp;&amp;(this.keyEventTarget_=b,this.enableFocusHandling_(!1),this.keyEventTarget_=a,this.getKeyHandler().attach(d),this.enableFocusHandling_(!0))}else throw Error("Can&apos;t set key event target for container that doesn&apos;t support keyboard focus!");};&#xD;	goog.ui.Container.prototype.getKeyHandler=function(){return this.keyHandler_||(this.keyHandler_=new goog.events.KeyHandler(this.getKeyEventTarget()))};goog.ui.Container.prototype.getRenderer=function(){return this.renderer_};goog.ui.Container.prototype.setRenderer=function(a){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.renderer_=a};goog.ui.Container.prototype.createDom=function(){this.setElementInternal(this.renderer_.createDom(this))};&#xD;	goog.ui.Container.prototype.getContentElement=function(){return this.renderer_.getContentElement(this.getElement())};goog.ui.Container.prototype.canDecorate=function(a){return this.renderer_.canDecorate(a)};goog.ui.Container.prototype.decorateInternal=function(a){this.setElementInternal(this.renderer_.decorate(this,a));"none"==a.style.display&amp;&amp;(this.visible_=!1)};&#xD;	goog.ui.Container.prototype.enterDocument=function(){goog.ui.Container.superClass_.enterDocument.call(this);this.forEachChild(function(a){a.isInDocument()&amp;&amp;this.registerChildId_(a)},this);var a=this.getElement();this.renderer_.initializeDom(this);this.setVisible(this.visible_,!0);this.getHandler().listen(this,goog.ui.Component.EventType.ENTER,this.handleEnterItem).listen(this,goog.ui.Component.EventType.HIGHLIGHT,this.handleHighlightItem).listen(this,goog.ui.Component.EventType.UNHIGHLIGHT,this.handleUnHighlightItem).listen(this,&#xD;	goog.ui.Component.EventType.OPEN,this.handleOpenItem).listen(this,goog.ui.Component.EventType.CLOSE,this.handleCloseItem).listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseDown).listen(goog.dom.getOwnerDocument(a),goog.events.EventType.MOUSEUP,this.handleDocumentMouseUp).listen(a,[goog.events.EventType.MOUSEDOWN,goog.events.EventType.MOUSEUP,goog.events.EventType.MOUSEOVER,goog.events.EventType.MOUSEOUT,goog.events.EventType.CONTEXTMENU],this.handleChildMouseEvents);this.isFocusable()&amp;&amp;this.enableFocusHandling_(!0)};&#xD;	goog.ui.Container.prototype.enableFocusHandling_=function(a){var b=this.getHandler(),c=this.getKeyEventTarget();a?b.listen(c,goog.events.EventType.FOCUS,this.handleFocus).listen(c,goog.events.EventType.BLUR,this.handleBlur).listen(this.getKeyHandler(),goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent):b.unlisten(c,goog.events.EventType.FOCUS,this.handleFocus).unlisten(c,goog.events.EventType.BLUR,this.handleBlur).unlisten(this.getKeyHandler(),goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent)};&#xD;	goog.ui.Container.prototype.exitDocument=function(){this.setHighlightedIndex(-1);this.openItem_&amp;&amp;this.openItem_.setOpen(!1);this.mouseButtonPressed_=!1;goog.ui.Container.superClass_.exitDocument.call(this)};goog.ui.Container.prototype.disposeInternal=function(){goog.ui.Container.superClass_.disposeInternal.call(this);this.keyHandler_&amp;&amp;(this.keyHandler_.dispose(),this.keyHandler_=null);this.renderer_=this.openItem_=this.childElementIdMap_=this.keyEventTarget_=null};&#xD;	goog.ui.Container.prototype.handleEnterItem=function(a){return!0};&#xD;	goog.ui.Container.prototype.handleHighlightItem=function(a){var b=this.indexOfChild(a.target);if(-1&lt;b&amp;&amp;b!=this.highlightedIndex_){var c=this.getHighlighted();c&amp;&amp;c.setHighlighted(!1);this.highlightedIndex_=b;c=this.getHighlighted();this.isMouseButtonPressed()&amp;&amp;c.setActive(!0);this.openFollowsHighlight_&amp;&amp;this.openItem_&amp;&amp;c!=this.openItem_&amp;&amp;(c.isSupportedState(goog.ui.Component.State.OPENED)?c.setOpen(!0):this.openItem_.setOpen(!1))}b=this.getElement();goog.asserts.assert(b,"The DOM element for the container cannot be null.");&#xD;	null!=a.target.getElement()&amp;&amp;goog.a11y.aria.setState(b,goog.a11y.aria.State.ACTIVEDESCENDANT,a.target.getElement().id)};goog.ui.Container.prototype.handleUnHighlightItem=function(a){a.target==this.getHighlighted()&amp;&amp;(this.highlightedIndex_=-1);a=this.getElement();goog.asserts.assert(a,"The DOM element for the container cannot be null.");goog.a11y.aria.removeState(a,goog.a11y.aria.State.ACTIVEDESCENDANT)};&#xD;	goog.ui.Container.prototype.handleOpenItem=function(a){(a=a.target)&amp;&amp;a!=this.openItem_&amp;&amp;a.getParent()==this&amp;&amp;(this.openItem_&amp;&amp;this.openItem_.setOpen(!1),this.openItem_=a)};goog.ui.Container.prototype.handleCloseItem=function(a){a.target==this.openItem_&amp;&amp;(this.openItem_=null);var b=this.getElement(),c=a.target.getElement();b&amp;&amp;a.target.isHighlighted()&amp;&amp;c&amp;&amp;goog.a11y.aria.setActiveDescendant(b,c)};&#xD;	goog.ui.Container.prototype.handleMouseDown=function(a){this.enabled_&amp;&amp;this.setMouseButtonPressed(!0);var b=this.getKeyEventTarget();b&amp;&amp;goog.dom.isFocusableTabIndex(b)?b.focus():a.preventDefault()};goog.ui.Container.prototype.handleDocumentMouseUp=function(a){this.setMouseButtonPressed(!1)};&#xD;	goog.ui.Container.prototype.handleChildMouseEvents=function(a){var b=this.getOwnerControl(a.target);if(b)switch(a.type){case goog.events.EventType.MOUSEDOWN:b.handleMouseDown(a);break;case goog.events.EventType.MOUSEUP:b.handleMouseUp(a);break;case goog.events.EventType.MOUSEOVER:b.handleMouseOver(a);break;case goog.events.EventType.MOUSEOUT:b.handleMouseOut(a);break;case goog.events.EventType.CONTEXTMENU:b.handleContextMenu(a)}};&#xD;	goog.ui.Container.prototype.getOwnerControl=function(a){if(this.childElementIdMap_)for(var b=this.getElement();a&amp;&amp;a!==b;){var c=a.id;if(c in this.childElementIdMap_)return this.childElementIdMap_[c];a=a.parentNode}return null};goog.ui.Container.prototype.handleFocus=function(a){};goog.ui.Container.prototype.handleBlur=function(a){this.setHighlightedIndex(-1);this.setMouseButtonPressed(!1);this.openItem_&amp;&amp;this.openItem_.setOpen(!1)};&#xD;	goog.ui.Container.prototype.handleKeyEvent=function(a){return this.isEnabled()&amp;&amp;this.isVisible()&amp;&amp;(0!=this.getChildCount()||this.keyEventTarget_)&amp;&amp;this.handleKeyEventInternal(a)?(a.preventDefault(),a.stopPropagation(),!0):!1};&#xD;	goog.ui.Container.prototype.handleKeyEventInternal=function(a){var b=this.getHighlighted();if(b&amp;&amp;"function"==typeof b.handleKeyEvent&amp;&amp;b.handleKeyEvent(a)||this.openItem_&amp;&amp;this.openItem_!=b&amp;&amp;"function"==typeof this.openItem_.handleKeyEvent&amp;&amp;this.openItem_.handleKeyEvent(a))return!0;if(a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)return!1;switch(a.keyCode){case goog.events.KeyCodes.ESC:if(this.isFocusable())this.getKeyEventTarget().blur();else return!1;break;case goog.events.KeyCodes.HOME:this.highlightFirst();&#xD;	break;case goog.events.KeyCodes.END:this.highlightLast();break;case goog.events.KeyCodes.UP:if(this.orientation_==goog.ui.Container.Orientation.VERTICAL)this.highlightPrevious();else return!1;break;case goog.events.KeyCodes.LEFT:if(this.orientation_==goog.ui.Container.Orientation.HORIZONTAL)this.isRightToLeft()?this.highlightNext():this.highlightPrevious();else return!1;break;case goog.events.KeyCodes.DOWN:if(this.orientation_==goog.ui.Container.Orientation.VERTICAL)this.highlightNext();else return!1;&#xD;	break;case goog.events.KeyCodes.RIGHT:if(this.orientation_==goog.ui.Container.Orientation.HORIZONTAL)this.isRightToLeft()?this.highlightPrevious():this.highlightNext();else return!1;break;default:return!1}return!0};goog.ui.Container.prototype.registerChildId_=function(a){var b=a.getElement(),b=b.id||(b.id=a.getId());this.childElementIdMap_||(this.childElementIdMap_={});this.childElementIdMap_[b]=a};&#xD;	goog.ui.Container.prototype.addChild=function(a,b){goog.asserts.assertInstanceof(a,goog.ui.Control,"The child of a container must be a control");goog.ui.Container.superClass_.addChild.call(this,a,b)};&#xD;	goog.ui.Container.prototype.addChildAt=function(a,b,c){goog.asserts.assertInstanceof(a,goog.ui.Control);a.setDispatchTransitionEvents(goog.ui.Component.State.HOVER,!0);a.setDispatchTransitionEvents(goog.ui.Component.State.OPENED,!0);!this.isFocusable()&amp;&amp;this.isFocusableChildrenAllowed()||a.setSupportedState(goog.ui.Component.State.FOCUSED,!1);a.setHandleMouseEvents(!1);var d=a.getParent()==this?this.indexOfChild(a):-1;goog.ui.Container.superClass_.addChildAt.call(this,a,b,c);a.isInDocument()&amp;&amp;this.isInDocument()&amp;&amp;&#xD;	this.registerChildId_(a);this.updateHighlightedIndex_(d,b)};goog.ui.Container.prototype.updateHighlightedIndex_=function(a,b){-1==a&amp;&amp;(a=this.getChildCount());a==this.highlightedIndex_?this.highlightedIndex_=Math.min(this.getChildCount()-1,b):a&gt;this.highlightedIndex_&amp;&amp;b&lt;=this.highlightedIndex_?this.highlightedIndex_++:a&lt;this.highlightedIndex_&amp;&amp;b&gt;this.highlightedIndex_&amp;&amp;this.highlightedIndex_--};&#xD;	goog.ui.Container.prototype.removeChild=function(a,b){a=goog.isString(a)?this.getChild(a):a;goog.asserts.assertInstanceof(a,goog.ui.Control);if(a){var c=this.indexOfChild(a);-1!=c&amp;&amp;(c==this.highlightedIndex_?(a.setHighlighted(!1),this.highlightedIndex_=-1):c&lt;this.highlightedIndex_&amp;&amp;this.highlightedIndex_--);(c=a.getElement())&amp;&amp;c.id&amp;&amp;this.childElementIdMap_&amp;&amp;goog.object.remove(this.childElementIdMap_,c.id)}a=goog.ui.Container.superClass_.removeChild.call(this,a,b);a.setHandleMouseEvents(!0);return a};&#xD;	goog.ui.Container.prototype.getOrientation=function(){return this.orientation_};goog.ui.Container.prototype.setOrientation=function(a){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.orientation_=a};goog.ui.Container.prototype.isVisible=function(){return this.visible_};&#xD;	goog.ui.Container.prototype.setVisible=function(a,b){if(b||this.visible_!=a&amp;&amp;this.dispatchEvent(a?goog.ui.Component.EventType.SHOW:goog.ui.Component.EventType.HIDE)){this.visible_=a;var c=this.getElement();c&amp;&amp;(goog.style.setElementShown(c,a),this.isFocusable()&amp;&amp;this.renderer_.enableTabIndex(this.getKeyEventTarget(),this.enabled_&amp;&amp;this.visible_),b||this.dispatchEvent(this.visible_?goog.ui.Container.EventType.AFTER_SHOW:goog.ui.Container.EventType.AFTER_HIDE));return!0}return!1};&#xD;	goog.ui.Container.prototype.isEnabled=function(){return this.enabled_};&#xD;	goog.ui.Container.prototype.setEnabled=function(a){this.enabled_!=a&amp;&amp;this.dispatchEvent(a?goog.ui.Component.EventType.ENABLE:goog.ui.Component.EventType.DISABLE)&amp;&amp;(a?(this.enabled_=!0,this.forEachChild(function(a){a.wasDisabled?delete a.wasDisabled:a.setEnabled(!0)})):(this.forEachChild(function(a){a.isEnabled()?a.setEnabled(!1):a.wasDisabled=!0}),this.enabled_=!1,this.setMouseButtonPressed(!1)),this.isFocusable()&amp;&amp;this.renderer_.enableTabIndex(this.getKeyEventTarget(),a&amp;&amp;this.visible_))};&#xD;	goog.ui.Container.prototype.isFocusable=function(){return this.focusable_};goog.ui.Container.prototype.setFocusable=function(a){a!=this.focusable_&amp;&amp;this.isInDocument()&amp;&amp;this.enableFocusHandling_(a);this.focusable_=a;this.enabled_&amp;&amp;this.visible_&amp;&amp;this.renderer_.enableTabIndex(this.getKeyEventTarget(),a)};goog.ui.Container.prototype.isFocusableChildrenAllowed=function(){return this.allowFocusableChildren_};&#xD;	goog.ui.Container.prototype.setFocusableChildrenAllowed=function(a){this.allowFocusableChildren_=a};goog.ui.Container.prototype.isOpenFollowsHighlight=function(){return this.openFollowsHighlight_};goog.ui.Container.prototype.setOpenFollowsHighlight=function(a){this.openFollowsHighlight_=a};goog.ui.Container.prototype.getHighlightedIndex=function(){return this.highlightedIndex_};&#xD;	goog.ui.Container.prototype.setHighlightedIndex=function(a){(a=this.getChildAt(a))?a.setHighlighted(!0):-1&lt;this.highlightedIndex_&amp;&amp;this.getHighlighted().setHighlighted(!1)};goog.ui.Container.prototype.setHighlighted=function(a){this.setHighlightedIndex(this.indexOfChild(a))};goog.ui.Container.prototype.getHighlighted=function(){return this.getChildAt(this.highlightedIndex_)};&#xD;	goog.ui.Container.prototype.highlightFirst=function(){this.highlightHelper(function(a,b){return(a+1)%b},this.getChildCount()-1)};goog.ui.Container.prototype.highlightLast=function(){this.highlightHelper(function(a,b){a--;return 0&gt;a?b-1:a},0)};goog.ui.Container.prototype.highlightNext=function(){this.highlightHelper(function(a,b){return(a+1)%b},this.highlightedIndex_)};goog.ui.Container.prototype.highlightPrevious=function(){this.highlightHelper(function(a,b){a--;return 0&gt;a?b-1:a},this.highlightedIndex_)};&#xD;	goog.ui.Container.prototype.highlightHelper=function(a,b){for(var c=0&gt;b?this.indexOfChild(this.openItem_):b,d=this.getChildCount(),c=a.call(this,c,d),e=0;e&lt;=d;){var f=this.getChildAt(c);if(f&amp;&amp;this.canHighlightItem(f))return this.setHighlightedIndexFromKeyEvent(c),!0;e++;c=a.call(this,c,d)}return!1};goog.ui.Container.prototype.canHighlightItem=function(a){return a.isVisible()&amp;&amp;a.isEnabled()&amp;&amp;a.isSupportedState(goog.ui.Component.State.HOVER)};&#xD;	goog.ui.Container.prototype.setHighlightedIndexFromKeyEvent=function(a){this.setHighlightedIndex(a)};goog.ui.Container.prototype.getOpenItem=function(){return this.openItem_};goog.ui.Container.prototype.isMouseButtonPressed=function(){return this.mouseButtonPressed_};goog.ui.Container.prototype.setMouseButtonPressed=function(a){this.mouseButtonPressed_=a};goog.ui.MenuHeaderRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.MenuHeaderRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuHeaderRenderer);goog.ui.MenuHeaderRenderer.CSS_CLASS="goog-menuheader";goog.ui.MenuHeaderRenderer.prototype.getCssClass=function(){return goog.ui.MenuHeaderRenderer.CSS_CLASS};goog.ui.MenuHeader=function(a,b,c){goog.ui.Control.call(this,a,c||goog.ui.MenuHeaderRenderer.getInstance(),b);this.setSupportedState(goog.ui.Component.State.DISABLED,!1);this.setSupportedState(goog.ui.Component.State.HOVER,!1);this.setSupportedState(goog.ui.Component.State.ACTIVE,!1);this.setSupportedState(goog.ui.Component.State.FOCUSED,!1);this.setStateInternal(goog.ui.Component.State.DISABLED)};goog.inherits(goog.ui.MenuHeader,goog.ui.Control);&#xD;	goog.ui.registry.setDecoratorByClassName(goog.ui.MenuHeaderRenderer.CSS_CLASS,function(){return new goog.ui.MenuHeader(null)});goog.ui.MenuItemRenderer=function(){goog.ui.ControlRenderer.call(this);this.classNameCache_=[]};goog.inherits(goog.ui.MenuItemRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuItemRenderer);goog.ui.MenuItemRenderer.CSS_CLASS="goog-menuitem";goog.ui.MenuItemRenderer.CompositeCssClassIndex_={HOVER:0,CHECKBOX:1,CONTENT:2};&#xD;	goog.ui.MenuItemRenderer.prototype.getCompositeCssClass_=function(a){var b=this.classNameCache_[a];if(!b){switch(a){case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER:b=this.getStructuralCssClass()+"-highlight";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX:b=this.getStructuralCssClass()+"-checkbox";break;case goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT:b=this.getStructuralCssClass()+"-content"}this.classNameCache_[a]=b}return b};&#xD;	goog.ui.MenuItemRenderer.prototype.getAriaRole=function(){return goog.a11y.aria.Role.MENU_ITEM};goog.ui.MenuItemRenderer.prototype.createDom=function(a){var b=a.getDomHelper().createDom("DIV",this.getClassNames(a).join(" "),this.createContent(a.getContent(),a.getDomHelper()));this.setEnableCheckBoxStructure(a,b,a.isSupportedState(goog.ui.Component.State.SELECTED)||a.isSupportedState(goog.ui.Component.State.CHECKED));return b};&#xD;	goog.ui.MenuItemRenderer.prototype.getContentElement=function(a){return a&amp;&amp;a.firstChild};goog.ui.MenuItemRenderer.prototype.decorate=function(a,b){goog.asserts.assert(b);this.hasContentStructure(b)||b.appendChild(this.createContent(b.childNodes,a.getDomHelper()));goog.dom.classlist.contains(b,"goog-option")&amp;&amp;(a.setCheckable(!0),this.setCheckable(a,b,!0));return goog.ui.MenuItemRenderer.superClass_.decorate.call(this,a,b)};&#xD;	goog.ui.MenuItemRenderer.prototype.setContent=function(a,b){var c=this.getContentElement(a),d=this.hasCheckBoxStructure(a)?c.firstChild:null;goog.ui.MenuItemRenderer.superClass_.setContent.call(this,a,b);d&amp;&amp;!this.hasCheckBoxStructure(a)&amp;&amp;c.insertBefore(d,c.firstChild||null)};&#xD;	goog.ui.MenuItemRenderer.prototype.hasContentStructure=function(a){a=goog.dom.getFirstElementChild(a);var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return!!a&amp;&amp;goog.dom.classlist.contains(a,b)};goog.ui.MenuItemRenderer.prototype.createContent=function(a,b){var c=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CONTENT);return b.createDom("DIV",c,a)};&#xD;	goog.ui.MenuItemRenderer.prototype.setSelectable=function(a,b,c){a&amp;&amp;b&amp;&amp;this.setEnableCheckBoxStructure(a,b,c)};goog.ui.MenuItemRenderer.prototype.setCheckable=function(a,b,c){a&amp;&amp;b&amp;&amp;this.setEnableCheckBoxStructure(a,b,c)};goog.ui.MenuItemRenderer.prototype.hasCheckBoxStructure=function(a){if(a=this.getContentElement(a)){a=a.firstChild;var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX);return!!a&amp;&amp;goog.dom.isElement(a)&amp;&amp;goog.dom.classlist.contains(a,b)}return!1};&#xD;	goog.ui.MenuItemRenderer.prototype.setEnableCheckBoxStructure=function(a,b,c){this.setAriaRole(b,a.getPreferredAriaRole());this.setAriaStates(a,b);c!=this.hasCheckBoxStructure(b)&amp;&amp;(goog.dom.classlist.enable(b,"goog-option",c),b=this.getContentElement(b),c?(c=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.CHECKBOX),b.insertBefore(a.getDomHelper().createDom("DIV",c),b.firstChild||null)):b.removeChild(b.firstChild))};&#xD;	goog.ui.MenuItemRenderer.prototype.getClassForState=function(a){switch(a){case goog.ui.Component.State.HOVER:return this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);case goog.ui.Component.State.CHECKED:case goog.ui.Component.State.SELECTED:return"goog-option-selected";default:return goog.ui.MenuItemRenderer.superClass_.getClassForState.call(this,a)}};&#xD;	goog.ui.MenuItemRenderer.prototype.getStateFromClass=function(a){var b=this.getCompositeCssClass_(goog.ui.MenuItemRenderer.CompositeCssClassIndex_.HOVER);switch(a){case "goog-option-selected":return goog.ui.Component.State.CHECKED;case b:return goog.ui.Component.State.HOVER;default:return goog.ui.MenuItemRenderer.superClass_.getStateFromClass.call(this,a)}};goog.ui.MenuItemRenderer.prototype.getCssClass=function(){return goog.ui.MenuItemRenderer.CSS_CLASS};goog.ui.MenuItem=function(a,b,c,d){goog.ui.Control.call(this,a,d||goog.ui.MenuItemRenderer.getInstance(),c);this.setValue(b)};goog.inherits(goog.ui.MenuItem,goog.ui.Control);goog.tagUnsealableClass(goog.ui.MenuItem);goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_="goog-menuitem-mnemonic-separator";goog.ui.MenuItem.ACCELERATOR_CLASS="goog-menuitem-accel";goog.ui.MenuItem.prototype.getValue=function(){var a=this.getModel();return null!=a?a:this.getCaption()};goog.ui.MenuItem.prototype.setValue=function(a){this.setModel(a)};&#xD;	goog.ui.MenuItem.prototype.setSupportedState=function(a,b){goog.ui.MenuItem.superClass_.setSupportedState.call(this,a,b);switch(a){case goog.ui.Component.State.SELECTED:this.setSelectableInternal_(b);break;case goog.ui.Component.State.CHECKED:this.setCheckableInternal_(b)}};goog.ui.MenuItem.prototype.setSelectable=function(a){this.setSupportedState(goog.ui.Component.State.SELECTED,a)};&#xD;	goog.ui.MenuItem.prototype.setSelectableInternal_=function(a){this.isChecked()&amp;&amp;!a&amp;&amp;this.setChecked(!1);var b=this.getElement();b&amp;&amp;this.getRenderer().setSelectable(this,b,a)};goog.ui.MenuItem.prototype.setCheckable=function(a){this.setSupportedState(goog.ui.Component.State.CHECKED,a)};goog.ui.MenuItem.prototype.setCheckableInternal_=function(a){var b=this.getElement();b&amp;&amp;this.getRenderer().setCheckable(this,b,a)};&#xD;	goog.ui.MenuItem.prototype.getCaption=function(){var a=this.getContent();if(goog.isArray(a)){var b=goog.ui.MenuItem.ACCELERATOR_CLASS,c=goog.ui.MenuItem.MNEMONIC_WRAPPER_CLASS_,a=goog.array.map(a,function(a){return goog.dom.isElement(a)&amp;&amp;(goog.dom.classlist.contains(a,b)||goog.dom.classlist.contains(a,c))?"":goog.dom.getRawTextContent(a)}).join("");return goog.string.collapseBreakingSpaces(a)}return goog.ui.MenuItem.superClass_.getCaption.call(this)};&#xD;	goog.ui.MenuItem.prototype.getAccelerator=function(){var a=this.getDomHelper(),b=this.getContent();return goog.isArray(b)&amp;&amp;(b=goog.array.find(b,function(a){return goog.dom.classlist.contains(a,goog.ui.MenuItem.ACCELERATOR_CLASS)}))?a.getTextContent(b):null};&#xD;	goog.ui.MenuItem.prototype.handleMouseUp=function(a){var b=this.getParent();if(b){var c=b.openingCoords;b.openingCoords=null;if(c&amp;&amp;goog.isNumber(a.clientX)&amp;&amp;(b=new goog.math.Coordinate(a.clientX,a.clientY),goog.math.Coordinate.equals(c,b)))return}goog.ui.MenuItem.superClass_.handleMouseUp.call(this,a)};goog.ui.MenuItem.prototype.handleKeyEventInternal=function(a){return a.keyCode==this.getMnemonic()&amp;&amp;this.performActionInternal(a)?!0:goog.ui.MenuItem.superClass_.handleKeyEventInternal.call(this,a)};&#xD;	goog.ui.MenuItem.prototype.setMnemonic=function(a){this.mnemonicKey_=a};goog.ui.MenuItem.prototype.getMnemonic=function(){return this.mnemonicKey_};goog.ui.registry.setDecoratorByClassName(goog.ui.MenuItemRenderer.CSS_CLASS,function(){return new goog.ui.MenuItem(null)});&#xD;	goog.ui.MenuItem.prototype.getPreferredAriaRole=function(){return this.isSupportedState(goog.ui.Component.State.CHECKED)?goog.a11y.aria.Role.MENU_ITEM_CHECKBOX:this.isSupportedState(goog.ui.Component.State.SELECTED)?goog.a11y.aria.Role.MENU_ITEM_RADIO:goog.ui.MenuItem.superClass_.getPreferredAriaRole.call(this)};goog.ui.MenuItem.prototype.getParent=function(){return goog.ui.Control.prototype.getParent.call(this)};goog.ui.MenuItem.prototype.getParentEventTarget=function(){return goog.ui.Control.prototype.getParentEventTarget.call(this)};goog.ui.MenuSeparatorRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.MenuSeparatorRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.MenuSeparatorRenderer);goog.ui.MenuSeparatorRenderer.CSS_CLASS="goog-menuseparator";goog.ui.MenuSeparatorRenderer.prototype.createDom=function(a){return a.getDomHelper().createDom("DIV",this.getCssClass())};&#xD;	goog.ui.MenuSeparatorRenderer.prototype.decorate=function(a,b){b.id&amp;&amp;a.setId(b.id);if("HR"==b.tagName){var c=b;b=this.createDom(a);goog.dom.insertSiblingBefore(b,c);goog.dom.removeNode(c)}else goog.dom.classlist.add(b,this.getCssClass());return b};goog.ui.MenuSeparatorRenderer.prototype.setContent=function(a,b){};goog.ui.MenuSeparatorRenderer.prototype.getCssClass=function(){return goog.ui.MenuSeparatorRenderer.CSS_CLASS};goog.ui.Separator=function(a,b){goog.ui.Control.call(this,null,a||goog.ui.MenuSeparatorRenderer.getInstance(),b);this.setSupportedState(goog.ui.Component.State.DISABLED,!1);this.setSupportedState(goog.ui.Component.State.HOVER,!1);this.setSupportedState(goog.ui.Component.State.ACTIVE,!1);this.setSupportedState(goog.ui.Component.State.FOCUSED,!1);this.setStateInternal(goog.ui.Component.State.DISABLED)};goog.inherits(goog.ui.Separator,goog.ui.Control);&#xD;	goog.ui.Separator.prototype.enterDocument=function(){goog.ui.Separator.superClass_.enterDocument.call(this);var a=this.getElement();goog.asserts.assert(a,"The DOM element for the separator cannot be null.");goog.a11y.aria.setRole(a,"separator")};goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator});goog.ui.MenuRenderer=function(a){goog.ui.ContainerRenderer.call(this,a||goog.a11y.aria.Role.MENU)};goog.inherits(goog.ui.MenuRenderer,goog.ui.ContainerRenderer);goog.addSingletonGetter(goog.ui.MenuRenderer);goog.ui.MenuRenderer.CSS_CLASS="goog-menu";goog.ui.MenuRenderer.prototype.canDecorate=function(a){return"UL"==a.tagName||goog.ui.MenuRenderer.superClass_.canDecorate.call(this,a)};&#xD;	goog.ui.MenuRenderer.prototype.getDecoratorForChild=function(a){return"HR"==a.tagName?new goog.ui.Separator:goog.ui.MenuRenderer.superClass_.getDecoratorForChild.call(this,a)};goog.ui.MenuRenderer.prototype.containsElement=function(a,b){return goog.dom.contains(a.getElement(),b)};goog.ui.MenuRenderer.prototype.getCssClass=function(){return goog.ui.MenuRenderer.CSS_CLASS};&#xD;	goog.ui.MenuRenderer.prototype.initializeDom=function(a){goog.ui.MenuRenderer.superClass_.initializeDom.call(this,a);a=a.getElement();goog.asserts.assert(a,"The menu DOM element cannot be null.");goog.a11y.aria.setState(a,goog.a11y.aria.State.HASPOPUP,"true")};goog.ui.MenuSeparator=function(a){goog.ui.Separator.call(this,goog.ui.MenuSeparatorRenderer.getInstance(),a)};goog.inherits(goog.ui.MenuSeparator,goog.ui.Separator);goog.ui.registry.setDecoratorByClassName(goog.ui.MenuSeparatorRenderer.CSS_CLASS,function(){return new goog.ui.Separator});goog.ui.Menu=function(a,b){goog.ui.Container.call(this,goog.ui.Container.Orientation.VERTICAL,b||goog.ui.MenuRenderer.getInstance(),a);this.setFocusable(!1)};goog.inherits(goog.ui.Menu,goog.ui.Container);goog.tagUnsealableClass(goog.ui.Menu);goog.ui.Menu.EventType={BEFORE_SHOW:goog.ui.Component.EventType.BEFORE_SHOW,SHOW:goog.ui.Component.EventType.SHOW,BEFORE_HIDE:goog.ui.Component.EventType.HIDE,HIDE:goog.ui.Component.EventType.HIDE};goog.ui.Menu.CSS_CLASS=goog.ui.MenuRenderer.CSS_CLASS;&#xD;	goog.ui.Menu.prototype.allowAutoFocus_=!0;goog.ui.Menu.prototype.allowHighlightDisabled_=!1;goog.ui.Menu.prototype.getCssClass=function(){return this.getRenderer().getCssClass()};goog.ui.Menu.prototype.containsElement=function(a){if(this.getRenderer().containsElement(this,a))return!0;for(var b=0,c=this.getChildCount();b&lt;c;b++){var d=this.getChildAt(b);if("function"==typeof d.containsElement&amp;&amp;d.containsElement(a))return!0}return!1};goog.ui.Menu.prototype.addItem=function(a){this.addChild(a,!0)};&#xD;	goog.ui.Menu.prototype.addItemAt=function(a,b){this.addChildAt(a,b,!0)};goog.ui.Menu.prototype.removeItem=function(a){(a=this.removeChild(a,!0))&amp;&amp;a.dispose()};goog.ui.Menu.prototype.removeItemAt=function(a){(a=this.removeChildAt(a,!0))&amp;&amp;a.dispose()};goog.ui.Menu.prototype.getItemAt=function(a){return this.getChildAt(a)};goog.ui.Menu.prototype.getItemCount=function(){return this.getChildCount()};goog.ui.Menu.prototype.getItems=function(){var a=[];this.forEachChild(function(b){a.push(b)});return a};&#xD;	goog.ui.Menu.prototype.setPosition=function(a,b){var c=this.isVisible();c||goog.style.setElementShown(this.getElement(),!0);goog.style.setPageOffset(this.getElement(),a,b);c||goog.style.setElementShown(this.getElement(),!1)};goog.ui.Menu.prototype.getPosition=function(){return this.isVisible()?goog.style.getPageOffset(this.getElement()):null};goog.ui.Menu.prototype.setAllowAutoFocus=function(a){(this.allowAutoFocus_=a)&amp;&amp;this.setFocusable(!0)};goog.ui.Menu.prototype.getAllowAutoFocus=function(){return this.allowAutoFocus_};&#xD;	goog.ui.Menu.prototype.setAllowHighlightDisabled=function(a){this.allowHighlightDisabled_=a};goog.ui.Menu.prototype.getAllowHighlightDisabled=function(){return this.allowHighlightDisabled_};goog.ui.Menu.prototype.setVisible=function(a,b,c){(b=goog.ui.Menu.superClass_.setVisible.call(this,a,b))&amp;&amp;a&amp;&amp;this.isInDocument()&amp;&amp;this.allowAutoFocus_&amp;&amp;this.getKeyEventTarget().focus();a&amp;&amp;c&amp;&amp;goog.isNumber(c.clientX)?this.openingCoords=new goog.math.Coordinate(c.clientX,c.clientY):this.openingCoords=null;return b};&#xD;	goog.ui.Menu.prototype.handleEnterItem=function(a){this.allowAutoFocus_&amp;&amp;this.getKeyEventTarget().focus();return goog.ui.Menu.superClass_.handleEnterItem.call(this,a)};goog.ui.Menu.prototype.highlightNextPrefix=function(a){var b=new RegExp("^"+goog.string.regExpEscape(a),"i");return this.highlightHelper(function(a,d){var c=0&gt;a?0:a,f=!1;do{++a;a==d&amp;&amp;(a=0,f=!0);var g=this.getChildAt(a).getCaption();if(g&amp;&amp;g.match(b))return a}while(!f||a!=c);return this.getHighlightedIndex()},this.getHighlightedIndex())};&#xD;	goog.ui.Menu.prototype.canHighlightItem=function(a){return(this.allowHighlightDisabled_||a.isEnabled())&amp;&amp;a.isVisible()&amp;&amp;a.isSupportedState(goog.ui.Component.State.HOVER)};goog.ui.Menu.prototype.decorateInternal=function(a){this.decorateContent(a);goog.ui.Menu.superClass_.decorateInternal.call(this,a)};&#xD;	goog.ui.Menu.prototype.handleKeyEventInternal=function(a){var b=goog.ui.Menu.superClass_.handleKeyEventInternal.call(this,a);b||this.forEachChild(function(c){!b&amp;&amp;c.getMnemonic&amp;&amp;c.getMnemonic()==a.keyCode&amp;&amp;(this.isEnabled()&amp;&amp;this.setHighlighted(c),b=c.handleKeyEvent(a))},this);return b};goog.ui.Menu.prototype.setHighlightedIndex=function(a){goog.ui.Menu.superClass_.setHighlightedIndex.call(this,a);(a=this.getChildAt(a))&amp;&amp;goog.style.scrollIntoContainerView(a.getElement(),this.getElement())};&#xD;	goog.ui.Menu.prototype.decorateContent=function(a){var b=this.getRenderer();a=this.getDomHelper().getElementsByTagNameAndClass("DIV",b.getCssClass()+"-content",a);for(var c=a.length,d=0;d&lt;c;d++)b.decorateChildren(this,a[d])};goog.Thenable=function(){};goog.Thenable.prototype.then=function(a,b,c){};goog.Thenable.IMPLEMENTED_BY_PROP="$goog_Thenable";goog.Thenable.addImplementation=function(a){a.prototype.then=a.prototype.then;COMPILED?a.prototype[goog.Thenable.IMPLEMENTED_BY_PROP]=!0:a.prototype.$goog_Thenable=!0};goog.Thenable.isImplementedBy=function(a){if(!a)return!1;try{return COMPILED?!!a[goog.Thenable.IMPLEMENTED_BY_PROP]:!!a.$goog_Thenable}catch(b){return!1}};goog.async={};goog.async.FreeList=function(a,b,c){this.limit_=c;this.create_=a;this.reset_=b;this.occupants_=0;this.head_=null};goog.async.FreeList.prototype.get=function(){if(0&lt;this.occupants_){this.occupants_--;var a=this.head_;this.head_=a.next;a.next=null}else a=this.create_();return a};goog.async.FreeList.prototype.put=function(a){this.reset_(a);this.occupants_&lt;this.limit_&amp;&amp;(this.occupants_++,a.next=this.head_,this.head_=a)};goog.async.FreeList.prototype.occupants=function(){return this.occupants_};goog.async.WorkQueue=function(){this.workTail_=this.workHead_=null};goog.async.WorkQueue.DEFAULT_MAX_UNUSED=100;goog.async.WorkQueue.freelist_=new goog.async.FreeList(function(){return new goog.async.WorkItem},function(a){a.reset()},goog.async.WorkQueue.DEFAULT_MAX_UNUSED);goog.async.WorkQueue.prototype.add=function(a,b){var c=this.getUnusedItem_();c.set(a,b);this.workTail_?this.workTail_.next=c:(goog.asserts.assert(!this.workHead_),this.workHead_=c);this.workTail_=c};&#xD;	goog.async.WorkQueue.prototype.remove=function(){var a=null;this.workHead_&amp;&amp;(a=this.workHead_,this.workHead_=this.workHead_.next,this.workHead_||(this.workTail_=null),a.next=null);return a};goog.async.WorkQueue.prototype.returnUnused=function(a){goog.async.WorkQueue.freelist_.put(a)};goog.async.WorkQueue.prototype.getUnusedItem_=function(){return goog.async.WorkQueue.freelist_.get()};goog.async.WorkItem=function(){this.next=this.scope=this.fn=null};&#xD;	goog.async.WorkItem.prototype.set=function(a,b){this.fn=a;this.scope=b;this.next=null};goog.async.WorkItem.prototype.reset=function(){this.next=this.scope=this.fn=null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=goog.functions.constant(!1);goog.functions.TRUE=goog.functions.constant(!0);goog.functions.NULL=goog.functions.constant(null);goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};&#xD;	goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=Array.prototype.slice.call(arguments);b.push.apply(b,c);return a.apply(this,b)}};goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};&#xD;	goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){var c=arguments,d=c.length;return function(){var a;d&amp;&amp;(a=c[d-1].apply(this,arguments));for(var b=d-2;0&lt;=b;b--)a=c[b].call(this,a);return a}};goog.functions.sequence=function(a){var b=arguments,c=b.length;return function(){for(var a,e=0;e&lt;c;e++)a=b[e].apply(this,arguments);return a}};&#xD;	goog.functions.and=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a&lt;c;a++)if(!b[a].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a&lt;c;a++)if(b[a].apply(this,arguments))return!0;return!1}};goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};&#xD;	goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){var b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){var b=a;return function(){if(b){var a=b;b=null;a()}}};&#xD;	goog.functions.debounce=function(a,b,c){var d=0;return function(e){goog.global.clearTimeout(d);var f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){var d=0,e=!1,f=[],g=function(){d=0;e&amp;&amp;(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);a.apply(c,f)};return function(a){f=arguments;d?e=!0:h()}};goog.functions.rateLimit=function(a,b,c){var d=0,e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.async.throwException=function(a){goog.global.setTimeout(function(){throw a;},0)};goog.async.nextTick=function(a,b,c){var d=a;b&amp;&amp;(d=goog.bind(a,b));d=goog.async.nextTick.wrapCallback_(d);goog.isFunction(goog.global.setImmediate)&amp;&amp;(c||goog.async.nextTick.useSetImmediate_())?goog.global.setImmediate(d):(goog.async.nextTick.setImmediate_||(goog.async.nextTick.setImmediate_=goog.async.nextTick.getSetImmediateEmulator_()),goog.async.nextTick.setImmediate_(d))};&#xD;	goog.async.nextTick.useSetImmediate_=function(){return goog.global.Window&amp;&amp;goog.global.Window.prototype&amp;&amp;!goog.labs.userAgent.browser.isEdge()&amp;&amp;goog.global.Window.prototype.setImmediate==goog.global.setImmediate?!1:!0};&#xD;	goog.async.nextTick.getSetImmediateEmulator_=function(){var a=goog.global.MessageChannel;"undefined"===typeof a&amp;&amp;"undefined"!==typeof window&amp;&amp;window.postMessage&amp;&amp;window.addEventListener&amp;&amp;!goog.labs.userAgent.engine.isPresto()&amp;&amp;(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+&#xD;	"//"+b.location.host,a=goog.bind(function(a){if(("*"==d||a.origin==d)&amp;&amp;a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&amp;&amp;!goog.labs.userAgent.browser.isIE()){var b=new a,c={},d=c;b.port1.onmessage=function(){if(goog.isDef(c.next)){c=c.next;var a=c.cb;c.cb=null;a()}};return function(a){d.next={cb:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&amp;&amp;"onreadystatechange"in&#xD;	document.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){goog.global.setTimeout(a,0)}};goog.async.nextTick.wrapCallback_=goog.functions.identity;goog.debug.entryPointRegistry.register(function(a){goog.async.nextTick.wrapCallback_=a});goog.async.run=function(a,b){goog.async.run.schedule_||goog.async.run.initializeRunner_();goog.async.run.workQueueScheduled_||(goog.async.run.schedule_(),goog.async.run.workQueueScheduled_=!0);goog.async.run.workQueue_.add(a,b)};goog.async.run.initializeRunner_=function(){if(-1!=String(goog.global.Promise).indexOf("[native code]")){var a=goog.global.Promise.resolve(void 0);goog.async.run.schedule_=function(){a.then(goog.async.run.processWorkQueue)}}else goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue)}};&#xD;	goog.async.run.forceNextTick=function(a){goog.async.run.schedule_=function(){goog.async.nextTick(goog.async.run.processWorkQueue);a&amp;&amp;a(goog.async.run.processWorkQueue)}};goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue;goog.DEBUG&amp;&amp;(goog.async.run.resetQueue=function(){goog.async.run.workQueueScheduled_=!1;goog.async.run.workQueue_=new goog.async.WorkQueue});&#xD;	goog.async.run.processWorkQueue=function(){for(var a;a=goog.async.run.workQueue_.remove();){try{a.fn.call(a.scope)}catch(b){goog.async.throwException(b)}goog.async.run.workQueue_.returnUnused(a)}goog.async.run.workQueueScheduled_=!1};goog.promise={};goog.promise.Resolver=function(){};goog.Promise=function(a,b){this.state_=goog.Promise.State_.PENDING;this.result_=void 0;this.callbackEntriesTail_=this.callbackEntries_=this.parent_=null;this.executing_=!1;0&lt;goog.Promise.UNHANDLED_REJECTION_DELAY?this.unhandledRejectionId_=0:0==goog.Promise.UNHANDLED_REJECTION_DELAY&amp;&amp;(this.hadUnhandledRejection_=!1);goog.Promise.LONG_STACK_TRACES&amp;&amp;(this.stack_=[],this.addStackTrace_(Error("created")),this.currentStep_=0);if(a!=goog.nullFunction)try{var c=this;a.call(b,function(a){c.resolve_(goog.Promise.State_.FULFILLED,&#xD;	a)},function(a){if(goog.DEBUG&amp;&amp;!(a instanceof goog.Promise.CancellationError))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}c.resolve_(goog.Promise.State_.REJECTED,a)})}catch(d){this.resolve_(goog.Promise.State_.REJECTED,d)}};goog.Promise.LONG_STACK_TRACES=!1;goog.Promise.UNHANDLED_REJECTION_DELAY=0;goog.Promise.State_={PENDING:0,BLOCKED:1,FULFILLED:2,REJECTED:3};&#xD;	goog.Promise.CallbackEntry_=function(){this.next=this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.CallbackEntry_.prototype.reset=function(){this.context=this.onRejected=this.onFulfilled=this.child=null;this.always=!1};goog.Promise.DEFAULT_MAX_UNUSED=100;goog.Promise.freelist_=new goog.async.FreeList(function(){return new goog.Promise.CallbackEntry_},function(a){a.reset()},goog.Promise.DEFAULT_MAX_UNUSED);&#xD;	goog.Promise.getCallbackEntry_=function(a,b,c){var d=goog.Promise.freelist_.get();d.onFulfilled=a;d.onRejected=b;d.context=c;return d};goog.Promise.returnEntry_=function(a){goog.Promise.freelist_.put(a)};goog.Promise.resolve=function(a){if(a instanceof goog.Promise)return a;var b=new goog.Promise(goog.nullFunction);b.resolve_(goog.Promise.State_.FULFILLED,a);return b};goog.Promise.reject=function(a){return new goog.Promise(function(b,c){c(a)})};&#xD;	goog.Promise.resolveThen_=function(a,b,c){goog.Promise.maybeThen_(a,b,c,null)||goog.async.run(goog.partial(b,a))};goog.Promise.race=function(a){return new goog.Promise(function(b,c){a.length||b(void 0);for(var d=0,e;d&lt;a.length;d++)e=a[d],goog.Promise.resolveThen_(e,b,c)})};&#xD;	goog.Promise.all=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c){d--;e[a]=c;0==d&amp;&amp;b(e)},g=function(a){c(a)},h=0,k;h&lt;a.length;h++)k=a[h],goog.Promise.resolveThen_(k,goog.partial(f,h),g);else b(e)})};&#xD;	goog.Promise.allSettled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a,c,f){d--;e[a]=c?{fulfilled:!0,value:f}:{fulfilled:!1,reason:f};0==d&amp;&amp;b(e)},g=0,h;g&lt;a.length;g++)h=a[g],goog.Promise.resolveThen_(h,goog.partial(f,g,!0),goog.partial(f,g,!1));else b(e)})};&#xD;	goog.Promise.firstFulfilled=function(a){return new goog.Promise(function(b,c){var d=a.length,e=[];if(d)for(var f=function(a){b(a)},g=function(a,b){d--;e[a]=b;0==d&amp;&amp;c(e)},h=0,k;h&lt;a.length;h++)k=a[h],goog.Promise.resolveThen_(k,f,goog.partial(g,h));else b(void 0)})};goog.Promise.withResolver=function(){var a,b,c=new goog.Promise(function(c,e){a=c;b=e});return new goog.Promise.Resolver_(c,a,b)};&#xD;	goog.Promise.prototype.then=function(a,b,c){null!=a&amp;&amp;goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&amp;&amp;goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&amp;&amp;this.addStackTrace_(Error("then"));return this.addChildPromise_(goog.isFunction(a)?a:null,goog.isFunction(b)?b:null,c)};goog.Thenable.addImplementation(goog.Promise);&#xD;	goog.Promise.prototype.thenVoid=function(a,b,c){null!=a&amp;&amp;goog.asserts.assertFunction(a,"opt_onFulfilled should be a function.");null!=b&amp;&amp;goog.asserts.assertFunction(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");goog.Promise.LONG_STACK_TRACES&amp;&amp;this.addStackTrace_(Error("then"));this.addCallbackEntry_(goog.Promise.getCallbackEntry_(a||goog.nullFunction,b||null,c))};&#xD;	goog.Promise.prototype.thenAlways=function(a,b){goog.Promise.LONG_STACK_TRACES&amp;&amp;this.addStackTrace_(Error("thenAlways"));var c=goog.Promise.getCallbackEntry_(a,a,b);c.always=!0;this.addCallbackEntry_(c);return this};goog.Promise.prototype.thenCatch=function(a,b){goog.Promise.LONG_STACK_TRACES&amp;&amp;this.addStackTrace_(Error("thenCatch"));return this.addChildPromise_(null,a,b)};&#xD;	goog.Promise.prototype.cancel=function(a){this.state_==goog.Promise.State_.PENDING&amp;&amp;goog.async.run(function(){var b=new goog.Promise.CancellationError(a);this.cancelInternal_(b)},this)};goog.Promise.prototype.cancelInternal_=function(a){this.state_==goog.Promise.State_.PENDING&amp;&amp;(this.parent_?(this.parent_.cancelChild_(this,a),this.parent_=null):this.resolve_(goog.Promise.State_.REJECTED,a))};&#xD;	goog.Promise.prototype.cancelChild_=function(a,b){if(this.callbackEntries_){for(var c=0,d=null,e=null,f=this.callbackEntries_;f&amp;&amp;(f.always||(c++,f.child==a&amp;&amp;(d=f),!(d&amp;&amp;1&lt;c)));f=f.next)d||(e=f);d&amp;&amp;(this.state_==goog.Promise.State_.PENDING&amp;&amp;1==c?this.cancelInternal_(b):(e?this.removeEntryAfter_(e):this.popEntry_(),this.executeCallback_(d,goog.Promise.State_.REJECTED,b)))}};&#xD;	goog.Promise.prototype.addCallbackEntry_=function(a){this.hasEntry_()||this.state_!=goog.Promise.State_.FULFILLED&amp;&amp;this.state_!=goog.Promise.State_.REJECTED||this.scheduleCallbacks_();this.queueEntry_(a)};&#xD;	goog.Promise.prototype.addChildPromise_=function(a,b,c){var d=goog.Promise.getCallbackEntry_(null,null,null);d.child=new goog.Promise(function(e,f){d.onFulfilled=a?function(b){try{var d=a.call(c,b);e(d)}catch(k){f(k)}}:e;d.onRejected=b?function(a){try{var d=b.call(c,a);!goog.isDef(d)&amp;&amp;a instanceof goog.Promise.CancellationError?f(a):e(d)}catch(k){f(k)}}:f});d.child.parent_=this;this.addCallbackEntry_(d);return d.child};&#xD;	goog.Promise.prototype.unblockAndFulfill_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.FULFILLED,a)};goog.Promise.prototype.unblockAndReject_=function(a){goog.asserts.assert(this.state_==goog.Promise.State_.BLOCKED);this.state_=goog.Promise.State_.PENDING;this.resolve_(goog.Promise.State_.REJECTED,a)};&#xD;	goog.Promise.prototype.resolve_=function(a,b){this.state_==goog.Promise.State_.PENDING&amp;&amp;(this===b&amp;&amp;(a=goog.Promise.State_.REJECTED,b=new TypeError("Promise cannot resolve to itself")),this.state_=goog.Promise.State_.BLOCKED,goog.Promise.maybeThen_(b,this.unblockAndFulfill_,this.unblockAndReject_,this)||(this.result_=b,this.state_=a,this.parent_=null,this.scheduleCallbacks_(),a!=goog.Promise.State_.REJECTED||b instanceof goog.Promise.CancellationError||goog.Promise.addUnhandledRejection_(this,b)))};&#xD;	goog.Promise.maybeThen_=function(a,b,c,d){if(a instanceof goog.Promise)return a.thenVoid(b,c,d),!0;if(goog.Thenable.isImplementedBy(a))return a.then(b,c,d),!0;if(goog.isObject(a))try{var e=a.then;if(goog.isFunction(e))return goog.Promise.tryThen_(a,e,b,c,d),!0}catch(f){return c.call(d,f),!0}return!1};goog.Promise.tryThen_=function(a,b,c,d,e){var f=!1,g=function(a){f||(f=!0,c.call(e,a))},h=function(a){f||(f=!0,d.call(e,a))};try{b.call(a,g,h)}catch(k){h(k)}};&#xD;	goog.Promise.prototype.scheduleCallbacks_=function(){this.executing_||(this.executing_=!0,goog.async.run(this.executeCallbacks_,this))};goog.Promise.prototype.hasEntry_=function(){return!!this.callbackEntries_};goog.Promise.prototype.queueEntry_=function(a){goog.asserts.assert(null!=a.onFulfilled);this.callbackEntriesTail_?this.callbackEntriesTail_.next=a:this.callbackEntries_=a;this.callbackEntriesTail_=a};&#xD;	goog.Promise.prototype.popEntry_=function(){var a=null;this.callbackEntries_&amp;&amp;(a=this.callbackEntries_,this.callbackEntries_=a.next,a.next=null);this.callbackEntries_||(this.callbackEntriesTail_=null);null!=a&amp;&amp;goog.asserts.assert(null!=a.onFulfilled);return a};goog.Promise.prototype.removeEntryAfter_=function(a){goog.asserts.assert(this.callbackEntries_);goog.asserts.assert(null!=a);a.next==this.callbackEntriesTail_&amp;&amp;(this.callbackEntriesTail_=a);a.next=a.next.next};&#xD;	goog.Promise.prototype.executeCallbacks_=function(){for(var a;a=this.popEntry_();)goog.Promise.LONG_STACK_TRACES&amp;&amp;this.currentStep_++,this.executeCallback_(a,this.state_,this.result_);this.executing_=!1};&#xD;	goog.Promise.prototype.executeCallback_=function(a,b,c){b==goog.Promise.State_.REJECTED&amp;&amp;a.onRejected&amp;&amp;!a.always&amp;&amp;this.removeUnhandledRejection_();if(a.child)a.child.parent_=null,goog.Promise.invokeCallback_(a,b,c);else try{a.always?a.onFulfilled.call(a.context):goog.Promise.invokeCallback_(a,b,c)}catch(d){goog.Promise.handleRejection_.call(null,d)}goog.Promise.returnEntry_(a)};&#xD;	goog.Promise.invokeCallback_=function(a,b,c){b==goog.Promise.State_.FULFILLED?a.onFulfilled.call(a.context,c):a.onRejected&amp;&amp;a.onRejected.call(a.context,c)};goog.Promise.prototype.addStackTrace_=function(a){if(goog.Promise.LONG_STACK_TRACES&amp;&amp;goog.isString(a.stack)){var b=a.stack.split("\n",4)[3];a=a.message;a+=Array(11-a.length).join(" ");this.stack_.push(a+b)}};&#xD;	goog.Promise.prototype.appendLongStack_=function(a){if(goog.Promise.LONG_STACK_TRACES&amp;&amp;a&amp;&amp;goog.isString(a.stack)&amp;&amp;this.stack_.length){for(var b=["Promise trace:"],c=this;c;c=c.parent_){for(var d=this.currentStep_;0&lt;=d;d--)b.push(c.stack_[d]);b.push("Value: ["+(c.state_==goog.Promise.State_.REJECTED?"REJECTED":"FULFILLED")+"] &lt;"+String(c.result_)+"&gt;")}a.stack+="\n\n"+b.join("\n")}};&#xD;	goog.Promise.prototype.removeUnhandledRejection_=function(){if(0&lt;goog.Promise.UNHANDLED_REJECTION_DELAY)for(var a=this;a&amp;&amp;a.unhandledRejectionId_;a=a.parent_)goog.global.clearTimeout(a.unhandledRejectionId_),a.unhandledRejectionId_=0;else if(0==goog.Promise.UNHANDLED_REJECTION_DELAY)for(a=this;a&amp;&amp;a.hadUnhandledRejection_;a=a.parent_)a.hadUnhandledRejection_=!1};&#xD;	goog.Promise.addUnhandledRejection_=function(a,b){0&lt;goog.Promise.UNHANDLED_REJECTION_DELAY?a.unhandledRejectionId_=goog.global.setTimeout(function(){a.appendLongStack_(b);goog.Promise.handleRejection_.call(null,b)},goog.Promise.UNHANDLED_REJECTION_DELAY):0==goog.Promise.UNHANDLED_REJECTION_DELAY&amp;&amp;(a.hadUnhandledRejection_=!0,goog.async.run(function(){a.hadUnhandledRejection_&amp;&amp;(a.appendLongStack_(b),goog.Promise.handleRejection_.call(null,b))}))};goog.Promise.handleRejection_=goog.async.throwException;&#xD;	goog.Promise.setUnhandledRejectionHandler=function(a){goog.Promise.handleRejection_=a};goog.Promise.CancellationError=function(a){goog.debug.Error.call(this,a)};goog.inherits(goog.Promise.CancellationError,goog.debug.Error);goog.Promise.CancellationError.prototype.name="cancel";goog.Promise.Resolver_=function(a,b,c){this.promise=a;this.resolve=b;this.reject=c};goog.Timer=function(a,b){goog.events.EventTarget.call(this);this.interval_=a||1;this.timerObject_=b||goog.Timer.defaultTimerObject;this.boundTick_=goog.bind(this.tick_,this);this.last_=goog.now()};goog.inherits(goog.Timer,goog.events.EventTarget);goog.Timer.MAX_TIMEOUT_=2147483647;goog.Timer.INVALID_TIMEOUT_ID_=-1;goog.Timer.prototype.enabled=!1;goog.Timer.defaultTimerObject=goog.global;goog.Timer.intervalScale=.8;goog.Timer.prototype.timer_=null;goog.Timer.prototype.getInterval=function(){return this.interval_};&#xD;	goog.Timer.prototype.setInterval=function(a){this.interval_=a;this.timer_&amp;&amp;this.enabled?(this.stop(),this.start()):this.timer_&amp;&amp;this.stop()};&#xD;	goog.Timer.prototype.tick_=function(){if(this.enabled){var a=goog.now()-this.last_;0&lt;a&amp;&amp;a&lt;this.interval_*goog.Timer.intervalScale?this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_-a):(this.timer_&amp;&amp;(this.timerObject_.clearTimeout(this.timer_),this.timer_=null),this.dispatchTick(),this.enabled&amp;&amp;(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now()))}};goog.Timer.prototype.dispatchTick=function(){this.dispatchEvent(goog.Timer.TICK)};&#xD;	goog.Timer.prototype.start=function(){this.enabled=!0;this.timer_||(this.timer_=this.timerObject_.setTimeout(this.boundTick_,this.interval_),this.last_=goog.now())};goog.Timer.prototype.stop=function(){this.enabled=!1;this.timer_&amp;&amp;(this.timerObject_.clearTimeout(this.timer_),this.timer_=null)};goog.Timer.prototype.disposeInternal=function(){goog.Timer.superClass_.disposeInternal.call(this);this.stop();delete this.timerObject_};goog.Timer.TICK="tick";&#xD;	goog.Timer.callOnce=function(a,b,c){if(goog.isFunction(a))c&amp;&amp;(a=goog.bind(a,c));else if(a&amp;&amp;"function"==typeof a.handleEvent)a=goog.bind(a.handleEvent,a);else throw Error("Invalid listener argument");return Number(b)&gt;goog.Timer.MAX_TIMEOUT_?goog.Timer.INVALID_TIMEOUT_ID_:goog.Timer.defaultTimerObject.setTimeout(a,b||0)};goog.Timer.clear=function(a){goog.Timer.defaultTimerObject.clearTimeout(a)};&#xD;	goog.Timer.promise=function(a,b){var c=null;return(new goog.Promise(function(d,e){c=goog.Timer.callOnce(function(){d(b)},a);c==goog.Timer.INVALID_TIMEOUT_ID_&amp;&amp;e(Error("Failed to schedule timer."))})).thenCatch(function(a){goog.Timer.clear(c);throw a;})};goog.color={};&#xD;	goog.color.names={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",&#xD;	darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",&#xD;	ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",&#xD;	lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",&#xD;	moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",&#xD;	seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};goog.color.parse=function(a){var b={};a=String(a);var c=goog.color.prependHashIfNecessaryHelper(a);if(goog.color.isValidHexColor_(c))return b.hex=goog.color.normalizeHex(c),b.type="hex",b;c=goog.color.isValidRgbColor_(a);if(c.length)return b.hex=goog.color.rgbArrayToHex(c),b.type="rgb",b;if(goog.color.names&amp;&amp;(c=goog.color.names[a.toLowerCase()]))return b.hex=c,b.type="named",b;throw Error(a+" is not a valid color string");};&#xD;	goog.color.isValidColor=function(a){var b=goog.color.prependHashIfNecessaryHelper(a);return!!(goog.color.isValidHexColor_(b)||goog.color.isValidRgbColor_(a).length||goog.color.names&amp;&amp;goog.color.names[a.toLowerCase()])};goog.color.parseRgb=function(a){var b=goog.color.isValidRgbColor_(a);if(!b.length)throw Error(a+" is not a valid RGB color");return b};goog.color.hexToRgbStyle=function(a){return goog.color.rgbStyle_(goog.color.hexToRgb(a))};goog.color.hexTripletRe_=/#(.)(.)(.)/;&#xD;	goog.color.normalizeHex=function(a){if(!goog.color.isValidHexColor_(a))throw Error("&apos;"+a+"&apos; is not a valid hex color");4==a.length&amp;&amp;(a=a.replace(goog.color.hexTripletRe_,"#$1$1$2$2$3$3"));return a.toLowerCase()};goog.color.hexToRgb=function(a){a=goog.color.normalizeHex(a);var b=parseInt(a.substr(1,2),16),c=parseInt(a.substr(3,2),16);a=parseInt(a.substr(5,2),16);return[b,c,a]};&#xD;	goog.color.rgbToHex=function(a,b,c){a=Number(a);b=Number(b);c=Number(c);if(a!=(a&amp;255)||b!=(b&amp;255)||c!=(c&amp;255))throw Error(&apos;"(&apos;+a+","+b+","+c+&apos;") is not a valid RGB color&apos;);a=goog.color.prependZeroIfNecessaryHelper(a.toString(16));b=goog.color.prependZeroIfNecessaryHelper(b.toString(16));c=goog.color.prependZeroIfNecessaryHelper(c.toString(16));return"#"+a+b+c};goog.color.rgbArrayToHex=function(a){return goog.color.rgbToHex(a[0],a[1],a[2])};&#xD;	goog.color.rgbToHsl=function(a,b,c){a/=255;b/=255;c/=255;var d=Math.max(a,b,c),e=Math.min(a,b,c),f=0,g=0,h=.5*(d+e);d!=e&amp;&amp;(d==a?f=60*(b-c)/(d-e):d==b?f=60*(c-a)/(d-e)+120:d==c&amp;&amp;(f=60*(a-b)/(d-e)+240),g=0&lt;h&amp;&amp;.5&gt;=h?(d-e)/(2*h):(d-e)/(2-2*h));return[Math.round(f+360)%360,g,h]};goog.color.rgbArrayToHsl=function(a){return goog.color.rgbToHsl(a[0],a[1],a[2])};goog.color.hueToRgb_=function(a,b,c){0&gt;c?c+=1:1&lt;c&amp;&amp;--c;return 1&gt;6*c?a+6*(b-a)*c:1&gt;2*c?b:2&gt;3*c?a+(b-a)*(2/3-c)*6:a};&#xD;	goog.color.hslToRgb=function(a,b,c){a/=360;if(0==b)c=b=a=255*c;else{var d=.5&gt;c?c*(1+b):c+b-b*c;var e=2*c-d;c=255*goog.color.hueToRgb_(e,d,a+1/3);b=255*goog.color.hueToRgb_(e,d,a);a=255*goog.color.hueToRgb_(e,d,a-1/3)}return[Math.round(c),Math.round(b),Math.round(a)]};goog.color.hslArrayToRgb=function(a){return goog.color.hslToRgb(a[0],a[1],a[2])};goog.color.validHexColorRe_=/^#(?:[0-9a-f]{3}){1,2}$/i;goog.color.isValidHexColor_=function(a){return goog.color.validHexColorRe_.test(a)};&#xD;	goog.color.normalizedHexColorRe_=/^#[0-9a-f]{6}$/;goog.color.isNormalizedHexColor_=function(a){return goog.color.normalizedHexColorRe_.test(a)};goog.color.rgbColorRe_=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i;goog.color.isValidRgbColor_=function(a){var b=a.match(goog.color.rgbColorRe_);if(b){a=Number(b[1]);var c=Number(b[2]),b=Number(b[3]);if(0&lt;=a&amp;&amp;255&gt;=a&amp;&amp;0&lt;=c&amp;&amp;255&gt;=c&amp;&amp;0&lt;=b&amp;&amp;255&gt;=b)return[a,c,b]}return[]};&#xD;	goog.color.prependZeroIfNecessaryHelper=function(a){return 1==a.length?"0"+a:a};goog.color.prependHashIfNecessaryHelper=function(a){return"#"==a.charAt(0)?a:"#"+a};goog.color.rgbStyle_=function(a){return"rgb("+a.join(",")+")"};&#xD;	goog.color.hsvToRgb=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var k=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=k;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=k;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=k;break;case 6:case 0:d=c,e=b,f=a}}return[Math.floor(d),Math.floor(e),Math.floor(f)]};&#xD;	goog.color.rgbToHsv=function(a,b,c){var d=Math.max(Math.max(a,b),c),e=Math.min(Math.min(a,b),c);if(e==d)e=a=0;else{var f=d-e,e=f/d;a=60*(a==d?(b-c)/f:b==d?2+(c-a)/f:4+(a-b)/f);0&gt;a&amp;&amp;(a+=360);360&lt;a&amp;&amp;(a-=360)}return[a,e,d]};goog.color.rgbArrayToHsv=function(a){return goog.color.rgbToHsv(a[0],a[1],a[2])};goog.color.hsvArrayToRgb=function(a){return goog.color.hsvToRgb(a[0],a[1],a[2])};goog.color.hexToHsl=function(a){a=goog.color.hexToRgb(a);return goog.color.rgbToHsl(a[0],a[1],a[2])};&#xD;	goog.color.hslToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a,b,c))};goog.color.hslArrayToHex=function(a){return goog.color.rgbArrayToHex(goog.color.hslToRgb(a[0],a[1],a[2]))};goog.color.hexToHsv=function(a){return goog.color.rgbArrayToHsv(goog.color.hexToRgb(a))};goog.color.hsvToHex=function(a,b,c){return goog.color.rgbArrayToHex(goog.color.hsvToRgb(a,b,c))};goog.color.hsvArrayToHex=function(a){return goog.color.hsvToHex(a[0],a[1],a[2])};&#xD;	goog.color.hslDistance=function(a,b){var c=.5&gt;=a[2]?a[1]*a[2]:a[1]*(1-a[2]);var d=.5&gt;=b[2]?b[1]*b[2]:b[1]*(1-b[2]);return(a[2]-b[2])*(a[2]-b[2])+c*c+d*d-2*c*d*Math.cos(2*(a[0]/360-b[0]/360)*Math.PI)};goog.color.blend=function(a,b,c){c=goog.math.clamp(c,0,1);return[Math.round(c*a[0]+(1-c)*b[0]),Math.round(c*a[1]+(1-c)*b[1]),Math.round(c*a[2]+(1-c)*b[2])]};goog.color.darken=function(a,b){return goog.color.blend([0,0,0],a,b)};goog.color.lighten=function(a,b){return goog.color.blend([255,255,255],a,b)};&#xD;	goog.color.highContrast=function(a,b){for(var c=[],d=0;d&lt;b.length;d++)c.push({color:b[d],diff:goog.color.yiqBrightnessDiff_(b[d],a)+goog.color.colorDiff_(b[d],a)});c.sort(function(a,b){return b.diff-a.diff});return c[0].color};goog.color.yiqBrightness_=function(a){return Math.round((299*a[0]+587*a[1]+114*a[2])/1E3)};goog.color.yiqBrightnessDiff_=function(a,b){return Math.abs(goog.color.yiqBrightness_(a)-goog.color.yiqBrightness_(b))};&#xD;	goog.color.colorDiff_=function(a,b){return Math.abs(a[0]-b[0])+Math.abs(a[1]-b[1])+Math.abs(a[2]-b[2])};goog.iter={};goog.iter.StopIteration="StopIteration"in goog.global?goog.global.StopIteration:{message:"StopIteration",stack:""};goog.iter.Iterator=function(){};goog.iter.Iterator.prototype.next=function(){throw goog.iter.StopIteration;};goog.iter.Iterator.prototype.__iterator__=function(a){return this};&#xD;	goog.iter.toIterator=function(a){if(a instanceof goog.iter.Iterator)return a;if("function"==typeof a.__iterator__)return a.__iterator__(!1);if(goog.isArrayLike(a)){var b=0,c=new goog.iter.Iterator;c.next=function(){for(;;){if(b&gt;=a.length)throw goog.iter.StopIteration;if(b in a)return a[b++];b++}};return c}throw Error("Not implemented");};&#xD;	goog.iter.forEach=function(a,b,c){if(goog.isArrayLike(a))try{goog.array.forEach(a,b,c)}catch(d){if(d!==goog.iter.StopIteration)throw d;}else{a=goog.iter.toIterator(a);try{for(;;)b.call(c,a.next(),void 0,a)}catch(d){if(d!==goog.iter.StopIteration)throw d;}}};goog.iter.filter=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){for(;;){var a=d.next();if(b.call(c,a,void 0,d))return a}};return a};&#xD;	goog.iter.filterFalse=function(a,b,c){return goog.iter.filter(a,goog.functions.not(b),c)};goog.iter.range=function(a,b,c){var d=0,e=a,f=c||1;1&lt;arguments.length&amp;&amp;(d=a,e=b);if(0==f)throw Error("Range step argument must not be zero");var g=new goog.iter.Iterator;g.next=function(){if(0&lt;f&amp;&amp;d&gt;=e||0&gt;f&amp;&amp;d&lt;=e)throw goog.iter.StopIteration;var a=d;d+=f;return a};return g};goog.iter.join=function(a,b){return goog.iter.toArray(a).join(b)};&#xD;	goog.iter.map=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=d.next();return b.call(c,a,void 0,d)};return a};goog.iter.reduce=function(a,b,c,d){var e=c;goog.iter.forEach(a,function(a){e=b.call(d,e,a)});return e};goog.iter.some=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(b.call(c,a.next(),void 0,a))return!0}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!1};&#xD;	goog.iter.every=function(a,b,c){a=goog.iter.toIterator(a);try{for(;;)if(!b.call(c,a.next(),void 0,a))return!1}catch(d){if(d!==goog.iter.StopIteration)throw d;}return!0};goog.iter.chain=function(a){return goog.iter.chainFromIterable(arguments)};&#xD;	goog.iter.chainFromIterable=function(a){var b=goog.iter.toIterator(a);a=new goog.iter.Iterator;var c=null;a.next=function(){for(;;){if(null==c){var a=b.next();c=goog.iter.toIterator(a)}try{return c.next()}catch(e){if(e!==goog.iter.StopIteration)throw e;c=null}}};return a};goog.iter.dropWhile=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;var e=!0;a.next=function(){for(;;){var a=d.next();if(!e||!b.call(c,a,void 0,d))return e=!1,a}};return a};&#xD;	goog.iter.takeWhile=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=d.next();if(b.call(c,a,void 0,d))return a;throw goog.iter.StopIteration;};return a};goog.iter.toArray=function(a){if(goog.isArrayLike(a))return goog.array.toArray(a);a=goog.iter.toIterator(a);var b=[];goog.iter.forEach(a,function(a){b.push(a)});return b};&#xD;	goog.iter.equals=function(a,b,c){a=goog.iter.zipLongest({},a,b);var d=c||goog.array.defaultCompareEquality;return goog.iter.every(a,function(a){return d(a[0],a[1])})};goog.iter.nextOrValue=function(a,b){try{return goog.iter.toIterator(a).next()}catch(c){if(c!=goog.iter.StopIteration)throw c;return b}};&#xD;	goog.iter.product=function(a){if(goog.array.some(arguments,function(a){return!a.length})||!arguments.length)return new goog.iter.Iterator;var b=new goog.iter.Iterator,c=arguments,d=goog.array.repeat(0,c.length);b.next=function(){if(d){for(var a=goog.array.map(d,function(a,b){return c[b][a]}),b=d.length-1;0&lt;=b;b--){goog.asserts.assert(d);if(d[b]&lt;c[b].length-1){d[b]++;break}if(0==b){d=null;break}d[b]=0}return a}throw goog.iter.StopIteration;};return b};&#xD;	goog.iter.cycle=function(a){var b=goog.iter.toIterator(a),c=[],d=0;a=new goog.iter.Iterator;var e=!1;a.next=function(){var a=null;if(!e)try{return a=b.next(),c.push(a),a}catch(g){if(g!=goog.iter.StopIteration||goog.array.isEmpty(c))throw g;e=!0}a=c[d];d=(d+1)%c.length;return a};return a};goog.iter.count=function(a,b){var c=a||0,d=goog.isDef(b)?b:1,e=new goog.iter.Iterator;e.next=function(){var a=c;c+=d;return a};return e};&#xD;	goog.iter.repeat=function(a){var b=new goog.iter.Iterator;b.next=goog.functions.constant(a);return b};goog.iter.accumulate=function(a){var b=goog.iter.toIterator(a),c=0;a=new goog.iter.Iterator;a.next=function(){return c+=b.next()};return a};goog.iter.zip=function(a){var b=arguments,c=new goog.iter.Iterator;if(0&lt;b.length){var d=goog.array.map(b,goog.iter.toIterator);c.next=function(){return goog.array.map(d,function(a){return a.next()})}}return c};&#xD;	goog.iter.zipLongest=function(a,b){var c=goog.array.slice(arguments,1),d=new goog.iter.Iterator;if(0&lt;c.length){var e=goog.array.map(c,goog.iter.toIterator);d.next=function(){var b=!1,c=goog.array.map(e,function(c){try{var d=c.next();b=!0}catch(l){if(l!==goog.iter.StopIteration)throw l;d=a}return d});if(!b)throw goog.iter.StopIteration;return c}}return d};goog.iter.compress=function(a,b){var c=goog.iter.toIterator(b);return goog.iter.filter(a,function(){return!!c.next()})};&#xD;	goog.iter.GroupByIterator_=function(a,b){this.iterator=goog.iter.toIterator(a);this.keyFunc=b||goog.functions.identity};goog.inherits(goog.iter.GroupByIterator_,goog.iter.Iterator);goog.iter.GroupByIterator_.prototype.next=function(){for(;this.currentKey==this.targetKey;)this.currentValue=this.iterator.next(),this.currentKey=this.keyFunc(this.currentValue);this.targetKey=this.currentKey;return[this.currentKey,this.groupItems_(this.targetKey)]};&#xD;	goog.iter.GroupByIterator_.prototype.groupItems_=function(a){for(var b=[];this.currentKey==a;){b.push(this.currentValue);try{this.currentValue=this.iterator.next()}catch(c){if(c!==goog.iter.StopIteration)throw c;break}this.currentKey=this.keyFunc(this.currentValue)}return b};goog.iter.groupBy=function(a,b){return new goog.iter.GroupByIterator_(a,b)};&#xD;	goog.iter.starMap=function(a,b,c){var d=goog.iter.toIterator(a);a=new goog.iter.Iterator;a.next=function(){var a=goog.iter.toArray(d.next());return b.apply(c,goog.array.concat(a,void 0,d))};return a};&#xD;	goog.iter.tee=function(a,b){var c=goog.iter.toIterator(a),d=goog.isNumber(b)?b:2,e=goog.array.map(goog.array.range(d),function(){return[]}),f=function(){var a=c.next();goog.array.forEach(e,function(b){b.push(a)})};return goog.array.map(e,function(a){var b=new goog.iter.Iterator;b.next=function(){goog.array.isEmpty(a)&amp;&amp;f();goog.asserts.assert(!goog.array.isEmpty(a));return a.shift()};return b})};goog.iter.enumerate=function(a,b){return goog.iter.zip(goog.iter.count(b),a)};&#xD;	goog.iter.limit=function(a,b){goog.asserts.assert(goog.math.isInt(b)&amp;&amp;0&lt;=b);var c=goog.iter.toIterator(a),d=new goog.iter.Iterator,e=b;d.next=function(){if(0&lt;e--)return c.next();throw goog.iter.StopIteration;};return d};goog.iter.consume=function(a,b){goog.asserts.assert(goog.math.isInt(b)&amp;&amp;0&lt;=b);for(var c=goog.iter.toIterator(a);0&lt;b--;)goog.iter.nextOrValue(c,null);return c};&#xD;	goog.iter.slice=function(a,b,c){goog.asserts.assert(goog.math.isInt(b)&amp;&amp;0&lt;=b);a=goog.iter.consume(a,b);goog.isNumber(c)&amp;&amp;(goog.asserts.assert(goog.math.isInt(c)&amp;&amp;c&gt;=b),a=goog.iter.limit(a,c-b));return a};goog.iter.hasDuplicates_=function(a){var b=[];goog.array.removeDuplicates(a,b);return a.length!=b.length};goog.iter.permutations=function(a,b){var c=goog.iter.toArray(a),d=goog.isNumber(b)?b:c.length,c=goog.array.repeat(c,d),c=goog.iter.product.apply(void 0,c);return goog.iter.filter(c,function(a){return!goog.iter.hasDuplicates_(a)})};&#xD;	goog.iter.combinations=function(a,b){function c(a){return d[a]}var d=goog.iter.toArray(a),e=goog.iter.range(d.length),e=goog.iter.permutations(e,b),f=goog.iter.filter(e,function(a){return goog.array.isSorted(a)}),e=new goog.iter.Iterator;e.next=function(){return goog.array.map(f.next(),c)};return e};&#xD;	goog.iter.combinationsWithReplacement=function(a,b){function c(a){return d[a]}var d=goog.iter.toArray(a),e=goog.array.range(d.length),e=goog.array.repeat(e,b),e=goog.iter.product.apply(void 0,e),f=goog.iter.filter(e,function(a){return goog.array.isSorted(a)}),e=new goog.iter.Iterator;e.next=function(){return goog.array.map(f.next(),c)};return e};goog.dom.TagWalkType={START_TAG:1,OTHER:0,END_TAG:-1};goog.dom.TagIterator=function(a,b,c,d,e){this.reversed=!!b;this.node=null;this.tagType=goog.dom.TagWalkType.OTHER;this.started_=!1;this.constrained=!c;a&amp;&amp;this.setPosition(a,d);this.depth=void 0!=e?e:this.tagType||0;this.reversed&amp;&amp;(this.depth*=-1)};goog.inherits(goog.dom.TagIterator,goog.iter.Iterator);&#xD;	goog.dom.TagIterator.prototype.setPosition=function(a,b,c){if(this.node=a)goog.isNumber(b)?this.tagType=b:this.tagType=this.node.nodeType!=goog.dom.NodeType.ELEMENT?goog.dom.TagWalkType.OTHER:this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;goog.isNumber(c)&amp;&amp;(this.depth=c)};goog.dom.TagIterator.prototype.copyFrom=function(a){this.node=a.node;this.tagType=a.tagType;this.depth=a.depth;this.reversed=a.reversed;this.constrained=a.constrained};&#xD;	goog.dom.TagIterator.prototype.clone=function(){return new goog.dom.TagIterator(this.node,this.reversed,!this.constrained,this.tagType,this.depth)};goog.dom.TagIterator.prototype.skipTag=function(){var a=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;this.tagType==a&amp;&amp;(this.tagType=-1*a,this.depth+=this.tagType*(this.reversed?-1:1))};&#xD;	goog.dom.TagIterator.prototype.restartTag=function(){var a=this.reversed?goog.dom.TagWalkType.START_TAG:goog.dom.TagWalkType.END_TAG;this.tagType==a&amp;&amp;(this.tagType=-1*a,this.depth+=this.tagType*(this.reversed?-1:1))};&#xD;	goog.dom.TagIterator.prototype.next=function(){if(this.started_){if(!this.node||this.constrained&amp;&amp;0==this.depth)throw goog.iter.StopIteration;var a=this.node;var b=this.reversed?goog.dom.TagWalkType.END_TAG:goog.dom.TagWalkType.START_TAG;if(this.tagType==b){var c=this.reversed?a.lastChild:a.firstChild;c?this.setPosition(c):this.setPosition(a,-1*b)}else(c=this.reversed?a.previousSibling:a.nextSibling)?this.setPosition(c):this.setPosition(a.parentNode,-1*b);this.depth+=this.tagType*(this.reversed?-1:&#xD;	1)}else this.started_=!0;a=this.node;if(!this.node)throw goog.iter.StopIteration;return a};goog.dom.TagIterator.prototype.isStarted=function(){return this.started_};goog.dom.TagIterator.prototype.isStartTag=function(){return this.tagType==goog.dom.TagWalkType.START_TAG};goog.dom.TagIterator.prototype.isEndTag=function(){return this.tagType==goog.dom.TagWalkType.END_TAG};goog.dom.TagIterator.prototype.isNonElement=function(){return this.tagType==goog.dom.TagWalkType.OTHER};&#xD;	goog.dom.TagIterator.prototype.equals=function(a){return a.node==this.node&amp;&amp;(!this.node||a.tagType==this.tagType)};goog.dom.TagIterator.prototype.splice=function(a){var b=this.node;this.restartTag();this.reversed=!this.reversed;goog.dom.TagIterator.prototype.next.call(this);this.reversed=!this.reversed;for(var c=goog.isArrayLike(arguments[0])?arguments[0]:arguments,d=c.length-1;0&lt;=d;d--)goog.dom.insertSiblingAfter(c[d],b);goog.dom.removeNode(b)};goog.dom.NodeIterator=function(a,b,c,d){goog.dom.TagIterator.call(this,a,b,c,null,d)};goog.inherits(goog.dom.NodeIterator,goog.dom.TagIterator);goog.dom.NodeIterator.prototype.next=function(){do goog.dom.NodeIterator.superClass_.next.call(this);while(this.isEndTag());return this.node};goog.ui.PaletteRenderer=function(){goog.ui.ControlRenderer.call(this)};goog.inherits(goog.ui.PaletteRenderer,goog.ui.ControlRenderer);goog.addSingletonGetter(goog.ui.PaletteRenderer);goog.ui.PaletteRenderer.cellId_=0;goog.ui.PaletteRenderer.CSS_CLASS="goog-palette";goog.ui.PaletteRenderer.prototype.createDom=function(a){var b=this.getClassNames(a);a=a.getDomHelper().createDom("DIV",b,this.createGrid(a.getContent(),a.getSize(),a.getDomHelper()));goog.a11y.aria.setRole(a,goog.a11y.aria.Role.GRID);return a};&#xD;	goog.ui.PaletteRenderer.prototype.createGrid=function(a,b,c){for(var d=[],e=0,f=0;e&lt;b.height;e++){for(var g=[],h=0;h&lt;b.width;h++){var k=a&amp;&amp;a[f++];g.push(this.createCell(k,c))}d.push(this.createRow(g,c))}return this.createTable(d,c)};goog.ui.PaletteRenderer.prototype.createTable=function(a,b){var c=b.createDom("TABLE",this.getCssClass()+"-table",b.createDom("TBODY",this.getCssClass()+"-body",a));c.cellSpacing="0";c.cellPadding="0";return c};&#xD;	goog.ui.PaletteRenderer.prototype.createRow=function(a,b){var c=b.createDom("TR",this.getCssClass()+"-row",a);goog.a11y.aria.setRole(c,goog.a11y.aria.Role.ROW);return c};&#xD;	goog.ui.PaletteRenderer.prototype.createCell=function(a,b){var c=b.createDom("TD",{"class":this.getCssClass()+"-cell",id:this.getCssClass()+"-cell-"+goog.ui.PaletteRenderer.cellId_++},a);goog.a11y.aria.setRole(c,goog.a11y.aria.Role.GRIDCELL);goog.a11y.aria.setState(c,goog.a11y.aria.State.SELECTED,!1);if(!goog.dom.getTextContent(c)&amp;&amp;!goog.a11y.aria.getLabel(c)){var d=this.findAriaLabelForCell_(c);d&amp;&amp;goog.a11y.aria.setLabel(c,d)}return c};&#xD;	goog.ui.PaletteRenderer.prototype.findAriaLabelForCell_=function(a){a=new goog.dom.NodeIterator(a);for(var b="",c;!b&amp;&amp;(c=goog.iter.nextOrValue(a,null));)c.nodeType==goog.dom.NodeType.ELEMENT&amp;&amp;(b=goog.a11y.aria.getLabel(c)||c.title);return b};goog.ui.PaletteRenderer.prototype.canDecorate=function(a){return!1};goog.ui.PaletteRenderer.prototype.decorate=function(a,b){return null};&#xD;	goog.ui.PaletteRenderer.prototype.setContent=function(a,b){if(a){var c=goog.dom.getElementsByTagNameAndClass("TBODY",this.getCssClass()+"-body",a)[0];if(c){var d=0;goog.array.forEach(c.rows,function(a){goog.array.forEach(a.cells,function(a){goog.dom.removeChildren(a);if(b){var c=b[d++];c&amp;&amp;goog.dom.appendChild(a,c)}})});if(d&lt;b.length){for(var e=[],f=goog.dom.getDomHelper(a),g=c.rows[0].cells.length;d&lt;b.length;){var h=b[d++];e.push(this.createCell(h,f));e.length==g&amp;&amp;(h=this.createRow(e,f),goog.dom.appendChild(c,&#xD;	h),e.length=0)}if(0&lt;e.length){for(;e.length&lt;g;)e.push(this.createCell("",f));h=this.createRow(e,f);goog.dom.appendChild(c,h)}}}goog.style.setUnselectable(a,!0,goog.userAgent.GECKO)}};goog.ui.PaletteRenderer.prototype.getContainingItem=function(a,b){for(var c=a.getElement();b&amp;&amp;b.nodeType==goog.dom.NodeType.ELEMENT&amp;&amp;b!=c;){if("TD"==b.tagName&amp;&amp;goog.dom.classlist.contains(b,this.getCssClass()+"-cell"))return b.firstChild;b=b.parentNode}return null};&#xD;	goog.ui.PaletteRenderer.prototype.highlightCell=function(a,b,c){b&amp;&amp;(b=this.getCellForItem(b),goog.asserts.assert(b),goog.dom.classlist.enable(b,this.getCssClass()+"-cell-hover",c),c?goog.a11y.aria.setState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT,b.id):b.id==goog.a11y.aria.getState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT)&amp;&amp;goog.a11y.aria.removeState(a.getElementStrict(),goog.a11y.aria.State.ACTIVEDESCENDANT))};&#xD;	goog.ui.PaletteRenderer.prototype.getCellForItem=function(a){return a?a.parentNode:null};goog.ui.PaletteRenderer.prototype.selectCell=function(a,b,c){b&amp;&amp;(a=b.parentNode,goog.dom.classlist.enable(a,this.getCssClass()+"-cell-selected",c),goog.a11y.aria.setState(a,goog.a11y.aria.State.SELECTED,c))};goog.ui.PaletteRenderer.prototype.getCssClass=function(){return goog.ui.PaletteRenderer.CSS_CLASS};goog.ui.SelectionModel=function(a){goog.events.EventTarget.call(this);this.items_=[];this.addItems(a)};goog.inherits(goog.ui.SelectionModel,goog.events.EventTarget);goog.tagUnsealableClass(goog.ui.SelectionModel);goog.ui.SelectionModel.prototype.selectedItem_=null;goog.ui.SelectionModel.prototype.selectionHandler_=null;goog.ui.SelectionModel.prototype.getSelectionHandler=function(){return this.selectionHandler_};&#xD;	goog.ui.SelectionModel.prototype.setSelectionHandler=function(a){this.selectionHandler_=a};goog.ui.SelectionModel.prototype.getItemCount=function(){return this.items_.length};goog.ui.SelectionModel.prototype.indexOfItem=function(a){return a?goog.array.indexOf(this.items_,a):-1};goog.ui.SelectionModel.prototype.getFirst=function(){return this.items_[0]};goog.ui.SelectionModel.prototype.getLast=function(){return this.items_[this.items_.length-1]};&#xD;	goog.ui.SelectionModel.prototype.getItemAt=function(a){return this.items_[a]||null};goog.ui.SelectionModel.prototype.addItems=function(a){a&amp;&amp;(goog.array.forEach(a,function(a){this.selectItem_(a,!1)},this),goog.array.extend(this.items_,a))};goog.ui.SelectionModel.prototype.addItem=function(a){this.addItemAt(a,this.getItemCount())};goog.ui.SelectionModel.prototype.addItemAt=function(a,b){a&amp;&amp;(this.selectItem_(a,!1),goog.array.insertAt(this.items_,a,b))};&#xD;	goog.ui.SelectionModel.prototype.removeItem=function(a){a&amp;&amp;goog.array.remove(this.items_,a)&amp;&amp;a==this.selectedItem_&amp;&amp;(this.selectedItem_=null,this.dispatchEvent(goog.events.EventType.SELECT))};goog.ui.SelectionModel.prototype.removeItemAt=function(a){this.removeItem(this.getItemAt(a))};goog.ui.SelectionModel.prototype.getSelectedItem=function(){return this.selectedItem_};goog.ui.SelectionModel.prototype.getItems=function(){return goog.array.clone(this.items_)};&#xD;	goog.ui.SelectionModel.prototype.setSelectedItem=function(a){a!=this.selectedItem_&amp;&amp;(this.selectItem_(this.selectedItem_,!1),this.selectedItem_=a,this.selectItem_(a,!0));this.dispatchEvent(goog.events.EventType.SELECT)};goog.ui.SelectionModel.prototype.getSelectedIndex=function(){return this.indexOfItem(this.selectedItem_)};goog.ui.SelectionModel.prototype.setSelectedIndex=function(a){this.setSelectedItem(this.getItemAt(a))};&#xD;	goog.ui.SelectionModel.prototype.clear=function(){goog.array.clear(this.items_);this.selectedItem_=null};goog.ui.SelectionModel.prototype.disposeInternal=function(){goog.ui.SelectionModel.superClass_.disposeInternal.call(this);delete this.items_;this.selectedItem_=null};goog.ui.SelectionModel.prototype.selectItem_=function(a,b){a&amp;&amp;("function"==typeof this.selectionHandler_?this.selectionHandler_(a,b):"function"==typeof a.setSelected&amp;&amp;a.setSelected(b))};goog.ui.Palette=function(a,b,c){goog.ui.Control.call(this,a,b||goog.ui.PaletteRenderer.getInstance(),c);this.setAutoStates(goog.ui.Component.State.CHECKED|goog.ui.Component.State.SELECTED|goog.ui.Component.State.OPENED,!1);this.currentCellControl_=new goog.ui.Palette.CurrentCell_;this.currentCellControl_.setParentEventTarget(this);this.lastHighlightedIndex_=-1};goog.inherits(goog.ui.Palette,goog.ui.Control);goog.tagUnsealableClass(goog.ui.Palette);goog.ui.Palette.EventType={AFTER_HIGHLIGHT:goog.events.getUniqueId("afterhighlight")};&#xD;	goog.ui.Palette.prototype.size_=null;goog.ui.Palette.prototype.highlightedIndex_=-1;goog.ui.Palette.prototype.selectionModel_=null;goog.ui.Palette.prototype.disposeInternal=function(){goog.ui.Palette.superClass_.disposeInternal.call(this);this.selectionModel_&amp;&amp;(this.selectionModel_.dispose(),this.selectionModel_=null);this.size_=null;this.currentCellControl_.dispose()};&#xD;	goog.ui.Palette.prototype.setContentInternal=function(a){goog.ui.Palette.superClass_.setContentInternal.call(this,a);this.adjustSize_();this.selectionModel_?(this.selectionModel_.clear(),this.selectionModel_.addItems(a)):(this.selectionModel_=new goog.ui.SelectionModel(a),this.selectionModel_.setSelectionHandler(goog.bind(this.selectItem_,this)),this.getHandler().listen(this.selectionModel_,goog.events.EventType.SELECT,this.handleSelectionChange));this.highlightedIndex_=-1};&#xD;	goog.ui.Palette.prototype.getCaption=function(){return""};goog.ui.Palette.prototype.setCaption=function(a){};goog.ui.Palette.prototype.handleMouseOver=function(a){goog.ui.Palette.superClass_.handleMouseOver.call(this,a);var b=this.getRenderer().getContainingItem(this,a.target);b&amp;&amp;a.relatedTarget&amp;&amp;goog.dom.contains(b,a.relatedTarget)||b!=this.getHighlightedItem()&amp;&amp;this.setHighlightedItem(b)};&#xD;	goog.ui.Palette.prototype.handleMouseDown=function(a){goog.ui.Palette.superClass_.handleMouseDown.call(this,a);this.isActive()&amp;&amp;(a=this.getRenderer().getContainingItem(this,a.target),a!=this.getHighlightedItem()&amp;&amp;this.setHighlightedItem(a))};goog.ui.Palette.prototype.performActionInternal=function(a){var b=this.getHighlightedItem();return b?(a&amp;&amp;this.shouldSelectHighlightedItem_(a)&amp;&amp;this.setSelectedItem(b),goog.ui.Palette.superClass_.performActionInternal.call(this,a)):!1};&#xD;	goog.ui.Palette.prototype.shouldSelectHighlightedItem_=function(a){return this.getSelectedItem()?"mouseup"!=a.type?!0:!!this.getRenderer().getContainingItem(this,a.target):!0};&#xD;	goog.ui.Palette.prototype.handleKeyEvent=function(a){var b=this.getContent(),b=b?b.length:0,c=this.size_.width;if(0==b||!this.isEnabled())return!1;if(a.keyCode==goog.events.KeyCodes.ENTER||a.keyCode==goog.events.KeyCodes.SPACE)return this.performActionInternal(a);if(a.keyCode==goog.events.KeyCodes.HOME)return this.setHighlightedIndex(0),!0;if(a.keyCode==goog.events.KeyCodes.END)return this.setHighlightedIndex(b-1),!0;var d=0&gt;this.highlightedIndex_?this.getSelectedIndex():this.highlightedIndex_;switch(a.keyCode){case goog.events.KeyCodes.LEFT:if(-1==&#xD;	d||0==d)d=b;this.setHighlightedIndex(d-1);a.preventDefault();return!0;case goog.events.KeyCodes.RIGHT:return d==b-1&amp;&amp;(d=-1),this.setHighlightedIndex(d+1),a.preventDefault(),!0;case goog.events.KeyCodes.UP:-1==d&amp;&amp;(d=b+c-1);if(d&gt;=c)return this.setHighlightedIndex(d-c),a.preventDefault(),!0;break;case goog.events.KeyCodes.DOWN:if(-1==d&amp;&amp;(d=-c),d&lt;b-c)return this.setHighlightedIndex(d+c),a.preventDefault(),!0}return!1};goog.ui.Palette.prototype.handleSelectionChange=function(a){};&#xD;	goog.ui.Palette.prototype.getSize=function(){return this.size_};goog.ui.Palette.prototype.setSize=function(a,b){if(this.getElement())throw Error(goog.ui.Component.Error.ALREADY_RENDERED);this.size_=goog.isNumber(a)?new goog.math.Size(a,b):a;this.adjustSize_()};goog.ui.Palette.prototype.getHighlightedIndex=function(){return this.highlightedIndex_};goog.ui.Palette.prototype.getHighlightedItem=function(){var a=this.getContent();return a&amp;&amp;a[this.highlightedIndex_]};&#xD;	goog.ui.Palette.prototype.getHighlightedCellElement_=function(){return this.getRenderer().getCellForItem(this.getHighlightedItem())};goog.ui.Palette.prototype.setHighlightedIndex=function(a){a!=this.highlightedIndex_&amp;&amp;(this.highlightIndex_(this.highlightedIndex_,!1),this.lastHighlightedIndex_=this.highlightedIndex_,this.highlightedIndex_=a,this.highlightIndex_(a,!0),this.dispatchEvent(goog.ui.Palette.EventType.AFTER_HIGHLIGHT))};&#xD;	goog.ui.Palette.prototype.setHighlightedItem=function(a){var b=this.getContent();this.setHighlightedIndex(b&amp;&amp;a?goog.array.indexOf(b,a):-1)};goog.ui.Palette.prototype.getSelectedIndex=function(){return this.selectionModel_?this.selectionModel_.getSelectedIndex():-1};goog.ui.Palette.prototype.getSelectedItem=function(){return this.selectionModel_?this.selectionModel_.getSelectedItem():null};goog.ui.Palette.prototype.setSelectedIndex=function(a){this.selectionModel_&amp;&amp;this.selectionModel_.setSelectedIndex(a)};&#xD;	goog.ui.Palette.prototype.setSelectedItem=function(a){this.selectionModel_&amp;&amp;this.selectionModel_.setSelectedItem(a)};goog.ui.Palette.prototype.highlightIndex_=function(a,b){if(this.getElement()){var c=this.getContent();if(c&amp;&amp;0&lt;=a&amp;&amp;a&lt;c.length){var d=this.getHighlightedCellElement_();this.currentCellControl_.getElement()!=d&amp;&amp;this.currentCellControl_.setElementInternal(d);this.currentCellControl_.tryHighlight(b)&amp;&amp;this.getRenderer().highlightCell(this,c[a],b)}}};&#xD;	goog.ui.Palette.prototype.setHighlighted=function(a){a&amp;&amp;-1==this.highlightedIndex_?this.setHighlightedIndex(-1&lt;this.lastHighlightedIndex_?this.lastHighlightedIndex_:0):a||this.setHighlightedIndex(-1);goog.ui.Palette.superClass_.setHighlighted.call(this,a)};goog.ui.Palette.prototype.selectItem_=function(a,b){this.getElement()&amp;&amp;this.getRenderer().selectCell(this,a,b)};&#xD;	goog.ui.Palette.prototype.adjustSize_=function(){var a=this.getContent();if(a)if(this.size_&amp;&amp;this.size_.width){if(a=Math.ceil(a.length/this.size_.width),!goog.isNumber(this.size_.height)||this.size_.height&lt;a)this.size_.height=a}else a=Math.ceil(Math.sqrt(a.length)),this.size_=new goog.math.Size(a,a);else this.size_=new goog.math.Size(0,0)};goog.ui.Palette.CurrentCell_=function(){goog.ui.Control.call(this,null);this.setDispatchTransitionEvents(goog.ui.Component.State.HOVER,!0)};&#xD;	goog.inherits(goog.ui.Palette.CurrentCell_,goog.ui.Control);goog.ui.Palette.CurrentCell_.prototype.tryHighlight=function(a){this.setHighlighted(a);return this.isHighlighted()==a};goog.ui.ColorPalette=function(a,b,c){this.colors_=a||[];goog.ui.Palette.call(this,null,b||goog.ui.PaletteRenderer.getInstance(),c);this.setColors(this.colors_)};goog.inherits(goog.ui.ColorPalette,goog.ui.Palette);goog.tagUnsealableClass(goog.ui.ColorPalette);goog.ui.ColorPalette.prototype.normalizedColors_=null;goog.ui.ColorPalette.prototype.labels_=null;goog.ui.ColorPalette.prototype.getColors=function(){return this.colors_};&#xD;	goog.ui.ColorPalette.prototype.setColors=function(a,b){this.colors_=a;this.labels_=b||null;this.normalizedColors_=null;this.setContent(this.createColorNodes())};goog.ui.ColorPalette.prototype.getSelectedColor=function(){var a=this.getSelectedItem();return a?(a=goog.style.getStyle(a,"background-color"),goog.ui.ColorPalette.parseColor_(a)):null};&#xD;	goog.ui.ColorPalette.prototype.setSelectedColor=function(a){a=goog.ui.ColorPalette.parseColor_(a);this.normalizedColors_||(this.normalizedColors_=goog.array.map(this.colors_,function(a){return goog.ui.ColorPalette.parseColor_(a)}));this.setSelectedIndex(a?goog.array.indexOf(this.normalizedColors_,a):-1)};&#xD;	goog.ui.ColorPalette.prototype.createColorNodes=function(){return goog.array.map(this.colors_,function(a,b){var c=this.getDomHelper().createDom("DIV",{"class":this.getRenderer().getCssClass()+"-colorswatch",style:"background-color:"+a});c.title=this.labels_&amp;&amp;this.labels_[b]?this.labels_[b]:"#"==a.charAt(0)?"RGB ("+goog.color.hexToRgb(a).join(", ")+")":a;return c},this)};goog.ui.ColorPalette.parseColor_=function(a){if(a)try{return goog.color.parse(a).hex}catch(b){}return null};goog.ui.ColorPicker=function(a,b){goog.ui.Component.call(this,a);this.colorPalette_=b||null;this.getHandler().listen(this,goog.ui.Component.EventType.ACTION,this.onColorPaletteAction_)};goog.inherits(goog.ui.ColorPicker,goog.ui.Component);goog.ui.ColorPicker.DEFAULT_NUM_COLS=5;goog.ui.ColorPicker.EventType={CHANGE:"change"};goog.ui.ColorPicker.prototype.focusable_=!0;goog.ui.ColorPicker.prototype.getColors=function(){return this.colorPalette_?this.colorPalette_.getColors():null};&#xD;	goog.ui.ColorPicker.prototype.setColors=function(a){this.colorPalette_?this.colorPalette_.setColors(a):this.createColorPalette_(a)};goog.ui.ColorPicker.prototype.addColors=function(a){this.setColors(a)};goog.ui.ColorPicker.prototype.setSize=function(a){this.colorPalette_||this.createColorPalette_([]);this.colorPalette_.setSize(a)};goog.ui.ColorPicker.prototype.getSize=function(){return this.colorPalette_?this.colorPalette_.getSize():null};goog.ui.ColorPicker.prototype.setColumnCount=function(a){this.setSize(a)};&#xD;	goog.ui.ColorPicker.prototype.getSelectedIndex=function(){return this.colorPalette_?this.colorPalette_.getSelectedIndex():-1};goog.ui.ColorPicker.prototype.setSelectedIndex=function(a){this.colorPalette_&amp;&amp;this.colorPalette_.setSelectedIndex(a)};goog.ui.ColorPicker.prototype.getSelectedColor=function(){return this.colorPalette_?this.colorPalette_.getSelectedColor():null};goog.ui.ColorPicker.prototype.setSelectedColor=function(a){this.colorPalette_&amp;&amp;this.colorPalette_.setSelectedColor(a)};&#xD;	goog.ui.ColorPicker.prototype.isFocusable=function(){return this.focusable_};goog.ui.ColorPicker.prototype.setFocusable=function(a){this.focusable_=a;this.colorPalette_&amp;&amp;this.colorPalette_.setSupportedState(goog.ui.Component.State.FOCUSED,a)};goog.ui.ColorPicker.prototype.canDecorate=function(a){return!1};&#xD;	goog.ui.ColorPicker.prototype.enterDocument=function(){goog.ui.ColorPicker.superClass_.enterDocument.call(this);this.colorPalette_&amp;&amp;this.colorPalette_.render(this.getElement());this.getElement().unselectable="on"};goog.ui.ColorPicker.prototype.disposeInternal=function(){goog.ui.ColorPicker.superClass_.disposeInternal.call(this);this.colorPalette_&amp;&amp;(this.colorPalette_.dispose(),this.colorPalette_=null)};goog.ui.ColorPicker.prototype.focus=function(){this.colorPalette_&amp;&amp;this.colorPalette_.getElement().focus()};&#xD;	goog.ui.ColorPicker.prototype.onColorPaletteAction_=function(a){a.stopPropagation();this.dispatchEvent(goog.ui.ColorPicker.EventType.CHANGE)};goog.ui.ColorPicker.prototype.createColorPalette_=function(a){a=new goog.ui.ColorPalette(a,null,this.getDomHelper());a.setSize(goog.ui.ColorPicker.DEFAULT_NUM_COLS);a.setSupportedState(goog.ui.Component.State.FOCUSED,this.focusable_);this.addChild(a);this.colorPalette_=a;this.isInDocument()&amp;&amp;this.colorPalette_.render(this.getElement())};&#xD;	goog.ui.ColorPicker.createSimpleColorGrid=function(a){a=new goog.ui.ColorPicker(a);a.setSize(7);a.setColors(goog.ui.ColorPicker.SIMPLE_GRID_COLORS);return a};goog.ui.ColorPicker.SIMPLE_GRID_COLORS="#ffffff #cccccc #c0c0c0 #999999 #666666 #333333 #000000 #ffcccc #ff6666 #ff0000 #cc0000 #990000 #660000 #330000 #ffcc99 #ff9966 #ff9900 #ff6600 #cc6600 #993300 #663300 #ffff99 #ffff66 #ffcc66 #ffcc33 #cc9933 #996633 #663333 #ffffcc #ffff33 #ffff00 #ffcc00 #999900 #666600 #333300 #99ff99 #66ff99 #33ff33 #33cc00 #009900 #006600 #003300 #99ffff #33ffff #66cccc #00cccc #339999 #336666 #003333 #ccffff #66ffff #33ccff #3366ff #3333ff #000099 #000066 #ccccff #9999ff #6666cc #6633ff #6600cc #333399 #330099 #ffccff #ff99ff #cc66cc #cc33cc #993399 #663366 #330033".split(" ");goog.events.FocusHandler=function(a){goog.events.EventTarget.call(this);this.element_=a;a=goog.userAgent.IE?"focusout":"blur";this.listenKeyIn_=goog.events.listen(this.element_,goog.userAgent.IE?"focusin":"focus",this,!goog.userAgent.IE);this.listenKeyOut_=goog.events.listen(this.element_,a,this,!goog.userAgent.IE)};goog.inherits(goog.events.FocusHandler,goog.events.EventTarget);goog.events.FocusHandler.EventType={FOCUSIN:"focusin",FOCUSOUT:"focusout"};&#xD;	goog.events.FocusHandler.prototype.handleEvent=function(a){var b=a.getBrowserEvent(),b=new goog.events.BrowserEvent(b);b.type="focusin"==a.type||"focus"==a.type?goog.events.FocusHandler.EventType.FOCUSIN:goog.events.FocusHandler.EventType.FOCUSOUT;this.dispatchEvent(b)};goog.events.FocusHandler.prototype.disposeInternal=function(){goog.events.FocusHandler.superClass_.disposeInternal.call(this);goog.events.unlistenByKey(this.listenKeyIn_);goog.events.unlistenByKey(this.listenKeyOut_);delete this.element_};goog.debug.LOGGING_ENABLED=goog.DEBUG;goog.debug.FORCE_SLOPPY_STACKS=!1;goog.debug.catchErrors=function(a,b,c){c=c||goog.global;var d=c.onerror,e=!!b;goog.userAgent.WEBKIT&amp;&amp;!goog.userAgent.isVersionOrHigher("535.3")&amp;&amp;(e=!e);c.onerror=function(b,c,h,k,l){d&amp;&amp;d(b,c,h,k,l);a({message:b,fileName:c,line:h,col:k,error:l});return e}};&#xD;	goog.debug.expose=function(a,b){if("undefined"==typeof a)return"undefined";if(null==a)return"NULL";var c=[],d;for(d in a)if(b||!goog.isFunction(a[d])){var e=d+" = ";try{e+=a[d]}catch(f){e+="*** "+f+" ***"}c.push(e)}return c.join("\n")};&#xD;	goog.debug.deepExpose=function(a,b){var c=[],d=[],e={},f=function(a,g){var h=g+"  ";try{if(goog.isDef(a))if(goog.isNull(a))c.push("NULL");else if(goog.isString(a))c.push(&apos;"&apos;+a.replace(/\n/g,"\n"+g)+&apos;"&apos;);else if(goog.isFunction(a))c.push(String(a).replace(/\n/g,"\n"+g));else if(goog.isObject(a)){goog.hasUid(a)||d.push(a);var k=goog.getUid(a);if(e[k])c.push("*** reference loop detected (id="+k+") ***");else{e[k]=!0;c.push("{");for(var n in a)if(b||!goog.isFunction(a[n]))c.push("\n"),c.push(h),c.push(n+&#xD;	" = "),f(a[n],h);c.push("\n"+g+"}");delete e[k]}}else c.push(a);else c.push("undefined")}catch(p){c.push("*** "+p+" ***")}};f(a,"");for(var g=0;g&lt;d.length;g++)goog.removeUid(d[g]);return c.join("")};goog.debug.exposeArray=function(a){for(var b=[],c=0;c&lt;a.length;c++)goog.isArray(a[c])?b.push(goog.debug.exposeArray(a[c])):b.push(a[c]);return"[ "+b.join(", ")+" ]"};&#xD;	goog.debug.normalizeErrorObject=function(a){var b=goog.getObjectByName("window.location.href");if(goog.isString(a))return{message:a,name:"Unknown error",lineNumber:"Not available",fileName:b,stack:"Not available"};var c=!1;try{var d=a.lineNumber||a.line||"Not available"}catch(f){d="Not available",c=!0}try{var e=a.fileName||a.filename||a.sourceURL||goog.global.$googDebugFname||b}catch(f){e="Not available",c=!0}return!c&amp;&amp;a.lineNumber&amp;&amp;a.fileName&amp;&amp;a.stack&amp;&amp;a.message&amp;&amp;a.name?a:{message:a.message||"Not available",&#xD;	name:a.name||"UnknownError",lineNumber:d,fileName:e,stack:a.stack||"Not available"}};goog.debug.enhanceError=function(a,b){if(a instanceof Error)var c=a;else c=Error(a),Error.captureStackTrace&amp;&amp;Error.captureStackTrace(c,goog.debug.enhanceError);c.stack||(c.stack=goog.debug.getStacktrace(goog.debug.enhanceError));if(b){for(var d=0;c["message"+d];)++d;c["message"+d]=String(b)}return c};&#xD;	goog.debug.getStacktraceSimple=function(a){if(!goog.debug.FORCE_SLOPPY_STACKS){var b=goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);if(b)return b}for(var b=[],c=arguments.callee.caller,d=0;c&amp;&amp;(!a||d&lt;a);){b.push(goog.debug.getFunctionName(c));b.push("()\n");try{c=c.caller}catch(e){b.push("[exception trying to get caller]\n");break}d++;if(d&gt;=goog.debug.MAX_STACK_DEPTH){b.push("[...long stack...]");break}}a&amp;&amp;d&gt;=a?b.push("[...reached max depth limit...]"):b.push("[end]");return b.join("")};&#xD;	goog.debug.MAX_STACK_DEPTH=50;goog.debug.getNativeStackTrace_=function(a){var b=Error();if(Error.captureStackTrace)return Error.captureStackTrace(b,a),String(b.stack);try{throw b;}catch(c){b=c}return(a=b.stack)?String(a):null};goog.debug.getStacktrace=function(a){var b;goog.debug.FORCE_SLOPPY_STACKS||(b=goog.debug.getNativeStackTrace_(a||goog.debug.getStacktrace));b||(b=goog.debug.getStacktraceHelper_(a||arguments.callee.caller,[]));return b};&#xD;	goog.debug.getStacktraceHelper_=function(a,b){var c=[];if(goog.array.contains(b,a))c.push("[...circular reference...]");else if(a&amp;&amp;b.length&lt;goog.debug.MAX_STACK_DEPTH){c.push(goog.debug.getFunctionName(a)+"(");for(var d=a.arguments,e=0;d&amp;&amp;e&lt;d.length;e++){0&lt;e&amp;&amp;c.push(", ");var f=d[e];switch(typeof f){case "object":f=f?"object":"null";break;case "string":break;case "number":f=String(f);break;case "boolean":f=f?"true":"false";break;case "function":f=(f=goog.debug.getFunctionName(f))?f:"[fn]";break;default:f=&#xD;	typeof f}40&lt;f.length&amp;&amp;(f=f.substr(0,40)+"...");c.push(f)}b.push(a);c.push(")\n");try{c.push(goog.debug.getStacktraceHelper_(a.caller,b))}catch(g){c.push("[exception trying to get caller]\n")}}else a?c.push("[...long stack...]"):c.push("[end]");return c.join("")};goog.debug.setFunctionResolver=function(a){goog.debug.fnNameResolver_=a};&#xD;	goog.debug.getFunctionName=function(a){if(goog.debug.fnNameCache_[a])return goog.debug.fnNameCache_[a];if(goog.debug.fnNameResolver_){var b=goog.debug.fnNameResolver_(a);if(b)return goog.debug.fnNameCache_[a]=b}a=String(a);goog.debug.fnNameCache_[a]||(b=/function ([^\(]+)/.exec(a),goog.debug.fnNameCache_[a]=b?b[1]:"[Anonymous]");return goog.debug.fnNameCache_[a]};&#xD;	goog.debug.makeWhitespaceVisible=function(a){return a.replace(/ /g,"[_]").replace(/\f/g,"[f]").replace(/\n/g,"[n]\n").replace(/\r/g,"[r]").replace(/\t/g,"[t]")};goog.debug.runtimeType=function(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.debug.fnNameCache_={};goog.debug.LogRecord=function(a,b,c,d,e){this.reset(a,b,c,d,e)};goog.debug.LogRecord.prototype.sequenceNumber_=0;goog.debug.LogRecord.prototype.exception_=null;goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS=!0;goog.debug.LogRecord.nextSequenceNumber_=0;&#xD;	goog.debug.LogRecord.prototype.reset=function(a,b,c,d,e){goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS&amp;&amp;(this.sequenceNumber_="number"==typeof e?e:goog.debug.LogRecord.nextSequenceNumber_++);this.time_=d||goog.now();this.level_=a;this.msg_=b;this.loggerName_=c;delete this.exception_};goog.debug.LogRecord.prototype.getLoggerName=function(){return this.loggerName_};goog.debug.LogRecord.prototype.getException=function(){return this.exception_};&#xD;	goog.debug.LogRecord.prototype.setException=function(a){this.exception_=a};goog.debug.LogRecord.prototype.setLoggerName=function(a){this.loggerName_=a};goog.debug.LogRecord.prototype.getLevel=function(){return this.level_};goog.debug.LogRecord.prototype.setLevel=function(a){this.level_=a};goog.debug.LogRecord.prototype.getMessage=function(){return this.msg_};goog.debug.LogRecord.prototype.setMessage=function(a){this.msg_=a};goog.debug.LogRecord.prototype.getMillis=function(){return this.time_};&#xD;	goog.debug.LogRecord.prototype.setMillis=function(a){this.time_=a};goog.debug.LogRecord.prototype.getSequenceNumber=function(){return this.sequenceNumber_};goog.debug.LogBuffer=function(){goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(),"Cannot use goog.debug.LogBuffer without defining goog.debug.LogBuffer.CAPACITY.");this.clear()};goog.debug.LogBuffer.getInstance=function(){goog.debug.LogBuffer.instance_||(goog.debug.LogBuffer.instance_=new goog.debug.LogBuffer);return goog.debug.LogBuffer.instance_};goog.debug.LogBuffer.CAPACITY=0;&#xD;	goog.debug.LogBuffer.prototype.addRecord=function(a,b,c){var d=(this.curIndex_+1)%goog.debug.LogBuffer.CAPACITY;this.curIndex_=d;if(this.isFull_)return d=this.buffer_[d],d.reset(a,b,c),d;this.isFull_=d==goog.debug.LogBuffer.CAPACITY-1;return this.buffer_[d]=new goog.debug.LogRecord(a,b,c)};goog.debug.LogBuffer.isBufferingEnabled=function(){return 0&lt;goog.debug.LogBuffer.CAPACITY};&#xD;	goog.debug.LogBuffer.prototype.clear=function(){this.buffer_=Array(goog.debug.LogBuffer.CAPACITY);this.curIndex_=-1;this.isFull_=!1};goog.debug.LogBuffer.prototype.forEachRecord=function(a){var b=this.buffer_;if(b[0]){var c=this.curIndex_,d=this.isFull_?c:-1;do d=(d+1)%goog.debug.LogBuffer.CAPACITY,a(b[d]);while(d!=c)}};goog.debug.Logger=function(a){this.name_=a;this.handlers_=this.children_=this.level_=this.parent_=null};goog.debug.Logger.ROOT_LOGGER_NAME="";goog.debug.Logger.ENABLE_HIERARCHY=!0;goog.debug.Logger.ENABLE_HIERARCHY||(goog.debug.Logger.rootHandlers_=[]);goog.debug.Logger.Level=function(a,b){this.name=a;this.value=b};goog.debug.Logger.Level.prototype.toString=function(){return this.name};goog.debug.Logger.Level.OFF=new goog.debug.Logger.Level("OFF",Infinity);&#xD;	goog.debug.Logger.Level.SHOUT=new goog.debug.Logger.Level("SHOUT",1200);goog.debug.Logger.Level.SEVERE=new goog.debug.Logger.Level("SEVERE",1E3);goog.debug.Logger.Level.WARNING=new goog.debug.Logger.Level("WARNING",900);goog.debug.Logger.Level.INFO=new goog.debug.Logger.Level("INFO",800);goog.debug.Logger.Level.CONFIG=new goog.debug.Logger.Level("CONFIG",700);goog.debug.Logger.Level.FINE=new goog.debug.Logger.Level("FINE",500);goog.debug.Logger.Level.FINER=new goog.debug.Logger.Level("FINER",400);&#xD;	goog.debug.Logger.Level.FINEST=new goog.debug.Logger.Level("FINEST",300);goog.debug.Logger.Level.ALL=new goog.debug.Logger.Level("ALL",0);goog.debug.Logger.Level.PREDEFINED_LEVELS=[goog.debug.Logger.Level.OFF,goog.debug.Logger.Level.SHOUT,goog.debug.Logger.Level.SEVERE,goog.debug.Logger.Level.WARNING,goog.debug.Logger.Level.INFO,goog.debug.Logger.Level.CONFIG,goog.debug.Logger.Level.FINE,goog.debug.Logger.Level.FINER,goog.debug.Logger.Level.FINEST,goog.debug.Logger.Level.ALL];&#xD;	goog.debug.Logger.Level.predefinedLevelsCache_=null;goog.debug.Logger.Level.createPredefinedLevelsCache_=function(){goog.debug.Logger.Level.predefinedLevelsCache_={};for(var a=0,b;b=goog.debug.Logger.Level.PREDEFINED_LEVELS[a];a++)goog.debug.Logger.Level.predefinedLevelsCache_[b.value]=b,goog.debug.Logger.Level.predefinedLevelsCache_[b.name]=b};&#xD;	goog.debug.Logger.Level.getPredefinedLevel=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();return goog.debug.Logger.Level.predefinedLevelsCache_[a]||null};&#xD;	goog.debug.Logger.Level.getPredefinedLevelByValue=function(a){goog.debug.Logger.Level.predefinedLevelsCache_||goog.debug.Logger.Level.createPredefinedLevelsCache_();if(a in goog.debug.Logger.Level.predefinedLevelsCache_)return goog.debug.Logger.Level.predefinedLevelsCache_[a];for(var b=0;b&lt;goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++b){var c=goog.debug.Logger.Level.PREDEFINED_LEVELS[b];if(c.value&lt;=a)return c}return null};goog.debug.Logger.getLogger=function(a){return goog.debug.LogManager.getLogger(a)};&#xD;	goog.debug.Logger.logToProfilers=function(a){goog.global.console&amp;&amp;(goog.global.console.timeStamp?goog.global.console.timeStamp(a):goog.global.console.markTimeline&amp;&amp;goog.global.console.markTimeline(a));goog.global.msWriteProfilerMark&amp;&amp;goog.global.msWriteProfilerMark(a)};goog.debug.Logger.prototype.getName=function(){return this.name_};&#xD;	goog.debug.Logger.prototype.addHandler=function(a){goog.debug.LOGGING_ENABLED&amp;&amp;(goog.debug.Logger.ENABLE_HIERARCHY?(this.handlers_||(this.handlers_=[]),this.handlers_.push(a)):(goog.asserts.assert(!this.name_,"Cannot call addHandler on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootHandlers_.push(a)))};&#xD;	goog.debug.Logger.prototype.removeHandler=function(a){if(goog.debug.LOGGING_ENABLED){var b=goog.debug.Logger.ENABLE_HIERARCHY?this.handlers_:goog.debug.Logger.rootHandlers_;return!!b&amp;&amp;goog.array.remove(b,a)}return!1};goog.debug.Logger.prototype.getParent=function(){return this.parent_};goog.debug.Logger.prototype.getChildren=function(){this.children_||(this.children_={});return this.children_};&#xD;	goog.debug.Logger.prototype.setLevel=function(a){goog.debug.LOGGING_ENABLED&amp;&amp;(goog.debug.Logger.ENABLE_HIERARCHY?this.level_=a:(goog.asserts.assert(!this.name_,"Cannot call setLevel() on a non-root logger when goog.debug.Logger.ENABLE_HIERARCHY is false."),goog.debug.Logger.rootLevel_=a))};goog.debug.Logger.prototype.getLevel=function(){return goog.debug.LOGGING_ENABLED?this.level_:goog.debug.Logger.Level.OFF};&#xD;	goog.debug.Logger.prototype.getEffectiveLevel=function(){if(!goog.debug.LOGGING_ENABLED)return goog.debug.Logger.Level.OFF;if(!goog.debug.Logger.ENABLE_HIERARCHY)return goog.debug.Logger.rootLevel_;if(this.level_)return this.level_;if(this.parent_)return this.parent_.getEffectiveLevel();goog.asserts.fail("Root logger has no level set.");return null};goog.debug.Logger.prototype.isLoggable=function(a){return goog.debug.LOGGING_ENABLED&amp;&amp;a.value&gt;=this.getEffectiveLevel().value};&#xD;	goog.debug.Logger.prototype.log=function(a,b,c){goog.debug.LOGGING_ENABLED&amp;&amp;this.isLoggable(a)&amp;&amp;(goog.isFunction(b)&amp;&amp;(b=b()),this.doLogRecord_(this.getLogRecord(a,b,c)))};goog.debug.Logger.prototype.getLogRecord=function(a,b,c){a=goog.debug.LogBuffer.isBufferingEnabled()?goog.debug.LogBuffer.getInstance().addRecord(a,b,this.name_):new goog.debug.LogRecord(a,String(b),this.name_);c&amp;&amp;a.setException(c);return a};&#xD;	goog.debug.Logger.prototype.shout=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.SHOUT,a,b)};goog.debug.Logger.prototype.severe=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.SEVERE,a,b)};goog.debug.Logger.prototype.warning=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.WARNING,a,b)};goog.debug.Logger.prototype.info=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.INFO,a,b)};&#xD;	goog.debug.Logger.prototype.config=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.CONFIG,a,b)};goog.debug.Logger.prototype.fine=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.FINE,a,b)};goog.debug.Logger.prototype.finer=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.FINER,a,b)};goog.debug.Logger.prototype.finest=function(a,b){goog.debug.LOGGING_ENABLED&amp;&amp;this.log(goog.debug.Logger.Level.FINEST,a,b)};&#xD;	goog.debug.Logger.prototype.logRecord=function(a){goog.debug.LOGGING_ENABLED&amp;&amp;this.isLoggable(a.getLevel())&amp;&amp;this.doLogRecord_(a)};goog.debug.Logger.prototype.doLogRecord_=function(a){goog.debug.Logger.logToProfilers("log:"+a.getMessage());if(goog.debug.Logger.ENABLE_HIERARCHY)for(var b=this;b;)b.callPublish_(a),b=b.getParent();else for(var b=0,c;c=goog.debug.Logger.rootHandlers_[b++];)c(a)};goog.debug.Logger.prototype.callPublish_=function(a){if(this.handlers_)for(var b=0,c;c=this.handlers_[b];b++)c(a)};&#xD;	goog.debug.Logger.prototype.setParent_=function(a){this.parent_=a};goog.debug.Logger.prototype.addChild_=function(a,b){this.getChildren()[a]=b};goog.debug.LogManager={};goog.debug.LogManager.loggers_={};goog.debug.LogManager.rootLogger_=null;&#xD;	goog.debug.LogManager.initialize=function(){goog.debug.LogManager.rootLogger_||(goog.debug.LogManager.rootLogger_=new goog.debug.Logger(goog.debug.Logger.ROOT_LOGGER_NAME),goog.debug.LogManager.loggers_[goog.debug.Logger.ROOT_LOGGER_NAME]=goog.debug.LogManager.rootLogger_,goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG))};goog.debug.LogManager.getLoggers=function(){return goog.debug.LogManager.loggers_};&#xD;	goog.debug.LogManager.getRoot=function(){goog.debug.LogManager.initialize();return goog.debug.LogManager.rootLogger_};goog.debug.LogManager.getLogger=function(a){goog.debug.LogManager.initialize();return goog.debug.LogManager.loggers_[a]||goog.debug.LogManager.createLogger_(a)};goog.debug.LogManager.createFunctionForCatchErrors=function(a){return function(b){(a||goog.debug.LogManager.getRoot()).severe("Error: "+b.message+" ("+b.fileName+" @ Line: "+b.line+")")}};&#xD;	goog.debug.LogManager.createLogger_=function(a){var b=new goog.debug.Logger(a);if(goog.debug.Logger.ENABLE_HIERARCHY){var c=a.lastIndexOf("."),d=a.substr(0,c),c=a.substr(c+1),d=goog.debug.LogManager.getLogger(d);d.addChild_(c,b);b.setParent_(d)}return goog.debug.LogManager.loggers_[a]=b};goog.log={};goog.log.ENABLED=goog.debug.LOGGING_ENABLED;goog.log.ROOT_LOGGER_NAME=goog.debug.Logger.ROOT_LOGGER_NAME;goog.log.Logger=goog.debug.Logger;goog.log.Level=goog.debug.Logger.Level;goog.log.LogRecord=goog.debug.LogRecord;goog.log.getLogger=function(a,b){if(goog.log.ENABLED){var c=goog.debug.LogManager.getLogger(a);b&amp;&amp;c&amp;&amp;c.setLevel(b);return c}return null};goog.log.addHandler=function(a,b){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.addHandler(b)};&#xD;	goog.log.removeHandler=function(a,b){return goog.log.ENABLED&amp;&amp;a?a.removeHandler(b):!1};goog.log.log=function(a,b,c,d){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.log(b,c,d)};goog.log.error=function(a,b,c){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.severe(b,c)};goog.log.warning=function(a,b,c){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.warning(b,c)};goog.log.info=function(a,b,c){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.info(b,c)};goog.log.fine=function(a,b,c){goog.log.ENABLED&amp;&amp;a&amp;&amp;a.fine(b,c)};goog.string.StringBuffer=function(a,b){null!=a&amp;&amp;this.append.apply(this,arguments)};goog.string.StringBuffer.prototype.buffer_="";goog.string.StringBuffer.prototype.set=function(a){this.buffer_=""+a};goog.string.StringBuffer.prototype.append=function(a,b,c){this.buffer_+=String(a);if(null!=b)for(var d=1;d&lt;arguments.length;d++)this.buffer_+=arguments[d];return this};goog.string.StringBuffer.prototype.clear=function(){this.buffer_=""};goog.string.StringBuffer.prototype.getLength=function(){return this.buffer_.length};&#xD;	goog.string.StringBuffer.prototype.toString=function(){return this.buffer_};goog.ui.tree={};goog.ui.tree.BaseNode=function(a,b,c){goog.ui.Component.call(this,c);this.config_=b||goog.ui.tree.BaseNode.defaultConfig;this.html_=goog.html.SafeHtml.htmlEscapePreservingNewlines(a);this.expanded_=this.selected_=!1;this.toolTip_=null;this.afterLabelHtml_=goog.html.SafeHtml.EMPTY;this.isUserCollapsible_=!0;this.depth_=-1};goog.inherits(goog.ui.tree.BaseNode,goog.ui.Component);&#xD;	goog.ui.tree.BaseNode.EventType={BEFORE_EXPAND:"beforeexpand",EXPAND:"expand",BEFORE_COLLAPSE:"beforecollapse",COLLAPSE:"collapse"};goog.ui.tree.BaseNode.allNodes={};goog.ui.tree.BaseNode.prototype.disposeInternal=function(){goog.ui.tree.BaseNode.superClass_.disposeInternal.call(this);this.tree&amp;&amp;(this.tree.removeNode(this),this.tree=null);this.setElementInternal(null)};&#xD;	goog.ui.tree.BaseNode.prototype.initAccessibility=function(){var a=this.getElement();if(a){var b=this.getLabelElement();b&amp;&amp;!b.id&amp;&amp;(b.id=this.getId()+".label");goog.a11y.aria.setRole(a,"treeitem");goog.a11y.aria.setState(a,"selected",!1);goog.a11y.aria.setState(a,"level",this.getDepth());b&amp;&amp;goog.a11y.aria.setState(a,"labelledby",b.id);(b=this.getIconElement())&amp;&amp;goog.a11y.aria.setRole(b,"presentation");(b=this.getExpandIconElement())&amp;&amp;goog.a11y.aria.setRole(b,"presentation");if(b=this.getChildrenElement())if(goog.a11y.aria.setRole(b,&#xD;	"group"),b.hasChildNodes())for(goog.a11y.aria.setState(a,goog.a11y.aria.State.EXPANDED,!1),a=this.getChildCount(),b=1;b&lt;=a;b++){var c=this.getChildAt(b-1).getElement();goog.asserts.assert(c,"The child element cannot be null");goog.a11y.aria.setState(c,"setsize",a);goog.a11y.aria.setState(c,"posinset",b)}}};goog.ui.tree.BaseNode.prototype.createDom=function(){var a=this.getDomHelper().safeHtmlToNode(this.toSafeHtml());this.setElementInternal(a)};&#xD;	goog.ui.tree.BaseNode.prototype.enterDocument=function(){goog.ui.tree.BaseNode.superClass_.enterDocument.call(this);goog.ui.tree.BaseNode.allNodes[this.getId()]=this;this.initAccessibility()};goog.ui.tree.BaseNode.prototype.exitDocument=function(){goog.ui.tree.BaseNode.superClass_.exitDocument.call(this);delete goog.ui.tree.BaseNode.allNodes[this.getId()]};&#xD;	goog.ui.tree.BaseNode.prototype.addChildAt=function(a,b,c){goog.asserts.assert(!a.getParent());goog.asserts.assertInstanceof(a,goog.ui.tree.BaseNode);c=this.getChildAt(b-1);var d=this.getChildAt(b);goog.ui.tree.BaseNode.superClass_.addChildAt.call(this,a,b);a.previousSibling_=c;a.nextSibling_=d;c?c.nextSibling_=a:this.firstChild_=a;d?d.previousSibling_=a:this.lastChild_=a;(b=this.getTree())&amp;&amp;a.setTreeInternal(b);a.setDepth_(this.getDepth()+1);if(b=this.getElement())if(this.updateExpandIcon(),goog.a11y.aria.setState(b,&#xD;	goog.a11y.aria.State.EXPANDED,this.getExpanded()),this.getExpanded()){b=this.getChildrenElement();a.getElement()||a.createDom();var e=a.getElement(),f=d&amp;&amp;d.getElement();b.insertBefore(e,f);this.isInDocument()&amp;&amp;a.enterDocument();d||(c?c.updateExpandIcon():(goog.style.setElementShown(b,!0),this.setExpanded(this.getExpanded())))}};&#xD;	goog.ui.tree.BaseNode.prototype.add=function(a,b){goog.asserts.assert(!b||b.getParent()==this,"Can only add nodes before siblings");a.getParent()&amp;&amp;a.getParent().removeChild(a);this.addChildAt(a,b?this.indexOfChild(b):this.getChildCount());return a};&#xD;	goog.ui.tree.BaseNode.prototype.removeChild=function(a,b){var c=this.getTree(),d=c?c.getSelectedItem():null;if(d==a||a.contains(d))c.hasFocus()?(this.select(),goog.Timer.callOnce(this.onTimeoutSelect_,10,this)):this.select();goog.ui.tree.BaseNode.superClass_.removeChild.call(this,a);this.lastChild_==a&amp;&amp;(this.lastChild_=a.previousSibling_);this.firstChild_==a&amp;&amp;(this.firstChild_=a.nextSibling_);a.previousSibling_&amp;&amp;(a.previousSibling_.nextSibling_=a.nextSibling_);a.nextSibling_&amp;&amp;(a.nextSibling_.previousSibling_=&#xD;	a.previousSibling_);d=a.isLastSibling();a.tree=null;a.depth_=-1;if(c&amp;&amp;(c.removeNode(a),this.isInDocument())){c=this.getChildrenElement();if(a.isInDocument()){var e=a.getElement();c.removeChild(e);a.exitDocument()}d&amp;&amp;(d=this.getLastChild())&amp;&amp;d.updateExpandIcon();this.hasChildren()||(c.style.display="none",this.updateExpandIcon(),this.updateIcon_(),(d=this.getElement())&amp;&amp;goog.a11y.aria.removeState(d,goog.a11y.aria.State.EXPANDED))}return a};goog.ui.tree.BaseNode.prototype.remove=goog.ui.tree.BaseNode.prototype.removeChild;&#xD;	goog.ui.tree.BaseNode.prototype.onTimeoutSelect_=function(){this.select()};goog.ui.tree.BaseNode.prototype.getTree=goog.abstractMethod;goog.ui.tree.BaseNode.prototype.getDepth=function(){var a=this.depth_;0&gt;a&amp;&amp;(a=this.computeDepth_(),this.setDepth_(a));return a};goog.ui.tree.BaseNode.prototype.computeDepth_=function(){var a=this.getParent();return a?a.getDepth()+1:0};&#xD;	goog.ui.tree.BaseNode.prototype.setDepth_=function(a){if(a!=this.depth_){this.depth_=a;var b=this.getRowElement();if(b){var c=this.getPixelIndent_()+"px";this.isRightToLeft()?b.style.paddingRight=c:b.style.paddingLeft=c}this.forEachChild(function(b){b.setDepth_(a+1)})}};goog.ui.tree.BaseNode.prototype.contains=function(a){for(;a;){if(a==this)return!0;a=a.getParent()}return!1};goog.ui.tree.BaseNode.EMPTY_CHILDREN_=[];&#xD;	goog.ui.tree.BaseNode.prototype.getChildren=function(){var a=[];this.forEachChild(function(b){a.push(b)});return a};goog.ui.tree.BaseNode.prototype.getFirstChild=function(){return this.getChildAt(0)};goog.ui.tree.BaseNode.prototype.getLastChild=function(){return this.getChildAt(this.getChildCount()-1)};goog.ui.tree.BaseNode.prototype.getPreviousSibling=function(){return this.previousSibling_};goog.ui.tree.BaseNode.prototype.getNextSibling=function(){return this.nextSibling_};&#xD;	goog.ui.tree.BaseNode.prototype.isLastSibling=function(){return!this.nextSibling_};goog.ui.tree.BaseNode.prototype.isSelected=function(){return this.selected_};goog.ui.tree.BaseNode.prototype.select=function(){var a=this.getTree();a&amp;&amp;a.setSelectedItem(this)};goog.ui.tree.BaseNode.prototype.deselect=goog.nullFunction;&#xD;	goog.ui.tree.BaseNode.prototype.setSelectedInternal=function(a){if(this.selected_!=a){this.selected_=a;this.updateRow();var b=this.getElement();b&amp;&amp;(goog.a11y.aria.setState(b,"selected",a),a&amp;&amp;(a=this.getTree().getElement(),goog.asserts.assert(a,"The DOM element for the tree cannot be null"),goog.a11y.aria.setState(a,"activedescendant",this.getId())))}};goog.ui.tree.BaseNode.prototype.getExpanded=function(){return this.expanded_};&#xD;	goog.ui.tree.BaseNode.prototype.setExpandedInternal=function(a){this.expanded_=a};&#xD;	goog.ui.tree.BaseNode.prototype.setExpanded=function(a){var b=a!=this.expanded_;if(!b||this.dispatchEvent(a?goog.ui.tree.BaseNode.EventType.BEFORE_EXPAND:goog.ui.tree.BaseNode.EventType.BEFORE_COLLAPSE)){this.expanded_=a;var c=this.getTree();var d=this.getElement();if(this.hasChildren()){if(!a&amp;&amp;c&amp;&amp;this.contains(c.getSelectedItem())&amp;&amp;this.select(),d){if(c=this.getChildrenElement())if(goog.style.setElementShown(c,a),goog.a11y.aria.setState(d,goog.a11y.aria.State.EXPANDED,a),a&amp;&amp;this.isInDocument()&amp;&amp;&#xD;	!c.hasChildNodes()){var e=[];this.forEachChild(function(a){e.push(a.toSafeHtml())});goog.dom.safe.setInnerHtml(c,goog.html.SafeHtml.concat(e));this.forEachChild(function(a){a.enterDocument()})}this.updateExpandIcon()}}else(c=this.getChildrenElement())&amp;&amp;goog.style.setElementShown(c,!1);d&amp;&amp;this.updateIcon_();b&amp;&amp;this.dispatchEvent(a?goog.ui.tree.BaseNode.EventType.EXPAND:goog.ui.tree.BaseNode.EventType.COLLAPSE)}};goog.ui.tree.BaseNode.prototype.toggle=function(){this.setExpanded(!this.getExpanded())};&#xD;	goog.ui.tree.BaseNode.prototype.expand=function(){this.setExpanded(!0)};goog.ui.tree.BaseNode.prototype.collapse=function(){this.setExpanded(!1)};goog.ui.tree.BaseNode.prototype.collapseChildren=function(){this.forEachChild(function(a){a.collapseAll()})};goog.ui.tree.BaseNode.prototype.collapseAll=function(){this.collapseChildren();this.collapse()};goog.ui.tree.BaseNode.prototype.expandChildren=function(){this.forEachChild(function(a){a.expandAll()})};&#xD;	goog.ui.tree.BaseNode.prototype.expandAll=function(){this.expandChildren();this.expand()};goog.ui.tree.BaseNode.prototype.reveal=function(){var a=this.getParent();a&amp;&amp;(a.setExpanded(!0),a.reveal())};goog.ui.tree.BaseNode.prototype.setIsUserCollapsible=function(a){(this.isUserCollapsible_=a)||this.expand();this.getElement()&amp;&amp;this.updateExpandIcon()};goog.ui.tree.BaseNode.prototype.isUserCollapsible=function(){return this.isUserCollapsible_};&#xD;	goog.ui.tree.BaseNode.prototype.toSafeHtml=function(){var a=this.getTree(),b=!a.getShowLines()||a==this.getParent()&amp;&amp;!a.getShowRootLines()?this.config_.cssChildrenNoLines:this.config_.cssChildren,a=this.getExpanded()&amp;&amp;this.hasChildren(),b={"class":b,style:this.getLineStyle()},c=[];a&amp;&amp;this.forEachChild(function(a){c.push(a.toSafeHtml())});a=goog.html.SafeHtml.create("div",b,c);return goog.html.SafeHtml.create("div",{"class":this.config_.cssItem,id:this.getId()},[this.getRowSafeHtml(),a])};&#xD;	goog.ui.tree.BaseNode.prototype.getPixelIndent_=function(){return Math.max(0,(this.getDepth()-1)*this.config_.indentWidth)};goog.ui.tree.BaseNode.prototype.getRowSafeHtml=function(){var a={};a["padding-"+(this.isRightToLeft()?"right":"left")]=this.getPixelIndent_()+"px";var a={"class":this.getRowClassName(),style:a},b=[this.getExpandIconSafeHtml(),this.getIconSafeHtml(),this.getLabelSafeHtml()];return goog.html.SafeHtml.create("div",a,b)};&#xD;	goog.ui.tree.BaseNode.prototype.getRowClassName=function(){var a=this.isSelected()?" "+this.config_.cssSelectedRow:"";return this.config_.cssTreeRow+a};goog.ui.tree.BaseNode.prototype.getLabelSafeHtml=function(){var a=goog.html.SafeHtml.create("span",{"class":this.config_.cssItemLabel,title:this.getToolTip()||null},this.getSafeHtml());return goog.html.SafeHtml.concat(a,goog.html.SafeHtml.create("span",{},this.getAfterLabelSafeHtml()))};goog.ui.tree.BaseNode.prototype.getAfterLabelHtml=function(){return goog.html.SafeHtml.unwrap(this.getAfterLabelSafeHtml())};&#xD;	goog.ui.tree.BaseNode.prototype.getAfterLabelSafeHtml=function(){return this.afterLabelHtml_};goog.ui.tree.BaseNode.prototype.setAfterLabelSafeHtml=function(a){this.afterLabelHtml_=a;var b=this.getAfterLabelElement();b&amp;&amp;goog.dom.safe.setInnerHtml(b,a)};goog.ui.tree.BaseNode.prototype.getIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{style:{display:"inline-block"},"class":this.getCalculatedIconClass()})};goog.ui.tree.BaseNode.prototype.getCalculatedIconClass=goog.abstractMethod;&#xD;	goog.ui.tree.BaseNode.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.create("span",{type:"expand",style:{display:"inline-block"},"class":this.getExpandIconClass()})};&#xD;	goog.ui.tree.BaseNode.prototype.getExpandIconClass=function(){var a=this.getTree(),b=!a.getShowLines()||a==this.getParent()&amp;&amp;!a.getShowRootLines(),c=this.config_,d=new goog.string.StringBuffer;d.append(c.cssTreeIcon," ",c.cssExpandTreeIcon," ");if(this.hasChildren()){var e=0;a.getShowExpandIcons()&amp;&amp;this.isUserCollapsible_&amp;&amp;(e=this.getExpanded()?2:1);b||(e=this.isLastSibling()?e+4:e+8);switch(e){case 1:d.append(c.cssExpandTreeIconPlus);break;case 2:d.append(c.cssExpandTreeIconMinus);break;case 4:d.append(c.cssExpandTreeIconL);&#xD;	break;case 5:d.append(c.cssExpandTreeIconLPlus);break;case 6:d.append(c.cssExpandTreeIconLMinus);break;case 8:d.append(c.cssExpandTreeIconT);break;case 9:d.append(c.cssExpandTreeIconTPlus);break;case 10:d.append(c.cssExpandTreeIconTMinus);break;default:d.append(c.cssExpandTreeIconBlank)}}else b?d.append(c.cssExpandTreeIconBlank):this.isLastSibling()?d.append(c.cssExpandTreeIconL):d.append(c.cssExpandTreeIconT);return d.toString()};&#xD;	goog.ui.tree.BaseNode.prototype.getLineStyle=function(){var a=this.getExpanded()&amp;&amp;this.hasChildren();return goog.html.SafeStyle.create({"background-position":this.getBackgroundPosition(),display:a?null:"none"})};goog.ui.tree.BaseNode.prototype.getBackgroundPosition=function(){return(this.isLastSibling()?"-100":(this.getDepth()-1)*this.config_.indentWidth)+"px 0"};&#xD;	goog.ui.tree.BaseNode.prototype.getElement=function(){var a=goog.ui.tree.BaseNode.superClass_.getElement.call(this);a||(a=this.getDomHelper().getElement(this.getId()),this.setElementInternal(a));return a};goog.ui.tree.BaseNode.prototype.getRowElement=function(){var a=this.getElement();return a?a.firstChild:null};goog.ui.tree.BaseNode.prototype.getExpandIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};&#xD;	goog.ui.tree.BaseNode.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.childNodes[1]:null};goog.ui.tree.BaseNode.prototype.getLabelElement=function(){var a=this.getRowElement();return a&amp;&amp;a.lastChild?a.lastChild.previousSibling:null};goog.ui.tree.BaseNode.prototype.getAfterLabelElement=function(){var a=this.getRowElement();return a?a.lastChild:null};goog.ui.tree.BaseNode.prototype.getChildrenElement=function(){var a=this.getElement();return a?a.lastChild:null};&#xD;	goog.ui.tree.BaseNode.prototype.setIconClass=function(a){this.iconClass_=a;this.isInDocument()&amp;&amp;this.updateIcon_()};goog.ui.tree.BaseNode.prototype.getIconClass=function(){return this.iconClass_};goog.ui.tree.BaseNode.prototype.setExpandedIconClass=function(a){this.expandedIconClass_=a;this.isInDocument()&amp;&amp;this.updateIcon_()};goog.ui.tree.BaseNode.prototype.getExpandedIconClass=function(){return this.expandedIconClass_};goog.ui.tree.BaseNode.prototype.setText=function(a){this.setSafeHtml(goog.html.SafeHtml.htmlEscape(a))};&#xD;	goog.ui.tree.BaseNode.prototype.getText=function(){return goog.string.unescapeEntities(goog.html.SafeHtml.unwrap(this.html_))};goog.ui.tree.BaseNode.prototype.setSafeHtml=function(a){this.html_=a;var b=this.getLabelElement();b&amp;&amp;goog.dom.safe.setInnerHtml(b,a);(a=this.getTree())&amp;&amp;a.setNode(this)};goog.ui.tree.BaseNode.prototype.getHtml=function(){return goog.html.SafeHtml.unwrap(this.getSafeHtml())};goog.ui.tree.BaseNode.prototype.getSafeHtml=function(){return this.html_};&#xD;	goog.ui.tree.BaseNode.prototype.setToolTip=function(a){this.toolTip_=a;var b=this.getLabelElement();b&amp;&amp;(b.title=a)};goog.ui.tree.BaseNode.prototype.getToolTip=function(){return this.toolTip_};goog.ui.tree.BaseNode.prototype.updateRow=function(){var a=this.getRowElement();a&amp;&amp;(a.className=this.getRowClassName())};&#xD;	goog.ui.tree.BaseNode.prototype.updateExpandIcon=function(){var a=this.getExpandIconElement();a&amp;&amp;(a.className=this.getExpandIconClass());if(a=this.getChildrenElement())a.style.backgroundPosition=this.getBackgroundPosition()};goog.ui.tree.BaseNode.prototype.updateIcon_=function(){this.getIconElement().className=this.getCalculatedIconClass()};&#xD;	goog.ui.tree.BaseNode.prototype.onMouseDown=function(a){"expand"==a.target.getAttribute("type")&amp;&amp;this.hasChildren()?this.isUserCollapsible_&amp;&amp;this.toggle():(this.select(),this.updateRow())};goog.ui.tree.BaseNode.prototype.onClick_=goog.events.Event.preventDefault;goog.ui.tree.BaseNode.prototype.onDoubleClick_=function(a){"expand"==a.target.getAttribute("type")&amp;&amp;this.hasChildren()||this.isUserCollapsible_&amp;&amp;this.toggle()};&#xD;	goog.ui.tree.BaseNode.prototype.onKeyDown=function(a){var b=!0;switch(a.keyCode){case goog.events.KeyCodes.RIGHT:if(a.altKey)break;this.hasChildren()&amp;&amp;(this.getExpanded()?this.getFirstChild().select():this.setExpanded(!0));break;case goog.events.KeyCodes.LEFT:if(a.altKey)break;if(this.hasChildren()&amp;&amp;this.getExpanded()&amp;&amp;this.isUserCollapsible_)this.setExpanded(!1);else{var c=this.getParent();var d=this.getTree();c&amp;&amp;(d.getShowRootNode()||c!=d)&amp;&amp;c.select()}break;case goog.events.KeyCodes.DOWN:(d=this.getNextShownNode())&amp;&amp;&#xD;	d.select();break;case goog.events.KeyCodes.UP:(d=this.getPreviousShownNode())&amp;&amp;d.select();break;default:b=!1}b&amp;&amp;(a.preventDefault(),(d=this.getTree())&amp;&amp;d.clearTypeAhead());return b};goog.ui.tree.BaseNode.prototype.getLastShownDescendant=function(){return this.getExpanded()&amp;&amp;this.hasChildren()?this.getLastChild().getLastShownDescendant():this};&#xD;	goog.ui.tree.BaseNode.prototype.getNextShownNode=function(){if(this.hasChildren()&amp;&amp;this.getExpanded())return this.getFirstChild();for(var a=this,b;a!=this.getTree();){b=a.getNextSibling();if(null!=b)return b;a=a.getParent()}return null};goog.ui.tree.BaseNode.prototype.getPreviousShownNode=function(){var a=this.getPreviousSibling();if(null!=a)return a.getLastShownDescendant();var a=this.getParent(),b=this.getTree();return!b.getShowRootNode()&amp;&amp;a==b||this==b?null:a};&#xD;	goog.ui.tree.BaseNode.prototype.getClientData=goog.ui.tree.BaseNode.prototype.getModel;goog.ui.tree.BaseNode.prototype.setClientData=goog.ui.tree.BaseNode.prototype.setModel;goog.ui.tree.BaseNode.prototype.getConfig=function(){return this.config_};goog.ui.tree.BaseNode.prototype.setTreeInternal=function(a){this.tree!=a&amp;&amp;(this.tree=a,a.setNode(this),this.forEachChild(function(b){b.setTreeInternal(a)}))};&#xD;	goog.ui.tree.BaseNode.defaultConfig={indentWidth:19,cssRoot:"goog-tree-root goog-tree-item",cssHideRoot:"goog-tree-hide-root",cssItem:"goog-tree-item",cssChildren:"goog-tree-children",cssChildrenNoLines:"goog-tree-children-nolines",cssTreeRow:"goog-tree-row",cssItemLabel:"goog-tree-item-label",cssTreeIcon:"goog-tree-icon",cssExpandTreeIcon:"goog-tree-expand-icon",cssExpandTreeIconPlus:"goog-tree-expand-icon-plus",cssExpandTreeIconMinus:"goog-tree-expand-icon-minus",cssExpandTreeIconTPlus:"goog-tree-expand-icon-tplus",&#xD;	cssExpandTreeIconTMinus:"goog-tree-expand-icon-tminus",cssExpandTreeIconLPlus:"goog-tree-expand-icon-lplus",cssExpandTreeIconLMinus:"goog-tree-expand-icon-lminus",cssExpandTreeIconT:"goog-tree-expand-icon-t",cssExpandTreeIconL:"goog-tree-expand-icon-l",cssExpandTreeIconBlank:"goog-tree-expand-icon-blank",cssExpandedFolderIcon:"goog-tree-expanded-folder-icon",cssCollapsedFolderIcon:"goog-tree-collapsed-folder-icon",cssFileIcon:"goog-tree-file-icon",cssExpandedRootIcon:"goog-tree-expanded-folder-icon",&#xD;	cssCollapsedRootIcon:"goog-tree-collapsed-folder-icon",cssSelectedRow:"selected"};goog.ui.tree.TreeNode=function(a,b,c){goog.ui.tree.BaseNode.call(this,a,b,c)};goog.inherits(goog.ui.tree.TreeNode,goog.ui.tree.BaseNode);goog.ui.tree.TreeNode.prototype.getTree=function(){if(this.tree)return this.tree;var a=this.getParent();return a&amp;&amp;(a=a.getTree())?(this.setTreeInternal(a),a):null};&#xD;	goog.ui.tree.TreeNode.prototype.getCalculatedIconClass=function(){var a=this.getExpanded(),b=this.getExpandedIconClass();if(a&amp;&amp;b)return b;b=this.getIconClass();if(!a&amp;&amp;b)return b;b=this.getConfig();if(this.hasChildren()){if(a&amp;&amp;b.cssExpandedFolderIcon)return b.cssTreeIcon+" "+b.cssExpandedFolderIcon;if(!a&amp;&amp;b.cssCollapsedFolderIcon)return b.cssTreeIcon+" "+b.cssCollapsedFolderIcon}else if(b.cssFileIcon)return b.cssTreeIcon+" "+b.cssFileIcon;return""};goog.structs={};goog.structs.getCount=function(a){return a.getCount&amp;&amp;"function"==typeof a.getCount?a.getCount():goog.isArrayLike(a)||goog.isString(a)?a.length:goog.object.getCount(a)};goog.structs.getValues=function(a){if(a.getValues&amp;&amp;"function"==typeof a.getValues)return a.getValues();if(goog.isString(a))return a.split("");if(goog.isArrayLike(a)){for(var b=[],c=a.length,d=0;d&lt;c;d++)b.push(a[d]);return b}return goog.object.getValues(a)};&#xD;	goog.structs.getKeys=function(a){if(a.getKeys&amp;&amp;"function"==typeof a.getKeys)return a.getKeys();if(!a.getValues||"function"!=typeof a.getValues){if(goog.isArrayLike(a)||goog.isString(a)){var b=[];a=a.length;for(var c=0;c&lt;a;c++)b.push(c);return b}return goog.object.getKeys(a)}};&#xD;	goog.structs.contains=function(a,b){return a.contains&amp;&amp;"function"==typeof a.contains?a.contains(b):a.containsValue&amp;&amp;"function"==typeof a.containsValue?a.containsValue(b):goog.isArrayLike(a)||goog.isString(a)?goog.array.contains(a,b):goog.object.containsValue(a,b)};goog.structs.isEmpty=function(a){return a.isEmpty&amp;&amp;"function"==typeof a.isEmpty?a.isEmpty():goog.isArrayLike(a)||goog.isString(a)?goog.array.isEmpty(a):goog.object.isEmpty(a)};&#xD;	goog.structs.clear=function(a){a.clear&amp;&amp;"function"==typeof a.clear?a.clear():goog.isArrayLike(a)?goog.array.clear(a):goog.object.clear(a)};goog.structs.forEach=function(a,b,c){if(a.forEach&amp;&amp;"function"==typeof a.forEach)a.forEach(b,c);else if(goog.isArrayLike(a)||goog.isString(a))goog.array.forEach(a,b,c);else for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g&lt;f;g++)b.call(c,e[g],d&amp;&amp;d[g],a)};&#xD;	goog.structs.filter=function(a,b,c){if("function"==typeof a.filter)return a.filter(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.filter(a,b,c);var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length;if(d){var g={};for(var h=0;h&lt;f;h++)b.call(c,e[h],d[h],a)&amp;&amp;(g[d[h]]=e[h])}else for(g=[],h=0;h&lt;f;h++)b.call(c,e[h],void 0,a)&amp;&amp;g.push(e[h]);return g};&#xD;	goog.structs.map=function(a,b,c){if("function"==typeof a.map)return a.map(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.map(a,b,c);var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length;if(d){var g={};for(var h=0;h&lt;f;h++)g[d[h]]=b.call(c,e[h],d[h],a)}else for(g=[],h=0;h&lt;f;h++)g[h]=b.call(c,e[h],void 0,a);return g};&#xD;	goog.structs.some=function(a,b,c){if("function"==typeof a.some)return a.some(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.some(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g&lt;f;g++)if(b.call(c,e[g],d&amp;&amp;d[g],a))return!0;return!1};&#xD;	goog.structs.every=function(a,b,c){if("function"==typeof a.every)return a.every(b,c);if(goog.isArrayLike(a)||goog.isString(a))return goog.array.every(a,b,c);for(var d=goog.structs.getKeys(a),e=goog.structs.getValues(a),f=e.length,g=0;g&lt;f;g++)if(!b.call(c,e[g],d&amp;&amp;d[g],a))return!1;return!0};goog.structs.Trie=function(a){this.value_=void 0;this.childNodes_={};a&amp;&amp;this.setAll(a)};goog.structs.Trie.prototype.set=function(a,b){this.setOrAdd_(a,b,!1)};goog.structs.Trie.prototype.add=function(a,b){this.setOrAdd_(a,b,!0)};&#xD;	goog.structs.Trie.prototype.setOrAdd_=function(a,b,c){for(var d=this,e=0;e&lt;a.length;e++){var f=a.charAt(e);d.childNodes_[f]||(d.childNodes_[f]=new goog.structs.Trie);d=d.childNodes_[f]}if(c&amp;&amp;void 0!==d.value_)throw Error(&apos;The collection already contains the key "&apos;+a+&apos;"&apos;);d.value_=b};goog.structs.Trie.prototype.setAll=function(a){var b=goog.structs.getKeys(a);a=goog.structs.getValues(a);for(var c=0;c&lt;b.length;c++)this.set(b[c],a[c])};&#xD;	goog.structs.Trie.prototype.getChildNode_=function(a){for(var b=this,c=0;c&lt;a.length;c++){var d=a.charAt(c),b=b.childNodes_[d];if(!b)return}return b};goog.structs.Trie.prototype.get=function(a){return(a=this.getChildNode_(a))?a.value_:void 0};goog.structs.Trie.prototype.getKeyAndPrefixes=function(a,b){var c=this,d={},e=b||0;void 0!==c.value_&amp;&amp;(d[e]=c.value_);for(;e&lt;a.length;e++){var f=a.charAt(e);if(!(f in c.childNodes_))break;c=c.childNodes_[f];void 0!==c.value_&amp;&amp;(d[e]=c.value_)}return d};&#xD;	goog.structs.Trie.prototype.getValues=function(){var a=[];this.getValuesInternal_(a);return a};goog.structs.Trie.prototype.getValuesInternal_=function(a){void 0!==this.value_&amp;&amp;a.push(this.value_);for(var b in this.childNodes_)this.childNodes_[b].getValuesInternal_(a)};goog.structs.Trie.prototype.getKeys=function(a){var b=[];if(a){for(var c=this,d=0;d&lt;a.length;d++){var e=a.charAt(d);if(!c.childNodes_[e])return[];c=c.childNodes_[e]}c.getKeysInternal_(a,b)}else this.getKeysInternal_("",b);return b};&#xD;	goog.structs.Trie.prototype.getKeysInternal_=function(a,b){void 0!==this.value_&amp;&amp;b.push(a);for(var c in this.childNodes_)this.childNodes_[c].getKeysInternal_(a+c,b)};goog.structs.Trie.prototype.containsKey=function(a){return void 0!==this.get(a)};goog.structs.Trie.prototype.containsPrefix=function(a){return 0==a.length?!this.isEmpty():!!this.getChildNode_(a)};&#xD;	goog.structs.Trie.prototype.containsValue=function(a){if(this.value_===a)return!0;for(var b in this.childNodes_)if(this.childNodes_[b].containsValue(a))return!0;return!1};goog.structs.Trie.prototype.clear=function(){this.childNodes_={};this.value_=void 0};&#xD;	goog.structs.Trie.prototype.remove=function(a){for(var b,c=this,d=[],e=0;e&lt;a.length;e++){b=a.charAt(e);if(!c.childNodes_[b])throw Error(&apos;The collection does not have the key "&apos;+a+&apos;"&apos;);d.push([c,b]);c=c.childNodes_[b]}a=c.value_;for(delete c.value_;0&lt;d.length;)if(b=d.pop(),c=b[0],b=b[1],c.childNodes_[b].isEmpty())delete c.childNodes_[b];else break;return a};goog.structs.Trie.prototype.clone=function(){return new goog.structs.Trie(this)};goog.structs.Trie.prototype.getCount=function(){return goog.structs.getCount(this.getValues())};&#xD;	goog.structs.Trie.prototype.isEmpty=function(){return void 0===this.value_&amp;&amp;goog.object.isEmpty(this.childNodes_)};goog.ui.tree.TypeAhead=function(){this.nodeMap_=new goog.structs.Trie;this.buffer_="";this.matchingNodes_=this.matchingLabels_=null;this.matchingNodeIndex_=this.matchingLabelIndex_=0};goog.ui.tree.TypeAhead.Offset={DOWN:1,UP:-1};&#xD;	goog.ui.tree.TypeAhead.prototype.handleNavigation=function(a){var b=!1;switch(a.keyCode){case goog.events.KeyCodes.DOWN:case goog.events.KeyCodes.UP:a.ctrlKey&amp;&amp;(this.jumpTo_(a.keyCode==goog.events.KeyCodes.DOWN?goog.ui.tree.TypeAhead.Offset.DOWN:goog.ui.tree.TypeAhead.Offset.UP),b=!0);break;case goog.events.KeyCodes.BACKSPACE:a=this.buffer_.length-1;b=!0;0&lt;a?(this.buffer_=this.buffer_.substring(0,a),this.jumpToLabel_(this.buffer_)):0==a?this.buffer_="":b=!1;break;case goog.events.KeyCodes.ESC:this.buffer_=&#xD;	"",b=!0}return b};goog.ui.tree.TypeAhead.prototype.handleTypeAheadChar=function(a){var b=!1;a.ctrlKey||a.altKey||(a=String.fromCharCode(a.charCode||a.keyCode).toLowerCase(),goog.string.isUnicodeChar(a)&amp;&amp;(" "!=a||this.buffer_)&amp;&amp;(this.buffer_+=a,b=this.jumpToLabel_(this.buffer_)));return b};&#xD;	goog.ui.tree.TypeAhead.prototype.setNodeInMap=function(a){var b=a.getText();if(b&amp;&amp;!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))){var b=b.toLowerCase(),c=this.nodeMap_.get(b);c?c.push(a):this.nodeMap_.set(b,[a])}};&#xD;	goog.ui.tree.TypeAhead.prototype.removeNodeFromMap=function(a){var b=a.getText();if(b&amp;&amp;!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(b))){var b=b.toLowerCase(),c=this.nodeMap_.get(b);if(c){for(var d=a.getChildCount(),e=0;e&lt;d;e++)this.removeNodeFromMap(a.getChildAt(e));goog.array.remove(c,a);c.length||this.nodeMap_.remove(b)}}};&#xD;	goog.ui.tree.TypeAhead.prototype.jumpToLabel_=function(a){var b=!1;(a=this.nodeMap_.getKeys(a))&amp;&amp;a.length&amp;&amp;(this.matchingLabelIndex_=this.matchingNodeIndex_=0,b=this.nodeMap_.get(a[0]),b=this.selectMatchingNode_(b))&amp;&amp;(this.matchingLabels_=a);return b};&#xD;	goog.ui.tree.TypeAhead.prototype.jumpTo_=function(a){var b=!1,c=this.matchingLabels_;if(c){var b=null,d=!1;if(this.matchingNodes_){var e=this.matchingNodeIndex_+a;0&lt;=e&amp;&amp;e&lt;this.matchingNodes_.length?(this.matchingNodeIndex_=e,b=this.matchingNodes_):d=!0}b||(e=this.matchingLabelIndex_+a,0&lt;=e&amp;&amp;e&lt;c.length&amp;&amp;(this.matchingLabelIndex_=e),c.length&gt;this.matchingLabelIndex_&amp;&amp;(b=this.nodeMap_.get(c[this.matchingLabelIndex_])),b&amp;&amp;b.length&amp;&amp;d&amp;&amp;(this.matchingNodeIndex_=a==goog.ui.tree.TypeAhead.Offset.UP?b.length-&#xD;	1:0));if(b=this.selectMatchingNode_(b))this.matchingLabels_=c}return b};goog.ui.tree.TypeAhead.prototype.selectMatchingNode_=function(a){if(a){if(this.matchingNodeIndex_&lt;a.length){var b=a[this.matchingNodeIndex_];this.matchingNodes_=a}b&amp;&amp;(b.reveal(),b.select())}return!!b};goog.ui.tree.TypeAhead.prototype.clear=function(){this.buffer_=""};goog.ui.tree.TreeControl=function(a,b,c){goog.ui.tree.BaseNode.call(this,a,b,c);this.setExpandedInternal(!0);this.setSelectedInternal(!0);this.selectedItem_=this;this.typeAhead_=new goog.ui.tree.TypeAhead;this.focusHandler_=this.keyHandler_=null;this.logger_=goog.log.getLogger("this");this.focused_=!1;this.focusedNode_=null;this.showRootLines_=this.showRootNode_=this.showExpandIcons_=this.showLines_=!0;if(goog.userAgent.IE)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(d){goog.log.warning(this.logger_,&#xD;	"Failed to enable background image cache")}};goog.inherits(goog.ui.tree.TreeControl,goog.ui.tree.BaseNode);goog.ui.tree.TreeControl.prototype.getTree=function(){return this};goog.ui.tree.TreeControl.prototype.getDepth=function(){return 0};goog.ui.tree.TreeControl.prototype.reveal=function(){};goog.ui.tree.TreeControl.prototype.handleFocus_=function(a){this.focused_=!0;goog.dom.classlist.add(goog.asserts.assert(this.getElement()),"focused");this.selectedItem_&amp;&amp;this.selectedItem_.select()};&#xD;	goog.ui.tree.TreeControl.prototype.handleBlur_=function(a){this.focused_=!1;goog.dom.classlist.remove(goog.asserts.assert(this.getElement()),"focused")};goog.ui.tree.TreeControl.prototype.hasFocus=function(){return this.focused_};goog.ui.tree.TreeControl.prototype.getExpanded=function(){return!this.showRootNode_||goog.ui.tree.TreeControl.superClass_.getExpanded.call(this)};&#xD;	goog.ui.tree.TreeControl.prototype.setExpanded=function(a){this.showRootNode_?goog.ui.tree.TreeControl.superClass_.setExpanded.call(this,a):this.setExpandedInternal(a)};goog.ui.tree.TreeControl.prototype.getExpandIconSafeHtml=function(){return goog.html.SafeHtml.EMPTY};goog.ui.tree.TreeControl.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};goog.ui.tree.TreeControl.prototype.getExpandIconElement=function(){return null};&#xD;	goog.ui.tree.TreeControl.prototype.updateExpandIcon=function(){};goog.ui.tree.TreeControl.prototype.getRowClassName=function(){return goog.ui.tree.TreeControl.superClass_.getRowClassName.call(this)+(this.showRootNode_?"":" "+this.getConfig().cssHideRoot)};&#xD;	goog.ui.tree.TreeControl.prototype.getCalculatedIconClass=function(){var a=this.getExpanded(),b=this.getExpandedIconClass();if(a&amp;&amp;b)return b;b=this.getIconClass();if(!a&amp;&amp;b)return b;b=this.getConfig();return a&amp;&amp;b.cssExpandedRootIcon?b.cssTreeIcon+" "+b.cssExpandedRootIcon:!a&amp;&amp;b.cssCollapsedRootIcon?b.cssTreeIcon+" "+b.cssCollapsedRootIcon:""};&#xD;	goog.ui.tree.TreeControl.prototype.setSelectedItem=function(a){if(this.selectedItem_!=a){var b=!1;this.selectedItem_&amp;&amp;(b=this.selectedItem_==this.focusedNode_,this.selectedItem_.setSelectedInternal(!1));if(this.selectedItem_=a)a.setSelectedInternal(!0),b&amp;&amp;a.select();this.dispatchEvent(goog.events.EventType.CHANGE)}};goog.ui.tree.TreeControl.prototype.getSelectedItem=function(){return this.selectedItem_};&#xD;	goog.ui.tree.TreeControl.prototype.setShowLines=function(a){this.showLines_!=a&amp;&amp;(this.showLines_=a,this.isInDocument()&amp;&amp;this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowLines=function(){return this.showLines_};&#xD;	goog.ui.tree.TreeControl.prototype.updateLinesAndExpandIcons_=function(){function a(e){var f=e.getChildrenElement();if(f){var g=!c||b==e.getParent()&amp;&amp;!d?e.getConfig().cssChildrenNoLines:e.getConfig().cssChildren;f.className=g;if(f=e.getExpandIconElement())f.className=e.getExpandIconClass()}e.forEachChild(a)}var b=this,c=b.getShowLines(),d=b.getShowRootLines();a(this)};&#xD;	goog.ui.tree.TreeControl.prototype.setShowRootLines=function(a){this.showRootLines_!=a&amp;&amp;(this.showRootLines_=a,this.isInDocument()&amp;&amp;this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowRootLines=function(){return this.showRootLines_};goog.ui.tree.TreeControl.prototype.setShowExpandIcons=function(a){this.showExpandIcons_!=a&amp;&amp;(this.showExpandIcons_=a,this.isInDocument()&amp;&amp;this.updateLinesAndExpandIcons_())};goog.ui.tree.TreeControl.prototype.getShowExpandIcons=function(){return this.showExpandIcons_};&#xD;	goog.ui.tree.TreeControl.prototype.setShowRootNode=function(a){if(this.showRootNode_!=a){this.showRootNode_=a;if(this.isInDocument()){var b=this.getRowElement();b&amp;&amp;(b.className=this.getRowClassName())}!a&amp;&amp;this.getSelectedItem()==this&amp;&amp;this.getFirstChild()&amp;&amp;this.setSelectedItem(this.getFirstChild())}};goog.ui.tree.TreeControl.prototype.getShowRootNode=function(){return this.showRootNode_};&#xD;	goog.ui.tree.TreeControl.prototype.initAccessibility=function(){goog.ui.tree.TreeControl.superClass_.initAccessibility.call(this);var a=this.getElement();goog.asserts.assert(a,"The DOM element for the tree cannot be null.");goog.a11y.aria.setRole(a,"tree");goog.a11y.aria.setState(a,"labelledby",this.getLabelElement().id)};&#xD;	goog.ui.tree.TreeControl.prototype.enterDocument=function(){goog.ui.tree.TreeControl.superClass_.enterDocument.call(this);var a=this.getElement();a.className=this.getConfig().cssRoot;a.setAttribute("hideFocus","true");this.attachEvents_();this.initAccessibility()};goog.ui.tree.TreeControl.prototype.exitDocument=function(){goog.ui.tree.TreeControl.superClass_.exitDocument.call(this);this.detachEvents_()};&#xD;	goog.ui.tree.TreeControl.prototype.attachEvents_=function(){var a=this.getElement();a.tabIndex=0;var b=this.keyHandler_=new goog.events.KeyHandler(a),c=this.focusHandler_=new goog.events.FocusHandler(a);this.getHandler().listen(c,goog.events.FocusHandler.EventType.FOCUSOUT,this.handleBlur_).listen(c,goog.events.FocusHandler.EventType.FOCUSIN,this.handleFocus_).listen(b,goog.events.KeyHandler.EventType.KEY,this.handleKeyEvent).listen(a,goog.events.EventType.MOUSEDOWN,this.handleMouseEvent_).listen(a,&#xD;	goog.events.EventType.CLICK,this.handleMouseEvent_).listen(a,goog.events.EventType.DBLCLICK,this.handleMouseEvent_)};goog.ui.tree.TreeControl.prototype.detachEvents_=function(){this.keyHandler_.dispose();this.keyHandler_=null;this.focusHandler_.dispose();this.focusHandler_=null};&#xD;	goog.ui.tree.TreeControl.prototype.handleMouseEvent_=function(a){goog.log.fine(this.logger_,"Received event "+a.type);var b=this.getNodeFromEvent_(a);if(b)switch(a.type){case goog.events.EventType.MOUSEDOWN:b.onMouseDown(a);break;case goog.events.EventType.CLICK:b.onClick_(a);break;case goog.events.EventType.DBLCLICK:b.onDoubleClick_(a)}};&#xD;	goog.ui.tree.TreeControl.prototype.handleKeyEvent=function(a){var b;(b=this.typeAhead_.handleNavigation(a)||this.selectedItem_&amp;&amp;this.selectedItem_.onKeyDown(a)||this.typeAhead_.handleTypeAheadChar(a))&amp;&amp;a.preventDefault();return b};goog.ui.tree.TreeControl.prototype.getNodeFromEvent_=function(a){for(var b=a.target;null!=b;){if(a=goog.ui.tree.BaseNode.allNodes[b.id])return a;if(b==this.getElement())break;b=b.parentNode}return null};&#xD;	goog.ui.tree.TreeControl.prototype.createNode=function(a){return new goog.ui.tree.TreeNode(a||goog.html.SafeHtml.EMPTY,this.getConfig(),this.getDomHelper())};goog.ui.tree.TreeControl.prototype.setNode=function(a){this.typeAhead_.setNodeInMap(a)};goog.ui.tree.TreeControl.prototype.removeNode=function(a){this.typeAhead_.removeNodeFromMap(a)};goog.ui.tree.TreeControl.prototype.clearTypeAhead=function(){this.typeAhead_.clear()};goog.ui.tree.TreeControl.defaultConfig=goog.ui.tree.BaseNode.defaultConfig;&#xD;	// Copyright 2013 Google Inc.  Apache License 2.0&#xD;	var Blockly={};Blockly.Blocks=Object(null);/*&#xD;&#xD;	 Visual Blocks Editor&#xD;&#xD;	 Copyright 2016 Massachusetts Institute of Technology&#xD;	 All rights reserved.&#xD;&#xD;	 Licensed under the Apache License, Version 2.0 (the "License");&#xD;	 you may not use this file except in compliance with the License.&#xD;	 You may obtain a copy of the License at&#xD;&#xD;	   http://www.apache.org/licenses/LICENSE-2.0&#xD;&#xD;	 Unless required by applicable law or agreed to in writing, software&#xD;	 distributed under the License is distributed on an "AS IS" BASIS,&#xD;	 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#xD;	 See the License for the specific language governing permissions and&#xD;	 limitations under the License.&#xD;	*/&#xD;	Blockly.Colours={motion:{primary:"#4C97FF",secondary:"#4280D7",tertiary:"#3373CC"},looks:{primary:"#9966FF",secondary:"#855CD6",tertiary:"#774DCB"},sounds:{primary:"#CF63CF",secondary:"#C94FC9",tertiary:"#BD42BD"},control:{primary:"#FFAB19",secondary:"#EC9C13",tertiary:"#CF8B17"},event:{primary:"#FFBF00",secondary:"#E6AC00",tertiary:"#CC9900"},sensing:{primary:"#5CB1D6",secondary:"#47A8D1",tertiary:"#2E8EB8"},pen:{primary:"#0fBD8C",secondary:"#0DA57A",tertiary:"#0B8E69"},operators:{primary:"#59C059",&#xD;	secondary:"#46B946",tertiary:"#389438"},data:{primary:"#FF8C1A",secondary:"#FF8000",tertiary:"#DB6E00"},more:{primary:"#FF6680",secondary:"#FF4D6A",tertiary:"#FF3355"},text:"#575E75",workspace:"#F9F9F9",toolboxHover:"#4C97FF",toolboxSelected:"#e9eef2",toolboxText:"#575E75",toolbox:"#FFFFFF",flyout:"#F9F9F9",scrollbar:"#CECDCE",scrollbarHover:"#CECDCE",textField:"#FFFFFF",insertionMarker:"#000000",insertionMarkerOpacity:.2,dragShadowOpacity:.3,stackGlow:"#FFF200",stackGlowOpacity:1,replacementGlow:"#FFFFFF",&#xD;	replacementGlowOpacity:1,colourPickerStroke:"#FFFFFF",fieldShadow:"rgba(0,0,0,0.1)",dropDownShadow:"rgba(0, 0, 0, .3)",numPadBackground:"#547AB2",numPadBorder:"#435F91",numPadActiveBackground:"#435F91",numPadText:"#FFFFFF",valueReportBackground:"#FFFFFF",valueReportBorder:"#AAAAAA"};&#xD;	// Copyright 2016 Google Inc.  Apache License 2.0&#xD;	Blockly.Touch={};Blockly.Touch.touchIdentifier_=null;Blockly.Touch.TOUCH_MAP={};goog.events.BrowserFeature.TOUCH_ENABLED&amp;&amp;(Blockly.Touch.TOUCH_MAP={mousedown:["touchstart"],mousemove:["touchmove"],mouseup:["touchend","touchcancel"]});Blockly.longPid_=0;Blockly.longStart_=function(a,b){Blockly.longStop_();1==a.changedTouches.length&amp;&amp;(Blockly.longPid_=setTimeout(function(){a.button=2;a.clientX=a.changedTouches[0].clientX;a.clientY=a.changedTouches[0].clientY;b&amp;&amp;b.handleRightClick(a)},Blockly.LONGPRESS))};&#xD;	Blockly.longStop_=function(){Blockly.longPid_&amp;&amp;(clearTimeout(Blockly.longPid_),Blockly.longPid_=0)};Blockly.Touch.clearTouchIdentifier=function(){Blockly.Touch.touchIdentifier_=null};Blockly.Touch.shouldHandleEvent=function(a){return!Blockly.Touch.isMouseOrTouchEvent(a)||Blockly.Touch.checkTouchIdentifier(a)};&#xD;	Blockly.Touch.getTouchIdentifierFromEvent=function(a){return a.changedTouches&amp;&amp;a.changedTouches[0]&amp;&amp;void 0!=a.changedTouches[0].identifier&amp;&amp;null!=a.changedTouches[0].identifier?a.changedTouches[0].identifier:"mouse"};&#xD;	Blockly.Touch.checkTouchIdentifier=function(a){var b=Blockly.Touch.getTouchIdentifierFromEvent(a);return void 0!=Blockly.Touch.touchIdentifier_&amp;&amp;null!=Blockly.Touch.touchIdentifier_?Blockly.Touch.touchIdentifier_==b:"mousedown"==a.type||"touchstart"==a.type?(Blockly.Touch.touchIdentifier_=b,!0):!1};Blockly.Touch.setClientFromTouch=function(a){if(goog.string.startsWith(a.type,"touch")){var b=a.changedTouches[0];a.clientX=b.clientX;a.clientY=b.clientY}};&#xD;	Blockly.Touch.isMouseOrTouchEvent=function(a){return goog.string.startsWith(a.type,"touch")||goog.string.startsWith(a.type,"mouse")};Blockly.Touch.splitEventByTouches=function(a){var b=[];if(a.changedTouches)for(var c=0;c&lt;a.changedTouches.length;c++)b[c]={type:a.type,changedTouches:[a.changedTouches[c]],target:a.target,stopPropagation:function(){a.stopPropagation()},preventDefault:function(){a.preventDefault()}};else b.push(a);return b};&#xD;	// Copyright 2017 Google Inc.  Apache License 2.0&#xD;	Blockly.VariableModel=function(a,b,c){this.name=a;this.type=b||"";this.id_=c||Blockly.utils.genUid()};Blockly.VariableModel.prototype.getId=function(){return this.id_};Blockly.VariableMap=function(){this.variableMap_={}};Blockly.VariableMap.prototype.clear=function(){this.variableMap_=Object(null)};&#xD;	Blockly.VariableMap.prototype.renameVariable=function(a,b){var c=this.getVariable(b),d=-1,e=-1,f="";if(a||c)f=(a||c).type;var g=this.getVariablesOfType(f);a&amp;&amp;(d=g.indexOf(a));c&amp;&amp;(e=g.indexOf(c));-1==d&amp;&amp;-1==e?(this.createVariable(b,""),console.log("Tried to rename an non-existent variable.")):d==e||-1!=d&amp;&amp;-1==e?this.variableMap_[f][d].name=b:-1!=d&amp;&amp;-1!=e&amp;&amp;(this.variableMap_[f][e].name=b,this.variableMap_[f].splice(d,1))};&#xD;	Blockly.VariableMap.prototype.createVariable=function(a,b,c){var d=this.getVariable(a);if(d){if(b&amp;&amp;d.type!=b)throw Error(&apos;Variable "&apos;+a+&apos;" is already in use and its type is "&apos;+d.type+&apos;" which conflicts with the passed in type, "&apos;+b+&apos;".&apos;);if(c&amp;&amp;d.getId()!=c)throw Error(&apos;Variable "&apos;+a+&apos;" is already in use and its id is "&apos;+d.getId()+&apos;" which conflicts with the passed in id, "&apos;+c+&apos;".&apos;);return d}if(c&amp;&amp;this.getVariableById(c))throw Error(&apos;Variable id, "&apos;+c+&apos;", is already in use.&apos;);c=c||Blockly.utils.genUid();&#xD;	b=b||"";d=new Blockly.VariableModel(a,b,c);this.variableMap_[b]?this.variableMap_[b].push(d):this.variableMap_[b]=[d];return d};Blockly.VariableMap.prototype.deleteVariable=function(a){for(var b=this.variableMap_[a.type],c=0,d;d=b[c];c++)if(d.getId()==a.getId()){b.splice(c,1);break}};Blockly.VariableMap.prototype.getVariable=function(a){for(var b=Object.keys(this.variableMap_),c=0;c&lt;b.length;c++)for(var d=b[c],e=0,f;f=this.variableMap_[d][e];e++)if(Blockly.Names.equals(f.name,a))return f;return null};&#xD;	Blockly.VariableMap.prototype.getVariableById=function(a){for(var b=Object.keys(this.variableMap_),c=0;c&lt;b.length;c++)for(var d=b[c],e=0,f;f=this.variableMap_[d][e];e++)if(f.getId()==a)return f;return null};Blockly.VariableMap.prototype.getVariablesOfType=function(a){return(a=this.variableMap_[a||""])?a:[]};Blockly.VariableMap.prototype.getVariableTypes=function(){return Object.keys(this.variableMap_)};&#xD;	Blockly.VariableMap.prototype.getAllVariables=function(){for(var a=[],b=Object.keys(this.variableMap_),c=0;c&lt;b.length;c++)a=a.concat(this.variableMap_[b[c]]);return a};&#xD;	// Copyright 2012 Google Inc.  Apache License 2.0&#xD;	Blockly.Workspace=function(a){this.id=Blockly.utils.genUid();Blockly.Workspace.WorkspaceDB_[this.id]=this;this.options=a||{};this.RTL=!!this.options.RTL;this.horizontalLayout=!!this.options.horizontalLayout;this.toolboxPosition=this.options.toolboxPosition;this.topBlocks_=[];this.listeners_=[];this.tapListeners_=[];this.undoStack_=[];this.redoStack_=[];this.blockDB_=Object.create(null);this.variableMap_=new Blockly.VariableMap};Blockly.Workspace.prototype.rendered=!1;&#xD;	Blockly.Workspace.prototype.MAX_UNDO=1024;Blockly.Workspace.prototype.dispose=function(){this.listeners_.length=0;this.clear();delete Blockly.Workspace.WorkspaceDB_[this.id]};Blockly.Workspace.SCAN_ANGLE=3;Blockly.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a);if(this.isFlyout){a=Blockly.Variables.allUsedVariables(a);for(var b=0,c;c=a[b];b++)this.getVariable(c)||this.createVariable(c)}};&#xD;	Blockly.Workspace.prototype.removeTopBlock=function(a){if(!goog.array.remove(this.topBlocks_,a))throw"Block not present in workspace&apos;s list of top-most blocks.";};Blockly.Workspace.prototype.getTopBlocks=function(a){var b=[].concat(this.topBlocks_);if(a&amp;&amp;1&lt;b.length){var c=Math.sin(goog.math.toRadians(Blockly.Workspace.SCAN_ANGLE));this.RTL&amp;&amp;(c*=-1);b.sort(function(a,b){var d=a.getRelativeToSurfaceXY(),e=b.getRelativeToSurfaceXY();return d.y+c*d.x-(e.y+c*e.x)})}return b};&#xD;	Blockly.Workspace.prototype.getAllBlocks=function(){for(var a=this.getTopBlocks(!1),b=0;b&lt;a.length;b++)a.push.apply(a,a[b].getChildren());return a};Blockly.Workspace.prototype.clear=function(){var a=Blockly.Events.getGroup();for(a||Blockly.Events.setGroup(!0);this.topBlocks_.length;)this.topBlocks_[0].dispose();a||Blockly.Events.setGroup(!1);this.variableMap_.clear();Blockly.DropDownDiv&amp;&amp;Blockly.DropDownDiv.hideWithoutAnimation();Blockly.WidgetDiv&amp;&amp;Blockly.WidgetDiv.hide(!0)};&#xD;	Blockly.Workspace.prototype.updateVariableStore=function(a){if(!this.isFlyout){for(var b=Blockly.Variables.allUsedVariables(this),c=[],d=0,e;e=b[d];d++){var f=this.getVariable(e);f?c.push({name:f.name,type:f.type,id:f.getId()}):c.push({name:e,type:null,id:null})}a&amp;&amp;this.variableMap_.clear();for(d=0;a=c[d];d++)this.getVariable(a.name)||this.createVariable(a.name,a.type,a.id)}};&#xD;	Blockly.Workspace.prototype.renameVariableInternal_=function(a,b){var c=this.getVariable(b);if(a&amp;&amp;c&amp;&amp;a.type!=c.type)throw Error(&apos;Variable "&apos;+a.name+&apos;" is type "&apos;+a.type+&apos;" and variable "&apos;+b+&apos;" is type "&apos;+c.type+&apos;". Both must be the same type.&apos;);if(c&amp;&amp;c.name!=b)var d=c.name;Blockly.Events.setGroup(!0);for(var c=this.getAllBlocks(),e=0;e&lt;c.length;e++)c[e].renameVar(a.name,b),d&amp;&amp;c[e].renameVar(d,b);Blockly.Events.setGroup(!1);this.variableMap_.renameVariable(a,b)};&#xD;	Blockly.Workspace.prototype.renameVariable=function(a,b){var c=this.getVariable(a);this.renameVariableInternal_(c,b)};Blockly.Workspace.prototype.renameVariableById=function(a,b){var c=this.getVariableById(a);this.renameVariableInternal_(c,b)};Blockly.Workspace.prototype.createVariable=function(a,b,c){if(a.toLowerCase()!=Blockly.Variables.noVariableText())return this.variableMap_.createVariable(a,b,c)};&#xD;	Blockly.Workspace.prototype.getVariableUses=function(a){for(var b=[],c=this.getAllBlocks(),d=0;d&lt;c.length;d++){var e=c[d].getVars();if(e)for(var f=0;f&lt;e.length;f++){var g=e[f];g&amp;&amp;Blockly.Names.equals(g,a)&amp;&amp;b.push(c[d])}}return b};&#xD;	Blockly.Workspace.prototype.deleteVariable=function(a){for(var b=this.getVariableUses(a),c=0,d;d=b[c];c++)if("procedures_defnoreturn"==d.type||"procedures_defreturn"==d.type){b=d.getFieldValue("NAME");Blockly.alert(Blockly.Msg.CANNOT_DELETE_VARIABLE_PROCEDURE.replace("%1",a).replace("%2",b));return}var e=this,f=e.getVariable(a);1&lt;b.length?Blockly.confirm(Blockly.Msg.DELETE_VARIABLE_CONFIRMATION.replace("%1",b.length).replace("%2",a),function(a){a&amp;&amp;e.deleteVariableInternal_(f)}):this.deleteVariableInternal_(f)};&#xD;	Blockly.Workspace.prototype.deleteVariableById=function(a){(a=this.getVariableById(a))&amp;&amp;this.deleteVariableInternal_(a)};Blockly.Workspace.prototype.deleteVariableInternal_=function(a){var b=this.getVariableUses(a.name);Blockly.Events.setGroup(!0);for(var c=0;c&lt;b.length;c++)b[c].dispose(!0,!1);Blockly.Events.setGroup(!1);this.variableMap_.deleteVariable(a)};Blockly.Workspace.prototype.variableIndexOf=function(){console.warn("Deprecated call to Blockly.Workspace.prototype.variableIndexOf");return-1};&#xD;	Blockly.Workspace.prototype.getVariable=function(a){return this.variableMap_.getVariable(a)};Blockly.Workspace.prototype.getVariableById=function(a){return this.variableMap_.getVariableById(a)};Blockly.Workspace.prototype.getWidth=function(){return 0};Blockly.Workspace.prototype.newBlock=function(a,b){return new Blockly.Block(this,a,b)};&#xD;	Blockly.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&amp;&amp;d.group&amp;&amp;d.group==b[b.length-1].group;)e.push(b.pop());for(b=0;d=e[b];b++)c.push(d);e=Blockly.Events.filter(e,a);Blockly.Events.recordUndo=!1;for(b=0;d=e[b];b++)d.run(a);Blockly.Events.recordUndo=!0}};Blockly.Workspace.prototype.clearUndo=function(){this.undoStack_.length=0;this.redoStack_.length=0;Blockly.Events.clearPendingUndo()};&#xD;	Blockly.Workspace.prototype.addChangeListener=function(a){this.listeners_.push(a);return a};Blockly.Workspace.prototype.removeChangeListener=function(a){goog.array.remove(this.listeners_,a)};Blockly.Workspace.prototype.fireChangeListener=function(a){a.recordUndo&amp;&amp;(this.undoStack_.push(a),this.redoStack_.length=0,this.undoStack_.length&gt;this.MAX_UNDO&amp;&amp;this.undoStack_.unshift());for(var b=this.listeners_.slice(),c=0,d;d=b[c];c++)d(a)};&#xD;	Blockly.Workspace.prototype.getBlockById=function(a){var b=this.blockDB_[a];!b&amp;&amp;this.getFlyout()&amp;&amp;this.getFlyout().getWorkspace()&amp;&amp;(b=this.getFlyout().getWorkspace().blockDB_[a]);return b||null};Blockly.Workspace.prototype.allInputsFilled=function(a){for(var b=this.getTopBlocks(!1),c=0,d;d=b[c];c++)if(!d.allInputsFilled(a))return!1;return!0};Blockly.Workspace.prototype.getFlyout=function(){return null};&#xD;	Blockly.Workspace.prototype.allInputsFilled=function(a){for(var b=this.getTopBlocks(!1),c=0,d;d=b[c];c++)if(!d.allInputsFilled(a))return!1;return!0};Blockly.Workspace.prototype.getVariablesOfType=function(a){return this.variableMap_.getVariablesOfType(a)};Blockly.Workspace.prototype.getVariableTypes=function(){return this.variableMap_.getVariableTypes()};Blockly.Workspace.prototype.getAllVariables=function(){return this.variableMap_.getAllVariables()};Blockly.Workspace.WorkspaceDB_=Object.create(null);&#xD;	Blockly.Workspace.getById=function(a){return Blockly.Workspace.WorkspaceDB_[a]||null};Blockly.Workspace.prototype.clear=Blockly.Workspace.prototype.clear;Blockly.Workspace.prototype.clearUndo=Blockly.Workspace.prototype.clearUndo;Blockly.Workspace.prototype.addChangeListener=Blockly.Workspace.prototype.addChangeListener;Blockly.Workspace.prototype.removeChangeListener=Blockly.Workspace.prototype.removeChangeListener;Blockly.Bubble=function(a,b,c,d,e,f){this.workspace_=a;this.content_=b;this.shape_=c;c=Blockly.Bubble.ARROW_ANGLE;this.workspace_.RTL&amp;&amp;(c=-c);this.arrow_radians_=goog.math.toRadians(c);a.getBubbleCanvas().appendChild(this.createDom_(b,!(!e||!f)));this.setAnchorLocation(d);e&amp;&amp;f||(b=this.content_.getBBox(),e=b.width+2*Blockly.Bubble.BORDER_WIDTH,f=b.height+2*Blockly.Bubble.BORDER_WIDTH);this.setBubbleSize(e,f);this.positionBubble_();this.renderArrow_();this.rendered_=!0;a.options.readOnly||(Blockly.bindEventWithChecks_(this.bubbleBack_,&#xD;	"mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&amp;&amp;Blockly.bindEventWithChecks_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_))};Blockly.Bubble.BORDER_WIDTH=6;Blockly.Bubble.ARROW_THICKNESS=5;Blockly.Bubble.ARROW_ANGLE=20;Blockly.Bubble.ARROW_BEND=4;Blockly.Bubble.ANCHOR_RADIUS=8;Blockly.Bubble.onMouseUpWrapper_=null;Blockly.Bubble.onMouseMoveWrapper_=null;Blockly.Bubble.prototype.resizeCallback_=null;&#xD;	Blockly.Bubble.unbindDragEvents_=function(){Blockly.Bubble.onMouseUpWrapper_&amp;&amp;(Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),Blockly.Bubble.onMouseUpWrapper_=null);Blockly.Bubble.onMouseMoveWrapper_&amp;&amp;(Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),Blockly.Bubble.onMouseMoveWrapper_=null)};Blockly.Bubble.bubbleMouseUp_=function(){Blockly.Touch.clearTouchIdentifier();Blockly.Bubble.unbindDragEvents_()};Blockly.Bubble.prototype.rendered_=!1;Blockly.Bubble.prototype.anchorXY_=null;&#xD;	Blockly.Bubble.prototype.relativeLeft_=0;Blockly.Bubble.prototype.relativeTop_=0;Blockly.Bubble.prototype.width_=0;Blockly.Bubble.prototype.height_=0;Blockly.Bubble.prototype.autoLayout_=!0;&#xD;	Blockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.utils.createSvgElement("g",{},null);var c={filter:"url(#"+this.workspace_.options.embossFilterId+")"};-1!=goog.userAgent.getUserAgentString().indexOf("JavaFX")&amp;&amp;(c={});c=Blockly.utils.createSvgElement("g",c,this.bubbleGroup_);this.bubbleArrow_=Blockly.utils.createSvgElement("path",{},c);this.bubbleBack_=Blockly.utils.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},&#xD;	c);b?(this.resizeGroup_=Blockly.utils.createSvgElement("g",{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),c=2*Blockly.Bubble.BORDER_WIDTH,Blockly.utils.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,c.toString())},this.resizeGroup_),Blockly.utils.createSvgElement("line",{"class":"blocklyResizeLine",x1:c/3,y1:c-1,x2:c-1,y2:c/3},this.resizeGroup_),Blockly.utils.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*c/3,y1:c-1,x2:c-1,y2:2*c/3},&#xD;	this.resizeGroup_)):this.resizeGroup_=null;this.bubbleGroup_.appendChild(a);return this.bubbleGroup_};&#xD;	Blockly.Bubble.prototype.bubbleMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.utils.isRightButton(a)?a.stopPropagation():Blockly.utils.isTargetInput(a)||(this.workspace_.startDrag(a,new goog.math.Coordinate(this.workspace_.RTL?-this.relativeLeft_:this.relativeLeft_,this.relativeTop_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,&#xD;	"mousemove",this,this.bubbleMouseMove_),Blockly.hideChaff(),a.stopPropagation())};Blockly.Bubble.prototype.bubbleMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.relativeLeft_=this.workspace_.RTL?-a.x:a.x;this.relativeTop_=a.y;this.positionBubble_();this.renderArrow_()};&#xD;	Blockly.Bubble.prototype.resizeMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.utils.isRightButton(a)||(this.workspace_.startDrag(a,new goog.math.Coordinate(this.workspace_.RTL?-this.width_:this.width_,this.height_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.resizeMouseMove_),Blockly.hideChaff());&#xD;	a.stopPropagation()};Blockly.Bubble.prototype.resizeMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.setBubbleSize(this.workspace_.RTL?-a.x:a.x,a.y);this.workspace_.RTL&amp;&amp;this.positionBubble_()};Blockly.Bubble.prototype.registerResizeEvent=function(a){this.resizeCallback_=a};Blockly.Bubble.prototype.promote_=function(){this.bubbleGroup_.parentNode.appendChild(this.bubbleGroup_)};Blockly.Bubble.prototype.setAnchorLocation=function(a){this.anchorXY_=a;this.rendered_&amp;&amp;this.positionBubble_()};&#xD;	Blockly.Bubble.prototype.layoutBubble_=function(){var a=-this.width_/4,b=-this.height_-Blockly.BlockSvg.MIN_BLOCK_Y,c=this.workspace_.getMetrics();c.viewWidth/=this.workspace_.scale;c.viewLeft/=this.workspace_.scale;var d=this.anchorXY_.x;this.workspace_.RTL?d-c.viewLeft-a-this.width_&lt;Blockly.Scrollbar.scrollbarThickness?a=d-c.viewLeft-this.width_-Blockly.Scrollbar.scrollbarThickness:d-c.viewLeft-a&gt;c.viewWidth&amp;&amp;(a=d-c.viewLeft-c.viewWidth):d+a&lt;c.viewLeft?a=c.viewLeft-d:c.viewLeft+c.viewWidth&lt;d+a+&#xD;	this.width_+Blockly.BlockSvg.SEP_SPACE_X+Blockly.Scrollbar.scrollbarThickness&amp;&amp;(a=c.viewLeft+c.viewWidth-d-this.width_-Blockly.Scrollbar.scrollbarThickness);this.anchorXY_.y+b&lt;c.viewTop&amp;&amp;(b=this.shape_.getBBox().height);this.relativeLeft_=a;this.relativeTop_=b};&#xD;	Blockly.Bubble.prototype.positionBubble_=function(){var a=this.anchorXY_.x,a=this.workspace_.RTL?a-(this.relativeLeft_+this.width_):a+this.relativeLeft_;this.bubbleGroup_.setAttribute("transform","translate("+a+","+(this.relativeTop_+this.anchorXY_.y)+")")};Blockly.Bubble.prototype.getBubbleSize=function(){return{width:this.width_,height:this.height_}};&#xD;	Blockly.Bubble.prototype.setBubbleSize=function(a,b){var c=2*Blockly.Bubble.BORDER_WIDTH;a=Math.max(a,c+45);b=Math.max(b,c+20);this.width_=a;this.height_=b;this.bubbleBack_.setAttribute("width",a);this.bubbleBack_.setAttribute("height",b);this.resizeGroup_&amp;&amp;(this.workspace_.RTL?this.resizeGroup_.setAttribute("transform","translate("+2*Blockly.Bubble.BORDER_WIDTH+","+(b-c)+") scale(-1 1)"):this.resizeGroup_.setAttribute("transform","translate("+(a-c)+","+(b-c)+")"));this.rendered_&amp;&amp;(this.autoLayout_&amp;&amp;&#xD;	this.layoutBubble_(),this.positionBubble_(),this.renderArrow_());this.resizeCallback_&amp;&amp;this.resizeCallback_()};&#xD;	Blockly.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this.height_/2,d=-this.relativeLeft_,e=-this.relativeTop_;if(b==d&amp;&amp;c==e)a.push("M "+b+","+c);else{e-=c;d-=b;this.workspace_.RTL&amp;&amp;(d*=-1);var f=Math.sqrt(e*e+d*d),g=Math.acos(d/f);0&gt;e&amp;&amp;(g=2*Math.PI-g);var h=g+Math.PI/2;h&gt;2*Math.PI&amp;&amp;(h-=2*Math.PI);var k=Math.sin(h),l=Math.cos(h),m=this.getBubbleSize(),h=(m.width+m.height)/Blockly.Bubble.ARROW_THICKNESS,h=Math.min(h,m.width,m.height)/4,m=1-Blockly.Bubble.ANCHOR_RADIUS/f,d=b+&#xD;	m*d,e=c+m*e,m=b+h*l,n=c+h*k,b=b-h*l,c=c-h*k,k=g+this.arrow_radians_;k&gt;2*Math.PI&amp;&amp;(k-=2*Math.PI);g=Math.sin(k)*f/Blockly.Bubble.ARROW_BEND;f=Math.cos(k)*f/Blockly.Bubble.ARROW_BEND;a.push("M"+m+","+n);a.push("C"+(m+f)+","+(n+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))};Blockly.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)};&#xD;	Blockly.Bubble.prototype.dispose=function(){Blockly.Bubble.unbindDragEvents_();goog.dom.removeNode(this.bubbleGroup_);this.shape_=this.content_=this.workspace_=this.resizeGroup_=this.bubbleBack_=this.bubbleArrow_=this.bubbleGroup_=null};Blockly.Icon=function(a){this.block_=a};Blockly.Icon.prototype.collapseHidden=!0;Blockly.Icon.prototype.SIZE=17;Blockly.Icon.prototype.bubble_=null;Blockly.Icon.prototype.iconXY_=null;&#xD;	Blockly.Icon.prototype.createIcon=function(){this.iconGroup_||(this.iconGroup_=Blockly.utils.createSvgElement("g",{"class":"blocklyIconGroup"},null),this.block_.isInFlyout&amp;&amp;Blockly.utils.addClass(this.iconGroup_,"blocklyIconGroupReadonly"),this.drawIcon_(this.iconGroup_),this.block_.getSvgRoot().appendChild(this.iconGroup_),Blockly.bindEventWithChecks_(this.iconGroup_,"mouseup",this,this.iconClick_),this.updateEditable())};&#xD;	Blockly.Icon.prototype.dispose=function(){goog.dom.removeNode(this.iconGroup_);this.iconGroup_=null;this.setVisible(!1);this.block_=null};Blockly.Icon.prototype.updateEditable=function(){};Blockly.Icon.prototype.isVisible=function(){return!!this.bubble_};Blockly.Icon.prototype.iconClick_=function(a){this.block_.workspace.isDragging()||this.block_.isInFlyout||Blockly.utils.isRightButton(a)||this.setVisible(!this.isVisible())};Blockly.Icon.prototype.updateColour=function(){this.isVisible()&amp;&amp;this.bubble_.setColour(this.block_.getColour())};&#xD;	Blockly.Icon.prototype.renderIcon=function(a){if(this.collapseHidden&amp;&amp;this.block_.isCollapsed())return this.iconGroup_.setAttribute("display","none"),a;this.iconGroup_.setAttribute("display","block");var b=this.SIZE;this.block_.RTL&amp;&amp;(a-=b);this.iconGroup_.setAttribute("transform","translate("+a+",5)");this.computeIconLocation();return a=this.block_.RTL?a-Blockly.BlockSvg.SEP_SPACE_X:a+(b+Blockly.BlockSvg.SEP_SPACE_X)};&#xD;	Blockly.Icon.prototype.setIconLocation=function(a){this.iconXY_=a;this.isVisible()&amp;&amp;this.bubble_.setAnchorLocation(a)};Blockly.Icon.prototype.computeIconLocation=function(){var a=this.block_.getRelativeToSurfaceXY(),b=Blockly.utils.getRelativeXY(this.iconGroup_),a=new goog.math.Coordinate(a.x+b.x+this.SIZE/2,a.y+b.y+this.SIZE/2);goog.math.Coordinate.equals(this.getIconLocation(),a)||this.setIconLocation(a)};Blockly.Icon.prototype.getIconLocation=function(){return this.iconXY_};&#xD;	// Copyright 2011 Google Inc.  Apache License 2.0&#xD;	Blockly.Comment=function(a){Blockly.Comment.superClass_.constructor.call(this,a);this.createIcon()};goog.inherits(Blockly.Comment,Blockly.Icon);Blockly.Comment.prototype.text_="";Blockly.Comment.prototype.width_=160;Blockly.Comment.prototype.height_=80;&#xD;	Blockly.Comment.prototype.drawIcon_=function(a){Blockly.utils.createSvgElement("circle",{"class":"blocklyIconShape",r:"8",cx:"8",cy:"8"},a);Blockly.utils.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405 0.607,-5.534 -3.765,-3.874v1.7c3.12,-1.657 3.698,0.118 2.336,1.25 -1.201,0.998 -1.201,1.528 -1.204,2.19z"},a);Blockly.utils.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"6.8",y:"10.78",height:"2",width:"2"},a)};&#xD;	Blockly.Comment.prototype.createEditor_=function(){this.foreignObject_=Blockly.utils.createSvgElement("foreignObject",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);var a=document.createElementNS(Blockly.HTML_NS,"body");a.setAttribute("xmlns",Blockly.HTML_NS);a.className="blocklyMinimalBody";var b=document.createElementNS(Blockly.HTML_NS,"textarea");b.className="blocklyCommentTextarea";b.setAttribute("dir",this.block_.RTL?"RTL":"LTR");a.appendChild(b);this.textarea_=b;this.foreignObject_.appendChild(a);&#xD;	Blockly.bindEventWithChecks_(b,"mouseup",this,this.textareaFocus_);Blockly.bindEventWithChecks_(b,"wheel",this,function(a){a.stopPropagation()});Blockly.bindEventWithChecks_(b,"change",this,function(){this.text_!=b.value&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,b.value)),this.text_=b.value)});setTimeout(function(){b.focus()},0);return this.foreignObject_};&#xD;	Blockly.Comment.prototype.updateEditable=function(){this.isVisible()&amp;&amp;(this.setVisible(!1),this.setVisible(!0));Blockly.Icon.prototype.updateEditable.call(this)};Blockly.Comment.prototype.resizeBubble_=function(){if(this.isVisible()){var a=this.bubble_.getBubbleSize(),b=2*Blockly.Bubble.BORDER_WIDTH;this.foreignObject_.setAttribute("width",a.width-b);this.foreignObject_.setAttribute("height",a.height-b);this.textarea_.style.width=a.width-b-4+"px";this.textarea_.style.height=a.height-b-4+"px"}};&#xD;	Blockly.Comment.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"commentOpen",!a,a)),!this.block_.isEditable()&amp;&amp;!this.textarea_||goog.userAgent.IE)Blockly.Warning.prototype.setVisible.call(this,a);else{var b=this.getText(),c=this.getBubbleSize();a?(this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,this.width_,this.height_),this.bubble_.registerResizeEvent(this.resizeBubble_.bind(this)),&#xD;	this.updateColour()):(this.bubble_.dispose(),this.foreignObject_=this.textarea_=this.bubble_=null);this.setText(b);this.setBubbleSize(c.width,c.height)}};Blockly.Comment.prototype.textareaFocus_=function(){this.bubble_.promote_();this.textarea_.focus()};Blockly.Comment.prototype.getBubbleSize=function(){return this.isVisible()?this.bubble_.getBubbleSize():{width:this.width_,height:this.height_}};&#xD;	Blockly.Comment.prototype.setBubbleSize=function(a,b){this.textarea_?this.bubble_.setBubbleSize(a,b):(this.width_=a,this.height_=b)};Blockly.Comment.prototype.getText=function(){return this.textarea_?this.textarea_.value:this.text_};Blockly.Comment.prototype.setText=function(a){this.text_!=a&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this.block_,"comment",null,this.text_,a)),this.text_=a);this.textarea_&amp;&amp;(this.textarea_.value=a)};&#xD;	Blockly.Comment.prototype.dispose=function(){Blockly.Events.isEnabled()&amp;&amp;this.setText("");this.block_.comment=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Connection=function(a,b){this.sourceBlock_=a;this.type=b;a.workspace.connectionDBList&amp;&amp;(this.db_=a.workspace.connectionDBList[b],this.dbOpposite_=a.workspace.connectionDBList[Blockly.OPPOSITE_TYPE[b]],this.hidden_=!this.db_)};Blockly.Connection.CAN_CONNECT=0;Blockly.Connection.REASON_SELF_CONNECTION=1;Blockly.Connection.REASON_WRONG_TYPE=2;Blockly.Connection.REASON_TARGET_NULL=3;Blockly.Connection.REASON_CHECKS_FAILED=4;Blockly.Connection.REASON_DIFFERENT_WORKSPACES=5;&#xD;	Blockly.Connection.REASON_SHADOW_PARENT=6;Blockly.Connection.prototype.targetConnection=null;Blockly.Connection.prototype.check_=null;Blockly.Connection.prototype.shadowDom_=null;Blockly.Connection.prototype.x_=0;Blockly.Connection.prototype.y_=0;Blockly.Connection.prototype.inDB_=!1;Blockly.Connection.prototype.db_=null;Blockly.Connection.prototype.dbOpposite_=null;Blockly.Connection.prototype.hidden_=null;&#xD;	Blockly.Connection.prototype.connect_=function(a){var b=this,c=b.getSourceBlock(),d=a.getSourceBlock(),e=!1;b==c.getFirstStatementConnection()&amp;&amp;(e=!0);if(a.isConnected()){if(e)var f=a.targetConnection;a.disconnect()}if(b.isConnected()){var g=b.targetBlock(),h=b.getShadowDom();b.setShadowDom(null);if(g.isShadow())h=Blockly.Xml.blockToDom(g),g.dispose(),g=null;else if(b.type==Blockly.NEXT_STATEMENT){if(!g.previousConnection)throw"Orphan block does not have a previous connection.";for(var k=d;k.nextConnection;){var l=&#xD;	k.getNextBlock();if(l&amp;&amp;!l.isShadow())k=l;else{g.previousConnection.checkType_(k.nextConnection)&amp;&amp;(k.nextConnection.connect(g.previousConnection),g=null);break}}}if(g&amp;&amp;(b.disconnect(),Blockly.Events.recordUndo)){var m=Blockly.Events.getGroup();setTimeout(function(){g.workspace&amp;&amp;!g.getParent()&amp;&amp;(Blockly.Events.setGroup(m),g.outputConnection?g.outputConnection.bumpAwayFrom_(b):g.previousConnection&amp;&amp;g.previousConnection.bumpAwayFrom_(b),Blockly.Events.setGroup(!1))},Blockly.BUMP_DELAY)}b.setShadowDom(h)}e&amp;&amp;&#xD;	f&amp;&amp;f.connect(c.previousConnection);var n;Blockly.Events.isEnabled()&amp;&amp;(n=new Blockly.Events.Move(d));Blockly.Connection.connectReciprocally_(b,a);d.setParent(c);n&amp;&amp;(n.recordNew(),Blockly.Events.fire(n))};Blockly.Connection.prototype.dispose=function(){if(this.isConnected())throw"Disconnect connection before disposing of it.";this.inDB_&amp;&amp;this.db_.removeConnection_(this);this.dbOpposite_=this.db_=null};&#xD;	Blockly.Connection.prototype.isConnectedToNonInsertionMarker=function(){return this.targetConnection&amp;&amp;!this.targetBlock().isInsertionMarker()};Blockly.Connection.prototype.getSourceBlock=function(){return this.sourceBlock_};Blockly.Connection.prototype.isSuperior=function(){return this.type==Blockly.INPUT_VALUE||this.type==Blockly.NEXT_STATEMENT};Blockly.Connection.prototype.isConnected=function(){return!!this.targetConnection};&#xD;	Blockly.Connection.prototype.canConnectWithReason_=function(a){if(!a)return Blockly.Connection.REASON_TARGET_NULL;if(this.isSuperior()){var b=this.sourceBlock_;var c=a.getSourceBlock()}else c=this.sourceBlock_,b=a.getSourceBlock();return b&amp;&amp;b==c?Blockly.Connection.REASON_SELF_CONNECTION:a.type!=Blockly.OPPOSITE_TYPE[this.type]?Blockly.Connection.REASON_WRONG_TYPE:b&amp;&amp;c&amp;&amp;b.workspace!==c.workspace?Blockly.Connection.REASON_DIFFERENT_WORKSPACES:this.checkType_(a)?b.isShadow()&amp;&amp;!c.isShadow()?Blockly.Connection.REASON_SHADOW_PARENT:&#xD;	Blockly.Connection.CAN_CONNECT:Blockly.Connection.REASON_CHECKS_FAILED};&#xD;	Blockly.Connection.prototype.checkConnection_=function(a){switch(this.canConnectWithReason_(a)){case Blockly.Connection.CAN_CONNECT:break;case Blockly.Connection.REASON_SELF_CONNECTION:throw"Attempted to connect a block to itself.";case Blockly.Connection.REASON_DIFFERENT_WORKSPACES:throw"Blocks not on same workspace.";case Blockly.Connection.REASON_WRONG_TYPE:throw"Attempt to connect incompatible types.";case Blockly.Connection.REASON_TARGET_NULL:throw"Target connection is null.";case Blockly.Connection.REASON_CHECKS_FAILED:throw"Connection checks failed. "+&#xD;	(this+" expected "+this.check_+", found "+a.check_);case Blockly.Connection.REASON_SHADOW_PARENT:throw"Connecting non-shadow to shadow block.";default:throw"Unknown connection failure: this should never happen!";}};&#xD;	Blockly.Connection.prototype.isConnectionAllowed=function(a){if(a.sourceBlock_.isInsertionMarker()||this.canConnectWithReason_(a)!=Blockly.Connection.CAN_CONNECT)return!1;var b=this.sourceBlock_.getFirstStatementConnection();switch(a.type){case Blockly.PREVIOUS_STATEMENT:if(!b||this!=b){if(this.targetConnection)return!1;if(a.targetConnection)return a.targetBlock().isInsertionMarker()?!0:!1}if(b)if(this==b){if(this.targetConnection)return!1}else if(this==this.sourceBlock_.nextConnection&amp;&amp;a.isConnectedToNonInsertionMarker())return!1;&#xD;	break;case Blockly.OUTPUT_VALUE:return!1;case Blockly.INPUT_VALUE:if(a.targetConnection&amp;&amp;!a.targetBlock().isMovable()&amp;&amp;!a.targetBlock().isShadow())return!1;break;case Blockly.NEXT_STATEMENT:if(b&amp;&amp;this==this.sourceBlock_.previousConnection&amp;&amp;a.isConnectedToNonInsertionMarker()&amp;&amp;!b.targetConnection||a.isConnectedToNonInsertionMarker()&amp;&amp;!this.sourceBlock_.nextConnection&amp;&amp;!a.targetBlock().isShadow()&amp;&amp;a.targetBlock().nextConnection)return!1;break;default:throw"Unknown connection type in isConnectionAllowed";&#xD;	}return-1!=Blockly.draggingConnections_.indexOf(a)?!1:!0};Blockly.Connection.prototype.connect=function(a){this.targetConnection!=a&amp;&amp;(this.checkConnection_(a),this.isSuperior()?this.connect_(a):a.connect_(this))};Blockly.Connection.connectReciprocally_=function(a,b){goog.asserts.assert(a&amp;&amp;b,"Cannot connect null connections.");a.targetConnection=b;b.targetConnection=a};&#xD;	Blockly.Connection.singleConnection_=function(a,b){for(var c=!1,d=0;d&lt;a.inputList.length;d++){var e=a.inputList[d].connection;if(e&amp;&amp;e.type==Blockly.INPUT_VALUE&amp;&amp;b.outputConnection.checkType_(e)){if(c)return null;c=e}}return c};&#xD;	Blockly.Connection.prototype.disconnect=function(){var a=this.targetConnection;goog.asserts.assert(a,"Source connection not connected.");goog.asserts.assert(a.targetConnection==this,"Target connection not connected to source connection.");if(this.isSuperior()){var b=this.sourceBlock_;var c=a.getSourceBlock();a=this}else b=a.getSourceBlock(),c=this.sourceBlock_;this.disconnectInternal_(b,c);a.respawnShadow_()};&#xD;	Blockly.Connection.prototype.disconnectInternal_=function(a,b){var c;Blockly.Events.isEnabled()&amp;&amp;(c=new Blockly.Events.Move(b));this.targetConnection=this.targetConnection.targetConnection=null;b.setParent(null);c&amp;&amp;(c.recordNew(),Blockly.Events.fire(c))};&#xD;	Blockly.Connection.prototype.respawnShadow_=function(){var a=this.getSourceBlock(),b=this.getShadowDom();if(a.workspace&amp;&amp;b&amp;&amp;Blockly.Events.recordUndo)if(a=Blockly.Xml.domToBlock(b,a.workspace),a.outputConnection)this.connect(a.outputConnection);else if(a.previousConnection)this.connect(a.previousConnection);else throw"Child block does not have output or previous statement.";};Blockly.Connection.prototype.targetBlock=function(){return this.isConnected()?this.targetConnection.getSourceBlock():null};&#xD;	Blockly.Connection.prototype.checkType_=function(a){if(!this.check_||!a.check_)return!0;for(var b=0;b&lt;this.check_.length;b++)if(-1!=a.check_.indexOf(this.check_[b]))return!0;return!1};Blockly.Connection.prototype.onCheckChanged_=function(){this.isConnected()&amp;&amp;!this.checkType_(this.targetConnection)&amp;&amp;(this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug()};&#xD;	Blockly.Connection.prototype.setCheck=function(a){a?(goog.isArray(a)||(a=[a]),this.check_=a,this.onCheckChanged_()):this.check_=null;return this};Blockly.Connection.prototype.getOutputShape=function(){return this.check_?-1!==this.check_.indexOf("Boolean")?Blockly.OUTPUT_SHAPE_HEXAGONAL:-1!==this.check_.indexOf("Number")?Blockly.OUTPUT_SHAPE_ROUND:-1!==this.check_.indexOf("String")?Blockly.OUTPUT_SHAPE_SQUARE:Blockly.OUTPUT_SHAPE_ROUND:Blockly.OUTPUT_SHAPE_ROUND};&#xD;	Blockly.Connection.prototype.setShadowDom=function(a){this.shadowDom_=a};Blockly.Connection.prototype.getShadowDom=function(){return this.shadowDom_};Blockly.Connection.prototype.neighbours_=function(){return[]};&#xD;	Blockly.Connection.prototype.toString=function(){var a=this.sourceBlock_;if(a)if(a.outputConnection==this)var b="Output Connection of ";else if(a.previousConnection==this)b="Previous Connection of ";else if(a.nextConnection==this)b="Next Connection of ";else if(b=goog.array.find(a.inputList,function(a){return a.connection==this},this))b=&apos;Input "&apos;+b.name+&apos;" connection on &apos;;else return console.warn("Connection not actually connected to sourceBlock_"),"Orphan Connection";else return"Orphan Connection";&#xD;	return b+a.toDevString()};Blockly.Extensions={};Blockly.Extensions.ALL_={};Blockly.Extensions.MUTATOR_PROPERTIES_=["domToMutation","mutationToDom","compose","decompose"];Blockly.Extensions.register=function(a,b){if(!goog.isString(a)||goog.string.isEmptyOrWhitespace(a))throw Error(&apos;Error: Invalid extension name "&apos;+a+&apos;"&apos;);if(Blockly.Extensions.ALL_[a])throw Error(&apos;Error: Extension "&apos;+a+&apos;" is already registered.&apos;);if(!goog.isFunction(b))throw Error(&apos;Error: Extension "&apos;+a+&apos;" must be a function&apos;);Blockly.Extensions.ALL_[a]=b};&#xD;	Blockly.Extensions.registerMixin=function(a,b){Blockly.Extensions.register(a,function(){this.mixin(b)})};&#xD;	Blockly.Extensions.registerMutator=function(a,b,c,d){var e=&apos;Error when registering mutator "&apos;+a+&apos;": &apos;;Blockly.Extensions.checkHasFunction_(e,b,"domToMutation");Blockly.Extensions.checkHasFunction_(e,b,"mutationToDom");var f=Blockly.Extensions.checkMutatorDialog_(b,e);if(c&amp;&amp;!goog.isFunction(c))throw Error(&apos;Extension "&apos;+a+&apos;" is not a function&apos;);Blockly.Extensions.register(a,function(){f&amp;&amp;this.setMutator(new Blockly.Mutator(d));this.mixin(b);c&amp;&amp;c.apply(this)})};&#xD;	Blockly.Extensions.apply=function(a,b,c){var d,e=Blockly.Extensions.ALL_[a];if(!goog.isFunction(e))throw Error(&apos;Error: Extension "&apos;+a+&apos;" not found.&apos;);c?Blockly.Extensions.checkNoMutatorProperties_(a,b):d=Blockly.Extensions.getMutatorProperties_(b);e.apply(b);if(c)Blockly.Extensions.checkBlockHasMutatorProperties_(a,b,&apos;Error after applying mutator "&apos;+a+&apos;": &apos;);else if(!Blockly.Extensions.mutatorPropertiesMatch_(d,b))throw Error(&apos;Error when applying extension "&apos;+a+&apos;": mutation properties changed when applying a non-mutator extension.&apos;);&#xD;	};Blockly.Extensions.checkHasFunction_=function(a,b,c){if(!b.hasOwnProperty(c))throw Error(a+&apos;missing required property "&apos;+c+&apos;"&apos;);if("function"!==typeof b[c])throw Error(a+&apos;" required property "&apos;+c+&apos;" must be a function&apos;);};&#xD;	Blockly.Extensions.checkNoMutatorProperties_=function(a,b){for(var c=0;c&lt;Blockly.Extensions.MUTATOR_PROPERTIES_.length;c++){var d=Blockly.Extensions.MUTATOR_PROPERTIES_[c];if(b.hasOwnProperty(d))throw Error(&apos;Error: tried to apply mutation "&apos;+a+&apos;" to a block that already has a "&apos;+d+&apos;" function.  Block id: &apos;+b.id);}};&#xD;	Blockly.Extensions.checkMutatorDialog_=function(a,b){var c=a.hasOwnProperty("compose"),d=a.hasOwnProperty("decompose");if(c&amp;&amp;d){if("function"!==typeof a.compose)throw Error(b+"compose must be a function.");if("function"!==typeof a.decompose)throw Error(b+"decompose must be a function.");return!0}if(c||d)throw Error(b+&apos;Must have both or neither of "compose" and "decompose"&apos;);return!1};&#xD;	Blockly.Extensions.checkBlockHasMutatorProperties_=function(a,b){if(!b.hasOwnProperty("domToMutation"))throw Error(a+&apos;Applying a mutator didn\&apos;t add "domToMutation"&apos;);if(!b.hasOwnProperty("mutationToDom"))throw Error(a+&apos;Applying a mutator didn\&apos;t add "mutationToDom"&apos;);Blockly.Extensions.checkMutatorDialog_(b,a)};Blockly.Extensions.getMutatorProperties_=function(a){for(var b=[],c=0;c&lt;Blockly.Extensions.MUTATOR_PROPERTIES_.length;c++)b.push(a[Blockly.Extensions.MUTATOR_PROPERTIES_[c]]);return b};&#xD;	Blockly.Extensions.mutatorPropertiesMatch_=function(a,b){var c=!0,d=Blockly.Extensions.getMutatorProperties_(b);if(d.length!=a.length)c=!1;else for(var e=0;e&lt;d.length;e++)a[e]!=d[e]&amp;&amp;(c=!1);return c};&#xD;	Blockly.Extensions.buildTooltipForDropdown=function(a,b){var c=[];document&amp;&amp;Blockly.utils.runAfterPageLoad(function(){for(var a in b)Blockly.utils.checkMessageReferences(b[a])});return function(){this.type&amp;&amp;-1===c.indexOf(this.type)&amp;&amp;(Blockly.Extensions.checkDropdownOptionsInTable_(this,a,b),c.push(this.type));this.setTooltip(function(){var d=this.getFieldValue(a),e=b[d];null==e?-1===c.indexOf(this.type)&amp;&amp;(d="No tooltip mapping for value "+d+" of field "+a,null!=this.type&amp;&amp;(d+=" of block type "+this.type),&#xD;	console.warn(d+".")):e=Blockly.utils.replaceMessageReferences(e);return e}.bind(this))}};Blockly.Extensions.checkDropdownOptionsInTable_=function(a,b,c){var d=a.getField(b);if(!d.isOptionListDynamic())for(var d=d.getOptions(),e=0;e&lt;d.length;++e){var f=d[e][1];null==c[f]&amp;&amp;console.warn("No tooltip mapping for value "+f+" of field "+b+" of block type "+a.type)}};&#xD;	Blockly.Extensions.buildTooltipWithFieldValue=function(a,b){document&amp;&amp;Blockly.utils.runAfterPageLoad(function(){Blockly.utils.checkMessageReferences(a)});return function(){this.setTooltip(function(){return Blockly.utils.replaceMessageReferences(a).replace("%1",this.getFieldValue(b))}.bind(this))}};Blockly.Extensions.extensionParentTooltip_=function(){this.tooltipWhenNotConnected_=this.tooltip;this.setTooltip(function(){var a=this.getParent();return a&amp;&amp;a.getInputsInline()&amp;&amp;a.tooltip||this.tooltipWhenNotConnected_}.bind(this))};&#xD;	Blockly.Extensions.register("parent_tooltip_when_inline",Blockly.Extensions.extensionParentTooltip_);Blockly.RenderedConnection=function(a,b){Blockly.RenderedConnection.superClass_.constructor.call(this,a,b);this.offsetInBlock_=new goog.math.Coordinate(0,0)};goog.inherits(Blockly.RenderedConnection,Blockly.Connection);Blockly.RenderedConnection.prototype.distanceFrom=function(a){var b=this.x_-a.x_;a=this.y_-a.y_;return Math.sqrt(b*b+a*a)};&#xD;	Blockly.RenderedConnection.prototype.bumpAwayFrom_=function(a){if(!this.sourceBlock_.workspace.isDragging()){var b=this.sourceBlock_.getRootBlock();if(!b.isInFlyout){var c=!1;if(!b.isMovable()){b=a.getSourceBlock().getRootBlock();if(!b.isMovable())return;a=this;c=!0}var d=Blockly.selected==b;d||b.addSelect();var e=a.x_+Blockly.SNAP_RADIUS-this.x_;a=a.y_+Blockly.SNAP_RADIUS-this.y_;c&amp;&amp;(a=-a);b.RTL&amp;&amp;(e=-e);b.moveBy(e,a);d||b.removeSelect()}}};&#xD;	Blockly.RenderedConnection.prototype.moveTo=function(a,b){this.inDB_&amp;&amp;this.db_.removeConnection_(this);this.x_=a;this.y_=b;this.hidden_||this.db_.addConnection(this)};Blockly.RenderedConnection.prototype.moveBy=function(a,b){this.moveTo(this.x_+a,this.y_+b)};Blockly.RenderedConnection.prototype.moveToOffset=function(a){this.moveTo(a.x+this.offsetInBlock_.x,a.y+this.offsetInBlock_.y)};&#xD;	Blockly.RenderedConnection.prototype.setOffsetInBlock=function(a,b){this.offsetInBlock_.x=a;this.offsetInBlock_.y=b};Blockly.RenderedConnection.prototype.tighten_=function(){var a=this.targetConnection.x_-this.x_,b=this.targetConnection.y_-this.y_;if(0!=a||0!=b){var c=this.targetBlock(),d=c.getSvgRoot();if(!d)throw"block is not rendered.";d=Blockly.utils.getRelativeXY(d);c.getSvgRoot().setAttribute("transform","translate("+(d.x-a)+","+(d.y-b)+")");c.moveConnections_(-a,-b)}};&#xD;	Blockly.RenderedConnection.prototype.closest=function(a,b){return this.dbOpposite_.searchForClosest(this,a,b)};&#xD;	Blockly.RenderedConnection.prototype.highlight=function(){var a="m -20,0 h 5 "+Blockly.BlockSvg.NOTCH_PATH_LEFT+" h 5";var b=this.sourceBlock_.getRelativeToSurfaceXY();Blockly.Connection.highlightedPath_=Blockly.utils.createSvgElement("path",{"class":"blocklyHighlightedConnectionPath",d:a,transform:"translate("+(this.x_-b.x)+","+(this.y_-b.y)+")"+(this.sourceBlock_.RTL?" scale(-1 1)":"")},this.sourceBlock_.getSvgRoot())};&#xD;	Blockly.RenderedConnection.prototype.unhideAll=function(){this.setHidden(!1);var a=[];if(this.type!=Blockly.INPUT_VALUE&amp;&amp;this.type!=Blockly.NEXT_STATEMENT)return a;var b=this.targetBlock();if(b){if(b.isCollapsed()){var c=[];b.outputConnection&amp;&amp;c.push(b.outputConnection);b.nextConnection&amp;&amp;c.push(b.nextConnection);b.previousConnection&amp;&amp;c.push(b.previousConnection)}else c=b.getConnections_(!0);for(var d=0;d&lt;c.length;d++)a.push.apply(a,c[d].unhideAll());a.length||(a[0]=b)}return a};&#xD;	Blockly.RenderedConnection.prototype.unhighlight=function(){goog.dom.removeNode(Blockly.Connection.highlightedPath_);delete Blockly.Connection.highlightedPath_};Blockly.RenderedConnection.prototype.setHidden=function(a){(this.hidden_=a)&amp;&amp;this.inDB_?this.db_.removeConnection_(this):a||this.inDB_||this.db_.addConnection(this)};&#xD;	Blockly.RenderedConnection.prototype.hideAll=function(){this.setHidden(!0);if(this.targetConnection)for(var a=this.targetBlock().getDescendants(),b=0;b&lt;a.length;b++){for(var c=a[b],d=c.getConnections_(!0),e=0;e&lt;d.length;e++)d[e].setHidden(!0);c=c.getIcons();for(e=0;e&lt;c.length;e++)c[e].setVisible(!1)}};Blockly.RenderedConnection.prototype.isConnectionAllowed=function(a,b){return this.distanceFrom(a)&gt;b?!1:Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this,a)};&#xD;	Blockly.RenderedConnection.prototype.disconnectInternal_=function(a,b){Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this,a,b);a.rendered&amp;&amp;a.render();b.rendered&amp;&amp;(b.updateDisabled(),b.render())};&#xD;	Blockly.RenderedConnection.prototype.respawnShadow_=function(){var a=this.getSourceBlock(),b=this.getShadowDom();if(a.workspace&amp;&amp;b&amp;&amp;Blockly.Events.recordUndo){Blockly.RenderedConnection.superClass_.respawnShadow_.call(this);b=this.targetBlock();if(!b)throw"Couldn&apos;t respawn the shadow block that should exist here.";b.initSvg();b.render(!1);a.rendered&amp;&amp;a.render()}};Blockly.RenderedConnection.prototype.neighbours_=function(a){return this.dbOpposite_.getNeighbours(this,a)};&#xD;	Blockly.RenderedConnection.prototype.connect_=function(a){Blockly.RenderedConnection.superClass_.connect_.call(this,a);var b=this.getSourceBlock();a=a.getSourceBlock();b.rendered&amp;&amp;b.updateDisabled();a.rendered&amp;&amp;a.updateDisabled();b.rendered&amp;&amp;a.rendered&amp;&amp;(this.type==Blockly.NEXT_STATEMENT||this.type==Blockly.PREVIOUS_STATEMENT?a.render():b.render())};&#xD;	Blockly.RenderedConnection.prototype.onCheckChanged_=function(){this.isConnected()&amp;&amp;!this.checkType_(this.targetConnection)&amp;&amp;((this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours_())};Blockly.InsertionMarkerManager=function(a){this.topBlock_=Blockly.selected=a;this.workspace_=a.workspace;this.lastMarker_=this.lastOnStack_=null;this.firstMarker_=this.createMarkerBlock_(this.topBlock_);this.localConnection_=this.closestConnection_=null;this.wouldDeleteBlock_=!1;this.markerConnection_=null;this.highlightingBlock_=!1;this.highlightedBlock_=null;this.availableConnections_=this.initAvailableConnections_()};&#xD;	Blockly.InsertionMarkerManager.prototype.dispose=function(){this.workspace_=this.topBlock_=null;this.availableConnections_.length=0;this.localConnection_=this.closestConnection_=null;this.firstMarker_&amp;&amp;(this.firstMarker_.dispose(),this.firstMarker_=null);this.lastMarker_&amp;&amp;(this.lastMarker_.dispose(),this.lastMarker_=null);this.highlightedBlock_=null};Blockly.InsertionMarkerManager.prototype.wouldDeleteBlock=function(){return this.wouldDeleteBlock_};&#xD;	Blockly.InsertionMarkerManager.prototype.applyConnections=function(){this.closestConnection_&amp;&amp;(Blockly.Events.disable(),this.hidePreview_(),Blockly.Events.enable(),this.localConnection_.connect(this.closestConnection_),this.rendered&amp;&amp;(this.localConnection_.isSuperior()?this.closestConnection_:this.localConnection_).getSourceBlock().connectionUiEffect())};&#xD;	Blockly.InsertionMarkerManager.prototype.update=function(a,b){var c=this.getCandidate_(a);if((this.wouldDeleteBlock_=this.shouldDelete_(c,b))||this.shouldUpdatePreviews_(c,a))Blockly.Events.disable(),this.maybeHidePreview_(c),this.maybeShowPreview_(c),Blockly.Events.enable()};Blockly.InsertionMarkerManager.prototype.createMarkerBlock_=function(a){var b=this.workspace_.newBlock(a.type);if(a.mutationToDom){var c=a.mutationToDom();b.domToMutation(c)}b.setInsertionMarker(!0,a.width);b.initSvg();return b};&#xD;	Blockly.InsertionMarkerManager.prototype.initAvailableConnections_=function(){var a=this.topBlock_.getConnections_(!1),b=this.topBlock_.lastConnectionInStack();b&amp;&amp;b!=this.topBlock_.nextConnection&amp;&amp;(a.push(b),this.lastOnStack_=b,this.lastMarker_=this.createMarkerBlock_(b.sourceBlock_));return a};&#xD;	Blockly.InsertionMarkerManager.prototype.shouldUpdatePreviews_=function(a,b){var c=a.local,d=a.closest,e=a.radius;if(c&amp;&amp;d){if(c.type==Blockly.OUTPUT_VALUE)return!0;if(this.localConnection_&amp;&amp;this.closestConnection_){if(this.closestConnection_==d)return!1;var c=this.localConnection_.x_+b.x-this.closestConnection_.x_,f=this.localConnection_.y_+b.y-this.closestConnection_.y_,c=Math.sqrt(c*c+f*f);return!(d&amp;&amp;e&gt;c-Blockly.CURRENT_CONNECTION_PREFERENCE)}if(this.localConnection_||this.closestConnection_)console.error("Only one of localConnection_ and closestConnection_ was set.");&#xD;	else return!0}else return!(!this.localConnection_||!this.closestConnection_);console.error("Returning true from shouldUpdatePreviews, but it&apos;s not clear why.");return!0};Blockly.InsertionMarkerManager.prototype.getCandidate_=function(a){for(var b=this.getStartRadius_(),c=null,d=null,e=0;e&lt;this.availableConnections_.length;e++){var f=this.availableConnections_[e],g=f.closest(b,a);g.connection&amp;&amp;(c=g.connection,d=f,b=g.radius)}return{closest:c,local:d,radius:b}};&#xD;	Blockly.InsertionMarkerManager.prototype.getStartRadius_=function(){return this.closestConnection_&amp;&amp;this.localConnection_?Blockly.CONNECTING_SNAP_RADIUS:Blockly.SNAP_RADIUS};Blockly.InsertionMarkerManager.prototype.shouldReplace_=function(){var a=this.closestConnection_,b=this.localConnection_;return b.type==Blockly.OUTPUT_VALUE?!0:b==b.sourceBlock_.getFirstStatementConnection()?!1:!this.topBlock_.nextConnection&amp;&amp;b.type==Blockly.PREVIOUS_STATEMENT&amp;&amp;a.isConnected()?!0:!1};&#xD;	Blockly.InsertionMarkerManager.prototype.shouldDelete_=function(a,b){var c=a&amp;&amp;!!a.closest&amp;&amp;b!=Blockly.DELETE_AREA_TOOLBOX;return!!b&amp;&amp;!this.topBlock_.getParent()&amp;&amp;this.topBlock_.isDeletable()&amp;&amp;!c};Blockly.InsertionMarkerManager.prototype.maybeShowPreview_=function(a){if(!this.wouldDeleteBlock_){var b=a.closest;a=a.local;b&amp;&amp;b!=this.closestConnection_&amp;&amp;!b.sourceBlock_.isInsertionMarker()&amp;&amp;(this.closestConnection_=b,this.localConnection_=a,this.showPreview_())}};&#xD;	Blockly.InsertionMarkerManager.prototype.showPreview_=function(){this.shouldReplace_()?this.highlightBlock_():this.connectMarker_()};Blockly.InsertionMarkerManager.prototype.maybeHidePreview_=function(a){a.closest||this.hidePreview_();var b=this.closestConnection_!=a.closest;a=this.localConnection_!=a.local;this.closestConnection_&amp;&amp;this.localConnection_&amp;&amp;(b||a||this.wouldDeleteBlock_)&amp;&amp;this.hidePreview_();this.localConnection_=this.closestConnection_=this.markerConnection_=null};&#xD;	Blockly.InsertionMarkerManager.prototype.hidePreview_=function(){this.highlightingBlock_?this.unhighlightBlock_():this.markerConnection_&amp;&amp;this.disconnectMarker_()};&#xD;	Blockly.InsertionMarkerManager.prototype.highlightBlock_=function(){var a=this.closestConnection_,b=this.localConnection_;a.targetBlock()?(this.highlightedBlock_=a.targetBlock(),a.targetBlock().highlightForReplacement(!0)):b.type==Blockly.OUTPUT_VALUE&amp;&amp;(this.highlightedBlock_=a.sourceBlock_,a.sourceBlock_.highlightShapeForInput(a,!0));this.highlightingBlock_=!0};&#xD;	Blockly.InsertionMarkerManager.prototype.unhighlightBlock_=function(){var a=this.closestConnection_;a.type!=Blockly.INPUT_VALUE||a.isConnected()?this.highlightedBlock_.highlightForReplacement(!1):this.highlightedBlock_.highlightShapeForInput(a,!1);this.highlightedBlock_=null;this.highlightingBlock_=!1};&#xD;	Blockly.InsertionMarkerManager.prototype.disconnectMarker_=function(){if(this.markerConnection_){var a=this.markerConnection_,b=a.sourceBlock_,c=b.nextConnection,d=b.previousConnection;a!=c||d&amp;&amp;d.targetConnection?a.type==Blockly.NEXT_STATEMENT&amp;&amp;a!=c?(c=a.targetConnection,c.sourceBlock_.unplug(!1),d=d?d.targetConnection:null,b.unplug(!0),d&amp;&amp;d.connect(c)):b.unplug(!0):a.targetBlock().unplug(!1);if(a.targetConnection)throw"markerConnection_ still connected at the end of disconnectInsertionMarker";this.markerConnection_=&#xD;	null;b.getSvgRoot().setAttribute("visibility","hidden")}else console.log("No insertion marker connection to disconnect")};&#xD;	Blockly.InsertionMarkerManager.prototype.connectMarker_=function(){var a=this.localConnection_,b=this.closestConnection_,c=this.lastOnStack_&amp;&amp;a==this.lastOnStack_?this.lastMarker_:this.firstMarker_,a=c.getMatchingConnection(a.sourceBlock_,a);goog.asserts.assert(a!=this.markerConnection_,"Made it to connectMarker_ even though the marker isn&apos;t changing");c.render();c.rendered=!0;c.getSvgRoot().setAttribute("visibility","visible");c.positionNewBlock(c,a,b);a.connect(b);this.markerConnection_=a};Blockly.BlockDragger=function(a,b){this.draggingBlock_=a;this.workspace_=b;this.draggedConnectionManager_=new Blockly.InsertionMarkerManager(this.draggingBlock_);this.deleteArea_=null;this.wouldDeleteBlock_=!1;this.startXY_=this.draggingBlock_.getRelativeToSurfaceXY();this.dragIconData_=Blockly.BlockDragger.initIconData_(a)};&#xD;	Blockly.BlockDragger.prototype.dispose=function(){this.startWorkspace_=this.workspace_=this.draggingBlock_=null;this.dragIconData_.length=0;this.draggedConnectionManager_&amp;&amp;(this.draggedConnectionManager_.dispose(),this.draggedConnectionManager_=null)};Blockly.BlockDragger.initIconData_=function(a){var b=[];a=a.getDescendants();for(var c=0,d;d=a[c];c++){d=d.getIcons();for(var e=0;e&lt;d.length;e++){var f={location:d[e].getIconLocation(),icon:d[e]};b.push(f)}}return b};&#xD;	Blockly.BlockDragger.prototype.startBlockDrag=function(a){Blockly.Events.getGroup()||Blockly.Events.setGroup(!0);this.workspace_.setResizesEnabled(!1);Blockly.BlockSvg.disconnectUiStop_();this.draggingBlock_.getParent()&amp;&amp;(this.draggingBlock_.unplug(),a=this.pixelsToWorkspaceUnits_(a),a=goog.math.Coordinate.sum(this.startXY_,a),this.draggingBlock_.translate(a.x,a.y),this.draggingBlock_.disconnectUiEffect());this.draggingBlock_.setDragging(!0);this.draggingBlock_.moveToDragSurface_();this.workspace_.toolbox_&amp;&amp;&#xD;	this.workspace_.toolbox_.addDeleteStyle()};Blockly.BlockDragger.prototype.dragBlock=function(a,b){var c=this.pixelsToWorkspaceUnits_(b),d=goog.math.Coordinate.sum(this.startXY_,c);this.draggingBlock_.moveDuringDrag(d);this.dragIcons_(c);this.deleteArea_=this.workspace_.isDeleteArea(a);this.draggedConnectionManager_.update(c,this.deleteArea_);this.updateCursorDuringBlockDrag_()};&#xD;	Blockly.BlockDragger.prototype.endBlockDrag=function(a,b){this.dragBlock(a,b);this.dragIconData_=[];Blockly.BlockSvg.disconnectUiStop_();var c=this.pixelsToWorkspaceUnits_(b),d=goog.math.Coordinate.sum(this.startXY_,c);this.draggingBlock_.moveOffDragSurface_(d);this.maybeDeleteBlock_()||(this.draggingBlock_.moveConnections_(c.x,c.y),this.draggingBlock_.setDragging(!1),this.draggedConnectionManager_.applyConnections(),this.draggingBlock_.render(),this.fireMoveEvent_(),this.draggingBlock_.scheduleSnapAndBump());&#xD;	this.workspace_.setResizesEnabled(!0);this.workspace_.toolbox_&amp;&amp;this.workspace_.toolbox_.removeDeleteStyle();Blockly.Events.setGroup(!1)};Blockly.BlockDragger.prototype.fireMoveEvent_=function(){var a=new Blockly.Events.Move(this.draggingBlock_);a.oldCoordinate=this.startXY_;a.recordNew();Blockly.Events.fire(a)};&#xD;	Blockly.BlockDragger.prototype.maybeDeleteBlock_=function(){var a=this.workspace_.trashcan;this.wouldDeleteBlock_?(a&amp;&amp;goog.Timer.callOnce(a.close,100,a),this.fireMoveEvent_(),this.draggingBlock_.dispose(!1,!0)):a&amp;&amp;a.close();return this.wouldDeleteBlock_};&#xD;	Blockly.BlockDragger.prototype.updateCursorDuringBlockDrag_=function(){this.wouldDeleteBlock_=this.draggedConnectionManager_.wouldDeleteBlock();var a=this.workspace_.trashcan;this.wouldDeleteBlock_?(this.draggingBlock_.setDeleteStyle(!0),this.deleteArea_==Blockly.DELETE_AREA_TRASH&amp;&amp;a&amp;&amp;a.setOpen_(!0)):(this.draggingBlock_.setDeleteStyle(!1),a&amp;&amp;a.setOpen_(!1))};&#xD;	Blockly.BlockDragger.prototype.pixelsToWorkspaceUnits_=function(a){a=new goog.math.Coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&amp;&amp;(a=a.scale(1/this.workspace_.options.parentWorkspace.scale));return a};Blockly.BlockDragger.prototype.dragIcons_=function(a){for(var b=0;b&lt;this.dragIconData_.length;b++){var c=this.dragIconData_[b];c.icon.setIconLocation(goog.math.Coordinate.sum(c.location,a))}};Blockly.constants={};Blockly.DRAG_RADIUS=3;Blockly.FLYOUT_DRAG_RADIUS=10;Blockly.SNAP_RADIUS=48;Blockly.CONNECTING_SNAP_RADIUS=96;Blockly.CURRENT_CONNECTION_PREFERENCE=20;Blockly.BUMP_DELAY=0;Blockly.COLLAPSE_CHARS=30;Blockly.LONGPRESS=750;Blockly.SOUND_LIMIT=100;Blockly.DRAG_STACK=!0;Blockly.HSV_SATURATION=.45;Blockly.HSV_VALUE=.65;Blockly.SPRITE={width:96,height:124,url:"sprites.png"};Blockly.SVG_NS="http://www.w3.org/2000/svg";Blockly.HTML_NS="http://www.w3.org/1999/xhtml";&#xD;	Blockly.INPUT_VALUE=1;Blockly.OUTPUT_VALUE=2;Blockly.NEXT_STATEMENT=3;Blockly.PREVIOUS_STATEMENT=4;Blockly.DUMMY_INPUT=5;Blockly.ALIGN_LEFT=-1;Blockly.ALIGN_CENTRE=0;Blockly.ALIGN_RIGHT=1;Blockly.DRAG_NONE=0;Blockly.DRAG_STICKY=1;Blockly.DRAG_BEGIN=1;Blockly.DRAG_FREE=2;Blockly.OPPOSITE_TYPE=[];Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE]=Blockly.OUTPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE]=Blockly.INPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT]=Blockly.PREVIOUS_STATEMENT;&#xD;	Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;Blockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.OUTPUT_SHAPE_HEXAGONAL=1;Blockly.OUTPUT_SHAPE_ROUND=2;Blockly.OUTPUT_SHAPE_SQUARE=3;Blockly.STACK_GLOW_RADIUS=1.3;Blockly.REPLACEMENT_GLOW_RADIUS=2;Blockly.Categories={motion:"motion",looks:"looks",sound:"sounds",pen:"pen",data:"data",event:"events",control:"control",sensing:"sensing",operators:"operators",more:"more"};&#xD;	Blockly.DELETE_AREA_NONE=null;Blockly.DELETE_AREA_TRASH=1;Blockly.DELETE_AREA_TOOLBOX=2;Blockly.VARIABLE_CATEGORY_NAME="VARIABLE";Blockly.PROCEDURE_CATEGORY_NAME="PROCEDURE";Blockly.WorkspaceDragger=function(a){this.workspace_=a;this.startDragMetrics_=a.getMetrics();this.startScrollXY_=new goog.math.Coordinate(a.scrollX,a.scrollY)};Blockly.WorkspaceDragger.prototype.dispose=function(){this.workspace_=null};Blockly.WorkspaceDragger.prototype.startDrag=function(){Blockly.selected&amp;&amp;Blockly.selected.unselect();this.workspace_.setupDragSurface()};Blockly.WorkspaceDragger.prototype.endDrag=function(a){this.drag(a);this.workspace_.resetDragSurface()};&#xD;	Blockly.WorkspaceDragger.prototype.drag=function(a){var b=this.startDragMetrics_,c=goog.math.Coordinate.sum(this.startScrollXY_,a);a=Math.min(c.x,-b.contentLeft);c=Math.min(c.y,-b.contentTop);a=Math.max(a,b.viewWidth-b.contentLeft-b.contentWidth);c=Math.max(c,b.viewHeight-b.contentTop-b.contentHeight);a=-a-b.contentLeft;c=-c-b.contentTop;this.updateScroll_(a,c)};Blockly.WorkspaceDragger.prototype.updateScroll_=function(a,b){this.workspace_.scrollbar.set(a,b)};Blockly.FlyoutDragger=function(a){Blockly.FlyoutDragger.superClass_.constructor.call(this,a.getWorkspace());this.scrollbar_=a.scrollbar_;this.horizontalLayout_=a.horizontalLayout_};goog.inherits(Blockly.FlyoutDragger,Blockly.WorkspaceDragger);Blockly.FlyoutDragger.prototype.updateScroll_=function(a,b){this.horizontalLayout_?this.scrollbar_.set(a):this.scrollbar_.set(b)};Blockly.Tooltip={};Blockly.Tooltip.visible=!1;Blockly.Tooltip.blocked_=!1;Blockly.Tooltip.LIMIT=50;Blockly.Tooltip.mouseOutPid_=0;Blockly.Tooltip.showPid_=0;Blockly.Tooltip.lastX_=0;Blockly.Tooltip.lastY_=0;Blockly.Tooltip.element_=null;Blockly.Tooltip.poisonedElement_=null;Blockly.Tooltip.OFFSET_X=0;Blockly.Tooltip.OFFSET_Y=10;Blockly.Tooltip.RADIUS_OK=10;Blockly.Tooltip.HOVER_MS=750;Blockly.Tooltip.MARGINS=5;Blockly.Tooltip.DIV=null;&#xD;	Blockly.Tooltip.createDom=function(){Blockly.Tooltip.DIV||(Blockly.Tooltip.DIV=goog.dom.createDom("DIV","blocklyTooltipDiv"),document.body.appendChild(Blockly.Tooltip.DIV))};Blockly.Tooltip.bindMouseEvents=function(a){Blockly.bindEvent_(a,"mouseover",null,Blockly.Tooltip.onMouseOver_);Blockly.bindEvent_(a,"mouseout",null,Blockly.Tooltip.onMouseOut_);a.addEventListener("mousemove",Blockly.Tooltip.onMouseMove_,!1)};&#xD;	Blockly.Tooltip.onMouseOver_=function(a){if(!Blockly.Tooltip.blocked_){for(a=a.target;!goog.isString(a.tooltip)&amp;&amp;!goog.isFunction(a.tooltip);)a=a.tooltip;Blockly.Tooltip.element_!=a&amp;&amp;(Blockly.Tooltip.hide(),Blockly.Tooltip.poisonedElement_=null,Blockly.Tooltip.element_=a);clearTimeout(Blockly.Tooltip.mouseOutPid_)}};&#xD;	Blockly.Tooltip.onMouseOut_=function(){Blockly.Tooltip.blocked_||(Blockly.Tooltip.mouseOutPid_=setTimeout(function(){Blockly.Tooltip.element_=null;Blockly.Tooltip.poisonedElement_=null;Blockly.Tooltip.hide()},1),clearTimeout(Blockly.Tooltip.showPid_))};&#xD;	Blockly.Tooltip.onMouseMove_=function(a){if(Blockly.Tooltip.element_&amp;&amp;Blockly.Tooltip.element_.tooltip&amp;&amp;!Blockly.WidgetDiv.isVisible()&amp;&amp;!Blockly.Tooltip.blocked_)if(Blockly.Tooltip.visible){var b=Blockly.Tooltip.lastX_-a.pageX;a=Blockly.Tooltip.lastY_-a.pageY;Math.sqrt(b*b+a*a)&gt;Blockly.Tooltip.RADIUS_OK&amp;&amp;Blockly.Tooltip.hide()}else Blockly.Tooltip.poisonedElement_!=Blockly.Tooltip.element_&amp;&amp;(clearTimeout(Blockly.Tooltip.showPid_),Blockly.Tooltip.lastX_=a.pageX,Blockly.Tooltip.lastY_=a.pageY,Blockly.Tooltip.showPid_=&#xD;	setTimeout(Blockly.Tooltip.show_,Blockly.Tooltip.HOVER_MS))};Blockly.Tooltip.hide=function(){Blockly.Tooltip.visible&amp;&amp;(Blockly.Tooltip.visible=!1,Blockly.Tooltip.DIV&amp;&amp;(Blockly.Tooltip.DIV.style.display="none"));clearTimeout(Blockly.Tooltip.showPid_)};Blockly.Tooltip.block=function(){Blockly.Tooltip.hide();Blockly.Tooltip.blocked_=!0};Blockly.Tooltip.unblock=function(){Blockly.Tooltip.blocked_=!1};&#xD;	Blockly.Tooltip.show_=function(){if(!Blockly.Tooltip.blocked_&amp;&amp;(Blockly.Tooltip.poisonedElement_=Blockly.Tooltip.element_,Blockly.Tooltip.DIV)){goog.dom.removeChildren(Blockly.Tooltip.DIV);for(var a=Blockly.Tooltip.element_.tooltip;goog.isFunction(a);)a=a();for(var a=Blockly.utils.wrap(a,Blockly.Tooltip.LIMIT),a=a.split("\n"),b=0;b&lt;a.length;b++){var c=document.createElement("div");c.appendChild(document.createTextNode(a[b]));Blockly.Tooltip.DIV.appendChild(c)}a=Blockly.Tooltip.element_.RTL;b=goog.dom.getViewportSize();&#xD;	Blockly.Tooltip.DIV.style.direction=a?"rtl":"ltr";Blockly.Tooltip.DIV.style.display="block";Blockly.Tooltip.visible=!0;var c=Blockly.Tooltip.lastX_,c=a?c-(Blockly.Tooltip.OFFSET_X+Blockly.Tooltip.DIV.offsetWidth):c+Blockly.Tooltip.OFFSET_X,d=Blockly.Tooltip.lastY_+Blockly.Tooltip.OFFSET_Y;d+Blockly.Tooltip.DIV.offsetHeight&gt;b.height+window.scrollY&amp;&amp;(d-=Blockly.Tooltip.DIV.offsetHeight+2*Blockly.Tooltip.OFFSET_Y);a?c=Math.max(Blockly.Tooltip.MARGINS-window.scrollX,c):c+Blockly.Tooltip.DIV.offsetWidth&gt;&#xD;	b.width+window.scrollX-2*Blockly.Tooltip.MARGINS&amp;&amp;(c=b.width-Blockly.Tooltip.DIV.offsetWidth-2*Blockly.Tooltip.MARGINS);Blockly.Tooltip.DIV.style.top=d+"px";Blockly.Tooltip.DIV.style.left=c+"px"}};Blockly.Gesture=function(a,b){this.mouseDownXY_=null;this.currentDragDeltaXY_=0;this.startWorkspace_=this.startBlock_=this.startField_=null;this.creatorWorkspace_=b;this.isDraggingBlock_=this.isDraggingWorkspace_=this.hasExceededDragRadius_=!1;this.mostRecentEvent_=a;this.flyout_=this.workspaceDragger_=this.blockDragger_=this.onUpWrapper_=this.onMoveWrapper_=null;this.isEnding_=this.hasStarted_=this.calledUpdateIsDragging_=!1};&#xD;	Blockly.Gesture.prototype.dispose=function(){Blockly.Touch.clearTouchIdentifier();Blockly.Tooltip.unblock();this.creatorWorkspace_.clearGesture();this.onMoveWrapper_&amp;&amp;Blockly.unbindEvent_(this.onMoveWrapper_);this.onUpWrapper_&amp;&amp;Blockly.unbindEvent_(this.onUpWrapper_);this.flyout_=this.startWorkspace_=this.startBlock_=this.startField_=null;this.blockDragger_&amp;&amp;(this.blockDragger_.dispose(),this.blockDragger_=null);this.workspaceDragger_&amp;&amp;(this.workspaceDragger_.dispose(),this.workspaceDragger_=null)};&#xD;	Blockly.Gesture.prototype.updateFromEvent_=function(a){var b=new goog.math.Coordinate(a.clientX,a.clientY);this.updateDragDelta_(b)&amp;&amp;(this.updateIsDragging_(),Blockly.longStop_());this.mostRecentEvent_=a};&#xD;	Blockly.Gesture.prototype.updateDragDelta_=function(a){this.currentDragDeltaXY_=goog.math.Coordinate.difference(a,this.mouseDownXY_);return this.hasExceededDragRadius_?!1:this.hasExceededDragRadius_=goog.math.Coordinate.magnitude(this.currentDragDeltaXY_)&gt;(this.flyout_?Blockly.FLYOUT_DRAG_RADIUS:Blockly.DRAG_RADIUS)};&#xD;	Blockly.Gesture.prototype.updateIsDraggingFromFlyout_=function(){return this.startBlock_.disabled?!1:!this.flyout_.isScrollable()||this.flyout_.isDragTowardWorkspace(this.currentDragDeltaXY_)?(this.startWorkspace_=this.flyout_.targetWorkspace_,this.startWorkspace_.updateScreenCalculationsIfScrolled(),Blockly.Events.getGroup()||Blockly.Events.setGroup(!0),this.startBlock_=this.flyout_.createBlock(this.startBlock_),this.startBlock_.select(),!0):!1};&#xD;	Blockly.Gesture.prototype.updateIsDraggingBlock_=function(){if(!this.startBlock_)return!1;this.flyout_?this.isDraggingBlock_=this.updateIsDraggingFromFlyout_():this.startBlock_.isMovable()&amp;&amp;(this.isDraggingBlock_=!0);return this.isDraggingBlock_?(this.startDraggingBlock_(),!0):!1};&#xD;	Blockly.Gesture.prototype.updateIsDraggingWorkspace_=function(){if(this.flyout_?this.flyout_.isScrollable():this.startWorkspace_&amp;&amp;this.startWorkspace_.isDraggable())this.workspaceDragger_=this.flyout_?new Blockly.FlyoutDragger(this.flyout_):new Blockly.WorkspaceDragger(this.startWorkspace_),this.isDraggingWorkspace_=!0,this.workspaceDragger_.startDrag()};&#xD;	Blockly.Gesture.prototype.updateIsDragging_=function(){goog.asserts.assert(!this.calledUpdateIsDragging_,"updateIsDragging_ should only be called once per gesture.");this.calledUpdateIsDragging_=!0;this.updateIsDraggingBlock_()||this.updateIsDraggingWorkspace_()};&#xD;	Blockly.Gesture.prototype.startDraggingBlock_=function(){this.blockDragger_=new Blockly.BlockDragger(this.startBlock_,this.startWorkspace_);this.blockDragger_.startBlockDrag(this.currentDragDeltaXY_);this.blockDragger_.dragBlock(this.mostRecentEvent_,this.currentDragDeltaXY_)};&#xD;	Blockly.Gesture.prototype.doStart=function(a){Blockly.utils.isTargetInput(a)?this.cancel():(this.hasStarted_=!0,Blockly.BlockSvg.disconnectUiStop_(),this.startWorkspace_.updateScreenCalculationsIfScrolled(),this.startWorkspace_.isMutator&amp;&amp;this.startWorkspace_.resize(),this.startWorkspace_.markFocused(),this.mostRecentEvent_=a,Blockly.hideChaff(!!this.flyout_),Blockly.Tooltip.block(),this.startBlock_&amp;&amp;this.startBlock_.select(),Blockly.utils.isRightButton(a)?this.handleRightClick(a):(goog.string.caseInsensitiveEquals(a.type,&#xD;	"touchstart")&amp;&amp;Blockly.longStart_(a,this),this.mouseDownXY_=new goog.math.Coordinate(a.clientX,a.clientY),this.onMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",null,this.handleMove.bind(this)),this.onUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",null,this.handleUp.bind(this)),a.preventDefault(),a.stopPropagation()))};&#xD;	Blockly.Gesture.prototype.handleMove=function(a){this.updateFromEvent_(a);this.isDraggingWorkspace_?this.workspaceDragger_.drag(this.currentDragDeltaXY_):this.isDraggingBlock_&amp;&amp;this.blockDragger_.dragBlock(this.mostRecentEvent_,this.currentDragDeltaXY_);a.preventDefault();a.stopPropagation()};&#xD;	Blockly.Gesture.prototype.handleUp=function(a){this.updateFromEvent_(a);Blockly.longStop_();this.isEnding_?console.log("Trying to end a gesture recursively."):(this.isEnding_=!0,this.isDraggingBlock_?this.blockDragger_.endBlockDrag(a,this.currentDragDeltaXY_):this.isDraggingWorkspace_?this.workspaceDragger_.endDrag(this.currentDragDeltaXY_):this.isFieldClick_()?this.doFieldClick_():this.isBlockClick_()?this.doBlockClick_():this.isWorkspaceClick_()&amp;&amp;this.doWorkspaceClick_(),a.preventDefault(),a.stopPropagation(),&#xD;	this.dispose())};Blockly.Gesture.prototype.cancel=function(){this.isEnding_||(Blockly.longStop_(),this.isDraggingBlock_?this.blockDragger_.endBlockDrag(this.mostRecentEvent_,this.currentDragDeltaXY_):this.isDraggingWorkspace_&amp;&amp;this.workspaceDragger_.endDrag(this.currentDragDeltaXY_),this.dispose())};&#xD;	Blockly.Gesture.prototype.handleRightClick=function(a){this.startBlock_?(this.bringBlockToFront_(),Blockly.hideChaff(this.flyout_),this.startBlock_.showContextMenu_(a)):this.startWorkspace_&amp;&amp;!this.flyout_&amp;&amp;(Blockly.hideChaff(),this.startWorkspace_.showContextMenu_(a));a.preventDefault();a.stopPropagation();this.dispose()};&#xD;	Blockly.Gesture.prototype.handleWsStart=function(a,b){goog.asserts.assert(!this.hasStarted_,"Tried to call gesture.handleWsStart, but the gesture had already been started.");this.setStartWorkspace_(b);this.mostRecentEvent_=a;this.doStart(a)};Blockly.Gesture.prototype.handleFlyoutStart=function(a,b){goog.asserts.assert(!this.hasStarted_,"Tried to call gesture.handleFlyoutStart, but the gesture had already been started.");this.setStartFlyout_(b);this.handleWsStart(a,b.getWorkspace())};&#xD;	Blockly.Gesture.prototype.handleBlockStart=function(a,b){goog.asserts.assert(!this.hasStarted_,"Tried to call gesture.handleBlockStart, but the gesture had already been started.");this.setStartBlock(b);this.mostRecentEvent_=a};Blockly.Gesture.prototype.doFieldClick_=function(){this.startField_.showEditor_();this.bringBlockToFront_()};&#xD;	Blockly.Gesture.prototype.doBlockClick_=function(){if(this.flyout_&amp;&amp;this.flyout_.autoClose)Blockly.Events.getGroup()||Blockly.Events.setGroup(!0),this.flyout_.createBlock(this.startBlock_).scheduleSnapAndBump();else if(!Blockly.WidgetDiv.isVisible()&amp;&amp;!Blockly.DropDownDiv.isVisible()){Blockly.Events.fire(new Blockly.Events.Ui(this.startBlock_,"click",void 0,void 0));var a=this.startBlock_.getRootBlock();Blockly.Events.fire(new Blockly.Events.Ui(a,"stackclick",void 0,void 0))}this.bringBlockToFront_();&#xD;	Blockly.Events.setGroup(!1)};Blockly.Gesture.prototype.doWorkspaceClick_=function(){Blockly.selected&amp;&amp;Blockly.selected.unselect()};Blockly.Gesture.prototype.bringBlockToFront_=function(){this.startBlock_&amp;&amp;!this.flyout_&amp;&amp;this.startBlock_.bringToFront()};Blockly.Gesture.prototype.setStartField=function(a){goog.asserts.assert(!this.hasStarted_,"Tried to call gesture.setStartField, but the gesture had already been started.");this.startField_||(this.startField_=a)};&#xD;	Blockly.Gesture.prototype.setStartBlock=function(a){this.startBlock_||(a.isShadow()?this.setStartBlock(a.getParent()):a.isInFlyout&amp;&amp;a!=a.getRootBlock()?this.setStartBlock(a.getRootBlock()):this.startBlock_=a)};Blockly.Gesture.prototype.setStartWorkspace_=function(a){this.startWorkspace_||(this.startWorkspace_=a)};Blockly.Gesture.prototype.setStartFlyout_=function(a){this.flyout_||(this.flyout_=a)};&#xD;	Blockly.Gesture.prototype.isBlockClick_=function(){return!!this.startBlock_&amp;&amp;!this.hasExceededDragRadius_&amp;&amp;!this.isFieldClick_()};Blockly.Gesture.prototype.isFieldClick_=function(){return(this.startField_?this.startField_.isCurrentlyEditable():!1)&amp;&amp;!this.hasExceededDragRadius_};Blockly.Gesture.prototype.isWorkspaceClick_=function(){return!this.startBlock_&amp;&amp;!this.startField_&amp;&amp;!this.hasExceededDragRadius_};Blockly.Gesture.prototype.isDragging=function(){return this.isDraggingWorkspace_||this.isDraggingBlock_};&#xD;	Blockly.Gesture.prototype.hasStarted=function(){return this.hasStarted_};Blockly.Field=function(a,b){this.size_=new goog.math.Size(Blockly.BlockSvg.FIELD_WIDTH,Blockly.BlockSvg.FIELD_HEIGHT);this.setValue(a);this.setValidator(b);this.maxDisplayLength=Blockly.BlockSvg.MAX_DISPLAY_LENGTH};Blockly.Field.cacheWidths_=null;Blockly.Field.cacheReference_=0;Blockly.Field.prototype.name=void 0;Blockly.Field.prototype.text_="";Blockly.Field.prototype.sourceBlock_=null;Blockly.Field.prototype.visible_=!0;Blockly.Field.prototype.argType_=null;Blockly.Field.prototype.validator_=null;&#xD;	Blockly.Field.NBSP="\u00a0";Blockly.Field.prototype.EDITABLE=!0;Blockly.Field.prototype.setSourceBlock=function(a){goog.asserts.assert(!this.sourceBlock_,"Field already bound to a block.");this.sourceBlock_=a};&#xD;	Blockly.Field.prototype.init=function(){if(!this.fieldGroup_){this.fieldGroup_=Blockly.utils.createSvgElement("g",{},null);this.visible_||(this.fieldGroup_.style.display="none");null!==this.getArgTypes()&amp;&amp;(this.sourceBlock_.isShadow()?this.sourceBlock_.svgGroup_.setAttribute("data-argument-type",this.getArgTypes()):this.fieldGroup_.setAttribute("data-argument-type",this.getArgTypes()));var a=this.getSize();this.textElement_=Blockly.utils.createSvgElement("text",{"class":"blocklyText",x:this.sourceBlock_.RTL?&#xD;	-a.width/2:a.width/2,y:a.height/2+Blockly.BlockSvg.FIELD_TOP_PADDING,"dominant-baseline":"middle","text-anchor":"middle"},this.fieldGroup_);this.updateEditable();this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_);this.render_();this.size_.width=0;this.mouseDownWrapper_=Blockly.bindEventWithChecks_(this.fieldGroup_,"mousedown",this,this.onMouseDown_)}};Blockly.Field.prototype.initModel=function(){};&#xD;	Blockly.Field.prototype.dispose=function(){this.mouseDownWrapper_&amp;&amp;(Blockly.unbindEvent_(this.mouseDownWrapper_),this.mouseDownWrapper_=null);this.sourceBlock_=null;goog.dom.removeNode(this.fieldGroup_);this.validator_=this.textElement_=this.fieldGroup_=null};&#xD;	Blockly.Field.prototype.updateEditable=function(){var a=this.fieldGroup_;this.EDITABLE&amp;&amp;a&amp;&amp;(this.sourceBlock_.isEditable()?(Blockly.utils.addClass(a,"blocklyEditableText"),Blockly.utils.removeClass(a,"blocklyNonEditableText"),this.fieldGroup_.style.cursor=this.CURSOR):(Blockly.utils.addClass(a,"blocklyNonEditableText"),Blockly.utils.removeClass(a,"blocklyEditableText"),this.fieldGroup_.style.cursor=""))};&#xD;	Blockly.Field.prototype.isCurrentlyEditable=function(){return this.EDITABLE&amp;&amp;!!this.sourceBlock_&amp;&amp;this.sourceBlock_.isEditable()};Blockly.Field.prototype.isVisible=function(){return this.visible_};Blockly.Field.prototype.setVisible=function(a){if(this.visible_!=a){this.visible_=a;var b=this.getSvgRoot();b&amp;&amp;(b.style.display=a?"block":"none",this.render_())}};Blockly.Field.prototype.addArgType=function(a){null==this.argType_&amp;&amp;(this.argType_=[]);this.argType_.push(a)};&#xD;	Blockly.Field.prototype.getArgTypes=function(){return null===this.argType_||0===this.argType_.length?null:this.argType_.join(" ")};Blockly.Field.prototype.setValidator=function(a){this.validator_=a};Blockly.Field.prototype.getValidator=function(){return this.validator_};Blockly.Field.prototype.classValidator=function(a){return a};&#xD;	Blockly.Field.prototype.callValidator=function(a){var b=this.classValidator(a);if(null===b)return null;void 0!==b&amp;&amp;(a=b);if(b=this.getValidator()){b=b.call(this,a);if(null===b)return null;void 0!==b&amp;&amp;(a=b)}return a};Blockly.Field.prototype.getSvgRoot=function(){return this.fieldGroup_};&#xD;	Blockly.Field.prototype.render_=function(){if(this.visible_&amp;&amp;this.textElement_){goog.dom.removeChildren(this.textElement_);var a=document.createTextNode(this.getDisplayText_());this.textElement_.appendChild(a);this.updateWidth();a=(this.size_.width-this.arrowWidth_)/2;this.sourceBlock_.RTL&amp;&amp;(a+=this.arrowWidth_);if(this.sourceBlock_.isShadow()&amp;&amp;!this.positionArrow)var b=Blockly.BlockSvg.FIELD_WIDTH/2,a=this.sourceBlock_.RTL?Math.min(this.size_.width-b,a):Math.max(b,a);this.textElement_.setAttribute("x",&#xD;	a)}this.box_&amp;&amp;(this.box_.setAttribute("width",this.size_.width),this.box_.setAttribute("height",this.size_.height))};Blockly.Field.prototype.updateWidth=function(){Blockly.Field.getCachedWidth(this.textElement_);var a=Blockly.Field.getCachedWidth(this.textElement_);this.EDITABLE&amp;&amp;(a+=Blockly.BlockSvg.EDITABLE_FIELD_PADDING);this.arrowWidth_=0;this.positionArrow&amp;&amp;(this.arrowWidth_=this.positionArrow(a),a+=this.arrowWidth_);this.box_&amp;&amp;(a+=2*Blockly.BlockSvg.BOX_FIELD_PADDING);this.size_.width=a};&#xD;	Blockly.Field.getCachedWidth=function(a){var b=a.textContent+"\n"+a.className.baseVal,c;if(Blockly.Field.cacheWidths_&amp;&amp;(c=Blockly.Field.cacheWidths_[b]))return c;try{c=a.getComputedTextLength()}catch(d){return 8*a.textContent.length}Blockly.Field.cacheWidths_&amp;&amp;(Blockly.Field.cacheWidths_[b]=c);return c};Blockly.Field.startCache=function(){Blockly.Field.cacheReference_++;Blockly.Field.cacheWidths_||(Blockly.Field.cacheWidths_={})};&#xD;	Blockly.Field.stopCache=function(){Blockly.Field.cacheReference_--;Blockly.Field.cacheReference_||(Blockly.Field.cacheWidths_=null)};Blockly.Field.prototype.getSize=function(){this.size_.width||this.render_();return this.size_};Blockly.Field.prototype.getScaledBBox_=function(){var a=this.getSize();return new goog.math.Size(a.width*this.sourceBlock_.workspace.scale,a.height*this.sourceBlock_.workspace.scale)};&#xD;	Blockly.Field.prototype.getDisplayText_=function(){var a=this.text_;if(!a)return Blockly.Field.NBSP;a.length&gt;this.maxDisplayLength&amp;&amp;(a=a.substring(0,this.maxDisplayLength-2)+"\u2026");a=a.replace(/\s/g,Blockly.Field.NBSP);this.sourceBlock_.RTL&amp;&amp;(a+="\u200f");return a};Blockly.Field.prototype.getText=function(){return this.text_};&#xD;	Blockly.Field.prototype.setText=function(a){null!==a&amp;&amp;(a=String(a),a!==this.text_&amp;&amp;(this.text_=a,this.size_.width=0,this.sourceBlock_&amp;&amp;this.sourceBlock_.rendered&amp;&amp;(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_())))};&#xD;	Blockly.Field.prototype.updateTextNode_=function(){if(this.textElement_){var a=this.text_;a.length&gt;this.maxDisplayLength?(a=a.substring(0,this.maxDisplayLength-2)+"\u2026",this.textElement_.setAttribute("class","blocklyText blocklyTextTruncated")):this.textElement_.setAttribute("class","blocklyText");goog.dom.removeChildren(this.textElement_);a=a.replace(/\s/g,Blockly.Field.NBSP);this.sourceBlock_.RTL&amp;&amp;a&amp;&amp;(a+="\u200f");a||(a=Blockly.Field.NBSP);a=document.createTextNode(a);this.textElement_.appendChild(a);&#xD;	this.size_.width=0}};Blockly.Field.prototype.getValue=function(){return this.getText()};Blockly.Field.prototype.setValue=function(a){if(null!==a){var b=this.getValue();b!=a&amp;&amp;(this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,b,a)),this.setText(a))}};Blockly.Field.prototype.onMouseDown_=function(a){this.sourceBlock_&amp;&amp;this.sourceBlock_.workspace&amp;&amp;(a=this.sourceBlock_.workspace.getGesture(a))&amp;&amp;a.setStartField(this)};&#xD;	Blockly.Field.prototype.setTooltip=function(){};Blockly.Field.prototype.getClickTarget_=function(){for(var a=0,b=0,c;c=this.sourceBlock_.inputList[b];b++)a+=c.fieldRow.length;return 1&gt;=a?this.sourceBlock_.getSvgRoot():this.getSvgRoot()};Blockly.Field.prototype.getAbsoluteXY_=function(){return goog.style.getPageOffset(this.getClickTarget_())};Blockly.FieldVariableGetter=function(a,b){Blockly.FieldVariableGetter.superClass_.constructor.call(this,a);this.name_=b};goog.inherits(Blockly.FieldVariableGetter,Blockly.Field);Blockly.FieldVariableGetter.prototype.EDITABLE=!0;&#xD;	Blockly.FieldVariableGetter.prototype.init=function(){this.fieldGroup_||(Blockly.FieldVariableGetter.superClass_.init.call(this),this.getValue()||this.setValue(Blockly.Variables.generateUniqueName(this.sourceBlock_.isInFlyout?this.sourceBlock_.workspace.targetWorkspace:this.sourceBlock_.workspace)),this.sourceBlock_.isInFlyout||this.sourceBlock_.workspace.createVariable(this.getValue()))};Blockly.FieldVariableGetter.prototype.showEditor_=function(){};&#xD;	Blockly.FieldVariableGetter.prototype.updateEditable=function(){};Blockly.FieldLabel=function(a,b){this.size_=new goog.math.Size(0,0);this.class_=b;this.setValue(a)};goog.inherits(Blockly.FieldLabel,Blockly.Field);Blockly.FieldLabel.prototype.EDITABLE=!1;&#xD;	Blockly.FieldLabel.prototype.init=function(){this.textElement_||(this.textElement_=Blockly.utils.createSvgElement("text",{"class":"blocklyText",y:Blockly.BlockSvg.FIELD_TOP_PADDING,"text-anchor":"middle","dominant-baseline":"middle"},null),this.class_&amp;&amp;Blockly.utils.addClass(this.textElement_,this.class_),this.visible_||(this.textElement_.style.display="none"),this.sourceBlock_.getSvgRoot().appendChild(this.textElement_),this.textElement_.tooltip=this.sourceBlock_,Blockly.Tooltip.bindMouseEvents(this.textElement_),&#xD;	this.render_())};Blockly.FieldLabel.prototype.dispose=function(){goog.dom.removeNode(this.textElement_);this.textElement_=null};Blockly.FieldLabel.prototype.getSvgRoot=function(){return this.textElement_};Blockly.FieldLabel.prototype.setTooltip=function(a){this.textElement_.tooltip=a};Blockly.Input=function(a,b,c,d){if(a!=Blockly.DUMMY_INPUT&amp;&amp;!b)throw"Value inputs and statement inputs must have non-empty name.";this.type=a;this.name=b;this.sourceBlock_=c;this.connection=d;this.fieldRow=[]};Blockly.Input.prototype.align=Blockly.ALIGN_LEFT;Blockly.Input.prototype.visible_=!0;Blockly.Input.prototype.appendField=function(a,b){this.insertFieldAt(this.fieldRow.length,a,b);return this};&#xD;	Blockly.Input.prototype.insertFieldAt=function(a,b,c){if(0&gt;a||a&gt;this.fieldRow.length)throw Error("index "+a+" out of bounds.");if(!b&amp;&amp;!c)return this;goog.isString(b)&amp;&amp;(b=new Blockly.FieldLabel(b));b.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&amp;&amp;b.init();b.name=c;b.prefixField&amp;&amp;(a=this.insertFieldAt(a,b.prefixField));this.fieldRow.splice(a,0,b);++a;b.suffixField&amp;&amp;(a=this.insertFieldAt(a,b.suffixField));this.sourceBlock_.rendered&amp;&amp;(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_());&#xD;	return a};Blockly.Input.prototype.removeField=function(a){for(var b=0,c;c=this.fieldRow[b];b++)if(c.name===a){c.dispose();this.fieldRow.splice(b,1);this.sourceBlock_.rendered&amp;&amp;(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_());return}goog.asserts.fail(&apos;Field "%s" not found.&apos;,a)};Blockly.Input.prototype.isVisible=function(){return this.visible_};&#xD;	Blockly.Input.prototype.setVisible=function(a){var b=[];if(this.visible_==a)return b;for(var c=(this.visible_=a)?"block":"none",d=0,e;e=this.fieldRow[d];d++)e.setVisible(a);this.connection&amp;&amp;(a?b=this.connection.unhideAll():this.connection.hideAll(),d=this.connection.targetBlock())&amp;&amp;(d.getSvgRoot().style.display=c,a||(d.rendered=!1));return b};Blockly.Input.prototype.setCheck=function(a){if(!this.connection)throw"This input does not have a connection.";this.connection.setCheck(a);return this};&#xD;	Blockly.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&amp;&amp;this.sourceBlock_.render();return this};Blockly.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var a=0;a&lt;this.fieldRow.length;a++)this.fieldRow[a].init(this.sourceBlock_)};Blockly.Input.prototype.dispose=function(){for(var a=0,b;b=this.fieldRow[a];a++)b.dispose();this.connection&amp;&amp;this.connection.dispose();this.sourceBlock_=null};Blockly.ConnectionDB=function(){};Blockly.ConnectionDB.prototype=[];Blockly.ConnectionDB.constructor=Blockly.ConnectionDB;Blockly.ConnectionDB.prototype.addConnection=function(a){if(a.inDB_)throw"Connection already in database.";if(!a.getSourceBlock().isInFlyout){var b=this.findPositionForConnection_(a);this.splice(b,0,a);a.inDB_=!0}};&#xD;	Blockly.ConnectionDB.prototype.findConnection=function(a){if(!this.length)return-1;var b=this.findPositionForConnection_(a);if(b&gt;=this.length)return-1;for(var c=a.y_,d=b;0&lt;=d&amp;&amp;this[d].y_==c;){if(this[d]==a)return d;d--}for(;b&lt;this.length&amp;&amp;this[b].y_==c;){if(this[b]==a)return b;b++}return-1};&#xD;	Blockly.ConnectionDB.prototype.findPositionForConnection_=function(a){if(!this.length)return 0;for(var b=0,c=this.length;b&lt;c;){var d=Math.floor((b+c)/2);if(this[d].y_&lt;a.y_)b=d+1;else if(this[d].y_&gt;a.y_)c=d;else{b=d;break}}return b};Blockly.ConnectionDB.prototype.removeConnection_=function(a){if(!a.inDB_)throw"Connection not in database.";var b=this.findConnection(a);if(-1==b)throw"Unable to find connection in connectionDB.";a.inDB_=!1;this.splice(b,1)};&#xD;	Blockly.ConnectionDB.prototype.getNeighbours=function(a,b){function c(a){var c=e-d[a].x_,g=f-d[a].y_;Math.sqrt(c*c+g*g)&lt;=b&amp;&amp;l.push(d[a]);return g&lt;b}for(var d=this,e=a.x_,f=a.y_,g=0,h=d.length-2,k=h;g&lt;k;)d[k].y_&lt;f?g=k:h=k,k=Math.floor((g+h)/2);var l=[],h=g=k;if(d.length){for(;0&lt;=g&amp;&amp;c(g);)g--;do h++;while(h&lt;d.length&amp;&amp;c(h))}return l};Blockly.ConnectionDB.prototype.isInYRange_=function(a,b,c){return Math.abs(this[a].y_-b)&lt;=c};&#xD;	Blockly.ConnectionDB.prototype.searchForClosest=function(a,b,c){if(!this.length)return{connection:null,radius:b};var d=a.y_,e=a.x_;a.x_=e+c.x;a.y_=d+c.y;var f=this.findPositionForConnection_(a);c=null;for(var g=b,h,k=f-1;0&lt;=k&amp;&amp;this.isInYRange_(k,a.y_,b);)h=this[k],a.isConnectionAllowed(h,g)&amp;&amp;(c=h,g=h.distanceFrom(a)),k--;for(;f&lt;this.length&amp;&amp;this.isInYRange_(f,a.y_,b);)h=this[f],a.isConnectionAllowed(h,g)&amp;&amp;(c=h,g=h.distanceFrom(a)),f++;a.x_=e;a.y_=d;return{connection:c,radius:g}};&#xD;	Blockly.ConnectionDB.init=function(a){var b=[];b[Blockly.INPUT_VALUE]=new Blockly.ConnectionDB;b[Blockly.OUTPUT_VALUE]=new Blockly.ConnectionDB;b[Blockly.NEXT_STATEMENT]=new Blockly.ConnectionDB;b[Blockly.PREVIOUS_STATEMENT]=new Blockly.ConnectionDB;a.connectionDBList=b};Blockly.DropDownDiv=function(){};Blockly.DropDownDiv.DIV_=null;Blockly.DropDownDiv.boundsElement_=null;Blockly.DropDownDiv.owner_=null;Blockly.DropDownDiv.ARROW_SIZE=16;Blockly.DropDownDiv.BORDER_SIZE=1;Blockly.DropDownDiv.ARROW_HORIZONTAL_PADDING=12;Blockly.DropDownDiv.PADDING_Y=20;Blockly.DropDownDiv.ANIMATION_TIME=.25;Blockly.DropDownDiv.animateOutTimer_=null;Blockly.DropDownDiv.onHide_=0;&#xD;	Blockly.DropDownDiv.createDom=function(){Blockly.DropDownDiv.DIV_||(Blockly.DropDownDiv.DIV_=goog.dom.createDom("div","blocklyDropDownDiv"),document.body.appendChild(Blockly.DropDownDiv.DIV_),Blockly.DropDownDiv.content_=goog.dom.createDom("div","blocklyDropDownContent"),Blockly.DropDownDiv.DIV_.appendChild(Blockly.DropDownDiv.content_),Blockly.DropDownDiv.arrow_=goog.dom.createDom("div","blocklyDropDownArrow"),Blockly.DropDownDiv.DIV_.appendChild(Blockly.DropDownDiv.arrow_),Blockly.DropDownDiv.DIV_.style.transition=&#xD;	"transform "+Blockly.DropDownDiv.ANIMATION_TIME+"s, opacity "+Blockly.DropDownDiv.ANIMATION_TIME+"s")};Blockly.DropDownDiv.setBoundsElement=function(a){Blockly.DropDownDiv.boundsElement_=a};Blockly.DropDownDiv.getContentDiv=function(){return Blockly.DropDownDiv.content_};Blockly.DropDownDiv.clearContent=function(){Blockly.DropDownDiv.content_.innerHTML=""};Blockly.DropDownDiv.setColour=function(a,b){Blockly.DropDownDiv.DIV_.style.backgroundColor=a;Blockly.DropDownDiv.DIV_.style.borderColor=b};&#xD;	Blockly.DropDownDiv.setCategory=function(a){Blockly.DropDownDiv.DIV_.setAttribute("data-category",a)};Blockly.DropDownDiv.showPositionedByBlock=function(a,b,c,d){var e=b.workspace.scale,f=b.width;a=b.height;f*=e;a*=e;e=b.getSvgRoot().getBoundingClientRect();f=e.left+f/2;a=e.top+a;e=e.top;d&amp;&amp;(e+=d);Blockly.DropDownDiv.setBoundsElement(b.workspace.getParentSvg().parentNode);return Blockly.DropDownDiv.show(this,f,a,f,e,c)};&#xD;	Blockly.DropDownDiv.show=function(a,b,c,d,e,f){Blockly.DropDownDiv.owner_=a;Blockly.DropDownDiv.onHide_=f;a=Blockly.DropDownDiv.DIV_;b=Blockly.DropDownDiv.getPositionMetrics(b,c,d,e);Blockly.DropDownDiv.arrow_.style.transform="translate("+b.arrowX+"px,"+b.arrowY+"px) rotate(45deg)";Blockly.DropDownDiv.arrow_.setAttribute("class",b.arrowAtTop?"blocklyDropDownArrow arrowTop":"blocklyDropDownArrow arrowBottom");a.style.left=b.initialX+"px";a.style.top=b.initialY+"px";a.style.display="block";a.style.opacity=&#xD;	1;a.style.transform="translate("+(b.finalX-b.initialX)+"px,"+(b.finalY-b.initialY)+"px)";return b.arrowAtTop};&#xD;	Blockly.DropDownDiv.getPositionMetrics=function(a,b,c,d){var e=Blockly.DropDownDiv.DIV_,f=Blockly.DropDownDiv.boundsElement_.getBoundingClientRect(),g=goog.style.getSize(Blockly.DropDownDiv.boundsElement_),e=goog.style.getSize(e);if(b+e.height&gt;f.top+g.height)if(d-e.height&lt;f.top){c=b+Blockly.DropDownDiv.PADDING_Y;var h=!1}else a=c,c=d-e.height-Blockly.DropDownDiv.PADDING_Y,h=!0;else c=b+Blockly.DropDownDiv.PADDING_Y,h=!1;var k=a-Blockly.DropDownDiv.ARROW_SIZE/2,k=Math.max(f.left,Math.min(k,f.left+&#xD;	g.width));a=Math.max(f.left,Math.min(a-e.width/2,f.left+g.width-e.width));k=Math.max(Blockly.DropDownDiv.ARROW_HORIZONTAL_PADDING,Math.min(k-a,e.width-Blockly.DropDownDiv.ARROW_HORIZONTAL_PADDING-Blockly.DropDownDiv.ARROW_SIZE));f=h?e.height-Blockly.DropDownDiv.BORDER_SIZE:0;f-=Blockly.DropDownDiv.ARROW_SIZE/2+Blockly.DropDownDiv.BORDER_SIZE;return{initialX:a,initialY:h?d-e.height:b,finalX:a,finalY:c,arrowX:k,arrowY:f,arrowAtTop:!h}};Blockly.DropDownDiv.isVisible=function(){return!!Blockly.DropDownDiv.owner_};&#xD;	Blockly.DropDownDiv.hideIfOwner=function(a){return Blockly.DropDownDiv.owner_===a?(Blockly.DropDownDiv.hide(),!0):!1};Blockly.DropDownDiv.hide=function(){var a=Blockly.DropDownDiv.DIV_;a.style.transform="translate(0px, 0px)";a.style.opacity=0;Blockly.DropDownDiv.animateOutTimer_=setTimeout(function(){Blockly.DropDownDiv.hideWithoutAnimation()},1E3*Blockly.DropDownDiv.ANIMATION_TIME);Blockly.DropDownDiv.onHide_&amp;&amp;(Blockly.DropDownDiv.onHide_(),Blockly.DropDownDiv.onHide_=null)};&#xD;	Blockly.DropDownDiv.hideWithoutAnimation=function(){if(Blockly.DropDownDiv.isVisible()){var a=Blockly.DropDownDiv.DIV_;Blockly.DropDownDiv.animateOutTimer_&amp;&amp;window.clearTimeout(Blockly.DropDownDiv.animateOutTimer_);a.style.transform="";a.style.top="";a.style.left="";a.style.display="none";Blockly.DropDownDiv.clearContent();Blockly.DropDownDiv.owner_=null;Blockly.DropDownDiv.onHide_&amp;&amp;(Blockly.DropDownDiv.onHide_(),Blockly.DropDownDiv.onHide_=null)}};Blockly.Events={};Blockly.Events.group_="";Blockly.Events.recordUndo=!0;Blockly.Events.disabled_=0;Blockly.Events.CREATE="create";Blockly.Events.DELETE="delete";Blockly.Events.CHANGE="change";Blockly.Events.MOVE="move";Blockly.Events.UI="ui";Blockly.Events.FIRE_QUEUE_=[];Blockly.Events.fire=function(a){Blockly.Events.isEnabled()&amp;&amp;(Blockly.Events.FIRE_QUEUE_.length||setTimeout(Blockly.Events.fireNow_,0),Blockly.Events.FIRE_QUEUE_.push(a))};&#xD;	Blockly.Events.fireNow_=function(){for(var a=Blockly.Events.filter(Blockly.Events.FIRE_QUEUE_,!0),b=Blockly.Events.FIRE_QUEUE_.length=0,c;c=a[b];b++){var d=Blockly.Workspace.getById(c.workspaceId);d&amp;&amp;d.fireChangeListener(c)}};&#xD;	Blockly.Events.filter=function(a,b){var c=goog.array.clone(a);b||c.reverse();for(var d=0,e;e=c[d];d++)for(var f=d+1,g;g=c[f];f++)e.type==g.type&amp;&amp;e.blockId==g.blockId&amp;&amp;e.workspaceId==g.workspaceId&amp;&amp;(e.type==Blockly.Events.MOVE?(e.newParentId=g.newParentId,e.newInputName=g.newInputName,e.newCoordinate=g.newCoordinate,c.splice(f,1),f--):e.type==Blockly.Events.CHANGE&amp;&amp;e.element==g.element&amp;&amp;e.name==g.name?(e.newValue=g.newValue,c.splice(f,1),f--):e.type!=Blockly.Events.UI||"click"!=g.element||"commentOpen"!=&#xD;	e.element&amp;&amp;"mutatorOpen"!=e.element&amp;&amp;"warningOpen"!=e.element||(e.newValue=g.newValue,c.splice(f,1),f--));for(d=c.length-1;0&lt;=d;d--)c[d].isNull()&amp;&amp;c.splice(d,1);b||c.reverse();for(d=1;e=c[d];d++)e.type==Blockly.Events.CHANGE&amp;&amp;"mutation"==e.element&amp;&amp;c.unshift(c.splice(d,1)[0]);return c};Blockly.Events.clearPendingUndo=function(){for(var a=0,b;b=Blockly.Events.FIRE_QUEUE_[a];a++)b.recordUndo=!1};Blockly.Events.disable=function(){Blockly.Events.disabled_++};Blockly.Events.enable=function(){Blockly.Events.disabled_--};&#xD;	Blockly.Events.isEnabled=function(){return 0==Blockly.Events.disabled_};Blockly.Events.getGroup=function(){return Blockly.Events.group_};Blockly.Events.setGroup=function(a){Blockly.Events.group_="boolean"==typeof a?a?Blockly.utils.genUid():"":a};Blockly.Events.getDescendantIds_=function(a){var b=[];a=a.getDescendants();for(var c=0,d;d=a[c];c++)b[c]=d.id;return b};&#xD;	Blockly.Events.fromJson=function(a,b){switch(a.type){case Blockly.Events.CREATE:var c=new Blockly.Events.Create(null);break;case Blockly.Events.DELETE:c=new Blockly.Events.Delete(null);break;case Blockly.Events.CHANGE:c=new Blockly.Events.Change(null);break;case Blockly.Events.MOVE:c=new Blockly.Events.Move(null);break;case Blockly.Events.UI:c=new Blockly.Events.Ui(null);break;default:throw"Unknown event type.";}c.fromJson(a);c.workspaceId=b.id;return c};&#xD;	Blockly.Events.Abstract=function(a){a&amp;&amp;(this.blockId=a.id,this.workspaceId=a.workspace.id);this.group=Blockly.Events.group_;this.recordUndo=Blockly.Events.recordUndo};Blockly.Events.Abstract.prototype.toJson=function(){var a={type:this.type};this.blockId&amp;&amp;(a.blockId=this.blockId);this.group&amp;&amp;(a.group=this.group);return a};Blockly.Events.Abstract.prototype.fromJson=function(a){this.blockId=a.blockId;this.group=a.group};Blockly.Events.Abstract.prototype.isNull=function(){return!1};&#xD;	Blockly.Events.Abstract.prototype.run=function(){};Blockly.Events.Create=function(a){a&amp;&amp;(Blockly.Events.Create.superClass_.constructor.call(this,a),this.xml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a),this.ids=Blockly.Events.getDescendantIds_(a))};goog.inherits(Blockly.Events.Create,Blockly.Events.Abstract);Blockly.Events.Create.prototype.type=Blockly.Events.CREATE;&#xD;	Blockly.Events.Create.prototype.toJson=function(){var a=Blockly.Events.Create.superClass_.toJson.call(this);a.xml=Blockly.Xml.domToText(this.xml);a.ids=this.ids;return a};Blockly.Events.Create.prototype.fromJson=function(a){Blockly.Events.Create.superClass_.fromJson.call(this,a);this.xml=Blockly.Xml.textToDom("&lt;xml&gt;"+a.xml+"&lt;/xml&gt;").firstChild;this.ids=a.ids};&#xD;	Blockly.Events.Create.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId);if(a)a=goog.dom.createDom("xml"),a.appendChild(this.xml),Blockly.Xml.domToWorkspace(a,b);else{a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1,!1):c==this.blockId&amp;&amp;console.warn("Can&apos;t uncreate non-existant block: "+c)}}};&#xD;	Blockly.Events.Delete=function(a){if(a){if(a.getParent())throw"Connected blocks cannot be deleted.";Blockly.Events.Delete.superClass_.constructor.call(this,a);this.oldXml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a);this.ids=Blockly.Events.getDescendantIds_(a)}};goog.inherits(Blockly.Events.Delete,Blockly.Events.Abstract);Blockly.Events.Delete.prototype.type=Blockly.Events.DELETE;&#xD;	Blockly.Events.Delete.prototype.toJson=function(){var a=Blockly.Events.Delete.superClass_.toJson.call(this);a.ids=this.ids;return a};Blockly.Events.Delete.prototype.fromJson=function(a){Blockly.Events.Delete.superClass_.fromJson.call(this,a);this.ids=a.ids};&#xD;	Blockly.Events.Delete.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId);if(a){a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1,!1):c==this.blockId&amp;&amp;console.warn("Can&apos;t delete non-existant block: "+c)}}else a=goog.dom.createDom("xml"),a.appendChild(this.oldXml),Blockly.Xml.domToWorkspace(a,b)};&#xD;	Blockly.Events.Change=function(a,b,c,d,e){a&amp;&amp;(Blockly.Events.Change.superClass_.constructor.call(this,a),this.element=b,this.name=c,this.oldValue=d,this.newValue=e)};goog.inherits(Blockly.Events.Change,Blockly.Events.Abstract);Blockly.Events.Change.prototype.type=Blockly.Events.CHANGE;Blockly.Events.Change.prototype.toJson=function(){var a=Blockly.Events.Change.superClass_.toJson.call(this);a.element=this.element;this.name&amp;&amp;(a.name=this.name);a.newValue=this.newValue;return a};&#xD;	Blockly.Events.Change.prototype.fromJson=function(a){Blockly.Events.Change.superClass_.fromJson.call(this,a);this.element=a.element;this.name=a.name;this.newValue=a.newValue};Blockly.Events.Change.prototype.isNull=function(){return this.oldValue==this.newValue};&#xD;	Blockly.Events.Change.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId);if(b)switch(b.mutator&amp;&amp;b.mutator.setVisible(!1),a=a?this.newValue:this.oldValue,this.element){case "field":(b=b.getField(this.name))?(b.callValidator(a),b.setValue(a)):console.warn("Can&apos;t set non-existant field: "+this.name);break;case "comment":b.setCommentText(a||null);break;case "collapsed":b.setCollapsed(a);break;case "disabled":b.setDisabled(a);break;case "inline":b.setInputsInline(a);&#xD;	break;case "mutation":var c="";b.mutationToDom&amp;&amp;(c=(c=b.mutationToDom())&amp;&amp;Blockly.Xml.domToText(c));if(b.domToMutation){a=a||"&lt;mutation&gt;&lt;/mutation&gt;";var d=Blockly.Xml.textToDom("&lt;xml&gt;"+a+"&lt;/xml&gt;");b.domToMutation(d.firstChild)}Blockly.Events.fire(new Blockly.Events.Change(b,"mutation",null,c,a));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can&apos;t change non-existant block: "+this.blockId)};&#xD;	Blockly.Events.Move=function(a){a&amp;&amp;(Blockly.Events.Move.superClass_.constructor.call(this,a),a=this.currentLocation_(),this.oldParentId=a.parentId,this.oldInputName=a.inputName,this.oldCoordinate=a.coordinate)};goog.inherits(Blockly.Events.Move,Blockly.Events.Abstract);Blockly.Events.Move.prototype.type=Blockly.Events.MOVE;&#xD;	Blockly.Events.Move.prototype.toJson=function(){var a=Blockly.Events.Move.superClass_.toJson.call(this);this.newParentId&amp;&amp;(a.newParentId=this.newParentId);this.newInputName&amp;&amp;(a.newInputName=this.newInputName);this.newCoordinate&amp;&amp;(a.newCoordinate=Math.round(this.newCoordinate.x)+","+Math.round(this.newCoordinate.y));return a};&#xD;	Blockly.Events.Move.prototype.fromJson=function(a){Blockly.Events.Move.superClass_.fromJson.call(this,a);this.newParentId=a.newParentId;this.newInputName=a.newInputName;a.newCoordinate&amp;&amp;(a=a.newCoordinate.split(","),this.newCoordinate=new goog.math.Coordinate(parseFloat(a[0]),parseFloat(a[1])))};Blockly.Events.Move.prototype.recordNew=function(){var a=this.currentLocation_();this.newParentId=a.parentId;this.newInputName=a.inputName;this.newCoordinate=a.coordinate};&#xD;	Blockly.Events.Move.prototype.currentLocation_=function(){var a=Blockly.Workspace.getById(this.workspaceId).getBlockById(this.blockId),b={},c=a.getParent();if(c){if(b.parentId=c.id,a=c.getInputWithBlock(a))b.inputName=a.name}else b.coordinate=a.getRelativeToSurfaceXY();return b};Blockly.Events.Move.prototype.isNull=function(){return this.oldParentId==this.newParentId&amp;&amp;this.oldInputName==this.newInputName&amp;&amp;goog.math.Coordinate.equals(this.oldCoordinate,this.newCoordinate)};&#xD;	Blockly.Events.Move.prototype.run=function(a){var b=Blockly.Workspace.getById(this.workspaceId),c=b.getBlockById(this.blockId);if(c){var d=a?this.newParentId:this.oldParentId,e=a?this.newInputName:this.oldInputName;a=a?this.newCoordinate:this.oldCoordinate;var f=null;if(d&amp;&amp;(f=b.getBlockById(d),!f)){console.warn("Can&apos;t connect to non-existant block: "+d);return}c.getParent()&amp;&amp;c.unplug();if(a)e=c.getRelativeToSurfaceXY(),c.moveBy(a.x-e.x,a.y-e.y);else{var c=c.outputConnection||c.previousConnection;&#xD;	if(e){if(b=f.getInput(e))var g=b.connection}else c.type==Blockly.PREVIOUS_STATEMENT&amp;&amp;(g=f.nextConnection);g?c.connect(g):console.warn("Can&apos;t connect to non-existant input: "+e)}}else console.warn("Can&apos;t move non-existant block: "+this.blockId)};Blockly.Events.Ui=function(a,b,c,d){Blockly.Events.Ui.superClass_.constructor.call(this,a);this.element=b;this.oldValue=c;this.newValue=d;this.recordUndo=!1};goog.inherits(Blockly.Events.Ui,Blockly.Events.Abstract);Blockly.Events.Ui.prototype.type=Blockly.Events.UI;&#xD;	Blockly.Events.Ui.prototype.toJson=function(){var a=Blockly.Events.Ui.superClass_.toJson.call(this);a.element=this.element;void 0!==this.newValue&amp;&amp;(a.newValue=this.newValue);return a};Blockly.Events.Ui.prototype.fromJson=function(a){Blockly.Events.Ui.superClass_.fromJson.call(this,a);this.element=a.element;this.newValue=a.newValue};&#xD;	Blockly.Events.disableOrphans=function(a){if(a.type==Blockly.Events.MOVE||a.type==Blockly.Events.CREATE){Blockly.Events.disable();var b=Blockly.Workspace.getById(a.workspaceId);if(a=b.getBlockById(a.blockId))if(a.getParent()&amp;&amp;!a.getParent().disabled){b=a.getDescendants();a=0;for(var c;c=b[a];a++)c.setDisabled(!1)}else if((a.outputConnection||a.previousConnection)&amp;&amp;!b.isDragging()){do a.setDisabled(!0),a=a.getNextBlock();while(a)}Blockly.Events.enable()}};Blockly.Options=function(a){var b,c,d,e,f,g=!!a.readOnly;if(g){var h=null;var k=b=c=d=e=f=!1}else a.toolbox||(k=(new DOMParser).parseFromString(Blockly.Blocks.defaultToolbox,"text/xml"),a.toolbox=k.documentElement),h=Blockly.Options.parseToolboxTree(a.toolbox),f=!(!h||!h.getElementsByTagName("category").length),e=a.trashcan,void 0===e&amp;&amp;(e=!1),d=a.collapse,void 0===d&amp;&amp;(d=f),c=a.comments,void 0===c&amp;&amp;(c=f),b=a.disable,void 0===b&amp;&amp;(b=f),k=a.sounds,void 0===k&amp;&amp;(k=!0);var l=!!a.rtl,m=a.horizontalLayout;&#xD;	void 0===m&amp;&amp;(m=!1);var n=a.toolboxPosition;n="end"===n?!1:!0;var p=m?n?Blockly.TOOLBOX_AT_TOP:Blockly.TOOLBOX_AT_BOTTOM:n==l?Blockly.TOOLBOX_AT_RIGHT:Blockly.TOOLBOX_AT_LEFT;var q=a.scrollbars;void 0===q&amp;&amp;(q=f);var r=a.css;void 0===r&amp;&amp;(r=!0);var v="https://blockly-demo.appspot.com/static/media/";a.media?v=a.media:a.path&amp;&amp;(v=a.path+"media/");n=void 0===a.oneBasedIndex?!0:!!a.oneBasedIndex;var w=!!a.realtime,x=w?a.realtimeOptions:void 0,t=a.colours;if(t)for(var u in t)t.hasOwnProperty(u)&amp;&amp;Blockly.Colours.hasOwnProperty(u)&amp;&amp;&#xD;	(Blockly.Colours[u]=t[u]);this.RTL=l;this.oneBasedIndex=n;this.collapse=d;this.comments=c;this.disable=b;this.readOnly=g;this.pathToMedia=v;this.hasCategories=f;this.hasScrollbars=q;this.hasTrashcan=e;this.hasSounds=k;this.hasCss=r;this.horizontalLayout=m;this.languageTree=h;this.gridOptions=Blockly.Options.parseGridOptions_(a);this.zoomOptions=Blockly.Options.parseZoomOptions_(a);this.enableRealtime=w;this.realtimeOptions=x;this.toolboxPosition=p};Blockly.Options.prototype.parentWorkspace=null;&#xD;	Blockly.Options.prototype.setMetrics=null;Blockly.Options.prototype.getMetrics=null;Blockly.Options.parseZoomOptions_=function(a){a=a.zoom||{};var b={};b.controls=void 0===a.controls?!1:!!a.controls;b.wheel=void 0===a.wheel?!1:!!a.wheel;b.startScale=void 0===a.startScale?1:parseFloat(a.startScale);b.maxScale=void 0===a.maxScale?3:parseFloat(a.maxScale);b.minScale=void 0===a.minScale?.3:parseFloat(a.minScale);b.scaleSpeed=void 0===a.scaleSpeed?1.2:parseFloat(a.scaleSpeed);return b};&#xD;	Blockly.Options.parseGridOptions_=function(a){a=a.grid||{};var b={};b.spacing=parseFloat(a.spacing)||0;b.colour=a.colour||"#888";b.length=parseFloat(a.length)||1;b.snap=0&lt;b.spacing&amp;&amp;!!a.snap;return b};Blockly.Options.parseToolboxTree=function(a){a?("string"!=typeof a&amp;&amp;("undefined"==typeof XSLTProcessor&amp;&amp;a.outerHTML?a=a.outerHTML:a instanceof Element||(a=null)),"string"==typeof a&amp;&amp;(a=Blockly.Xml.textToDom(a))):a=null;return a};Blockly.ScrollbarPair=function(a){this.workspace_=a;this.hScroll=new Blockly.Scrollbar(a,!0,!0,"blocklyMainWorkspaceScrollbar");this.vScroll=new Blockly.Scrollbar(a,!1,!0,"blocklyMainWorkspaceScrollbar");this.corner_=Blockly.utils.createSvgElement("rect",{height:Blockly.Scrollbar.scrollbarThickness,width:Blockly.Scrollbar.scrollbarThickness,"class":"blocklyScrollbarBackground"},null);Blockly.utils.insertAfter_(this.corner_,a.getBubbleCanvas())};Blockly.ScrollbarPair.prototype.oldHostMetrics_=null;&#xD;	Blockly.ScrollbarPair.prototype.dispose=function(){goog.dom.removeNode(this.corner_);this.oldHostMetrics_=this.workspace_=this.corner_=null;this.hScroll.dispose();this.hScroll=null;this.vScroll.dispose();this.vScroll=null};&#xD;	Blockly.ScrollbarPair.prototype.resize=function(){var a=this.workspace_.getMetrics();if(a){var b=!1,c=!1;this.oldHostMetrics_&amp;&amp;this.oldHostMetrics_.viewWidth==a.viewWidth&amp;&amp;this.oldHostMetrics_.viewHeight==a.viewHeight&amp;&amp;this.oldHostMetrics_.absoluteTop==a.absoluteTop&amp;&amp;this.oldHostMetrics_.absoluteLeft==a.absoluteLeft?(this.oldHostMetrics_&amp;&amp;this.oldHostMetrics_.contentWidth==a.contentWidth&amp;&amp;this.oldHostMetrics_.viewLeft==a.viewLeft&amp;&amp;this.oldHostMetrics_.contentLeft==a.contentLeft||(b=!0),this.oldHostMetrics_&amp;&amp;&#xD;	this.oldHostMetrics_.contentHeight==a.contentHeight&amp;&amp;this.oldHostMetrics_.viewTop==a.viewTop&amp;&amp;this.oldHostMetrics_.contentTop==a.contentTop||(c=!0)):c=b=!0;b&amp;&amp;this.hScroll.resize(a);c&amp;&amp;this.vScroll.resize(a);this.oldHostMetrics_&amp;&amp;this.oldHostMetrics_.viewWidth==a.viewWidth&amp;&amp;this.oldHostMetrics_.absoluteLeft==a.absoluteLeft||this.corner_.setAttribute("x",this.vScroll.position_.x);this.oldHostMetrics_&amp;&amp;this.oldHostMetrics_.viewHeight==a.viewHeight&amp;&amp;this.oldHostMetrics_.absoluteTop==a.absoluteTop||this.corner_.setAttribute("y",&#xD;	this.hScroll.position_.y);this.oldHostMetrics_=a}};Blockly.ScrollbarPair.prototype.set=function(a,b){var c={},d=a*this.hScroll.ratio_,e=b*this.vScroll.ratio_,f=this.vScroll.scrollViewSize_;c.x=this.getRatio_(d,this.hScroll.scrollViewSize_);c.y=this.getRatio_(e,f);this.workspace_.setMetrics(c);this.hScroll.setHandlePosition(d);this.vScroll.setHandlePosition(e)};Blockly.ScrollbarPair.prototype.getRatio_=function(a,b){var c=a/b;return isNaN(c)?0:c};&#xD;	Blockly.Scrollbar=function(a,b,c,d){this.workspace_=a;this.pair_=c||!1;this.horizontal_=b;this.oldHostMetrics_=null;this.createDom_(d);this.position_=new goog.math.Coordinate(0,0);b?(this.svgBackground_.setAttribute("height",Blockly.Scrollbar.scrollbarThickness),this.outerSvg_.setAttribute("height",Blockly.Scrollbar.scrollbarThickness),this.svgHandle_.setAttribute("height",Blockly.Scrollbar.scrollbarThickness-5),this.svgHandle_.setAttribute("y",2.5),this.lengthAttribute_="width",this.positionAttribute_=&#xD;	"x"):(this.svgBackground_.setAttribute("width",Blockly.Scrollbar.scrollbarThickness),this.outerSvg_.setAttribute("width",Blockly.Scrollbar.scrollbarThickness),this.svgHandle_.setAttribute("width",Blockly.Scrollbar.scrollbarThickness-5),this.svgHandle_.setAttribute("x",2.5),this.lengthAttribute_="height",this.positionAttribute_="y");this.onMouseDownBarWrapper_=Blockly.bindEventWithChecks_(this.svgBackground_,"mousedown",this,this.onMouseDownBar_);this.onMouseDownHandleWrapper_=Blockly.bindEventWithChecks_(this.svgHandle_,&#xD;	"mousedown",this,this.onMouseDownHandle_)};Blockly.Scrollbar.prototype.origin_=new goog.math.Coordinate(0,0);Blockly.Scrollbar.prototype.originHasChanged_=!0;Blockly.Scrollbar.prototype.scrollViewSize_=0;Blockly.Scrollbar.prototype.handleLength_=0;Blockly.Scrollbar.prototype.handlePosition_=0;Blockly.Scrollbar.prototype.isVisible_=!0;Blockly.Scrollbar.prototype.containerVisible_=!0;Blockly.Scrollbar.scrollbarThickness=11;&#xD;	goog.events.BrowserFeature.TOUCH_ENABLED&amp;&amp;(Blockly.Scrollbar.scrollbarThickness=25);Blockly.Scrollbar.metricsAreEquivalent_=function(a,b){return a&amp;&amp;b&amp;&amp;a.viewWidth==b.viewWidth&amp;&amp;a.viewHeight==b.viewHeight&amp;&amp;a.viewLeft==b.viewLeft&amp;&amp;a.viewTop==b.viewTop&amp;&amp;a.absoluteTop==b.absoluteTop&amp;&amp;a.absoluteLeft==b.absoluteLeft&amp;&amp;a.contentWidth==b.contentWidth&amp;&amp;a.contentHeight==b.contentHeight&amp;&amp;a.contentLeft==b.contentLeft&amp;&amp;a.contentTop==b.contentTop?!0:!1};&#xD;	Blockly.Scrollbar.prototype.dispose=function(){this.cleanUp_();Blockly.unbindEvent_(this.onMouseDownBarWrapper_);this.onMouseDownBarWrapper_=null;Blockly.unbindEvent_(this.onMouseDownHandleWrapper_);this.onMouseDownHandleWrapper_=null;goog.dom.removeNode(this.outerSvg_);this.workspace_=this.svgHandle_=this.svgBackground_=this.svgGroup_=this.outerSvg_=null};Blockly.Scrollbar.prototype.setHandleLength_=function(a){this.handleLength_=a;this.svgHandle_.setAttribute(this.lengthAttribute_,this.handleLength_)};&#xD;	Blockly.Scrollbar.prototype.setHandlePosition=function(a){this.handlePosition_=a;this.svgHandle_.setAttribute(this.positionAttribute_,this.handlePosition_)};Blockly.Scrollbar.prototype.setScrollViewSize_=function(a){this.scrollViewSize_=a;this.outerSvg_.setAttribute(this.lengthAttribute_,this.scrollViewSize_);this.svgBackground_.setAttribute(this.lengthAttribute_,this.scrollViewSize_)};Blockly.ScrollbarPair.prototype.setContainerVisible=function(a){this.hScroll.setContainerVisible(a);this.vScroll.setContainerVisible(a)};&#xD;	Blockly.Scrollbar.prototype.setPosition=function(a,b){this.position_.x=a;this.position_.y=b;Blockly.utils.setCssTransform(this.outerSvg_,"translate("+(this.position_.x+this.origin_.x)+"px,"+(this.position_.y+this.origin_.y)+"px)")};&#xD;	Blockly.Scrollbar.prototype.resize=function(a){if(!a&amp;&amp;(a=this.workspace_.getMetrics(),!a))return;if(this.originHasChanged_)this.originHasChanged_=!1;else if(Blockly.Scrollbar.metricsAreEquivalent_(a,this.oldHostMetrics_))return;this.oldHostMetrics_=a;this.horizontal_?this.resizeHorizontal_(a):this.resizeVertical_(a);this.onScroll_()};Blockly.Scrollbar.prototype.resizeHorizontal_=function(a){this.resizeViewHorizontal(a)};&#xD;	Blockly.Scrollbar.prototype.resizeViewHorizontal=function(a){var b=a.viewWidth-1;this.pair_&amp;&amp;(b-=Blockly.Scrollbar.scrollbarThickness);this.setScrollViewSize_(Math.max(0,b));b=a.absoluteLeft+.5;this.pair_&amp;&amp;this.workspace_.RTL&amp;&amp;(b+=Blockly.Scrollbar.scrollbarThickness);this.setPosition(b,a.absoluteTop+a.viewHeight-Blockly.Scrollbar.scrollbarThickness-.5);this.resizeContentHorizontal(a)};&#xD;	Blockly.Scrollbar.prototype.resizeContentHorizontal=function(a){this.pair_||this.setVisible(this.scrollViewSize_&lt;a.contentWidth);this.ratio_=this.scrollViewSize_/a.contentWidth;if(-Infinity==this.ratio_||Infinity==this.ratio_||isNaN(this.ratio_))this.ratio_=0;this.setHandleLength_(Math.max(0,a.viewWidth*this.ratio_));this.setHandlePosition(this.constrainHandle_((a.viewLeft-a.contentLeft)*this.ratio_))};Blockly.Scrollbar.prototype.resizeVertical_=function(a){this.resizeViewVertical(a)};&#xD;	Blockly.Scrollbar.prototype.resizeViewVertical=function(a){var b=a.viewHeight-1;this.pair_&amp;&amp;(b-=Blockly.Scrollbar.scrollbarThickness);this.setScrollViewSize_(Math.max(0,b));b=a.absoluteLeft+.5;this.workspace_.RTL||(b+=a.viewWidth-Blockly.Scrollbar.scrollbarThickness-1);this.setPosition(b,a.absoluteTop+.5);this.resizeContentVertical(a)};&#xD;	Blockly.Scrollbar.prototype.resizeContentVertical=function(a){this.pair_||this.setVisible(this.scrollViewSize_&lt;a.contentHeight);this.ratio_=this.scrollViewSize_/a.contentHeight;if(-Infinity==this.ratio_||Infinity==this.ratio_||isNaN(this.ratio_))this.ratio_=0;this.setHandleLength_(Math.max(0,a.viewHeight*this.ratio_));this.setHandlePosition(this.constrainHandle_((a.viewTop-a.contentTop)*this.ratio_))};&#xD;	Blockly.Scrollbar.prototype.createDom_=function(a){var b="blocklyScrollbar"+(this.horizontal_?"Horizontal":"Vertical");a&amp;&amp;(b+=" "+a);this.outerSvg_=Blockly.utils.createSvgElement("svg",{"class":b},null);this.svgGroup_=Blockly.utils.createSvgElement("g",{},this.outerSvg_);this.svgBackground_=Blockly.utils.createSvgElement("rect",{"class":"blocklyScrollbarBackground"},this.svgGroup_);a=Math.floor((Blockly.Scrollbar.scrollbarThickness-5)/2);this.svgHandle_=Blockly.utils.createSvgElement("rect",{"class":"blocklyScrollbarHandle",&#xD;	rx:a,ry:a},this.svgGroup_);Blockly.utils.insertAfter_(this.outerSvg_,this.workspace_.getParentSvg())};Blockly.Scrollbar.prototype.isVisible=function(){return this.isVisible_};Blockly.Scrollbar.prototype.setContainerVisible=function(a){var b=a!=this.containerVisible_;this.containerVisible_=a;b&amp;&amp;this.updateDisplay_()};Blockly.Scrollbar.prototype.setVisible=function(a){var b=a!=this.isVisible();if(this.pair_)throw"Unable to toggle visibility of paired scrollbars.";this.isVisible_=a;b&amp;&amp;this.updateDisplay_()};&#xD;	Blockly.Scrollbar.prototype.updateDisplay_=function(){this.containerVisible_&amp;&amp;this.isVisible()?this.outerSvg_.setAttribute("display","block"):this.outerSvg_.setAttribute("display","none")};&#xD;	Blockly.Scrollbar.prototype.onMouseDownBar_=function(a){this.workspace_.markFocused();Blockly.Touch.clearTouchIdentifier();this.cleanUp_();if(Blockly.utils.isRightButton(a))a.stopPropagation();else{var b=Blockly.utils.mouseToSvg(a,this.workspace_.getParentSvg(),this.workspace_.getInverseScreenCTM()),b=this.horizontal_?b.x:b.y,c=Blockly.utils.getInjectionDivXY_(this.svgHandle_),c=this.horizontal_?c.x:c.y,d=this.handlePosition_,e=.95*this.handleLength_;b&lt;=c?d-=e:b&gt;=c+this.handleLength_&amp;&amp;(d+=e);Blockly.WidgetDiv.hide(!0);&#xD;	Blockly.DropDownDiv.hideWithoutAnimation();this.setHandlePosition(this.constrainHandle_(d));this.onScroll_();a.stopPropagation();a.preventDefault()}};&#xD;	Blockly.Scrollbar.prototype.onMouseDownHandle_=function(a){this.workspace_.markFocused();this.cleanUp_();Blockly.utils.isRightButton(a)?a.stopPropagation():(this.startDragHandle=this.handlePosition_,this.workspace_.setupDragSurface(),this.startDragMouse=this.horizontal_?a.clientX:a.clientY,Blockly.Scrollbar.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,this.onMouseUpHandle_),Blockly.Scrollbar.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.onMouseMoveHandle_),&#xD;	Blockly.WidgetDiv.hide(!0),Blockly.DropDownDiv.hideWithoutAnimation(),a.stopPropagation(),a.preventDefault())};Blockly.Scrollbar.prototype.onMouseMoveHandle_=function(a){this.setHandlePosition(this.constrainHandle_(this.startDragHandle+((this.horizontal_?a.clientX:a.clientY)-this.startDragMouse)));this.onScroll_()};Blockly.Scrollbar.prototype.onMouseUpHandle_=function(){this.workspace_.resetDragSurface();Blockly.Touch.clearTouchIdentifier();this.cleanUp_()};&#xD;	Blockly.Scrollbar.prototype.cleanUp_=function(){Blockly.hideChaff(!0);Blockly.Scrollbar.onMouseUpWrapper_&amp;&amp;(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseUpWrapper_),Blockly.Scrollbar.onMouseUpWrapper_=null);Blockly.Scrollbar.onMouseMoveWrapper_&amp;&amp;(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseMoveWrapper_),Blockly.Scrollbar.onMouseMoveWrapper_=null)};&#xD;	Blockly.Scrollbar.prototype.constrainHandle_=function(a){return a=0&gt;=a||isNaN(a)||this.scrollViewSize_&lt;this.handleLength_?0:Math.min(a,this.scrollViewSize_-this.handleLength_)};Blockly.Scrollbar.prototype.onScroll_=function(){var a=this.handlePosition_/this.scrollViewSize_;isNaN(a)&amp;&amp;(a=0);var b={};this.horizontal_?b.x=a:b.y=a;this.workspace_.setMetrics(b)};Blockly.Scrollbar.prototype.set=function(a){this.setHandlePosition(this.constrainHandle_(a*this.ratio_));this.onScroll_()};&#xD;	Blockly.Scrollbar.prototype.setOrigin=function(a,b){if(a!=this.origin_.x||b!=this.origin_.y)this.origin_=new goog.math.Coordinate(a,b),this.originHasChanged_=!0};Blockly.Trashcan=function(a){this.workspace_=a};Blockly.Trashcan.prototype.WIDTH_=47;Blockly.Trashcan.prototype.BODY_HEIGHT_=44;Blockly.Trashcan.prototype.LID_HEIGHT_=16;Blockly.Trashcan.prototype.MARGIN_BOTTOM_=20;Blockly.Trashcan.prototype.MARGIN_SIDE_=20;Blockly.Trashcan.prototype.MARGIN_HOTSPOT_=10;Blockly.Trashcan.prototype.SPRITE_LEFT_=0;Blockly.Trashcan.prototype.SPRITE_TOP_=32;Blockly.Trashcan.prototype.isOpen=!1;Blockly.Trashcan.prototype.svgGroup_=null;&#xD;	Blockly.Trashcan.prototype.svgLid_=null;Blockly.Trashcan.prototype.lidTask_=0;Blockly.Trashcan.prototype.lidOpen_=0;Blockly.Trashcan.prototype.left_=0;Blockly.Trashcan.prototype.top_=0;&#xD;	Blockly.Trashcan.prototype.createDom=function(){this.svgGroup_=Blockly.utils.createSvgElement("g",{"class":"blocklyTrash"},null);var a=String(Math.random()).substring(2),b=Blockly.utils.createSvgElement("clipPath",{id:"blocklyTrashBodyClipPath"+a},this.svgGroup_);Blockly.utils.createSvgElement("rect",{width:this.WIDTH_,height:this.BODY_HEIGHT_,y:this.LID_HEIGHT_},b);Blockly.utils.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height,y:-this.SPRITE_TOP_,&#xD;	"clip-path":"url(#blocklyTrashBodyClipPath"+a+")"},this.svgGroup_).setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);b=Blockly.utils.createSvgElement("clipPath",{id:"blocklyTrashLidClipPath"+a},this.svgGroup_);Blockly.utils.createSvgElement("rect",{width:this.WIDTH_,height:this.LID_HEIGHT_},b);this.svgLid_=Blockly.utils.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height,y:-this.SPRITE_TOP_,&#xD;	"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup_);this.svgLid_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.click);this.animateLid_();return this.svgGroup_};Blockly.Trashcan.prototype.init=function(a){this.bottom_=this.MARGIN_BOTTOM_+a;this.setOpen_(!1);return this.bottom_+this.BODY_HEIGHT_+this.LID_HEIGHT_};&#xD;	Blockly.Trashcan.prototype.dispose=function(){this.svgGroup_&amp;&amp;(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.workspace_=this.svgLid_=null;clearTimeout(this.lidTask_)};&#xD;	Blockly.Trashcan.prototype.position=function(){var a=this.workspace_.getMetrics();a&amp;&amp;(this.workspace_.RTL?(this.left_=this.MARGIN_SIDE_+Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&amp;&amp;(this.left_+=a.flyoutWidth,this.workspace_.toolbox_&amp;&amp;(this.left_+=a.absoluteLeft))):(this.left_=a.viewWidth+a.absoluteLeft-this.WIDTH_-this.MARGIN_SIDE_-Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(this.left_-=a.flyoutWidth)),this.top_=a.viewHeight+&#xD;	a.absoluteTop-(this.BODY_HEIGHT_+this.LID_HEIGHT_)-this.bottom_,a.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(this.top_-=a.flyoutHeight),this.svgGroup_.setAttribute("transform","translate("+this.left_+","+this.top_+")"))};&#xD;	Blockly.Trashcan.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect();return new goog.math.Rect(a.left+this.SPRITE_LEFT_-this.MARGIN_HOTSPOT_,a.top+this.SPRITE_TOP_-this.MARGIN_HOTSPOT_,this.WIDTH_+2*this.MARGIN_HOTSPOT_,this.LID_HEIGHT_+this.BODY_HEIGHT_+2*this.MARGIN_HOTSPOT_)};Blockly.Trashcan.prototype.setOpen_=function(a){this.isOpen!=a&amp;&amp;(clearTimeout(this.lidTask_),this.isOpen=a,this.animateLid_())};&#xD;	Blockly.Trashcan.prototype.animateLid_=function(){this.lidOpen_+=this.isOpen?.2:-.2;this.lidOpen_=goog.math.clamp(this.lidOpen_,0,1);var a=45*this.lidOpen_;this.svgLid_.setAttribute("transform","rotate("+(this.workspace_.RTL?-a:a)+","+(this.workspace_.RTL?4:this.WIDTH_-4)+","+(this.LID_HEIGHT_-2)+")");a=goog.math.lerp(.4,.8,this.lidOpen_);this.svgGroup_.style.opacity=a;0&lt;this.lidOpen_&amp;&amp;1&gt;this.lidOpen_&amp;&amp;(this.lidTask_=setTimeout(this.animateLid_.bind(this),20))};Blockly.Trashcan.prototype.close=function(){this.setOpen_(!1)};&#xD;	Blockly.Trashcan.prototype.click=function(){var a=this.workspace_.startScrollX-this.workspace_.scrollX,b=this.workspace_.startScrollY-this.workspace_.scrollY;Math.sqrt(a*a+b*b)&gt;Blockly.DRAG_RADIUS||console.log("TODO: Inspect trash.")};Blockly.utils={};Blockly.utils.removeAttribute=function(a,b){goog.userAgent.IE&amp;&amp;goog.userAgent.isVersion("10.0")?a.setAttribute(b,null):a.removeAttribute(b)};Blockly.cache3dSupported_=null;Blockly.utils.addClass=function(a,b){var c=a.getAttribute("class")||"";if(-1!=(" "+c+" ").indexOf(" "+b+" "))return!1;c&amp;&amp;(c+=" ");a.setAttribute("class",c+b);return!0};&#xD;	Blockly.utils.removeClass=function(a,b){var c=a.getAttribute("class");if(-1==(" "+c+" ").indexOf(" "+b+" "))return!1;for(var c=c.split(/\s+/),d=0;d&lt;c.length;d++)c[d]&amp;&amp;c[d]!=b||(c.splice(d,1),d--);c.length?a.setAttribute("class",c.join(" ")):Blockly.utils.removeAttribute(a,"class");return!0};Blockly.utils.hasClass=function(a,b){return-1!=(" "+a.getAttribute("class")+" ").indexOf(" "+b+" ")};Blockly.utils.noEvent=function(a){a.preventDefault();a.stopPropagation()};&#xD;	Blockly.utils.isTargetInput=function(a){return"textarea"==a.target.type||"text"==a.target.type||"number"==a.target.type||"email"==a.target.type||"password"==a.target.type||"search"==a.target.type||"tel"==a.target.type||"url"==a.target.type||a.target.isContentEditable};&#xD;	Blockly.utils.getRelativeXY=function(a){var b=new goog.math.Coordinate(0,0),c=a.getAttribute("x");c&amp;&amp;(b.x=parseInt(c,10));if(c=a.getAttribute("y"))b.y=parseInt(c,10);if(c=(c=a.getAttribute("transform"))&amp;&amp;c.match(Blockly.utils.getRelativeXY.XY_REGEX_))b.x+=parseFloat(c[1]),c[3]&amp;&amp;(b.y+=parseFloat(c[3]));(a=a.getAttribute("style"))&amp;&amp;-1&lt;a.indexOf("translate")&amp;&amp;((c=a.match(Blockly.utils.getRelativeXY.XY_2D_REGEX_))||(c=a.match(Blockly.utils.getRelativeXY.XY_3D_REGEX_)),c&amp;&amp;(b.x+=parseFloat(c[1]),c[3]&amp;&amp;&#xD;	(b.y+=parseFloat(c[3]))));return b};Blockly.utils.getInjectionDivXY_=function(a){for(var b,c=0,d=0;a;){var e=Blockly.utils.getRelativeXY(a);b=Blockly.utils.getScale_(a);c=c*b+e.x;d=d*b+e.y;if(-1!=(" "+(a.getAttribute("class")||"")+" ").indexOf(" injectionDiv "))break;a=a.parentNode}return new goog.math.Coordinate(c,d)};Blockly.utils.getScale_=function(a){var b=1;(a=a.getAttribute("transform"))&amp;&amp;(a=a.match(Blockly.utils.getScale_.REGEXP_))&amp;&amp;a[0]&amp;&amp;(b=parseFloat(a[0]));return b};&#xD;	Blockly.utils.getRelativeXY.XY_REGEX_=/translate\(\s*([-+\d.e]+)([ ,]\s*([-+\d.e]+)\s*\))?/;Blockly.utils.getScale_REGEXP_=/scale\(\s*([-+\d.e]+)\s*\)/;Blockly.utils.getRelativeXY.XY_3D_REGEX_=/transform:\s*translate3d\(\s*([-+\d.e]+)px([ ,]\s*([-+\d.e]+)\s*)px([ ,]\s*([-+\d.e]+)\s*)px\)?/;Blockly.utils.getRelativeXY.XY_2D_REGEX_=/transform:\s*translate\(\s*([-+\d.e]+)px([ ,]\s*([-+\d.e]+)\s*)px\)?/;&#xD;	Blockly.utils.createSvgElement=function(a,b,c){a=document.createElementNS(Blockly.SVG_NS,a);for(var d in b)a.setAttribute(d,b[d]);document.body.runtimeStyle&amp;&amp;(a.runtimeStyle=a.currentStyle=a.style);c&amp;&amp;c.appendChild(a);return a};Blockly.utils.isRightButton=function(a){return a.ctrlKey&amp;&amp;goog.userAgent.MAC?!0:2==a.button};Blockly.utils.mouseToSvg=function(a,b,c){var d=b.createSVGPoint();d.x=a.clientX;d.y=a.clientY;c||(c=b.getScreenCTM().inverse());return d.matrixTransform(c)};&#xD;	Blockly.utils.shortestStringLength=function(a){return a.length?a.reduce(function(a,c){return a.length&lt;c.length?a:c}).length:0};Blockly.utils.commonWordPrefix=function(a,b){if(!a.length)return 0;if(1==a.length)return a[0].length;for(var c=0,d=b||Blockly.utils.shortestStringLength(a),e=0;e&lt;d;e++){var f=a[0][e];for(var g=1;g&lt;a.length;g++)if(f!=a[g][e])return c;" "==f&amp;&amp;(c=e+1)}for(g=1;g&lt;a.length;g++)if((f=a[g][e])&amp;&amp;" "!=f)return c;return d};&#xD;	Blockly.utils.commonWordSuffix=function(a,b){if(!a.length)return 0;if(1==a.length)return a[0].length;for(var c=0,d=b||Blockly.utils.shortestStringLength(a),e=0;e&lt;d;e++){var f=a[0].substr(-e-1,1);for(var g=1;g&lt;a.length;g++)if(f!=a[g].substr(-e-1,1))return c;" "==f&amp;&amp;(c=e+1)}for(g=1;g&lt;a.length;g++)if((f=a[g].charAt(a[g].length-e-1))&amp;&amp;" "!=f)return c;return d};Blockly.utils.tokenizeInterpolation=function(a){return Blockly.utils.tokenizeInterpolation_(a,!0)};&#xD;	Blockly.utils.replaceMessageReferences=function(a){if(!goog.isString(a))return a;a=Blockly.utils.tokenizeInterpolation_(a,!1);return a.length?a[0]:""};Blockly.utils.checkMessageReferences=function(a){for(var b=!0,c=/%{BKY_([a-zA-Z][a-zA-Z0-9_]*)}/g,d=c.exec(a);null!=d;){var e=d[1];null==Blockly.Msg[e]&amp;&amp;(console.log("WARNING: No message string for %{BKY_"+e+"}."),b=!1);a=a.substring(d.index+e.length+1);d=c.exec(a)}return b};&#xD;	Blockly.utils.tokenizeInterpolation_=function(a,b){var c=[],d=a.split("");d.push("");for(var e=0,f=[],g=null,h=0;h&lt;d.length;h++){var k=d[h];0==e?"%"==k?((k=f.join(""))&amp;&amp;c.push(k),f.length=0,e=1):f.push(k):1==e?"%"==k?(f.push(k),e=0):b&amp;&amp;"0"&lt;=k&amp;&amp;"9"&gt;=k?(e=2,g=k,(k=f.join(""))&amp;&amp;c.push(k),f.length=0):"{"==k?e=3:(f.push("%",k),e=0):2==e?"0"&lt;=k&amp;&amp;"9"&gt;=k?g+=k:(c.push(parseInt(g,10)),h--,e=0):3==e&amp;&amp;(""==k?(f.splice(0,0,"%{"),h--,e=0):"}"!=k?f.push(k):(k=f.join(""),/[a-zA-Z][a-zA-Z0-9_]*/.test(k)?(e=k.toUpperCase(),&#xD;	(e=goog.string.startsWith(e,"BKY_")?e.substring(4):null)&amp;&amp;e in Blockly.Msg?(k=Blockly.Msg[e],goog.isString(k)?Array.prototype.push.apply(c,Blockly.utils.tokenizeInterpolation(k)):b?c.push(String(k)):c.push(k)):c.push("%{"+k+"}")):c.push("%{"+k+"}"),e=f.length=0))}(k=f.join(""))&amp;&amp;c.push(k);d=[];for(h=f.length=0;h&lt;c.length;++h)"string"==typeof c[h]?f.push(c[h]):((k=f.join(""))&amp;&amp;d.push(k),f.length=0,d.push(c[h]));(k=f.join(""))&amp;&amp;d.push(k);f.length=0;return d};&#xD;	Blockly.utils.genUid=function(){for(var a=Blockly.utils.genUid.soup_.length,b=[],c=0;20&gt;c;c++)b[c]=Blockly.utils.genUid.soup_.charAt(Math.random()*a);return b.join("")};Blockly.utils.genUid.soup_="!#$%()*+,-./:;=?@[]^_`{|}&#126;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";Blockly.utils.wrap=function(a,b){for(var c=a.split("\n"),d=0;d&lt;c.length;d++)c[d]=Blockly.utils.wrapLine_(c[d],b);return c.join("\n")};&#xD;	Blockly.utils.wrapLine_=function(a,b){if(a.length&lt;=b)return a;for(var c=a.trim().split(/\s+/),d=0;d&lt;c.length;d++)c[d].length&gt;b&amp;&amp;(b=c[d].length);var d=-Infinity,e=1;do{var f=d;var g=a;for(var h=[],k=c.length/e,l=1,d=0;d&lt;c.length-1;d++)l&lt;(d+1.5)/k?(l++,h[d]=!0):h[d]=!1;h=Blockly.utils.wrapMutate_(c,h,b);d=Blockly.utils.wrapScore_(c,h,b);a=Blockly.utils.wrapToText_(c,h);e++}while(d&gt;f);return g};&#xD;	Blockly.utils.wrapScore_=function(a,b,c){for(var d=[0],e=[],f=0;f&lt;a.length;f++)d[d.length-1]+=a[f].length,!0===b[f]?(d.push(0),e.push(a[f].charAt(a[f].length-1))):!1===b[f]&amp;&amp;d[d.length-1]++;a=Math.max.apply(Math,d);for(f=b=0;f&lt;d.length;f++)b-=2*Math.pow(Math.abs(c-d[f]),1.5),b-=Math.pow(a-d[f],1.5),-1!=".?!".indexOf(e[f])?b+=c/3:-1!=",;)]}".indexOf(e[f])&amp;&amp;(b+=c/4);1&lt;d.length&amp;&amp;d[d.length-1]&lt;=d[d.length-2]&amp;&amp;(b+=.5);return b};&#xD;	Blockly.utils.wrapMutate_=function(a,b,c){for(var d=Blockly.utils.wrapScore_(a,b,c),e,f=0;f&lt;b.length-1;f++)if(b[f]!=b[f+1]){var g=[].concat(b);g[f]=!g[f];g[f+1]=!g[f+1];var h=Blockly.utils.wrapScore_(a,g,c);h&gt;d&amp;&amp;(d=h,e=g)}return e?Blockly.utils.wrapMutate_(a,e,c):b};Blockly.utils.wrapToText_=function(a,b){for(var c=[],d=0;d&lt;a.length;d++)c.push(a[d]),void 0!==b[d]&amp;&amp;c.push(b[d]?"\n":" ");return c.join("")};&#xD;	Blockly.utils.measureText=function(a,b,c,d){var e=document.createElement("canvas").getContext("2d");e.font=c+" "+a+" "+b;return e.measureText(d).width};Blockly.utils.encodeEntities=function(a){return a.replace(/[\u00A0-\u9999&lt;&gt;\&amp;]/gim,function(a){return"&amp;#"+a.charCodeAt(0)+";"})};&#xD;	Blockly.utils.is3dSupported=function(){if(void 0!==Blockly.utils.is3dSupported.cached_)return Blockly.utils.is3dSupported.cached_;if(!goog.global.getComputedStyle)return!1;var a=document.createElement("p"),b="none",c={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.insertBefore(a,null);for(var d in c)if(void 0!==a.style[d]){a.style[d]="translate3d(1px,1px,1px)";b=goog.global.getComputedStyle(a);&#xD;	if(!b)return document.body.removeChild(a),!1;b=b.getPropertyValue(c[d])}document.body.removeChild(a);Blockly.utils.is3dSupported.cached_="none"!==b;return Blockly.utils.is3dSupported.cached_};Blockly.utils.insertAfter_=function(a,b){var c=b.nextSibling,d=b.parentNode;if(!d)throw"Reference node has no parent.";c?d.insertBefore(a,c):d.appendChild(a)};&#xD;	Blockly.utils.runAfterPageLoad=function(a){if(!document)throw Error("Blockly.utils.runAfterPageLoad() requires browser document.");if("complete"===document.readyState)a();else var b=setInterval(function(){"complete"===document.readyState&amp;&amp;(clearInterval(b),a())},10)};Blockly.utils.setCssTransform=function(a,b){a.style.transform=b;a.style["-webkit-transform"]=b};Blockly.WorkspaceDragSurfaceSvg=function(a){this.container_=a;this.createDom()};Blockly.WorkspaceDragSurfaceSvg.prototype.SVG_=null;Blockly.WorkspaceDragSurfaceSvg.prototype.dragGroup_=null;Blockly.WorkspaceDragSurfaceSvg.prototype.container_=null;&#xD;	Blockly.WorkspaceDragSurfaceSvg.prototype.createDom=function(){this.SVG_||(this.SVG_=Blockly.utils.createSvgElement("svg",{xmlns:Blockly.SVG_NS,"xmlns:html":Blockly.HTML_NS,"xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1","class":"blocklyWsDragSurface"},null),this.container_.appendChild(this.SVG_))};&#xD;	Blockly.WorkspaceDragSurfaceSvg.prototype.translateSurface=function(a,b){a=a.toFixed(0);b=b.toFixed(0);this.SVG_.style.display="block";Blockly.utils.setCssTransform(this.SVG_,"translate3d("+a+"px, "+b+"px, 0px)")};Blockly.WorkspaceDragSurfaceSvg.prototype.getSurfaceTranslation=function(){return Blockly.utils.getRelativeXY(this.SVG_)};&#xD;	Blockly.WorkspaceDragSurfaceSvg.prototype.clearAndHide=function(a){var b=this.SVG_.childNodes[0],c=this.SVG_.childNodes[1];if(!(b&amp;&amp;c&amp;&amp;Blockly.utils.hasClass(b,"blocklyBlockCanvas")&amp;&amp;Blockly.utils.hasClass(c,"blocklyBubbleCanvas")))throw"Couldn&apos;t clear and hide the drag surface.  A node was missing.";null!=this.previousSibling_?Blockly.utils.insertAfter_(b,this.previousSibling_):a.insertBefore(b,a.firstChild);Blockly.utils.insertAfter_(c,b);this.SVG_.style.display="none";goog.asserts.assert(0==this.SVG_.childNodes.length,&#xD;	"Drag surface was not cleared.");Blockly.utils.setCssTransform(this.SVG_,"");this.previousSibling_=null};&#xD;	Blockly.WorkspaceDragSurfaceSvg.prototype.setContentsAndShow=function(a,b,c,d,e,f){goog.asserts.assert(0==this.SVG_.childNodes.length,"Already dragging a block.");this.previousSibling_=c;a.setAttribute("transform","translate(0, 0) scale("+f+")");b.setAttribute("transform","translate(0, 0) scale("+f+")");this.SVG_.setAttribute("width",d);this.SVG_.setAttribute("height",e);this.SVG_.appendChild(a);this.SVG_.appendChild(b);this.SVG_.style.display="block"};Blockly.Xml={};Blockly.Xml.workspaceToDom=function(a,b){for(var c=goog.dom.createDom("xml"),d=a.getTopBlocks(!0),e=0,f;f=d[e];e++)c.appendChild(Blockly.Xml.blockToDomWithXY(f,b));return c};Blockly.Xml.blockToDomWithXY=function(a,b){var c;a.workspace.RTL&amp;&amp;(c=a.workspace.getWidth());var d=Blockly.Xml.blockToDom(a,b),e=a.getRelativeToSurfaceXY();d.setAttribute("x",Math.round(a.workspace.RTL?c-e.x:e.x));d.setAttribute("y",Math.round(e.y));return d};&#xD;	Blockly.Xml.blockToDom=function(a,b){var c,d=goog.dom.createDom(a.isShadow()?"shadow":"block");d.setAttribute("type",a.type);b||d.setAttribute("id",a.id);if(a.mutationToDom){var e=a.mutationToDom();e&amp;&amp;(e.hasChildNodes()||e.hasAttributes())&amp;&amp;d.appendChild(e)}for(var e=0,f;f=a.inputList[e];e++){var g=0;for(var h;h=f.fieldRow[g];g++)if(h.name&amp;&amp;h.EDITABLE){var k=goog.dom.createDom("field",null,h.getValue());k.setAttribute("name",h.name);d.appendChild(k)}}if(e=a.getCommentText())e=goog.dom.createDom("comment",&#xD;	null,e),"object"==typeof a.comment&amp;&amp;(e.setAttribute("pinned",a.comment.isVisible()),f=a.comment.getBubbleSize(),e.setAttribute("h",f.height),e.setAttribute("w",f.width)),d.appendChild(e);a.data&amp;&amp;(e=goog.dom.createDom("data",null,a.data),d.appendChild(e));for(e=0;f=a.inputList[e];e++)h=!0,f.type!=Blockly.DUMMY_INPUT&amp;&amp;(k=f.connection.targetBlock(),f.type==Blockly.INPUT_VALUE?c=goog.dom.createDom("value"):f.type==Blockly.NEXT_STATEMENT&amp;&amp;(c=goog.dom.createDom("statement")),g=f.connection.getShadowDom(),&#xD;	!g||k&amp;&amp;k.isShadow()||c.appendChild(Blockly.Xml.cloneShadow_(g)),k&amp;&amp;(c.appendChild(Blockly.Xml.blockToDom(k,b)),h=!1),c.setAttribute("name",f.name),h||d.appendChild(c));a.inputsInlineDefault!=a.inputsInline&amp;&amp;d.setAttribute("inline",a.inputsInline);a.isCollapsed()&amp;&amp;d.setAttribute("collapsed",!0);a.disabled&amp;&amp;d.setAttribute("disabled",!0);a.isDeletable()||a.isShadow()||d.setAttribute("deletable",!1);a.isMovable()||a.isShadow()||d.setAttribute("movable",!1);a.isEditable()||d.setAttribute("editable",!1);&#xD;	if(e=a.getNextBlock())c=goog.dom.createDom("next",null,Blockly.Xml.blockToDom(e,b)),d.appendChild(c);g=a.nextConnection&amp;&amp;a.nextConnection.getShadowDom();!g||e&amp;&amp;e.isShadow()||c.appendChild(Blockly.Xml.cloneShadow_(g));return d};&#xD;	Blockly.Xml.cloneShadow_=function(a){for(var b=a=a.cloneNode(!0),c;b;)if(b.firstChild)b=b.firstChild;else{for(;b&amp;&amp;!b.nextSibling;)c=b,b=b.parentNode,3==c.nodeType&amp;&amp;""==c.data.trim()&amp;&amp;b.firstChild!=c&amp;&amp;goog.dom.removeNode(c);b&amp;&amp;(c=b,b=b.nextSibling,3==c.nodeType&amp;&amp;""==c.data.trim()&amp;&amp;goog.dom.removeNode(c))}return a};Blockly.Xml.domToText=function(a){return(new XMLSerializer).serializeToString(a)};&#xD;	Blockly.Xml.domToPrettyText=function(a){a=Blockly.Xml.domToText(a).split("&lt;");for(var b="",c=1;c&lt;a.length;c++){var d=a[c];"/"==d[0]&amp;&amp;(b=b.substring(2));a[c]=b+"&lt;"+d;"/"!=d[0]&amp;&amp;"/&gt;"!=d.slice(-2)&amp;&amp;(b+="  ")}a=a.join("\n");a=a.replace(/(&lt;(\w+)\b[^&gt;]*&gt;[^\n]*)\n *&lt;\/\2&gt;/g,"$1&lt;/$2&gt;");return a.replace(/^\n/,"")};&#xD;	Blockly.Xml.textToDom=function(a){(a=(new DOMParser).parseFromString(a,"text/xml"))&amp;&amp;a.firstChild&amp;&amp;"xml"==a.firstChild.nodeName.toLowerCase()&amp;&amp;a.firstChild===a.lastChild||goog.asserts.fail("Blockly.Xml.textToDom did not obtain a valid XML tree.");return a.firstChild};&#xD;	Blockly.Xml.domToWorkspace=function(a,b){if(a instanceof Blockly.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to Blockly.Xml.domToWorkspace, swap the arguments.")}var d;b.RTL&amp;&amp;(d=b.getWidth());c=[];Blockly.Field.startCache();var e=a.childNodes.length,f=Blockly.Events.getGroup();f||Blockly.Events.setGroup(!0);b.setResizesEnabled&amp;&amp;b.setResizesEnabled(!1);for(var g=0;g&lt;e;g++){var h=a.childNodes[g],k=h.nodeName.toLowerCase();if("block"==k||"shadow"==k&amp;&amp;!Blockly.Events.recordUndo){k=Blockly.Xml.domToBlock(h,&#xD;	b);c.push(k.id);var l=parseInt(h.getAttribute("x"),10),h=parseInt(h.getAttribute("y"),10);isNaN(l)||isNaN(h)||k.moveBy(b.RTL?d-l:l,h)}else"shadow"==k&amp;&amp;goog.asserts.fail("Shadow block cannot be a top-level block.")}f||Blockly.Events.setGroup(!1);Blockly.Field.stopCache();b.updateVariableStore(!1);b.setResizesEnabled&amp;&amp;b.setResizesEnabled(!0);return c};&#xD;	Blockly.Xml.appendDomToWorkspace=function(a,b){if(b.hasOwnProperty("scale")){var c=Blockly.BlockSvg.TAB_WIDTH;try{Blockly.BlockSvg.TAB_WIDTH=0;var d=b.getBlocksBoundingBox()}finally{Blockly.BlockSvg.TAB_WIDTH=c}}c=Blockly.Xml.domToWorkspace(a,b);if(d&amp;&amp;d.height){var e=d.y+d.height;var f=d.x;var g=Infinity,h=Infinity;for(d=0;d&lt;c.length;d++){var k=b.getBlockById(c[d]).getRelativeToSurfaceXY();k.y&lt;h&amp;&amp;(h=k.y);k.x&lt;g&amp;&amp;(g=k.x)}e=e-h+Blockly.BlockSvg.SEP_SPACE_Y;f-=g;var l;b.RTL&amp;&amp;(l=b.getWidth());for(d=0;d&lt;&#xD;	c.length;d++)b.getBlockById(c[d]).moveBy(b.RTL?l-f:f,e)}return c};&#xD;	Blockly.Xml.domToBlock=function(a,b){if(a instanceof Blockly.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to Blockly.Xml.domToBlock, swap the arguments.")}Blockly.Events.disable();try{var d=Blockly.Xml.domToBlockHeadless_(a,b);if(b.rendered){d.setConnectionsHidden(!0);for(var e=d.getDescendants(),f=e.length-1;0&lt;=f;f--)e[f].initSvg();for(f=e.length-1;0&lt;=f;f--)e[f].render(!1);b.isFlyout?setTimeout(function(){d.workspace&amp;&amp;(goog.userAgent.IE||goog.userAgent.EDGE)&amp;&amp;d.render()},1):setTimeout(function(){d.workspace&amp;&amp;&#xD;	(d.setConnectionsHidden(!1),(goog.userAgent.IE||goog.userAgent.EDGE)&amp;&amp;d.render())},1);d.updateDisabled();b.resizeContents()}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Create(d));return d};&#xD;	Blockly.Xml.domToBlockHeadless_=function(a,b){var c=null,d=a.getAttribute("type");goog.asserts.assert(d,"Block type unspecified: %s",a.outerHTML);for(var e=a.getAttribute("id"),c=b.newBlock(d,e),f=null,e=0,g;g=a.childNodes[e];e++)if(3!=g.nodeType){for(var h=f=null,k=0,l;l=g.childNodes[k];k++)1==l.nodeType&amp;&amp;("block"==l.nodeName.toLowerCase()?f=l:"shadow"==l.nodeName.toLowerCase()&amp;&amp;(h=l));!f&amp;&amp;h&amp;&amp;(f=h);k=g.getAttribute("name");switch(g.nodeName.toLowerCase()){case "mutation":c.domToMutation&amp;&amp;(c.domToMutation(g),&#xD;	c.initSvg&amp;&amp;c.initSvg());break;case "comment":c.setCommentText(g.textContent);var m=g.getAttribute("pinned");m&amp;&amp;!c.isInFlyout&amp;&amp;setTimeout(function(){c.comment&amp;&amp;c.comment.setVisible&amp;&amp;c.comment.setVisible("true"==m)},1);f=parseInt(g.getAttribute("w"),10);g=parseInt(g.getAttribute("h"),10);!isNaN(f)&amp;&amp;!isNaN(g)&amp;&amp;c.comment&amp;&amp;c.comment.setVisible&amp;&amp;c.comment.setBubbleSize(f,g);break;case "data":c.data=g.textContent;break;case "title":case "field":f=c.getField(k);if(!f){console.warn("Ignoring non-existent field "+&#xD;	k+" in block "+d);break}f.setValue(g.textContent);break;case "value":case "statement":g=c.getInput(k);if(!g){console.warn("Ignoring non-existent input "+k+" in block "+d);break}h&amp;&amp;g.connection.setShadowDom(h);f&amp;&amp;(f=Blockly.Xml.domToBlockHeadless_(f,b),f.outputConnection?g.connection.connect(f.outputConnection):f.previousConnection?g.connection.connect(f.previousConnection):goog.asserts.fail("Child block does not have output or previous statement."));break;case "next":h&amp;&amp;c.nextConnection&amp;&amp;c.nextConnection.setShadowDom(h);&#xD;	f&amp;&amp;(goog.asserts.assert(c.nextConnection,"Next statement does not exist."),goog.asserts.assert(!c.nextConnection.isConnected(),"Next statement is already connected."),f=Blockly.Xml.domToBlockHeadless_(f,b),goog.asserts.assert(f.previousConnection,"Next block does not have previous statement."),c.nextConnection.connect(f.previousConnection));break;default:console.warn("Ignoring unknown tag: "+g.nodeName)}}(e=a.getAttribute("inline"))&amp;&amp;c.setInputsInline("true"==e);(e=a.getAttribute("disabled"))&amp;&amp;c.setDisabled("true"==&#xD;	e);(e=a.getAttribute("deletable"))&amp;&amp;c.setDeletable("true"==e);(e=a.getAttribute("movable"))&amp;&amp;c.setMovable("true"==e);(e=a.getAttribute("editable"))&amp;&amp;c.setEditable("true"==e);(e=a.getAttribute("collapsed"))&amp;&amp;c.setCollapsed("true"==e);if("shadow"==a.nodeName.toLowerCase()){d=c.getChildren();for(e=0;g=d[e];e++)goog.asserts.assert(g.isShadow(),"Shadow block not allowed non-shadow child.");goog.asserts.assert(0==c.getVars().length,"Shadow blocks cannot have variable fields.");c.setShadow(!0)}return c};&#xD;	Blockly.Xml.deleteNext=function(a){for(var b=0,c;c=a.childNodes[b];b++)if("next"==c.nodeName.toLowerCase()){a.removeChild(c);break}};goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.Xml||(goog.global.Blockly.Xml={});goog.global.Blockly.Xml.domToText=Blockly.Xml.domToText;goog.global.Blockly.Xml.domToWorkspace=Blockly.Xml.domToWorkspace;goog.global.Blockly.Xml.textToDom=Blockly.Xml.textToDom;goog.global.Blockly.Xml.workspaceToDom=Blockly.Xml.workspaceToDom;&#xD;	// Copyright 2015 Google Inc.  Apache License 2.0&#xD;	Blockly.ZoomControls=function(a){this.workspace_=a};Blockly.ZoomControls.prototype.ZOOM_IN_PATH_="zoom-in.svg";Blockly.ZoomControls.prototype.ZOOM_OUT_PATH_="zoom-out.svg";Blockly.ZoomControls.prototype.ZOOM_RESET_PATH_="zoom-reset.svg";Blockly.ZoomControls.prototype.WIDTH_=36;Blockly.ZoomControls.prototype.HEIGHT_=124;Blockly.ZoomControls.prototype.MARGIN_BETWEEN_=8;Blockly.ZoomControls.prototype.MARGIN_BOTTOM_=12;Blockly.ZoomControls.prototype.MARGIN_SIDE_=12;&#xD;	Blockly.ZoomControls.prototype.svgGroup_=null;Blockly.ZoomControls.prototype.left_=0;Blockly.ZoomControls.prototype.top_=0;&#xD;	Blockly.ZoomControls.prototype.createDom=function(){var a=this.workspace_;this.svgGroup_=Blockly.utils.createSvgElement("g",{"class":"blocklyZoom"},null);var b=Blockly.utils.createSvgElement("image",{width:this.WIDTH_,height:this.WIDTH_,y:0},this.svgGroup_);b.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.options.pathToMedia+this.ZOOM_IN_PATH_);var c=Blockly.utils.createSvgElement("image",{width:this.WIDTH_,height:this.WIDTH_,y:1*this.WIDTH_+1*this.MARGIN_BETWEEN_},this.svgGroup_);c.setAttributeNS("http://www.w3.org/1999/xlink",&#xD;	"xlink:href",a.options.pathToMedia+this.ZOOM_OUT_PATH_);var d=Blockly.utils.createSvgElement("image",{width:this.WIDTH_,height:this.WIDTH_,y:2*this.WIDTH_+2*this.MARGIN_BETWEEN_},this.svgGroup_);d.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a.options.pathToMedia+this.ZOOM_RESET_PATH_);Blockly.bindEventWithChecks_(d,"mousedown",null,function(b){a.markFocused();a.setScale(a.options.zoomOptions.startScale);a.scrollCenter();Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});&#xD;	Blockly.bindEventWithChecks_(b,"mousedown",null,function(b){a.markFocused();a.zoomCenter(1);Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});Blockly.bindEventWithChecks_(c,"mousedown",null,function(b){a.markFocused();a.zoomCenter(-1);Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()});return this.svgGroup_};Blockly.ZoomControls.prototype.init=function(a){this.bottom_=this.MARGIN_BOTTOM_+a;return this.bottom_+this.HEIGHT_};&#xD;	Blockly.ZoomControls.prototype.dispose=function(){this.svgGroup_&amp;&amp;(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.workspace_=null};&#xD;	Blockly.ZoomControls.prototype.position=function(){var a=this.workspace_.getMetrics();a&amp;&amp;(this.workspace_.RTL?(this.left_=this.MARGIN_SIDE_+Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&amp;&amp;(this.left_+=a.flyoutWidth,this.workspace_.toolbox_&amp;&amp;(this.left_+=a.absoluteLeft))):(this.left_=a.viewWidth+a.absoluteLeft-this.WIDTH_-this.MARGIN_SIDE_-Blockly.Scrollbar.scrollbarThickness,a.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(this.left_-=a.flyoutWidth)),this.top_=a.viewHeight+&#xD;	a.absoluteTop-this.HEIGHT_-this.bottom_,a.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(this.top_-=a.flyoutHeight),this.svgGroup_.setAttribute("transform","translate("+this.left_+","+this.top_+")"))};&#xD;	// Copyright 2014 Google Inc.  Apache License 2.0&#xD;	Blockly.WorkspaceSvg=function(a,b,c){Blockly.WorkspaceSvg.superClass_.constructor.call(this,a);this.getMetrics=a.getMetrics||Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_;this.setMetrics=a.setMetrics||Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_;Blockly.ConnectionDB.init(this);b&amp;&amp;(this.blockDragSurface_=b);c&amp;&amp;(this.workspaceDragSurface_=c);this.useWorkspaceDragSurface_=this.workspaceDragSurface_&amp;&amp;Blockly.utils.is3dSupported();this.SOUNDS_=Object.create(null);this.highlightedBlocks_=[];this.registerToolboxCategoryCallback(Blockly.VARIABLE_CATEGORY_NAME,&#xD;	Blockly.Variables.flyoutCategory);this.registerToolboxCategoryCallback(Blockly.PROCEDURE_CATEGORY_NAME,Blockly.Procedures.flyoutCategory)};goog.inherits(Blockly.WorkspaceSvg,Blockly.Workspace);Blockly.WorkspaceSvg.prototype.resizeHandlerWrapper_=null;Blockly.WorkspaceSvg.prototype.rendered=!0;Blockly.WorkspaceSvg.prototype.isFlyout=!1;Blockly.WorkspaceSvg.prototype.isMutator=!1;Blockly.WorkspaceSvg.prototype.resizesEnabled_=!0;Blockly.WorkspaceSvg.prototype.scrollX=0;&#xD;	Blockly.WorkspaceSvg.prototype.scrollY=0;Blockly.WorkspaceSvg.prototype.startScrollX=0;Blockly.WorkspaceSvg.prototype.startScrollY=0;Blockly.WorkspaceSvg.prototype.dragDeltaXY_=null;Blockly.WorkspaceSvg.prototype.scale=1;Blockly.WorkspaceSvg.prototype.trashcan=null;Blockly.WorkspaceSvg.prototype.scrollbar=null;Blockly.WorkspaceSvg.prototype.currentGesture_=null;Blockly.WorkspaceSvg.prototype.blockDragSurface_=null;Blockly.WorkspaceSvg.prototype.workspaceDragSurface_=null;&#xD;	Blockly.WorkspaceSvg.prototype.useWorkspaceDragSurface_=!1;Blockly.WorkspaceSvg.prototype.isDragSurfaceActive_=!1;Blockly.WorkspaceSvg.prototype.inverseScreenCTM_=null;Blockly.WorkspaceSvg.prototype.getInverseScreenCTM=function(){return this.inverseScreenCTM_};Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM=function(){this.inverseScreenCTM_=this.getParentSvg().getScreenCTM().inverse()};Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper=function(a){this.resizeHandlerWrapper_=a};&#xD;	Blockly.WorkspaceSvg.prototype.lastRecordedPageScroll_=null;Blockly.WorkspaceSvg.prototype.flyoutButtonCallbacks_={};Blockly.WorkspaceSvg.prototype.toolboxCategoryCallbacks_={};Blockly.WorkspaceSvg.prototype.inverseScreenCTM_=null;Blockly.WorkspaceSvg.prototype.getInverseScreenCTM=function(){return this.inverseScreenCTM_};Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM=function(){var a=this.getParentSvg().getScreenCTM();a&amp;&amp;(this.inverseScreenCTM_=a.inverse())};&#xD;	Blockly.WorkspaceSvg.prototype.getSvgXY=function(a){var b=0,c=0,d=1;if(goog.dom.contains(this.getCanvas(),a)||goog.dom.contains(this.getBubbleCanvas(),a))d=this.scale;do{var e=Blockly.utils.getRelativeXY(a);if(a==this.getCanvas()||a==this.getBubbleCanvas())d=1;b+=e.x*d;c+=e.y*d;a=a.parentNode}while(a&amp;&amp;a!=this.getParentSvg());return new goog.math.Coordinate(b,c)};Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper=function(a){this.resizeHandlerWrapper_=a};&#xD;	Blockly.WorkspaceSvg.prototype.createDom=function(a){this.svgGroup_=Blockly.utils.createSvgElement("g",{"class":"blocklyWorkspace"},null);a&amp;&amp;(this.svgBackground_=Blockly.utils.createSvgElement("rect",{height:"100%",width:"100%","class":a},this.svgGroup_),"blocklyMainBackground"==a&amp;&amp;(this.svgBackground_.style.fill="url(#"+this.options.gridPattern.id+")"));this.svgBlockCanvas_=Blockly.utils.createSvgElement("g",{"class":"blocklyBlockCanvas"},this.svgGroup_,this);this.svgBubbleCanvas_=Blockly.utils.createSvgElement("g",&#xD;	{"class":"blocklyBubbleCanvas"},this.svgGroup_,this);a=Blockly.Scrollbar.scrollbarThickness;this.options.hasTrashcan&amp;&amp;(a=this.addTrashcan_(a));this.options.zoomOptions&amp;&amp;this.options.zoomOptions.controls&amp;&amp;this.addZoomControls_(a);this.isFlyout||(Blockly.bindEventWithChecks_(this.svgGroup_,"mousedown",this,this.onMouseDown_),this.options.zoomOptions&amp;&amp;this.options.zoomOptions.wheel&amp;&amp;Blockly.bindEventWithChecks_(this.svgGroup_,"wheel",this,this.onMouseWheel_));this.options.hasCategories&amp;&amp;(this.toolbox_=&#xD;	new Blockly.Toolbox(this));this.updateGridPattern_();this.updateStackGlowScale_();this.recordDeleteAreas();return this.svgGroup_};&#xD;	Blockly.WorkspaceSvg.prototype.dispose=function(){this.rendered=!1;this.currentGesture_&amp;&amp;this.currentGesture_.cancel();Blockly.WorkspaceSvg.superClass_.dispose.call(this);this.svgGroup_&amp;&amp;(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.svgBubbleCanvas_=this.svgBlockCanvas_=null;this.toolbox_&amp;&amp;(this.toolbox_.dispose(),this.toolbox_=null);this.flyout_&amp;&amp;(this.flyout_.dispose(),this.flyout_=null);this.trashcan&amp;&amp;(this.trashcan.dispose(),this.trashcan=null);this.scrollbar&amp;&amp;(this.scrollbar.dispose(),&#xD;	this.scrollbar=null);this.zoomControls_&amp;&amp;(this.zoomControls_.dispose(),this.zoomControls_=null);this.toolboxCategoryCallbacks_&amp;&amp;(this.toolboxCategoryCallbacks_=null);this.flyoutButtonCallbacks_&amp;&amp;(this.flyoutButtonCallbacks_=null);this.options.parentWorkspace||goog.dom.removeNode(this.getParentSvg().parentNode);this.resizeHandlerWrapper_&amp;&amp;(Blockly.unbindEvent_(this.resizeHandlerWrapper_),this.resizeHandlerWrapper_=null)};&#xD;	Blockly.WorkspaceSvg.prototype.newBlock=function(a,b){return new Blockly.BlockSvg(this,a,b)};Blockly.WorkspaceSvg.prototype.addTrashcan_=function(a){this.trashcan=new Blockly.Trashcan(this);var b=this.trashcan.createDom();this.svgGroup_.insertBefore(b,this.svgBlockCanvas_);return this.trashcan.init(a)};Blockly.WorkspaceSvg.prototype.addZoomControls_=function(a){this.zoomControls_=new Blockly.ZoomControls(this);var b=this.zoomControls_.createDom();this.svgGroup_.appendChild(b);return this.zoomControls_.init(a)};&#xD;	Blockly.WorkspaceSvg.prototype.addFlyout_=function(a){var b={disabledPatternId:this.options.disabledPatternId,parentWorkspace:this,RTL:this.RTL,oneBasedIndex:this.options.oneBasedIndex,horizontalLayout:this.horizontalLayout,toolboxPosition:this.options.toolboxPosition};this.flyout_=this.horizontalLayout?new Blockly.HorizontalFlyout(b):new Blockly.VerticalFlyout(b);this.flyout_.autoClose=!1;return this.flyout_.createDom(a)};&#xD;	Blockly.WorkspaceSvg.prototype.getFlyout=function(){return this.flyout_?this.flyout_:this.toolbox_?this.toolbox_.flyout_:null};Blockly.WorkspaceSvg.prototype.updateScreenCalculations_=function(){this.updateInverseScreenCTM();this.recordDeleteAreas()};Blockly.WorkspaceSvg.prototype.resizeContents=function(){this.resizesEnabled_&amp;&amp;this.rendered&amp;&amp;(this.scrollbar&amp;&amp;this.scrollbar.resize(),this.updateInverseScreenCTM())};&#xD;	Blockly.WorkspaceSvg.prototype.resize=function(){this.toolbox_&amp;&amp;this.toolbox_.position();this.flyout_&amp;&amp;this.flyout_.position();this.trashcan&amp;&amp;this.trashcan.position();this.zoomControls_&amp;&amp;this.zoomControls_.position();this.scrollbar&amp;&amp;this.scrollbar.resize();this.updateScreenCalculations_()};Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled=function(){var a=goog.dom.getDocumentScroll();goog.math.Coordinate.equals(this.lastRecordedPageScroll_,a)||(this.lastRecordedPageScroll_=a,this.updateScreenCalculations_())};&#xD;	Blockly.WorkspaceSvg.prototype.getCanvas=function(){return this.svgBlockCanvas_};Blockly.WorkspaceSvg.prototype.getBubbleCanvas=function(){return this.svgBubbleCanvas_};Blockly.WorkspaceSvg.prototype.getParentSvg=function(){if(this.cachedParentSvg_)return this.cachedParentSvg_;for(var a=this.svgGroup_;a;){if("svg"==a.tagName)return this.cachedParentSvg_=a;a=a.parentNode}return null};&#xD;	Blockly.WorkspaceSvg.prototype.translate=function(a,b){if(this.useWorkspaceDragSurface_&amp;&amp;this.isDragSurfaceActive_)this.workspaceDragSurface_.translateSurface(a,b);else{var c="translate("+a+","+b+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",c);this.svgBubbleCanvas_.setAttribute("transform",c)}this.blockDragSurface_&amp;&amp;this.blockDragSurface_.translateAndScaleGroup(a,b,this.scale)};&#xD;	Blockly.WorkspaceSvg.prototype.resetDragSurface=function(){if(this.useWorkspaceDragSurface_){this.isDragSurfaceActive_=!1;var a=this.workspaceDragSurface_.getSurfaceTranslation();this.workspaceDragSurface_.clearAndHide(this.svgGroup_);a="translate("+a.x+","+a.y+") scale("+this.scale+")";this.svgBlockCanvas_.setAttribute("transform",a);this.svgBubbleCanvas_.setAttribute("transform",a)}};&#xD;	Blockly.WorkspaceSvg.prototype.setupDragSurface=function(){if(this.useWorkspaceDragSurface_&amp;&amp;!this.isDragSurfaceActive_){this.isDragSurfaceActive_=!0;var a=this.svgBlockCanvas_.previousSibling,b=this.getParentSvg().getAttribute("width"),c=this.getParentSvg().getAttribute("height"),d=Blockly.utils.getRelativeXY(this.svgBlockCanvas_);this.workspaceDragSurface_.setContentsAndShow(this.svgBlockCanvas_,this.svgBubbleCanvas_,a,b,c,this.scale);this.workspaceDragSurface_.translateSurface(d.x,d.y)}};&#xD;	Blockly.WorkspaceSvg.prototype.getWidth=function(){var a=this.getMetrics();return a?a.viewWidth/this.scale:0};Blockly.WorkspaceSvg.prototype.setVisible=function(a){this.scrollbar&amp;&amp;this.scrollbar.setContainerVisible(a);this.getFlyout()&amp;&amp;this.getFlyout().setContainerVisible(a);this.getParentSvg().style.display=a?"block":"none";this.toolbox_&amp;&amp;(this.toolbox_.HtmlDiv.style.display=a?"block":"none");a?(this.render(),this.toolbox_&amp;&amp;this.toolbox_.position()):(Blockly.hideChaff(!0),Blockly.DropDownDiv.hideWithoutAnimation())};&#xD;	Blockly.WorkspaceSvg.prototype.render=function(){for(var a=this.getAllBlocks(),b=a.length-1;0&lt;=b;b--)a[b].render(!1)};Blockly.WorkspaceSvg.prototype.traceOn=function(){console.warn("Deprecated call to traceOn, delete this.")};&#xD;	Blockly.WorkspaceSvg.prototype.highlightBlock=function(a,b){if(void 0===b){for(var c=0,d;d=this.highlightedBlocks_[c];c++)d.setHighlighted(!1);this.highlightedBlocks_.length=0}if(d=a?this.getBlockById(a):null)(c=void 0===b||b)?-1==this.highlightedBlocks_.indexOf(d)&amp;&amp;this.highlightedBlocks_.push(d):goog.array.remove(this.highlightedBlocks_,d),d.setHighlighted(c)};&#xD;	Blockly.WorkspaceSvg.prototype.glowBlock=function(a,b){var c=null;if(a&amp;&amp;(c=this.getBlockById(a),!c))throw"Tried to glow block that does not exist.";c.setGlowBlock(b)};Blockly.WorkspaceSvg.prototype.glowStack=function(a,b){var c=null;if(a&amp;&amp;(c=this.getBlockById(a),!c))throw"Tried to glow stack on block that does not exist.";c.setGlowStack(b)};&#xD;	Blockly.WorkspaceSvg.prototype.reportValue=function(a,b){var c=this.getBlockById(a);if(!c)throw"Tried to report value on block that does not exist.";Blockly.DropDownDiv.hideWithoutAnimation();Blockly.DropDownDiv.clearContent();var d=Blockly.DropDownDiv.getContentDiv(),e=goog.dom.createElement("div");e.setAttribute("class","valueReportBox");e.innerHTML=Blockly.utils.encodeEntities(b);d.appendChild(e);Blockly.DropDownDiv.setColour(Blockly.Colours.valueReportBackground,Blockly.Colours.valueReportBorder);&#xD;	Blockly.DropDownDiv.showPositionedByBlock(this,c)};&#xD;	Blockly.WorkspaceSvg.prototype.paste=function(a){if(this.rendered){this.currentGesture_&amp;&amp;this.currentGesture_.cancel();Blockly.Events.disable();try{var b=Blockly.Xml.domToBlock(a,this);if(goog.userAgent.IE||goog.userAgent.EDGE)for(var c=b.getDescendants(),d=c.length-1;0&lt;=d;d--)c[d].render(!1);var e=parseInt(a.getAttribute("x"),10),f=parseInt(a.getAttribute("y"),10);if(!isNaN(e)&amp;&amp;!isNaN(f)){this.RTL&amp;&amp;(e=-e);do{var g=!1;for(var h=this.getAllBlocks(),d=0,k;k=h[d];d++){var l=k.getRelativeToSurfaceXY();&#xD;	if(1&gt;=Math.abs(e-l.x)&amp;&amp;1&gt;=Math.abs(f-l.y)){g=!0;break}}if(!g)for(var m=b.getConnections_(!1),d=0,n;n=m[d];d++)if(n.closest(Blockly.SNAP_RADIUS,new goog.math.Coordinate(e,f)).connection){g=!0;break}g&amp;&amp;(e=this.RTL?e-Blockly.SNAP_RADIUS:e+Blockly.SNAP_RADIUS,f+=2*Blockly.SNAP_RADIUS)}while(g);b.moveBy(e,f)}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&amp;&amp;!b.isShadow()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Create(b));b.select()}};&#xD;	Blockly.WorkspaceSvg.prototype.renameVariable=function(a,b){Blockly.WorkspaceSvg.superClass_.renameVariable.call(this,a,b);this.toolbox_&amp;&amp;this.toolbox_.flyout_&amp;&amp;!Blockly.Flyout.startFlyout_&amp;&amp;this.toolbox_.refreshSelection()};Blockly.WorkspaceSvg.prototype.createVariable=function(a){Blockly.WorkspaceSvg.superClass_.createVariable.call(this,a);this.toolbox_&amp;&amp;this.toolbox_.flyout_&amp;&amp;!this.currentGesture_&amp;&amp;this.toolbox_.refreshSelection()};&#xD;	Blockly.WorkspaceSvg.prototype.recordDeleteAreas=function(){this.deleteAreaTrash_=this.trashcan?this.trashcan.getClientRect():null;this.deleteAreaToolbox_=this.flyout_?this.flyout_.getClientRect():this.toolbox_?this.toolbox_.getClientRect():null};&#xD;	Blockly.WorkspaceSvg.prototype.isDeleteArea=function(a){a=new goog.math.Coordinate(a.clientX,a.clientY);return this.deleteAreaTrash_&amp;&amp;this.deleteAreaTrash_.contains(a)?Blockly.DELETE_AREA_TRASH:this.deleteAreaToolbox_&amp;&amp;this.deleteAreaToolbox_.contains(a)?Blockly.DELETE_AREA_TOOLBOX:Blockly.DELETE_AREA_NONE};Blockly.WorkspaceSvg.prototype.onMouseDown_=function(a){Blockly.DropDownDiv.hide();var b=this.getGesture(a);b&amp;&amp;b.handleWsStart(a,this)};&#xD;	Blockly.WorkspaceSvg.prototype.startDrag=function(a,b){var c=Blockly.utils.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());c.x/=this.scale;c.y/=this.scale;this.dragDeltaXY_=goog.math.Coordinate.difference(b,c)};Blockly.WorkspaceSvg.prototype.moveDrag=function(a){a=Blockly.utils.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());a.x/=this.scale;a.y/=this.scale;return goog.math.Coordinate.sum(this.dragDeltaXY_,a)};&#xD;	Blockly.WorkspaceSvg.prototype.isDragging=function(){return this.currentGesture_&amp;&amp;this.currentGesture_.isDragging()};Blockly.WorkspaceSvg.prototype.isDraggable=function(){return!!this.scrollbar};&#xD;	Blockly.WorkspaceSvg.prototype.onMouseWheel_=function(a){this.currentGesture_&amp;&amp;this.currentGesture_.cancel();if(a.ctrlKey){var b=-a.deltaY/50,c=Blockly.utils.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM());this.zoom(c.x,c.y,b)}else Blockly.WidgetDiv.hide(!0),Blockly.DropDownDiv.hideWithoutAnimation(),b=this.scrollX-a.deltaX,c=this.scrollY-a.deltaY,this.startDragMetrics=this.getMetrics(),this.scroll(b,c);a.preventDefault()};&#xD;	Blockly.WorkspaceSvg.prototype.getBlocksBoundingBox=function(){var a=this.getTopBlocks(!1);if(!a.length)return{x:0,y:0,width:0,height:0};for(var b=a[0].getBoundingRectangle(),c=1;c&lt;a.length;c++){var d=a[c].getBoundingRectangle();d.topLeft.x&lt;b.topLeft.x&amp;&amp;(b.topLeft.x=d.topLeft.x);d.bottomRight.x&gt;b.bottomRight.x&amp;&amp;(b.bottomRight.x=d.bottomRight.x);d.topLeft.y&lt;b.topLeft.y&amp;&amp;(b.topLeft.y=d.topLeft.y);d.bottomRight.y&gt;b.bottomRight.y&amp;&amp;(b.bottomRight.y=d.bottomRight.y)}return{x:b.topLeft.x,y:b.topLeft.y,width:b.bottomRight.x-&#xD;	b.topLeft.x,height:b.bottomRight.y-b.topLeft.y}};Blockly.WorkspaceSvg.prototype.cleanUp=function(){Blockly.Events.setGroup(!0);for(var a=this.getTopBlocks(!0),b=0,c=0,d;d=a[c];c++){var e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+Blockly.BlockSvg.MIN_BLOCK_Y}Blockly.Events.setGroup(!1);this.resizeContents()};&#xD;	Blockly.WorkspaceSvg.prototype.showContextMenu_=function(a){function b(a){if(a.isDeletable())p=p.concat(a.getDescendants());else{a=a.getChildren();for(var c=0;c&lt;a.length;c++)b(a[c])}}function c(){Blockly.Events.setGroup(f);var a=p.shift();a&amp;&amp;(a.workspace?(a.dispose(!1,!0),setTimeout(c,10)):c());Blockly.Events.setGroup(!1)}if(!this.options.readOnly&amp;&amp;!this.isFlyout){var d=[],e=this.getTopBlocks(!0),f=Blockly.utils.genUid(),g=this,h={};h.text=Blockly.Msg.UNDO;h.enabled=0&lt;this.undoStack_.length;h.callback=&#xD;	this.undo.bind(this,!1);d.push(h);h={};h.text=Blockly.Msg.REDO;h.enabled=0&lt;this.redoStack_.length;h.callback=this.undo.bind(this,!0);d.push(h);this.scrollbar&amp;&amp;(h={},h.text=Blockly.Msg.CLEAN_UP,h.enabled=1&lt;e.length,h.callback=this.cleanUp.bind(this),d.push(h));if(this.options.collapse){for(var k=h=!1,l=0;l&lt;e.length;l++)for(var m=e[l];m;)m.isCollapsed()?h=!0:k=!0,m=m.getNextBlock();var n=function(a){for(var b=0,c=0;c&lt;e.length;c++)for(var d=e[c];d;)setTimeout(d.setCollapsed.bind(d,a),b),d=d.getNextBlock(),&#xD;	b+=10},l={enabled:k};l.text=Blockly.Msg.COLLAPSE_ALL;l.callback=function(){n(!0)};d.push(l);h={enabled:h};h.text=Blockly.Msg.EXPAND_ALL;h.callback=function(){n(!1)};d.push(h)}for(var p=[],l=0;l&lt;e.length;l++)b(e[l]);for(l=h=0;l&lt;p.length;l++)p[l].isShadow()||h++;h={text:1==h?Blockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(h)),enabled:0&lt;h,callback:function(){g.currentGesture_&amp;&amp;g.currentGesture_.cancel();2&gt;p.length?c():Blockly.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1",&#xD;	p.length),function(a){a&amp;&amp;c()})}};d.push(h);Blockly.ContextMenu.show(a,d,this.RTL)}};Blockly.WorkspaceSvg.prototype.loadAudio_=function(a,b){if(a.length){try{var c=new window.Audio}catch(h){return}for(var d,e=0;e&lt;a.length;e++){var f=a[e],g=f.match(/\.(\w+)$/);if(g&amp;&amp;c.canPlayType("audio/"+g[1])){d=new window.Audio(f);break}}d&amp;&amp;d.play&amp;&amp;(this.SOUNDS_[b]=d)}};&#xD;	Blockly.WorkspaceSvg.prototype.preloadAudio_=function(){for(var a in this.SOUNDS_){var b=this.SOUNDS_[a];b.volume=.01;b.play();b.pause();if(goog.userAgent.IPAD||goog.userAgent.IPHONE)break}};&#xD;	Blockly.WorkspaceSvg.prototype.playAudio=function(a,b){var c=new Blockly.Events.Ui(null,"sound",null,a);c.workspaceId=this.id;Blockly.Events.fire(c);if(c=this.SOUNDS_[a]){var d=new Date;d-this.lastSound_&lt;Blockly.SOUND_LIMIT||(this.lastSound_=d,c=goog.userAgent.DOCUMENT_MODE&amp;&amp;9===goog.userAgent.DOCUMENT_MODE||goog.userAgent.IPAD||goog.userAgent.ANDROID?c:c.cloneNode(),c.volume=void 0===b?1:b,c.play())}else this.options.parentWorkspace&amp;&amp;this.options.parentWorkspace.playAudio(a,b)};&#xD;	Blockly.WorkspaceSvg.prototype.updateToolbox=function(a){if(a=Blockly.Options.parseToolboxTree(a)){if(!this.options.languageTree)throw"Existing toolbox is null.  Can&apos;t create new toolbox.";if(a.getElementsByTagName("category").length){if(!this.toolbox_)throw"Existing toolbox has no categories.  Can&apos;t change mode.";this.options.languageTree=a;this.toolbox_.populate_(a);this.toolbox_.position()}else{if(!this.flyout_)throw"Existing toolbox has categories.  Can&apos;t change mode.";this.options.languageTree=&#xD;	a;this.flyout_.show(a.childNodes)}}else if(this.options.languageTree)throw"Can&apos;t nullify an existing toolbox.";};Blockly.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():(Blockly.mainWorkspace=this,this.setBrowserFocus())};Blockly.WorkspaceSvg.prototype.setBrowserFocus=function(){document.activeElement&amp;&amp;document.activeElement.blur();try{this.getParentSvg().focus()}catch(a){try{this.getParentSvg().parentNode.setActive()}catch(b){this.getParentSvg().parentNode.focus()}}};&#xD;	Blockly.WorkspaceSvg.prototype.zoom=function(a,b,c){var d=this.options.zoomOptions.scaleSpeed,e=this.getMetrics(),f=this.getParentSvg().createSVGPoint();f.x=a;f.y=b;f=f.matrixTransform(this.getCanvas().getCTM().inverse());a=f.x;b=f.y;f=this.getCanvas();d=Math.pow(d,c);c=this.scale*d;c&gt;this.options.zoomOptions.maxScale?d=this.options.zoomOptions.maxScale/this.scale:c&lt;this.options.zoomOptions.minScale&amp;&amp;(d=this.options.zoomOptions.minScale/this.scale);this.scale!=c&amp;&amp;(this.scrollbar&amp;&amp;(a=f.getCTM().translate(a*&#xD;	(1-d),b*(1-d)).scale(d),this.scrollX=a.e-e.absoluteLeft,this.scrollY=a.f-e.absoluteTop),this.setScale(c),Blockly.WidgetDiv.hide(!0),Blockly.DropDownDiv.hideWithoutAnimation())};Blockly.WorkspaceSvg.prototype.zoomCenter=function(a){var b=this.getMetrics();this.zoom(b.viewWidth/2,b.viewHeight/2,a)};&#xD;	Blockly.WorkspaceSvg.prototype.zoomToFit=function(){var a=this.getMetrics(),b=this.getBlocksBoundingBox(),c=b.width,b=b.height;if(c){var d=a.viewWidth,e=a.viewHeight;this.flyout_&amp;&amp;(d-=this.flyout_.width_);this.scrollbar||(c+=a.contentLeft,b+=a.contentTop);this.setScale(Math.min(d/c,e/b));this.scrollCenter()}};&#xD;	Blockly.WorkspaceSvg.prototype.scrollCenter=function(){if(this.scrollbar){Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation();Blockly.hideChaff(!1);var a=this.getMetrics(),b=(a.contentWidth-a.viewWidth)/2;this.flyout_&amp;&amp;(b-=this.flyout_.width_/2);this.scrollbar.set(b,(a.contentHeight-a.viewHeight)/2)}};&#xD;	Blockly.WorkspaceSvg.prototype.setScale=function(a){this.options.zoomOptions.maxScale&amp;&amp;a&gt;this.options.zoomOptions.maxScale?a=this.options.zoomOptions.maxScale:this.options.zoomOptions.minScale&amp;&amp;a&lt;this.options.zoomOptions.minScale&amp;&amp;(a=this.options.zoomOptions.minScale);this.scale=a;this.updateStackGlowScale_();this.updateGridPattern_();Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation();this.scrollbar?this.scrollbar.resize():this.translate(this.scrollX,this.scrollY);Blockly.hideChaff(!1);&#xD;	this.flyout_&amp;&amp;this.flyout_.reflow()};Blockly.WorkspaceSvg.prototype.scroll=function(a,b){var c=this.startDragMetrics;a=Math.min(a,-c.contentLeft);b=Math.min(b,-c.contentTop);a=Math.max(a,c.viewWidth-c.contentLeft-c.contentWidth);b=Math.max(b,c.viewHeight-c.contentTop-c.contentHeight);Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation();this.scrollbar.set(-a-c.contentLeft,-b-c.contentTop)};&#xD;	Blockly.WorkspaceSvg.prototype.updateGridPattern_=function(){if(this.options.gridPattern){var a=this.options.gridOptions.spacing*this.scale||100;this.options.gridPattern.setAttribute("width",a);this.options.gridPattern.setAttribute("height",a);var a=Math.floor(this.options.gridOptions.spacing/2)+.5,b=a-this.options.gridOptions.length/2,c=a+this.options.gridOptions.length/2,d=this.options.gridPattern.firstChild,e=d&amp;&amp;d.nextSibling,a=a*this.scale,b=b*this.scale,c=c*this.scale;d&amp;&amp;(d.setAttribute("stroke-width",&#xD;	this.scale),d.setAttribute("x1",b),d.setAttribute("y1",a),d.setAttribute("x2",c),d.setAttribute("y2",a));e&amp;&amp;(e.setAttribute("stroke-width",this.scale),e.setAttribute("x1",a),e.setAttribute("y1",b),e.setAttribute("x2",a),e.setAttribute("y2",c))}};Blockly.WorkspaceSvg.prototype.updateStackGlowScale_=function(){this.options.stackGlowBlur&amp;&amp;this.options.stackGlowBlur.setAttribute("stdDeviation",Blockly.STACK_GLOW_RADIUS/this.scale)};&#xD;	Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_=function(){var a=Blockly.svgSize(this.getParentSvg());if(this.toolbox_)if(this.toolboxPosition==Blockly.TOOLBOX_AT_TOP||this.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM)a.height-=this.toolbox_.getHeight();else if(this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT||this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT)a.width-=this.toolbox_.getWidth();var b=Blockly.Flyout.prototype.CORNER_RADIUS-1;var c=a.width-b;var d=a.height-b;var e=this.getBlocksBoundingBox();&#xD;	var f=e.width*this.scale;var g=e.height*this.scale,h=e.x*this.scale,k=e.y*this.scale;this.scrollbar?(b=Math.min(h-c/2,h+f-c),f=Math.max(h+f+c/2,h+c),c=Math.min(k-d/2,k+g-d),d=Math.max(k+g+d/2,k+d)):(b=e.x,f=b+e.width,c=e.y,d=c+e.height);e=0;this.toolbox_&amp;&amp;this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT&amp;&amp;(e=this.toolbox_.getWidth());g=0;this.toolbox_&amp;&amp;this.toolboxPosition==Blockly.TOOLBOX_AT_TOP&amp;&amp;(g=this.toolbox_.getHeight());return{viewHeight:a.height,viewWidth:a.width,contentHeight:d-c,contentWidth:f-&#xD;	b,viewTop:-this.scrollY,viewLeft:-this.scrollX,contentTop:c,contentLeft:b,absoluteTop:g,absoluteLeft:e,toolboxWidth:this.toolbox_?this.toolbox_.getWidth():0,toolboxHeight:this.toolbox_?this.toolbox_.getHeight():0,flyoutWidth:this.flyout_?this.flyout_.getWidth():0,flyoutHeight:this.flyout_?this.flyout_.getHeight():0,toolboxPosition:this.toolboxPosition}};&#xD;	Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_=function(a){if(!this.scrollbar)throw"Attempt to set top level workspace scroll without scrollbars.";var b=this.getMetrics();goog.isNumber(a.x)&amp;&amp;(this.scrollX=-b.contentWidth*a.x-b.contentLeft);goog.isNumber(a.y)&amp;&amp;(this.scrollY=-b.contentHeight*a.y-b.contentTop);a=this.scrollX+b.absoluteLeft;b=this.scrollY+b.absoluteTop;this.translate(a,b);this.options.gridPattern&amp;&amp;(this.options.gridPattern.setAttribute("x",a),this.options.gridPattern.setAttribute("y",&#xD;	b),(goog.userAgent.IE||goog.userAgent.EDGE)&amp;&amp;this.updateGridPattern_())};Blockly.WorkspaceSvg.prototype.setResizesEnabled=function(a){var b=!this.resizesEnabled_&amp;&amp;a;this.resizesEnabled_=a;b&amp;&amp;this.resizeContents()};Blockly.WorkspaceSvg.prototype.clear=function(){this.setResizesEnabled(!1);Blockly.WorkspaceSvg.superClass_.clear.call(this);this.setResizesEnabled(!0)};&#xD;	Blockly.WorkspaceSvg.prototype.registerButtonCallback=function(a,b){goog.asserts.assert(goog.isFunction(b),"Button callbacks must be functions.");this.flyoutButtonCallbacks_[a]=b};Blockly.WorkspaceSvg.prototype.getButtonCallback=function(a){return(a=this.flyoutButtonCallbacks_[a])?a:null};Blockly.WorkspaceSvg.prototype.removeButtonCallback=function(a){this.flyoutButtonCallbacks_[a]=null};&#xD;	Blockly.WorkspaceSvg.prototype.registerToolboxCategoryCallback=function(a,b){goog.asserts.assert(goog.isFunction(b),"Toolbox category callbacks must be functions.");this.toolboxCategoryCallbacks_[a]=b};Blockly.WorkspaceSvg.prototype.getToolboxCategoryCallback=function(a){return(a=this.toolboxCategoryCallbacks_[a])?a:null};Blockly.WorkspaceSvg.prototype.removeToolboxCategoryCallback=function(a){this.toolboxCategoryCallbacks_[a]=null};&#xD;	Blockly.WorkspaceSvg.prototype.getGesture=function(a){var b="mousedown"==a.type||"touchstart"==a.type,c=this.currentGesture_;return c?b&amp;&amp;c.hasStarted()?(console.warn("tried to start the same gesture twice"),c.cancel(),null):c:b?this.currentGesture_=new Blockly.Gesture(a,this):null};Blockly.WorkspaceSvg.prototype.clearGesture=function(){this.currentGesture_=null};Blockly.WorkspaceSvg.prototype.cancelCurrentGesture=function(){this.currentGesture_&amp;&amp;this.currentGesture_.cancel()};&#xD;	Blockly.WorkspaceSvg.prototype.setVisible=Blockly.WorkspaceSvg.prototype.setVisible;Blockly.Mutator=function(a){Blockly.Mutator.superClass_.constructor.call(this,null);this.quarkNames_=a};goog.inherits(Blockly.Mutator,Blockly.Icon);Blockly.Mutator.prototype.workspaceWidth_=0;Blockly.Mutator.prototype.workspaceHeight_=0;&#xD;	Blockly.Mutator.prototype.drawIcon_=function(a){Blockly.utils.createSvgElement("rect",{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);Blockly.utils.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"},a);&#xD;	Blockly.utils.createSvgElement("circle",{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)};Blockly.Mutator.prototype.iconClick_=function(a){this.block_.isEditable()&amp;&amp;Blockly.Icon.prototype.iconClick_.call(this,a)};&#xD;	Blockly.Mutator.prototype.createEditor_=function(){this.svgDialog_=Blockly.utils.createSvgElement("svg",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);if(this.quarkNames_.length){var a=goog.dom.createDom("xml");for(var b=0,c;c=this.quarkNames_[b];b++)a.appendChild(goog.dom.createDom("block",{type:c}))}else a=null;a={languageTree:a,parentWorkspace:this.block_.workspace,pathToMedia:this.block_.workspace.options.pathToMedia,RTL:this.block_.RTL,toolboxPosition:this.block_.RTL?Blockly.TOOLBOX_AT_RIGHT:&#xD;	Blockly.TOOLBOX_AT_LEFT,horizontalLayout:!1,getMetrics:this.getFlyoutMetrics_.bind(this),setMetrics:null};this.workspace_=new Blockly.WorkspaceSvg(a,this.block_.workspace.dragSurface);this.workspace_.isMutator=!0;a=this.workspace_.addFlyout_("g");b=this.workspace_.createDom("blocklyMutatorBackground");b.insertBefore(a,this.workspace_.svgBlockCanvas_);this.svgDialog_.appendChild(b);return this.svgDialog_};&#xD;	Blockly.Mutator.prototype.updateEditable=function(){this.block_.isInFlyout||(this.block_.isEditable()?this.iconGroup_&amp;&amp;Blockly.utils.removeClass(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&amp;&amp;Blockly.utils.addClass(this.iconGroup_,"blocklyIconGroupReadonly")));Blockly.Icon.prototype.updateEditable.call(this)};&#xD;	Blockly.Mutator.prototype.resizeBubble_=function(){var a=2*Blockly.Bubble.BORDER_WIDTH,b=this.workspace_.getCanvas().getBBox();var c=this.block_.RTL?-b.x:b.width+b.x;b=b.height+3*a;if(this.workspace_.flyout_)var d=this.workspace_.flyout_.getMetrics_(),b=Math.max(b,d.contentHeight+20);c+=3*a;if(Math.abs(this.workspaceWidth_-c)&gt;a||Math.abs(this.workspaceHeight_-b)&gt;a)this.workspaceWidth_=c,this.workspaceHeight_=b,this.bubble_.setBubbleSize(c+a,b+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),&#xD;	this.svgDialog_.setAttribute("height",this.workspaceHeight_);this.block_.RTL&amp;&amp;(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};&#xD;	Blockly.Mutator.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"mutatorOpen",!a,a)),a){this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.svgPath_,this.iconXY_,null,null);if(a=this.workspace_.options.languageTree)this.workspace_.flyout_.init(this.workspace_),this.workspace_.flyout_.show(a.childNodes);this.rootBlock_=this.block_.decompose(this.workspace_);a=this.rootBlock_.getDescendants();var b=0;&#xD;	for(var c;c=a[b];b++)c.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);this.workspace_.flyout_?(b=2*this.workspace_.flyout_.CORNER_RADIUS,a=this.workspace_.flyout_.width_+b):a=b=16;this.block_.RTL&amp;&amp;(a=-a);this.rootBlock_.moveBy(a,b);if(this.block_.saveConnections){var d=this;this.block_.saveConnections(this.rootBlock_);this.sourceListener_=function(){d.block_.saveConnections(d.rootBlock_)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_();&#xD;	this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));this.updateColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&amp;&amp;(this.block_.workspace.removeChangeListener(this.sourceListener_),this.sourceListener_=null)};&#xD;	Blockly.Mutator.prototype.workspaceChanged_=function(){var a;if(!this.workspace_.isDragging())for(var b=this.workspace_.getTopBlocks(!1),c=0;a=b[c];c++){var d=a.getRelativeToSurfaceXY(),e=a.getHeightWidth();20&gt;d.y+e.height&amp;&amp;a.moveBy(0,20-e.height-d.y)}if(this.rootBlock_.workspace==this.workspace_){Blockly.Events.setGroup(!0);a=this.block_;b=(b=a.mutationToDom())&amp;&amp;Blockly.Xml.domToText(b);c=a.rendered;a.rendered=!1;a.compose(this.rootBlock_);a.rendered=c;a.initSvg();c=(c=a.mutationToDom())&amp;&amp;Blockly.Xml.domToText(c);&#xD;	if(b!=c){Blockly.Events.fire(new Blockly.Events.Change(a,"mutation",null,b,c));var f=Blockly.Events.getGroup();setTimeout(function(){Blockly.Events.setGroup(f);a.bumpNeighbours_();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY)}a.rendered&amp;&amp;a.render();this.workspace_.isDragging()||this.resizeBubble_();Blockly.Events.setGroup(!1)}};Blockly.Mutator.prototype.getFlyoutMetrics_=function(){return{viewHeight:this.workspaceHeight_,viewWidth:this.workspaceWidth_,absoluteTop:0,absoluteLeft:0}};&#xD;	Blockly.Mutator.prototype.dispose=function(){this.block_.mutator=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Mutator.reconnect=function(a,b,c){if(!a||!a.getSourceBlock().workspace)return!1;c=b.getInput(c).connection;var d=a.targetBlock();return d&amp;&amp;d!=b||c.targetConnection==a?!1:(c.isConnected()&amp;&amp;c.disconnect(),c.connect(a),!0)};goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.Mutator||(goog.global.Blockly.Mutator={});goog.global.Blockly.Mutator.reconnect=Blockly.Mutator.reconnect;Blockly.Warning=function(a){Blockly.Warning.superClass_.constructor.call(this,a);this.createIcon();this.text_={}};goog.inherits(Blockly.Warning,Blockly.Icon);Blockly.Warning.prototype.collapseHidden=!1;&#xD;	Blockly.Warning.prototype.drawIcon_=function(a){Blockly.utils.createSvgElement("path",{"class":"blocklyIconShape",d:"M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z"},a);Blockly.utils.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z"},a);Blockly.utils.createSvgElement("rect",{"class":"blocklyIconSymbol",x:"7",y:"11",height:"2",width:"2"},a)};&#xD;	Blockly.Warning.textToDom_=function(a){var b=Blockly.utils.createSvgElement("text",{"class":"blocklyText blocklyBubbleText",y:Blockly.Bubble.BORDER_WIDTH},null);a=a.split("\n");for(var c=0;c&lt;a.length;c++){var d=Blockly.utils.createSvgElement("tspan",{dy:"1em",x:Blockly.Bubble.BORDER_WIDTH},b),e=document.createTextNode(a[c]);d.appendChild(e)}return b};&#xD;	Blockly.Warning.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"warningOpen",!a,a)),a){a=Blockly.Warning.textToDom_(this.getText());this.bubble_=new Blockly.Bubble(this.block_.workspace,a,this.block_.svgPath_,this.iconXY_,null,null);if(this.block_.RTL)for(var b=a.getBBox().width,c=0,d;d=a.childNodes[c];c++)d.setAttribute("text-anchor","end"),d.setAttribute("x",b+Blockly.Bubble.BORDER_WIDTH);this.updateColour();a=this.bubble_.getBubbleSize();&#xD;	this.bubble_.setBubbleSize(a.width,a.height)}else this.bubble_.dispose(),this.body_=this.bubble_=null};Blockly.Warning.prototype.bodyFocus_=function(){this.bubble_.promote_()};Blockly.Warning.prototype.setText=function(a,b){this.text_[b]!=a&amp;&amp;(a?this.text_[b]=a:delete this.text_[b],this.isVisible()&amp;&amp;(this.setVisible(!1),this.setVisible(!0)))};Blockly.Warning.prototype.getText=function(){var a=[],b;for(b in this.text_)a.push(this.text_[b]);return a.join("\n")};&#xD;	Blockly.Warning.prototype.dispose=function(){this.block_.warning=null;Blockly.Icon.prototype.dispose.call(this)};Blockly.Block=function(a,b,c){var d=a&amp;&amp;a.getFlyout&amp;&amp;a.getFlyout()?a.getFlyout().getWorkspace():null;this.id=!c||a.getBlockById(c)||d&amp;&amp;d.getBlockById(c)?Blockly.utils.genUid():c;a.blockDB_[this.id]=this;this.previousConnection=this.nextConnection=this.outputConnection=null;this.inputList=[];this.inputsInline=!0;this.disabled=!1;this.tooltip="";this.contextMenu=!0;this.parentBlock_=null;this.childBlocks_=[];this.editable_=this.movable_=this.deletable_=!0;this.checkboxInFlyout_=this.collapsed_=this.isShadow_=&#xD;	!1;this.category_=this.outputShape_=this.comment=null;this.xy_=new goog.math.Coordinate(0,0);this.workspace=a;this.isInFlyout=a.isFlyout;this.isInMutator=a.isMutator;this.RTL=a.RTL;this.isInsertionMarker_=!1;b&amp;&amp;(this.type=b,c=Blockly.Blocks[b],goog.asserts.assertObject(c,&apos;Error: Unknown block type "%s".&apos;,b),goog.mixin(this,c));a.addTopBlock(this);goog.isFunction(this.init)&amp;&amp;this.init();this.inputsInlineDefault=this.inputsInline;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Create(this));&#xD;	goog.isFunction(this.onchange)&amp;&amp;this.setOnChange(this.onchange)};Blockly.Block.prototype.data=null;Blockly.Block.prototype.colour_="#FF0000";Blockly.Block.prototype.colourSecondary_="#FF0000";Blockly.Block.prototype.colourTertiary_="#FF0000";&#xD;	Blockly.Block.prototype.dispose=function(a){if(this.workspace){this.onchangeWrapper_&amp;&amp;this.workspace.removeChangeListener(this.onchangeWrapper_);this.unplug(a);Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Delete(this));Blockly.Events.disable();try{this.workspace&amp;&amp;(this.workspace.removeTopBlock(this),delete this.workspace.blockDB_[this.id],this.workspace=null);Blockly.selected==this&amp;&amp;(Blockly.selected=null);for(var b=this.childBlocks_.length-1;0&lt;=b;b--)this.childBlocks_[b].dispose(!1);&#xD;	for(var b=0,c;c=this.inputList[b];b++)c.dispose();this.inputList.length=0;for(var d=this.getConnections_(!0),b=0;b&lt;d.length;b++){var e=d[b];e.isConnected()&amp;&amp;e.disconnect();d[b].dispose()}}finally{Blockly.Events.enable()}}};&#xD;	Blockly.Block.prototype.unplug=function(a){if(this.outputConnection)this.outputConnection.isConnected()&amp;&amp;this.outputConnection.disconnect();else if(this.previousConnection){var b=null;this.previousConnection.isConnected()&amp;&amp;(b=this.previousConnection.targetConnection,this.previousConnection.disconnect());var c=this.getNextBlock();a&amp;&amp;c&amp;&amp;(a=this.nextConnection.targetConnection,a.disconnect(),b&amp;&amp;b.checkType_(a)&amp;&amp;b.connect(a))}};&#xD;	Blockly.Block.prototype.getConnections_=function(){var a=[];this.outputConnection&amp;&amp;a.push(this.outputConnection);this.previousConnection&amp;&amp;a.push(this.previousConnection);this.nextConnection&amp;&amp;a.push(this.nextConnection);for(var b=0,c;c=this.inputList[b];b++)c.connection&amp;&amp;a.push(c.connection);return a};Blockly.Block.prototype.lastConnectionInStack=function(){for(var a=this.nextConnection;a;){var b=a.targetBlock();if(!b)return a;a=b.nextConnection}return null};&#xD;	Blockly.Block.prototype.bumpNeighbours_=function(){console.warn("Not expected to reach this bumpNeighbours_ function. The BlockSvg function for bumpNeighbours_ was expected to be called instead.")};Blockly.Block.prototype.getParent=function(){return this.parentBlock_};Blockly.Block.prototype.getInputWithBlock=function(a){for(var b=0,c;c=this.inputList[b];b++)if(c.connection&amp;&amp;c.connection.targetBlock()==a)return c;return null};&#xD;	Blockly.Block.prototype.getInputWithConnection=function(a){for(var b=0,c;c=this.inputList[b];b++)if(c.connection==a)return c;return null};Blockly.Block.prototype.getSurroundParent=function(){var a=this;do{var b=a;a=a.getParent();if(!a)return null}while(a.getNextBlock()==b);return a};Blockly.Block.prototype.getNextBlock=function(){return this.nextConnection&amp;&amp;this.nextConnection.targetBlock()};&#xD;	Blockly.Block.prototype.getFirstStatementConnection=function(){for(var a=0,b;b=this.inputList[a];a++)if(b.connection&amp;&amp;b.connection.type==Blockly.NEXT_STATEMENT)return b.connection;return null};Blockly.Block.prototype.getRootBlock=function(){var a=this;do{var b=a;a=b.parentBlock_}while(a);return b};Blockly.Block.prototype.getChildren=function(){return this.childBlocks_};&#xD;	Blockly.Block.prototype.setParent=function(a){if(a!=this.parentBlock_){if(this.parentBlock_){goog.array.remove(this.parentBlock_.childBlocks_,this);if(this.previousConnection&amp;&amp;this.previousConnection.isConnected())throw"Still connected to previous block.";if(this.outputConnection&amp;&amp;this.outputConnection.isConnected())throw"Still connected to parent block.";this.parentBlock_=null}else this.workspace.removeTopBlock(this);(this.parentBlock_=a)?a.childBlocks_.push(this):this.workspace.addTopBlock(this)}};&#xD;	Blockly.Block.prototype.getDescendants=function(a){for(var b=[this],c,d=0;c=this.childBlocks_[d];d++)a&amp;&amp;c.isShadow_||b.push.apply(b,c.getDescendants(a));return b};Blockly.Block.prototype.isDeletable=function(){return this.deletable_&amp;&amp;!this.isShadow_&amp;&amp;!(this.workspace&amp;&amp;this.workspace.options.readOnly)};Blockly.Block.prototype.setDeletable=function(a){this.deletable_=a};Blockly.Block.prototype.isMovable=function(){return this.movable_&amp;&amp;!this.isShadow_&amp;&amp;!(this.workspace&amp;&amp;this.workspace.options.readOnly)};&#xD;	Blockly.Block.prototype.setMovable=function(a){this.movable_=a};Blockly.Block.prototype.isShadow=function(){return this.isShadow_};Blockly.Block.prototype.setShadow=function(a){this.isShadow_=a};Blockly.Block.prototype.isInsertionMarker=function(){return this.isInsertionMarker_};&#xD;	Blockly.Block.prototype.setInsertionMarker=function(a){this.isInsertionMarker_!=a&amp;&amp;(this.isInsertionMarker_=a)&amp;&amp;(this.setColour(Blockly.Colours.insertionMarker),this.setOpacity(Blockly.Colours.insertionMarkerOpacity),Blockly.utils.addClass(this.svgGroup_,"blocklyInsertionMarker"))};Blockly.Block.prototype.isEditable=function(){return this.editable_&amp;&amp;!(this.workspace&amp;&amp;this.workspace.options.readOnly)};&#xD;	Blockly.Block.prototype.setEditable=function(a){this.editable_=a;a=0;for(var b;b=this.inputList[a];a++)for(var c=0,d;d=b.fieldRow[c];c++)d.updateEditable()};&#xD;	Blockly.Block.prototype.setConnectionsHidden=function(a){var b;if(!a&amp;&amp;this.isCollapsed())this.outputConnection&amp;&amp;this.outputConnection.setHidden(a),this.previousConnection&amp;&amp;this.previousConnection.setHidden(a),this.nextConnection&amp;&amp;(this.nextConnection.setHidden(a),(b=this.nextConnection.targetBlock())&amp;&amp;b.setConnectionsHidden(a));else for(var c=this.getConnections_(!0),d=0;b=c[d];d++)b.setHidden(a),b.isSuperior()&amp;&amp;(b=b.targetBlock())&amp;&amp;b.setConnectionsHidden(a)};&#xD;	Blockly.Block.prototype.getMatchingConnection=function(a,b){var c=this.getConnections_(!0),d=a.getConnections_(!0);if(c.length!=d.length)throw"Connection lists did not match in length.";for(var e=0;e&lt;d.length;e++)if(d[e]==b)return c[e];return null};Blockly.Block.prototype.setHelpUrl=function(a){this.helpUrl=a};Blockly.Block.prototype.setTooltip=function(a){this.tooltip=a};Blockly.Block.prototype.getColour=function(){return this.colour_};Blockly.Block.prototype.getColourSecondary=function(){return this.colourSecondary_};&#xD;	Blockly.Block.prototype.getColourTertiary=function(){return this.colourTertiary_};Blockly.Block.prototype.makeColour_=function(a){var b=Number(a);if(isNaN(b)){if(goog.isString(a)&amp;&amp;a.match(/^#[0-9a-fA-F]{6}$/))return a;throw"Invalid colour: "+a;}return Blockly.hueToRgb(b)};&#xD;	Blockly.Block.prototype.setColour=function(a,b,c){this.colour_=this.makeColour_(a);this.colourSecondary_=void 0!==b?this.makeColour_(b):goog.color.rgbArrayToHex(goog.color.darken(goog.color.hexToRgb(this.colour_),.1));this.colourTertiary_=void 0!==c?this.makeColour_(c):goog.color.rgbArrayToHex(goog.color.darken(goog.color.hexToRgb(this.colour_),.2));this.rendered&amp;&amp;this.updateColour()};&#xD;	Blockly.Block.prototype.setOnChange=function(a){if(a&amp;&amp;!goog.isFunction(a))throw Error("onchange must be a function.");this.onchangeWrapper_&amp;&amp;this.workspace.removeChangeListener(this.onchangeWrapper_);if(this.onchange=a)this.onchangeWrapper_=a.bind(this),this.workspace.addChangeListener(this.onchangeWrapper_)};Blockly.Block.prototype.getField=function(a){for(var b=0,c;c=this.inputList[b];b++)for(var d=0,e;e=c.fieldRow[d];d++)if(e.name===a)return e;return null};&#xD;	Blockly.Block.prototype.getVars=function(){for(var a=[],b=0,c;c=this.inputList[b];b++)for(var d=0,e;e=c.fieldRow[d];d++)(e instanceof Blockly.FieldVariable||e instanceof Blockly.FieldVariableGetter)&amp;&amp;a.push(e.getValue());return a};Blockly.Block.prototype.renameVar=function(a,b){for(var c=0,d;d=this.inputList[c];c++)for(var e=0,f;f=d.fieldRow[e];e++)(f instanceof Blockly.FieldVariable||f instanceof Blockly.FieldVariableGetter)&amp;&amp;Blockly.Names.equals(a,f.getValue())&amp;&amp;f.setValue(b)};&#xD;	Blockly.Block.prototype.getFieldValue=function(a){return(a=this.getField(a))?a.getValue():null};Blockly.Block.prototype.setFieldValue=function(a,b){var c=this.getField(b);goog.asserts.assertObject(c,&apos;Field "%s" not found.&apos;,b);c.setValue(a)};&#xD;	Blockly.Block.prototype.setPreviousStatement=function(a,b){a?(void 0===b&amp;&amp;(b=null),this.previousConnection||(goog.asserts.assert(!this.outputConnection,"Remove output connection prior to adding previous connection."),this.previousConnection=this.makeConnection_(Blockly.PREVIOUS_STATEMENT)),this.previousConnection.setCheck(b)):this.previousConnection&amp;&amp;(goog.asserts.assert(!this.previousConnection.isConnected(),"Must disconnect previous statement before removing connection."),this.previousConnection.dispose(),&#xD;	this.previousConnection=null)};Blockly.Block.prototype.setNextStatement=function(a,b){a?(void 0===b&amp;&amp;(b=null),this.nextConnection||(this.nextConnection=this.makeConnection_(Blockly.NEXT_STATEMENT)),this.nextConnection.setCheck(b)):this.nextConnection&amp;&amp;(goog.asserts.assert(!this.nextConnection.isConnected(),"Must disconnect next statement before removing connection."),this.nextConnection.dispose(),this.nextConnection=null)};&#xD;	Blockly.Block.prototype.setOutput=function(a,b){a?(void 0===b&amp;&amp;(b=null),this.outputConnection||(goog.asserts.assert(!this.previousConnection,"Remove previous connection prior to adding output connection."),this.outputConnection=this.makeConnection_(Blockly.OUTPUT_VALUE)),this.outputConnection.setCheck(b)):this.outputConnection&amp;&amp;(goog.asserts.assert(!this.outputConnection.isConnected(),"Must disconnect output value before removing connection."),this.outputConnection.dispose(),this.outputConnection=&#xD;	null)};Blockly.Block.prototype.setInputsInline=function(a){this.inputsInline!=a&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this,"inline",null,this.inputsInline,a)),this.inputsInline=a)};&#xD;	Blockly.Block.prototype.getInputsInline=function(){if(void 0!=this.inputsInline)return this.inputsInline;for(var a=1;a&lt;this.inputList.length;a++)if(this.inputList[a-1].type==Blockly.DUMMY_INPUT&amp;&amp;this.inputList[a].type==Blockly.DUMMY_INPUT)return!1;for(a=1;a&lt;this.inputList.length;a++)if(this.inputList[a-1].type==Blockly.INPUT_VALUE&amp;&amp;this.inputList[a].type==Blockly.DUMMY_INPUT)return!0;return!1};&#xD;	Blockly.Block.prototype.setDisabled=function(a){this.disabled!=a&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this,"disabled",null,this.disabled,a)),this.disabled=a)};Blockly.Block.prototype.getInheritedDisabled=function(){for(var a=this.getSurroundParent();a;){if(a.disabled)return!0;a=a.getSurroundParent()}return!1};Blockly.Block.prototype.isCollapsed=function(){return this.collapsed_};&#xD;	Blockly.Block.prototype.setCollapsed=function(a){this.collapsed_!=a&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this,"collapsed",null,this.collapsed_,a)),this.collapsed_=a)};&#xD;	Blockly.Block.prototype.toString=function(a,b){var c=[],d=b||"?";if(this.collapsed_)c.push(this.getInput("_TEMP_COLLAPSED_INPUT").fieldRow[0].text_);else for(var e=0,f;f=this.inputList[e];e++){for(var g=0,h;h=f.fieldRow[g];g++)h instanceof Blockly.FieldDropdown&amp;&amp;!h.getValue()?c.push(d):c.push(h.getText());f.connection&amp;&amp;((f=f.connection.targetBlock())?c.push(f.toString(void 0,b)):c.push(d))}c=goog.string.trim(c.join(" "))||"???";a&amp;&amp;(c=goog.string.truncate(c,a));return c};&#xD;	Blockly.Block.prototype.appendValueInput=function(a){return this.appendInput_(Blockly.INPUT_VALUE,a)};Blockly.Block.prototype.appendStatementInput=function(a){return this.appendInput_(Blockly.NEXT_STATEMENT,a)};Blockly.Block.prototype.appendDummyInput=function(a){return this.appendInput_(Blockly.DUMMY_INPUT,a||"")};&#xD;	Blockly.Block.prototype.jsonInit=function(a){goog.asserts.assert(void 0==a.output||void 0==a.previousStatement,"Must not have both an output and a previousStatement.");if(void 0!==a.colour){var b=a.colour;var c=goog.isString(b)?Blockly.utils.replaceMessageReferences(b):b;b=a.colourSecondary;var d=goog.isString(b)?Blockly.utils.replaceMessageReferences(b):b;b=a.colourTertiary;b=goog.isString(b)?Blockly.utils.replaceMessageReferences(b):b;this.setColour(c,d,b)}for(c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+&#xD;	c],a["args"+c]||[],a["lastDummyAlign"+c]),c++;void 0!==a.inputsInline&amp;&amp;this.setInputsInline(a.inputsInline);void 0!==a.output&amp;&amp;this.setOutput(!0,a.output);void 0!==a.previousStatement&amp;&amp;this.setPreviousStatement(!0,a.previousStatement);void 0!==a.nextStatement&amp;&amp;this.setNextStatement(!0,a.nextStatement);void 0!==a.tooltip&amp;&amp;(b=a.tooltip,c=Blockly.utils.replaceMessageReferences(b),this.setTooltip(c));void 0!==a.enableContextMenu&amp;&amp;(b=a.enableContextMenu,this.contextMenu=!!b);void 0!==a.helpUrl&amp;&amp;(b=a.helpUrl,&#xD;	c=Blockly.utils.replaceMessageReferences(b),this.setHelpUrl(c));goog.isString(a.extensions)&amp;&amp;(console.warn("JSON attribute &apos;extensions&apos; should be an array of strings. Found raw string in JSON for &apos;"+a.type+"&apos; block."),a.extensions=[a.extensions]);void 0!==a.mutator&amp;&amp;Blockly.Extensions.apply(a.mutator,this,!0);if(Array.isArray(a.extensions))for(d=a.extensions,c=0;c&lt;d.length;++c)Blockly.Extensions.apply(d[c],this,!1);void 0!==a.outputShape&amp;&amp;this.setOutputShape(a.outputShape);void 0!==a.checkboxInFlyout&amp;&amp;&#xD;	this.setCheckboxInFlyout(a.checkboxInFlyout);void 0!==a.category&amp;&amp;this.setCategory(a.category)};Blockly.Block.prototype.mixin=function(a,b){if(goog.isDef(b)&amp;&amp;!goog.isBoolean(b))throw Error("opt_disableCheck must be a boolean if provided");if(!b){var c=[],d;for(d in a)void 0!==this[d]&amp;&amp;c.push(d);if(c.length)throw Error("Mixin will overwrite block members: "+JSON.stringify(c));}goog.mixin(this,a)};&#xD;	Blockly.Block.prototype.interpolate_=function(a,b,c){var d=Blockly.utils.tokenizeInterpolation(a);var e=[];var f=0;a=[];for(var g=0;g&lt;d.length;g++){var h=d[g];if("number"==typeof h){if(0&gt;=h||h&gt;b.length)throw Error(&apos;Block "&apos;+this.type+&apos;": Message index %&apos;+h+" out of range.");if(e[h])throw Error(&apos;Block "&apos;+this.type+&apos;": Message index %&apos;+h+" duplicated.");e[h]=!0;f++;a.push(b[h-1])}else(h=h.trim())&amp;&amp;a.push(h)}if(f!=b.length)throw Error(&apos;Block "&apos;+this.type+&apos;": Message does not reference all &apos;+b.length+&#xD;	" arg(s).");a.length&amp;&amp;("string"==typeof a[a.length-1]||goog.string.startsWith(a[a.length-1].type,"field_"))&amp;&amp;(g={type:"input_dummy"},c&amp;&amp;(g.align=c),a.push(g));c={LEFT:Blockly.ALIGN_LEFT,RIGHT:Blockly.ALIGN_RIGHT,CENTRE:Blockly.ALIGN_CENTRE};b=[];for(g=0;g&lt;a.length;g++)if(f=a[g],"string"==typeof f)b.push([f,void 0]);else{d=h=null;do if(e=!1,"string"==typeof f)h=new Blockly.FieldLabel(f);else switch(f.type){case "input_value":d=this.appendValueInput(f.name);break;case "input_statement":d=this.appendStatementInput(f.name);&#xD;	break;case "input_dummy":d=this.appendDummyInput(f.name);break;case "field_label":h=Blockly.Block.newFieldLabelFromJson_(f);break;case "field_input":h=Blockly.Block.newFieldTextInputFromJson_(f);break;case "field_textdropdown":h=new Blockly.FieldTextDropdown(f.text,f.options);"boolean"==typeof f.spellcheck&amp;&amp;h.setSpellcheck(f.spellcheck);break;case "field_numberdropdown":h=new Blockly.FieldNumberDropdown(f.value,f.options,f.min,f.max,f.precision);break;case "field_angle":h=new Blockly.FieldAngle(f.angle);&#xD;	break;case "field_checkbox":h=new Blockly.FieldCheckbox(f.checked?"TRUE":"FALSE");break;case "field_colour":h=new Blockly.FieldColour(f.colour);break;case "field_variable":h=Blockly.Block.newFieldVariableFromJson_(f);break;case "field_dropdown":h=new Blockly.FieldDropdown(f.options);break;case "field_iconmenu":h=new Blockly.FieldIconMenu(f.options);break;case "field_image":h=Blockly.Block.newFieldImageFromJson_(f);break;case "field_number":h=new Blockly.FieldNumber(f.value,f.min,f.max,f.precision);&#xD;	break;case "field_variable_getter":h=Blockly.Block.newFieldVariableGetterFromJson_(f);break;case "field_date":if(Blockly.FieldDate){h=new Blockly.FieldDate(f.date);break}default:f.alt&amp;&amp;(f=f.alt,e=!0)}while(e);if(h)b.push([h,f.name]);else if(d){f.check&amp;&amp;d.setCheck(f.check);f.align&amp;&amp;d.setAlign(c[f.align]);for(e=0;e&lt;b.length;e++)d.appendField(b[e][0],b[e][1]);b.length=0}}};&#xD;	Blockly.Block.newFieldImageFromJson_=function(a){var b=Blockly.utils.replaceMessageReferences(a.src),c=Number(Blockly.utils.replaceMessageReferences(a.width)),d=Number(Blockly.utils.replaceMessageReferences(a.height)),e=Blockly.utils.replaceMessageReferences(a.alt);return new Blockly.FieldImage(b,c,d,e,!!a.flip_rtl)};Blockly.Block.newFieldLabelFromJson_=function(a){var b=Blockly.utils.replaceMessageReferences(a.text);return new Blockly.FieldLabel(b,a["class"])};&#xD;	Blockly.Block.newFieldTextInputFromJson_=function(a){var b=Blockly.utils.replaceMessageReferences(a.text),b=new Blockly.FieldTextInput(b,a["class"]);"boolean"==typeof a.spellcheck&amp;&amp;b.setSpellcheck(a.spellcheck);return b};Blockly.Block.newFieldVariableFromJson_=function(a){a=Blockly.utils.replaceMessageReferences(a.variable);return new Blockly.FieldVariable(a)};&#xD;	Blockly.Block.newFieldVariableGetterFromJson_=function(a){var b=Blockly.utils.replaceMessageReferences(a.text);return new Blockly.FieldVariableGetter(b,a.name,a["class"])};Blockly.Block.prototype.appendInput_=function(a,b){var c=null;if(a==Blockly.INPUT_VALUE||a==Blockly.NEXT_STATEMENT)c=this.makeConnection_(a);c=new Blockly.Input(a,b,this,c);this.inputList.push(c);return c};&#xD;	Blockly.Block.prototype.moveInputBefore=function(a,b){if(a!=b){for(var c=-1,d=b?-1:this.inputList.length,e=0,f;f=this.inputList[e];e++)if(f.name==a){if(c=e,-1!=d)break}else if(b&amp;&amp;f.name==b&amp;&amp;(d=e,-1!=c))break;goog.asserts.assert(-1!=c,&apos;Named input "%s" not found.&apos;,a);goog.asserts.assert(-1!=d,&apos;Reference input "%s" not found.&apos;,b);this.moveNumberedInputBefore(c,d)}};&#xD;	Blockly.Block.prototype.moveNumberedInputBefore=function(a,b){goog.asserts.assert(a!=b,"Can&apos;t move input to itself.");goog.asserts.assert(a&lt;this.inputList.length,"Input index "+a+" out of bounds.");goog.asserts.assert(b&lt;=this.inputList.length,"Reference input "+b+" out of bounds.");var c=this.inputList[a];this.inputList.splice(a,1);a&lt;b&amp;&amp;b--;this.inputList.splice(b,0,c)};&#xD;	Blockly.Block.prototype.removeInput=function(a,b){for(var c=0,d;d=this.inputList[c];c++)if(d.name==a){if(d.connection&amp;&amp;d.connection.isConnected()){d.connection.setShadowDom(null);var e=d.connection.targetBlock();e.isShadow()?e.dispose():e.unplug()}d.dispose();this.inputList.splice(c,1);return}b||goog.asserts.fail(&apos;Input "%s" not found.&apos;,a)};Blockly.Block.prototype.getInput=function(a){for(var b=0,c;c=this.inputList[b];b++)if(c.name==a)return c;return null};&#xD;	Blockly.Block.prototype.getInputTargetBlock=function(a){return(a=this.getInput(a))&amp;&amp;a.connection&amp;&amp;a.connection.targetBlock()};Blockly.Block.prototype.getCommentText=function(){return this.comment||""};Blockly.Block.prototype.setCommentText=function(a){this.comment!=a&amp;&amp;(Blockly.Events.fire(new Blockly.Events.Change(this,"comment",null,this.comment,a||"")),this.comment=a)};Blockly.Block.prototype.setOutputShape=function(a){this.outputShape_=a};Blockly.Block.prototype.getOutputShape=function(){return this.outputShape_};&#xD;	Blockly.Block.prototype.setCategory=function(a){this.category_=a};Blockly.Block.prototype.getCategory=function(){return this.category_};Blockly.Block.prototype.setCheckboxInFlyout=function(a){this.checkboxInFlyout_=a};Blockly.Block.prototype.hasCheckboxInFlyout=function(){return this.checkboxInFlyout_};Blockly.Block.prototype.setWarningText=function(){};Blockly.Block.prototype.setMutator=function(){};Blockly.Block.prototype.getRelativeToSurfaceXY=function(){return this.xy_};&#xD;	Blockly.Block.prototype.moveBy=function(a,b){goog.asserts.assert(!this.parentBlock_,"Block has parent.");var c=new Blockly.Events.Move(this);this.xy_.translate(a,b);c.recordNew();Blockly.Events.fire(c)};Blockly.Block.prototype.makeConnection_=function(a){return new Blockly.Connection(this,a)};&#xD;	Blockly.Block.prototype.allInputsFilled=function(a){void 0===a&amp;&amp;(a=!0);if(!a&amp;&amp;this.isShadow())return!1;for(var b=0,c;c=this.inputList[b];b++)if(c.connection&amp;&amp;(c=c.connection.targetBlock(),!c||!c.allInputsFilled(a)))return!1;return(b=this.getNextBlock())?b.allInputsFilled(a):!0};Blockly.Block.prototype.toDevString=function(){var a=this.type?&apos;"&apos;+this.type+&apos;" block&apos;:"Block";this.id&amp;&amp;(a+=&apos; (id="&apos;+this.id+&apos;")&apos;);return a};Blockly.ContextMenu={};Blockly.ContextMenu.currentBlock=null;Blockly.ContextMenu.eventWrapper_=null;Blockly.ContextMenu.show=function(a,b,c){Blockly.WidgetDiv.show(Blockly.ContextMenu,c,null);if(b.length){var d=Blockly.ContextMenu.populate_(b,c);goog.events.listen(d,goog.ui.Component.EventType.ACTION,Blockly.ContextMenu.hide);Blockly.ContextMenu.position_(d,a,c);setTimeout(function(){d.getElement().focus()},1);Blockly.ContextMenu.currentBlock=null}else Blockly.ContextMenu.hide()};&#xD;	Blockly.ContextMenu.populate_=function(a,b){var c=new goog.ui.Menu;c.setAllowAutoFocus(!0);c.setRightToLeft(b);for(var d=0,e;e=a[d];d++){var f=new goog.ui.MenuItem(e.text);f.setRightToLeft(b);c.addChild(f,!0);f.setEnabled(e.enabled);e.enabled&amp;&amp;(goog.events.listen(f,goog.ui.Component.EventType.ACTION,e.callback),f.handleContextMenu=function(){goog.events.dispatchEvent(this,goog.ui.Component.EventType.ACTION)})}return c};&#xD;	Blockly.ContextMenu.position_=function(a,b,c){var d=goog.dom.getViewportSize(),e=goog.style.getViewportPageOffset(document);a.render(Blockly.WidgetDiv.DIV);a=a.getElement();Blockly.utils.addClass(a,"blocklyContextMenu");Blockly.bindEventWithChecks_(a,"contextmenu",null,Blockly.utils.noEvent);a=goog.style.getSize(a);var f=b.clientX+e.x,g=b.clientY+e.y;b.clientY+a.height&gt;=d.height&amp;&amp;(g-=a.height);c?a.width&gt;=b.clientX&amp;&amp;(f+=a.width):b.clientX+a.width&gt;=d.width&amp;&amp;(f-=a.width);Blockly.WidgetDiv.position(f,&#xD;	g,d,e,c)};Blockly.ContextMenu.hide=function(){Blockly.WidgetDiv.hideIfOwner(Blockly.ContextMenu);Blockly.ContextMenu.currentBlock=null;Blockly.ContextMenu.eventWrapper_&amp;&amp;Blockly.unbindEvent_(Blockly.ContextMenu.eventWrapper_)};&#xD;	Blockly.ContextMenu.callbackFactory=function(a,b){return function(){Blockly.Events.disable();try{var c=Blockly.Xml.domToBlock(b,a.workspace);var d=a.getRelativeToSurfaceXY();d.x=a.RTL?d.x-Blockly.SNAP_RADIUS:d.x+Blockly.SNAP_RADIUS;d.y+=2*Blockly.SNAP_RADIUS;c.moveBy(d.x,d.y)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&amp;&amp;!c.isShadow()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Create(c));c.select()}};Blockly.BlockSvg=function(a,b,c){this.svgGroup_=Blockly.utils.createSvgElement("g",{},null);this.svgPath_=Blockly.utils.createSvgElement("path",{"class":"blocklyPath blocklyBlockBackground"},this.svgGroup_);this.svgPath_.tooltip=this;this.rendered=!1;this.inputShapes_={};this.useDragSurface_=Blockly.utils.is3dSupported()&amp;&amp;!!a.blockDragSurface_;Blockly.Tooltip.bindMouseEvents(this.svgPath_);Blockly.BlockSvg.superClass_.constructor.call(this,a,b,c)};goog.inherits(Blockly.BlockSvg,Blockly.Block);&#xD;	Blockly.BlockSvg.prototype.height=0;Blockly.BlockSvg.prototype.width=0;Blockly.BlockSvg.prototype.insertionMarkerMinWidth_=0;Blockly.BlockSvg.prototype.opacity_=1;Blockly.BlockSvg.prototype.dragStartXY_=null;Blockly.BlockSvg.prototype.isGlowingBlock_=!1;Blockly.BlockSvg.prototype.isGlowingStack_=!1;Blockly.BlockSvg.INLINE=-1;&#xD;	Blockly.BlockSvg.prototype.initSvg=function(){goog.asserts.assert(this.workspace.rendered,"Workspace is headless.");if(!this.isInsertionMarker()){for(var a=0,b;b=this.inputList[a];a++)b.init(),b.type===Blockly.INPUT_VALUE&amp;&amp;this.initInputShape(b);b=this.getIcons();for(a=0;a&lt;b.length;a++)b[a].createIcon()}this.updateColour();this.updateMovable();this.workspace.options.readOnly||this.eventsInit_||Blockly.bindEventWithChecks_(this.getSvgRoot(),"mousedown",this,this.onMouseDown_);this.eventsInit_=!0;this.getSvgRoot().parentNode||&#xD;	this.workspace.getCanvas().appendChild(this.getSvgRoot())};Blockly.BlockSvg.prototype.initInputShape=function(a){this.inputShapes_[a.name]||a.connection.getShadowDom()||(this.inputShapes_[a.name]=Blockly.utils.createSvgElement("path",{"class":"blocklyPath",style:"visibility: hidden"},this.svgGroup_))};&#xD;	Blockly.BlockSvg.prototype.select=function(){if(this.isShadow()&amp;&amp;this.getParent())this.getParent().select();else if(Blockly.selected!=this){var a=null;if(Blockly.selected){a=Blockly.selected.id;Blockly.Events.disable();try{Blockly.selected.unselect()}finally{Blockly.Events.enable()}}a=new Blockly.Events.Ui(null,"selected",a,this.id);a.workspaceId=this.workspace.id;Blockly.Events.fire(a);Blockly.selected=this;this.addSelect()}};&#xD;	Blockly.BlockSvg.prototype.unselect=function(){if(Blockly.selected==this){var a=new Blockly.Events.Ui(null,"selected",this.id,null);a.workspaceId=this.workspace.id;Blockly.Events.fire(a);Blockly.selected=null;this.removeSelect()}};Blockly.BlockSvg.prototype.setGlowBlock=function(a){this.isGlowingBlock_=a;this.updateColour()};&#xD;	Blockly.BlockSvg.prototype.setGlowStack=function(a){this.isGlowingStack_=a;a=this.getSvgRoot();this.isGlowingStack_&amp;&amp;!a.hasAttribute("filter")?a.setAttribute("filter","url(#blocklyStackGlowFilter)"):!this.isGlowingStack_&amp;&amp;a.hasAttribute("filter")&amp;&amp;a.removeAttribute("filter")};Blockly.BlockSvg.prototype.mutator=null;Blockly.BlockSvg.prototype.comment=null;Blockly.BlockSvg.prototype.warning=null;&#xD;	Blockly.BlockSvg.prototype.getIcons=function(){var a=[];this.mutator&amp;&amp;a.push(this.mutator);this.comment&amp;&amp;a.push(this.comment);this.warning&amp;&amp;a.push(this.warning);return a};&#xD;	Blockly.BlockSvg.prototype.setParent=function(a){if(a!=this.parentBlock_){var b=this.getSvgRoot();if(this.parentBlock_&amp;&amp;b){var c=this.getRelativeToSurfaceXY();Blockly.selected!=this&amp;&amp;(this.workspace.getCanvas().appendChild(b),this.translate(c.x,c.y))}Blockly.Field.startCache();Blockly.BlockSvg.superClass_.setParent.call(this,a);Blockly.Field.stopCache();a&amp;&amp;(c=this.getRelativeToSurfaceXY(),a.getSvgRoot().appendChild(b),b=this.getRelativeToSurfaceXY(),this.moveConnections_(b.x-c.x,b.y-c.y),this.isShadow()&amp;&amp;&#xD;	this.setColour(this.getColour(),this.getColourSecondary(),a.getColourTertiary()))}};&#xD;	Blockly.BlockSvg.prototype.getRelativeToSurfaceXY=function(){var a=0,b=0,c=this.useDragSurface_?this.workspace.blockDragSurface_.getGroup():null,d=this.getSvgRoot();if(d){do{var e=Blockly.utils.getRelativeXY(d),a=a+e.x,b=b+e.y;this.useDragSurface_&amp;&amp;this.workspace.blockDragSurface_.getCurrentBlock()==d&amp;&amp;(e=this.workspace.blockDragSurface_.getSurfaceTranslation(),a+=e.x,b+=e.y);d=d.parentNode}while(d&amp;&amp;d!=this.workspace.getCanvas()&amp;&amp;d!=c)}return new goog.math.Coordinate(a,b)};&#xD;	Blockly.BlockSvg.prototype.moveBy=function(a,b){var c;goog.asserts.assert(!this.parentBlock_,"Block has parent.");var d=Blockly.Events.isEnabled();d&amp;&amp;(c=new Blockly.Events.Move(this));var e=this.getRelativeToSurfaceXY();this.translate(e.x+a,e.y+b);this.moveConnections_(a,b);d&amp;&amp;(c.recordNew(),Blockly.Events.fire(c));this.workspace.resizeContents()};Blockly.BlockSvg.prototype.translate=function(a,b){this.getSvgRoot().setAttribute("transform","translate("+a+","+b+")")};&#xD;	Blockly.BlockSvg.prototype.moveToDragSurface_=function(){if(this.useDragSurface_){var a=this.getRelativeToSurfaceXY();this.clearTransformAttributes_();this.workspace.blockDragSurface_.translateSurface(a.x,a.y);this.workspace.blockDragSurface_.setBlocksAndShow(this.getSvgRoot())}};Blockly.BlockSvg.prototype.moveOffDragSurface_=function(a){this.useDragSurface_&amp;&amp;(this.translate(a.x,a.y),this.workspace.blockDragSurface_.clearAndHide(this.workspace.getCanvas()))};&#xD;	Blockly.BlockSvg.prototype.moveDuringDrag=function(a){this.useDragSurface_?this.workspace.blockDragSurface_.translateSurface(a.x,a.y):(this.svgGroup_.translate_="translate("+a.x+","+a.y+")",this.svgGroup_.setAttribute("transform",this.svgGroup_.translate_+this.svgGroup_.skew_))};Blockly.BlockSvg.prototype.clearTransformAttributes_=function(){Blockly.utils.removeAttribute(this.getSvgRoot(),"transform")};&#xD;	Blockly.BlockSvg.prototype.snapToGrid=function(){if(this.workspace&amp;&amp;!this.workspace.isDragging()&amp;&amp;!this.getParent()&amp;&amp;!this.isInFlyout&amp;&amp;this.workspace.options.gridOptions&amp;&amp;this.workspace.options.gridOptions.snap){var a=this.workspace.options.gridOptions.spacing,b=a/2,c=this.getRelativeToSurfaceXY(),d=Math.round((c.x-b)/a)*a+b-c.x,a=Math.round((c.y-b)/a)*a+b-c.y,d=Math.round(d),a=Math.round(a);0==d&amp;&amp;0==a||this.moveBy(d,a)}};&#xD;	Blockly.BlockSvg.prototype.getBoundingRectangle=function(){var a=this.getRelativeToSurfaceXY(this),b=this.getHeightWidth();if(this.RTL){var c=new goog.math.Coordinate(a.x-b.width,a.y);a=new goog.math.Coordinate(a.x,a.y+b.height)}else c=new goog.math.Coordinate(a.x,a.y),a=new goog.math.Coordinate(a.x+b.width,a.y+b.height);return{topLeft:c,bottomRight:a}};Blockly.BlockSvg.prototype.setOpacity=function(a){this.opacity_=a;this.rendered&amp;&amp;this.updateColour()};Blockly.BlockSvg.prototype.getOpacity=function(){return this.opacity_};&#xD;	Blockly.BlockSvg.prototype.setCollapsed=function(a){if(this.collapsed_!=a){for(var b=[],c=0,d;d=this.inputList[c];c++)b.push.apply(b,d.setVisible(!a));if(a){d=this.getIcons();for(c=0;c&lt;d.length;c++)d[c].setVisible(!1);c=this.toString(Blockly.COLLAPSE_CHARS);this.appendDummyInput("_TEMP_COLLAPSED_INPUT").appendField(c).init()}else this.removeInput("_TEMP_COLLAPSED_INPUT"),this.setWarningText(null);Blockly.BlockSvg.superClass_.setCollapsed.call(this,a);b.length||(b[0]=this);if(this.rendered)for(c=0;a=&#xD;	b[c];c++)a.render()}};Blockly.BlockSvg.prototype.tab=function(a,b){for(var c=[],d=0,e;e=this.inputList[d];d++){for(var f=0,g;g=e.fieldRow[f];f++)g instanceof Blockly.FieldTextInput&amp;&amp;c.push(g);e.connection&amp;&amp;(e=e.connection.targetBlock())&amp;&amp;c.push(e)}d=c.indexOf(a);-1==d&amp;&amp;(d=b?-1:c.length);(c=c[b?d+1:d-1])?c instanceof Blockly.Field?c.showEditor_():c.tab(null,b):(c=this.getParent())&amp;&amp;c.tab(this,b)};&#xD;	Blockly.BlockSvg.prototype.onMouseDown_=function(a){var b=this.workspace.getGesture(a);b&amp;&amp;b.handleBlockStart(a,this)};Blockly.BlockSvg.prototype.showHelp_=function(){var a=goog.isFunction(this.helpUrl)?this.helpUrl():this.helpUrl;a&amp;&amp;alert(a)};&#xD;	Blockly.BlockSvg.prototype.showContextMenu_=function(a){if(!this.workspace.options.readOnly&amp;&amp;this.contextMenu){var b=this,c=[];if(this.isDeletable()&amp;&amp;this.isMovable()&amp;&amp;!b.isInFlyout){c.push({text:Blockly.Msg.DUPLICATE_BLOCK,enabled:!0,callback:function(){Blockly.duplicate_(b)}});if(this.isEditable()&amp;&amp;this.workspace.options.comments){var d={enabled:!goog.userAgent.IE};this.comment?(d.text=Blockly.Msg.REMOVE_COMMENT,d.callback=function(){b.setCommentText(null)}):(d.text=Blockly.Msg.ADD_COMMENT,d.callback=&#xD;	function(){b.setCommentText("")});c.push(d)}var d=this.getDescendants(!0).length,e=this.getNextBlock();e&amp;&amp;(d-=e.getDescendants(!0).length);d={text:1==d?Blockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(d)),enabled:!0,callback:function(){Blockly.Events.setGroup(!0);b.dispose(!0,!0);Blockly.Events.setGroup(!1)}};c.push(d)}else if(this.parentBlock_&amp;&amp;this.isShadow_){this.parentBlock_.showContextMenu_(a);return}d={enabled:!(goog.isFunction(this.helpUrl)?!this.helpUrl():!this.helpUrl)};&#xD;	d.text=Blockly.Msg.HELP;d.callback=function(){b.showHelp_()};c.push(d);this.customContextMenu&amp;&amp;!b.isInFlyout&amp;&amp;this.customContextMenu(c);Blockly.ContextMenu.show(a,c,this.RTL);Blockly.ContextMenu.currentBlock=this}};&#xD;	Blockly.BlockSvg.prototype.moveConnections_=function(a,b){if(this.rendered){for(var c=this.getConnections_(!1),d=0;d&lt;c.length;d++)c[d].moveBy(a,b);c=this.getIcons();for(d=0;d&lt;c.length;d++)c[d].computeIconLocation();for(d=0;d&lt;this.childBlocks_.length;d++)this.childBlocks_[d].moveConnections_(a,b)}};&#xD;	Blockly.BlockSvg.prototype.setDragging=function(a){if(a){var b=this.getSvgRoot();b.translate_="";b.skew_="";Blockly.draggingConnections_=Blockly.draggingConnections_.concat(this.getConnections_(!0));Blockly.utils.addClass(this.svgGroup_,"blocklyDragging")}else Blockly.draggingConnections_=[],Blockly.utils.removeClass(this.svgGroup_,"blocklyDragging");for(b=0;b&lt;this.childBlocks_.length;b++)this.childBlocks_[b].setDragging(a)};&#xD;	Blockly.BlockSvg.prototype.updateMovable=function(){this.isMovable()?Blockly.utils.addClass(this.svgGroup_,"blocklyDraggable"):Blockly.utils.removeClass(this.svgGroup_,"blocklyDraggable")};Blockly.BlockSvg.prototype.setMovable=function(a){Blockly.BlockSvg.superClass_.setMovable.call(this,a);this.updateMovable()};Blockly.BlockSvg.prototype.setEditable=function(a){Blockly.BlockSvg.superClass_.setEditable.call(this,a);a=this.getIcons();for(var b=0;b&lt;a.length;b++)a[b].updateEditable()};&#xD;	Blockly.BlockSvg.prototype.setShadow=function(a){Blockly.BlockSvg.superClass_.setShadow.call(this,a);this.updateColour()};Blockly.BlockSvg.prototype.setInsertionMarker=function(a,b){Blockly.BlockSvg.superClass_.setInsertionMarker.call(this,a);this.insertionMarkerMinWidth_=b;this.updateColour()};Blockly.BlockSvg.prototype.getSvgRoot=function(){return this.svgGroup_};&#xD;	Blockly.BlockSvg.prototype.dispose=function(a,b){if(this.workspace){Blockly.Tooltip.hide();Blockly.Field.startCache();var c=this.workspace;Blockly.selected==this&amp;&amp;(this.unselect(),this.workspace.cancelCurrentGesture());Blockly.ContextMenu.currentBlock==this&amp;&amp;Blockly.ContextMenu.hide();b&amp;&amp;this.rendered&amp;&amp;(this.unplug(a),this.disposeUiEffect());this.rendered=!1;Blockly.Events.disable();try{for(var d=this.getIcons(),e=0;e&lt;d.length;e++)d[e].dispose()}finally{Blockly.Events.enable()}Blockly.BlockSvg.superClass_.dispose.call(this,&#xD;	a);goog.dom.removeNode(this.svgGroup_);c.resizeContents();this.svgPath_=this.svgGroup_=null;Blockly.Field.stopCache()}};&#xD;	Blockly.BlockSvg.prototype.disposeUiEffect=function(){this.workspace.playAudio("delete");var a=this.workspace.getSvgXY(this.svgGroup_),b=this.svgGroup_.cloneNode(!0);b.translateX_=a.x;b.translateY_=a.y;b.setAttribute("transform","translate("+b.translateX_+","+b.translateY_+")");this.workspace.getParentSvg().appendChild(b);b.bBox_=b.getBBox();Blockly.BlockSvg.disposeUiStep_(b,this.RTL,new Date,this.workspace.scale)};Blockly.BlockSvg.prototype.connectionUiEffect=function(){this.workspace.playAudio("click")};&#xD;	Blockly.BlockSvg.disposeUiStep_=function(a,b,c,d){var e=(new Date-c)/150;1&lt;e?goog.dom.removeNode(a):(a.setAttribute("transform","translate("+(a.translateX_+(b?-1:1)*a.bBox_.width*d/2*e)+","+(a.translateY_+a.bBox_.height*d*e)+") scale("+(1-e)*d+")"),setTimeout(function(){Blockly.BlockSvg.disposeUiStep_(a,b,c,d)},10))};Blockly.BlockSvg.prototype.disconnectUiEffect=function(){};Blockly.BlockSvg.disconnectUiStop_=function(){};Blockly.BlockSvg.prototype.updateDisabled=function(){};&#xD;	Blockly.BlockSvg.prototype.getCommentText=function(){return this.comment?this.comment.getText().replace(/\s+$/,"").replace(/ +\n/g,"\n"):""};Blockly.BlockSvg.prototype.setCommentText=function(a){var b=!1;goog.isString(a)?(this.comment||(this.comment=new Blockly.Comment(this),b=!0),this.comment.setText(a)):this.comment&amp;&amp;(this.comment.dispose(),b=!0);b&amp;&amp;this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};&#xD;	Blockly.BlockSvg.prototype.setWarningText=function(a,b){this.setWarningText.pid_||(this.setWarningText.pid_=Object.create(null));var c=b||"";if(c)this.setWarningText.pid_[c]&amp;&amp;(clearTimeout(this.setWarningText.pid_[c]),delete this.setWarningText.pid_[c]);else for(var d in this.setWarningText.pid_)clearTimeout(this.setWarningText.pid_[d]),delete this.setWarningText.pid_[d];if(this.workspace.isDragging()){var e=this;this.setWarningText.pid_[c]=setTimeout(function(){e.workspace&amp;&amp;(delete e.setWarningText.pid_[c],&#xD;	e.setWarningText(a,c))},100)}else{this.isInFlyout&amp;&amp;(a=null);d=!1;if(goog.isString(a))this.warning||(this.warning=new Blockly.Warning(this),d=!0),this.warning.setText(a,c);else if(this.warning&amp;&amp;!c)this.warning.dispose(),d=!0;else if(this.warning){d=this.warning.getText();this.warning.setText("",c);var f=this.warning.getText();f||this.warning.dispose();d=d!=f}d&amp;&amp;this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())}};&#xD;	Blockly.BlockSvg.prototype.setMutator=function(a){this.mutator&amp;&amp;this.mutator!==a&amp;&amp;this.mutator.dispose();a&amp;&amp;(a.block_=this,this.mutator=a,a.createIcon())};Blockly.BlockSvg.prototype.addSelect=function(){Blockly.utils.addClass(this.svgGroup_,"blocklySelected")};Blockly.BlockSvg.prototype.removeSelect=function(){Blockly.utils.removeClass(this.svgGroup_,"blocklySelected")};&#xD;	Blockly.BlockSvg.prototype.setDeleteStyle=function(a){a?Blockly.utils.addClass(this.svgGroup_,"blocklyDraggingDelete"):Blockly.utils.removeClass(this.svgGroup_,"blocklyDraggingDelete")};Blockly.BlockSvg.prototype.setColour=function(a,b,c){Blockly.BlockSvg.superClass_.setColour.call(this,a,b,c);this.rendered&amp;&amp;this.updateColour()};Blockly.BlockSvg.prototype.bringToFront=function(){var a=this;do{var b=a.getSvgRoot();b.parentNode.appendChild(b);a=a.getParent()}while(a)};&#xD;	Blockly.BlockSvg.prototype.setPreviousStatement=function(a,b){Blockly.BlockSvg.superClass_.setPreviousStatement.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.setNextStatement=function(a,b){Blockly.BlockSvg.superClass_.setNextStatement.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.setOutput=function(a,b){Blockly.BlockSvg.superClass_.setOutput.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};&#xD;	Blockly.BlockSvg.prototype.setInputsInline=function(a){Blockly.BlockSvg.superClass_.setInputsInline.call(this,a);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.removeInput=function(a,b){Blockly.BlockSvg.superClass_.removeInput.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};Blockly.BlockSvg.prototype.moveNumberedInputBefore=function(a,b){Blockly.BlockSvg.superClass_.moveNumberedInputBefore.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_())};&#xD;	Blockly.BlockSvg.prototype.appendInput_=function(a,b){var c=Blockly.BlockSvg.superClass_.appendInput_.call(this,a,b);this.rendered&amp;&amp;(this.render(),this.bumpNeighbours_());return c};Blockly.BlockSvg.prototype.getConnections_=function(a){var b=[];if(a||this.rendered)if(this.outputConnection&amp;&amp;b.push(this.outputConnection),this.previousConnection&amp;&amp;b.push(this.previousConnection),this.nextConnection&amp;&amp;b.push(this.nextConnection),a||!this.collapsed_){a=0;for(var c;c=this.inputList[a];a++)c.connection&amp;&amp;b.push(c.connection)}return b};&#xD;	Blockly.BlockSvg.prototype.makeConnection_=function(a){return new Blockly.RenderedConnection(this,a)};&#xD;	Blockly.BlockSvg.prototype.bumpNeighbours_=function(){if(this.workspace&amp;&amp;Blockly.dragMode_==Blockly.DRAG_NONE){var a=this.getRootBlock();if(!a.isInFlyout)for(var b=this.getConnections_(!1),c=0,d;d=b[c];c++){d.isConnected()&amp;&amp;d.isSuperior()&amp;&amp;d.targetBlock().bumpNeighbours_();for(var e=d.neighbours_(Blockly.SNAP_RADIUS),f=0,g;g=e[f];f++)d.isConnected()&amp;&amp;g.isConnected()||g.getSourceBlock().getRootBlock()!=a&amp;&amp;(d.isSuperior()?g.bumpAwayFrom_(d):d.bumpAwayFrom_(g))}}};&#xD;	Blockly.BlockSvg.prototype.scheduleSnapAndBump=function(){var a=this,b=Blockly.Events.getGroup();setTimeout(function(){Blockly.Events.setGroup(b);a.snapToGrid();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY/2);setTimeout(function(){Blockly.Events.setGroup(b);a.bumpNeighbours_();Blockly.Events.setGroup(!1)},Blockly.BUMP_DELAY)};Blockly.BlockSvg.render={};Blockly.BlockSvg.GRID_UNIT=4;Blockly.BlockSvg.SEP_SPACE_X=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.SEP_SPACE_Y=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_X=16*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_X_OUTPUT=12*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_X_SHADOW_OUTPUT=10*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_Y=12*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.EXTRA_STATEMENT_ROW_Y=8*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.MIN_BLOCK_X_WITH_STATEMENT=40*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_Y_SINGLE_FIELD_OUTPUT=8*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_BLOCK_Y_REPORTER=10*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MIN_STATEMENT_INPUT_HEIGHT=6*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.NOTCH_WIDTH=8*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.NOTCH_HEIGHT=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.CORNER_RADIUS=1*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.STATEMENT_INPUT_EDGE_WIDTH=4*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.STATEMENT_INPUT_INNER_SPACE=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.START_HAT_HEIGHT=16;Blockly.BlockSvg.START_HAT_PATH="c 25,-22 71,-22 96,0";Blockly.BlockSvg.NOTCH_PATH_LEFT="c 2,0 3,1 4,2 l 4,4 c 1,1 2,2 4,2 h 12 c 2,0 3,-1 4,-2 l 4,-4 c 1,-1 2,-2 4,-2";Blockly.BlockSvg.NOTCH_PATH_RIGHT="c -2,0 -3,1 -4,2 l -4,4 c -1,1 -2,2 -4,2 h -12 c -2,0 -3,-1 -4,-2 l -4,-4 c -1,-1 -2,-2 -4,-2";&#xD;	Blockly.BlockSvg.NOTCH_START_PADDING=3*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.TOP_LEFT_CORNER_START="m 0,"+Blockly.BlockSvg.CORNER_RADIUS;Blockly.BlockSvg.TOP_LEFT_CORNER="A "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,1 "+Blockly.BlockSvg.CORNER_RADIUS+",0";Blockly.BlockSvg.TOP_RIGHT_CORNER="a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,1 "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;&#xD;	Blockly.BlockSvg.BOTTOM_RIGHT_CORNER=" a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,1 -"+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;Blockly.BlockSvg.BOTTOM_LEFT_CORNER="a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,1 -"+Blockly.BlockSvg.CORNER_RADIUS+",-"+Blockly.BlockSvg.CORNER_RADIUS;&#xD;	Blockly.BlockSvg.INNER_TOP_LEFT_CORNER=" a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,0 -"+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER="a "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS+" 0 0,0 "+Blockly.BlockSvg.CORNER_RADIUS+","+Blockly.BlockSvg.CORNER_RADIUS;&#xD;	Blockly.BlockSvg.INPUT_SHAPE_HEXAGONAL="M "+4*Blockly.BlockSvg.GRID_UNIT+",0  h "+4*Blockly.BlockSvg.GRID_UNIT+" l "+4*Blockly.BlockSvg.GRID_UNIT+","+4*Blockly.BlockSvg.GRID_UNIT+" l "+-4*Blockly.BlockSvg.GRID_UNIT+","+4*Blockly.BlockSvg.GRID_UNIT+" h "+-4*Blockly.BlockSvg.GRID_UNIT+" l "+-4*Blockly.BlockSvg.GRID_UNIT+","+-4*Blockly.BlockSvg.GRID_UNIT+" l "+4*Blockly.BlockSvg.GRID_UNIT+","+-4*Blockly.BlockSvg.GRID_UNIT+" z";Blockly.BlockSvg.INPUT_SHAPE_HEXAGONAL_WIDTH=12*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.INPUT_SHAPE_SQUARE=Blockly.BlockSvg.TOP_LEFT_CORNER_START+Blockly.BlockSvg.TOP_LEFT_CORNER+" h "+(12*Blockly.BlockSvg.GRID_UNIT-2*Blockly.BlockSvg.CORNER_RADIUS)+Blockly.BlockSvg.TOP_RIGHT_CORNER+" v "+(8*Blockly.BlockSvg.GRID_UNIT-2*Blockly.BlockSvg.CORNER_RADIUS)+Blockly.BlockSvg.BOTTOM_RIGHT_CORNER+" h "+(-12*Blockly.BlockSvg.GRID_UNIT+2*Blockly.BlockSvg.CORNER_RADIUS)+Blockly.BlockSvg.BOTTOM_LEFT_CORNER+" z";Blockly.BlockSvg.INPUT_SHAPE_SQUARE_WIDTH=10*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.INPUT_SHAPE_ROUND="M "+4*Blockly.BlockSvg.GRID_UNIT+",0 h "+4*Blockly.BlockSvg.GRID_UNIT+" a "+4*Blockly.BlockSvg.GRID_UNIT+" "+4*Blockly.BlockSvg.GRID_UNIT+" 0 0 1 0 "+8*Blockly.BlockSvg.GRID_UNIT+" h "+-4*Blockly.BlockSvg.GRID_UNIT+" a "+4*Blockly.BlockSvg.GRID_UNIT+" "+4*Blockly.BlockSvg.GRID_UNIT+" 0 0 1 0 -"+8*Blockly.BlockSvg.GRID_UNIT+" z";Blockly.BlockSvg.INPUT_SHAPE_ROUND_WIDTH=12*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.INPUT_SHAPE_HEIGHT=8*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.FIELD_HEIGHT=8*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.FIELD_WIDTH=6*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.EDITABLE_FIELD_PADDING=6;Blockly.BlockSvg.BOX_FIELD_PADDING=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.DROPDOWN_ARROW_PADDING=2*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.FIELD_WIDTH_MIN_EDIT=8*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.FIELD_WIDTH_MAX_EDIT=Infinity;Blockly.BlockSvg.FIELD_HEIGHT_MAX_EDIT=Blockly.BlockSvg.FIELD_HEIGHT;&#xD;	Blockly.BlockSvg.FIELD_TOP_PADDING=.5*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.NUMBER_FIELD_CORNER_RADIUS=4*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.TEXT_FIELD_CORNER_RADIUS=1*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.FIELD_DEFAULT_CORNER_RADIUS=4*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.MAX_DISPLAY_LENGTH=Infinity;Blockly.BlockSvg.NO_PREVIOUS_INPUT_X_MIN=12*Blockly.BlockSvg.GRID_UNIT;Blockly.BlockSvg.INLINE_PADDING_Y=1*Blockly.BlockSvg.GRID_UNIT;&#xD;	Blockly.BlockSvg.FIELD_TEXTINPUT_FONTSIZE_INITIAL=12;Blockly.BlockSvg.FIELD_TEXTINPUT_FONTSIZE_FINAL=12;Blockly.BlockSvg.FIELD_TEXTINPUT_EXPAND_PAST_TRUNCATION=!1;Blockly.BlockSvg.FIELD_TEXTINPUT_ANIMATE_POSITIONING=!1;&#xD;	Blockly.BlockSvg.SHAPE_IN_SHAPE_PADDING={1:{0:5*Blockly.BlockSvg.GRID_UNIT,1:2*Blockly.BlockSvg.GRID_UNIT,2:5*Blockly.BlockSvg.GRID_UNIT,3:5*Blockly.BlockSvg.GRID_UNIT},2:{0:3*Blockly.BlockSvg.GRID_UNIT,1:3*Blockly.BlockSvg.GRID_UNIT,2:1*Blockly.BlockSvg.GRID_UNIT,3:2*Blockly.BlockSvg.GRID_UNIT},3:{0:2*Blockly.BlockSvg.GRID_UNIT,1:2*Blockly.BlockSvg.GRID_UNIT,2:2*Blockly.BlockSvg.GRID_UNIT,3:2*Blockly.BlockSvg.GRID_UNIT}};&#xD;	Blockly.BlockSvg.prototype.updateColour=function(){var a=this.getColourTertiary();this.isShadow()&amp;&amp;this.parentBlock_&amp;&amp;(a=this.parentBlock_.getColourTertiary(),this.inputList[0]&amp;&amp;this.inputList[0].fieldRow[0]&amp;&amp;this.inputList[0].fieldRow[0]instanceof Blockly.FieldColour&amp;&amp;(a=Blockly.Colours.colourPickerStroke));this.svgPath_.setAttribute("stroke",a);a=this.isGlowingBlock_?this.getColourSecondary():this.getColour();this.svgPath_.setAttribute("fill",a);this.svgPath_.setAttribute("fill-opacity",this.getOpacity());&#xD;	for(var b in this.inputShapes_)this.inputShapes_[b].setAttribute("fill",this.getColourTertiary());b=this.getIcons();for(a=0;a&lt;b.length;a++)b[a].updateColour();for(b=0;a=this.inputList[b];b++)for(var c=0,d;d=a.fieldRow[c];c++)d.setText(null)};&#xD;	Blockly.BlockSvg.prototype.highlightForReplacement=function(a){a?(this.svgPath_.setAttribute("filter","url(#blocklyReplacementGlowFilter)"),Blockly.utils.addClass(this.svgGroup_,"blocklyReplaceable")):(this.svgPath_.removeAttribute("filter"),Blockly.utils.removeClass(this.svgGroup_,"blocklyReplaceable"))};&#xD;	Blockly.BlockSvg.prototype.highlightShapeForInput=function(a,b){var c=this.getInputWithConnection(a);if(!c)throw"No input found for the connection";c=this.inputShapes_[c.name];b?(c.setAttribute("filter","url(#blocklyReplacementGlowFilter)"),Blockly.utils.addClass(this.svgGroup_,"blocklyReplaceable")):(c.removeAttribute("filter"),Blockly.utils.removeClass(this.svgGroup_,"blocklyReplaceable"))};&#xD;	Blockly.BlockSvg.prototype.getHeightWidth=function(){var a=this.height,b=this.width,c=this.getNextBlock();c&amp;&amp;(c=c.getHeightWidth(),a+=c.height,a-=Blockly.BlockSvg.NOTCH_HEIGHT,b=Math.max(b,c.width));return{height:a,width:b}};&#xD;	Blockly.BlockSvg.prototype.render=function(a){Blockly.Field.startCache();this.rendered=!0;var b=Blockly.BlockSvg.SEP_SPACE_X;this.RTL&amp;&amp;(b=-b);for(var c=this.getIcons(),d=0;d&lt;c.length;d++)b=c[d].renderIcon(b);b+=this.RTL?Blockly.BlockSvg.SEP_SPACE_X:-Blockly.BlockSvg.SEP_SPACE_X;c=this.renderCompute_(b);this.renderDraw_(b,c);this.renderClassify_();!1!==a&amp;&amp;((a=this.getParent())?a.render(!0):Blockly.resizeSvgContents(this.workspace));Blockly.Field.stopCache()};&#xD;	Blockly.BlockSvg.prototype.renderFields_=function(a,b,c){this.RTL&amp;&amp;(b=-b);for(var d=0,e;e=a[d];d++){var f=e.getSvgRoot();if(f){var g=-e.getSize().height/2;this.RTL?(b-=e.renderSep+e.renderWidth,f.setAttribute("transform","translate("+b+","+(c+g)+")"),e.renderWidth&amp;&amp;(b-=Blockly.BlockSvg.SEP_SPACE_X)):(f.setAttribute("transform","translate("+(b+e.renderSep)+","+(c+g)+")"),e.renderWidth&amp;&amp;(b+=e.renderSep+e.renderWidth+Blockly.BlockSvg.SEP_SPACE_X));this.isInsertionMarker()&amp;&amp;f.setAttribute("display","none")}}return this.RTL?&#xD;	-b:b};&#xD;	Blockly.BlockSvg.prototype.renderCompute_=function(a){var b,c=this.inputList,d=[];d.rightEdge=0;for(var e=d.bottomEdge=0,f=!1,g=!1,h=!1,k=void 0,l=0,m;m=c[l];l++)if(m.isVisible()){if(k&amp;&amp;k!=Blockly.NEXT_STATEMENT&amp;&amp;m.type!=Blockly.NEXT_STATEMENT)var n=d[d.length-1];else k=m.type,n=[],n.type=m.type!=Blockly.NEXT_STATEMENT?Blockly.BlockSvg.INLINE:m.type,n.height=0,n.paddingStart=Blockly.BlockSvg.SEP_SPACE_X,n.paddingEnd=Blockly.BlockSvg.SEP_SPACE_X,d.push(n);n.push(m);1===c.length&amp;&amp;this.isShadow()&amp;&amp;this.outputConnection?&#xD;	m.renderHeight=Blockly.BlockSvg.MIN_BLOCK_Y_SINGLE_FIELD_OUTPUT:m.renderHeight=this.outputConnection?Blockly.BlockSvg.MIN_BLOCK_Y_REPORTER:n.type==Blockly.NEXT_STATEMENT?Blockly.BlockSvg.MIN_STATEMENT_INPUT_HEIGHT:b&amp;&amp;b.type==Blockly.NEXT_STATEMENT?Blockly.BlockSvg.EXTRA_STATEMENT_ROW_Y:Blockly.BlockSvg.MIN_BLOCK_Y;if(m.type!=Blockly.INPUT_VALUE||m.connection&amp;&amp;m.connection.isConnected())m.renderWidth=0;else switch(m.connection.getOutputShape()){case Blockly.OUTPUT_SHAPE_SQUARE:m.renderWidth=Blockly.BlockSvg.INPUT_SHAPE_SQUARE_WIDTH;&#xD;	break;case Blockly.OUTPUT_SHAPE_ROUND:m.renderWidth=Blockly.BlockSvg.INPUT_SHAPE_ROUND_WIDTH;break;case Blockly.OUTPUT_SHAPE_HEXAGONAL:m.renderWidth=Blockly.BlockSvg.INPUT_SHAPE_HEXAGONAL_WIDTH;break;default:m.renderWidth=0}n.statementNotchAtBottom=!0;m.connection&amp;&amp;m.connection.type===Blockly.NEXT_STATEMENT&amp;&amp;(b=m.connection.targetBlock())&amp;&amp;!b.lastConnectionInStack()&amp;&amp;(n.statementNotchAtBottom=!1);if(m.connection){b=m.connection.targetBlock();var p=0;b?(p=b.getHeightWidth(),b=p.height,p=p.width):b=&#xD;	Blockly.BlockSvg.INPUT_SHAPE_HEIGHT;m.connection.type===Blockly.INPUT_VALUE&amp;&amp;(b+=2*Blockly.BlockSvg.INLINE_PADDING_Y);m.connection.type===Blockly.NEXT_STATEMENT&amp;&amp;n.statementNotchAtBottom&amp;&amp;(b-=Blockly.BlockSvg.NOTCH_HEIGHT);m.renderHeight=Math.max(m.renderHeight,b);m.renderWidth=Math.max(m.renderWidth,p)}n.height=Math.max(n.height,m.renderHeight);m.fieldWidth=0;1==d.length&amp;&amp;(m.fieldWidth+=this.RTL?-a:a);b=!1;for(var p=0,q;q=m.fieldRow[p];p++){0!=p&amp;&amp;(m.fieldWidth+=Blockly.BlockSvg.SEP_SPACE_X);var r=&#xD;	q.getSize();q.renderWidth=r.width;q.renderSep=b&amp;&amp;q.EDITABLE?Blockly.BlockSvg.SEP_SPACE_X:0;m.fieldWidth+=q.renderWidth+q.renderSep;n.height=Math.max(n.height,r.height);b=q.EDITABLE}n.type!=Blockly.BlockSvg.INLINE&amp;&amp;(n.type==Blockly.NEXT_STATEMENT?(g=!0,e=Math.max(e,m.fieldWidth)):n.type==Blockly.INPUT_VALUE?f=!0:n.type==Blockly.DUMMY_INPUT&amp;&amp;(h=!0));b=n}this.computeOutputPadding_(d);d.statementEdge=Blockly.BlockSvg.STATEMENT_INPUT_EDGE_WIDTH+e;this.previousConnection||this.nextConnection?d.rightEdge=&#xD;	Math.max(d.rightEdge,Blockly.BlockSvg.MIN_BLOCK_X):this.outputConnection&amp;&amp;(this.isShadow()?d.rightEdge=Math.max(d.rightEdge,Blockly.BlockSvg.MIN_BLOCK_X_SHADOW_OUTPUT):d.rightEdge=Math.max(d.rightEdge,Blockly.BlockSvg.MIN_BLOCK_X_OUTPUT));g&amp;&amp;(d.rightEdge=Math.max(d.rightEdge,Blockly.BlockSvg.MIN_BLOCK_X_WITH_STATEMENT));for(l=0;l&lt;d.length;l++)d.bottomEdge+=d[l].height;0&lt;this.insertionMarkerMinWidth_&amp;&amp;(d.rightEdge=Math.max(d.rightEdge,this.insertionMarkerMinWidth_));d.hasValue=f;d.hasStatement=g;d.hasDummy=&#xD;	h;return d};&#xD;	Blockly.BlockSvg.prototype.computeOutputPadding_=function(a){if(this.getOutputShape()&amp;&amp;this.outputConnection&amp;&amp;!this.isShadow()&amp;&amp;!(1&lt;a.length)){a=a[0];var b=this.getOutputShape();a.paddingStart=0;a.paddingEnd=0;var c=a[0];if(c.fieldRow[0])var d=0;else d=c.connection,d=d.targetConnection?d.targetConnection.getSourceBlock().getOutputShape():d.getOutputShape(),b==Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;d!=Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;(c=c.renderHeight-Blockly.BlockSvg.MIN_BLOCK_Y_REPORTER,a.paddingStart+=c/&#xD;	2);a.paddingStart+=Blockly.BlockSvg.SHAPE_IN_SHAPE_PADDING[b][d];c=a[a.length-1];c.connection?(d=c.connection,d=d.targetConnection?d.targetConnection.getSourceBlock().getOutputShape():d.getOutputShape(),b==Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;d!=Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;(c=c.renderHeight-Blockly.BlockSvg.MIN_BLOCK_Y_REPORTER,a.paddingEnd+=c/2)):d=0;a.paddingEnd+=Blockly.BlockSvg.SHAPE_IN_SHAPE_PADDING[b][d]}};&#xD;	Blockly.BlockSvg.prototype.renderDraw_=function(a,b){this.squareTopLeftCorner_=this.startHat_=!1;this.outputConnection||this.previousConnection||(this.startHat_=this.squareTopLeftCorner_=!0,b.rightEdge=Math.max(b.rightEdge,100));this.edgeShapeWidth_=0;this.edgeShape_=null;if(this.outputConnection){var c=this.getOutputShape();if(c===Blockly.OUTPUT_SHAPE_HEXAGONAL||c===Blockly.OUTPUT_SHAPE_ROUND)this.edgeShapeWidth_=b.bottomEdge/2,this.edgeShape_=c,this.squareTopLeftCorner_=!0}var c=this.getRelativeToSurfaceXY(),&#xD;	d=[];this.renderDrawTop_(d,c,b.rightEdge);var e=this.renderDrawRight_(d,c,b,a);this.renderDrawBottom_(d,c,e);this.renderDrawLeft_(d,c);c=d.join(" ");this.svgPath_.setAttribute("d",c);this.RTL&amp;&amp;this.svgPath_.setAttribute("transform","scale(-1 1)")};&#xD;	Blockly.BlockSvg.prototype.renderClassify_=function(){var a=[];if(this.outputConnection)this.isShadow_?a.push("argument"):a.push("reporter"),this.edgeShape_===Blockly.OUTPUT_SHAPE_HEXAGONAL?a.push("boolean"):this.edgeShape_===Blockly.OUTPUT_SHAPE_ROUND&amp;&amp;a.push("round");else{for(var b=this.inputList,c=0,d=0,e;e=b[d];d++)e.connection&amp;&amp;e.connection.type===Blockly.NEXT_STATEMENT&amp;&amp;c++;c&amp;&amp;(a.push("c-block"),a.push("c-"+c));this.startHat_?a.push("hat"):c||a.push("stack");this.nextConnection||a.push("end")}this.svgGroup_.setAttribute("data-shapes",&#xD;	a.join(" "));this.getCategory()&amp;&amp;this.svgGroup_.setAttribute("data-category",this.getCategory())};&#xD;	Blockly.BlockSvg.prototype.renderDrawTop_=function(a,b,c){this.squareTopLeftCorner_?(a.push("m 0,0"),this.startHat_&amp;&amp;a.push(Blockly.BlockSvg.START_HAT_PATH),this.edgeShapeWidth_&amp;&amp;a.push("m "+this.edgeShapeWidth_+",0")):(a.push(Blockly.BlockSvg.TOP_LEFT_CORNER_START),a.push(Blockly.BlockSvg.TOP_LEFT_CORNER));this.previousConnection&amp;&amp;(a.push("H",Blockly.BlockSvg.NOTCH_START_PADDING),a.push(Blockly.BlockSvg.NOTCH_PATH_LEFT),this.previousConnection.moveTo(b.x+(this.RTL?-Blockly.BlockSvg.NOTCH_WIDTH:Blockly.BlockSvg.NOTCH_WIDTH),&#xD;	b.y));this.width=c};&#xD;	Blockly.BlockSvg.prototype.renderDrawRight_=function(a,b,c,d){for(var e,f,g,h=0,k,l=0,m;m=c[l];l++){e=m.paddingStart;0==l&amp;&amp;(e+=this.RTL?-d:d);if(m.type==Blockly.BlockSvg.INLINE){for(var n=0;g=m[n];n++)if(f=e,e=h,e+=m.height/2,g.align!=Blockly.ALIGN_LEFT&amp;&amp;(k=c.rightEdge-g.fieldWidth-2*Blockly.BlockSvg.SEP_SPACE_X,g.align==Blockly.ALIGN_RIGHT?f+=k:g.align==Blockly.ALIGN_CENTRE&amp;&amp;(f+=k/2)),e=this.renderFields_(g.fieldRow,f,e),g.type==Blockly.INPUT_VALUE){0===l&amp;&amp;this.previousConnection&amp;&amp;(e=Math.max(e,&#xD;	Blockly.BlockSvg.NO_PREVIOUS_INPUT_X_MIN));f=this.RTL?b.x-e:b.x+e;var p=m.height/2;k=b.y+h+p;g.connection.moveTo(f,k);g.connection.isConnected()&amp;&amp;g.connection.tighten_();this.renderInputShape_(g,e,h+p);e+=g.renderWidth+Blockly.BlockSvg.SEP_SPACE_X}e-=Blockly.BlockSvg.SEP_SPACE_X;e+=m.paddingEnd;c.rightEdge=Math.max(e,c.rightEdge);e=Math.max(e,c.rightEdge);this.width=Math.max(this.width,e);this.edgeShape_?a.push("H",e-this.edgeShapeWidth_):(a.push("H",e-Blockly.BlockSvg.CORNER_RADIUS-this.edgeShapeWidth_),&#xD;	a.push(Blockly.BlockSvg.TOP_RIGHT_CORNER));this.edgeShape_||a.push("v",m.height-2*Blockly.BlockSvg.CORNER_RADIUS)}else m.type==Blockly.NEXT_STATEMENT&amp;&amp;(g=m[0],f=e,e=h,this.renderFields_(g.fieldRow,f,e),a.push(Blockly.BlockSvg.BOTTOM_RIGHT_CORNER),e=c.statementEdge+Blockly.BlockSvg.NOTCH_WIDTH,a.push("H",e+Blockly.BlockSvg.STATEMENT_INPUT_INNER_SPACE+2*Blockly.BlockSvg.CORNER_RADIUS),a.push(Blockly.BlockSvg.NOTCH_PATH_RIGHT),a.push("h","-"+Blockly.BlockSvg.STATEMENT_INPUT_INNER_SPACE),a.push(Blockly.BlockSvg.INNER_TOP_LEFT_CORNER),&#xD;	a.push("v",m.height-2*Blockly.BlockSvg.CORNER_RADIUS),a.push(Blockly.BlockSvg.INNER_BOTTOM_LEFT_CORNER),m.statementNotchAtBottom&amp;&amp;(a.push("h ",Blockly.BlockSvg.STATEMENT_INPUT_INNER_SPACE),a.push(Blockly.BlockSvg.NOTCH_PATH_LEFT)),a.push("H",c.rightEdge-Blockly.BlockSvg.CORNER_RADIUS),f=b.x+(this.RTL?-e:e),k=b.y+h,g.connection.moveTo(f,k),g.connection.isConnected()&amp;&amp;(g.connection.tighten_(),this.width=Math.max(this.width,c.statementEdge+g.connection.targetBlock().getHeightWidth().width)),l==c.length-&#xD;	1||c[l+1].type==Blockly.NEXT_STATEMENT)&amp;&amp;(a.push(Blockly.BlockSvg.TOP_RIGHT_CORNER),a.push("v",Blockly.BlockSvg.EXTRA_STATEMENT_ROW_Y-2*Blockly.BlockSvg.CORNER_RADIUS),h+=Blockly.BlockSvg.EXTRA_STATEMENT_ROW_Y);h+=m.height}this.edgeShape_&amp;&amp;(this.edgeShape_===Blockly.OUTPUT_SHAPE_ROUND?a.push("a "+this.edgeShapeWidth_+" "+this.edgeShapeWidth_+" 0 0 1 0 "+2*this.edgeShapeWidth_):this.edgeShape_===Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;a.push("l "+this.edgeShapeWidth_+" "+this.edgeShapeWidth_+" l "+-this.edgeShapeWidth_+&#xD;	" "+this.edgeShapeWidth_));c.length||(h=Blockly.BlockSvg.MIN_BLOCK_Y,a.push("V",h));return h};&#xD;	Blockly.BlockSvg.prototype.renderInputShape_=function(a,b,c){var d=this.inputShapes_[a.name];if(d)if(a.connection.targetConnection)d.setAttribute("style","visibility: hidden");else{switch(a.connection.getOutputShape()){case Blockly.OUTPUT_SHAPE_HEXAGONAL:a=Blockly.BlockSvg.INPUT_SHAPE_HEXAGONAL;var e=Blockly.BlockSvg.INPUT_SHAPE_HEXAGONAL_WIDTH;var f="boolean";break;case Blockly.OUTPUT_SHAPE_ROUND:a=Blockly.BlockSvg.INPUT_SHAPE_ROUND;e=Blockly.BlockSvg.INPUT_SHAPE_ROUND_WIDTH;f="round";break;default:a=&#xD;	Blockly.BlockSvg.INPUT_SHAPE_SQUARE,e=Blockly.BlockSvg.INPUT_SHAPE_SQUARE_WIDTH,f="square"}b=this.RTL?-b-e:b;c-=Blockly.BlockSvg.INPUT_SHAPE_HEIGHT/2;d.setAttribute("d",a);d.setAttribute("transform","translate("+b+","+c+")");d.setAttribute("data-argument-type",f);d.setAttribute("style","visibility: visible")}};&#xD;	Blockly.BlockSvg.prototype.renderDrawBottom_=function(a,b,c){this.height=c;this.edgeShape_||a.push(Blockly.BlockSvg.BOTTOM_RIGHT_CORNER);this.nextConnection&amp;&amp;(a.push("H",Blockly.BlockSvg.NOTCH_WIDTH+Blockly.BlockSvg.NOTCH_START_PADDING+Blockly.BlockSvg.CORNER_RADIUS," "),a.push(Blockly.BlockSvg.NOTCH_PATH_RIGHT),this.nextConnection.moveTo(this.RTL?b.x-Blockly.BlockSvg.NOTCH_WIDTH:b.x+Blockly.BlockSvg.NOTCH_WIDTH,b.y+c),this.nextConnection.isConnected()&amp;&amp;this.nextConnection.tighten_(),this.height+=&#xD;	Blockly.BlockSvg.NOTCH_HEIGHT);this.edgeShape_?a.push("H",this.edgeShapeWidth_):(a.push("H",Blockly.BlockSvg.CORNER_RADIUS),a.push(Blockly.BlockSvg.BOTTOM_LEFT_CORNER))};&#xD;	Blockly.BlockSvg.prototype.renderDrawLeft_=function(a,b){this.outputConnection&amp;&amp;this.outputConnection.moveTo(b.x,b.y+this.height/2);this.edgeShape_&amp;&amp;(this.edgeShape_===Blockly.OUTPUT_SHAPE_ROUND?a.push("a "+this.edgeShapeWidth_+" "+this.edgeShapeWidth_+" 0 0 1 0 -"+2*this.edgeShapeWidth_):this.edgeShape_===Blockly.OUTPUT_SHAPE_HEXAGONAL&amp;&amp;a.push("l "+-this.edgeShapeWidth_+" "+-this.edgeShapeWidth_+" l "+this.edgeShapeWidth_+" "+-this.edgeShapeWidth_));a.push("z")};&#xD;	Blockly.BlockSvg.prototype.positionNewBlock=function(a,b,c){b.type==Blockly.NEXT_STATEMENT&amp;&amp;a.moveBy(c.x_-b.x_,c.y_-b.y_)};Blockly.Msg={};goog.getMsgOrig=goog.getMsg;goog.getMsg=function(a,b){var c=goog.getMsg.blocklyMsgMap[a];c&amp;&amp;(a=Blockly.Msg[c]);return goog.getMsgOrig(a,b)};goog.getMsg.blocklyMsgMap={Today:"TODAY"};Blockly.FieldTextInput=function(a,b,c){Blockly.FieldTextInput.superClass_.constructor.call(this,a,b);this.setRestrictor(c);this.addArgType("text")};goog.inherits(Blockly.FieldTextInput,Blockly.Field);Blockly.FieldTextInput.ANIMATION_TIME=.25;Blockly.FieldTextInput.TEXT_MEASURE_PADDING_MAGIC=45;Blockly.FieldTextInput.prototype.CURSOR="text";Blockly.FieldTextInput.prototype.spellcheck_=!0;&#xD;	Blockly.FieldTextInput.prototype.init=function(){Blockly.FieldTextInput.superClass_.init.call(this);this.sourceBlock_.isShadow()||(this.box_=Blockly.utils.createSvgElement("rect",{rx:Blockly.BlockSvg.CORNER_RADIUS,ry:Blockly.BlockSvg.CORNER_RADIUS,x:0,y:0,width:this.size_.width,height:this.size_.height,fill:Blockly.Colours.textField,stroke:this.sourceBlock_.getColourTertiary()}),this.fieldGroup_.insertBefore(this.box_,this.textElement_))};&#xD;	Blockly.FieldTextInput.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldTextInput.superClass_.dispose.call(this)};Blockly.FieldTextInput.prototype.setValue=function(a){if(null!==a){if(this.sourceBlock_){var b=this.callValidator(a);null!==b&amp;&amp;(a=b)}Blockly.Field.prototype.setValue.call(this,a)}};&#xD;	Blockly.FieldTextInput.prototype.setText=function(a){null!==a&amp;&amp;(a=String(a),a!==this.text_&amp;&amp;(this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.text_,a)),Blockly.Field.prototype.setText.call(this,a)))};Blockly.FieldTextInput.prototype.setSpellcheck=function(a){this.spellcheck_=a};Blockly.FieldTextInput.prototype.setRestrictor=function(a){this.restrictor_=a};&#xD;	Blockly.FieldTextInput.prototype.showEditor_=function(a,b,c,d){this.workspace_=this.sourceBlock_.workspace;a=a||!1;var e=b||!1;Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,this.widgetDispose_(),this.widgetDisposeAnimationFinished_(),Blockly.FieldTextInput.ANIMATION_TIME);b=Blockly.WidgetDiv.DIV;b.className+=" fieldTextInput";var f=goog.dom.createDom("INPUT","blocklyHtmlInput");f.setAttribute("spellcheck",this.spellcheck_);e&amp;&amp;f.setAttribute("readonly","true");Blockly.FieldTextInput.htmlInput_=&#xD;	f;b.appendChild(f);c&amp;&amp;(this.sourceBlock_.RTL?f.style.paddingLeft=this.arrowSize_+Blockly.BlockSvg.DROPDOWN_ARROW_PADDING+"px":f.style.paddingRight=this.arrowSize_+Blockly.BlockSvg.DROPDOWN_ARROW_PADDING+"px",c=goog.dom.createDom("IMG","blocklyTextDropDownArrow"),c.setAttribute("src",Blockly.mainWorkspace.options.pathToMedia+"dropdown-arrow-dark.svg"),c.style.width=this.arrowSize_+"px",c.style.height=this.arrowSize_+"px",c.style.top=this.arrowY_+"px",c.style.cursor="pointer",this.sourceBlock_.RTL?&#xD;	c.style.left="11px":c.style.right="11px",d&amp;&amp;(f.dropDownArrowMouseWrapper_=Blockly.bindEvent_(c,"mousedown",this,d)),b.appendChild(c));f.value=f.defaultValue=this.text_;f.oldValue_=null;this.validate_();this.resizeEditor_();a||(f.focus(),f.select(),f.setSelectionRange(0,99999));f.onKeyDownWrapper_=Blockly.bindEventWithChecks_(f,"keydown",this,this.onHtmlInputKeyDown_);f.onKeyUpWrapper_=Blockly.bindEventWithChecks_(f,"keyup",this,this.onHtmlInputChange_);f.onKeyPressWrapper_=Blockly.bindEventWithChecks_(f,&#xD;	"keypress",this,this.onHtmlInputChange_);f.onInputWrapper_=Blockly.bindEvent_(f,"input",this,this.onHtmlInputChange_);f.onWorkspaceChangeWrapper_=this.resizeEditor_.bind(this);this.workspace_.addChangeListener(f.onWorkspaceChangeWrapper_);d="box-shadow "+Blockly.FieldTextInput.ANIMATION_TIME+"s";Blockly.BlockSvg.FIELD_TEXTINPUT_ANIMATE_POSITIONING&amp;&amp;(b.style.transition+=",padding "+Blockly.FieldTextInput.ANIMATION_TIME+"s,width "+Blockly.FieldTextInput.ANIMATION_TIME+"s,height "+Blockly.FieldTextInput.ANIMATION_TIME+&#xD;	"s,margin-left "+Blockly.FieldTextInput.ANIMATION_TIME+"s");b.style.transition=d;f.style.transition="font-size "+Blockly.FieldTextInput.ANIMATION_TIME+"s";f.style.fontSize=Blockly.BlockSvg.FIELD_TEXTINPUT_FONTSIZE_FINAL+"pt";b.style.boxShadow="0px 0px 0px 4px "+Blockly.Colours.fieldShadow};&#xD;	Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_=function(a){var b=Blockly.FieldTextInput.htmlInput_;13==a.keyCode?Blockly.WidgetDiv.hide():27==a.keyCode?(b.value=b.defaultValue,Blockly.WidgetDiv.hide()):9==a.keyCode&amp;&amp;(Blockly.WidgetDiv.hide(),this.sourceBlock_.tab(this,!a.shiftKey),a.preventDefault())};Blockly.FieldTextInput.GECKO_KEYCODE_WHITELIST=[97,99,118,120];&#xD;	Blockly.FieldTextInput.prototype.onHtmlInputChange_=function(a){if("keypress"===a.type&amp;&amp;this.restrictor_){var b=!1;if(goog.userAgent.GECKO){var c=a.charCode;if(32&gt;c||127==c)b=!0;else if(a.metaKey||a.ctrlKey)b=-1&lt;Blockly.FieldTextInput.GECKO_KEYCODE_WHITELIST.indexOf(c)}else c=a.keyCode;c=String.fromCharCode(c);if(!b&amp;&amp;!this.restrictor_.test(c)&amp;&amp;a.preventDefault){a.preventDefault();return}}a=Blockly.FieldTextInput.htmlInput_;b=a.value;b!==a.oldValue_?(a.oldValue_=b,this.setText(b),this.validate_()):&#xD;	goog.userAgent.WEBKIT&amp;&amp;this.sourceBlock_.render();this.resizeEditor_()};Blockly.FieldTextInput.prototype.validate_=function(){var a=!0;goog.asserts.assertObject(Blockly.FieldTextInput.htmlInput_);var b=Blockly.FieldTextInput.htmlInput_;this.sourceBlock_&amp;&amp;(a=this.callValidator(b.value));null===a?Blockly.utils.addClass(b,"blocklyInvalidInput"):Blockly.utils.removeClass(b,"blocklyInvalidInput")};&#xD;	Blockly.FieldTextInput.prototype.resizeEditor_=function(){var a=this.sourceBlock_.workspace.scale,b=Blockly.WidgetDiv.DIV;if(Blockly.BlockSvg.FIELD_TEXTINPUT_EXPAND_PAST_TRUNCATION){var c=Blockly.utils.measureText(Blockly.FieldTextInput.htmlInput_.style.fontSize,Blockly.FieldTextInput.htmlInput_.style.fontFamily,Blockly.FieldTextInput.htmlInput_.style.fontWeight,Blockly.FieldTextInput.htmlInput_.value);c+=Blockly.FieldTextInput.TEXT_MEASURE_PADDING_MAGIC;c*=a}else c=this.sourceBlock_.getHeightWidth().width*&#xD;	a;c=Math.max(c,Blockly.BlockSvg.FIELD_WIDTH_MIN_EDIT*a);c=Math.min(c,Blockly.BlockSvg.FIELD_WIDTH_MAX_EDIT*a);b.style.width=c/a+1+"px";b.style.height=Blockly.BlockSvg.FIELD_HEIGHT+1+"px";b.style.transform="scale("+a+")";var d=this.sourceBlock_.getHeightWidth().width;b.style.marginLeft=-.5*(c-d*a)+"px";d=this.getBorderRadius()+.5;b.style.borderRadius=d+"px";Blockly.FieldTextInput.htmlInput_.style.borderRadius=d+"px";d=this.sourceBlock_.getColourTertiary();b.style.borderColor=d;d=this.getAbsoluteXY_();&#xD;	d.x-=a/2;d.y-=a/2;this.sourceBlock_.RTL&amp;&amp;(d.x+=c,d.x-=b.offsetWidth*a,d.x+=1*a);d.y+=1*a;goog.userAgent.GECKO&amp;&amp;Blockly.WidgetDiv.DIV.style.top&amp;&amp;(d.x+=2*a,d.y+=1*a);goog.userAgent.WEBKIT&amp;&amp;(d.y-=1*a);b.style.left=d.x+"px";b.style.top=d.y+"px"};Blockly.FieldTextInput.prototype.getBorderRadius=function(){return this.sourceBlock_.getOutputShape()==Blockly.OUTPUT_SHAPE_ROUND?Blockly.BlockSvg.NUMBER_FIELD_CORNER_RADIUS:Blockly.BlockSvg.TEXT_FIELD_CORNER_RADIUS};&#xD;	Blockly.FieldTextInput.prototype.widgetDispose_=function(){var a=this;return function(){var b=Blockly.WidgetDiv.DIV,c=Blockly.FieldTextInput.htmlInput_,d=c.value;if(a.sourceBlock_)if(d=a.callValidator(d),null===d)d=c.defaultValue;else if(a.onFinishEditing_)a.onFinishEditing_(d);a.setText(d);a.sourceBlock_.rendered&amp;&amp;a.sourceBlock_.render();Blockly.unbindEvent_(c.onKeyDownWrapper_);Blockly.unbindEvent_(c.onKeyUpWrapper_);Blockly.unbindEvent_(c.onKeyPressWrapper_);Blockly.unbindEvent_(c.onInputWrapper_);&#xD;	c.dropDownArrowMouseWrapper_&amp;&amp;Blockly.unbindEvent_(c.dropDownArrowMouseWrapper_);a.workspace_.removeChangeListener(c.onWorkspaceChangeWrapper_);Blockly.Events.setGroup(!1);c.style.fontSize=Blockly.BlockSvg.FIELD_TEXTINPUT_FONTSIZE_INITIAL+"pt";b.style.boxShadow="";a.sourceBlock_&amp;&amp;(c=a.sourceBlock_.getHeightWidth(),b.style.width=c.width+1+"px",b.style.height=c.height+1+"px");b.style.marginLeft=0}};&#xD;	Blockly.FieldTextInput.prototype.widgetDisposeAnimationFinished_=function(){return function(){var a=Blockly.WidgetDiv.DIV.style;a.width="auto";a.height="auto";a.fontSize="";Blockly.WidgetDiv.DIV.className="blocklyWidgetDiv";Blockly.WidgetDiv.DIV.removeAttribute("style");Blockly.FieldTextInput.htmlInput_.style.transition="";Blockly.FieldTextInput.htmlInput_=null}};&#xD;	Blockly.FieldTextInput.numberValidator=function(a){console.warn("Blockly.FieldTextInput.numberValidator is deprecated. Use Blockly.FieldNumber instead.");if(null===a)return null;a=String(a);a=a.replace(/O/ig,"0");a=a.replace(/,/g,"");a=parseFloat(a||0);return isNaN(a)?null:String(a)};Blockly.FieldTextInput.nonnegativeIntegerValidator=function(a){(a=Blockly.FieldTextInput.numberValidator(a))&amp;&amp;(a=String(Math.max(0,Math.floor(a))));return a};Blockly.FieldAngle=function(a,b){this.symbol_=Blockly.utils.createSvgElement("tspan",{},null);this.symbol_.appendChild(document.createTextNode("\u00b0"));a=a&amp;&amp;!isNaN(a)?String(a):"0";Blockly.FieldAngle.superClass_.constructor.call(this,a,b);this.addArgType("angle")};goog.inherits(Blockly.FieldAngle,Blockly.FieldTextInput);Blockly.FieldAngle.ROUND=15;Blockly.FieldAngle.HALF=50;Blockly.FieldAngle.CLOCKWISE=!0;Blockly.FieldAngle.OFFSET=90;Blockly.FieldAngle.WRAP=180;&#xD;	Blockly.FieldAngle.RADIUS=Blockly.FieldAngle.HALF-1;Blockly.FieldAngle.prototype.dispose_=function(){var a=this;return function(){Blockly.FieldAngle.superClass_.dispose_.call(a)();a.gauge_=null;a.clickWrapper_&amp;&amp;Blockly.unbindEvent_(a.clickWrapper_);a.moveWrapper_&amp;&amp;Blockly.unbindEvent_(a.moveWrapper_)}};&#xD;	Blockly.FieldAngle.prototype.showEditor_=function(){Blockly.FieldAngle.superClass_.showEditor_.call(this,goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD);Blockly.DropDownDiv.hideWithoutAnimation();Blockly.DropDownDiv.clearContent();var a=Blockly.DropDownDiv.getContentDiv(),a=Blockly.utils.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",height:2*Blockly.FieldAngle.HALF+&#xD;	"px",width:2*Blockly.FieldAngle.HALF+"px"},a);Blockly.utils.createSvgElement("circle",{cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=Blockly.utils.createSvgElement("path",{"class":"blocklyAngleGauge"},a);this.line_=Blockly.utils.createSvgElement("line",{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var b=0;360&gt;b;b+=15)Blockly.utils.createSvgElement("line",{x1:Blockly.FieldAngle.HALF+&#xD;	Blockly.FieldAngle.RADIUS,y1:Blockly.FieldAngle.HALF,x2:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS-(0==b%45?10:5),y2:Blockly.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+b+","+Blockly.FieldAngle.HALF+","+Blockly.FieldAngle.HALF+")"},a);Blockly.DropDownDiv.setColour(this.sourceBlock_.parentBlock_.getColour(),this.sourceBlock_.getColourTertiary());Blockly.DropDownDiv.setCategory(this.sourceBlock_.parentBlock_.getCategory());Blockly.DropDownDiv.showPositionedByBlock(this,this.sourceBlock_);&#xD;	this.clickWrapper_=Blockly.bindEvent_(a,"click",this,function(){Blockly.WidgetDiv.hide();Blockly.DropDownDiv.hide();Blockly.unbindEvent_(this.moveWrapper_)});this.moveWrapper_=Blockly.bindEvent_(a,"mousemove",this,this.onMouseMove);this.updateGraph_()};&#xD;	Blockly.FieldAngle.prototype.onMouseMove=function(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect(),c=a.clientX-b.left-Blockly.FieldAngle.HALF;a=a.clientY-b.top-Blockly.FieldAngle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=goog.math.toDegrees(b),0&gt;c?b+=180:0&lt;a&amp;&amp;(b+=360),b=Blockly.FieldAngle.CLOCKWISE?Blockly.FieldAngle.OFFSET+360-b:b-Blockly.FieldAngle.OFFSET,Blockly.FieldAngle.ROUND&amp;&amp;(b=Math.round(b/Blockly.FieldAngle.ROUND)*Blockly.FieldAngle.ROUND),b=this.callValidator(b),Blockly.FieldTextInput.htmlInput_.value=&#xD;	b,this.setValue(b),this.validate_(),this.resizeEditor_())};Blockly.FieldAngle.prototype.setText=function(a){Blockly.FieldAngle.superClass_.setText.call(this,a);this.textElement_&amp;&amp;(this.updateGraph_(),this.size_.width=0)};&#xD;	Blockly.FieldAngle.prototype.updateGraph_=function(){if(this.gauge_){var a=Number(this.getText())+Blockly.FieldAngle.OFFSET,b=goog.math.toRadians(a),a=["M ",Blockly.FieldAngle.HALF,",",Blockly.FieldAngle.HALF],c=Blockly.FieldAngle.HALF,d=Blockly.FieldAngle.HALF;if(!isNaN(b)){var e=goog.math.toRadians(Blockly.FieldAngle.OFFSET),f=Math.cos(e)*Blockly.FieldAngle.RADIUS,g=Math.sin(e)*-Blockly.FieldAngle.RADIUS;Blockly.FieldAngle.CLOCKWISE&amp;&amp;(b=2*e-b);c+=Math.cos(b)*Blockly.FieldAngle.RADIUS;d-=Math.sin(b)*&#xD;	Blockly.FieldAngle.RADIUS;b=Math.abs(Math.floor((b-e)/Math.PI)%2);Blockly.FieldAngle.CLOCKWISE&amp;&amp;(b=1-b);a.push(" l ",f,",",g," A ",Blockly.FieldAngle.RADIUS,",",Blockly.FieldAngle.RADIUS," 0 ",b," ",Number(Blockly.FieldAngle.CLOCKWISE)," ",c,",",d," z")}this.gauge_.setAttribute("d",a.join(""));this.line_.setAttribute("x2",c);this.line_.setAttribute("y2",d)}};&#xD;	Blockly.FieldAngle.prototype.classValidator=function(a){if(null===a)return null;a=parseFloat(a||0);if(isNaN(a))return null;a%=360;0&gt;a&amp;&amp;(a+=360);a&gt;Blockly.FieldAngle.WRAP&amp;&amp;(a-=360);return String(a)};Blockly.FieldCheckbox=function(a,b){Blockly.FieldCheckbox.superClass_.constructor.call(this,"",b);this.setValue(a);this.addArgType("checkbox")};goog.inherits(Blockly.FieldCheckbox,Blockly.Field);Blockly.FieldCheckbox.CHECK_CHAR="\u2713";Blockly.FieldCheckbox.prototype.CURSOR="default";&#xD;	Blockly.FieldCheckbox.prototype.init=function(){if(!this.fieldGroup_){Blockly.FieldCheckbox.superClass_.init.call(this);this.checkElement_=Blockly.utils.createSvgElement("text",{"class":"blocklyText blocklyCheckbox",x:-3,y:14},this.fieldGroup_);var a=document.createTextNode(Blockly.FieldCheckbox.CHECK_CHAR);this.checkElement_.appendChild(a);this.checkElement_.style.display=this.state_?"block":"none"}};Blockly.FieldCheckbox.prototype.getValue=function(){return String(this.state_).toUpperCase()};&#xD;	Blockly.FieldCheckbox.prototype.setValue=function(a){a="string"==typeof a?"TRUE"==a.toUpperCase():!!a;this.state_!==a&amp;&amp;(this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.state_,a)),this.state_=a,this.checkElement_&amp;&amp;(this.checkElement_.style.display=a?"block":"none"))};Blockly.FieldCheckbox.prototype.showEditor_=function(){var a=!this.state_;this.sourceBlock_&amp;&amp;(a=this.callValidator(a));null!==a&amp;&amp;this.setValue(String(a).toUpperCase())};Blockly.FieldColour=function(a,b){Blockly.FieldColour.superClass_.constructor.call(this,a,b);this.addArgType("colour")};goog.inherits(Blockly.FieldColour,Blockly.Field);Blockly.FieldColour.prototype.colours_=null;Blockly.FieldColour.prototype.columns_=0;Blockly.FieldColour.prototype.init=function(a){Blockly.FieldColour.superClass_.init.call(this,a);this.setValue(this.getValue())};Blockly.FieldColour.prototype.CURSOR="default";&#xD;	Blockly.FieldColour.prototype.dispose=function(){Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldColour.superClass_.dispose.call(this)};Blockly.FieldColour.prototype.getValue=function(){return this.colour_};&#xD;	Blockly.FieldColour.prototype.setValue=function(a){this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;this.colour_!=a&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.colour_,a));this.colour_=a;this.sourceBlock_&amp;&amp;this.sourceBlock_.setColour(a,this.sourceBlock_.getColourSecondary(),this.sourceBlock_.getColourTertiary())};Blockly.FieldColour.prototype.getText=function(){var a=this.colour_,b=a.match(/^#(.)\1(.)\2(.)\3$/);b&amp;&amp;(a="#"+b[1]+b[2]+b[3]);return a};&#xD;	Blockly.FieldColour.prototype.getSize=function(){return new goog.math.Size(Blockly.BlockSvg.FIELD_WIDTH,Blockly.BlockSvg.FIELD_HEIGHT)};Blockly.FieldColour.COLOURS=goog.ui.ColorPicker.SIMPLE_GRID_COLORS;Blockly.FieldColour.COLUMNS=7;Blockly.FieldColour.prototype.setColours=function(a){this.colours_=a;return this};Blockly.FieldColour.prototype.setColumns=function(a){this.columns_=a;return this};&#xD;	Blockly.FieldColour.prototype.showEditor_=function(){Blockly.WidgetDiv.show(this,this.sourceBlock_.RTL,Blockly.FieldColour.widgetDispose_);var a=new goog.ui.ColorPicker;a.setSize(this.columns_||Blockly.FieldColour.COLUMNS);a.setColors(this.colours_||Blockly.FieldColour.COLOURS);var b=goog.dom.getViewportSize(),c=goog.style.getViewportPageOffset(document),d=this.getAbsoluteXY_(),e=this.getScaledBBox_();a.render(Blockly.WidgetDiv.DIV);a.setSelectedColor(this.getValue());var f=goog.style.getSize(a.getElement());&#xD;	d.y=d.y+f.height+e.height&gt;=b.height+c.y?d.y-(f.height-1):d.y+(e.height-1);this.sourceBlock_.RTL?(d.x+=e.width,d.x-=f.width,d.x&lt;c.x&amp;&amp;(d.x=c.x)):d.x&gt;b.width+c.x-f.width&amp;&amp;(d.x=b.width+c.x-f.width);Blockly.WidgetDiv.position(d.x,d.y,b,c,this.sourceBlock_.RTL);var g=this;Blockly.FieldColour.changeEventKey_=goog.events.listen(a,goog.ui.ColorPicker.EventType.CHANGE,function(a){a=a.target.getSelectedColor()||"#000000";Blockly.WidgetDiv.hide();g.sourceBlock_&amp;&amp;(a=g.callValidator(a));null!==a&amp;&amp;g.setValue(a)})};&#xD;	Blockly.FieldColour.widgetDispose_=function(){Blockly.FieldColour.changeEventKey_&amp;&amp;goog.events.unlistenByKey(Blockly.FieldColour.changeEventKey_);Blockly.Events.setGroup(!1)};Blockly.FieldDropdown=function(a,b){this.menuGenerator_=a;this.trimOptions_();var c=this.getOptions()[0];Blockly.FieldDropdown.superClass_.constructor.call(this,c[1],b);this.addArgType("dropdown")};goog.inherits(Blockly.FieldDropdown,Blockly.Field);Blockly.FieldDropdown.CHECKMARK_OVERHANG=25;Blockly.FieldDropdown.prototype.CURSOR="default";Blockly.FieldDropdown.prototype.selectedItem=null;Blockly.FieldDropdown.prototype.value_="";Blockly.FieldDropdown.prototype.imageElement_=null;&#xD;	Blockly.FieldDropdown.prototype.imageJson_=null;&#xD;	Blockly.FieldDropdown.prototype.init=function(){if(!this.fieldGroup_){this.arrowSize_=12;this.arrowX_=0;this.arrowY_=11;this.arrow_=Blockly.utils.createSvgElement("image",{height:this.arrowSize_+"px",width:this.arrowSize_+"px"});this.arrow_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",Blockly.mainWorkspace.options.pathToMedia+"dropdown-arrow.svg");Blockly.FieldDropdown.superClass_.init.call(this);this.sourceBlock_.isShadow()||(this.box_=Blockly.utils.createSvgElement("rect",{rx:Blockly.BlockSvg.CORNER_RADIUS,&#xD;	ry:Blockly.BlockSvg.CORNER_RADIUS,x:0,y:0,width:this.size_.width,height:this.size_.height,stroke:this.sourceBlock_.getColourTertiary(),fill:this.sourceBlock_.getColour(),"class":"blocklyBlockBackground","fill-opacity":1},null),this.fieldGroup_.insertBefore(this.box_,this.textElement_));var a=this.text_;this.text_=null;this.setText(a)}};&#xD;	Blockly.FieldDropdown.prototype.showEditor_=function(){this.dropDownOpen_=!0;Blockly.DropDownDiv.hideWithoutAnimation();Blockly.DropDownDiv.clearContent();var a=Blockly.DropDownDiv.getContentDiv(),b=this,c=new goog.ui.Menu;c.setRightToLeft(this.sourceBlock_.RTL);for(var d=this.getOptions(),e=0;e&lt;d.length;e++){var f=d[e][0],g=d[e][1];if("object"==typeof f){var h=new Image(f.width,f.height);h.src=f.src;h.alt=f.alt||"";f=h}f=new goog.ui.MenuItem(f);f.setRightToLeft(this.sourceBlock_.RTL);f.setValue(g);&#xD;	f.setCheckable(!0);c.addChild(f,!0);g=g==this.value_;f.setChecked(g);g&amp;&amp;(this.selectedItem=f)}goog.events.listen(c,goog.ui.Component.EventType.ACTION,function(a){if(a=a.target)b.onItemSelected(this,a);Blockly.DropDownDiv.hide();Blockly.Events.setGroup(!1)});c.getHandler().listen(c.getElement(),goog.events.EventType.TOUCHSTART,function(a){this.getOwnerControl(a.target).handleMouseDown(a)});c.getHandler().listen(c.getElement(),goog.events.EventType.TOUCHEND,function(a){this.getOwnerControl(a.target).performActionInternal(a)});&#xD;	c.render(a);a=c.getElement();Blockly.utils.addClass(a,"blocklyDropdownMenu");goog.style.getSize(a).height=a.scrollHeight;d=this.sourceBlock_.isShadow()?this.sourceBlock_.parentBlock_.getColour():this.sourceBlock_.getColour();Blockly.DropDownDiv.setColour(d,this.sourceBlock_.getColourTertiary());d=this.sourceBlock_.isShadow()?this.sourceBlock_.parentBlock_.getCategory():this.sourceBlock_.getCategory();Blockly.DropDownDiv.setCategory(d);e=this.sourceBlock_.workspace.scale;g=this.size_.width;d=this.size_.height;&#xD;	g*=e;d*=e;e=this.fieldGroup_.getBoundingClientRect();g=e.left+g/2;d=e.top+d;e=e.top;Blockly.DropDownDiv.setBoundsElement(this.sourceBlock_.workspace.getParentSvg().parentNode);Blockly.DropDownDiv.show(this,g,d,g,e,this.onHide.bind(this));c.setAllowAutoFocus(!0);a.focus();this.disableColourChange_||(this.sourceBlock_.isShadow()?(this.savedPrimary_=this.sourceBlock_.getColour(),this.sourceBlock_.setColour(this.sourceBlock_.getColourTertiary(),this.sourceBlock_.getColourSecondary(),this.sourceBlock_.getColourTertiary())):&#xD;	this.box_&amp;&amp;this.box_.setAttribute("fill",this.sourceBlock_.getColourTertiary()))};Blockly.FieldDropdown.prototype.onHide=function(){this.dropDownOpen_=!1;!this.disableColourChange_&amp;&amp;this.sourceBlock_&amp;&amp;(this.sourceBlock_.isShadow()?this.sourceBlock_.setColour(this.savedPrimary_,this.sourceBlock_.getColourSecondary(),this.sourceBlock_.getColourTertiary()):this.box_&amp;&amp;this.box_.setAttribute("fill",this.sourceBlock_.getColour()))};&#xD;	Blockly.FieldDropdown.prototype.onItemSelected=function(a,b){var c=b.getValue();this.sourceBlock_&amp;&amp;(c=this.callValidator(c));null!==c&amp;&amp;this.setValue(c)};&#xD;	Blockly.FieldDropdown.prototype.trimOptions_=function(){this.suffixField=this.prefixField=null;var a=this.menuGenerator_;if(goog.isArray(a)){for(var b=!1,c=0;c&lt;a.length;c++){var d=a[c][0];"string"==typeof d?a[c][0]=Blockly.utils.replaceMessageReferences(d):(null!=d.alt&amp;&amp;(a[c][0].alt=Blockly.utils.replaceMessageReferences(d.alt)),b=!0)}if(!(b||2&gt;a.length)){for(var e=[],c=0;c&lt;a.length;c++)e.push(a[c][0]);c=Blockly.utils.shortestStringLength(e);b=Blockly.utils.commonWordPrefix(e,c);d=Blockly.utils.commonWordSuffix(e,&#xD;	c);if((b||d)&amp;&amp;!(c&lt;=b+d)){b&amp;&amp;(this.prefixField=e[0].substring(0,b-1));d&amp;&amp;(this.suffixField=e[0].substr(1-d));e=[];for(c=0;c&lt;a.length;c++){var f=a[c][0],g=a[c][1],f=f.substring(b,f.length-d);e[c]=[f,g]}this.menuGenerator_=e}}}};Blockly.FieldDropdown.prototype.isOptionListDynamic=function(){return goog.isFunction(this.menuGenerator_)};Blockly.FieldDropdown.prototype.getOptions=function(){return goog.isFunction(this.menuGenerator_)?this.menuGenerator_.call(this):this.menuGenerator_};&#xD;	Blockly.FieldDropdown.prototype.getValue=function(){return this.value_};&#xD;	Blockly.FieldDropdown.prototype.setValue=function(a){if(null!==a&amp;&amp;a!==this.value_){this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.value_,a));this.selectedItem&amp;&amp;(this.selectedItem.setChecked(!1),this.selectedItem=null);this.value_=a;for(var b=this.getOptions(),c=0;c&lt;b.length;c++)if(b[c][1]==a){a=b[c][0];"object"==typeof a?(this.imageJson_=a,this.setText(a.alt)):(this.imageJson_=null,this.setText(a));return}this.setText(a)}};&#xD;	Blockly.FieldDropdown.prototype.setText=function(a){null!==a&amp;&amp;a!==this.text_&amp;&amp;(this.text_=a,this.updateTextNode_(),this.textElement_&amp;&amp;(this.textElement_.setAttribute("class",this.textElement_.getAttribute("class")+" blocklyDropdownText"),this.textElement_.parentNode.appendChild(this.arrow_)),this.sourceBlock_&amp;&amp;this.sourceBlock_.rendered&amp;&amp;(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours_()))};&#xD;	Blockly.FieldDropdown.prototype.positionArrow=function(a){if(!this.arrow_)return 0;this.arrowX_=this.sourceBlock_.RTL?this.arrowSize_-Blockly.BlockSvg.DROPDOWN_ARROW_PADDING:a+Blockly.BlockSvg.DROPDOWN_ARROW_PADDING/2;a=this.arrowSize_+Blockly.BlockSvg.DROPDOWN_ARROW_PADDING;this.box_&amp;&amp;(this.arrowX_+=Blockly.BlockSvg.BOX_FIELD_PADDING);this.arrow_.setAttribute("transform","translate("+this.arrowX_+","+this.arrowY_+")");return a};&#xD;	Blockly.FieldDropdown.prototype.dispose=function(){this.selectedItem=null;Blockly.WidgetDiv.hideIfOwner(this);Blockly.FieldDropdown.superClass_.dispose.call(this)};Blockly.FieldIconMenu=function(a){this.icons_=a;Blockly.FieldIconMenu.superClass_.constructor.call(this,a[0].value);this.addArgType("iconmenu")};goog.inherits(Blockly.FieldIconMenu,Blockly.Field);Blockly.FieldIconMenu.DROPDOWN_WIDTH=168;Blockly.FieldIconMenu.savedPrimary_=null;&#xD;	Blockly.FieldIconMenu.prototype.init=function(a){this.arrowX_=18;this.arrowY_=10;a.RTL&amp;&amp;(this.arrowX_=-this.arrowX_-12);this.arrowIcon_=Blockly.utils.createSvgElement("image",{height:"12px",width:"12px",transform:"translate("+this.arrowX_+","+this.arrowY_+")"});this.arrowIcon_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",Blockly.mainWorkspace.options.pathToMedia+"dropdown-arrow.svg");a.getSvgRoot().appendChild(this.arrowIcon_);Blockly.FieldIconMenu.superClass_.init.call(this,a)};&#xD;	Blockly.FieldIconMenu.prototype.CURSOR="default";Blockly.FieldIconMenu.prototype.setValue=function(a){null!==a&amp;&amp;a!==this.value_&amp;&amp;(this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.value_,a)),this.value_=a,this.setParentFieldImage(this.getSrcForValue(this.value_)))};&#xD;	Blockly.FieldIconMenu.prototype.setParentFieldImage=function(a){if(this.sourceBlock_&amp;&amp;this.sourceBlock_.parentBlock_)for(var b=this.sourceBlock_.parentBlock_,c=0,d;d=b.inputList[c];c++)for(var e=0,f;f=d.fieldRow[e];e++)if(f instanceof Blockly.FieldImage){f.setValue(a);return}};Blockly.FieldIconMenu.prototype.getValue=function(){return this.value_};Blockly.FieldIconMenu.prototype.getSrcForValue=function(a){for(var b=0,c;c=this.icons_[b];b++)if(c.value===a)return c.src};&#xD;	Blockly.FieldIconMenu.prototype.showEditor_=function(){if(!Blockly.DropDownDiv.hideIfOwner(this)){Blockly.DropDownDiv.hideWithoutAnimation();Blockly.DropDownDiv.clearContent();var a=Blockly.DropDownDiv.getContentDiv();a.setAttribute("role","menu");a.setAttribute("aria-haspopup","true");for(var b=0,c;c=this.icons_[b];b++){if("placeholder"==c.type){var d=document.createElement("span");d.setAttribute("class","blocklyDropDownPlaceholder");d.style.width=c.width+"px";d.style.height=c.height+"px"}else{d=&#xD;	document.createElement("button");d.setAttribute("id",":"+b);d.setAttribute("role","menuitem");d.setAttribute("class","blocklyDropDownButton");d.title=c.alt;d.style.width=c.width+"px";d.style.height=c.height+"px";var e=this.sourceBlock_.getColour();c.value==this.getValue()&amp;&amp;(e=this.sourceBlock_.getColourTertiary(),d.setAttribute("aria-selected","true"));d.style.backgroundColor=e;d.style.borderColor=this.sourceBlock_.getColourTertiary();Blockly.bindEvent_(d,"click",this,this.buttonClick_);Blockly.bindEvent_(d,&#xD;	"mouseup",this,this.buttonClick_);Blockly.bindEvent_(d,"mousedown",d,function(a){this.setAttribute("class","blocklyDropDownButton blocklyDropDownButtonHover");a.preventDefault()});Blockly.bindEvent_(d,"mouseover",d,function(){this.setAttribute("class","blocklyDropDownButton blocklyDropDownButtonHover");a.setAttribute("aria-activedescendant",this.id)});Blockly.bindEvent_(d,"mouseout",d,function(){this.setAttribute("class","blocklyDropDownButton");a.removeAttribute("aria-activedescendant")});e=document.createElement("img");&#xD;	e.src=c.src;d.setAttribute("data-value",c.value);e.setAttribute("data-value",c.value);d.appendChild(e)}a.appendChild(d)}a.style.width=Blockly.FieldIconMenu.DROPDOWN_WIDTH+"px";Blockly.DropDownDiv.setColour(this.sourceBlock_.getColour(),this.sourceBlock_.getColourTertiary());Blockly.DropDownDiv.setCategory(this.sourceBlock_.parentBlock_.getCategory());this.savedPrimary_=this.sourceBlock_.getColour();this.sourceBlock_.setColour(this.sourceBlock_.getColourSecondary(),this.sourceBlock_.getColourSecondary(),&#xD;	this.sourceBlock_.getColourTertiary());b=this.sourceBlock_.workspace.scale;b=-(Blockly.BlockSvg.MIN_BLOCK_Y*b)-Blockly.BlockSvg.FIELD_Y_OFFSET*b;Blockly.DropDownDiv.showPositionedByBlock(this,this.sourceBlock_,this.onHide_.bind(this),b)||this.arrowIcon_.setAttribute("transform","translate("+(this.arrowX_+Blockly.DropDownDiv.ARROW_SIZE/1.5+1)+","+(this.arrowY_+Blockly.DropDownDiv.ARROW_SIZE/1.5)+") rotate(180)")}};&#xD;	Blockly.FieldIconMenu.prototype.buttonClick_=function(a){a=a.target.getAttribute("data-value");this.setValue(a);Blockly.DropDownDiv.hide()};&#xD;	Blockly.FieldIconMenu.prototype.onHide_=function(){this.sourceBlock_&amp;&amp;this.sourceBlock_.setColour(this.savedPrimary_,this.sourceBlock_.getColourSecondary(),this.sourceBlock_.getColourTertiary());Blockly.DropDownDiv.content_.removeAttribute("role");Blockly.DropDownDiv.content_.removeAttribute("aria-haspopup");Blockly.DropDownDiv.content_.removeAttribute("aria-activedescendant");this.arrowIcon_.setAttribute("transform","translate("+this.arrowX_+","+this.arrowY_+")")};Blockly.FieldImage=function(a,b,c,d,e){this.sourceBlock_=null;this.height_=Number(c);this.width_=Number(b);this.size_=new goog.math.Size(this.width_,this.height_);this.text_=d||"";this.flipRTL_=e;this.setValue(a)};goog.inherits(Blockly.FieldImage,Blockly.Field);Blockly.FieldImage.prototype.EDITABLE=!1;&#xD;	Blockly.FieldImage.prototype.init=function(){this.fieldGroup_||(this.fieldGroup_=Blockly.utils.createSvgElement("g",{},null),this.visible_||(this.fieldGroup_.style.display="none"),this.imageElement_=Blockly.utils.createSvgElement("image",{height:this.height_+"px",width:this.width_+"px"},this.fieldGroup_),this.setValue(this.src_),this.sourceBlock_.getSvgRoot().appendChild(this.fieldGroup_),this.setTooltip(this.sourceBlock_),Blockly.Tooltip.bindMouseEvents(this.imageElement_))};&#xD;	Blockly.FieldImage.prototype.dispose=function(){goog.dom.removeNode(this.fieldGroup_);this.imageElement_=this.fieldGroup_=null};Blockly.FieldImage.prototype.setTooltip=function(a){this.imageElement_.tooltip=a};Blockly.FieldImage.prototype.getValue=function(){return this.src_};Blockly.FieldImage.prototype.setValue=function(a){null!==a&amp;&amp;(this.src_=a,this.imageElement_&amp;&amp;this.imageElement_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a||""))};Blockly.FieldImage.prototype.getFlipRTL=function(){return this.flipRTL_};&#xD;	Blockly.FieldImage.prototype.setText=function(a){null!==a&amp;&amp;(this.text_=a)};Blockly.FieldImage.prototype.render_=function(){};Blockly.FieldImage.prototype.updateWidth=function(){};Blockly.FieldTextDropdown=function(a,b,c,d){this.menuGenerator_=b;Blockly.FieldDropdown.prototype.trimOptions_.call(this);Blockly.FieldTextDropdown.superClass_.constructor.call(this,a,c,d);this.addArgType("textdropdown")};goog.inherits(Blockly.FieldTextDropdown,Blockly.FieldTextInput);&#xD;	Blockly.FieldTextDropdown.prototype.init=function(){Blockly.FieldTextDropdown.superClass_.init.call(this);this.arrow_||(this.arrowSize_=12,this.arrowX_=0,this.arrowY_=11,this.arrow_=Blockly.utils.createSvgElement("image",{height:this.arrowSize_+"px",width:this.arrowSize_+"px"}),this.arrow_.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",Blockly.mainWorkspace.options.pathToMedia+"dropdown-arrow-dark.svg"),this.arrow_.style.cursor="pointer",this.fieldGroup_.appendChild(this.arrow_),this.mouseUpWrapper_=&#xD;	Blockly.bindEvent_(this.arrow_,"mouseup",this,this.showDropdown_));this.disableColourChange_=!0};Blockly.FieldTextDropdown.prototype.dispose=function(){this.mouseUpWrapper_&amp;&amp;(Blockly.unbindEvent_(this.mouseUpWrapper_),this.mouseUpWrapper_=null,Blockly.Touch.clearTouchIdentifier());Blockly.FieldTextDropdown.superClass_.dispose.call(this)};&#xD;	Blockly.FieldTextDropdown.prototype.showEditor_=function(){this.dropDownOpen_||Blockly.FieldTextDropdown.superClass_.showEditor_.call(this,null,null,!0,function(){Blockly.WidgetDiv.hide();this.showDropdown_();Blockly.Touch.clearTouchIdentifier()})};Blockly.FieldTextDropdown.prototype.getOptions_=Blockly.FieldDropdown.prototype.getOptions_;Blockly.FieldTextDropdown.prototype.positionArrow=Blockly.FieldDropdown.prototype.positionArrow;Blockly.FieldTextDropdown.prototype.showDropdown_=Blockly.FieldDropdown.prototype.showEditor_;&#xD;	Blockly.FieldTextDropdown.prototype.onHide=Blockly.FieldDropdown.prototype.onHide;Blockly.FieldNumber=function(a,b,c,d,e){b=this.getNumRestrictor(b,c,d);a=a&amp;&amp;!isNaN(a)?String(a):"0";Blockly.FieldNumber.superClass_.constructor.call(this,a,e,b);this.addArgType("number")};goog.inherits(Blockly.FieldNumber,Blockly.FieldTextInput);Blockly.FieldNumber.DROPDOWN_WIDTH=168;Blockly.FieldNumber.DROPDOWN_Y_PADDING=8;Blockly.FieldNumber.NUMPAD_BUTTONS="789456123.0- ".split("");&#xD;	Blockly.FieldNumber.NUMPAD_DELETE_ICON=&apos;data:image/svg+xml;utf8,&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40"&gt;&lt;path d="M28.89,11.45H16.79a2.86,2.86,0,0,0-2,.84L9.09,18a2.85,2.85,0,0,0,0,4l5.69,5.69a2.86,2.86,0,0,0,2,.84h12.1a2.86,2.86,0,0,0,2.86-2.86V14.31A2.86,2.86,0,0,0,28.89,11.45ZM27.15,22.73a1,1,0,0,1,0,1.41,1,1,0,0,1-.71.3,1,1,0,0,1-.71-0.3L23,21.41l-2.73,2.73a1,1,0,0,1-1.41,0,1,1,0,0,1,0-1.41L21.59,20l-2.73-2.73a1,1,0,0,1,0-1.41,1,1,0,0,1,1.41,0L23,18.59l2.73-2.73a1,1,0,1,1,1.42,1.41L24.42,20Z" fill="&apos;+Blockly.Colours.numPadText+&#xD;	&apos;"/&gt;&lt;/svg&gt;&apos;;Blockly.FieldNumber.activeField_=null;Blockly.FieldNumber.prototype.getNumRestrictor=function(a,b,c){this.setConstraints_(a,b,c);a="[\\d]";this.decimalAllowed_&amp;&amp;(a+="|[\\.]");this.negativeAllowed_&amp;&amp;(a+="|[-]");return new RegExp(a)};Blockly.FieldNumber.prototype.setConstraints_=function(a,b,c){this.decimalAllowed_="undefined"==typeof c||isNaN(c)||0==c||Math.floor(c)!=c;this.negativeAllowed_="undefined"==typeof a||isNaN(a)||0&gt;a};&#xD;	Blockly.FieldNumber.prototype.showEditor_=function(){Blockly.FieldNumber.activeField_=this;var a=goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD;Blockly.FieldNumber.superClass_.showEditor_.call(this,!1,a);a&amp;&amp;this.showNumPad_()};&#xD;	Blockly.FieldNumber.prototype.showNumPad_=function(){Blockly.DropDownDiv.hideWithoutAnimation();Blockly.DropDownDiv.clearContent();var a=Blockly.DropDownDiv.getContentDiv();a.setAttribute("role","menu");a.setAttribute("aria-haspopup","true");this.addButtons_(a);Blockly.DropDownDiv.setColour(Blockly.Colours.numPadBackground,Blockly.Colours.numPadBorder);a.style.width=Blockly.FieldNumber.DROPDOWN_WIDTH+"px";this.position_()};&#xD;	Blockly.FieldNumber.prototype.position_=function(){var a=this.sourceBlock_.workspace.scale,b=this.sourceBlock_.getHeightWidth();b.width*=a;b.height*=a;var c=this.getAbsoluteXY_(),d=c.x+b.width/2,b=c.y+b.height+Blockly.FieldNumber.DROPDOWN_Y_PADDING,a=c.y-Blockly.BlockSvg.MIN_BLOCK_Y*a-Blockly.BlockSvg.FIELD_Y_OFFSET*a;Blockly.DropDownDiv.setBoundsElement(this.sourceBlock_.workspace.getParentSvg().parentNode);Blockly.DropDownDiv.show(this,d,b,d,a,this.onHide_.bind(this))};&#xD;	Blockly.FieldNumber.prototype.addButtons_=function(a){for(var b=Blockly.FieldNumber.NUMPAD_BUTTONS,c=0,d;d=b[c];c++){var e=document.createElement("button");e.setAttribute("role","menuitem");e.setAttribute("class","blocklyNumPadButton");e.title=d;e.innerHTML=d;Blockly.bindEvent_(e,"mousedown",e,Blockly.FieldNumber.numPadButtonTouch);if("."!=d||this.decimalAllowed_)if("-"!=d||this.negativeAllowed_)if(" "!=d||this.negativeAllowed_)" "==d&amp;&amp;this.negativeAllowed_&amp;&amp;e.setAttribute("style","visibility: hidden");&#xD;	else continue;else continue;else e.setAttribute("style","visibility: hidden");a.appendChild(e)}b=document.createElement("button");b.setAttribute("role","menuitem");b.setAttribute("class","blocklyNumPadButton");b.title="Delete";c=document.createElement("img");c.src=Blockly.FieldNumber.NUMPAD_DELETE_ICON;b.appendChild(c);Blockly.bindEvent_(b,"mousedown",null,Blockly.FieldNumber.numPadEraseButtonTouch);a.appendChild(b)};&#xD;	Blockly.FieldNumber.numPadButtonTouch=function(){var a=this.innerHTML,b=Blockly.FieldTextInput.htmlInput_.value,c=Blockly.FieldTextInput.htmlInput_.selectionEnd,a=b.slice(0,Blockly.FieldTextInput.htmlInput_.selectionStart)+a+b.slice(c);Blockly.FieldNumber.updateDisplay_(a);Blockly.Touch.clearTouchIdentifier()};&#xD;	Blockly.FieldNumber.numPadEraseButtonTouch=function(){var a=Blockly.FieldTextInput.htmlInput_.value,b=Blockly.FieldTextInput.htmlInput_.selectionStart,c=Blockly.FieldTextInput.htmlInput_.selectionEnd,d=a.slice(0,b)+a.slice(c);0==c-b&amp;&amp;(d=a.slice(0,b-1)+a.slice(b));Blockly.FieldNumber.updateDisplay_(d);Blockly.Touch.clearTouchIdentifier()};&#xD;	Blockly.FieldNumber.updateDisplay_=function(a){Blockly.FieldTextInput.htmlInput_.value=a;Blockly.FieldNumber.superClass_.resizeEditor_.call(Blockly.FieldNumber.activeField_);Blockly.FieldTextInput.htmlInput_.setSelectionRange(a.length,a.length);Blockly.FieldTextInput.htmlInput_.scrollLeft=Blockly.FieldTextInput.htmlInput_.scrollWidth;Blockly.FieldNumber.activeField_.validate_()};Blockly.FieldNumber.prototype.onHide_=function(){Blockly.DropDownDiv.content_.removeAttribute("role");Blockly.DropDownDiv.content_.removeAttribute("aria-haspopup")};Blockly.FieldNumberDropdown=function(a,b,c,d,e,f){this.setConstraints_=Blockly.FieldNumber.prototype.setConstraints_;c=Blockly.FieldNumber.prototype.getNumRestrictor.call(this,c,d,e);Blockly.FieldNumberDropdown.superClass_.constructor.call(this,a,b,f,c);this.addArgType("numberdropdown")};goog.inherits(Blockly.FieldNumberDropdown,Blockly.FieldTextDropdown);Blockly.Variables={};Blockly.Variables.NAME_TYPE=Blockly.VARIABLE_CATEGORY_NAME;&#xD;	Blockly.Variables.allUsedVariables=function(a){if(a instanceof Blockly.Block)var b=a.getDescendants();else if(a instanceof Blockly.Workspace||a instanceof Blockly.WorkspaceSvg)b=a.getAllBlocks();else throw"Not Block or Workspace: "+a;var c=Blockly.Variables.noVariableText();a=Object.create(null);for(var d=0;d&lt;b.length;d++){var e=b[d].getVars();if(e)for(var f=0;f&lt;e.length;f++){var g=e[f];g&amp;&amp;g.toLowerCase()!=c&amp;&amp;(a[g.toLowerCase()]=g)}}b=[];for(var h in a)b.push(a[h]);return b};&#xD;	Blockly.Variables.allVariables=function(a){return a instanceof Blockly.Block?(console.warn("Deprecated call to Blockly.Variables.allVariables with a block instead of a workspace.  You may want Blockly.Variables.allUsedVariables"),{}):a.getAllVariables()};&#xD;	Blockly.Variables.flyoutCategory=function(a){for(var b=[],c=a.getVariablesOfType(""),d=0;d&lt;c.length;d++)b.push(c[d].name);b.sort(goog.string.caseInsensitiveCompare);c=[];d=goog.dom.createDom("button");d.setAttribute("text",Blockly.Msg.NEW_VARIABLE);d.setAttribute("callbackKey","CREATE_VARIABLE");a.registerButtonCallback("CREATE_VARIABLE",function(a){Blockly.Variables.createVariable(a.getTargetWorkspace())});c.push(d);for(d=0;d&lt;b.length;d++)if(Blockly.Blocks.data_variable){a=goog.dom.createDom("block");&#xD;	a.setAttribute("type","data_variable");a.setAttribute("gap",8);var e=goog.dom.createDom("field",null,b[d]);e.setAttribute("name","VARIABLE");a.appendChild(e);c.push(a)}1&lt;c.length&amp;&amp;(c[c.length-1].setAttribute("gap",24),Blockly.Blocks.data_setvariableto&amp;&amp;(a=goog.dom.createDom("block"),a.setAttribute("type","data_setvariableto"),a.setAttribute("gap",8),a.appendChild(Blockly.Variables.createVariableDom_(b[0])),a.appendChild(Blockly.Variables.createTextDom_()),c.push(a)),Blockly.Blocks.data_changevariableby&amp;&amp;&#xD;	(a=goog.dom.createDom("block"),a.setAttribute("type","data_changevariableby"),a.setAttribute("gap",8),a.appendChild(Blockly.Variables.createVariableDom_(b[0])),a.appendChild(Blockly.Variables.createMathNumberDom_()),c.push(a)),Blockly.Blocks.data_showvariable&amp;&amp;(a=goog.dom.createDom("block"),a.setAttribute("type","data_showvariable"),a.setAttribute("gap",8),a.appendChild(Blockly.Variables.createVariableDom_(b[0])),c.push(a)),Blockly.Blocks.data_hidevariable&amp;&amp;(a=goog.dom.createDom("block"),a.setAttribute("type",&#xD;	"data_hidevariable"),a.appendChild(Blockly.Variables.createVariableDom_(b[0])),c.push(a)));return c};Blockly.Variables.createValueDom_=function(a){var b=goog.dom.createDom("value");b.setAttribute("name",a);return b};Blockly.Variables.createShadowDom_=function(a){var b=goog.dom.createDom("shadow");b.setAttribute("type",a);return b};&#xD;	Blockly.Variables.createVariableDom_=function(a){var b=Blockly.Variables.createValueDom_("VARIABLE"),c=Blockly.Variables.createShadowDom_("data_variablemenu");a=goog.dom.createDom("field",null,a);a.setAttribute("name","VARIABLE");c.appendChild(a);b.appendChild(c);return b};&#xD;	Blockly.Variables.createTextDom_=function(){var a=Blockly.Variables.createValueDom_("VALUE"),b=Blockly.Variables.createShadowDom_("text"),c=goog.dom.createDom("field",null,"0");c.setAttribute("name","TEXT");b.appendChild(c);a.appendChild(b);return a};&#xD;	Blockly.Variables.createMathNumberDom_=function(){var a=Blockly.Variables.createValueDom_("VALUE"),b=Blockly.Variables.createShadowDom_("math_number"),c=goog.dom.createDom("field",null,"1");c.setAttribute("name","NUM");b.appendChild(c);a.appendChild(b);return a};Blockly.Variables.noVariableText=function(){return"No variable selected"};&#xD;	Blockly.Variables.generateUniqueName=function(a){a=a.getAllVariables();var b="";if(a.length)for(var c=1,d=0,e="ijkmnopqrstuvwxyzabcdefgh".charAt(d);!b;){for(var f=!1,g=0;g&lt;a.length;g++)if(a[g].name.toLowerCase()==e){f=!0;break}f?(d++,25==d&amp;&amp;(d=0,c++),e="ijkmnopqrstuvwxyzabcdefgh".charAt(d),1&lt;c&amp;&amp;(e+=c)):b=e}else b="i";return b};&#xD;	Blockly.Variables.createVariable=function(a,b){var c=function(d){Blockly.Variables.promptName(Blockly.Msg.NEW_VARIABLE_TITLE,d,function(d){d?a.getVariable(d)?Blockly.alert(Blockly.Msg.VARIABLE_ALREADY_EXISTS.replace("%1",d.toLowerCase()),function(){c(d)}):Blockly.Procedures.isLegalName_(d,a)?(a.createVariable(d),b&amp;&amp;b(d)):Blockly.alert(Blockly.Msg.PROCEDURE_ALREADY_EXISTS.replace("%1",d.toLowerCase()),function(){c(d)}):b&amp;&amp;b(null)})};c("")};&#xD;	Blockly.Variables.promptName=function(a,b,c){Blockly.prompt(a,b,function(a){a&amp;&amp;(a=a.replace(/[\s\xa0]+/g," ").replace(/^ | $/g,""),a==Blockly.Msg.RENAME_VARIABLE||a==Blockly.Msg.NEW_VARIABLE)&amp;&amp;(a=null);c(a)})};Blockly.FieldVariable=function(a,b){Blockly.FieldVariable.superClass_.constructor.call(this,Blockly.FieldVariable.dropdownCreate,b);this.setValue(a||"");this.addArgType("variable")};goog.inherits(Blockly.FieldVariable,Blockly.FieldDropdown);Blockly.FieldVariable.prototype.renameVarItemIndex_=-1;Blockly.FieldVariable.prototype.deleteVarItemIndex_=-1;Blockly.FieldVariable.prototype.init=function(){this.fieldGroup_||(Blockly.FieldVariable.superClass_.init.call(this),this.initModel())};&#xD;	Blockly.FieldVariable.prototype.initModel=function(){this.getValue()||this.setValue(Blockly.Variables.generateUniqueName(this.sourceBlock_.isInFlyout?this.sourceBlock_.workspace.targetWorkspace:this.sourceBlock_.workspace));this.sourceBlock_.isInFlyout||this.sourceBlock_.workspace.createVariable(this.getValue())};&#xD;	Blockly.FieldVariable.prototype.setSourceBlock=function(a){goog.asserts.assert(!a.isShadow(),"Variable fields are not allowed to exist on shadow blocks.");Blockly.FieldVariable.superClass_.setSourceBlock.call(this,a)};Blockly.FieldVariable.prototype.getValue=function(){return this.getText()};&#xD;	Blockly.FieldVariable.prototype.setValue=function(a){this.sourceBlock_&amp;&amp;Blockly.Events.isEnabled()&amp;&amp;Blockly.Events.fire(new Blockly.Events.Change(this.sourceBlock_,"field",this.name,this.value_,a));this.value_=a;this.setText(a)};&#xD;	Blockly.FieldVariable.dropdownCreate=function(){var a=[];if(this.sourceBlock_&amp;&amp;this.sourceBlock_.workspace)for(var b=this.sourceBlock_.workspace.getVariablesOfType(""),c=0;c&lt;b.length;c++)a.push(b[c].name);(c=this.getText())&amp;&amp;-1==a.indexOf(c)&amp;&amp;a.push(c);a.sort(goog.string.caseInsensitiveCompare);this.renameVarItemIndex_=a.length;a.push(Blockly.Msg.RENAME_VARIABLE);this.deleteVarItemIndex_=a.length;a.push(Blockly.Msg.DELETE_VARIABLE.replace("%1",c));b=[];for(c=0;c&lt;a.length;c++)b[c]=[a[c],a[c]];return b};&#xD;	Blockly.FieldVariable.prototype.onItemSelected=function(a,b){var c=b.getValue();if(this.sourceBlock_){var d=this.sourceBlock_.workspace;if(0&lt;=this.renameVarItemIndex_&amp;&amp;a.getChildAt(this.renameVarItemIndex_)===b){var e=this.getText();Blockly.hideChaff();Blockly.Variables.promptName(Blockly.Msg.RENAME_VARIABLE_TITLE.replace("%1",e),e,function(a){a&amp;&amp;d.renameVariable(e,a)});return}if(0&lt;=this.deleteVarItemIndex_&amp;&amp;a.getChildAt(this.deleteVarItemIndex_)===b){d.deleteVariable(this.getText());return}c=this.callValidator(c)}null!==&#xD;	c&amp;&amp;this.setValue(c)};Blockly.Generator=function(a){this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g")};Blockly.Generator.NAME_TYPE="generated_function";Blockly.Generator.prototype.INFINITE_LOOP_TRAP=null;Blockly.Generator.prototype.STATEMENT_PREFIX=null;Blockly.Generator.prototype.INDENT="  ";Blockly.Generator.prototype.COMMENT_WRAP=60;Blockly.Generator.prototype.ORDER_OVERRIDES=[];&#xD;	Blockly.Generator.prototype.workspaceToCode=function(a){a||(console.warn("No workspace specified in workspaceToCode call.  Guessing."),a=Blockly.getMainWorkspace());var b=[];this.init(a);a=a.getTopBlocks(!0);for(var c=0,d;d=a[c];c++){var e=this.blockToCode(d);goog.isArray(e)&amp;&amp;(e=e[0]);e&amp;&amp;(d.outputConnection&amp;&amp;this.scrubNakedValue&amp;&amp;(e=this.scrubNakedValue(e)),b.push(e))}b=b.join("\n");b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")};&#xD;	Blockly.Generator.prototype.prefixLines=function(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)};Blockly.Generator.prototype.allNestedComments=function(a){var b=[];a=a.getDescendants();for(var c=0;c&lt;a.length;c++){var d=a[c].getCommentText();d&amp;&amp;b.push(d)}b.length&amp;&amp;b.push("");return b.join("\n")};&#xD;	Blockly.Generator.prototype.blockToCode=function(a){if(!a)return"";if(a.disabled)return this.blockToCode(a.getNextBlock());var b=this[a.type];goog.asserts.assertFunction(b,&apos;Language "%s" does not know how to generate code for block type "%s".&apos;,this.name_,a.type);b=b.call(a,a);if(goog.isArray(b))return goog.asserts.assert(a.outputConnection,&apos;Expecting string from statement block "%s".&apos;,a.type),[this.scrub_(a,b[0]),b[1]];if(goog.isString(b)){var c=a.id.replace(/\$/g,"$$$$");this.STATEMENT_PREFIX&amp;&amp;(b=&#xD;	this.STATEMENT_PREFIX.replace(/%1/g,"&apos;"+c+"&apos;")+b);return this.scrub_(a,b)}if(null===b)return"";goog.asserts.fail("Invalid code generated: %s",b)};&#xD;	Blockly.Generator.prototype.valueToCode=function(a,b,c){isNaN(c)&amp;&amp;goog.asserts.fail(&apos;Expecting valid order from block "%s".&apos;,a.type);var d=a.getInputTargetBlock(b);if(!d)return"";b=this.blockToCode(d);if(""===b)return"";goog.asserts.assertArray(b,&apos;Expecting tuple from value block "%s".&apos;,d.type);a=b[0];b=b[1];isNaN(b)&amp;&amp;goog.asserts.fail(&apos;Expecting valid order from value block "%s".&apos;,d.type);if(!a)return"";var d=!1,e=Math.floor(c),f=Math.floor(b);if(e&lt;=f&amp;&amp;(e!=f||0!=e&amp;&amp;99!=e))for(d=!0,e=0;e&lt;this.ORDER_OVERRIDES.length;e++)if(this.ORDER_OVERRIDES[e][0]==&#xD;	c&amp;&amp;this.ORDER_OVERRIDES[e][1]==b){d=!1;break}d&amp;&amp;(a="("+a+")");return a};Blockly.Generator.prototype.statementToCode=function(a,b){var c=a.getInputTargetBlock(b),d=this.blockToCode(c);goog.asserts.assertString(d,&apos;Expecting code from statement block "%s".&apos;,c&amp;&amp;c.type);d&amp;&amp;(d=this.prefixLines(d,this.INDENT));return d};&#xD;	Blockly.Generator.prototype.addLoopTrap=function(a,b){b=b.replace(/\$/g,"$$$$");this.INFINITE_LOOP_TRAP&amp;&amp;(a=this.INFINITE_LOOP_TRAP.replace(/%1/g,"&apos;"+b+"&apos;")+a);this.STATEMENT_PREFIX&amp;&amp;(a+=this.prefixLines(this.STATEMENT_PREFIX.replace(/%1/g,"&apos;"+b+"&apos;"),this.INDENT));return a};Blockly.Generator.prototype.RESERVED_WORDS_="";Blockly.Generator.prototype.addReservedWords=function(a){this.RESERVED_WORDS_+=a+","};Blockly.Generator.prototype.FUNCTION_NAME_PLACEHOLDER_="{leCUI8hutHZI4480Dc}";&#xD;	Blockly.Generator.prototype.provideFunction_=function(a,b){if(!this.definitions_[a]){var c=this.variableDB_.getDistinctName(a,Blockly.Procedures.NAME_TYPE);this.functionNames_[a]=c;for(var c=b.join("\n").replace(this.FUNCTION_NAME_PLACEHOLDER_REGEXP_,c),d;d!=c;)d=c,c=c.replace(/^(( {2})*) {2}/gm,"$1\x00");c=c.replace(/\0/g,this.INDENT);this.definitions_[a]=c}return this.functionNames_[a]};Blockly.Generator.prototype.init=void 0;Blockly.Generator.prototype.scrub_=void 0;&#xD;	Blockly.Generator.prototype.finish=void 0;Blockly.Generator.prototype.scrubNakedValue=void 0;Blockly.Names=function(a,b){this.variablePrefix_=b||"";this.reservedDict_=Object.create(null);if(a)for(var c=a.split(","),d=0;d&lt;c.length;d++)this.reservedDict_[c[d]]=!0;this.reset()};Blockly.Names.prototype.reset=function(){this.db_=Object.create(null);this.dbReverse_=Object.create(null)};&#xD;	Blockly.Names.prototype.getName=function(a,b){var c=a.toLowerCase()+"_"+b,d=b==Blockly.Variables.NAME_TYPE?this.variablePrefix_:"";if(c in this.db_)return d+this.db_[c];var e=this.getDistinctName(a,b);this.db_[c]=e.substr(d.length);return e};Blockly.Names.prototype.getDistinctName=function(a,b){for(var c=this.safeName_(a),d="";this.dbReverse_[c+d]||c+d in this.reservedDict_;)d=d?d+1:2;c+=d;this.dbReverse_[c]=!0;return(b==Blockly.Variables.NAME_TYPE?this.variablePrefix_:"")+c};&#xD;	Blockly.Names.prototype.safeName_=function(a){a?(a=encodeURI(a.replace(/ /g,"_")).replace(/[^\w]/g,"_"),-1!="0123456789".indexOf(a[0])&amp;&amp;(a="my_"+a)):a="unnamed";return a};Blockly.Names.equals=function(a,b){return a.toLowerCase()==b.toLowerCase()};Blockly.Procedures={};Blockly.Procedures.NAME_TYPE=Blockly.PROCEDURE_CATEOGORY_NAME;Blockly.Procedures.allProcedures=function(a){a=a.getAllBlocks();for(var b=[],c=[],d=0;d&lt;a.length;d++)if(a[d].getProcedureDef){var e=a[d].getProcedureDef();e&amp;&amp;(e[2]?b.push(e):c.push(e))}c.sort(Blockly.Procedures.procTupleComparator_);b.sort(Blockly.Procedures.procTupleComparator_);return[c,b]};Blockly.Procedures.procTupleComparator_=function(a,b){return a[0].toLowerCase().localeCompare(b[0].toLowerCase())};&#xD;	Blockly.Procedures.findLegalName=function(a,b){if(b.isInFlyout)return a;for(;!Blockly.Procedures.isLegalName_(a,b.workspace,b);){var c=a.match(/^(.*?)(\d+)$/);a=c?c[1]+(parseInt(c[2],10)+1):a+"2"}return a};Blockly.Procedures.isLegalName_=function(a,b,c){b=b.getAllBlocks();for(var d=0;d&lt;b.length;d++)if(b[d]!=c&amp;&amp;b[d].getProcedureDef){var e=b[d].getProcedureDef();if(Blockly.Names.equals(e[0],a))return!1}return!0};&#xD;	Blockly.Procedures.rename=function(a){a=a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"");var b=Blockly.Procedures.findLegalName(a,this.sourceBlock_),c=this.text_;if(c!=a&amp;&amp;c!=b){a=this.sourceBlock_.workspace.getAllBlocks();for(var d=0;d&lt;a.length;d++)a[d].renameProcedure&amp;&amp;a[d].renameProcedure(c,b)}return b};&#xD;	Blockly.Procedures.flyoutCategory=function(a){function b(a,b){for(var d=0;d&lt;a.length;d++){var e=a[d][0],f=a[d][1],g=goog.dom.createDom("block");g.setAttribute("type",b);g.setAttribute("gap",16);var n=goog.dom.createDom("mutation");n.setAttribute("name",e);g.appendChild(n);for(e=0;e&lt;f.length;e++){var p=goog.dom.createDom("arg");p.setAttribute("name",f[e]);n.appendChild(p)}c.push(g)}}var c=[];if(Blockly.Blocks.procedures_defnoreturn){var d=goog.dom.createDom("block");d.setAttribute("type","procedures_defnoreturn");&#xD;	d.setAttribute("gap",16);var e=goog.dom.createDom("field",null,Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE);e.setAttribute("name","NAME");d.appendChild(e);c.push(d)}Blockly.Blocks.procedures_defreturn&amp;&amp;(d=goog.dom.createDom("block"),d.setAttribute("type","procedures_defreturn"),d.setAttribute("gap",16),e=goog.dom.createDom("field",null,Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE),e.setAttribute("name","NAME"),d.appendChild(e),c.push(d));Blockly.Blocks.procedures_report&amp;&amp;(d=goog.dom.createDom("block"),&#xD;	d.setAttribute("type","procedures_report"),d.setAttribute("gap",16),c.push(d));c.length&amp;&amp;c[c.length-1].setAttribute("gap",24);a=Blockly.Procedures.allProcedures(a);b(a[0],"procedures_callnoreturn");b(a[1],"procedures_callreturn");return c};Blockly.Procedures.getCallers=function(a,b){for(var c=[],d=b.getAllBlocks(),e=0;e&lt;d.length;e++)if(d[e].getProcedureCall){var f=d[e].getProcedureCall();f&amp;&amp;Blockly.Names.equals(f,a)&amp;&amp;c.push(d[e])}return c};&#xD;	Blockly.Procedures.mutateCallers=function(a){var b=Blockly.Events.recordUndo,c=a.getProcedureDef()[0],d=a.mutationToDom(!0);a=Blockly.Procedures.getCallers(c,a.workspace);for(var c=0,e;e=a[c];c++){var f=e.mutationToDom(),f=f&amp;&amp;Blockly.Xml.domToText(f);e.domToMutation(d);var g=e.mutationToDom(),g=g&amp;&amp;Blockly.Xml.domToText(g);f!=g&amp;&amp;(Blockly.Events.recordUndo=!1,Blockly.Events.fire(new Blockly.Events.Change(e,"mutation",null,f,g)),Blockly.Events.recordUndo=b)}};&#xD;	Blockly.Procedures.getDefinition=function(a,b){for(var c=b.getTopBlocks(!1),d=0;d&lt;c.length;d++)if(c[d].getProcedureDef){var e=c[d].getProcedureDef();if(e&amp;&amp;Blockly.Names.equals(e[0],a))return c[d]}return null};Blockly.FlyoutButton=function(a,b,c,d){this.workspace_=a;this.targetWorkspace_=b;this.text_=c.getAttribute("text");this.position_=new goog.math.Coordinate(0,0);this.isLabel_=d;this.callback_=null;a=c.getAttribute("callbackKey");this.isLabel_&amp;&amp;a?console.warn("Labels should not have callbacks. Label text: "+this.text_):this.isLabel_||a&amp;&amp;b.getButtonCallback(a)?this.callback_=b.getButtonCallback(a):console.warn("Buttons should have callbacks. Button text: "+this.text_);this.cssClass_=c.getAttribute("web-class")||&#xD;	null};Blockly.FlyoutButton.MARGIN=40;Blockly.FlyoutButton.prototype.width=0;Blockly.FlyoutButton.prototype.height=40;Blockly.FlyoutButton.prototype.onMouseUpWrapper_=null;&#xD;	Blockly.FlyoutButton.prototype.createDom=function(){var a,b=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&amp;&amp;(b+=" "+this.cssClass_);this.svgGroup_=Blockly.utils.createSvgElement("g",{"class":b},this.workspace_.getCanvas());this.isLabel_||(a=Blockly.utils.createSvgElement("rect",{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1,y:1},this.svgGroup_));var b=Blockly.utils.createSvgElement("rect",{"class":this.isLabel_?"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground",&#xD;	rx:4,ry:4},this.svgGroup_),c=Blockly.utils.createSvgElement("text",{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_);c.textContent=this.text_;this.width=c.getComputedTextLength()+2*Blockly.FlyoutButton.MARGIN;this.isLabel_||(a.setAttribute("width",this.width),a.setAttribute("height",this.height));b.setAttribute("width",this.width);b.setAttribute("height",this.height);c.setAttribute("text-anchor","middle");c.setAttribute("alignment-baseline",&#xD;	"central");c.setAttribute("x",this.width/2);c.setAttribute("y",this.height/2);this.updateTransform_();this.mouseUpWrapper_=Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.onMouseUp_);return this.svgGroup_};Blockly.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")};Blockly.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")};&#xD;	Blockly.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};Blockly.FlyoutButton.prototype.getTargetWorkspace=function(){return this.targetWorkspace_};Blockly.FlyoutButton.prototype.dispose=function(){this.onMouseUpWrapper_&amp;&amp;Blockly.unbindEvent_(this.onMouseUpWrapper_);this.svgGroup_&amp;&amp;(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.targetWorkspace_=this.workspace_=null};&#xD;	Blockly.FlyoutButton.prototype.onMouseUp_=function(a){(a=this.targetWorkspace_.getGesture(a))&amp;&amp;a.cancel();this.callback_&amp;&amp;this.callback_(this)};Blockly.Flyout=function(a){a.getMetrics=this.getMetrics_.bind(this);a.setMetrics=this.setMetrics_.bind(this);this.workspace_=new Blockly.WorkspaceSvg(a);this.workspace_.isFlyout=!0;this.RTL=!!a.RTL;this.horizontalLayout_=a.horizontalLayout;this.toolboxPosition_=a.toolboxPosition;this.eventWrappers_=[];this.backgroundButtons_=[];this.buttons_=[];this.listeners_=[];this.permanentlyDisabled_=[];this.parentToolbox_=null};Blockly.Flyout.prototype.autoClose=!0;Blockly.Flyout.prototype.isVisible_=!1;&#xD;	Blockly.Flyout.prototype.containerVisible_=!0;Blockly.Flyout.prototype.CORNER_RADIUS=0;Blockly.Flyout.prototype.MARGIN=12;Blockly.Flyout.prototype.GAP_X=3*Blockly.Flyout.prototype.MARGIN;Blockly.Flyout.prototype.GAP_Y=Blockly.Flyout.prototype.MARGIN;Blockly.Flyout.prototype.SCROLLBAR_PADDING=2;Blockly.Flyout.prototype.width_=0;Blockly.Flyout.prototype.height_=0;Blockly.Flyout.prototype.contentWidth_=0;Blockly.Flyout.prototype.contentHeight_=0;Blockly.Flyout.prototype.verticalOffset_=0;&#xD;	Blockly.Flyout.prototype.dragAngleRange_=70;Blockly.Flyout.prototype.createDom=function(a){this.svgGroup_=Blockly.utils.createSvgElement(a,{"class":"blocklyFlyout",style:"display: none"},null);this.svgBackground_=Blockly.utils.createSvgElement("path",{"class":"blocklyFlyoutBackground"},this.svgGroup_);this.svgGroup_.appendChild(this.workspace_.createDom());return this.svgGroup_};&#xD;	Blockly.Flyout.prototype.init=function(a){this.targetWorkspace_=a;this.workspace_.targetWorkspace=a;this.scrollbar_=new Blockly.Scrollbar(this.workspace_,this.horizontalLayout_,!1,"blocklyFlyoutScrollbar");this.position();Array.prototype.push.apply(this.eventWrappers_,Blockly.bindEventWithChecks_(this.svgGroup_,"wheel",this,this.wheel_));Array.prototype.push.apply(this.eventWrappers_,Blockly.bindEventWithChecks_(this.svgGroup_,"mousedown",this,this.onMouseDown_));this.workspace_.getGesture=this.targetWorkspace_.getGesture.bind(this.targetWorkspace_)};&#xD;	Blockly.Flyout.prototype.dispose=function(){this.hide();Blockly.unbindEvent_(this.eventWrappers_);this.scrollbar_&amp;&amp;(this.scrollbar_.dispose(),this.scrollbar_=null);this.workspace_&amp;&amp;(this.workspace_.targetWorkspace=null,this.workspace_.dispose(),this.workspace_=null);this.svgGroup_&amp;&amp;(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.targetWorkspace_=this.svgBackground_=this.parentToolbox_=null};Blockly.Flyout.prototype.setParentToolbox=function(a){this.parentToolbox_=a};&#xD;	Blockly.Flyout.prototype.getWidth=function(){return this.parentToolbox_?this.parentToolbox_.getWidth():this.DEFAULT_WIDTH};Blockly.Flyout.prototype.getHeight=function(){return this.height_};Blockly.Flyout.prototype.getWorkspace=function(){return this.workspace_};Blockly.Flyout.prototype.isVisible=function(){return this.isVisible_};Blockly.Flyout.prototype.setVisible=function(a){var b=a!=this.isVisible();this.isVisible_=a;b&amp;&amp;this.updateDisplay_()};&#xD;	Blockly.Flyout.prototype.setContainerVisible=function(a){var b=a!=this.containerVisible_;this.containerVisible_=a;b&amp;&amp;this.updateDisplay_()};Blockly.Flyout.prototype.updateDisplay_=function(){var a=this.containerVisible_?this.isVisible():!1;this.svgGroup_.style.display=a?"block":"none";this.scrollbar_.setContainerVisible(a)};&#xD;	Blockly.Flyout.prototype.hide=function(){if(this.isVisible()){this.setVisible(!1);for(var a=0,b;b=this.listeners_[a];a++)Blockly.unbindEvent_(b);this.listeners_.length=0;this.reflowWrapper_&amp;&amp;(this.workspace_.removeChangeListener(this.reflowWrapper_),this.reflowWrapper_=null)}};&#xD;	Blockly.Flyout.prototype.show=function(a){this.workspace_.setResizesEnabled(!1);this.hide();this.clearOldBlocks_();"string"==typeof a&amp;&amp;(a=this.workspace_.targetWorkspace.getToolboxCategoryCallback(a),goog.asserts.assert(goog.isFunction(a),"Couldn&apos;t find a callback function when opening a toolbox category."),a=a(this.workspace_.targetWorkspace),goog.asserts.assert(goog.isArray(a),"The result of a toolbox category callback must be an array."));this.setVisible(!0);for(var b=[],c=[],d=this.permanentlyDisabled_.length=&#xD;	0,e;e=a[d];d++)if(e.tagName){var f=e.tagName.toUpperCase(),g=this.horizontalLayout_?this.GAP_X:this.GAP_Y;if("BLOCK"==f)f=Blockly.Xml.domToBlock(e,this.workspace_),f.disabled&amp;&amp;this.permanentlyDisabled_.push(f),b.push({type:"block",block:f}),e=parseInt(e.getAttribute("gap"),10),c.push(isNaN(e)?g:e);else if("SEP"==e.tagName.toUpperCase())e=parseInt(e.getAttribute("gap"),10),!isNaN(e)&amp;&amp;0&lt;c.length?c[c.length-1]=e:c.push(g);else if("BUTTON"==f||"LABEL"==f)e=new Blockly.FlyoutButton(this.workspace_,this.targetWorkspace_,&#xD;	e,"LABEL"==f),b.push({type:"button",button:e}),c.push(g)}this.layout_(b,c);this.listeners_.push(Blockly.bindEvent_(this.svgBackground_,"mouseover",this,function(){for(var a=this.workspace_.getTopBlocks(!1),b=0,c;c=a[b];b++)c.removeSelect()}));this.workspace_.setResizesEnabled(!0);this.reflow();this.position();this.reflowWrapper_=this.reflow.bind(this);this.workspace_.addChangeListener(this.reflowWrapper_)};&#xD;	Blockly.Flyout.prototype.clearOldBlocks_=function(){for(var a=this.workspace_.getTopBlocks(!1),b=0,c;c=a[b];b++)c.workspace==this.workspace_&amp;&amp;c.dispose(!1,!1);for(b=0;a=this.backgroundButtons_[b];b++)goog.dom.removeNode(a);for(b=this.backgroundButtons_.length=0;a=this.buttons_[b];b++)a.dispose();this.buttons_.length=0};&#xD;	Blockly.Flyout.prototype.addBlockListeners_=function(a,b,c){this.autoClose?(this.listeners_.push(Blockly.bindEventWithChecks_(a,"mousedown",null,this.createBlockFunc_(b))),this.listeners_.push(Blockly.bindEventWithChecks_(c,"mousedown",null,this.createBlockFunc_(b)))):(this.listeners_.push(Blockly.bindEventWithChecks_(a,"mousedown",null,this.blockMouseDown_(b))),this.listeners_.push(Blockly.bindEventWithChecks_(c,"mousedown",null,this.blockMouseDown_(b))));this.listeners_.push(Blockly.bindEvent_(a,&#xD;	"mouseover",b,b.addSelect));this.listeners_.push(Blockly.bindEvent_(a,"mouseout",b,b.removeSelect));this.listeners_.push(Blockly.bindEvent_(c,"mouseover",b,b.addSelect));this.listeners_.push(Blockly.bindEvent_(c,"mouseout",b,b.removeSelect))};Blockly.Flyout.prototype.blockMouseDown_=function(a){var b=this;return function(c){var d=b.targetWorkspace_.getGesture(c);d&amp;&amp;(d.setStartBlock(a),d.handleFlyoutStart(c,b))}};&#xD;	Blockly.Flyout.prototype.onMouseDown_=function(a){var b=this.targetWorkspace_.getGesture(a);b&amp;&amp;b.handleFlyoutStart(a,this)};&#xD;	Blockly.Flyout.prototype.createBlock=function(a){var b=null;Blockly.Events.disable();this.targetWorkspace_.setResizesEnabled(!1);try{b=this.placeNewBlock_(a);if(goog.userAgent.IE||goog.userAgent.EDGE)for(var c=b.getDescendants(),d=c.length-1;0&lt;=d;d--)c[d].render(!1);Blockly.hideChaff()}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&amp;&amp;(Blockly.Events.setGroup(!0),Blockly.Events.fire(new Blockly.Events.Create(b)));this.autoClose&amp;&amp;this.hide();return b};&#xD;	Blockly.Flyout.prototype.reflow=function(){this.reflowWrapper_&amp;&amp;this.workspace_.removeChangeListener(this.reflowWrapper_);var a=this.workspace_.getTopBlocks(!1);this.reflowInternal_(a);this.reflowWrapper_&amp;&amp;this.workspace_.addChangeListener(this.reflowWrapper_)};Blockly.Flyout.prototype.isScrollable=function(){return this.scrollbar_?this.scrollbar_.isVisible():!1};Blockly.HorizontalFlyout=function(a){a.getMetrics=this.getMetrics_.bind(this);a.setMetrics=this.setMetrics_.bind(this);Blockly.HorizontalFlyout.superClass_.constructor.call(this,a);this.horizontalLayout_=!0};goog.inherits(Blockly.HorizontalFlyout,Blockly.Flyout);&#xD;	Blockly.HorizontalFlyout.prototype.getMetrics_=function(){if(!this.isVisible())return null;try{var a=this.workspace_.getCanvas().getBBox()}catch(e){a={height:0,y:0,width:0,x:0}}var b=this.SCROLLBAR_PADDING,c=this.SCROLLBAR_PADDING;this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(b=0);var d=this.height_;this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP&amp;&amp;(d+=this.MARGIN);return{viewHeight:d,viewWidth:this.width_-2*this.SCROLLBAR_PADDING,contentHeight:a.height*this.workspace_.scale+2*this.MARGIN,contentWidth:a.width*&#xD;	this.workspace_.scale+2*this.MARGIN,viewTop:-this.workspace_.scrollY,viewLeft:-this.workspace_.scrollX,contentTop:a.y,contentLeft:a.x,absoluteTop:b,absoluteLeft:c}};Blockly.HorizontalFlyout.prototype.setMetrics_=function(a){var b=this.getMetrics_();b&amp;&amp;(goog.isNumber(a.x)&amp;&amp;(this.workspace_.scrollX=-b.contentWidth*a.x),this.workspace_.translate(this.workspace_.scrollX+b.absoluteLeft,this.workspace_.scrollY+b.absoluteTop))};&#xD;	Blockly.HorizontalFlyout.prototype.position=function(){if(this.isVisible()){var a=this.targetWorkspace_.getMetrics();if(a){this.setBackgroundPath_(this.horizontalLayout_?a.viewWidth-2*this.CORNER_RADIUS:this.width_-this.CORNER_RADIUS,this.horizontalLayout_?this.height_-this.CORNER_RADIUS:a.viewHeight-2*this.CORNER_RADIUS);var b=a.absoluteLeft;this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(b+=a.viewWidth,b-=this.width_);var c=a.absoluteTop;this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(c+=a.viewHeight,&#xD;	c-=this.height_);this.horizontalLayout_?this.width_=a.viewWidth:this.height_=a.viewHeight;this.svgGroup_.setAttribute("width",this.width_);this.svgGroup_.setAttribute("height",this.height_);Blockly.utils.setCssTransform(this.svgGroup_,"translate("+b+"px,"+c+"px)");this.scrollbar_&amp;&amp;(this.scrollbar_.setOrigin(b,c),this.scrollbar_.resize());this.svgGroup_.style.opacity=1}}};&#xD;	Blockly.HorizontalFlyout.prototype.setBackgroundPath_=function(a,b){var c=this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP,d=["M 0,"+(c?0:this.CORNER_RADIUS)];c?(d.push("h",a+2*this.CORNER_RADIUS),d.push("v",b),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("h",-1*a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,-this.CORNER_RADIUS,-this.CORNER_RADIUS)):(d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,-this.CORNER_RADIUS),&#xD;	d.push("h",a),d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,1,this.CORNER_RADIUS,this.CORNER_RADIUS),d.push("v",b),d.push("h",-a-2*this.CORNER_RADIUS));d.push("z");this.svgBackground_.setAttribute("d",d.join(" "))};Blockly.HorizontalFlyout.prototype.scrollToStart=function(){this.scrollbar_.set(this.RTL?Infinity:0)};&#xD;	Blockly.HorizontalFlyout.prototype.wheel_=function(a){var b=a.deltaX;if(b){goog.userAgent.GECKO&amp;&amp;(b*=10);var c=this.getMetrics_(),b=c.viewLeft+b,b=Math.min(b,c.contentWidth-c.viewWidth),b=Math.max(b,0);this.scrollbar_.set(b);Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation()}a.preventDefault();a.stopPropagation()};&#xD;	Blockly.HorizontalFlyout.prototype.layout_=function(a,b){this.workspace_.scale=this.targetWorkspace_.scale;var c=this.MARGIN,d=c;this.RTL&amp;&amp;(a=a.reverse());for(var e=0,f;f=a[e];e++)if("block"==f.type){f=f.block;for(var g=f.getDescendants(),h=0,k;k=g[h];h++)k.isInFlyout=!0;g=f.getSvgRoot();h=f.getHeightWidth();k=d;this.RTL&amp;&amp;(k+=h.width);f.moveBy(k,c);d+=h.width+b[e];h=Blockly.utils.createSvgElement("rect",{"fill-opacity":0},null);h.tooltip=f;Blockly.Tooltip.bindMouseEvents(h);this.workspace_.getCanvas().insertBefore(h,&#xD;	f.getSvgRoot());f.flyoutRect_=h;this.backgroundButtons_[e]=h;this.addBlockListeners_(g,f,h)}else"button"==f.type&amp;&amp;(f=f.button,g=f.createDom(),f.moveTo(d,c),f.show(),this.listeners_.push(Blockly.bindEventWithChecks_(g,"mousedown",this,this.onMouseDown_)),this.buttons_.push(f),d+=f.width+b[e])};&#xD;	Blockly.HorizontalFlyout.prototype.isDragTowardWorkspace=function(a){a=Math.atan2(a.y,a.x)/Math.PI*180;var b=!1,c=this.dragAngleRange_;this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP?a&lt;90+c&amp;&amp;a&gt;90-c&amp;&amp;(b=!0):a&gt;-90-c&amp;&amp;a&lt;-90+c&amp;&amp;(b=!0);return b};&#xD;	Blockly.HorizontalFlyout.prototype.placeNewBlock_=function(a){var b=this.targetWorkspace_,c=a.getSvgRoot();if(!c)throw"originBlock is not rendered.";var c=Blockly.utils.getInjectionDivXY_(c),d=this.workspace_.scrollX,e=this.workspace_.scale;c.x+=d/e-d;this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(d=b.getMetrics().viewWidth-this.width_,e=b.scale,c.x+=d/e-d);d=this.workspace_.scrollY;e=this.workspace_.scale;c.y+=d/e-d;this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(d=b.getMetrics().viewHeight-&#xD;	this.height_,e=b.scale,c.y+=d/e-d);a=Blockly.Xml.blockToDom(a);a=Blockly.Xml.domToBlock(a,b);e=a.getSvgRoot();if(!e)throw"block is not rendered.";e=Blockly.utils.getInjectionDivXY_(e);e.x+=b.scrollX/b.scale-b.scrollX;e.y+=b.scrollY/b.scale-b.scrollY;b.toolbox_&amp;&amp;!b.scrollbar&amp;&amp;(e.x+=b.toolbox_.getWidth()/b.scale,e.y+=b.toolbox_.getHeight()/b.scale);a.moveBy(c.x-e.x,c.y-e.y);return a};&#xD;	Blockly.HorizontalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.top,a=a.height;if(this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP)return new goog.math.Rect(-1E9,b-1E9,2E9,1E9+a);if(this.toolboxPosition_==Blockly.TOOLBOX_AT_BOTTOM)return new goog.math.Rect(-1E9,b,2E9,1E9+a)};&#xD;	Blockly.HorizontalFlyout.prototype.reflowInternal_=function(a){this.workspace_.scale=this.targetWorkspace_.scale;for(var b=0,c=0,d;d=a[c];c++)b=Math.max(b,d.getHeightWidth().height);b+=1.5*this.MARGIN;b*=this.workspace_.scale;b+=Blockly.Scrollbar.scrollbarThickness;if(this.height_!=b){for(c=0;d=a[c];c++){var e=d.getHeightWidth();if(d.flyoutRect_){d.flyoutRect_.setAttribute("width",e.width);d.flyoutRect_.setAttribute("height",e.height);var f=d.getRelativeToSurfaceXY();d.flyoutRect_.setAttribute("y",&#xD;	f.y);d.flyoutRect_.setAttribute("x",this.RTL?f.x-e.width:f.x);(e=d.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)&amp;&amp;d.moveBy(0,e);d.flyoutRect_.setAttribute("y",f.y)}}this.height_=b;this.targetWorkspace_.resize()}};Blockly.VerticalFlyout=function(a){a.getMetrics=this.getMetrics_.bind(this);a.setMetrics=this.setMetrics_.bind(this);Blockly.VerticalFlyout.superClass_.constructor.call(this,a);this.horizontalLayout_=!1;this.checkboxes_=[]};goog.inherits(Blockly.VerticalFlyout,Blockly.Flyout);Blockly.VerticalFlyout.prototype.autoClose=!1;Blockly.VerticalFlyout.prototype.DEFAULT_WIDTH=250;Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE=20;&#xD;	Blockly.VerticalFlyout.prototype.CHECKMARK_PATH="M"+Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/4+" "+Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/2+"L"+5*Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/12+" "+2*Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/3+"L"+3*Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/4+" "+Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE/3;Blockly.VerticalFlyout.prototype.CHECKBOX_CORNER_RADIUS=5;Blockly.VerticalFlyout.prototype.CHECKBOX_MARGIN=Blockly.Flyout.prototype.MARGIN;&#xD;	Blockly.VerticalFlyout.prototype.CHECKBOX_SPACE_X=Blockly.VerticalFlyout.prototype.CHECKBOX_SIZE+2*Blockly.VerticalFlyout.prototype.CHECKBOX_MARGIN;Blockly.VerticalFlyout.prototype.init=function(a){Blockly.VerticalFlyout.superClass_.init.call(this,a);this.workspace_.scale=a.scale};&#xD;	Blockly.VerticalFlyout.prototype.createDom=function(a){Blockly.VerticalFlyout.superClass_.createDom.call(this,a);this.defs_=Blockly.utils.createSvgElement("defs",{},this.svgGroup_);a=Blockly.utils.createSvgElement("clipPath",{id:"blocklyBlockMenuClipPath"},this.defs_);this.clipRect_=Blockly.utils.createSvgElement("rect",{id:"blocklyBlockMenuClipRect",height:"0",width:"0",y:"0",x:"0"},a);this.workspace_.svgGroup_.setAttribute("clip-path","url(#blocklyBlockMenuClipPath)");return this.svgGroup_};&#xD;	Blockly.VerticalFlyout.prototype.getMetrics_=function(){if(!this.isVisible())return null;try{var a=this.workspace_.getCanvas().getBBox()}catch(e){a={height:0,y:0,width:0,x:0}}var b=this.SCROLLBAR_PADDING,c=this.height_-2*this.SCROLLBAR_PADDING,d=this.getWidth()-this.SCROLLBAR_PADDING;return{viewHeight:c,viewWidth:d,contentHeight:a.height*this.workspace_.scale+2*this.MARGIN,contentWidth:a.width*this.workspace_.scale+2*this.MARGIN,viewTop:-this.workspace_.scrollY+a.y,viewLeft:-this.workspace_.scrollX,&#xD;	contentTop:a.y,contentLeft:a.x,absoluteTop:b,absoluteLeft:0}};Blockly.VerticalFlyout.prototype.setMetrics_=function(a){var b=this.getMetrics_();b&amp;&amp;(goog.isNumber(a.y)&amp;&amp;(this.workspace_.scrollY=-b.contentHeight*a.y),this.workspace_.translate(this.workspace_.scrollX+b.absoluteLeft,this.workspace_.scrollY+b.absoluteTop),this.clipRect_.setAttribute("height",b.viewHeight+"px"),this.clipRect_.setAttribute("width",b.viewWidth+"px"))};&#xD;	Blockly.VerticalFlyout.prototype.position=function(){if(this.isVisible()){var a=this.targetWorkspace_.getMetrics();if(a){this.width_=this.getWidth();if(this.parentToolbox_){var b=this.parentToolbox_.HtmlDiv.offsetLeft;var c=this.parentToolbox_.HtmlDiv.offsetTop+this.parentToolbox_.getHeight()}else b=this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT?a.viewWidth-this.width_:0,c=0;this.height_=a.viewHeight-c;this.setBackgroundPath_(this.width_,this.height_);this.svgGroup_.setAttribute("width",this.width_);&#xD;	this.svgGroup_.setAttribute("height",this.height_);Blockly.utils.setCssTransform(this.svgGroup_,"translate("+b+"px,"+c+"px)");this.scrollbar_&amp;&amp;(this.scrollbar_.setOrigin(b,c),this.scrollbar_.resize());this.svgGroup_.style.opacity=1}}};&#xD;	Blockly.VerticalFlyout.prototype.setBackgroundPath_=function(a,b){var c=this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT,d=["M 0,0"];d.push("h",a);d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,c?0:1,c?-this.CORNER_RADIUS:this.CORNER_RADIUS,this.CORNER_RADIUS);d.push("v",Math.max(0,b-2*this.CORNER_RADIUS));d.push("a",this.CORNER_RADIUS,this.CORNER_RADIUS,0,0,c?0:1,c?this.CORNER_RADIUS:-this.CORNER_RADIUS,this.CORNER_RADIUS);d.push("h",-a);d.push("z");this.svgBackground_.setAttribute("d",d.join(" "))};&#xD;	Blockly.VerticalFlyout.prototype.scrollToStart=function(){this.scrollbar_.set(0)};Blockly.VerticalFlyout.prototype.wheel_=function(a){var b=a.deltaY;if(b){goog.userAgent.GECKO&amp;&amp;(b*=10);var c=this.getMetrics_(),b=-this.workspace_.scrollY+b,b=Math.min(b,c.contentHeight-c.viewHeight),b=Math.max(b,0);this.scrollbar_.set(b);Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation()}a.preventDefault();a.stopPropagation()};&#xD;	Blockly.VerticalFlyout.prototype.clearOldBlocks_=function(){Blockly.VerticalFlyout.superClass_.clearOldBlocks_.call(this);for(var a=0,b;b=this.checkboxes_[a];a++)b.block.flyoutCheckbox=null,goog.dom.removeNode(b.svgRoot);this.checkboxes_=[]};Blockly.VerticalFlyout.prototype.addBlockListeners_=function(a,b,c){Blockly.VerticalFlyout.superClass_.addBlockListeners_.call(this,a,b,c);b.flyoutCheckbox&amp;&amp;this.listeners_.push(Blockly.bindEvent_(b.flyoutCheckbox.svgRoot,"mousedown",null,this.checkboxClicked_(b.flyoutCheckbox)))};&#xD;	Blockly.VerticalFlyout.prototype.layout_=function(a,b){for(var c=this.MARGIN,d=this.getWidth()/this.workspace_.scale,e=c,f=0,g;g=a[f];f++)if("block"==g.type){g=g.block;for(var h=g.getDescendants(),k=0,l;l=h[k];k++)l.isInFlyout=!0;h=g.getSvgRoot();k=g.getHeightWidth();l=g.getRelativeToSurfaceXY().x;var m=d-this.MARGIN;l=this.RTL?m-l:c;g.hasCheckboxInFlyout()&amp;&amp;(this.createCheckbox_(g,c,e,k),l=this.RTL?l-(this.CHECKBOX_SIZE+this.CHECKBOX_MARGIN):l+(this.CHECKBOX_SIZE+this.CHECKBOX_MARGIN));g.moveBy(l,&#xD;	e+(g.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0));l=this.createRect_(g,this.RTL?l-k.width:l,e,k,f);this.addBlockListeners_(h,g,l);e+=k.height+b[f]+(g.startHat_?Blockly.BlockSvg.START_HAT_HEIGHT:0)}else"button"==g.type&amp;&amp;(g=g.button,h=g.createDom(),g.moveTo(c,e),g.show(),this.listeners_.push(Blockly.bindEventWithChecks_(h,"mousedown",this,this.onMouseDown_)),this.buttons_.push(g),e+=g.height+b[f])};&#xD;	Blockly.VerticalFlyout.prototype.createRect_=function(a,b,c,d,e){b=Blockly.utils.createSvgElement("rect",{"fill-opacity":0,x:b,y:c,height:d.height,width:d.width},null);b.tooltip=a;Blockly.Tooltip.bindMouseEvents(b);this.workspace_.getCanvas().insertBefore(b,a.getSvgRoot());a.flyoutRect_=b;return this.backgroundButtons_[e]=b};&#xD;	Blockly.VerticalFlyout.prototype.createCheckbox_=function(a,b,c,d){var e=a.getSvgRoot(),f=this.CHECKBOX_SIZE+this.CHECKBOX_MARGIN;b=this.RTL?this.getWidth()/this.workspace_.scale-f:b;c=Blockly.utils.createSvgElement("g",{"class":"blocklyFlyoutCheckbox",transform:"translate("+b+", "+(c+d.height/2-this.CHECKBOX_SIZE/2)+")"},null);Blockly.utils.createSvgElement("rect",{height:this.CHECKBOX_SIZE,width:this.CHECKBOX_SIZE,rx:this.CHECKBOX_CORNER_RADIUS,ry:this.CHECKBOX_CORNER_RADIUS},c);Blockly.utils.createSvgElement("path",&#xD;	{"class":"blocklyFlyoutCheckboxPath",d:this.CHECKMARK_PATH},c);d={svgRoot:c,clicked:!1,block:a};a.flyoutCheckbox=d;this.workspace_.getCanvas().insertBefore(c,e);this.checkboxes_.push(d)};Blockly.VerticalFlyout.prototype.checkboxClicked_=function(a){return function(b){var c=a.clicked,d=!c;a.clicked=d;a.clicked?Blockly.utils.addClass(a.svgRoot,"checked"):Blockly.utils.removeClass(a.svgRoot,"checked");Blockly.Events.fire(new Blockly.Events.Change(a.block,"checkbox",null,c,d));b.stopPropagation();b.preventDefault()}};&#xD;	Blockly.VerticalFlyout.prototype.isDragTowardWorkspace=function(a){a=Math.atan2(a.y,a.x)/Math.PI*180;var b=!1,c=this.dragAngleRange_;if(this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT)a&lt;c&amp;&amp;a&gt;-c&amp;&amp;(b=!0);else if(a&lt;-180+c||a&gt;180-c)b=!0;return b};&#xD;	Blockly.VerticalFlyout.prototype.placeNewBlock_=function(a){var b=this.targetWorkspace_,c=a.getSvgRoot();if(!c)throw"originBlock is not rendered.";var c=Blockly.utils.getInjectionDivXY_(c),d=this.workspace_.scale,e=b.getMetrics();this.toolboxPosition_==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(e=e.viewWidth-this.width_,c.x+=e/d-e);this.parentToolbox_&amp;&amp;(c.y+=this.parentToolbox_.getHeight()/b.scale-this.parentToolbox_.getHeight(),e=this.parentToolbox_.getWidth()/b.scale-this.parentToolbox_.getWidth(),c.x=this.toolboxPosition_==&#xD;	Blockly.TOOLBOX_AT_RIGHT?c.x+e:c.x-e);e=this.workspace_.scrollY;c.y+=e/d-e;a=Blockly.Xml.blockToDom(a);b.setResizesEnabled(!1);a=Blockly.Xml.domToBlock(a,b);e=a.getSvgRoot();if(!e)throw"block is not rendered.";e=Blockly.utils.getInjectionDivXY_(e);e.x+=b.scrollX/b.scale-b.scrollX;e.y+=b.scrollY/b.scale-b.scrollY;a.moveBy((d*c.x-b.scale*e.x)/b.scale,(d*c.y-b.scale*e.y)/b.scale);return a};&#xD;	Blockly.VerticalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.left,a=a.width;return this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(b-1E9,-1E9,1E9+a,2E9):new goog.math.Rect(b,-1E9,1E9+a,2E9)};Blockly.VerticalFlyout.prototype.reflowInternal_=function(){};Blockly.Toolbox=function(a){this.workspace_=a;this.iconic_=!1;this.RTL=a.options.RTL;this.horizontalLayout_=a.options.horizontalLayout;this.toolboxPosition=a.options.toolboxPosition};Blockly.Toolbox.prototype.width=250;Blockly.Toolbox.prototype.height=0;Blockly.Toolbox.prototype.selectedItem_=null;&#xD;	Blockly.Toolbox.prototype.init=function(){var a=this.workspace_,b=this.workspace_.getParentSvg();this.HtmlDiv=goog.dom.createDom("DIV","blocklyToolboxDiv");this.HtmlDiv.setAttribute("dir",a.RTL?"RTL":"LTR");b.parentNode.insertBefore(this.HtmlDiv,b);Blockly.bindEventWithChecks_(this.HtmlDiv,"mousedown",this,function(a){Blockly.DropDownDiv.hide();Blockly.utils.isRightButton(a)||a.target==this.HtmlDiv?Blockly.hideChaff(!1):Blockly.hideChaff(!0);Blockly.Touch.clearTouchIdentifier()});this.createFlyout_();&#xD;	this.categoryMenu_=new Blockly.Toolbox.CategoryMenu(this,this.HtmlDiv);this.populate_(a.options.languageTree);this.position()};Blockly.Toolbox.prototype.dispose=function(){this.flyout_.dispose();this.categoryMenu_.dispose();this.categoryMenu_=null;goog.dom.removeNode(this.HtmlDiv);this.lastCategory_=this.workspace_=null};&#xD;	Blockly.Toolbox.prototype.createFlyout_=function(){var a=this.workspace_,b={disabledPatternId:a.options.disabledPatternId,parentWorkspace:a,RTL:a.RTL,oneBasedIndex:a.options.oneBasedIndex,horizontalLayout:a.horizontalLayout,toolboxPosition:a.options.toolboxPosition};this.flyout_=a.horizontalLayout?new Blockly.HorizontalFlyout(b):new Blockly.VerticalFlyout(b);this.flyout_.setParentToolbox(this);goog.dom.insertSiblingAfter(this.flyout_.createDom("svg"),this.workspace_.getParentSvg());this.flyout_.init(a)};&#xD;	Blockly.Toolbox.prototype.populate_=function(a){this.categoryMenu_.populate(a);this.setSelectedItem(this.categoryMenu_.categories_[0])};Blockly.Toolbox.prototype.getWidth=function(){return this.width};Blockly.Toolbox.prototype.getHeight=function(){return this.categoryMenu_?this.categoryMenu_.getHeight():0};&#xD;	Blockly.Toolbox.prototype.position=function(){var a=this.HtmlDiv;if(a){var b=this.workspace_.getParentSvg(),b=Blockly.svgSize(b);this.horizontalLayout_?(a.style.left="0",a.style.height="auto",a.style.width=b.width+"px",this.height=a.offsetHeight,this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?a.style.top="0":a.style.bottom="0"):(this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?a.style.right="0":a.style.left="0",a.style.height=this.getHeight()+"px",a.style.width=this.width+"px");this.flyout_.position()}};&#xD;	Blockly.Toolbox.prototype.clearSelection=function(){this.setSelectedItem(null)};Blockly.Toolbox.prototype.addDeleteStyle=function(){Blockly.utils.addClass(this.HtmlDiv,"blocklyToolboxDelete")};Blockly.Toolbox.prototype.removeDeleteStyle=function(){Blockly.utils.removeClass(this.HtmlDiv,"blocklyToolboxDelete")};Blockly.Toolbox.prototype.addDeleteStyle=function(){Blockly.utils.addClass(this.HtmlDiv,"blocklyToolboxDelete")};&#xD;	Blockly.Toolbox.prototype.removeDeleteStyle=function(){Blockly.utils.removeClass(this.HtmlDiv,"blocklyToolboxDelete")};&#xD;	Blockly.Toolbox.prototype.getClientRect=function(){if(!this.HtmlDiv)return null;var a=this.HtmlDiv.getBoundingClientRect(),b=a.left,c=a.top,d=a.width,a=a.height;return this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT?new goog.math.Rect(-1E7,-1E7,1E7+b+d,2E7):this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?new goog.math.Rect(b,-1E7,1E7+d,2E7):this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?new goog.math.Rect(-1E7,-1E7,2E7,1E7+c+a):new goog.math.Rect(0,c,2E7,1E7+d)};&#xD;	Blockly.Toolbox.prototype.refreshSelection=function(){var a=this.getSelectedItem();a&amp;&amp;a.getContents()&amp;&amp;this.flyout_.show(a.getContents())};Blockly.Toolbox.prototype.getSelectedItem=function(){return this.selectedItem_};Blockly.Toolbox.prototype.setSelectedItem=function(a){if(this.selectedItem_){if(this.selectedItem_==a)return;this.selectedItem_.setSelected(!1)}this.selectedItem_=a;null!=this.selectedItem_&amp;&amp;(this.selectedItem_.setSelected(!0),this.flyout_.show(a.getContents()),this.flyout_.scrollToStart())};&#xD;	Blockly.Toolbox.prototype.setSelectedItemFactory=function(a){return function(){this.setSelectedItem(a);Blockly.Touch.clearTouchIdentifier()}};Blockly.Toolbox.CategoryMenu=function(a,b){this.parent_=a;this.height_=0;this.parentHtml_=b;this.createDom();this.categories_=[]};Blockly.Toolbox.CategoryMenu.prototype.getHeight=function(){return this.height_};Blockly.Toolbox.CategoryMenu.prototype.createDom=function(){this.table=goog.dom.createDom("table","scratchCategoryMenu");this.parentHtml_.appendChild(this.table)};&#xD;	Blockly.Toolbox.CategoryMenu.prototype.populate=function(a){if(a){this.dispose();this.createDom();for(var b=[],c=0,d;d=a.childNodes[c];c++)d.tagName&amp;&amp;"CATEGORY"==d.tagName.toUpperCase()&amp;&amp;b.push(d);a=Math.ceil(b.length/2);for(c=0;c&lt;a;c+=1){d=b[c];var e=goog.dom.createDom("tr","scratchCategoryMenuRow");this.table.appendChild(e);d&amp;&amp;this.categories_.push(new Blockly.Toolbox.Category(this,e,d));b[c+a]&amp;&amp;this.categories_.push(new Blockly.Toolbox.Category(this,e,b[c+a]))}this.height_=this.table.offsetHeight}};&#xD;	Blockly.Toolbox.CategoryMenu.prototype.dispose=function(){for(var a=0,b;b=this.categories_[a];a++)b.dispose();this.categories_=[];this.table&amp;&amp;(goog.dom.removeNode(this.table),this.table=null)};Blockly.Toolbox.Category=function(a,b,c){this.parent_=a;this.parentHtml_=b;this.name_=c.getAttribute("name");this.setColour(c);this.custom_=c.getAttribute("custom");this.contents_=[];this.custom_||this.parseContents_(c);this.createDom()};&#xD;	Blockly.Toolbox.Category.prototype.dispose=function(){this.item_&amp;&amp;(goog.dom.removeNode(this.item_),this.item=null);this.contents_=this.parentHtml_=this.parent_=null};&#xD;	Blockly.Toolbox.Category.prototype.createDom=function(){var a=this.parent_.parent_;this.item_=goog.dom.createDom("td",{"class":"scratchCategoryMenuItem"},this.name_);this.bubble_=goog.dom.createDom("div",{"class":a.RTL?"scratchCategoryItemBubbleRTL":"scratchCategoryItemBubbleLTR"});this.bubble_.style.backgroundColor=this.colour_;this.bubble_.style.borderColor=this.secondaryColour_;this.item_.appendChild(this.bubble_);this.parentHtml_.appendChild(this.item_);Blockly.bindEvent_(this.item_,"mousedown",&#xD;	a,a.setSelectedItemFactory(this))};Blockly.Toolbox.Category.prototype.setSelected=function(a){this.item_.className=a?"scratchCategoryMenuItem categorySelected":"scratchCategoryMenuItem"};Blockly.Toolbox.Category.prototype.parseContents_=function(a){for(var b=0,c;c=a.childNodes[b];b++)if(c.tagName)switch(c.tagName.toUpperCase()){case "BLOCK":case "SHADOW":case "LABEL":case "BUTTON":case "SEP":case "TEXT":this.contents_.push(c)}};&#xD;	Blockly.Toolbox.Category.prototype.getContents=function(){return this.custom_?this.custom_:this.contents_};Blockly.Toolbox.Category.prototype.setColour=function(a){var b=a.getAttribute("colour");a=a.getAttribute("secondaryColour");goog.isString(b)?(b.match(/^#[0-9a-fA-F]{6}$/)?this.colour_=b:this.colour_=Blockly.hueToRgb(b),a.match(/^#[0-9a-fA-F]{6}$/)?this.secondaryColour_=a:this.secondaryColour_=Blockly.hueToRgb(a),this.hasColours_=!0):this.secondaryColour_=this.colour_="#000000"};Blockly.Css={};Blockly.Css.Cursor={OPEN:"handopen",CLOSED:"handclosed",DELETE:"handdelete"};Blockly.Css.currentCursor_="";Blockly.Css.styleSheet_=null;Blockly.Css.mediaPath_="";&#xD;	Blockly.Css.inject=function(a,b){if(!Blockly.Css.styleSheet_){var c=".blocklyDraggable {}\n";a&amp;&amp;(c+=Blockly.Css.CONTENT.join("\n"),Blockly.FieldDate&amp;&amp;(c+=Blockly.FieldDate.CSS.join("\n")));Blockly.Css.mediaPath_=b.replace(/[\\\/]$/,"");var c=c.replace(/&lt;&lt;&lt;PATH&gt;&gt;&gt;/g,Blockly.Css.mediaPath_);for(d in Blockly.Colours)Blockly.Colours.hasOwnProperty(d)&amp;&amp;(c=c.replace(new RegExp("\\$colour\\_"+d,"g"),Blockly.Colours[d]));var d=document.createElement("style");document.head.insertBefore(d,document.head.firstChild);&#xD;	c=document.createTextNode(c);d.appendChild(c);Blockly.Css.styleSheet_=d.sheet}};Blockly.Css.setCursor=function(a){console.warn("Deprecated call to Blockly.Css.setCursor.See https://github.com/google/blockly/issues/981 for context")};&#xD;	Blockly.Css.CONTENT=[".blocklySvg {","background-color: $colour_workspace;","outline: none;","overflow: hidden;","position: absolute;","display: block;","}",".blocklyRelativeWrapper {","position: relative;","width: 100%;","height: 100%;","}",".blocklyWidgetDiv {","display: none;","position: absolute;","z-index: 99999;","}",".injectionDiv {","height: 100%;","position: relative;","overflow: hidden;","touch-action: none","}",".blocklyNonSelectable {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;",&#xD;	"-ms-user-select: none;","}",".blocklyWidgetDiv.fieldTextInput {","overflow: hidden;","border: 1px solid;","box-sizing: border-box;","transform-origin: 0 0;","-ms-transform-origin: 0 0;","-moz-transform-origin: 0 0;","-webkit-transform-origin: 0 0;","}",".blocklyTextDropDownArrow {","position: absolute;","}",".blocklyNonSelectable {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","-ms-user-select: none;","}",".blocklyWsDragSurface {","display: none;","position: absolute;",&#xD;	"overflow: visible;","top: 0;","left: 0;","}",".blocklyBlockDragSurface {","display: none;","position: absolute;","top: 0;","left: 0;","right: 0;","bottom: 0;","overflow: visible !important;","z-index: 50;","}",".blocklyTooltipDiv {","background-color: #ffffc7;","border: 1px solid #ddc;","box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);","color: #000;","display: none;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: 9pt;","opacity: 0.9;","padding: 2px;","position: absolute;","z-index: 100000;",&#xD;	"}",".blocklyDropDownDiv {","position: fixed;","left: 0;","top: 0;","z-index: 1000;","display: none;","border: 1px solid;","border-radius: 4px;","box-shadow: 0px 0px 8px 1px "+Blockly.Colours.dropDownShadow+";","padding: 4px;","-webkit-user-select: none;","}",".blocklyDropDownContent {","max-height: 300px;","overflow: auto;","}",".blocklyDropDownArrow {","position: absolute;","left: 0;","top: 0;","width: 16px;","height: 16px;","z-index: -1;","background-color: inherit;","border-color: inherit;","}",&#xD;	".blocklyDropDownButton {","display: inline-block;","float: left;","padding: 0;","margin: 4px;","border-radius: 4px;","outline: none;","border: 1px solid;","transition: box-shadow .1s;","cursor: pointer;","}",".blocklyDropDownButtonHover {","box-shadow: 0px 0px 0px 4px "+Blockly.Colours.fieldShadow+";","}",".blocklyDropDownButton:active {","box-shadow: 0px 0px 0px 6px "+Blockly.Colours.fieldShadow+";","}",".blocklyDropDownButton &gt; img {","width: 80%;","height: 80%;","margin-top: 5%","}",".blocklyDropDownPlaceholder {",&#xD;	"display: inline-block;","float: left;","padding: 0;","margin: 4px;","}",".blocklyNumPadButton {","display: inline-block;","float: left;","padding: 0;","width: 48px;","height: 48px;","margin: 4px;","border-radius: 4px;","background: $colour_numPadBackground;","color: $colour_numPadText;","outline: none;","border: 1px solid $colour_numPadBorder;","cursor: pointer;","font-weight: 600;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: 12pt;","-webkit-tap-highlight-color: rgba(0,0,0,0);",&#xD;	"}",".blocklyNumPadButton &gt; img {","margin-top: 10%;","width: 80%;","height: 80%;","}",".blocklyNumPadButton:active {","background: $colour_numPadActiveBackground;","-webkit-tap-highlight-color: rgba(0,0,0,0);","}",".arrowTop {","border-top: 1px solid;","border-left: 1px solid;","border-top-left-radius: 4px;","border-color: inherit;","}",".arrowBottom {","border-bottom: 1px solid;","border-right: 1px solid;","border-bottom-right-radius: 4px;","border-color: inherit;","}",".valueReportBox {","min-width: 50px;",&#xD;	"max-width: 300px;","max-height: 200px;","overflow: auto;","word-wrap: break-word;","text-align: center;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: .8em;","}",".blocklyResizeSE {","cursor: se-resize;","fill: #aaa;","}",".blocklyResizeSW {","cursor: sw-resize;","fill: #aaa;","}",".blocklyResizeLine {","stroke: #888;","stroke-width: 1;","}",".blocklyHighlightedConnectionPath {","fill: none;","stroke: #fc3;","stroke-width: 4px;","}",".blocklyPath {","stroke-width: 1px;","}",&#xD;	".blocklySelected&gt;.blocklyPath {","}",".blocklySelected&gt;.blocklyPathLight {","display: none;","}",".blocklyDraggable {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handopen.cur"), auto;&apos;,"cursor: grab;","cursor: -webkit-grab;","cursor: -moz-grab;","}",".blocklyDragging {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handclosed.cur"), auto;&apos;,"cursor: grabbing;","cursor: -webkit-grabbing;","cursor: -moz-grabbing;","}",".blocklyDraggable:active {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handclosed.cur"), auto;&apos;,"cursor: grabbing;","cursor: -webkit-grabbing;",&#xD;	"cursor: -moz-grabbing;","}",".blocklyBlockDragSurface .blocklyDraggable {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handclosed.cur"), auto;&apos;,"cursor: grabbing;","cursor: -webkit-grabbing;","cursor: -moz-grabbing;","}",".blocklyDragging.blocklyDraggingDelete {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handdelete.cur"), auto;&apos;,"}",".blocklyToolboxDelete {",&apos;cursor: url("&lt;&lt;&lt;PATH&gt;&gt;&gt;/handdelete.cur"), auto;&apos;,"}",".blocklyDragging&gt;.blocklyPath,",".blocklyDragging&gt;.blocklyPathLight {","fill-opacity: .8;","stroke-opacity: .8;","}",".blocklyDragging&gt;.blocklyPath {",&#xD;	"}",".blocklyDisabled&gt;.blocklyPath {","fill-opacity: .5;","stroke-opacity: .5;","}",".blocklyInsertionMarker&gt;.blocklyPath {","stroke: none;","}",".blocklyText {","fill: #fff;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: 12pt;","font-weight: 500;","}",".blocklyTextTruncated {","font-size: 11pt;","}",".blocklyNonEditableText&gt;text {","pointer-events: none;","}",".blocklyNonEditableText&gt;text,",".blocklyEditableText&gt;text {","fill: $colour_text;","}",".blocklyDropdownText {","fill: #fff !important;",&#xD;	"}",".blocklyBubbleText {","fill: $colour_text;","}",".blocklyFlyout {","position: absolute;","z-index: 20;","}",".blocklyFlyout {","position: absolute;","z-index: 20;","}",".blocklyFlyoutButton {","fill: none;","}",".blocklyFlyoutButtonBackground {","stroke: #c6c6c6;","}",".blocklyFlyoutButton .blocklyText {","fill: $colour_text;","}",".blocklyFlyoutButtonShadow {","fill: none;","}",".blocklyFlyoutButton:hover {","fill: white;","cursor: pointer;","}",".blocklyFlyoutLabel {","cursor: default;","}",&#xD;	".blocklyFlyoutLabelBackground {","opacity: 0;","}",".blocklyFlyoutLabelText {","fill: #000;","}",".blocklySvg text, .blocklyBlockDragSurface text {","user-select: none;","-moz-user-select: none;","-webkit-user-select: none;","cursor: inherit;","}",".blocklyHidden {","display: none;","}",".blocklyFieldDropdown:not(.blocklyHidden) {","display: block;","}",".blocklyIconGroup {","cursor: default;","}",".blocklyIconGroup:not(:hover),",".blocklyIconGroupReadonly {","opacity: .6;","}",".blocklyIconShape {",&#xD;	"fill: #00f;","stroke: #fff;","stroke-width: 1px;","}",".blocklyIconSymbol {","fill: #fff;","}",".blocklyMinimalBody {","margin: 0;","padding: 0;","}",".blocklyCommentTextarea {","background-color: #ffc;","border: 0;","margin: 0;","padding: 2px;","resize: none;","}",".blocklyHtmlInput {","border: none;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: 12pt;","height: 100%;","margin: 0;","outline: none;","box-sizing: border-box;","width: 100%;","text-align: center;","color: $colour_text;",&#xD;	"font-weight: 500;","}",".blocklyMainBackground {","stroke-width: 1;","stroke: #c6c6c6;","}",".blocklyMutatorBackground {","fill: #fff;","stroke: #ddd;","stroke-width: 1;","}",".blocklyFlyoutBackground {","fill: $colour_flyout;","fill-opacity: .8;","}",".blocklyMainWorkspaceScrollbar {","z-index: 20;","}",".blocklyFlyoutScrollbar {","z-index: 30;","}",".blocklyScrollbarHorizontal, .blocklyScrollbarVertical {","position: absolute;","outline: none;","}",".blocklyScrollbarBackground {","opacity: 0;",&#xD;	"}",".blocklyScrollbarHandle {","fill: $colour_scrollbar;","}",".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyScrollbarHandle:hover {","fill: $colour_scrollbarHover;","}",".blocklyZoom&gt;image {","opacity: 1;","}",".blocklyFlyout .blocklyScrollbarHandle {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyFlyout .blocklyScrollbarHandle:hover {","fill: #aaa;","}",".blocklyInvalidInput {","background: #faa;","}",".blocklyAngleCircle {",&#xD;	"stroke: #444;","stroke-width: 1;","fill: #ddd;","fill-opacity: .8;","}",".blocklyAngleMarks {","stroke: #444;","stroke-width: 1;","}",".blocklyAngleGauge {","fill: #f88;","fill-opacity: .8;","}",".blocklyAngleLine {","stroke: #f00;","stroke-width: 2;","stroke-linecap: round;","pointer-events: none;","}",".blocklyContextMenu {","border-radius: 4px;","}",".blocklyDropdownMenu {","padding: 0 !important;","}",".blocklyDropDownNumPad {","background-color: $colour_numPadBackground;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",&#xD;	".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {","background: url(&lt;&lt;&lt;PATH&gt;&gt;&gt;/sprites.png) no-repeat -48px -16px !important;","}",".blocklyToolboxDiv {","background-color: $colour_toolbox;","color: $colour_toolboxText;","overflow-x: visible;","overflow-y: auto;","position: absolute;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"z-index: 40;","}",".blocklyTreeRoot {","padding: 4px 0;","}",".blocklyTreeRoot:focus {","outline: none;","}",".blocklyTreeRow {","height: 22px;",&#xD;	"line-height: 22px;","margin-bottom: 3px;","padding-right: 8px;","white-space: nowrap;","}",".blocklyHorizontalTree {","float: left;","margin: 1px 5px 8px 0;","}",".blocklyHorizontalTreeRtl {","float: right;","margin: 1px 0 8px 5px;","}",&apos;.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {&apos;,"margin-left: 8px;","}",".blocklyTreeRow:not(.blocklyTreeSelected):hover {","background-color: #e4e4e4;","}",".blocklyTreeSeparator {","border-bottom: solid #e5e5e5 1px;","height: 0;","margin: 5px 0;","}",".blocklyTreeSeparatorHorizontal {",&#xD;	"border-right: solid #e5e5e5 1px;","width: 0;","padding: 5px 0;","margin: 0 5px;","}",".blocklyTreeIcon {","background-image: url(&lt;&lt;&lt;PATH&gt;&gt;&gt;/sprites.png);","height: 16px;","vertical-align: middle;","width: 16px;","}",".blocklyTreeIconClosedLtr {","background-position: -32px -1px;","}",".blocklyTreeIconClosedRtl {","background-position: 0px -1px;","}",".blocklyTreeIconOpen {","background-position: -16px -1px;","}",".blocklyTreeSelected&gt;.blocklyTreeIconClosedLtr {","background-position: -32px -17px;",&#xD;	"}",".blocklyTreeSelected&gt;.blocklyTreeIconClosedRtl {","background-position: 0px -17px;","}",".blocklyTreeSelected&gt;.blocklyTreeIconOpen {","background-position: -16px -17px;","}",".blocklyTreeIconNone,",".blocklyTreeSelected&gt;.blocklyTreeIconNone {","background-position: -48px -1px;","}",".blocklyTreeLabel {","cursor: default;",&apos;font-family: "Helvetica Neue", Helvetica, sans-serif;&apos;,"font-size: 16px;","padding: 0 3px;","vertical-align: middle;","}",".blocklyTreeSelected .blocklyTreeLabel {","color: #fff;",&#xD;	"}",".blocklyWidgetDiv .goog-palette {","outline: none;","cursor: default;","}",".blocklyWidgetDiv .goog-palette-table {","border-collapse: collapse;","}",".blocklyWidgetDiv .goog-palette-cell {","height: 13px;","width: 15px;","margin: 0;","border: 0;","text-align: center;","vertical-align: middle;","font-size: 1px;","}",".blocklyWidgetDiv .goog-palette-colorswatch {","position: relative;","height: 13px;","width: 15px;","}",".blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {",&#xD;	"border: 1px solid #FFF;","box-sizing: border-box;","}",".blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {","border: 1px solid #000;","box-sizing: border-box;","color: #fff;","}",".blocklyWidgetDiv .goog-menu {","background: #fff;","border-color: #ccc #666 #666 #ccc;","border-style: solid;","border-width: 1px;","cursor: default;",&apos;font: normal 13px "Helvetica Neue", Helvetica, sans-serif;&apos;,"margin: 0;","outline: none;","padding: 4px 0;","position: absolute;","overflow-y: auto;",&#xD;	"overflow-x: hidden;","z-index: 20000;","}",".blocklyDropDownDiv .goog-menu {","cursor: default;",&apos;font: normal 13px "Helvetica Neue", Helvetica, sans-serif;&apos;,"outline: none;","z-index: 20000;","}",".blocklyWidgetDiv .goog-menuitem {","color: #000;",&apos;font: normal 13px "Helvetica Neue", Helvetica, sans-serif;&apos;,"list-style: none;","margin: 0;","padding: 4px 7em 4px 28px;","white-space: nowrap;","}",".blocklyDropDownDiv .goog-menuitem {","color: #fff;",&apos;font: normal 13px "Helvetica Neue", Helvetica, sans-serif;&apos;,&#xD;	"font-weight: bold;","list-style: none;","margin: 0;","padding: 4px 7em 4px 28px;","white-space: nowrap;","}",".blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl, ",".blocklyDropDownDiv .goog-menuitem.goog-menuitem-rtl {","padding-left: 7em;","padding-right: 28px;","}",".blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,",".blocklyWidgetDiv .goog-menu-noicon .goog-menuitem, ",".blocklyDropDownDiv .goog-menu-nocheckbox .goog-menuitem,",".blocklyDropDownDiv .goog-menu-noicon .goog-menuitem { ",&#xD;	"padding-left: 12px;","}",".blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem, ",".blocklyDropDownDiv .goog-menu-noaccel .goog-menuitem {","padding-right: 20px;","}",".blocklyWidgetDiv .goog-menuitem-content ",".blocklyDropDownDiv .goog-menuitem-content {","color: #000;",&apos;font: normal 13px "Helvetica Neue", Helvetica, sans-serif;&apos;,"}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content, ",".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-accel,",&#xD;	".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-content {","color: #ccc !important;","}",".blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon, ",".blocklyDropDownDiv .goog-menuitem-disabled .goog-menuitem-icon {","opacity: 0.3;","-moz-opacity: 0.3;","filter: alpha(opacity=30);","}",".blocklyWidgetDiv .goog-menuitem-highlight,",".blocklyWidgetDiv .goog-menuitem-hover {","background-color: #d6e9f8;","border-color: #d6e9f8;","border-style: dotted;","border-width: 1px 0;","padding-bottom: 3px;",&#xD;	"padding-top: 3px;","}",".blocklyDropDownDiv .goog-menuitem-highlight,",".blocklyDropDownDiv .goog-menuitem-hover {","background-color: rgba(0, 0, 0, 0.2);","}",".blocklyWidgetDiv .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-icon, ",".blocklyDropDownDiv .goog-menuitem-checkbox,",".blocklyDropDownDiv .goog-menuitem-icon {","background-repeat: no-repeat;","height: 16px;","left: 6px;","position: absolute;","right: auto;","vertical-align: middle;","width: 16px;","}",".blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,",&#xD;	".blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon,",".blocklyDropDownDiv .goog-option-selected .goog-menuitem-checkbox,",".blocklyDropDownDiv .goog-option-selected .goog-menuitem-icon {","background: url(&lt;&lt;&lt;PATH&gt;&gt;&gt;/sprites.png) no-repeat -48px -16px !important;","position: static;","float: left;","margin-left: -24px;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon,",".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-checkbox,",&#xD;	".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-icon {","float: right;","margin-left: 6px;","}",".blocklyWidgetDiv .goog-menuitem-accel, ",".blocklyDropDownDiv .goog-menuitem-accel {","color: #999;","direction: ltr;","left: auto;","padding: 0 6px;","position: absolute;","right: 0;","text-align: right;","}",".blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel, ",".blocklyDropDownDiv .goog-menuitem-rtl .goog-menuitem-accel {","left: 0;","right: auto;","text-align: left;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-hint, ",&#xD;	".blocklyDropDownDiv .goog-menuitem-mnemonic-hint {","text-decoration: underline;","}",".blocklyWidgetDiv .goog-menuitem-mnemonic-separator, ",".blocklyDropDownDiv .goog-menuitem-mnemonic-separator {","color: #999;","font-size: 12px;","padding-left: 4px;","}",".blocklyWidgetDiv .goog-menuseparator, ",".blocklyDropDownDiv .goog-menuseparator {","border-top: 1px solid #ccc;","margin: 4px 0;","padding: 0;","}",".blocklyFlyoutCheckbox {","fill: white;","stroke: #c8c8c8;","}",".blocklyFlyoutCheckbox.checked {",&#xD;	"fill: "+Blockly.Colours.motion.primary+";","stroke: "+Blockly.Colours.motion.tertiary+";","}",".blocklyFlyoutCheckboxPath {","stroke: white;","stroke-width: 3;","stroke-linecap: round;","stroke-linejoin: round;","}",".scratchCategoryMenu {","width: 250px;","background: $colour_toolbox;","color: $colour_toolboxText;","font-size: .9em;","user-select: none;","-webkit-user-select: none;","-moz-user-select: none;","-ms-user-select: none;","}",".scratchCategoryRow {","width: 50%;","}",".scratchCategoryMenuItem {",&#xD;	"padding: 4px;","width: 50%;","cursor: pointer;","}",".scratchCategoryMenuItem.categorySelected {","background: $colour_toolboxSelected;","border-radius: 16px;","}",".scratchCategoryItemBubbleLTR {","width: 14px;","height: 14px;","border: 1px solid;","border-radius: 8px;","float: left;","margin-right: 8px;","}",".scratchCategoryItemBubbleRTL {","width: 14px;","height: 14px;","border: 1px solid;","border-radius: 8px;","float: right;","margin-left: 8px;","}",".scratchCategoryMenuItem:hover {","color: $colour_toolboxHover !important;",&#xD;	"}",""];Blockly.WidgetDiv={};Blockly.WidgetDiv.DIV=null;Blockly.WidgetDiv.owner_=null;Blockly.WidgetDiv.dispose_=null;Blockly.WidgetDiv.disposeAnimationFinished_=null;Blockly.WidgetDiv.disposeAnimationTimer_=null;Blockly.WidgetDiv.disposeAnimationTimerLength_=0;Blockly.WidgetDiv.createDom=function(){Blockly.WidgetDiv.DIV||(Blockly.WidgetDiv.DIV=goog.dom.createDom("DIV","blocklyWidgetDiv"),document.body.appendChild(Blockly.WidgetDiv.DIV))};&#xD;	Blockly.WidgetDiv.show=function(a,b,c,d,e){Blockly.WidgetDiv.hide();Blockly.WidgetDiv.owner_=a;Blockly.WidgetDiv.dispose_=c;Blockly.WidgetDiv.disposeAnimationFinished_=d;Blockly.WidgetDiv.disposeAnimationTimerLength_=e;a=goog.style.getViewportPageOffset(document);Blockly.WidgetDiv.DIV.style.top=a.y+"px";Blockly.WidgetDiv.DIV.style.direction=b?"rtl":"ltr";Blockly.WidgetDiv.DIV.style.display="block"};&#xD;	Blockly.WidgetDiv.hide=function(a){Blockly.WidgetDiv.disposeAnimationTimer_?(window.clearTimeout(Blockly.WidgetDiv.disposeAnimationTimer_),Blockly.WidgetDiv.disposeAnimationFinished_&amp;&amp;Blockly.WidgetDiv.disposeAnimationFinished_(),Blockly.WidgetDiv.disposeAnimationFinished_=null,Blockly.WidgetDiv.disposeAnimationTimer_=null,Blockly.WidgetDiv.owner_=null,Blockly.WidgetDiv.hideAndClearDom_()):Blockly.WidgetDiv.isVisible()&amp;&amp;(Blockly.WidgetDiv.dispose_&amp;&amp;Blockly.WidgetDiv.dispose_(),Blockly.WidgetDiv.dispose_=&#xD;	null,Blockly.WidgetDiv.disposeAnimationFinished_&amp;&amp;!a?Blockly.WidgetDiv.disposeAnimationTimer_=window.setTimeout(Blockly.WidgetDiv.hide,1E3*Blockly.WidgetDiv.disposeAnimationTimerLength_):(Blockly.WidgetDiv.disposeAnimationFinished_&amp;&amp;Blockly.WidgetDiv.disposeAnimationFinished_(),Blockly.WidgetDiv.disposeAnimationFinished_=null,Blockly.WidgetDiv.owner_=null,Blockly.WidgetDiv.hideAndClearDom_()),Blockly.Events.setGroup(!1))};&#xD;	Blockly.WidgetDiv.hideAndClearDom_=function(){Blockly.WidgetDiv.DIV.style.display="none";Blockly.WidgetDiv.DIV.style.left="";Blockly.WidgetDiv.DIV.style.top="";Blockly.WidgetDiv.DIV.style.height="";goog.dom.removeChildren(Blockly.WidgetDiv.DIV)};Blockly.WidgetDiv.isVisible=function(){return!!Blockly.WidgetDiv.owner_};Blockly.WidgetDiv.hideIfOwner=function(a){Blockly.WidgetDiv.owner_==a&amp;&amp;Blockly.WidgetDiv.hide()};&#xD;	Blockly.WidgetDiv.position=function(a,b,c,d,e){b&lt;d.y&amp;&amp;(b=d.y);e?a&gt;c.width+d.x&amp;&amp;(a=c.width+d.x):a&lt;d.x&amp;&amp;(a=d.x);Blockly.WidgetDiv.DIV.style.left=a+"px";Blockly.WidgetDiv.DIV.style.top=b+"px";Blockly.WidgetDiv.DIV.style.height=c.height+"px"};Blockly.BlockDragSurfaceSvg=function(a){this.container_=a;this.createDom()};Blockly.BlockDragSurfaceSvg.prototype.SVG_=null;Blockly.BlockDragSurfaceSvg.prototype.dragGroup_=null;Blockly.BlockDragSurfaceSvg.prototype.container_=null;Blockly.BlockDragSurfaceSvg.prototype.scale_=1;Blockly.BlockDragSurfaceSvg.prototype.surfaceXY_=null;&#xD;	Blockly.BlockDragSurfaceSvg.prototype.createDom=function(){this.SVG_||(this.SVG_=Blockly.utils.createSvgElement("svg",{xmlns:Blockly.SVG_NS,"xmlns:html":Blockly.HTML_NS,"xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1","class":"blocklyBlockDragSurface"},this.container_),this.dragGroup_=Blockly.utils.createSvgElement("g",{},this.SVG_))};&#xD;	Blockly.BlockDragSurfaceSvg.prototype.setBlocksAndShow=function(a){goog.asserts.assert(0==this.dragGroup_.childNodes.length,"Already dragging a block.");this.dragGroup_.appendChild(a);this.SVG_.style.display="block";this.surfaceXY_=new goog.math.Coordinate(0,0);document.getElementsByClassName("injectionDiv")[0].style.overflow="visible"};&#xD;	Blockly.BlockDragSurfaceSvg.prototype.translateAndScaleGroup=function(a,b,c){this.scale_=c;a=a.toFixed(0);b=b.toFixed(0);this.dragGroup_.setAttribute("transform","translate("+a+","+b+") scale("+c+")")};Blockly.BlockDragSurfaceSvg.prototype.translateSurfaceInternal_=function(){var a=this.surfaceXY_.x,b=this.surfaceXY_.y,a=a.toFixed(0),b=b.toFixed(0);this.SVG_.style.display="block";Blockly.utils.setCssTransform(this.SVG_,"translate3d("+a+"px, "+b+"px, 0px)")};&#xD;	Blockly.BlockDragSurfaceSvg.prototype.translateSurface=function(a,b){this.surfaceXY_=new goog.math.Coordinate(a*this.scale_,b*this.scale_);this.translateSurfaceInternal_()};Blockly.BlockDragSurfaceSvg.prototype.getSurfaceTranslation=function(){var a=Blockly.utils.getRelativeXY(this.SVG_);return new goog.math.Coordinate(a.x/this.scale_,a.y/this.scale_)};Blockly.BlockDragSurfaceSvg.prototype.getGroup=function(){return this.dragGroup_};Blockly.BlockDragSurfaceSvg.prototype.getCurrentBlock=function(){return this.dragGroup_.firstChild};&#xD;	Blockly.BlockDragSurfaceSvg.prototype.clearAndHide=function(a){a?a.appendChild(this.getCurrentBlock()):this.dragGroup_.removeChild(this.getCurrentBlock());this.SVG_.style.display="none";goog.asserts.assert(0==this.dragGroup_.childNodes.length,"Drag group was not cleared.");this.surfaceXY_=null;document.getElementsByClassName("injectionDiv")[0].style.overflow="hidden"};Blockly.inject=function(a,b){goog.isString(a)&amp;&amp;(a=document.getElementById(a)||document.querySelector(a));if(!goog.dom.contains(document,a))throw"Error: container is not in current document.";var c=new Blockly.Options(b||{}),d=goog.dom.createDom("div","injectionDiv");a.appendChild(d);var e=Blockly.createDom_(d,c),f=new Blockly.BlockDragSurfaceSvg(d),d=new Blockly.WorkspaceDragSurfaceSvg(d),c=Blockly.createMainWorkspace_(e,c,f,d);Blockly.init_(c);Blockly.mainWorkspace=c;Blockly.svgResize(c);return c};&#xD;	Blockly.createDom_=function(a,b){a.setAttribute("dir","LTR");goog.ui.Component.setDefaultRightToLeft(b.RTL);Blockly.Css.inject(b.hasCss,b.pathToMedia);var c=Blockly.utils.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1","class":"blocklySvg"},a),d=Blockly.utils.createSvgElement("defs",{},c),e=String(Math.random()).substring(2),f=Blockly.utils.createSvgElement("filter",{id:"blocklyStackGlowFilter",&#xD;	height:"160%",width:"180%",y:"-30%",x:"-40%"},d);b.stackGlowBlur=Blockly.utils.createSvgElement("feGaussianBlur",{"in":"SourceGraphic",stdDeviation:Blockly.STACK_GLOW_RADIUS},f);var g=Blockly.utils.createSvgElement("feComponentTransfer",{result:"outBlur"},f);Blockly.utils.createSvgElement("feFuncA",{type:"table",tableValues:"0"+goog.string.repeat(" 1",16)},g);Blockly.utils.createSvgElement("feFlood",{"flood-color":Blockly.Colours.stackGlow,"flood-opacity":Blockly.Colours.stackGlowOpacity,result:"outColor"},&#xD;	f);Blockly.utils.createSvgElement("feComposite",{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},f);Blockly.utils.createSvgElement("feComposite",{"in":"SourceGraphic",in2:"outGlow",operator:"over"},f);f=Blockly.utils.createSvgElement("filter",{id:"blocklyReplacementGlowFilter",height:"160%",width:"180%",y:"-30%",x:"-40%"},d);Blockly.utils.createSvgElement("feGaussianBlur",{"in":"SourceGraphic",stdDeviation:Blockly.REPLACEMENT_GLOW_RADIUS},f);g=Blockly.utils.createSvgElement("feComponentTransfer",&#xD;	{result:"outBlur"},f);Blockly.utils.createSvgElement("feFuncA",{type:"table",tableValues:"0"+goog.string.repeat(" 1",16)},g);Blockly.utils.createSvgElement("feFlood",{"flood-color":Blockly.Colours.replacementGlow,"flood-opacity":Blockly.Colours.replacementGlowOpacity,result:"outColor"},f);Blockly.utils.createSvgElement("feComposite",{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},f);Blockly.utils.createSvgElement("feComposite",{"in":"SourceGraphic",in2:"outGlow",operator:"over"},f);&#xD;	g=Blockly.utils.createSvgElement("pattern",{id:"blocklyDisabledPattern"+e,patternUnits:"userSpaceOnUse",width:10,height:10},d);Blockly.utils.createSvgElement("rect",{width:10,height:10,fill:"#aaa"},g);Blockly.utils.createSvgElement("path",{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},g);b.disabledPatternId=g.id;d=Blockly.utils.createSvgElement("pattern",{id:"blocklyGridPattern"+e,patternUnits:"userSpaceOnUse"},d);0&lt;b.gridOptions.length&amp;&amp;0&lt;b.gridOptions.spacing&amp;&amp;(Blockly.utils.createSvgElement("line",&#xD;	{stroke:b.gridOptions.colour},d),1&lt;b.gridOptions.length&amp;&amp;Blockly.utils.createSvgElement("line",{stroke:b.gridOptions.colour},d));b.gridPattern=d;return c};&#xD;	Blockly.createMainWorkspace_=function(a,b,c,d){b.parentWorkspace=null;var e=new Blockly.WorkspaceSvg(b,c,d);e.scale=b.zoomOptions.startScale;a.appendChild(e.createDom("blocklyMainBackground"));!b.hasCategories&amp;&amp;b.languageTree&amp;&amp;(c=e.addFlyout_("svg"),Blockly.utils.insertAfter_(c,a));e.translate(0,0);Blockly.mainWorkspace=e;b.readOnly||b.hasScrollbars||e.addChangeListener(function(){if(!e.isDragging()){var a=e.getMetrics(),c=a.viewLeft+a.absoluteLeft,d=a.viewTop+a.absoluteTop;if(a.contentTop&lt;d||a.contentTop+&#xD;	a.contentHeight&gt;a.viewHeight+d||a.contentLeft&lt;(b.RTL?a.viewLeft:c)||a.contentLeft+a.contentWidth&gt;(b.RTL?a.viewWidth:a.viewWidth+c))for(var k=e.getTopBlocks(!1),l=0,m;m=k[l];l++){var n=m.getRelativeToSurfaceXY(),p=m.getHeightWidth(),q=d+25-p.height-n.y;0&lt;q&amp;&amp;m.moveBy(0,q);q=d+a.viewHeight-25-n.y;0&gt;q&amp;&amp;m.moveBy(0,q);q=25+c-n.x-(b.RTL?0:p.width);0&lt;q&amp;&amp;m.moveBy(q,0);n=c+a.viewWidth-25-n.x+(b.RTL?p.width:0);0&gt;n&amp;&amp;m.moveBy(n,0)}}});Blockly.svgResize(e);Blockly.WidgetDiv.createDom();Blockly.DropDownDiv.createDom();&#xD;	Blockly.Tooltip.createDom();return e};&#xD;	Blockly.init_=function(a){var b=a.options,c=a.getParentSvg();Blockly.bindEventWithChecks_(c.parentNode,"contextmenu",null,function(a){Blockly.utils.isTargetInput(a)||a.preventDefault()});c=Blockly.bindEventWithChecks_(window,"resize",null,function(){Blockly.hideChaff(!0);Blockly.svgResize(a)});a.setResizeHandlerWrapper(c);Blockly.inject.bindDocumentEvents_();b.languageTree&amp;&amp;(a.toolbox_?a.toolbox_.init(a):a.flyout_&amp;&amp;(a.flyout_.init(a),a.flyout_.show(b.languageTree.childNodes),a.flyout_.scrollToStart(),&#xD;	b.horizontalLayout?(a.scrollY=a.flyout_.height_,b.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM&amp;&amp;(a.scrollY*=-1)):(a.scrollX=a.flyout_.width_,b.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT&amp;&amp;(a.scrollX*=-1)),a.translate(a.scrollX,a.scrollY)));b.hasScrollbars&amp;&amp;(a.scrollbar=new Blockly.ScrollbarPair(a),a.scrollbar.resize());b.hasSounds&amp;&amp;Blockly.inject.loadSounds_(b.pathToMedia,a)};&#xD;	Blockly.inject.bindDocumentEvents_=function(){Blockly.documentEventsBound_||(Blockly.bindEventWithChecks_(document,"keydown",null,Blockly.onKeyDown_),Blockly.bindEvent_(document,"touchend",null,Blockly.longStop_),Blockly.bindEvent_(document,"touchcancel",null,Blockly.longStop_),goog.userAgent.IPAD&amp;&amp;Blockly.bindEventWithChecks_(window,"orientationchange",document,function(){Blockly.svgResize(Blockly.getMainWorkspace())}));Blockly.documentEventsBound_=!0};&#xD;	Blockly.inject.loadSounds_=function(a,b){b.loadAudio_([a+"click.wav"],"click");b.loadAudio_([a+"delete.wav"],"delete");var c=[],d=function(){for(;c.length;)Blockly.unbindEvent_(c.pop());b.preloadAudio_()};c.push(Blockly.bindEventWithChecks_(document,"mousemove",null,d,!0));c.push(Blockly.bindEventWithChecks_(document,"touchstart",null,d,!0))};Blockly.updateToolbox=function(a){console.warn("Deprecated call to Blockly.updateToolbox, use workspace.updateToolbox instead.");Blockly.getMainWorkspace().updateToolbox(a)};var CLOSURE_DEFINES={"goog.DEBUG":!1};Blockly.mainWorkspace=null;Blockly.selected=null;Blockly.draggingConnections_=[];Blockly.clipboardXml_=null;Blockly.clipboardSource_=null;Blockly.cache3dSupported_=null;Blockly.hueToRgb=function(a){return goog.color.hsvToHex(a,Blockly.HSV_SATURATION,255*Blockly.HSV_VALUE)};Blockly.svgSize=function(a){return{width:a.cachedWidth_,height:a.cachedHeight_}};Blockly.resizeSvgContents=function(a){a.resizeContents()};&#xD;	Blockly.svgResize=function(a){for(;a.options.parentWorkspace;)a=a.options.parentWorkspace;var b=a.getParentSvg(),c=b.parentNode;if(c){var d=c.offsetWidth,c=c.offsetHeight;b.cachedWidth_!=d&amp;&amp;(b.setAttribute("width",d+"px"),b.cachedWidth_=d);b.cachedHeight_!=c&amp;&amp;(b.setAttribute("height",c+"px"),b.cachedHeight_=c);a.resize()}};&#xD;	Blockly.onKeyDown_=function(a){Blockly.mainWorkspace.options.readOnly||Blockly.utils.isTargetInput(a)||(27==a.keyCode?(Blockly.hideChaff(),Blockly.DropDownDiv.hide()):8==a.keyCode||46==a.keyCode?(a.preventDefault(),Blockly.mainWorkspace.isDragging()):(a.altKey||a.ctrlKey||a.metaKey)&amp;&amp;!Blockly.mainWorkspace.isDragging()&amp;&amp;(Blockly.selected&amp;&amp;Blockly.selected.isDeletable()&amp;&amp;Blockly.selected.isMovable()&amp;&amp;(67==a.keyCode?(Blockly.hideChaff(),Blockly.copy_(Blockly.selected)):88==a.keyCode&amp;&amp;(Blockly.copy_(Blockly.selected),&#xD;	Blockly.hideChaff(),Blockly.selected.dispose(!0,!0))),86==a.keyCode?Blockly.clipboardXml_&amp;&amp;(Blockly.Events.setGroup(!0),Blockly.clipboardSource_.paste(Blockly.clipboardXml_),Blockly.Events.setGroup(!1)):90==a.keyCode&amp;&amp;(Blockly.hideChaff(),Blockly.mainWorkspace.undo(a.shiftKey))))};Blockly.copy_=function(a){var b=Blockly.Xml.blockToDom(a),c=a.getRelativeToSurfaceXY();b.setAttribute("x",a.RTL?-c.x:c.x);b.setAttribute("y",c.y);Blockly.clipboardXml_=b;Blockly.clipboardSource_=a.workspace};&#xD;	Blockly.duplicate_=function(a){var b=Blockly.clipboardXml_,c=Blockly.clipboardSource_;Blockly.copy_(a);a.workspace.paste(Blockly.clipboardXml_);Blockly.clipboardXml_=b;Blockly.clipboardSource_=c};Blockly.onContextMenu_=function(a){Blockly.utils.isTargetInput(a)||a.preventDefault()};&#xD;	Blockly.hideChaff=function(a){Blockly.Tooltip.hide();Blockly.WidgetDiv.hide(!0);Blockly.DropDownDiv.hideWithoutAnimation();a||(a=Blockly.getMainWorkspace(),a.toolbox_&amp;&amp;a.toolbox_.flyout_&amp;&amp;a.toolbox_.flyout_.autoClose&amp;&amp;a.toolbox_.clearSelection())};Blockly.getMainWorkspace=function(){return Blockly.mainWorkspace};Blockly.alert=function(a,b){window.alert(a);b&amp;&amp;b()};Blockly.confirm=function(a,b){b(window.confirm(a))};Blockly.prompt=function(a,b,c){c(window.prompt(a,b))};Blockly.jsonInitFactory_=function(a){return function(){this.jsonInit(a)}};&#xD;	Blockly.defineBlocksWithJsonArray=function(a){for(var b=0,c;c=a[b];b++){var d=c.type;null==d||""===d?console.warn("Block definition #"+b+" in JSON array is missing a type attribute. Skipping."):(Blockly.Blocks[d]&amp;&amp;console.warn("Block definition #"+b+&apos; in JSON array overwrites prior definition of "&apos;+d+&apos;".&apos;),Blockly.Blocks[d]={init:Blockly.jsonInitFactory_(c)})}};&#xD;	Blockly.bindEventWithChecks_=function(a,b,c,d,e){var f=!1,g=function(a){var b=!e;a=Blockly.Touch.splitEventByTouches(a);for(var g=0,h;h=a[g];g++)if(!b||Blockly.Touch.shouldHandleEvent(h))Blockly.Touch.setClientFromTouch(h),c?d.call(c,h):d(h),f=!0};a.addEventListener(b,g,!1);var h=[[a,b,g]];if(b in Blockly.Touch.TOUCH_MAP)for(var k=function(a){g(a);f&amp;&amp;a.preventDefault()},l=0,m;m=Blockly.Touch.TOUCH_MAP[b][l];l++)a.addEventListener(m,k,!1),h.push([a,m,k]);return h};&#xD;	Blockly.bindEvent_=function(a,b,c,d){var e=function(a){c?d.call(c,a):d(a)};a.addEventListener(b,e,!1);var f=[[a,b,e]];if(b in Blockly.Touch.TOUCH_MAP)for(var g=function(a){if(1==a.changedTouches.length){var b=a.changedTouches[0];a.clientX=b.clientX;a.clientY=b.clientY}e(a);a.preventDefault()},h=0,k;k=Blockly.Touch.TOUCH_MAP[b][h];h++)a.addEventListener(k,g,!1),f.push([a,k,g]);return f};&#xD;	Blockly.unbindEvent_=function(a){for(var b;a.length;){b=a.pop();var c=b[0],d=b[1];b=b[2];c.removeEventListener(d,b,!1)}return b};Blockly.isNumber=function(a){return!!a.match(/^\s*-?\d+(\.\d+)?\s*$/)};goog.global.console||(goog.global.console={log:function(){},warn:function(){}});goog.global.Blockly||(goog.global.Blockly={});goog.global.Blockly.getMainWorkspace=Blockly.getMainWorkspace;&#xD;&#xD;	/*** EXPORTS FROM exports-loader ***/&#xD;	exports["Blockly"] = (Blockly);&#xD;	exports["goog"] = (goog);&#xD;	}.call(window));&#xD;&#xD;/***/ },&#xD;/* 16 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(17);&#xD;&#xD;&#xD;/***/ },&#xD;/* 17 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	/*** IMPORTS FROM imports-loader ***/&#xD;	var Blockly = __webpack_require__(18);&#xD;&#xD;	// Do not edit this file; automatically generated by build.py.&#xD;	&apos;use strict&apos;;&#xD;&#xD;&#xD;	// Copyright 2016 Google Inc.  Apache License 2.0&#xD;	Blockly.constants={};Blockly.DRAG_RADIUS=3;Blockly.FLYOUT_DRAG_RADIUS=10;Blockly.SNAP_RADIUS=48;Blockly.CONNECTING_SNAP_RADIUS=96;Blockly.CURRENT_CONNECTION_PREFERENCE=20;Blockly.BUMP_DELAY=0;Blockly.COLLAPSE_CHARS=30;Blockly.LONGPRESS=750;Blockly.SOUND_LIMIT=100;Blockly.DRAG_STACK=!0;Blockly.HSV_SATURATION=.45;Blockly.HSV_VALUE=.65;Blockly.SPRITE={width:96,height:124,url:"sprites.png"};Blockly.SVG_NS="http://www.w3.org/2000/svg";Blockly.HTML_NS="http://www.w3.org/1999/xhtml";&#xD;	Blockly.INPUT_VALUE=1;Blockly.OUTPUT_VALUE=2;Blockly.NEXT_STATEMENT=3;Blockly.PREVIOUS_STATEMENT=4;Blockly.DUMMY_INPUT=5;Blockly.ALIGN_LEFT=-1;Blockly.ALIGN_CENTRE=0;Blockly.ALIGN_RIGHT=1;Blockly.DRAG_NONE=0;Blockly.DRAG_STICKY=1;Blockly.DRAG_BEGIN=1;Blockly.DRAG_FREE=2;Blockly.OPPOSITE_TYPE=[];Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE]=Blockly.OUTPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE]=Blockly.INPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT]=Blockly.PREVIOUS_STATEMENT;&#xD;	Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;Blockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.OUTPUT_SHAPE_HEXAGONAL=1;Blockly.OUTPUT_SHAPE_ROUND=2;Blockly.OUTPUT_SHAPE_SQUARE=3;Blockly.STACK_GLOW_RADIUS=1.3;Blockly.REPLACEMENT_GLOW_RADIUS=2;Blockly.Categories={motion:"motion",looks:"looks",sound:"sounds",pen:"pen",data:"data",event:"events",control:"control",sensing:"sensing",operators:"operators",more:"more"};&#xD;	Blockly.DELETE_AREA_NONE=null;Blockly.DELETE_AREA_TRASH=1;Blockly.DELETE_AREA_TOOLBOX=2;Blockly.VARIABLE_CATEGORY_NAME="VARIABLE";Blockly.PROCEDURE_CATEGORY_NAME="PROCEDURE";&#xD;	// Copyright 2012 Google Inc.  Apache License 2.0&#xD;	Blockly.Blocks.colour={};function randomColour(){return"#"+("00000"+Math.floor(Math.random()*Math.pow(2,24)).toString(16)).substr(-6)}Blockly.Blocks.colour_picker={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_colour",name:"COLOUR",colour:randomColour()}],outputShape:Blockly.OUTPUT_SHAPE_ROUND,output:"Colour"})}};/*&#xD;&#xD;	 Visual Blocks Editor&#xD;&#xD;	 Copyright 2016 Massachusetts Institute of Technology&#xD;	 All rights reserved.&#xD;&#xD;	 Licensed under the Apache License, Version 2.0 (the "License");&#xD;	 you may not use this file except in compliance with the License.&#xD;	 You may obtain a copy of the License at&#xD;&#xD;	   http://www.apache.org/licenses/LICENSE-2.0&#xD;&#xD;	 Unless required by applicable law or agreed to in writing, software&#xD;	 distributed under the License is distributed on an "AS IS" BASIS,&#xD;	 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#xD;	 See the License for the specific language governing permissions and&#xD;	 limitations under the License.&#xD;	*/&#xD;	Blockly.Colours={motion:{primary:"#4C97FF",secondary:"#4280D7",tertiary:"#3373CC"},looks:{primary:"#9966FF",secondary:"#855CD6",tertiary:"#774DCB"},sounds:{primary:"#CF63CF",secondary:"#C94FC9",tertiary:"#BD42BD"},control:{primary:"#FFAB19",secondary:"#EC9C13",tertiary:"#CF8B17"},event:{primary:"#FFBF00",secondary:"#E6AC00",tertiary:"#CC9900"},sensing:{primary:"#5CB1D6",secondary:"#47A8D1",tertiary:"#2E8EB8"},pen:{primary:"#0fBD8C",secondary:"#0DA57A",tertiary:"#0B8E69"},operators:{primary:"#59C059",&#xD;	secondary:"#46B946",tertiary:"#389438"},data:{primary:"#FF8C1A",secondary:"#FF8000",tertiary:"#DB6E00"},more:{primary:"#FF6680",secondary:"#FF4D6A",tertiary:"#FF3355"},text:"#575E75",workspace:"#F9F9F9",toolboxHover:"#4C97FF",toolboxSelected:"#e9eef2",toolboxText:"#575E75",toolbox:"#FFFFFF",flyout:"#F9F9F9",scrollbar:"#CECDCE",scrollbarHover:"#CECDCE",textField:"#FFFFFF",insertionMarker:"#000000",insertionMarkerOpacity:.2,dragShadowOpacity:.3,stackGlow:"#FFF200",stackGlowOpacity:1,replacementGlow:"#FFFFFF",&#xD;	replacementGlowOpacity:1,colourPickerStroke:"#FFFFFF",fieldShadow:"rgba(0,0,0,0.1)",dropDownShadow:"rgba(0, 0, 0, .3)",numPadBackground:"#547AB2",numPadBorder:"#435F91",numPadActiveBackground:"#435F91",numPadText:"#FFFFFF",valueReportBackground:"#FFFFFF",valueReportBorder:"#AAAAAA"};Blockly.Blocks.math={};Blockly.Blocks.math_number={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_number",name:"NUM",value:"0"}],output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};Blockly.Blocks.math_integer={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_number",name:"NUM",precision:1}],output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};&#xD;	Blockly.Blocks.math_whole_number={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_number",name:"NUM",min:0,precision:1}],output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};Blockly.Blocks.math_positive_number={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_number",name:"NUM",min:0}],output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};&#xD;	Blockly.Blocks.math_angle={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_angle",name:"NUM",value:90}],output:"Number",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};Blockly.Blocks.texts={};Blockly.Blocks.text={init:function(){this.jsonInit({message0:"%1",args0:[{type:"field_input",name:"TEXT"}],output:"String",outputShape:Blockly.OUTPUT_SHAPE_ROUND,colour:Blockly.Colours.textField})}};&#xD;&#xD;	/*** EXPORTS FROM exports-loader ***/&#xD;	module.exports = Blockly;&#xD;&#xD;&#xD;/***/ },&#xD;/* 18 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	module.exports = __webpack_require__(14).Blockly;&#xD;&#xD;&#xD;/***/ }&#xD;/******/ ]);&#xD;&#xD;/***/ }),&#xD;/* 507 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports =&#xD;/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId])&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			i: moduleId,&#xD;/******/ 			l: false,&#xD;/******/ 			exports: {}&#xD;/******/ 		};&#xD;&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.l = true;&#xD;&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;&#xD;&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;&#xD;/******/ 	// identity function for calling harmony imports with the correct context&#xD;/******/ 	__webpack_require__.i = function(value) { return value; };&#xD;&#xD;/******/ 	// define getter function for harmony exports&#xD;/******/ 	__webpack_require__.d = function(exports, name, getter) {&#xD;/******/ 		if(!__webpack_require__.o(exports, name)) {&#xD;/******/ 			Object.defineProperty(exports, name, {&#xD;/******/ 				configurable: false,&#xD;/******/ 				enumerable: true,&#xD;/******/ 				get: getter&#xD;/******/ 			});&#xD;/******/ 		}&#xD;/******/ 	};&#xD;&#xD;/******/ 	// getDefaultExport function for compatibility with non-harmony modules&#xD;/******/ 	__webpack_require__.n = function(module) {&#xD;/******/ 		var getter = module &amp;&amp; module.__esModule ?&#xD;/******/ 			function getDefault() { return module[&apos;default&apos;]; } :&#xD;/******/ 			function getModuleExports() { return module; };&#xD;/******/ 		__webpack_require__.d(getter, &apos;a&apos;, getter);&#xD;/******/ 		return getter;&#xD;/******/ 	};&#xD;&#xD;/******/ 	// Object.prototype.hasOwnProperty.call&#xD;/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };&#xD;&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(__webpack_require__.s = 24);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/*!&#xD; * @license twgl.js 3.3.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.&#xD; * Available via the MIT license.&#xD; * see: http://github.com/greggman/twgl.js for details&#xD; */&#xD;(function webpackUniversalModuleDefinition(root, factory) {&#xD;	if(true)&#xD;		module.exports = factory();&#xD;	else if(typeof define === &apos;function&apos; &amp;&amp; define.amd)&#xD;		define([], factory);&#xD;	else if(typeof exports === &apos;object&apos;)&#xD;		exports["twgl"] = factory();&#xD;	else&#xD;		root["twgl"] = factory();&#xD;})(this, function() {&#xD;return /******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId])&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			exports: {},&#xD;/******/ 			id: moduleId,&#xD;/******/ 			loaded: false&#xD;/******/ 		};&#xD;&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.loaded = true;&#xD;&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;&#xD;&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(0);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1), __webpack_require__(10), __webpack_require__(11), __webpack_require__(12)], __WEBPACK_AMD_DEFINE_RESULT__ = function (twgl, m4, v3, primitives) {&#xD;&#xD;	  "use strict";&#xD;&#xD;	  twgl.m4 = m4;&#xD;	  twgl.v3 = v3;&#xD;	  twgl.primitives = primitives;&#xD;	  return twgl;&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 1 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(5), __webpack_require__(7), __webpack_require__(6), __webpack_require__(8), __webpack_require__(3), __webpack_require__(9), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (attributes, draw, framebuffers, programs, textures, typedArrays, vertexArrays, utils) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * The main TWGL module.&#xD;	   *&#xD;	   * For most use cases you shouldn&apos;t need anything outside this module.&#xD;	   * Exceptions between the stuff added to twgl-full (v3, m4, primitives)&#xD;	   *&#xD;	   * @module twgl&#xD;	   * @borrows module:twgl/attributes.setAttribInfoBufferFromArray as setAttribInfoBufferFromArray&#xD;	   * @borrows module:twgl/attributes.createBufferInfoFromArrays as createBufferInfoFromArrays&#xD;	   * @borrows module:twgl/attributes.createVertexArrayInfo as createVertexArrayInfo&#xD;	   * @borrows module:twgl/draw.drawBufferInfo as drawBufferInfo&#xD;	   * @borrows module:twgl/draw.drawObjectList as drawObjectList&#xD;	   * @borrows module:twgl/framebuffers.createFramebufferInfo as createFramebufferInfo&#xD;	   * @borrows module:twgl/framebuffers.resizeFramebufferInfo as resizeFramebufferInfo&#xD;	   * @borrows module:twgl/framebuffers.bindFramebufferInfo as bindFramebufferInfo&#xD;	   * @borrows module:twgl/programs.createProgramInfo as createProgramInfo&#xD;	   * @borrows module:twgl/programs.createUniformBlockInfo as createUniformBlockInfo&#xD;	   * @borrows module:twgl/programs.bindUniformBlock as bindUniformBlock&#xD;	   * @borrows module:twgl/programs.setUniformBlock as setUniformBlock&#xD;	   * @borrows module:twgl/programs.setBlockUniforms as setBlockUniforms&#xD;	   * @borrows module:twgl/programs.setUniforms as setUniforms&#xD;	   * @borrows module:twgl/programs.setBuffersAndAttributes as setBuffersAndAttributes&#xD;	   * @borrows module:twgl/textures.setTextureFromArray as setTextureFromArray&#xD;	   * @borrows module:twgl/textures.createTexture as createTexture&#xD;	   * @borrows module:twgl/textures.resizeTexture as resizeTexture&#xD;	   * @borrows module:twgl/textures.createTextures as createTextures&#xD;	   */&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;&#xD;	  var gl = undefined; // eslint-disable-line&#xD;	  var defaults = {&#xD;	    enableVertexArrayObjects: true&#xD;	  };&#xD;&#xD;	  /**&#xD;	   * Various default settings for twgl.&#xD;	   *&#xD;	   * Note: You can call this any number of times. Example:&#xD;	   *&#xD;	   *     twgl.setDefaults({ textureColor: [1, 0, 0, 1] });&#xD;	   *     twgl.setDefaults({ attribPrefix: &apos;a_&apos; });&#xD;	   *&#xD;	   * is equivalent to&#xD;	   *&#xD;	   *     twgl.setDefaults({&#xD;	   *       textureColor: [1, 0, 0, 1],&#xD;	   *       attribPrefix: &apos;a_&apos;,&#xD;	   *     });&#xD;	   *&#xD;	   * @typedef {Object} Defaults&#xD;	   * @property {string} attribPrefix The prefix to stick on attributes&#xD;	   *&#xD;	   *   When writing shaders I prefer to name attributes with `a_`, uniforms with `u_` and varyings with `v_`&#xD;	   *   as it makes it clear where they came from. But, when building geometry I prefer using unprefixed names.&#xD;	   *&#xD;	   *   In otherwords I&apos;ll create arrays of geometry like this&#xD;	   *&#xD;	   *       var arrays = {&#xD;	   *         position: ...&#xD;	   *         normal: ...&#xD;	   *         texcoord: ...&#xD;	   *       };&#xD;	   *&#xD;	   *   But need those mapped to attributes and my attributes start with `a_`.&#xD;	   *&#xD;	   *   Default: `""`&#xD;	   *&#xD;	   * @property {number[]} textureColor Array of 4 values in the range 0 to 1&#xD;	   *&#xD;	   *   The default texture color is used when loading textures from&#xD;	   *   urls. Because the URL will be loaded async we&apos;d like to be&#xD;	   *   able to use the texture immediately. By putting a 1x1 pixel&#xD;	   *   color in the texture we can start using the texture before&#xD;	   *   the URL has loaded.&#xD;	   *&#xD;	   *   Default: `[0.5, 0.75, 1, 1]`&#xD;	   *&#xD;	   * @property {string} crossOrigin&#xD;	   *&#xD;	   *   If not undefined sets the crossOrigin attribute on images&#xD;	   *   that twgl creates when downloading images for textures.&#xD;	   *&#xD;	   *   Also see {@link module:twgl.TextureOptions}.&#xD;	   *&#xD;	   * @property {bool} enableVertexArrayObjects&#xD;	   *&#xD;	   *   If true then in WebGL 1.0 will attempt to get the `OES_vertex_array_object` extension.&#xD;	   *   If successful it will copy create/bind/delete/isVertexArrayOES from the extension to&#xD;	   *   the WebGLRenderingContext removing the OES at the end which is the standard entry point&#xD;	   *   for WebGL 2.&#xD;	   *&#xD;	   *   Note: According to webglstats.com 90% of devices support `OES_vertex_array_object`.&#xD;	   *   If you just want to count on support I suggest using [this polyfill](https://github.com/KhronosGroup/WebGL/blob/master/sdk/demos/google/resources/OESVertexArrayObject.js)&#xD;	   *   or ignoring devices that don&apos;t support them.&#xD;	   *&#xD;	   *   Default: `true`&#xD;	   *&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Sets various defaults for twgl.&#xD;	   *&#xD;	   * In the interest of terseness which is kind of the point&#xD;	   * of twgl I&apos;ve integrated a few of the older functions here&#xD;	   *&#xD;	   * @param {module:twgl.Defaults} newDefaults The default settings.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function setDefaults(newDefaults) {&#xD;	    utils.copyExistingProperties(newDefaults, defaults);&#xD;	    attributes.setDefaults_(newDefaults); // eslint-disable-line&#xD;	    textures.setDefaults_(newDefaults); // eslint-disable-line&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Adds Vertex Array Objects to WebGL 1 GL contexts if available&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   */&#xD;	  function addVertexArrayObjectSupport(gl) {&#xD;	    if (!gl || !defaults.enableVertexArrayObjects) {&#xD;	      return;&#xD;	    }&#xD;	    if (utils.isWebGL1(gl)) {&#xD;	      var ext = gl.getExtension("OES_vertex_array_object");&#xD;	      if (ext) {&#xD;	        gl.createVertexArray = function () {&#xD;	          return ext.createVertexArrayOES();&#xD;	        };&#xD;	        gl.deleteVertexArray = function (v) {&#xD;	          ext.deleteVertexArrayOES(v);&#xD;	        };&#xD;	        gl.isVertexArray = function (v) {&#xD;	          return ext.isVertexArrayOES(v);&#xD;	        };&#xD;	        gl.bindVertexArray = function (v) {&#xD;	          ext.bindVertexArrayOES(v);&#xD;	        };&#xD;	        gl.VERTEX_ARRAY_BINDING = ext.VERTEX_ARRAY_BINDING_OES;&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a webgl context.&#xD;	   * @param {HTMLCanvasElement} canvas The canvas tag to get&#xD;	   *     context from. If one is not passed in one will be&#xD;	   *     created.&#xD;	   * @return {WebGLRenderingContext} The created context.&#xD;	   */&#xD;	  function create3DContext(canvas, opt_attribs) {&#xD;	    var names = ["webgl", "experimental-webgl"];&#xD;	    var context = null;&#xD;	    for (var ii = 0; ii &lt; names.length; ++ii) {&#xD;	      context = canvas.getContext(names[ii], opt_attribs);&#xD;	      if (context) {&#xD;	        break;&#xD;	      }&#xD;	    }&#xD;	    return context;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets a WebGL context.&#xD;	   * @param {HTMLCanvasElement} canvas a canvas element.&#xD;	   * @param {WebGLContextCreationAttirbutes} [opt_attribs] optional webgl context creation attributes&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function getWebGLContext(canvas, opt_attribs) {&#xD;	    var gl = create3DContext(canvas, opt_attribs);&#xD;	    addVertexArrayObjectSupport(gl);&#xD;	    return gl;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a webgl context.&#xD;	   *&#xD;	   * Will return a WebGL2 context if possible.&#xD;	   *&#xD;	   * You can check if it&apos;s WebGL2 with&#xD;	   *&#xD;	   *     twgl.isWebGL2(gl);&#xD;	   *&#xD;	   * @param {HTMLCanvasElement} canvas The canvas tag to get&#xD;	   *     context from. If one is not passed in one will be&#xD;	   *     created.&#xD;	   * @return {WebGLRenderingContext} The created context.&#xD;	   */&#xD;	  function createContext(canvas, opt_attribs) {&#xD;	    var names = ["webgl2", "webgl", "experimental-webgl"];&#xD;	    var context = null;&#xD;	    for (var ii = 0; ii &lt; names.length; ++ii) {&#xD;	      context = canvas.getContext(names[ii], opt_attribs);&#xD;	      if (context) {&#xD;	        break;&#xD;	      }&#xD;	    }&#xD;	    return context;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets a WebGL context.  Will create a WebGL2 context if possible.&#xD;	   *&#xD;	   * You can check if it&apos;s WebGL2 with&#xD;	   *&#xD;	   *    function isWebGL2(gl) {&#xD;	   *      return gl.getParameter(gl.VERSION).indexOf("WebGL 2.0 ") == 0;&#xD;	   *    }&#xD;	   *&#xD;	   * @param {HTMLCanvasElement} canvas a canvas element.&#xD;	   * @param {WebGLContextCreationAttirbutes} [opt_attribs] optional webgl context creation attributes&#xD;	   * @return {WebGLRenderingContext} The created context.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function getContext(canvas, opt_attribs) {&#xD;	    var gl = createContext(canvas, opt_attribs);&#xD;	    addVertexArrayObjectSupport(gl);&#xD;	    return gl;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Resize a canvas to match the size it&apos;s displayed.&#xD;	   * @param {HTMLCanvasElement} canvas The canvas to resize.&#xD;	   * @param {number} [multiplier] So you can pass in `window.devicePixelRatio` if you want to.&#xD;	   * @return {boolean} true if the canvas was resized.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function resizeCanvasToDisplaySize(canvas, multiplier) {&#xD;	    multiplier = multiplier || 1;&#xD;	    multiplier = Math.max(1, multiplier);&#xD;	    var width = canvas.clientWidth * multiplier | 0;&#xD;	    var height = canvas.clientHeight * multiplier | 0;&#xD;	    if (canvas.width !== width || canvas.height !== height) {&#xD;	      canvas.width = width;&#xD;	      canvas.height = height;&#xD;	      return true;&#xD;	    }&#xD;	    return false;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  var api = {&#xD;	    "getContext": getContext,&#xD;	    "getWebGLContext": getWebGLContext,&#xD;	    "isWebGL1": utils.isWebGL1,&#xD;	    "isWebGL2": utils.isWebGL2,&#xD;	    "resizeCanvasToDisplaySize": resizeCanvasToDisplaySize,&#xD;	    "setDefaults": setDefaults&#xD;	  };&#xD;&#xD;	  function notPrivate(name) {&#xD;	    return name[name.length - 1] !== &apos;_&apos;;&#xD;	  }&#xD;&#xD;	  function copyPublicProperties(src, dst) {&#xD;	    Object.keys(src).filter(notPrivate).forEach(function (key) {&#xD;	      dst[key] = src[key];&#xD;	    });&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  var apis = {&#xD;	    attributes: attributes,&#xD;	    draw: draw,&#xD;	    framebuffers: framebuffers,&#xD;	    programs: programs,&#xD;	    textures: textures,&#xD;	    typedArrays: typedArrays,&#xD;	    vertexArrays: vertexArrays&#xD;	  };&#xD;	  Object.keys(apis).forEach(function (name) {&#xD;	    var srcApi = apis[name];&#xD;	    copyPublicProperties(srcApi, api);&#xD;	    api[name] = copyPublicProperties(srcApi, {});&#xD;	  });&#xD;&#xD;	  return api;&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 2 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (typedArrays, utils) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Low level attribute and buffer related functions&#xD;	   *&#xD;	   * You should generally not need to use these functions. They are provided&#xD;	   * for those cases where you&apos;re doing something out of the ordinary&#xD;	   * and you need lower level access.&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.attributes` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/attributes&#xD;	   */&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;&#xD;	  var gl = undefined; // eslint-disable-line&#xD;	  var defaults = {&#xD;	    attribPrefix: ""&#xD;	  };&#xD;&#xD;	  /**&#xD;	   * Sets the default attrib prefix&#xD;	   *&#xD;	   * When writing shaders I prefer to name attributes with `a_`, uniforms with `u_` and varyings with `v_`&#xD;	   * as it makes it clear where they came from. But, when building geometry I prefer using unprefixed names.&#xD;	   *&#xD;	   * In otherwords I&apos;ll create arrays of geometry like this&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *       position: ...&#xD;	   *       normal: ...&#xD;	   *       texcoord: ...&#xD;	   *     };&#xD;	   *&#xD;	   * But need those mapped to attributes and my attributes start with `a_`.&#xD;	   *&#xD;	   * @deprecated see {@link module:twgl.setDefaults}&#xD;	   * @param {string} prefix prefix for attribs&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function setAttributePrefix(prefix) {&#xD;	    defaults.attribPrefix = prefix;&#xD;	  }&#xD;&#xD;	  function setDefaults(newDefaults) {&#xD;	    utils.copyExistingProperties(newDefaults, defaults);&#xD;	  }&#xD;&#xD;	  function setBufferFromTypedArray(gl, type, buffer, array, drawType) {&#xD;	    gl.bindBuffer(type, buffer);&#xD;	    gl.bufferData(type, array, drawType || gl.STATIC_DRAW);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Given typed array creates a WebGLBuffer and copies the typed array&#xD;	   * into it.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {ArrayBuffer|ArrayBufferView|WebGLBuffer} typedArray the typed array. Note: If a WebGLBuffer is passed in it will just be returned. No action will be taken&#xD;	   * @param {number} [type] the GL bind type for the buffer. Default = `gl.ARRAY_BUFFER`.&#xD;	   * @param {number} [drawType] the GL draw type for the buffer. Default = &apos;gl.STATIC_DRAW`.&#xD;	   * @return {WebGLBuffer} the created WebGLBuffer&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function createBufferFromTypedArray(gl, typedArray, type, drawType) {&#xD;	    if (typedArray instanceof WebGLBuffer) {&#xD;	      return typedArray;&#xD;	    }&#xD;	    type = type || gl.ARRAY_BUFFER;&#xD;	    var buffer = gl.createBuffer();&#xD;	    setBufferFromTypedArray(gl, type, buffer, typedArray, drawType);&#xD;	    return buffer;&#xD;	  }&#xD;&#xD;	  function isIndices(name) {&#xD;	    return name === "indices";&#xD;	  }&#xD;&#xD;	  // This is really just a guess. Though I can&apos;t really imagine using&#xD;	  // anything else? Maybe for some compression?&#xD;	  function getNormalizationForTypedArray(typedArray) {&#xD;	    if (typedArray instanceof Int8Array) {&#xD;	      return true;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Uint8Array) {&#xD;	      return true;&#xD;	    } // eslint-disable-line&#xD;	    return false;&#xD;	  }&#xD;&#xD;	  // This is really just a guess. Though I can&apos;t really imagine using&#xD;	  // anything else? Maybe for some compression?&#xD;	  function getNormalizationForTypedArrayType(typedArrayType) {&#xD;	    if (typedArrayType === Int8Array) {&#xD;	      return true;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Uint8Array) {&#xD;	      return true;&#xD;	    } // eslint-disable-line&#xD;	    return false;&#xD;	  }&#xD;&#xD;	  function getArray(array) {&#xD;	    return array.length ? array : array.data;&#xD;	  }&#xD;&#xD;	  var texcoordRE = /coord|texture/i;&#xD;	  var colorRE = /color|colour/i;&#xD;&#xD;	  function guessNumComponentsFromName(name, length) {&#xD;	    var numComponents;&#xD;	    if (texcoordRE.test(name)) {&#xD;	      numComponents = 2;&#xD;	    } else if (colorRE.test(name)) {&#xD;	      numComponents = 4;&#xD;	    } else {&#xD;	      numComponents = 3; // position, normals, indices ...&#xD;	    }&#xD;&#xD;	    if (length % numComponents &gt; 0) {&#xD;	      throw "Can not guess numComponents for attribute &apos;" + name + "&apos;. Tried " + numComponents + " but " + length + " values is not evenly divisible by " + numComponents + ". You should specify it.";&#xD;	    }&#xD;&#xD;	    return numComponents;&#xD;	  }&#xD;&#xD;	  function getNumComponents(array, arrayName) {&#xD;	    return array.numComponents || array.size || guessNumComponentsFromName(arrayName, getArray(array).length);&#xD;	  }&#xD;&#xD;	  function makeTypedArray(array, name) {&#xD;	    if (typedArrays.isArrayBuffer(array)) {&#xD;	      return array;&#xD;	    }&#xD;&#xD;	    if (typedArrays.isArrayBuffer(array.data)) {&#xD;	      return array.data;&#xD;	    }&#xD;&#xD;	    if (Array.isArray(array)) {&#xD;	      array = {&#xD;	        data: array&#xD;	      };&#xD;	    }&#xD;&#xD;	    var Type = array.type;&#xD;	    if (!Type) {&#xD;	      if (isIndices(name)) {&#xD;	        Type = Uint16Array;&#xD;	      } else {&#xD;	        Type = Float32Array;&#xD;	      }&#xD;	    }&#xD;	    return new Type(array.data);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * The info for an attribute. This is effectively just the arguments to `gl.vertexAttribPointer` plus the WebGLBuffer&#xD;	   * for the attribute.&#xD;	   *&#xD;	   * @typedef {Object} AttribInfo&#xD;	   * @property {number} [numComponents] the number of components for this attribute.&#xD;	   * @property {number} [size] synonym for `numComponents`.&#xD;	   * @property {number} [type] the type of the attribute (eg. `gl.FLOAT`, `gl.UNSIGNED_BYTE`, etc...) Default = `gl.FLOAT`&#xD;	   * @property {boolean} [normalize] whether or not to normalize the data. Default = false&#xD;	   * @property {number} [offset] offset into buffer in bytes. Default = 0&#xD;	   * @property {number} [stride] the stride in bytes per element. Default = 0&#xD;	   * @property {WebGLBuffer} buffer the buffer that contains the data for this attribute&#xD;	   * @property {number} [drawType] the draw type passed to gl.bufferData. Default = gl.STATIC_DRAW&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Use this type of array spec when TWGL can&apos;t guess the type or number of compoments of an array&#xD;	   * @typedef {Object} FullArraySpec&#xD;	   * @property {(number|number[]|ArrayBuffer)} data The data of the array. A number alone becomes the number of elements of type.&#xD;	   * @property {number} [numComponents] number of components for `vertexAttribPointer`. Default is based on the name of the array.&#xD;	   *    If `coord` is in the name assumes `numComponents = 2`.&#xD;	   *    If `color` is in the name assumes `numComponents = 4`.&#xD;	   *    otherwise assumes `numComponents = 3`&#xD;	   * @property {constructor} type The type. This is only used if `data` is a JavaScript array. It is the constructor for the typedarray. (eg. `Uint8Array`).&#xD;	   * For example if you want colors in a `Uint8Array` you might have a `FullArraySpec` like `{ type: Uint8Array, data: [255,0,255,255, ...], }`.&#xD;	   * @property {number} [size] synonym for `numComponents`.&#xD;	   * @property {boolean} [normalize] normalize for `vertexAttribPointer`. Default is true if type is `Int8Array` or `Uint8Array` otherwise false.&#xD;	   * @property {number} [stride] stride for `vertexAttribPointer`. Default = 0&#xD;	   * @property {number} [offset] offset for `vertexAttribPointer`. Default = 0&#xD;	   * @property {string} [attrib] name of attribute this array maps to. Defaults to same name as array prefixed by the default attribPrefix.&#xD;	   * @property {string} [name] synonym for `attrib`.&#xD;	   * @property {string} [attribName] synonym for `attrib`.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * An individual array in {@link module:twgl.Arrays}&#xD;	   *&#xD;	   * When passed to {@link module:twgl.createBufferInfoFromArrays} if an ArraySpec is `number[]` or `ArrayBuffer`&#xD;	   * the types will be guessed based on the name. `indices` will be `Uint16Array`, everything else will&#xD;	   * be `Float32Array`. If an ArraySpec is a number it&apos;s the number of floats for an empty (zeroed) buffer.&#xD;	   *&#xD;	   * @typedef {(number|number[]|ArrayBuffer|module:twgl.FullArraySpec)} ArraySpec&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * This is a JavaScript object of arrays by name. The names should match your shader&apos;s attributes. If your&#xD;	   * attributes have a common prefix you can specify it by calling {@link module:twgl.setAttributePrefix}.&#xD;	   *&#xD;	   *     Bare JavaScript Arrays&#xD;	   *&#xD;	   *         var arrays = {&#xD;	   *            position: [-1, 1, 0],&#xD;	   *            normal: [0, 1, 0],&#xD;	   *            ...&#xD;	   *         }&#xD;	   *&#xD;	   *     Bare TypedArrays&#xD;	   *&#xD;	   *         var arrays = {&#xD;	   *            position: new Float32Array([-1, 1, 0]),&#xD;	   *            color: new Uint8Array([255, 128, 64, 255]),&#xD;	   *            ...&#xD;	   *         }&#xD;	   *&#xD;	   * *   Will guess at `numComponents` if not specified based on name.&#xD;	   *&#xD;	   *     If `coord` is in the name assumes `numComponents = 2`&#xD;	   *&#xD;	   *     If `color` is in the name assumes `numComponents = 4`&#xD;	   *&#xD;	   *     otherwise assumes `numComponents = 3`&#xD;	   *&#xD;	   * Objects with various fields. See {@link module:twgl.FullArraySpec}.&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },&#xD;	   *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },&#xD;	   *       normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },&#xD;	   *       indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },&#xD;	   *     };&#xD;	   *&#xD;	   * @typedef {Object.&lt;string, module:twgl.ArraySpec&gt;} Arrays&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a set of attribute data and WebGLBuffers from set of arrays&#xD;	   *&#xD;	   * Given&#xD;	   *&#xD;	   *      var arrays = {&#xD;	   *        position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },&#xD;	   *        texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },&#xD;	   *        normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },&#xD;	   *        color:    { numComponents: 4, data: [255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255], type: Uint8Array, },&#xD;	   *        indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },&#xD;	   *      };&#xD;	   *&#xD;	   * returns something like&#xD;	   *&#xD;	   *      var attribs = {&#xD;	   *        position: { numComponents: 3, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },&#xD;	   *        texcoord: { numComponents: 2, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },&#xD;	   *        normal:   { numComponents: 3, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },&#xD;	   *        color:    { numComponents: 4, type: gl.UNSIGNED_BYTE, normalize: true,  buffer: WebGLBuffer, },&#xD;	   *      };&#xD;	   *&#xD;	   * notes:&#xD;	   *&#xD;	   * *   Arrays can take various forms&#xD;	   *&#xD;	   *     Bare JavaScript Arrays&#xD;	   *&#xD;	   *         var arrays = {&#xD;	   *            position: [-1, 1, 0],&#xD;	   *            normal: [0, 1, 0],&#xD;	   *            ...&#xD;	   *         }&#xD;	   *&#xD;	   *     Bare TypedArrays&#xD;	   *&#xD;	   *         var arrays = {&#xD;	   *            position: new Float32Array([-1, 1, 0]),&#xD;	   *            color: new Uint8Array([255, 128, 64, 255]),&#xD;	   *            ...&#xD;	   *         }&#xD;	   *&#xD;	   * *   Will guess at `numComponents` if not specified based on name.&#xD;	   *&#xD;	   *     If `coord` is in the name assumes `numComponents = 2`&#xD;	   *&#xD;	   *     If `color` is in the name assumes `numComponents = 4`&#xD;	   *&#xD;	   *     otherwise assumes `numComponents = 3`&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The webgl rendering context.&#xD;	   * @param {module:twgl.Arrays} arrays The arrays&#xD;	   * @return {Object.&lt;string, module:twgl.AttribInfo&gt;} the attribs&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function createAttribsFromArrays(gl, arrays) {&#xD;	    var attribs = {};&#xD;	    Object.keys(arrays).forEach(function (arrayName) {&#xD;	      if (!isIndices(arrayName)) {&#xD;	        var array = arrays[arrayName];&#xD;	        var attribName = array.attrib || array.name || array.attribName || defaults.attribPrefix + arrayName;&#xD;	        var buffer;&#xD;	        var type;&#xD;	        var normalization;&#xD;	        var numComponents;&#xD;	        var numValues;&#xD;	        if (typeof array === "number" || typeof array.data === "number") {&#xD;	          numValues = array.data || array;&#xD;	          var arrayType = array.type || Float32Array;&#xD;	          var numBytes = numValues * arrayType.BYTES_PER_ELEMENT;&#xD;	          type = typedArrays.getGLTypeForTypedArrayType(arrayType);&#xD;	          normalization = array.normalize !== undefined ? array.normalize : getNormalizationForTypedArrayType(arrayType);&#xD;	          numComponents = array.numComponents || array.size || guessNumComponentsFromName(arrayName, numValues);&#xD;	          buffer = gl.createBuffer();&#xD;	          gl.bindBuffer(gl.ARRAY_BUFFER, buffer);&#xD;	          gl.bufferData(gl.ARRAY_BUFFER, numBytes, array.drawType || gl.STATIC_DRAW);&#xD;	        } else {&#xD;	          var typedArray = makeTypedArray(array, arrayName);&#xD;	          buffer = createBufferFromTypedArray(gl, typedArray, undefined, array.drawType);&#xD;	          type = typedArrays.getGLTypeForTypedArray(typedArray);&#xD;	          normalization = array.normalize !== undefined ? array.normalize : getNormalizationForTypedArray(typedArray);&#xD;	          numComponents = getNumComponents(array, arrayName);&#xD;	          numValues = typedArray.length;&#xD;	        }&#xD;	        attribs[attribName] = {&#xD;	          buffer: buffer,&#xD;	          numComponents: numComponents,&#xD;	          type: type,&#xD;	          normalize: normalization,&#xD;	          stride: array.stride || 0,&#xD;	          offset: array.offset || 0,&#xD;	          drawType: array.drawType&#xD;	        };&#xD;	      }&#xD;	    });&#xD;	    gl.bindBuffer(gl.ARRAY_BUFFER, null);&#xD;	    return attribs;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets the contents of a buffer attached to an attribInfo&#xD;	   *&#xD;	   * This is helper function to dynamically update a buffer.&#xD;	   *&#xD;	   * Let&apos;s say you make a bufferInfo&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *        position: new Float32Array([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]),&#xD;	   *        texcoord: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),&#xD;	   *        normal:   new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]),&#xD;	   *        indices:  new Uint16Array([0, 1, 2, 1, 2, 3]),&#xD;	   *     };&#xD;	   *     var bufferInfo = twgl.createBufferInfoFromArrays(gl, arrays);&#xD;	   *&#xD;	   *  And you want to dynamically upate the positions. You could do this&#xD;	   *&#xD;	   *     // assuming arrays.position has already been updated with new data.&#xD;	   *     twgl.setAttribInfoBufferFromArray(gl, bufferInfo.attribs.position, arrays.position);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl&#xD;	   * @param {AttribInfo} attribInfo The attribInfo who&apos;s buffer contents to set. NOTE: If you have an attribute prefix&#xD;	   *   the name of the attribute will include the prefix.&#xD;	   * @param {ArraySpec} array Note: it is arguably ineffient to pass in anything but a typed array because anything&#xD;	   *    else will have to be converted to a typed array before it can be used by WebGL. During init time that&#xD;	   *    inefficiency is usually not important but if you&apos;re updating data dynamically best to be efficient.&#xD;	   * @param {number} [offset] an optional offset into the buffer. This is only an offset into the WebGL buffer&#xD;	   *    not the array. To pass in an offset into the array itself use a typed array and create an `ArrayBufferView`&#xD;	   *    for the portion of the array you want to use.&#xD;	   *&#xD;	   *        var someArray = new Float32Array(1000); // an array with 1000 floats&#xD;	   *        var someSubArray = new Float32Array(someArray.buffer, offsetInBytes, sizeInUnits); // a view into someArray&#xD;	   *&#xD;	   *    Now you can pass `someSubArray` into setAttribInfoBufferFromArray`&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function setAttribInfoBufferFromArray(gl, attribInfo, array, offset) {&#xD;	    array = makeTypedArray(array);&#xD;	    if (offset !== undefined) {&#xD;	      gl.bindBuffer(gl.ARRAY_BUFFER, attribInfo.buffer);&#xD;	      gl.bufferSubData(gl.ARRAY_BUFFER, offset, array);&#xD;	    } else {&#xD;	      setBufferFromTypedArray(gl, gl.ARRAY_BUFFER, attribInfo.buffer, array, attribInfo.drawType);&#xD;	    }&#xD;	  }&#xD;&#xD;	  function getBytesPerValueForGLType(gl, type) {&#xD;	    if (type === gl.BYTE) return 1; // eslint-disable-line&#xD;	    if (type === gl.UNSIGNED_BYTE) return 1; // eslint-disable-line&#xD;	    if (type === gl.SHORT) return 2; // eslint-disable-line&#xD;	    if (type === gl.UNSIGNED_SHORT) return 2; // eslint-disable-line&#xD;	    if (type === gl.INT) return 4; // eslint-disable-line&#xD;	    if (type === gl.UNSIGNED_INT) return 4; // eslint-disable-line&#xD;	    if (type === gl.FLOAT) return 4; // eslint-disable-line&#xD;	    return 0;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * tries to get the number of elements from a set of arrays.&#xD;	   */&#xD;	  var positionKeys = [&apos;position&apos;, &apos;positions&apos;, &apos;a_position&apos;];&#xD;	  function getNumElementsFromNonIndexedArrays(arrays) {&#xD;	    var key;&#xD;	    for (var ii = 0; ii &lt; positionKeys.length; ++ii) {&#xD;	      key = positionKeys[ii];&#xD;	      if (key in arrays) {&#xD;	        break;&#xD;	      }&#xD;	    }&#xD;	    if (ii === positionKeys.length) {&#xD;	      key = Object.keys(arrays)[0];&#xD;	    }&#xD;	    var array = arrays[key];&#xD;	    var length = getArray(array).length;&#xD;	    var numComponents = getNumComponents(array, key);&#xD;	    var numElements = length / numComponents;&#xD;	    if (length % numComponents &gt; 0) {&#xD;	      throw "numComponents " + numComponents + " not correct for length " + length;&#xD;	    }&#xD;	    return numElements;&#xD;	  }&#xD;&#xD;	  function getNumElementsFromAttributes(gl, attribs) {&#xD;	    var key;&#xD;	    for (var ii = 0; ii &lt; positionKeys.length; ++ii) {&#xD;	      key = positionKeys[ii];&#xD;	      if (key in attribs) {&#xD;	        break;&#xD;	      }&#xD;	      key = defaults.attribPrefix + key;&#xD;	      if (key in attribs) {&#xD;	        break;&#xD;	      }&#xD;	    }&#xD;	    if (ii === positionKeys.length) {&#xD;	      key = Object.keys(attribs)[0];&#xD;	    }&#xD;	    var attrib = attribs[key];&#xD;	    gl.bindBuffer(gl.ARRAY_BUFFER, attrib.buffer);&#xD;	    var numBytes = gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);&#xD;	    gl.bindBuffer(gl.ARRAY_BUFFER, null);&#xD;&#xD;	    var bytesPerValue = getBytesPerValueForGLType(gl, attrib.type);&#xD;	    var totalElements = numBytes / bytesPerValue;&#xD;	    var numComponents = attrib.numComponents || attrib.size;&#xD;	    // TODO: check stride&#xD;	    var numElements = totalElements / numComponents;&#xD;	    if (numElements % 1 !== 0) {&#xD;	      throw "numComponents " + numComponents + " not correct for length " + length;&#xD;	    }&#xD;	    return numElements;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} BufferInfo&#xD;	   * @property {number} numElements The number of elements to pass to `gl.drawArrays` or `gl.drawElements`.&#xD;	   * @property {number} [elementType] The type of indices `UNSIGNED_BYTE`, `UNSIGNED_SHORT` etc..&#xD;	   * @property {WebGLBuffer} [indices] The indices `ELEMENT_ARRAY_BUFFER` if any indices exist.&#xD;	   * @property {Object.&lt;string, module:twgl.AttribInfo&gt;} [attribs] The attribs approriate to call `setAttributes`&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a BufferInfo from an object of arrays.&#xD;	   *&#xD;	   * This can be passed to {@link module:twgl.setBuffersAndAttributes} and to&#xD;	   * {@link module:twgl:drawBufferInfo}.&#xD;	   *&#xD;	   * Given an object like&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },&#xD;	   *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },&#xD;	   *       normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },&#xD;	   *       indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },&#xD;	   *     };&#xD;	   *&#xD;	   *  Creates an BufferInfo like this&#xD;	   *&#xD;	   *     bufferInfo = {&#xD;	   *       numElements: 4,        // or whatever the number of elements is&#xD;	   *       indices: WebGLBuffer,  // this property will not exist if there are no indices&#xD;	   *       attribs: {&#xD;	   *         a_position: { buffer: WebGLBuffer, numComponents: 3, },&#xD;	   *         a_normal:   { buffer: WebGLBuffer, numComponents: 3, },&#xD;	   *         a_texcoord: { buffer: WebGLBuffer, numComponents: 2, },&#xD;	   *       },&#xD;	   *     };&#xD;	   *&#xD;	   *  The properties of arrays can be JavaScript arrays in which case the number of components&#xD;	   *  will be guessed.&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *        position: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0],&#xD;	   *        texcoord: [0, 0, 0, 1, 1, 0, 1, 1],&#xD;	   *        normal:   [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],&#xD;	   *        indices:  [0, 1, 2, 1, 2, 3],&#xD;	   *     };&#xD;	   *&#xD;	   *  They can also by TypedArrays&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *        position: new Float32Array([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]),&#xD;	   *        texcoord: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),&#xD;	   *        normal:   new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]),&#xD;	   *        indices:  new Uint16Array([0, 1, 2, 1, 2, 3]),&#xD;	   *     };&#xD;	   *&#xD;	   *  Or augmentedTypedArrays&#xD;	   *&#xD;	   *     var positions = createAugmentedTypedArray(3, 4);&#xD;	   *     var texcoords = createAugmentedTypedArray(2, 4);&#xD;	   *     var normals   = createAugmentedTypedArray(3, 4);&#xD;	   *     var indices   = createAugmentedTypedArray(3, 2, Uint16Array);&#xD;	   *&#xD;	   *     positions.push([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]);&#xD;	   *     texcoords.push([0, 0, 0, 1, 1, 0, 1, 1]);&#xD;	   *     normals.push([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]);&#xD;	   *     indices.push([0, 1, 2, 1, 2, 3]);&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *        position: positions,&#xD;	   *        texcoord: texcoords,&#xD;	   *        normal:   normals,&#xD;	   *        indices:  indices,&#xD;	   *     };&#xD;	   *&#xD;	   * For the last example it is equivalent to&#xD;	   *&#xD;	   *     var bufferInfo = {&#xD;	   *       attribs: {&#xD;	   *         a_position: { numComponents: 3, buffer: gl.createBuffer(), },&#xD;	   *         a_texcoods: { numComponents: 2, buffer: gl.createBuffer(), },&#xD;	   *         a_normals: { numComponents: 3, buffer: gl.createBuffer(), },&#xD;	   *       },&#xD;	   *       indices: gl.createBuffer(),&#xD;	   *       numElements: 6,&#xD;	   *     };&#xD;	   *&#xD;	   *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.a_position.buffer);&#xD;	   *     gl.bufferData(gl.ARRAY_BUFFER, arrays.position, gl.STATIC_DRAW);&#xD;	   *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.a_texcoord.buffer);&#xD;	   *     gl.bufferData(gl.ARRAY_BUFFER, arrays.texcoord, gl.STATIC_DRAW);&#xD;	   *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.a_normal.buffer);&#xD;	   *     gl.bufferData(gl.ARRAY_BUFFER, arrays.normal, gl.STATIC_DRAW);&#xD;	   *     gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferInfo.indices);&#xD;	   *     gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, arrays.indices, gl.STATIC_DRAW);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {module:twgl.Arrays} arrays Your data&#xD;	   * @return {module:twgl.BufferInfo} A BufferInfo&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function createBufferInfoFromArrays(gl, arrays) {&#xD;	    var bufferInfo = {&#xD;	      attribs: createAttribsFromArrays(gl, arrays)&#xD;	    };&#xD;	    var indices = arrays.indices;&#xD;	    if (indices) {&#xD;	      indices = makeTypedArray(indices, "indices");&#xD;	      bufferInfo.indices = createBufferFromTypedArray(gl, indices, gl.ELEMENT_ARRAY_BUFFER);&#xD;	      bufferInfo.numElements = indices.length;&#xD;	      bufferInfo.elementType = typedArrays.getGLTypeForTypedArray(indices);&#xD;	    } else {&#xD;	      bufferInfo.numElements = getNumElementsFromAttributes(gl, bufferInfo.attribs);&#xD;	    }&#xD;&#xD;	    return bufferInfo;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a buffer from an array, typed array, or array spec&#xD;	   *&#xD;	   * Given something like this&#xD;	   *&#xD;	   *     [1, 2, 3],&#xD;	   *&#xD;	   * or&#xD;	   *&#xD;	   *     new Uint16Array([1,2,3]);&#xD;	   *&#xD;	   * or&#xD;	   *&#xD;	   *     {&#xD;	   *        data: [1, 2, 3],&#xD;	   *        type: Uint8Array,&#xD;	   *     }&#xD;	   *&#xD;	   * returns a WebGLBuffer that constains the given data.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext.&#xD;	   * @param {module:twgl.ArraySpec} array an array, typed array, or array spec.&#xD;	   * @param {string} arrayName name of array. Used to guess the type if type can not be dervied other wise.&#xD;	   * @return {WebGLBuffer} a WebGLBuffer containing the data in array.&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function createBufferFromArray(gl, array, arrayName) {&#xD;	    var type = arrayName === "indices" ? gl.ELEMENT_ARRAY_BUFFER : gl.ARRAY_BUFFER;&#xD;	    var typedArray = makeTypedArray(array, arrayName);&#xD;	    return createBufferFromTypedArray(gl, typedArray, type);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates buffers from arrays or typed arrays&#xD;	   *&#xD;	   * Given something like this&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *        positions: [1, 2, 3],&#xD;	   *        normals: [0, 0, 1],&#xD;	   *     }&#xD;	   *&#xD;	   * returns something like&#xD;	   *&#xD;	   *     buffers = {&#xD;	   *       positions: WebGLBuffer,&#xD;	   *       normals: WebGLBuffer,&#xD;	   *     }&#xD;	   *&#xD;	   * If the buffer is named &apos;indices&apos; it will be made an ELEMENT_ARRAY_BUFFER.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext.&#xD;	   * @param {module:twgl.Arrays} arrays&#xD;	   * @return {Object&lt;string, WebGLBuffer&gt;} returns an object with one WebGLBuffer per array&#xD;	   * @memberOf module:twgl/attributes&#xD;	   */&#xD;	  function createBuffersFromArrays(gl, arrays) {&#xD;	    var buffers = {};&#xD;	    Object.keys(arrays).forEach(function (key) {&#xD;	      buffers[key] = createBufferFromArray(gl, arrays[key], key);&#xD;	    });&#xD;&#xD;	    // Ugh!&#xD;	    if (arrays.indices) {&#xD;	      buffers.numElements = arrays.indices.length;&#xD;	      buffers.elementType = typedArrays.getGLTypeForTypedArray(makeTypedArray(arrays.indices), &apos;indices&apos;);&#xD;	    } else {&#xD;	      buffers.numElements = getNumElementsFromNonIndexedArrays(arrays);&#xD;	    }&#xD;&#xD;	    return buffers;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "createAttribsFromArrays": createAttribsFromArrays,&#xD;	    "createBuffersFromArrays": createBuffersFromArrays,&#xD;	    "createBufferFromArray": createBufferFromArray,&#xD;	    "createBufferFromTypedArray": createBufferFromTypedArray,&#xD;	    "createBufferInfoFromArrays": createBufferInfoFromArrays,&#xD;	    "setAttribInfoBufferFromArray": setAttribInfoBufferFromArray,&#xD;&#xD;	    "setAttributePrefix": setAttributePrefix,&#xD;&#xD;	    "setDefaults_": setDefaults,&#xD;	    "getNumComponents_": getNumComponents,&#xD;	    "getArray_": getArray&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 3 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Low level shader typed array related functions&#xD;	   *&#xD;	   * You should generally not need to use these functions. They are provided&#xD;	   * for those cases where you&apos;re doing something out of the ordinary&#xD;	   * and you need lower level access.&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.typedArray` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/typedArray&#xD;	   */&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;&#xD;	  var gl = undefined; // eslint-disable-line&#xD;&#xD;	  /* DataType */&#xD;	  var BYTE = 0x1400;&#xD;	  var UNSIGNED_BYTE = 0x1401;&#xD;	  var SHORT = 0x1402;&#xD;	  var UNSIGNED_SHORT = 0x1403;&#xD;	  var INT = 0x1404;&#xD;	  var UNSIGNED_INT = 0x1405;&#xD;	  var FLOAT = 0x1406;&#xD;	  var UNSIGNED_SHORT_4_4_4_4 = 0x8033;&#xD;	  var UNSIGNED_SHORT_5_5_5_1 = 0x8034;&#xD;	  var UNSIGNED_SHORT_5_6_5 = 0x8363;&#xD;	  var HALF_FLOAT = 0x140B;&#xD;	  var UNSIGNED_INT_2_10_10_10_REV = 0x8368;&#xD;	  var UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;&#xD;	  var UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;&#xD;	  var FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;&#xD;	  var UNSIGNED_INT_24_8 = 0x84FA;&#xD;&#xD;	  var glTypeToTypedArray = {};&#xD;	  {&#xD;	    var tt = glTypeToTypedArray;&#xD;	    tt[BYTE] = Int8Array;&#xD;	    tt[UNSIGNED_BYTE] = Uint8Array;&#xD;	    tt[SHORT] = Int16Array;&#xD;	    tt[UNSIGNED_SHORT] = Uint16Array;&#xD;	    tt[INT] = Int32Array;&#xD;	    tt[UNSIGNED_INT] = Uint32Array;&#xD;	    tt[FLOAT] = Float32Array;&#xD;	    tt[UNSIGNED_SHORT_4_4_4_4] = Uint16Array;&#xD;	    tt[UNSIGNED_SHORT_5_5_5_1] = Uint16Array;&#xD;	    tt[UNSIGNED_SHORT_5_6_5] = Uint16Array;&#xD;	    tt[HALF_FLOAT] = Uint16Array;&#xD;	    tt[UNSIGNED_INT_2_10_10_10_REV] = Uint32Array;&#xD;	    tt[UNSIGNED_INT_10F_11F_11F_REV] = Uint32Array;&#xD;	    tt[UNSIGNED_INT_5_9_9_9_REV] = Uint32Array;&#xD;	    tt[FLOAT_32_UNSIGNED_INT_24_8_REV] = Uint32Array;&#xD;	    tt[UNSIGNED_INT_24_8] = Uint32Array;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Get the GL type for a typedArray&#xD;	   * @param {ArrayBuffer|ArrayBufferView} typedArray a typedArray&#xD;	   * @return {number} the GL type for array. For example pass in an `Int8Array` and `gl.BYTE` will&#xD;	   *   be returned. Pass in a `Uint32Array` and `gl.UNSIGNED_INT` will be returned&#xD;	   * @memberOf module:twgl/typedArray&#xD;	   */&#xD;	  function getGLTypeForTypedArray(typedArray) {&#xD;	    if (typedArray instanceof Int8Array) {&#xD;	      return BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Uint8Array) {&#xD;	      return UNSIGNED_BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Uint8ClampedArray) {&#xD;	      return UNSIGNED_BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Int16Array) {&#xD;	      return SHORT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Uint16Array) {&#xD;	      return UNSIGNED_SHORT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Int32Array) {&#xD;	      return INT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Uint32Array) {&#xD;	      return UNSIGNED_INT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArray instanceof Float32Array) {&#xD;	      return FLOAT;&#xD;	    } // eslint-disable-line&#xD;	    throw "unsupported typed array type";&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Get the GL type for a typedArray type&#xD;	   * @param {ArrayBufferViewType} typedArrayType a typedArray constructor&#xD;	   * @return {number} the GL type for type. For example pass in `Int8Array` and `gl.BYTE` will&#xD;	   *   be returned. Pass in `Uint32Array` and `gl.UNSIGNED_INT` will be returned&#xD;	   * @memberOf module:twgl/typedArray&#xD;	   */&#xD;	  function getGLTypeForTypedArrayType(typedArrayType) {&#xD;	    if (typedArrayType === Int8Array) {&#xD;	      return BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Uint8Array) {&#xD;	      return UNSIGNED_BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Uint8ClampedArray) {&#xD;	      return UNSIGNED_BYTE;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Int16Array) {&#xD;	      return SHORT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Uint16Array) {&#xD;	      return UNSIGNED_SHORT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Int32Array) {&#xD;	      return INT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Uint32Array) {&#xD;	      return UNSIGNED_INT;&#xD;	    } // eslint-disable-line&#xD;	    if (typedArrayType === Float32Array) {&#xD;	      return FLOAT;&#xD;	    } // eslint-disable-line&#xD;	    throw "unsupported typed array type";&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Get the typed array constructor for a given GL type&#xD;	   * @param {number} type the GL type. (eg: `gl.UNSIGNED_INT`)&#xD;	   * @return {function} the constructor for a the corresponding typed array. (eg. `Uint32Array`).&#xD;	   * @memberOf module:twgl/typedArray&#xD;	   */&#xD;	  function getTypedArrayTypeForGLType(type) {&#xD;	    var CTOR = glTypeToTypedArray[type];&#xD;	    if (!CTOR) {&#xD;	      throw "unknown gl type";&#xD;	    }&#xD;	    return CTOR;&#xD;	  }&#xD;&#xD;	  function isArrayBuffer(a) {&#xD;	    return a &amp;&amp; a.buffer &amp;&amp; a.buffer instanceof ArrayBuffer;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  return {&#xD;	    "getGLTypeForTypedArray": getGLTypeForTypedArray,&#xD;	    "getGLTypeForTypedArrayType": getGLTypeForTypedArrayType,&#xD;	    "getTypedArrayTypeForGLType": getTypedArrayTypeForGLType,&#xD;	    "isArrayBuffer": isArrayBuffer&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 4 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Copy an object 1 level deep&#xD;	   * @param {object} src object to copy&#xD;	   * @return {object} the copy&#xD;	   */&#xD;&#xD;	  function shallowCopy(src) {&#xD;	    var dst = {};&#xD;	    Object.keys(src).forEach(function (key) {&#xD;	      dst[key] = src[key];&#xD;	    });&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Copy named properties&#xD;	   *&#xD;	   * @param {string[]} names names of properties to copy&#xD;	   * @param {object} src object to copy properties from&#xD;	   * @param {object} dst object to copy properties to&#xD;	   */&#xD;	  function copyNamedProperties(names, src, dst) {&#xD;	    names.forEach(function (name) {&#xD;	      var value = src[name];&#xD;	      if (value !== undefined) {&#xD;	        dst[name] = value;&#xD;	      }&#xD;	    });&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Copies properties from source to dest only if a matching key is in dest&#xD;	   *&#xD;	   * @param {Object.&lt;string, ?&gt;} src the source&#xD;	   * @param {Object.&lt;string, ?&gt;} dst the dest&#xD;	   */&#xD;	  function copyExistingProperties(src, dst) {&#xD;	    Object.keys(dst).forEach(function (key) {&#xD;	      if (dst.hasOwnProperty(key) &amp;&amp; src.hasOwnProperty(key)) {&#xD;	        dst[key] = src[key];&#xD;	      }&#xD;	    });&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets the gl version as a number&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @return {number} version of gl&#xD;	   */&#xD;	  //function getVersionAsNumber(gl) {&#xD;	  //  return parseFloat(gl.getParameter(gl.VERSION).substr(6));&#xD;	  //}&#xD;&#xD;	  /**&#xD;	   * Check if context is WebGL 2.0&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @return {bool} true if it&apos;s WebGL 2.0&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function isWebGL2(gl) {&#xD;	    // This is the correct check but it&apos;s slow&#xD;	    //return gl.getParameter(gl.VERSION).indexOf("WebGL 2.0") === 0;&#xD;	    // This might also be the correct check but I&apos;m assuming it&apos;s slow-ish&#xD;	    // return gl instanceof WebGL2RenderingContext;&#xD;	    return !!gl.texStorage2D;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Check if context is WebGL 1.0&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @return {bool} true if it&apos;s WebGL 1.0&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function isWebGL1(gl) {&#xD;	    // This is the correct check but it&apos;s slow&#xD;	    //var version = getVersionAsNumber(gl);&#xD;	    //return version &lt;= 1.0 &amp;&amp; version &gt; 0.0;  // because as of 2016/5 Edge returns 0.96&#xD;	    // This might also be the correct check but I&apos;m assuming it&apos;s slow-ish&#xD;	    // return gl instanceof WebGLRenderingContext;&#xD;	    return !gl.texStorage2D;&#xD;	  }&#xD;&#xD;	  var error = window.console &amp;&amp; window.console.error &amp;&amp; typeof window.console.error === "function" ? window.console.error.bind(window.console) : function () {};&#xD;&#xD;	  var warn = window.console &amp;&amp; window.console.warn &amp;&amp; typeof window.console.warn === "function" ? window.console.warn.bind(window.console) : function () {};&#xD;&#xD;	  return {&#xD;	    copyExistingProperties: copyExistingProperties,&#xD;	    copyNamedProperties: copyNamedProperties,&#xD;	    shallowCopy: shallowCopy,&#xD;	    isWebGL1: isWebGL1,&#xD;	    isWebGL2: isWebGL2,&#xD;	    error: error,&#xD;	    warn: warn&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 5 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function (programs) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Drawing related functions&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.draw` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/draw&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Calls `gl.drawElements` or `gl.drawArrays`, whichever is appropriate&#xD;	   *&#xD;	   * normally you&apos;d call `gl.drawElements` or `gl.drawArrays` yourself&#xD;	   * but calling this means if you switch from indexed data to non-indexed&#xD;	   * data you don&apos;t have to remember to update your draw call.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {(module:twgl.BufferInfo|module:twgl.VertexArrayInfo)} bufferInfo A BufferInfo as returned from {@link module:twgl.createBufferInfoFromArrays} or&#xD;	   *   a VertexArrayInfo as returned from {@link module:twgl.createVertexArrayInfo}&#xD;	   * @param {enum} [type] eg (gl.TRIANGLES, gl.LINES, gl.POINTS, gl.TRIANGLE_STRIP, ...). Defaults to `gl.TRIANGLES`&#xD;	   * @param {number} [count] An optional count. Defaults to bufferInfo.numElements&#xD;	   * @param {number} [offset] An optional offset. Defaults to 0.&#xD;	   * @memberOf module:twgl/draw&#xD;	   */&#xD;&#xD;	  function drawBufferInfo(gl, bufferInfo, type, count, offset) {&#xD;	    type = type === undefined ? gl.TRIANGLES : type;&#xD;	    var indices = bufferInfo.indices;&#xD;	    var elementType = bufferInfo.elementType;&#xD;	    var numElements = count === undefined ? bufferInfo.numElements : count;&#xD;	    offset = offset === undefined ? 0 : offset;&#xD;	    if (elementType || indices) {&#xD;	      gl.drawElements(type, numElements, elementType === undefined ? gl.UNSIGNED_SHORT : bufferInfo.elementType, offset);&#xD;	    } else {&#xD;	      gl.drawArrays(type, offset, numElements);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * A DrawObject is useful for putting objects in to an array and passing them to {@link module:twgl.drawObjectList}.&#xD;	   *&#xD;	   * You need either a `BufferInfo` or a `VertexArrayInfo`.&#xD;	   *&#xD;	   * @typedef {Object} DrawObject&#xD;	   * @property {boolean} [active] whether or not to draw. Default = `true` (must be `false` to be not true). In otherwords `undefined` = `true`&#xD;	   * @property {number} [type] type to draw eg. `gl.TRIANGLES`, `gl.LINES`, etc...&#xD;	   * @property {module:twgl.ProgramInfo} programInfo A ProgramInfo as returned from {@link module:twgl.createProgramInfo}&#xD;	   * @property {module:twgl.BufferInfo} [bufferInfo] A BufferInfo as returned from {@link module:twgl.createBufferInfoFromArrays}&#xD;	   * @property {module:twgl.VertexArrayInfo} [vertexArrayInfo] A VertexArrayInfo as returned from {@link module:twgl.createVertexArrayInfo}&#xD;	   * @property {Object&lt;string, ?&gt;} uniforms The values for the uniforms.&#xD;	   *   You can pass multiple objects by putting them in an array. For example&#xD;	   *&#xD;	   *     var sharedUniforms = {&#xD;	   *       u_fogNear: 10,&#xD;	   *       u_projection: ...&#xD;	   *       ...&#xD;	   *     };&#xD;	   *&#xD;	   *     var localUniforms = {&#xD;	   *       u_world: ...&#xD;	   *       u_diffuseColor: ...&#xD;	   *     };&#xD;	   *&#xD;	   *     var drawObj = {&#xD;	   *       ...&#xD;	   *       uniforms: [sharedUniforms, localUniforms],&#xD;	   *     };&#xD;	   *&#xD;	   * @property {number} [offset] the offset to pass to `gl.drawArrays` or `gl.drawElements`. Defaults to 0.&#xD;	   * @property {number} [count] the count to pass to `gl.drawArrays` or `gl.drawElemnts`. Defaults to bufferInfo.numElements.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Draws a list of objects&#xD;	   * @param {DrawObject[]} objectsToDraw an array of objects to draw.&#xD;	   * @memberOf module:twgl/draw&#xD;	   */&#xD;	  function drawObjectList(gl, objectsToDraw) {&#xD;	    var lastUsedProgramInfo = null;&#xD;	    var lastUsedBufferInfo = null;&#xD;&#xD;	    objectsToDraw.forEach(function (object) {&#xD;	      if (object.active === false) {&#xD;	        return;&#xD;	      }&#xD;&#xD;	      var programInfo = object.programInfo;&#xD;	      var bufferInfo = object.vertexArrayInfo || object.bufferInfo;&#xD;	      var bindBuffers = false;&#xD;	      var type = object.type === undefined ? gl.TRIANGLES : object.type;&#xD;&#xD;	      if (programInfo !== lastUsedProgramInfo) {&#xD;	        lastUsedProgramInfo = programInfo;&#xD;	        gl.useProgram(programInfo.program);&#xD;&#xD;	        // We have to rebind buffers when changing programs because we&#xD;	        // only bind buffers the program uses. So if 2 programs use the same&#xD;	        // bufferInfo but the 1st one uses only positions the when the&#xD;	        // we switch to the 2nd one some of the attributes will not be on.&#xD;	        bindBuffers = true;&#xD;	      }&#xD;&#xD;	      // Setup all the needed attributes.&#xD;	      if (bindBuffers || bufferInfo !== lastUsedBufferInfo) {&#xD;	        if (lastUsedBufferInfo &amp;&amp; lastUsedBufferInfo.vertexArrayObject &amp;&amp; !bufferInfo.vertexArrayObject) {&#xD;	          gl.bindVertexArray(null);&#xD;	        }&#xD;	        lastUsedBufferInfo = bufferInfo;&#xD;	        programs.setBuffersAndAttributes(gl, programInfo, bufferInfo);&#xD;	      }&#xD;&#xD;	      // Set the uniforms.&#xD;	      programs.setUniforms(programInfo, object.uniforms);&#xD;&#xD;	      // Draw&#xD;	      drawBufferInfo(gl, bufferInfo, type, object.count, object.offset);&#xD;	    });&#xD;&#xD;	    if (lastUsedBufferInfo.vertexArrayObject) {&#xD;	      gl.bindVertexArray(null);&#xD;	    }&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "drawBufferInfo": drawBufferInfo,&#xD;	    "drawObjectList": drawObjectList&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 6 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (utils) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Low level shader program related functions&#xD;	   *&#xD;	   * You should generally not need to use these functions. They are provided&#xD;	   * for those cases where you&apos;re doing something out of the ordinary&#xD;	   * and you need lower level access.&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.programs` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/programs&#xD;	   */&#xD;&#xD;	  var error = utils.error;&#xD;	  var warn = utils.warn;&#xD;&#xD;	  var FLOAT = 0x1406;&#xD;	  var FLOAT_VEC2 = 0x8B50;&#xD;	  var FLOAT_VEC3 = 0x8B51;&#xD;	  var FLOAT_VEC4 = 0x8B52;&#xD;	  var INT = 0x1404;&#xD;	  var INT_VEC2 = 0x8B53;&#xD;	  var INT_VEC3 = 0x8B54;&#xD;	  var INT_VEC4 = 0x8B55;&#xD;	  var BOOL = 0x8B56;&#xD;	  var BOOL_VEC2 = 0x8B57;&#xD;	  var BOOL_VEC3 = 0x8B58;&#xD;	  var BOOL_VEC4 = 0x8B59;&#xD;	  var FLOAT_MAT2 = 0x8B5A;&#xD;	  var FLOAT_MAT3 = 0x8B5B;&#xD;	  var FLOAT_MAT4 = 0x8B5C;&#xD;	  var SAMPLER_2D = 0x8B5E;&#xD;	  var SAMPLER_CUBE = 0x8B60;&#xD;	  var SAMPLER_3D = 0x8B5F;&#xD;	  var SAMPLER_2D_SHADOW = 0x8B62;&#xD;	  var FLOAT_MAT2x3 = 0x8B65;&#xD;	  var FLOAT_MAT2x4 = 0x8B66;&#xD;	  var FLOAT_MAT3x2 = 0x8B67;&#xD;	  var FLOAT_MAT3x4 = 0x8B68;&#xD;	  var FLOAT_MAT4x2 = 0x8B69;&#xD;	  var FLOAT_MAT4x3 = 0x8B6A;&#xD;	  var SAMPLER_2D_ARRAY = 0x8DC1;&#xD;	  var SAMPLER_2D_ARRAY_SHADOW = 0x8DC4;&#xD;	  var SAMPLER_CUBE_SHADOW = 0x8DC5;&#xD;	  var UNSIGNED_INT = 0x1405;&#xD;	  var UNSIGNED_INT_VEC2 = 0x8DC6;&#xD;	  var UNSIGNED_INT_VEC3 = 0x8DC7;&#xD;	  var UNSIGNED_INT_VEC4 = 0x8DC8;&#xD;	  var INT_SAMPLER_2D = 0x8DCA;&#xD;	  var INT_SAMPLER_3D = 0x8DCB;&#xD;	  var INT_SAMPLER_CUBE = 0x8DCC;&#xD;	  var INT_SAMPLER_2D_ARRAY = 0x8DCF;&#xD;	  var UNSIGNED_INT_SAMPLER_2D = 0x8DD2;&#xD;	  var UNSIGNED_INT_SAMPLER_3D = 0x8DD3;&#xD;	  var UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4;&#xD;	  var UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7;&#xD;&#xD;	  var TEXTURE_2D = 0x0DE1;&#xD;	  var TEXTURE_CUBE_MAP = 0x8513;&#xD;	  var TEXTURE_3D = 0x806F;&#xD;	  var TEXTURE_2D_ARRAY = 0x8C1A;&#xD;&#xD;	  var typeMap = {};&#xD;&#xD;	  /**&#xD;	   * Returns the corresponding bind point for a given sampler type&#xD;	   */&#xD;	  function getBindPointForSamplerType(gl, type) {&#xD;	    return typeMap[type].bindPoint;&#xD;	  }&#xD;&#xD;	  // This kind of sucks! If you could compose functions as in `var fn = gl[name];`&#xD;	  // this code could be a lot smaller but that is sadly really slow (T_T)&#xD;&#xD;	  function floatSetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1f(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatArraySetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1fv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatVec2Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform2fv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatVec3Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform3fv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatVec4Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform4fv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intSetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1i(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intArraySetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1iv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intVec2Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform2iv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intVec3Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform3iv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intVec4Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform4iv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function uintSetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1ui(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function uintArraySetter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform1uiv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function uintVec2Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform2uiv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function uintVec3Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform3uiv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function uintVec4Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniform4uiv(location, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat2Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix2fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat3Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix3fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat4Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix4fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat23Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix2x3fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat32Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix3x2fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat24Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix2x4fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat42Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix4x2fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat34Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix3x4fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function floatMat43Setter(gl, location) {&#xD;	    return function (v) {&#xD;	      gl.uniformMatrix4x3fv(location, false, v);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function samplerSetter(gl, type, unit, location) {&#xD;	    var bindPoint = getBindPointForSamplerType(gl, type);&#xD;	    return utils.isWebGL2(gl) ? function (textureOrPair) {&#xD;	      var texture = void 0;&#xD;	      var sampler = void 0;&#xD;	      if (textureOrPair instanceof WebGLTexture) {&#xD;	        texture = textureOrPair;&#xD;	        sampler = null;&#xD;	      } else {&#xD;	        texture = textureOrPair.texture;&#xD;	        sampler = textureOrPair.sampler;&#xD;	      }&#xD;	      gl.uniform1i(location, unit);&#xD;	      gl.activeTexture(gl.TEXTURE0 + unit);&#xD;	      gl.bindTexture(bindPoint, texture);&#xD;	      gl.bindSampler(unit, sampler);&#xD;	    } : function (texture) {&#xD;	      gl.uniform1i(location, unit);&#xD;	      gl.activeTexture(gl.TEXTURE0 + unit);&#xD;	      gl.bindTexture(bindPoint, texture);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function samplerArraySetter(gl, type, unit, location, size) {&#xD;	    var bindPoint = getBindPointForSamplerType(gl, type);&#xD;	    var units = new Int32Array(size);&#xD;	    for (var ii = 0; ii &lt; size; ++ii) {&#xD;	      units[ii] = unit + ii;&#xD;	    }&#xD;&#xD;	    return utils.isWebGL2(gl) ? function (textures) {&#xD;	      gl.uniform1iv(location, units);&#xD;	      textures.forEach(function (textureOrPair, index) {&#xD;	        gl.activeTexture(gl.TEXTURE0 + units[index]);&#xD;	        var texture = void 0;&#xD;	        var sampler = void 0;&#xD;	        if (textureOrPair instanceof WebGLTexture) {&#xD;	          texture = textureOrPair;&#xD;	          sampler = null;&#xD;	        } else {&#xD;	          texture = textureOrPair.texture;&#xD;	          sampler = textureOrPair.sampler;&#xD;	        }&#xD;	        gl.bindSampler(unit, sampler);&#xD;	        gl.bindTexture(bindPoint, texture);&#xD;	      });&#xD;	    } : function (textures) {&#xD;	      gl.uniform1iv(location, units);&#xD;	      textures.forEach(function (texture, index) {&#xD;	        gl.activeTexture(gl.TEXTURE0 + units[index]);&#xD;	        gl.bindTexture(bindPoint, texture);&#xD;	      });&#xD;	    };&#xD;	  }&#xD;&#xD;	  typeMap[FLOAT] = { Type: Float32Array, size: 4, setter: floatSetter, arraySetter: floatArraySetter };&#xD;	  typeMap[FLOAT_VEC2] = { Type: Float32Array, size: 8, setter: floatVec2Setter };&#xD;	  typeMap[FLOAT_VEC3] = { Type: Float32Array, size: 12, setter: floatVec3Setter };&#xD;	  typeMap[FLOAT_VEC4] = { Type: Float32Array, size: 16, setter: floatVec4Setter };&#xD;	  typeMap[INT] = { Type: Int32Array, size: 4, setter: intSetter, arraySetter: intArraySetter };&#xD;	  typeMap[INT_VEC2] = { Type: Int32Array, size: 8, setter: intVec2Setter };&#xD;	  typeMap[INT_VEC3] = { Type: Int32Array, size: 12, setter: intVec3Setter };&#xD;	  typeMap[INT_VEC4] = { Type: Int32Array, size: 16, setter: intVec4Setter };&#xD;	  typeMap[UNSIGNED_INT] = { Type: Uint32Array, size: 4, setter: uintSetter, arraySetter: uintArraySetter };&#xD;	  typeMap[UNSIGNED_INT_VEC2] = { Type: Uint32Array, size: 8, setter: uintVec2Setter };&#xD;	  typeMap[UNSIGNED_INT_VEC3] = { Type: Uint32Array, size: 12, setter: uintVec3Setter };&#xD;	  typeMap[UNSIGNED_INT_VEC4] = { Type: Uint32Array, size: 16, setter: uintVec4Setter };&#xD;	  typeMap[BOOL] = { Type: Uint32Array, size: 4, setter: intSetter, arraySetter: intArraySetter };&#xD;	  typeMap[BOOL_VEC2] = { Type: Uint32Array, size: 8, setter: intVec2Setter };&#xD;	  typeMap[BOOL_VEC3] = { Type: Uint32Array, size: 12, setter: intVec3Setter };&#xD;	  typeMap[BOOL_VEC4] = { Type: Uint32Array, size: 16, setter: intVec4Setter };&#xD;	  typeMap[FLOAT_MAT2] = { Type: Float32Array, size: 16, setter: floatMat2Setter };&#xD;	  typeMap[FLOAT_MAT3] = { Type: Float32Array, size: 36, setter: floatMat3Setter };&#xD;	  typeMap[FLOAT_MAT4] = { Type: Float32Array, size: 64, setter: floatMat4Setter };&#xD;	  typeMap[FLOAT_MAT2x3] = { Type: Float32Array, size: 24, setter: floatMat23Setter };&#xD;	  typeMap[FLOAT_MAT2x4] = { Type: Float32Array, size: 32, setter: floatMat24Setter };&#xD;	  typeMap[FLOAT_MAT3x2] = { Type: Float32Array, size: 24, setter: floatMat32Setter };&#xD;	  typeMap[FLOAT_MAT3x4] = { Type: Float32Array, size: 48, setter: floatMat34Setter };&#xD;	  typeMap[FLOAT_MAT4x2] = { Type: Float32Array, size: 32, setter: floatMat42Setter };&#xD;	  typeMap[FLOAT_MAT4x3] = { Type: Float32Array, size: 48, setter: floatMat43Setter };&#xD;	  typeMap[SAMPLER_2D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D };&#xD;	  typeMap[SAMPLER_CUBE] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_CUBE_MAP };&#xD;	  typeMap[SAMPLER_3D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_3D };&#xD;	  typeMap[SAMPLER_2D_SHADOW] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D };&#xD;	  typeMap[SAMPLER_2D_ARRAY] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D_ARRAY };&#xD;	  typeMap[SAMPLER_2D_ARRAY_SHADOW] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D_ARRAY };&#xD;	  typeMap[SAMPLER_CUBE_SHADOW] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_CUBE_MAP };&#xD;	  typeMap[INT_SAMPLER_2D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D };&#xD;	  typeMap[INT_SAMPLER_3D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_3D };&#xD;	  typeMap[INT_SAMPLER_CUBE] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_CUBE_MAP };&#xD;	  typeMap[INT_SAMPLER_2D_ARRAY] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D_ARRAY };&#xD;	  typeMap[UNSIGNED_INT_SAMPLER_2D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D };&#xD;	  typeMap[UNSIGNED_INT_SAMPLER_3D] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_3D };&#xD;	  typeMap[UNSIGNED_INT_SAMPLER_CUBE] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_CUBE_MAP };&#xD;	  typeMap[UNSIGNED_INT_SAMPLER_2D_ARRAY] = { Type: null, size: 0, setter: samplerSetter, arraySetter: samplerArraySetter, bindPoint: TEXTURE_2D_ARRAY };&#xD;&#xD;	  function floatAttribSetter(gl, index) {&#xD;	    return function (b) {&#xD;	      gl.bindBuffer(gl.ARRAY_BUFFER, b.buffer);&#xD;	      gl.enableVertexAttribArray(index);&#xD;	      gl.vertexAttribPointer(index, b.numComponents || b.size, b.type || gl.FLOAT, b.normalize || false, b.stride || 0, b.offset || 0);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function intAttribSetter(gl, index) {&#xD;	    return function (b) {&#xD;	      gl.bindBuffer(gl.ARRAY_BUFFER, b.buffer);&#xD;	      gl.enableVertexAttribArray(index);&#xD;	      gl.vertexAttribIPointer(index, b.numComponents || b.size, b.type || gl.INT, b.stride || 0, b.offset || 0);&#xD;	    };&#xD;	  }&#xD;&#xD;	  function matAttribSetter(gl, index, typeInfo) {&#xD;	    var defaultSize = typeInfo.size;&#xD;	    var count = typeInfo.count;&#xD;&#xD;	    return function (b) {&#xD;	      gl.bindBuffer(gl.ARRAY_BUFFER, b.buffer);&#xD;	      var numComponents = b.size || b.numComponents || defaultSize;&#xD;	      var size = numComponents / count;&#xD;	      var type = b.type || gl.FLOAT;&#xD;	      var typeInfo = typeMap[type];&#xD;	      var stride = typeInfo.size * numComponents;&#xD;	      var normalize = b.normalize || false;&#xD;	      var offset = b.offset || 0;&#xD;	      var rowOffset = stride / count;&#xD;	      for (var i = 0; i &lt; count; ++i) {&#xD;	        gl.enableVertexAttribArray(index + i);&#xD;	        gl.vertexAttribPointer(index + i, size, type, normalize, stride, offset + rowOffset * i);&#xD;	      }&#xD;	    };&#xD;	  }&#xD;&#xD;	  var attrTypeMap = {};&#xD;	  attrTypeMap[FLOAT] = { size: 4, setter: floatAttribSetter };&#xD;	  attrTypeMap[FLOAT_VEC2] = { size: 8, setter: floatAttribSetter };&#xD;	  attrTypeMap[FLOAT_VEC3] = { size: 12, setter: floatAttribSetter };&#xD;	  attrTypeMap[FLOAT_VEC4] = { size: 16, setter: floatAttribSetter };&#xD;	  attrTypeMap[INT] = { size: 4, setter: intAttribSetter };&#xD;	  attrTypeMap[INT_VEC2] = { size: 8, setter: intAttribSetter };&#xD;	  attrTypeMap[INT_VEC3] = { size: 12, setter: intAttribSetter };&#xD;	  attrTypeMap[INT_VEC4] = { size: 16, setter: intAttribSetter };&#xD;	  attrTypeMap[UNSIGNED_INT] = { size: 4, setter: intAttribSetter };&#xD;	  attrTypeMap[UNSIGNED_INT_VEC2] = { size: 8, setter: intAttribSetter };&#xD;	  attrTypeMap[UNSIGNED_INT_VEC3] = { size: 12, setter: intAttribSetter };&#xD;	  attrTypeMap[UNSIGNED_INT_VEC4] = { size: 16, setter: intAttribSetter };&#xD;	  attrTypeMap[BOOL] = { size: 4, setter: intAttribSetter };&#xD;	  attrTypeMap[BOOL_VEC2] = { size: 8, setter: intAttribSetter };&#xD;	  attrTypeMap[BOOL_VEC3] = { size: 12, setter: intAttribSetter };&#xD;	  attrTypeMap[BOOL_VEC4] = { size: 16, setter: intAttribSetter };&#xD;	  attrTypeMap[FLOAT_MAT2] = { size: 4, setter: matAttribSetter, count: 2 };&#xD;	  attrTypeMap[FLOAT_MAT3] = { size: 9, setter: matAttribSetter, count: 3 };&#xD;	  attrTypeMap[FLOAT_MAT4] = { size: 16, setter: matAttribSetter, count: 4 };&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;	  var gl = undefined; // eslint-disable-line&#xD;&#xD;	  /**&#xD;	   * Error Callback&#xD;	   * @callback ErrorCallback&#xD;	   * @param {string} msg error message.&#xD;	   * @param {number} [lineOffset] amount to add to line number&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  function addLineNumbers(src, lineOffset) {&#xD;	    lineOffset = lineOffset || 0;&#xD;	    ++lineOffset;&#xD;&#xD;	    return src.split("\n").map(function (line, ndx) {&#xD;	      return ndx + lineOffset + ": " + line;&#xD;	    }).join("\n");&#xD;	  }&#xD;&#xD;	  var spaceRE = /^[ \t]*\n/;&#xD;&#xD;	  /**&#xD;	   * Loads a shader.&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {string} shaderSource The shader source.&#xD;	   * @param {number} shaderType The type of shader.&#xD;	   * @param {module:twgl.ErrorCallback} opt_errorCallback callback for errors.&#xD;	   * @return {WebGLShader} The created shader.&#xD;	   */&#xD;	  function loadShader(gl, shaderSource, shaderType, opt_errorCallback) {&#xD;	    var errFn = opt_errorCallback || error;&#xD;	    // Create the shader object&#xD;	    var shader = gl.createShader(shaderType);&#xD;&#xD;	    // Remove the first end of line because WebGL 2.0 requires&#xD;	    // #version 300 es&#xD;	    // as the first line. No whitespace allowed before that line&#xD;	    // so&#xD;	    //&#xD;	    // &lt;script&gt;&#xD;	    // #version 300 es&#xD;	    // &lt;/script&gt;&#xD;	    //&#xD;	    // Has one line before it which is invalid according to GLSL ES 3.00&#xD;	    //&#xD;	    var lineOffset = 0;&#xD;	    if (spaceRE.test(shaderSource)) {&#xD;	      lineOffset = 1;&#xD;	      shaderSource = shaderSource.replace(spaceRE, &apos;&apos;);&#xD;	    }&#xD;&#xD;	    // Load the shader source&#xD;	    gl.shaderSource(shader, shaderSource);&#xD;&#xD;	    // Compile the shader&#xD;	    gl.compileShader(shader);&#xD;&#xD;	    // Check the compile status&#xD;	    var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);&#xD;	    if (!compiled) {&#xD;	      // Something went wrong during compilation; get the error&#xD;	      var lastError = gl.getShaderInfoLog(shader);&#xD;	      errFn(addLineNumbers(shaderSource, lineOffset) + "\n*** Error compiling shader: " + lastError);&#xD;	      gl.deleteShader(shader);&#xD;	      return null;&#xD;	    }&#xD;&#xD;	    return shader;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} ProgramOptions&#xD;	   * @property {function(string)} [errorCallback] callback for errors&#xD;	   * @property {Object.&lt;string,number&gt;} [attribLocations] a attribute name to location map&#xD;	   * @property {(module:twgl.BufferInfo|Object.&lt;string,module:twgl.AttribInfo&gt;|string[])} [transformFeedbackVaryings] If passed&#xD;	   *   a BufferInfo will use the attribs names inside. If passed an object of AttribInfos will use the names from that object. Otherwise&#xD;	   *   you can pass an array of names.&#xD;	   * @property {number} [transformFeedbackMode] the mode to pass `gl.transformFeedbackVaryings`. Defaults to `SEPARATE_ATTRIBS`.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Gets the program options based on all these optional arguments&#xD;	   * @param {module:twgl.ProgramOptions|string[]} [opt_attribs] Options for the program or an array of attribs names. Locations will be assigned by index if not passed in&#xD;	   * @param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.&#xD;	   * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console&#xD;	   *        on error. If you want something else pass an callback. It&apos;s passed an error message.&#xD;	   * @return {module:twgl.ProgramOptions} an instance of ProgramOptions based on the arguments pased on&#xD;	   */&#xD;	  function getProgramOptions(opt_attribs, opt_locations, opt_errorCallback) {&#xD;	    if (typeof opt_locations === &apos;function&apos;) {&#xD;	      opt_errorCallback = opt_locations;&#xD;	      opt_locations = undefined;&#xD;	    }&#xD;	    if (typeof opt_attribs === &apos;function&apos;) {&#xD;	      opt_errorCallback = opt_attribs;&#xD;	      opt_attribs = undefined;&#xD;	    } else if (opt_attribs &amp;&amp; !Array.isArray(opt_attribs)) {&#xD;	      // If we have an errorCallback we can just return this object&#xD;	      // Otherwise we need to construct one with default errorCallback&#xD;	      if (opt_attribs.errorCallback) {&#xD;	        return opt_attribs;&#xD;	      }&#xD;	      var opt = opt_attribs;&#xD;	      opt_errorCallback = opt.errorCallback;&#xD;	      opt_attribs = opt.attribLocations;&#xD;	      var transformFeedbackVaryings = opt.transformFeedbackVaryings;&#xD;	    }&#xD;&#xD;	    var options = {&#xD;	      errorCallback: opt_errorCallback || error,&#xD;	      transformFeedbackVaryings: transformFeedbackVaryings&#xD;	    };&#xD;&#xD;	    if (opt_attribs) {&#xD;	      var attribLocations = {};&#xD;	      if (Array.isArray(opt_attribs)) {&#xD;	        opt_attribs.forEach(function (attrib, ndx) {&#xD;	          attribLocations[attrib] = opt_locations ? opt_locations[ndx] : ndx;&#xD;	        });&#xD;	      } else {&#xD;	        attribLocations = opt_attribs;&#xD;	      }&#xD;	      options.attribLocations = attribLocations;&#xD;	    }&#xD;&#xD;	    return options;&#xD;	  }&#xD;&#xD;	  var defaultShaderType = ["VERTEX_SHADER", "FRAGMENT_SHADER"];&#xD;&#xD;	  function getShaderTypeFromScriptType(scriptType) {&#xD;	    if (scriptType.indexOf("frag") &gt;= 0) {&#xD;	      return gl.FRAGMENT_SHADER;&#xD;	    } else if (scriptType.indexOf("vert") &gt;= 0) {&#xD;	      return gl.VERTEX_SHADER;&#xD;	    }&#xD;	    return undefined;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a program, attaches (and/or compiles) shaders, binds attrib locations, links the&#xD;	   * program and calls useProgram.&#xD;	   *&#xD;	   * NOTE: There are 4 signatures for this function&#xD;	   *&#xD;	   *     twgl.createProgram(gl, [vs, fs], options);&#xD;	   *     twgl.createProgram(gl, [vs, fs], opt_errFunc);&#xD;	   *     twgl.createProgram(gl, [vs, fs], opt_attribs, opt_errFunc);&#xD;	   *     twgl.createProgram(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);&#xD;	   *&#xD;	   * @param {WebGLShader[]|string[]} shaders The shaders to attach, or element ids for their source, or strings that contain their source&#xD;	   * @param {module:twgl.ProgramOptions|string[]} [opt_attribs] Options for the program or an array of attribs names. Locations will be assigned by index if not passed in&#xD;	   * @param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.&#xD;	   * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console&#xD;	   *        on error. If you want something else pass an callback. It&apos;s passed an error message.&#xD;	   * @return {WebGLProgram?} the created program or null if error.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createProgram(gl, shaders, opt_attribs, opt_locations, opt_errorCallback) {&#xD;	    var progOptions = getProgramOptions(opt_attribs, opt_locations, opt_errorCallback);&#xD;	    var program = gl.createProgram();&#xD;	    shaders.forEach(function (shader, ndx) {&#xD;	      if (typeof shader === &apos;string&apos;) {&#xD;	        var elem = document.getElementById(shader);&#xD;	        var src = elem ? elem.text : shader;&#xD;	        var type = defaultShaderType[ndx];&#xD;	        if (elem &amp;&amp; elem.type) {&#xD;	          type = getShaderTypeFromScriptType(elem.type);&#xD;	        }&#xD;	        shader = loadShader(gl, src, type, progOptions.errorCallback);&#xD;	      }&#xD;	      gl.attachShader(program, shader);&#xD;	    });&#xD;	    if (progOptions.attribLocations) {&#xD;	      Object.keys(progOptions.attribLocations).forEach(function (attrib) {&#xD;	        gl.bindAttribLocation(program, progOptions.attribLocations[attrib], attrib);&#xD;	      });&#xD;	    }&#xD;	    var varyings = progOptions.transformFeedbackVaryings;&#xD;	    if (varyings) {&#xD;	      if (varyings.attribs) {&#xD;	        varyings = varyings.attribs;&#xD;	      }&#xD;	      if (!Array.isArray(varyings)) {&#xD;	        varyings = Object.keys(varyings);&#xD;	      }&#xD;	      gl.transformFeedbackVaryings(program, varyings, progOptions.transformFeedbackMode || gl.SEPARATE_ATTRIBS);&#xD;	    }&#xD;	    gl.linkProgram(program);&#xD;&#xD;	    // Check the link status&#xD;	    var linked = gl.getProgramParameter(program, gl.LINK_STATUS);&#xD;	    if (!linked) {&#xD;	      // something went wrong with the link&#xD;	      var lastError = gl.getProgramInfoLog(program);&#xD;	      progOptions.errorCallback("Error in program linking:" + lastError);&#xD;&#xD;	      gl.deleteProgram(program);&#xD;	      return null;&#xD;	    }&#xD;	    return program;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Loads a shader from a script tag.&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {string} scriptId The id of the script tag.&#xD;	   * @param {number} [opt_shaderType] The type of shader. If not passed in it will&#xD;	   *     be derived from the type of the script tag.&#xD;	   * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors.&#xD;	   * @return {WebGLShader?} The created shader or null if error.&#xD;	   */&#xD;	  function createShaderFromScript(gl, scriptId, opt_shaderType, opt_errorCallback) {&#xD;	    var shaderSource = "";&#xD;	    var shaderScript = document.getElementById(scriptId);&#xD;	    if (!shaderScript) {&#xD;	      throw "*** Error: unknown script element" + scriptId;&#xD;	    }&#xD;	    shaderSource = shaderScript.text;&#xD;&#xD;	    var shaderType = opt_shaderType || getShaderTypeFromScriptType(shaderScript.type);&#xD;	    if (!shaderType) {&#xD;	      throw "*** Error: unknown shader type";&#xD;	    }&#xD;&#xD;	    return loadShader(gl, shaderSource, shaderType, opt_errorCallback);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a program from 2 script tags.&#xD;	   *&#xD;	   * NOTE: There are 4 signatures for this function&#xD;	   *&#xD;	   *     twgl.createProgramFromScripts(gl, [vs, fs], opt_options);&#xD;	   *     twgl.createProgramFromScripts(gl, [vs, fs], opt_errFunc);&#xD;	   *     twgl.createProgramFromScripts(gl, [vs, fs], opt_attribs, opt_errFunc);&#xD;	   *     twgl.createProgramFromScripts(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext&#xD;	   *        to use.&#xD;	   * @param {string[]} shaderScriptIds Array of ids of the script&#xD;	   *        tags for the shaders. The first is assumed to be the&#xD;	   *        vertex shader, the second the fragment shader.&#xD;	   * @param {string[]} [opt_attribs] An array of attribs names. Locations will be assigned by index if not passed in&#xD;	   * @param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.&#xD;	   * @param {module:twgl.ErrorCallback} opt_errorCallback callback for errors. By default it just prints an error to the console&#xD;	   *        on error. If you want something else pass an callback. It&apos;s passed an error message.&#xD;	   * @return {WebGLProgram} The created program.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createProgramFromScripts(gl, shaderScriptIds, opt_attribs, opt_locations, opt_errorCallback) {&#xD;	    var progOptions = getProgramOptions(opt_attribs, opt_locations, opt_errorCallback);&#xD;	    var shaders = [];&#xD;	    for (var ii = 0; ii &lt; shaderScriptIds.length; ++ii) {&#xD;	      var shader = createShaderFromScript(gl, shaderScriptIds[ii], gl[defaultShaderType[ii]], progOptions.errorCallback);&#xD;	      if (!shader) {&#xD;	        return null;&#xD;	      }&#xD;	      shaders.push(shader);&#xD;	    }&#xD;	    return createProgram(gl, shaders, progOptions);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a program from 2 sources.&#xD;	   *&#xD;	   * NOTE: There are 4 signatures for this function&#xD;	   *&#xD;	   *     twgl.createProgramFromSource(gl, [vs, fs], opt_options);&#xD;	   *     twgl.createProgramFromSource(gl, [vs, fs], opt_errFunc);&#xD;	   *     twgl.createProgramFromSource(gl, [vs, fs], opt_attribs, opt_errFunc);&#xD;	   *     twgl.createProgramFromSource(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext&#xD;	   *        to use.&#xD;	   * @param {string[]} shaderSources Array of sources for the&#xD;	   *        shaders. The first is assumed to be the vertex shader,&#xD;	   *        the second the fragment shader.&#xD;	   * @param {string[]} [opt_attribs] An array of attribs names. Locations will be assigned by index if not passed in&#xD;	   * @param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.&#xD;	   * @param {module:twgl.ErrorCallback} opt_errorCallback callback for errors. By default it just prints an error to the console&#xD;	   *        on error. If you want something else pass an callback. It&apos;s passed an error message.&#xD;	   * @return {WebGLProgram} The created program.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createProgramFromSources(gl, shaderSources, opt_attribs, opt_locations, opt_errorCallback) {&#xD;	    var progOptions = getProgramOptions(opt_attribs, opt_locations, opt_errorCallback);&#xD;	    var shaders = [];&#xD;	    for (var ii = 0; ii &lt; shaderSources.length; ++ii) {&#xD;	      var shader = loadShader(gl, shaderSources[ii], gl[defaultShaderType[ii]], progOptions.errorCallback);&#xD;	      if (!shader) {&#xD;	        return null;&#xD;	      }&#xD;	      shaders.push(shader);&#xD;	    }&#xD;	    return createProgram(gl, shaders, progOptions);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates setter functions for all uniforms of a shader&#xD;	   * program.&#xD;	   *&#xD;	   * @see {@link module:twgl.setUniforms}&#xD;	   *&#xD;	   * @param {WebGLProgram} program the program to create setters for.&#xD;	   * @returns {Object.&lt;string, function&gt;} an object with a setter by name for each uniform&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createUniformSetters(gl, program) {&#xD;	    var textureUnit = 0;&#xD;&#xD;	    /**&#xD;	     * Creates a setter for a uniform of the given program with it&apos;s&#xD;	     * location embedded in the setter.&#xD;	     * @param {WebGLProgram} program&#xD;	     * @param {WebGLUniformInfo} uniformInfo&#xD;	     * @returns {function} the created setter.&#xD;	     */&#xD;	    function createUniformSetter(program, uniformInfo) {&#xD;	      var location = gl.getUniformLocation(program, uniformInfo.name);&#xD;	      var isArray = uniformInfo.size &gt; 1 &amp;&amp; uniformInfo.name.substr(-3) === "[0]";&#xD;	      var type = uniformInfo.type;&#xD;	      var typeInfo = typeMap[type];&#xD;	      if (!typeInfo) {&#xD;	        throw "unknown type: 0x" + type.toString(16); // we should never get here.&#xD;	      }&#xD;	      if (typeInfo.bindPoint) {&#xD;	        // it&apos;s a sampler&#xD;	        var unit = textureUnit;&#xD;	        textureUnit += uniformInfo.size;&#xD;&#xD;	        if (isArray) {&#xD;	          return typeInfo.arraySetter(gl, type, unit, location, uniformInfo.size);&#xD;	        } else {&#xD;	          return typeInfo.setter(gl, type, unit, location, uniformInfo.size);&#xD;	        }&#xD;	      } else {&#xD;	        if (typeInfo.arraySetter &amp;&amp; isArray) {&#xD;	          return typeInfo.arraySetter(gl, location);&#xD;	        } else {&#xD;	          return typeInfo.setter(gl, location);&#xD;	        }&#xD;	      }&#xD;	    }&#xD;&#xD;	    var uniformSetters = {};&#xD;	    var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);&#xD;&#xD;	    for (var ii = 0; ii &lt; numUniforms; ++ii) {&#xD;	      var uniformInfo = gl.getActiveUniform(program, ii);&#xD;	      if (!uniformInfo) {&#xD;	        break;&#xD;	      }&#xD;	      var name = uniformInfo.name;&#xD;	      // remove the array suffix.&#xD;	      if (name.substr(-3) === "[0]") {&#xD;	        name = name.substr(0, name.length - 3);&#xD;	      }&#xD;	      var setter = createUniformSetter(program, uniformInfo);&#xD;	      uniformSetters[name] = setter;&#xD;	    }&#xD;	    return uniformSetters;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} TransformFeedbackInfo&#xD;	   * @property {number} index index of transform feedback&#xD;	   * @property {number} type GL type&#xD;	   * @property {number} size 1 - 4&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Create TransformFeedbackInfo for passing to bind/unbindTransformFeedbackInfo.&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {WebGLProgram} program an existing WebGLProgram.&#xD;	   * @return {Object&lt;string, module:twgl.TransformFeedbackInfo&gt;}&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function createTransformFeedbackInfo(gl, program) {&#xD;	    var info = {};&#xD;	    var numVaryings = gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS);&#xD;	    for (var ii = 0; ii &lt; numVaryings; ++ii) {&#xD;	      var varying = gl.getTransformFeedbackVarying(program, ii);&#xD;	      info[varying.name] = {&#xD;	        index: ii,&#xD;	        type: varying.type,&#xD;	        size: varying.size&#xD;	      };&#xD;	    }&#xD;	    return info;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Binds buffers for transform feedback.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {(module:twgl.ProgramInfo|Object&lt;string, module:twgl.TransformFeedbackInfo&gt;)} transformFeedbackInfo A ProgramInfo or TransformFeedbackInfo.&#xD;	   * @param {(module:twgl.BufferInfo|Object&lt;string, module:twgl.AttribInfo&gt;)} [bufferInfo] A BufferInfo or set of AttribInfos.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function bindTransformFeedbackInfo(gl, transformFeedbackInfo, bufferInfo) {&#xD;	    if (transformFeedbackInfo.transformFeedbackInfo) {&#xD;	      transformFeedbackInfo = transformFeedbackInfo.transformFeedbackInfo;&#xD;	    }&#xD;	    if (bufferInfo.attribs) {&#xD;	      bufferInfo = bufferInfo.attribs;&#xD;	    }&#xD;	    for (var name in bufferInfo) {&#xD;	      var varying = transformFeedbackInfo[name];&#xD;	      if (varying) {&#xD;	        var buf = bufferInfo[name];&#xD;	        if (buf.offset) {&#xD;	          gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, varying.index, buf.buffer, buf.offset, buf.size);&#xD;	        } else {&#xD;	          gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, varying.index, buf.buffer);&#xD;	        }&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Unbinds buffers afetr transform feedback.&#xD;	   *&#xD;	   * Buffers can not be bound to 2 bind points so if you try to bind a buffer used&#xD;	   * in a transform feedback as an ARRAY_BUFFER for an attribute it will fail.&#xD;	   *&#xD;	   * This function unbinds all buffers that were bound with {@link module:twgl.bindTransformFeedbackInfo}.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {(module:twgl.ProgramInfo|Object&lt;string, module:twgl.TransformFeedbackInfo&gt;)} transformFeedbackInfo A ProgramInfo or TransformFeedbackInfo.&#xD;	   * @param {(module:twgl.BufferInfo|Object&lt;string, module:twgl.AttribInfo&gt;)} [bufferInfo] A BufferInfo or set of AttribInfos.&#xD;	   */&#xD;	  function unbindTransformFeedbackInfo(gl, transformFeedbackInfo, bufferInfo) {&#xD;	    if (transformFeedbackInfo.transformFeedbackInfo) {&#xD;	      transformFeedbackInfo = transformFeedbackInfo.transformFeedbackInfo;&#xD;	    }&#xD;	    if (bufferInfo.attribs) {&#xD;	      bufferInfo = bufferInfo.attribs;&#xD;	    }&#xD;	    for (var name in bufferInfo) {&#xD;	      var varying = transformFeedbackInfo[name];&#xD;	      if (varying) {&#xD;	        gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, varying.index, null);&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a transform feedback and sets the buffers&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {module:twgl.ProgramInfo} programInfo A ProgramInfo as returned from {@link module:twgl.createProgramInfo}&#xD;	   * @param {(module:twgl.BufferInfo|Object&lt;string, module:twgl.AttribInfo&gt;)} [bufferInfo] A BufferInfo or set of AttribInfos.&#xD;	   * @return {WebGLTransformFeedback} the created transform feedback&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;	  function createTransformFeedback(gl, programInfo, bufferInfo) {&#xD;	    var tf = gl.createTransformFeedback();&#xD;	    gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, tf);&#xD;	    gl.useProgram(programInfo.program);&#xD;	    bindTransformFeedbackInfo(gl, programInfo, bufferInfo);&#xD;	    gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);&#xD;	    // This is only needed because of a bug in Chrome 56. Will remove&#xD;	    // when chrome fixes it.&#xD;	    unbindTransformFeedbackInfo(gl, programInfo, bufferInfo);&#xD;	    return tf;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} UniformData&#xD;	   * @property {number} type The WebGL type enum for this uniform&#xD;	   * @property {number} size The number of elements for this uniform&#xD;	   * @property {number} blockNdx The block index this uniform appears in&#xD;	   * @property {number} offset The byte offset in the block for this uniform&apos;s value&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * The specification for one UniformBlockObject&#xD;	   *&#xD;	   * @typedef {Object} BlockSpec&#xD;	   * @property {number} index The index of the block.&#xD;	   * @property {number} size The size in bytes needed for the block&#xD;	   * @property {number[]} uniformIndices The indices of the uniforms used by the block. These indices&#xD;	   *    correspond to entries in a UniformData array in the {@link module:twgl.UniformBlockSpec}.&#xD;	   * @property {bool} usedByVertexShader Self explanitory&#xD;	   * @property {bool} usedByFragmentShader Self explanitory&#xD;	   * @property {bool} used Self explanitory&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * A `UniformBlockSpec` represents the data needed to create and bind&#xD;	   * UniformBlockObjects for a given program&#xD;	   *&#xD;	   * @typedef {Object} UniformBlockSpec&#xD;	   * @property {Object.&lt;string, module:twgl.BlockSpec&gt; blockSpecs The BlockSpec for each block by block name&#xD;	   * @property {UniformData[]} uniformData An array of data for each uniform by uniform index.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a UniformBlockSpec for the given program.&#xD;	   *&#xD;	   * A UniformBlockSpec represents the data needed to create and bind&#xD;	   * UniformBlockObjects&#xD;	   *&#xD;	   * @param {WebGL2RenderingContext} gl A WebGL2 Rendering Context&#xD;	   * @param {WebGLProgram} program A WebGLProgram for a successfully linked program&#xD;	   * @return {module:twgl.UniformBlockSpec} The created UniformBlockSpec&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createUniformBlockSpecFromProgram(gl, program) {&#xD;	    var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);&#xD;	    var uniformData = [];&#xD;	    var uniformIndices = [];&#xD;&#xD;	    for (var ii = 0; ii &lt; numUniforms; ++ii) {&#xD;	      uniformIndices.push(ii);&#xD;	      uniformData.push({});&#xD;	      var uniformInfo = gl.getActiveUniform(program, ii);&#xD;	      if (!uniformInfo) {&#xD;	        break;&#xD;	      }&#xD;	      // REMOVE [0]?&#xD;	      uniformData[ii].name = uniformInfo.name;&#xD;	    }&#xD;&#xD;	    [["UNIFORM_TYPE", "type"], ["UNIFORM_SIZE", "size"], // num elements&#xD;	    ["UNIFORM_BLOCK_INDEX", "blockNdx"], ["UNIFORM_OFFSET", "offset"]].forEach(function (pair) {&#xD;	      var pname = pair[0];&#xD;	      var key = pair[1];&#xD;	      gl.getActiveUniforms(program, uniformIndices, gl[pname]).forEach(function (value, ndx) {&#xD;	        uniformData[ndx][key] = value;&#xD;	      });&#xD;	    });&#xD;&#xD;	    var blockSpecs = {};&#xD;&#xD;	    var numUniformBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);&#xD;	    for (ii = 0; ii &lt; numUniformBlocks; ++ii) {&#xD;	      var name = gl.getActiveUniformBlockName(program, ii);&#xD;	      var blockSpec = {&#xD;	        index: ii,&#xD;	        usedByVertexShader: gl.getActiveUniformBlockParameter(program, ii, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),&#xD;	        usedByFragmentShader: gl.getActiveUniformBlockParameter(program, ii, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),&#xD;	        size: gl.getActiveUniformBlockParameter(program, ii, gl.UNIFORM_BLOCK_DATA_SIZE),&#xD;	        uniformIndices: gl.getActiveUniformBlockParameter(program, ii, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES)&#xD;	      };&#xD;	      blockSpec.used = blockSpec.usedByVertexSahder || blockSpec.usedByFragmentShader;&#xD;	      blockSpecs[name] = blockSpec;&#xD;	    }&#xD;&#xD;	    return {&#xD;	      blockSpecs: blockSpecs,&#xD;	      uniformData: uniformData&#xD;	    };&#xD;	  }&#xD;&#xD;	  var arraySuffixRE = /\[\d+\]\.$/; // better way to check?&#xD;&#xD;	  /**&#xD;	   * Represents a UniformBlockObject including an ArrayBuffer with all the uniform values&#xD;	   * and a corresponding WebGLBuffer to hold those values on the GPU&#xD;	   *&#xD;	   * @typedef {Object} UniformBlockInfo&#xD;	   * @property {string} name The name of the block&#xD;	   * @property {ArrayBuffer} array The array buffer that contains the uniform values&#xD;	   * @property {Float32Array} asFloat A float view on the array buffer. This is useful&#xD;	   *    inspecting the contents of the buffer in the debugger.&#xD;	   * @property {WebGLBuffer} buffer A WebGL buffer that will hold a copy of the uniform values for rendering.&#xD;	   * @property {number} [offset] offset into buffer&#xD;	   * @property {Object.&lt;string, ArrayBufferView&gt;} uniforms A uniform name to ArrayBufferView map.&#xD;	   *   each Uniform has a correctly typed `ArrayBufferView` into array at the correct offset&#xD;	   *   and length of that uniform. So for example a float uniform would have a 1 float `Float32Array`&#xD;	   *   view. A single mat4 would have a 16 element `Float32Array` view. An ivec2 would have an&#xD;	   *   `Int32Array` view, etc.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a `UniformBlockInfo` for the specified block&#xD;	   *&#xD;	   * Note: **If the blockName matches no existing blocks a warning is printed to the console and a dummy&#xD;	   * `UniformBlockInfo` is returned**. This is because when debugging GLSL&#xD;	   * it is common to comment out large portions of a shader or for example set&#xD;	   * the final output to a constant. When that happens blocks get optimized out.&#xD;	   * If this function did not create dummy blocks your code would crash when debugging.&#xD;	   *&#xD;	   * @param {WebGL2RenderingContext} gl A WebGL2RenderingContext&#xD;	   * @param {WebGLProgram} program A WebGLProgram&#xD;	   * @param {module:twgl.UniformBlockSpec} uinformBlockSpec. A UniformBlockSpec as returned&#xD;	   *     from {@link module:twgl.createUniformBlockSpecFromProgram}.&#xD;	   * @param {string} blockName The name of the block.&#xD;	   * @return {module:twgl.UniformBlockInfo} The created UniformBlockInfo&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createUniformBlockInfoFromProgram(gl, program, uniformBlockSpec, blockName) {&#xD;	    var blockSpecs = uniformBlockSpec.blockSpecs;&#xD;	    var uniformData = uniformBlockSpec.uniformData;&#xD;	    var blockSpec = blockSpecs[blockName];&#xD;	    if (!blockSpec) {&#xD;	      warn("no uniform block object named:", blockName);&#xD;	      return {&#xD;	        name: blockName,&#xD;	        uniforms: {}&#xD;	      };&#xD;	    }&#xD;	    var array = new ArrayBuffer(blockSpec.size);&#xD;	    var buffer = gl.createBuffer();&#xD;	    var uniformBufferIndex = blockSpec.index;&#xD;	    gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);&#xD;	    gl.uniformBlockBinding(program, blockSpec.index, uniformBufferIndex);&#xD;&#xD;	    var prefix = blockName + ".";&#xD;	    if (arraySuffixRE.test(prefix)) {&#xD;	      prefix = prefix.replace(arraySuffixRE, ".");&#xD;	    }&#xD;	    var uniforms = {};&#xD;	    blockSpec.uniformIndices.forEach(function (uniformNdx) {&#xD;	      var data = uniformData[uniformNdx];&#xD;	      var typeInfo = typeMap[data.type];&#xD;	      var Type = typeInfo.Type;&#xD;	      var length = data.size * typeInfo.size;&#xD;	      var name = data.name;&#xD;	      if (name.substr(0, prefix.length) === prefix) {&#xD;	        name = name.substr(prefix.length);&#xD;	      }&#xD;	      uniforms[name] = new Type(array, data.offset, length / Type.BYTES_PER_ELEMENT);&#xD;	    });&#xD;	    return {&#xD;	      name: blockName,&#xD;	      array: array,&#xD;	      asFloat: new Float32Array(array), // for debugging&#xD;	      buffer: buffer,&#xD;	      uniforms: uniforms&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a `UniformBlockInfo` for the specified block&#xD;	   *&#xD;	   * Note: **If the blockName matches no existing blocks a warning is printed to the console and a dummy&#xD;	   * `UniformBlockInfo` is returned**. This is because when debugging GLSL&#xD;	   * it is common to comment out large portions of a shader or for example set&#xD;	   * the final output to a constant. When that happens blocks get optimized out.&#xD;	   * If this function did not create dummy blocks your code would crash when debugging.&#xD;	   *&#xD;	   * @param {WebGL2RenderingContext} gl A WebGL2RenderingContext&#xD;	   * @param {module:twgl.ProgramInfo} programInfo a `ProgramInfo`&#xD;	   *     as returned from {@link module:twgl.createProgramInfo}&#xD;	   * @param {string} blockName The name of the block.&#xD;	   * @return {module:twgl.UniformBlockInfo} The created UniformBlockInfo&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createUniformBlockInfo(gl, programInfo, blockName) {&#xD;	    return createUniformBlockInfoFromProgram(gl, programInfo.program, programInfo.uniformBlockSpec, blockName);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Binds a unform block to the matching uniform block point.&#xD;	   * Matches by blocks by name so blocks must have the same name not just the same&#xD;	   * structure.&#xD;	   *&#xD;	   * If you have changed any values and you upload the valus into the corresponding WebGLBuffer&#xD;	   * call {@link module:twgl.setUniformBlock} instead.&#xD;	   *&#xD;	   * @param {WebGL2RenderingContext} gl A WebGL 2 rendering context.&#xD;	   * @param {(module:twgl.ProgramInfo|module:twgl.UniformBlockSpec)} programInfo a `ProgramInfo`&#xD;	   *     as returned from {@link module:twgl.createProgramInfo} or or `UniformBlockSpec` as&#xD;	   *     returned from {@link module:twgl.createUniformBlockSpecFromProgram}.&#xD;	   * @param {module:twgl.UniformBlockInfo} uniformBlockInfo a `UniformBlockInfo` as returned from&#xD;	   *     {@link module:twgl.createUniformBlockInfo}.&#xD;	   * @return {bool} true if buffer was bound. If the programInfo has no block with the same block name&#xD;	   *     no buffer is bound.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function bindUniformBlock(gl, programInfo, uniformBlockInfo) {&#xD;	    var uniformBlockSpec = programInfo.uniformBlockSpec || programInfo;&#xD;	    var blockSpec = uniformBlockSpec.blockSpecs[uniformBlockInfo.name];&#xD;	    if (blockSpec) {&#xD;	      var bufferBindIndex = blockSpec.index;&#xD;	      gl.bindBufferRange(gl.UNIFORM_BUFFER, bufferBindIndex, uniformBlockInfo.buffer, uniformBlockInfo.offset || 0, uniformBlockInfo.array.byteLength);&#xD;	      return true;&#xD;	    }&#xD;	    return false;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Uploads the current uniform values to the corresponding WebGLBuffer&#xD;	   * and binds that buffer to the program&apos;s corresponding bind point for the uniform block object.&#xD;	   *&#xD;	   * If you haven&apos;t changed any values and you only need to bind the uniform block object&#xD;	   * call {@link module:twgl.bindUniformBlock} instead.&#xD;	   *&#xD;	   * @param {WebGL2RenderingContext} gl A WebGL 2 rendering context.&#xD;	   * @param {(module:twgl.ProgramInfo|module:twgl.UniformBlockSpec)} programInfo a `ProgramInfo`&#xD;	   *     as returned from {@link module:twgl.createProgramInfo} or or `UniformBlockSpec` as&#xD;	   *     returned from {@link module:twgl.createUniformBlockSpecFromProgram}.&#xD;	   * @param {module:twgl.UniformBlockInfo} uniformBlockInfo a `UniformBlockInfo` as returned from&#xD;	   *     {@link module:twgl.createUniformBlockInfo}.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function setUniformBlock(gl, programInfo, uniformBlockInfo) {&#xD;	    if (bindUniformBlock(gl, programInfo, uniformBlockInfo)) {&#xD;	      gl.bufferData(gl.UNIFORM_BUFFER, uniformBlockInfo.array, gl.DYNAMIC_DRAW);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets values of a uniform block object&#xD;	   *&#xD;	   * @param {module:twgl.UniformBlockInfo} uniformBlockInfo A UniformBlockInfo as returned by {@link module:twgl.createUniformBlockInfo}.&#xD;	   * @param {Object.&lt;string, ?&gt;} values A uniform name to value map where the value is correct for the given&#xD;	   *    type of uniform. So for example given a block like&#xD;	   *&#xD;	   *       uniform SomeBlock {&#xD;	   *         float someFloat;&#xD;	   *         vec2 someVec2;&#xD;	   *         vec3 someVec3Array[2];&#xD;	   *         int someInt;&#xD;	   *       }&#xD;	   *&#xD;	   *  You can set the values of the uniform block with&#xD;	   *&#xD;	   *       twgl.setBlockUniforms(someBlockInfo, {&#xD;	   *          someFloat: 12.3,&#xD;	   *          someVec2: [1, 2],&#xD;	   *          someVec3Array: [1, 2, 3, 4, 5, 6],&#xD;	   *          someInt: 5,&#xD;	   *       }&#xD;	   *&#xD;	   *  Arrays can be JavaScript arrays or typed arrays&#xD;	   *&#xD;	   *  Any name that doesn&apos;t match will be ignored&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function setBlockUniforms(uniformBlockInfo, values) {&#xD;	    var uniforms = uniformBlockInfo.uniforms;&#xD;	    for (var name in values) {&#xD;	      var array = uniforms[name];&#xD;	      if (array) {&#xD;	        var value = values[name];&#xD;	        if (value.length) {&#xD;	          array.set(value);&#xD;	        } else {&#xD;	          array[0] = value;&#xD;	        }&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Set uniforms and binds related textures.&#xD;	   *&#xD;	   * example:&#xD;	   *&#xD;	   *     var programInfo = createProgramInfo(&#xD;	   *         gl, ["some-vs", "some-fs"]);&#xD;	   *&#xD;	   *     var tex1 = gl.createTexture();&#xD;	   *     var tex2 = gl.createTexture();&#xD;	   *&#xD;	   *     ... assume we setup the textures with data ...&#xD;	   *&#xD;	   *     var uniforms = {&#xD;	   *       u_someSampler: tex1,&#xD;	   *       u_someOtherSampler: tex2,&#xD;	   *       u_someColor: [1,0,0,1],&#xD;	   *       u_somePosition: [0,1,1],&#xD;	   *       u_someMatrix: [&#xD;	   *         1,0,0,0,&#xD;	   *         0,1,0,0,&#xD;	   *         0,0,1,0,&#xD;	   *         0,0,0,0,&#xD;	   *       ],&#xD;	   *     };&#xD;	   *&#xD;	   *     gl.useProgram(program);&#xD;	   *&#xD;	   * This will automatically bind the textures AND set the&#xD;	   * uniforms.&#xD;	   *&#xD;	   *     twgl.setUniforms(programInfo, uniforms);&#xD;	   *&#xD;	   * For the example above it is equivalent to&#xD;	   *&#xD;	   *     var texUnit = 0;&#xD;	   *     gl.activeTexture(gl.TEXTURE0 + texUnit);&#xD;	   *     gl.bindTexture(gl.TEXTURE_2D, tex1);&#xD;	   *     gl.uniform1i(u_someSamplerLocation, texUnit++);&#xD;	   *     gl.activeTexture(gl.TEXTURE0 + texUnit);&#xD;	   *     gl.bindTexture(gl.TEXTURE_2D, tex2);&#xD;	   *     gl.uniform1i(u_someSamplerLocation, texUnit++);&#xD;	   *     gl.uniform4fv(u_someColorLocation, [1, 0, 0, 1]);&#xD;	   *     gl.uniform3fv(u_somePositionLocation, [0, 1, 1]);&#xD;	   *     gl.uniformMatrix4fv(u_someMatrix, false, [&#xD;	   *         1,0,0,0,&#xD;	   *         0,1,0,0,&#xD;	   *         0,0,1,0,&#xD;	   *         0,0,0,0,&#xD;	   *       ]);&#xD;	   *&#xD;	   * Note it is perfectly reasonable to call `setUniforms` multiple times. For example&#xD;	   *&#xD;	   *     var uniforms = {&#xD;	   *       u_someSampler: tex1,&#xD;	   *       u_someOtherSampler: tex2,&#xD;	   *     };&#xD;	   *&#xD;	   *     var moreUniforms {&#xD;	   *       u_someColor: [1,0,0,1],&#xD;	   *       u_somePosition: [0,1,1],&#xD;	   *       u_someMatrix: [&#xD;	   *         1,0,0,0,&#xD;	   *         0,1,0,0,&#xD;	   *         0,0,1,0,&#xD;	   *         0,0,0,0,&#xD;	   *       ],&#xD;	   *     };&#xD;	   *&#xD;	   *     twgl.setUniforms(programInfo, uniforms);&#xD;	   *     twgl.setUniforms(programInfo, moreUniforms);&#xD;	   *&#xD;	   * You can also add WebGLSamplers to uniform samplers as in&#xD;	   *&#xD;	   *     var uniforms = {&#xD;	   *       u_someSampler: {&#xD;	   *         texture: someWebGLTexture,&#xD;	   *         sampler: someWebGLSampler,&#xD;	   *       },&#xD;	   *     };&#xD;	   *&#xD;	   * In which case both the sampler and texture will be bound to the&#xD;	   * same unit.&#xD;	   *&#xD;	   * @param {(module:twgl.ProgramInfo|Object.&lt;string, function&gt;)} setters a `ProgramInfo` as returned from `createProgramInfo` or the setters returned from&#xD;	   *        `createUniformSetters`.&#xD;	   * @param {Object.&lt;string, ?&gt;} values an object with values for the&#xD;	   *        uniforms.&#xD;	   *   You can pass multiple objects by putting them in an array or by calling with more arguments.For example&#xD;	   *&#xD;	   *     var sharedUniforms = {&#xD;	   *       u_fogNear: 10,&#xD;	   *       u_projection: ...&#xD;	   *       ...&#xD;	   *     };&#xD;	   *&#xD;	   *     var localUniforms = {&#xD;	   *       u_world: ...&#xD;	   *       u_diffuseColor: ...&#xD;	   *     };&#xD;	   *&#xD;	   *     twgl.setUniforms(programInfo, sharedUniforms, localUniforms);&#xD;	   *&#xD;	   *     // is the same as&#xD;	   *&#xD;	   *     twgl.setUniforms(programInfo, [sharedUniforms, localUniforms]);&#xD;	   *&#xD;	   *     // is the same as&#xD;	   *&#xD;	   *     twgl.setUniforms(programInfo, sharedUniforms);&#xD;	   *     twgl.setUniforms(programInfo, localUniforms};&#xD;	   *&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function setUniforms(setters, values) {&#xD;	    // eslint-disable-line&#xD;	    var actualSetters = setters.uniformSetters || setters;&#xD;	    var numArgs = arguments.length;&#xD;	    for (var andx = 1; andx &lt; numArgs; ++andx) {&#xD;	      var vals = arguments[andx];&#xD;	      if (Array.isArray(vals)) {&#xD;	        var numValues = vals.length;&#xD;	        for (var ii = 0; ii &lt; numValues; ++ii) {&#xD;	          setUniforms(actualSetters, vals[ii]);&#xD;	        }&#xD;	      } else {&#xD;	        for (var name in vals) {&#xD;	          var setter = actualSetters[name];&#xD;	          if (setter) {&#xD;	            setter(vals[name]);&#xD;	          }&#xD;	        }&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates setter functions for all attributes of a shader&#xD;	   * program. You can pass this to {@link module:twgl.setBuffersAndAttributes} to set all your buffers and attributes.&#xD;	   *&#xD;	   * @see {@link module:twgl.setAttributes} for example&#xD;	   * @param {WebGLProgram} program the program to create setters for.&#xD;	   * @return {Object.&lt;string, function&gt;} an object with a setter for each attribute by name.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createAttributeSetters(gl, program) {&#xD;	    var attribSetters = {};&#xD;&#xD;	    var numAttribs = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);&#xD;	    for (var ii = 0; ii &lt; numAttribs; ++ii) {&#xD;	      var attribInfo = gl.getActiveAttrib(program, ii);&#xD;	      if (!attribInfo) {&#xD;	        break;&#xD;	      }&#xD;	      var index = gl.getAttribLocation(program, attribInfo.name);&#xD;	      var typeInfo = attrTypeMap[attribInfo.type];&#xD;	      attribSetters[attribInfo.name] = typeInfo.setter(gl, index, typeInfo);&#xD;	    }&#xD;&#xD;	    return attribSetters;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets attributes and binds buffers (deprecated... use {@link module:twgl.setBuffersAndAttributes})&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *     var program = createProgramFromScripts(&#xD;	   *         gl, ["some-vs", "some-fs");&#xD;	   *&#xD;	   *     var attribSetters = createAttributeSetters(program);&#xD;	   *&#xD;	   *     var positionBuffer = gl.createBuffer();&#xD;	   *     var texcoordBuffer = gl.createBuffer();&#xD;	   *&#xD;	   *     var attribs = {&#xD;	   *       a_position: {buffer: positionBuffer, numComponents: 3},&#xD;	   *       a_texcoord: {buffer: texcoordBuffer, numComponents: 2},&#xD;	   *     };&#xD;	   *&#xD;	   *     gl.useProgram(program);&#xD;	   *&#xD;	   * This will automatically bind the buffers AND set the&#xD;	   * attributes.&#xD;	   *&#xD;	   *     setAttributes(attribSetters, attribs);&#xD;	   *&#xD;	   * Properties of attribs. For each attrib you can add&#xD;	   * properties:&#xD;	   *&#xD;	   * *   type: the type of data in the buffer. Default = gl.FLOAT&#xD;	   * *   normalize: whether or not to normalize the data. Default = false&#xD;	   * *   stride: the stride. Default = 0&#xD;	   * *   offset: offset into the buffer. Default = 0&#xD;	   *&#xD;	   * For example if you had 3 value float positions, 2 value&#xD;	   * float texcoord and 4 value uint8 colors you&apos;d setup your&#xD;	   * attribs like this&#xD;	   *&#xD;	   *     var attribs = {&#xD;	   *       a_position: {buffer: positionBuffer, numComponents: 3},&#xD;	   *       a_texcoord: {buffer: texcoordBuffer, numComponents: 2},&#xD;	   *       a_color: {&#xD;	   *         buffer: colorBuffer,&#xD;	   *         numComponents: 4,&#xD;	   *         type: gl.UNSIGNED_BYTE,&#xD;	   *         normalize: true,&#xD;	   *       },&#xD;	   *     };&#xD;	   *&#xD;	   * @param {Object.&lt;string, function&gt;} setters Attribute setters as returned from createAttributeSetters&#xD;	   * @param {Object.&lt;string, module:twgl.AttribInfo&gt;} buffers AttribInfos mapped by attribute name.&#xD;	   * @memberOf module:twgl/programs&#xD;	   * @deprecated use {@link module:twgl.setBuffersAndAttributes}&#xD;	   */&#xD;	  function setAttributes(setters, buffers) {&#xD;	    for (var name in buffers) {&#xD;	      var setter = setters[name];&#xD;	      if (setter) {&#xD;	        setter(buffers[name]);&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets attributes and buffers including the `ELEMENT_ARRAY_BUFFER` if appropriate&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *     var programInfo = createProgramInfo(&#xD;	   *         gl, ["some-vs", "some-fs");&#xD;	   *&#xD;	   *     var arrays = {&#xD;	   *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },&#xD;	   *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },&#xD;	   *     };&#xD;	   *&#xD;	   *     var bufferInfo = createBufferInfoFromArrays(gl, arrays);&#xD;	   *&#xD;	   *     gl.useProgram(programInfo.program);&#xD;	   *&#xD;	   * This will automatically bind the buffers AND set the&#xD;	   * attributes.&#xD;	   *&#xD;	   *     setBuffersAndAttributes(gl, programInfo, bufferInfo);&#xD;	   *&#xD;	   * For the example above it is equivilent to&#xD;	   *&#xD;	   *     gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);&#xD;	   *     gl.enableVertexAttribArray(a_positionLocation);&#xD;	   *     gl.vertexAttribPointer(a_positionLocation, 3, gl.FLOAT, false, 0, 0);&#xD;	   *     gl.bindBuffer(gl.ARRAY_BUFFER, texcoordBuffer);&#xD;	   *     gl.enableVertexAttribArray(a_texcoordLocation);&#xD;	   *     gl.vertexAttribPointer(a_texcoordLocation, 4, gl.FLOAT, false, 0, 0);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext.&#xD;	   * @param {(module:twgl.ProgramInfo|Object.&lt;string, function&gt;)} setters A `ProgramInfo` as returned from {@link module:twgl.createProgrmaInfo} or Attribute setters as returned from {@link module:twgl.createAttributeSetters}&#xD;	   * @param {(module:twgl.BufferInfo|module:twgl.vertexArrayInfo)} buffers a `BufferInfo` as returned from {@link module:twgl.createBufferInfoFromArrays}.&#xD;	   *   or a `VertexArrayInfo` as returned from {@link module:twgl.createVertexArrayInfo}&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function setBuffersAndAttributes(gl, programInfo, buffers) {&#xD;	    if (buffers.vertexArrayObject) {&#xD;	      gl.bindVertexArray(buffers.vertexArrayObject);&#xD;	    } else {&#xD;	      setAttributes(programInfo.attribSetters || programInfo, buffers.attribs);&#xD;	      if (buffers.indices) {&#xD;	        gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffers.indices);&#xD;	      }&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} ProgramInfo&#xD;	   * @property {WebGLProgram} program A shader program&#xD;	   * @property {Object&lt;string, function&gt;} uniformSetters object of setters as returned from createUniformSetters,&#xD;	   * @property {Object&lt;string, function&gt;} attribSetters object of setters as returned from createAttribSetters,&#xD;	   * @propetty {module:twgl.UniformBlockSpec} [uniformBlockSpace] a uniform block spec for making UniformBlockInfos with createUniformBlockInfo etc..&#xD;	   * @property {Object&lt;string, module:twgl.TransformFeedbackInfo&gt;} [transformFeedbackInfo] info for transform feedbacks&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a ProgramInfo from an existing program.&#xD;	   *&#xD;	   * A ProgramInfo contains&#xD;	   *&#xD;	   *     programInfo = {&#xD;	   *        program: WebGLProgram,&#xD;	   *        uniformSetters: object of setters as returned from createUniformSetters,&#xD;	   *        attribSetters: object of setters as returned from createAttribSetters,&#xD;	   *     }&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext&#xD;	   *        to use.&#xD;	   * @param {WebGLProgram} program an existing WebGLProgram.&#xD;	   * @return {module:twgl.ProgramInfo} The created ProgramInfo.&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createProgramInfoFromProgram(gl, program) {&#xD;	    var uniformSetters = createUniformSetters(gl, program);&#xD;	    var attribSetters = createAttributeSetters(gl, program);&#xD;	    var programInfo = {&#xD;	      program: program,&#xD;	      uniformSetters: uniformSetters,&#xD;	      attribSetters: attribSetters&#xD;	    };&#xD;&#xD;	    if (utils.isWebGL2(gl)) {&#xD;	      programInfo.uniformBlockSpec = createUniformBlockSpecFromProgram(gl, program);&#xD;	      programInfo.transformFeedbackInfo = createTransformFeedbackInfo(gl, program);&#xD;	    }&#xD;&#xD;	    return programInfo;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a ProgramInfo from 2 sources.&#xD;	   *&#xD;	   * A ProgramInfo contains&#xD;	   *&#xD;	   *     programInfo = {&#xD;	   *        program: WebGLProgram,&#xD;	   *        uniformSetters: object of setters as returned from createUniformSetters,&#xD;	   *        attribSetters: object of setters as returned from createAttribSetters,&#xD;	   *     }&#xD;	   *&#xD;	   * NOTE: There are 4 signatures for this function&#xD;	   *&#xD;	   *     twgl.createProgramInfo(gl, [vs, fs], options);&#xD;	   *     twgl.createProgramInfo(gl, [vs, fs], opt_errFunc);&#xD;	   *     twgl.createProgramInfo(gl, [vs, fs], opt_attribs, opt_errFunc);&#xD;	   *     twgl.createProgramInfo(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext&#xD;	   *        to use.&#xD;	   * @param {string[]} shaderSources Array of sources for the&#xD;	   *        shaders or ids. The first is assumed to be the vertex shader,&#xD;	   *        the second the fragment shader.&#xD;	   * @param {module:twgl.ProgramOptions|string[]} [opt_attribs] Options for the program or an array of attribs names. Locations will be assigned by index if not passed in&#xD;	   * @param {number[]} [opt_locations] The locations for the attributes. A parallel array to opt_attribs letting you assign locations.&#xD;	   * @param {module:twgl.ErrorCallback} opt_errorCallback callback for errors. By default it just prints an error to the console&#xD;	   *        on error. If you want something else pass an callback. It&apos;s passed an error message.&#xD;	   * @return {module:twgl.ProgramInfo?} The created ProgramInfo or null if it failed to link or compile&#xD;	   * @memberOf module:twgl/programs&#xD;	   */&#xD;	  function createProgramInfo(gl, shaderSources, opt_attribs, opt_locations, opt_errorCallback) {&#xD;	    var progOptions = getProgramOptions(opt_attribs, opt_locations, opt_errorCallback);&#xD;	    var good = true;&#xD;	    shaderSources = shaderSources.map(function (source) {&#xD;	      // Lets assume if there is no \n it&apos;s an id&#xD;	      if (source.indexOf("\n") &lt; 0) {&#xD;	        var script = document.getElementById(source);&#xD;	        if (!script) {&#xD;	          progOptions.errorCallback("no element with id: " + source);&#xD;	          good = false;&#xD;	        } else {&#xD;	          source = script.text;&#xD;	        }&#xD;	      }&#xD;	      return source;&#xD;	    });&#xD;	    if (!good) {&#xD;	      return null;&#xD;	    }&#xD;	    var program = createProgramFromSources(gl, shaderSources, progOptions);&#xD;	    if (!program) {&#xD;	      return null;&#xD;	    }&#xD;	    return createProgramInfoFromProgram(gl, program);&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "createAttributeSetters": createAttributeSetters,&#xD;&#xD;	    "createProgram": createProgram,&#xD;	    "createProgramFromScripts": createProgramFromScripts,&#xD;	    "createProgramFromSources": createProgramFromSources,&#xD;	    "createProgramInfo": createProgramInfo,&#xD;	    "createProgramInfoFromProgram": createProgramInfoFromProgram,&#xD;	    "createUniformSetters": createUniformSetters,&#xD;	    "createUniformBlockSpecFromProgram": createUniformBlockSpecFromProgram,&#xD;	    "createUniformBlockInfoFromProgram": createUniformBlockInfoFromProgram,&#xD;	    "createUniformBlockInfo": createUniformBlockInfo,&#xD;&#xD;	    "createTransformFeedback": createTransformFeedback,&#xD;	    "createTransformFeedbackInfo": createTransformFeedbackInfo,&#xD;	    "bindTransformFeedbackInfo": bindTransformFeedbackInfo,&#xD;&#xD;	    "setAttributes": setAttributes,&#xD;	    "setBuffersAndAttributes": setBuffersAndAttributes,&#xD;	    "setUniforms": setUniforms,&#xD;	    "setUniformBlock": setUniformBlock,&#xD;	    "setBlockUniforms": setBlockUniforms,&#xD;	    "bindUniformBlock": bindUniformBlock&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 7 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(8), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (textures, utils) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Framebuffer related functions&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.framebuffer` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/framebuffers&#xD;	   */&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;&#xD;	  var gl = undefined; // eslint-disable-line&#xD;&#xD;	  var UNSIGNED_BYTE = 0x1401;&#xD;&#xD;	  /* PixelFormat */&#xD;	  var DEPTH_COMPONENT = 0x1902;&#xD;	  var RGBA = 0x1908;&#xD;&#xD;	  /* Framebuffer Object. */&#xD;	  var RGBA4 = 0x8056;&#xD;	  var RGB5_A1 = 0x8057;&#xD;	  var RGB565 = 0x8D62;&#xD;	  var DEPTH_COMPONENT16 = 0x81A5;&#xD;	  var STENCIL_INDEX = 0x1901;&#xD;	  var STENCIL_INDEX8 = 0x8D48;&#xD;	  var DEPTH_STENCIL = 0x84F9;&#xD;	  var COLOR_ATTACHMENT0 = 0x8CE0;&#xD;	  var DEPTH_ATTACHMENT = 0x8D00;&#xD;	  var STENCIL_ATTACHMENT = 0x8D20;&#xD;	  var DEPTH_STENCIL_ATTACHMENT = 0x821A;&#xD;&#xD;	  /* TextureWrapMode */&#xD;	  var REPEAT = 0x2901; // eslint-disable-line&#xD;	  var CLAMP_TO_EDGE = 0x812F;&#xD;	  var MIRRORED_REPEAT = 0x8370; // eslint-disable-line&#xD;&#xD;	  /* TextureMagFilter */&#xD;	  var NEAREST = 0x2600; // eslint-disable-line&#xD;	  var LINEAR = 0x2601;&#xD;&#xD;	  /* TextureMinFilter */&#xD;	  var NEAREST_MIPMAP_NEAREST = 0x2700; // eslint-disable-line&#xD;	  var LINEAR_MIPMAP_NEAREST = 0x2701; // eslint-disable-line&#xD;	  var NEAREST_MIPMAP_LINEAR = 0x2702; // eslint-disable-line&#xD;	  var LINEAR_MIPMAP_LINEAR = 0x2703; // eslint-disable-line&#xD;&#xD;	  /**&#xD;	   * The options for a framebuffer attachment.&#xD;	   *&#xD;	   * Note: For a `format` that is a texture include all the texture&#xD;	   * options from {@link module:twgl.TextureOptions} for example&#xD;	   * `min`, `mag`, `clamp`, etc... Note that unlike {@link module:twgl.TextureOptions}&#xD;	   * `auto` defaults to `false` for attachment textures but `min` and `mag` default&#xD;	   * to `gl.LINEAR` and `wrap` defaults to `CLAMP_TO_EDGE`&#xD;	   *&#xD;	   * @typedef {Object} AttachmentOptions&#xD;	   * @property {number} [attach] The attachment point. Defaults&#xD;	   *   to `gl.COLOR_ATTACTMENT0 + ndx` unless type is a depth or stencil type&#xD;	   *   then it&apos;s gl.DEPTH_ATTACHMENT or `gl.DEPTH_STENCIL_ATTACHMENT` depending&#xD;	   *   on the format or attachment type.&#xD;	   * @property {number} [format] The format. If one of `gl.RGBA4`,&#xD;	   *   `gl.RGB565`, `gl.RGB5_A1`, `gl.DEPTH_COMPONENT16`,&#xD;	   *   `gl.STENCIL_INDEX8` or `gl.DEPTH_STENCIL` then will create a&#xD;	   *   renderbuffer. Otherwise will create a texture. Default = `gl.RGBA`&#xD;	   * @property {number} [type] The type. Used for texture. Default = `gl.UNSIGNED_BYTE`.&#xD;	   * @property {number} [target] The texture target for `gl.framebufferTexture2D`.&#xD;	   *   Defaults to `gl.TEXTURE_2D`. Set to appropriate face for cube maps.&#xD;	   * @property {number} [level] level for `gl.framebufferTexture2D`. Defaults to 0.&#xD;	   * @property {WebGLObject} [attachment] An existing renderbuffer or texture.&#xD;	   *    If provided will attach this Object. This allows you to share&#xD;	   *    attachemnts across framebuffers.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  var defaultAttachments = [{ format: RGBA, type: UNSIGNED_BYTE, min: LINEAR, wrap: CLAMP_TO_EDGE }, { format: DEPTH_STENCIL }];&#xD;&#xD;	  var attachmentsByFormat = {};&#xD;	  attachmentsByFormat[DEPTH_STENCIL] = DEPTH_STENCIL_ATTACHMENT;&#xD;	  attachmentsByFormat[STENCIL_INDEX] = STENCIL_ATTACHMENT;&#xD;	  attachmentsByFormat[STENCIL_INDEX8] = STENCIL_ATTACHMENT;&#xD;	  attachmentsByFormat[DEPTH_COMPONENT] = DEPTH_ATTACHMENT;&#xD;	  attachmentsByFormat[DEPTH_COMPONENT16] = DEPTH_ATTACHMENT;&#xD;&#xD;	  function getAttachmentPointForFormat(format) {&#xD;	    return attachmentsByFormat[format];&#xD;	  }&#xD;&#xD;	  var renderbufferFormats = {};&#xD;	  renderbufferFormats[RGBA4] = true;&#xD;	  renderbufferFormats[RGB5_A1] = true;&#xD;	  renderbufferFormats[RGB565] = true;&#xD;	  renderbufferFormats[DEPTH_STENCIL] = true;&#xD;	  renderbufferFormats[DEPTH_COMPONENT16] = true;&#xD;	  renderbufferFormats[STENCIL_INDEX] = true;&#xD;	  renderbufferFormats[STENCIL_INDEX8] = true;&#xD;&#xD;	  function isRenderbufferFormat(format) {&#xD;	    return renderbufferFormats[format];&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} FramebufferInfo&#xD;	   * @property {WebGLFramebuffer} framebuffer The WebGLFramebuffer for this framebufferInfo&#xD;	   * @property {WebGLObject[]} attachments The created attachments in the same order as passed in to {@link module:twgl.createFramebufferInfo}.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a framebuffer and attachments.&#xD;	   *&#xD;	   * This returns a {@link module:twgl.FramebufferInfo} because it needs to return the attachments as well as the framebuffer.&#xD;	   *&#xD;	   * The simplest usage&#xD;	   *&#xD;	   *     // create an RGBA/UNSIGNED_BYTE texture and DEPTH_STENCIL renderbuffer&#xD;	   *     var fbi = twgl.createFramebufferInfo(gl);&#xD;	   *&#xD;	   * More complex usage&#xD;	   *&#xD;	   *     // create an RGB565 renderbuffer and a STENCIL_INDEX8 renderbuffer&#xD;	   *     var attachments = [&#xD;	   *       { format: RGB565, mag: NEAREST },&#xD;	   *       { format: STENCIL_INDEX8 },&#xD;	   *     ]&#xD;	   *     var fbi = twgl.createFramebufferInfo(gl, attachments);&#xD;	   *&#xD;	   * Passing in a specific size&#xD;	   *&#xD;	   *     var width = 256;&#xD;	   *     var height = 256;&#xD;	   *     var fbi = twgl.createFramebufferInfo(gl, attachments, width, height);&#xD;	   *&#xD;	   * **Note!!** It is up to you to check if the framebuffer is renderable by calling `gl.checkFramebufferStatus`.&#xD;	   * [WebGL only guarantees 3 combinations of attachments work](https://www.khronos.org/registry/webgl/specs/latest/1.0/#6.6).&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.AttachmentOptions[]} [attachments] which attachments to create. If not provided the default is a framebuffer with an&#xD;	   *    `RGBA`, `UNSIGNED_BYTE` texture `COLOR_ATTACHMENT0` and a `DEPTH_STENCIL` renderbuffer `DEPTH_STENCIL_ATTACHMENT`.&#xD;	   * @param {number} [width] the width for the attachments. Default = size of drawingBuffer&#xD;	   * @param {number} [height] the height for the attachments. Defautt = size of drawingBuffer&#xD;	   * @return {module:twgl.FramebufferInfo} the framebuffer and attachments.&#xD;	   * @memberOf module:twgl/framebuffers&#xD;	   */&#xD;	  function createFramebufferInfo(gl, attachments, width, height) {&#xD;	    var target = gl.FRAMEBUFFER;&#xD;	    var fb = gl.createFramebuffer();&#xD;	    gl.bindFramebuffer(target, fb);&#xD;	    width = width || gl.drawingBufferWidth;&#xD;	    height = height || gl.drawingBufferHeight;&#xD;	    attachments = attachments || defaultAttachments;&#xD;	    var colorAttachmentCount = 0;&#xD;	    var framebufferInfo = {&#xD;	      framebuffer: fb,&#xD;	      attachments: [],&#xD;	      width: width,&#xD;	      height: height&#xD;	    };&#xD;	    attachments.forEach(function (attachmentOptions) {&#xD;	      var attachment = attachmentOptions.attachment;&#xD;	      var format = attachmentOptions.format;&#xD;	      var attachmentPoint = getAttachmentPointForFormat(format);&#xD;	      if (!attachmentPoint) {&#xD;	        attachmentPoint = COLOR_ATTACHMENT0 + colorAttachmentCount++;&#xD;	      }&#xD;	      if (!attachment) {&#xD;	        if (isRenderbufferFormat(format)) {&#xD;	          attachment = gl.createRenderbuffer();&#xD;	          gl.bindRenderbuffer(gl.RENDERBUFFER, attachment);&#xD;	          gl.renderbufferStorage(gl.RENDERBUFFER, format, width, height);&#xD;	        } else {&#xD;	          var textureOptions = utils.shallowCopy(attachmentOptions);&#xD;	          textureOptions.width = width;&#xD;	          textureOptions.height = height;&#xD;	          if (textureOptions.auto === undefined) {&#xD;	            textureOptions.auto = false;&#xD;	            textureOptions.min = textureOptions.min || gl.LINEAR;&#xD;	            textureOptions.mag = textureOptions.mag || gl.LINEAR;&#xD;	            textureOptions.wrapS = textureOptions.wrapS || textureOptions.wrap || gl.CLAMP_TO_EDGE;&#xD;	            textureOptions.wrapT = textureOptions.wrapT || textureOptions.wrap || gl.CLAMP_TO_EDGE;&#xD;	          }&#xD;	          attachment = textures.createTexture(gl, textureOptions);&#xD;	        }&#xD;	      }&#xD;	      if (attachment instanceof WebGLRenderbuffer) {&#xD;	        gl.framebufferRenderbuffer(target, attachmentPoint, gl.RENDERBUFFER, attachment);&#xD;	      } else if (attachment instanceof WebGLTexture) {&#xD;	        gl.framebufferTexture2D(target, attachmentPoint, attachmentOptions.texTarget || gl.TEXTURE_2D, attachment, attachmentOptions.level || 0);&#xD;	      } else {&#xD;	        throw "unknown attachment type";&#xD;	      }&#xD;	      framebufferInfo.attachments.push(attachment);&#xD;	    });&#xD;	    return framebufferInfo;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Resizes the attachments of a framebuffer.&#xD;	   *&#xD;	   * You need to pass in the same `attachments` as you passed in {@link module:twgl.createFramebufferInfo}&#xD;	   * because TWGL has no idea the format/type of each attachment.&#xD;	   *&#xD;	   * The simplest usage&#xD;	   *&#xD;	   *     // create an RGBA/UNSIGNED_BYTE texture and DEPTH_STENCIL renderbuffer&#xD;	   *     var fbi = twgl.createFramebufferInfo(gl);&#xD;	   *&#xD;	   *     ...&#xD;	   *&#xD;	   *     function render() {&#xD;	   *       if (twgl.resizeCanvasToDisplaySize(gl.canvas)) {&#xD;	   *         // resize the attachments&#xD;	   *         twgl.resizeFramebufferInfo(gl, fbi);&#xD;	   *       }&#xD;	   *&#xD;	   * More complex usage&#xD;	   *&#xD;	   *     // create an RGB565 renderbuffer and a STENCIL_INDEX8 renderbuffer&#xD;	   *     var attachments = [&#xD;	   *       { format: RGB565, mag: NEAREST },&#xD;	   *       { format: STENCIL_INDEX8 },&#xD;	   *     ]&#xD;	   *     var fbi = twgl.createFramebufferInfo(gl, attachments);&#xD;	   *&#xD;	   *     ...&#xD;	   *&#xD;	   *     function render() {&#xD;	   *       if (twgl.resizeCanvasToDisplaySize(gl.canvas)) {&#xD;	   *         // resize the attachments to match&#xD;	   *         twgl.resizeFramebufferInfo(gl, fbi, attachments);&#xD;	   *       }&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.FramebufferInfo} framebufferInfo a framebufferInfo as returned from {@link module:twgl.createFramebufferInfo}.&#xD;	   * @param {module:twgl.AttachmentOptions[]} [attachments] the same attachments options as passed to {@link module:twgl.createFramebufferInfo}.&#xD;	   * @param {number} [width] the width for the attachments. Default = size of drawingBuffer&#xD;	   * @param {number} [height] the height for the attachments. Defautt = size of drawingBuffer&#xD;	   * @memberOf module:twgl/framebuffers&#xD;	   */&#xD;	  function resizeFramebufferInfo(gl, framebufferInfo, attachments, width, height) {&#xD;	    width = width || gl.drawingBufferWidth;&#xD;	    height = height || gl.drawingBufferHeight;&#xD;	    framebufferInfo.width = width;&#xD;	    framebufferInfo.height = height;&#xD;	    attachments = attachments || defaultAttachments;&#xD;	    attachments.forEach(function (attachmentOptions, ndx) {&#xD;	      var attachment = framebufferInfo.attachments[ndx];&#xD;	      var format = attachmentOptions.format;&#xD;	      if (attachment instanceof WebGLRenderbuffer) {&#xD;	        gl.bindRenderbuffer(gl.RENDERBUFFER, attachment);&#xD;	        gl.renderbufferStorage(gl.RENDERBUFFER, format, width, height);&#xD;	      } else if (attachment instanceof WebGLTexture) {&#xD;	        textures.resizeTexture(gl, attachment, attachmentOptions, width, height);&#xD;	      } else {&#xD;	        throw "unknown attachment type";&#xD;	      }&#xD;	    });&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Binds a framebuffer&#xD;	   *&#xD;	   * This function pretty much soley exists because I spent hours&#xD;	   * trying to figure out why something I wrote wasn&apos;t working only&#xD;	   * to realize I forget to set the viewport dimensions.&#xD;	   * My hope is this function will fix that.&#xD;	   *&#xD;	   * It is effectively the same as&#xD;	   *&#xD;	   *     gl.bindFramebuffer(gl.FRAMEBUFFER, someFramebufferInfo.framebuffer);&#xD;	   *     gl.viewport(0, 0, someFramebufferInfo.width, someFramebufferInfo.height);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.FramebufferInfo} [framebufferInfo] a framebufferInfo as returned from {@link module:twgl.createFramebufferInfo}.&#xD;	   *   If not passed will bind the canvas.&#xD;	   * @param {number} [target] The target. If not passed `gl.FRAMEBUFFER` will be used.&#xD;	   * @memberOf module:twgl/framebuffers&#xD;	   */&#xD;&#xD;	  function bindFramebufferInfo(gl, framebufferInfo, target) {&#xD;	    target = target || gl.FRAMEBUFFER;&#xD;	    if (framebufferInfo) {&#xD;	      gl.bindFramebuffer(target, framebufferInfo.framebuffer);&#xD;	      gl.viewport(0, 0, framebufferInfo.width, framebufferInfo.height);&#xD;	    } else {&#xD;	      gl.bindFramebuffer(target, null);&#xD;	      gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);&#xD;	    }&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "bindFramebufferInfo": bindFramebufferInfo,&#xD;	    "createFramebufferInfo": createFramebufferInfo,&#xD;	    "resizeFramebufferInfo": resizeFramebufferInfo&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 8 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3), __webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function (typedArrays, utils) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * Low level texture related functions&#xD;	   *&#xD;	   * You should generally not need to use these functions. They are provided&#xD;	   * for those cases where you&apos;re doing something out of the ordinary&#xD;	   * and you need lower level access.&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.textures` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/textures&#xD;	   */&#xD;&#xD;	  // make sure we don&apos;t see a global gl&#xD;&#xD;	  var gl = undefined; // eslint-disable-line&#xD;	  var defaults = {&#xD;	    textureColor: new Uint8Array([128, 192, 255, 255]),&#xD;	    textureOptions: {},&#xD;	    crossOrigin: undefined&#xD;	  };&#xD;	  var isArrayBuffer = typedArrays.isArrayBuffer;&#xD;&#xD;	  // Should we make this on demand?&#xD;	  var ctx = document.createElement("canvas").getContext("2d");&#xD;&#xD;	  /* PixelFormat */&#xD;	  var ALPHA = 0x1906;&#xD;	  var RGB = 0x1907;&#xD;	  var RGBA = 0x1908;&#xD;	  var LUMINANCE = 0x1909;&#xD;	  var LUMINANCE_ALPHA = 0x190A;&#xD;	  var DEPTH_COMPONENT = 0x1902;&#xD;	  var DEPTH_STENCIL = 0x84F9;&#xD;&#xD;	  /* TextureWrapMode */&#xD;	  var REPEAT = 0x2901; // eslint-disable-line&#xD;	  var MIRRORED_REPEAT = 0x8370; // eslint-disable-line&#xD;&#xD;	  /* TextureMagFilter */&#xD;	  var NEAREST = 0x2600; // eslint-disable-line&#xD;&#xD;	  /* TextureMinFilter */&#xD;	  var NEAREST_MIPMAP_NEAREST = 0x2700; // eslint-disable-line&#xD;	  var LINEAR_MIPMAP_NEAREST = 0x2701; // eslint-disable-line&#xD;	  var NEAREST_MIPMAP_LINEAR = 0x2702; // eslint-disable-line&#xD;	  var LINEAR_MIPMAP_LINEAR = 0x2703; // eslint-disable-line&#xD;&#xD;	  var R8 = 0x8229;&#xD;	  var R8_SNORM = 0x8F94;&#xD;	  var R16F = 0x822D;&#xD;	  var R32F = 0x822E;&#xD;	  var R8UI = 0x8232;&#xD;	  var R8I = 0x8231;&#xD;	  var RG16UI = 0x823A;&#xD;	  var RG16I = 0x8239;&#xD;	  var RG32UI = 0x823C;&#xD;	  var RG32I = 0x823B;&#xD;	  var RG8 = 0x822B;&#xD;	  var RG8_SNORM = 0x8F95;&#xD;	  var RG16F = 0x822F;&#xD;	  var RG32F = 0x8230;&#xD;	  var RG8UI = 0x8238;&#xD;	  var RG8I = 0x8237;&#xD;	  var R16UI = 0x8234;&#xD;	  var R16I = 0x8233;&#xD;	  var R32UI = 0x8236;&#xD;	  var R32I = 0x8235;&#xD;	  var RGB8 = 0x8051;&#xD;	  var SRGB8 = 0x8C41;&#xD;	  var RGB565 = 0x8D62;&#xD;	  var RGB8_SNORM = 0x8F96;&#xD;	  var R11F_G11F_B10F = 0x8C3A;&#xD;	  var RGB9_E5 = 0x8C3D;&#xD;	  var RGB16F = 0x881B;&#xD;	  var RGB32F = 0x8815;&#xD;	  var RGB8UI = 0x8D7D;&#xD;	  var RGB8I = 0x8D8F;&#xD;	  var RGB16UI = 0x8D77;&#xD;	  var RGB16I = 0x8D89;&#xD;	  var RGB32UI = 0x8D71;&#xD;	  var RGB32I = 0x8D83;&#xD;	  var RGBA8 = 0x8058;&#xD;	  var SRGB8_ALPHA8 = 0x8C43;&#xD;	  var RGBA8_SNORM = 0x8F97;&#xD;	  var RGB5_A1 = 0x8057;&#xD;	  var RGBA4 = 0x8056;&#xD;	  var RGB10_A2 = 0x8059;&#xD;	  var RGBA16F = 0x881A;&#xD;	  var RGBA32F = 0x8814;&#xD;	  var RGBA8UI = 0x8D7C;&#xD;	  var RGBA8I = 0x8D8E;&#xD;	  var RGB10_A2UI = 0x906F;&#xD;	  var RGBA16UI = 0x8D76;&#xD;	  var RGBA16I = 0x8D88;&#xD;	  var RGBA32I = 0x8D82;&#xD;	  var RGBA32UI = 0x8D70;&#xD;&#xD;	  var DEPTH_COMPONENT16 = 0x81A5;&#xD;	  var DEPTH_COMPONENT24 = 0x81A6;&#xD;	  var DEPTH_COMPONENT32F = 0x8CAC;&#xD;	  var DEPTH32F_STENCIL8 = 0x8CAD;&#xD;	  var DEPTH24_STENCIL8 = 0x88F0;&#xD;&#xD;	  /* DataType */&#xD;	  var BYTE = 0x1400;&#xD;	  var UNSIGNED_BYTE = 0x1401;&#xD;	  var SHORT = 0x1402;&#xD;	  var UNSIGNED_SHORT = 0x1403;&#xD;	  var INT = 0x1404;&#xD;	  var UNSIGNED_INT = 0x1405;&#xD;	  var FLOAT = 0x1406;&#xD;	  var UNSIGNED_SHORT_4_4_4_4 = 0x8033;&#xD;	  var UNSIGNED_SHORT_5_5_5_1 = 0x8034;&#xD;	  var UNSIGNED_SHORT_5_6_5 = 0x8363;&#xD;	  var HALF_FLOAT = 0x140B;&#xD;	  var HALF_FLOAT_OES = 0x8D61; // Thanks Khronos for making this different &gt;:(&#xD;	  var UNSIGNED_INT_2_10_10_10_REV = 0x8368;&#xD;	  var UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B;&#xD;	  var UNSIGNED_INT_5_9_9_9_REV = 0x8C3E;&#xD;	  var FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD;&#xD;	  var UNSIGNED_INT_24_8 = 0x84FA;&#xD;&#xD;	  var RG = 0x8227;&#xD;	  var RG_INTEGER = 0x8228;&#xD;	  var RED = 0x1903;&#xD;	  var RED_INTEGER = 0x8D94;&#xD;	  var RGB_INTEGER = 0x8D98;&#xD;	  var RGBA_INTEGER = 0x8D99;&#xD;&#xD;	  var formatInfo = {};&#xD;	  {&#xD;	    // NOTE: this is named `numColorComponents` vs `numComponents` so we can let Uglify mangle&#xD;	    // the name.&#xD;	    var f = formatInfo;&#xD;	    f[ALPHA] = { numColorComponents: 1 };&#xD;	    f[LUMINANCE] = { numColorComponents: 1 };&#xD;	    f[LUMINANCE_ALPHA] = { numColorComponents: 2 };&#xD;	    f[RGB] = { numColorComponents: 3 };&#xD;	    f[RGBA] = { numColorComponents: 4 };&#xD;	    f[RED] = { numColorComponents: 1 };&#xD;	    f[RED_INTEGER] = { numColorComponents: 1 };&#xD;	    f[RG] = { numColorComponents: 2 };&#xD;	    f[RG_INTEGER] = { numColorComponents: 2 };&#xD;	    f[RGB] = { numColorComponents: 3 };&#xD;	    f[RGB_INTEGER] = { numColorComponents: 3 };&#xD;	    f[RGBA] = { numColorComponents: 4 };&#xD;	    f[RGBA_INTEGER] = { numColorComponents: 4 };&#xD;	    f[DEPTH_COMPONENT] = { numColorComponents: 1 };&#xD;	    f[DEPTH_STENCIL] = { numColorComponents: 2 };&#xD;	  }&#xD;&#xD;	  var textureInternalFormatInfo = {};&#xD;	  {&#xD;	    (function () {&#xD;	      // NOTE: these properties need unique names so we can let Uglify mangle the name.&#xD;	      var t = textureInternalFormatInfo;&#xD;	      // unsized formats&#xD;	      t[ALPHA] = { textureFormat: ALPHA, colorRenderable: true, textureFilterable: true, bytesPerElement: [1, 2, 2, 4], type: [UNSIGNED_BYTE, HALF_FLOAT, HALF_FLOAT_OES, FLOAT] };&#xD;	      t[LUMINANCE] = { textureFormat: LUMINANCE, colorRenderable: true, textureFilterable: true, bytesPerElement: [1, 2, 2, 4], type: [UNSIGNED_BYTE, HALF_FLOAT, HALF_FLOAT_OES, FLOAT] };&#xD;	      t[LUMINANCE_ALPHA] = { textureFormat: LUMINANCE_ALPHA, colorRenderable: true, textureFilterable: true, bytesPerElement: [2, 4, 4, 8], type: [UNSIGNED_BYTE, HALF_FLOAT, HALF_FLOAT_OES, FLOAT] };&#xD;	      t[RGB] = { textureFormat: RGB, colorRenderable: true, textureFilterable: true, bytesPerElement: [3, 6, 6, 12, 2], type: [UNSIGNED_BYTE, HALF_FLOAT, HALF_FLOAT_OES, FLOAT, UNSIGNED_SHORT_5_6_5] };&#xD;	      t[RGBA] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: [4, 8, 8, 16, 2, 2], type: [UNSIGNED_BYTE, HALF_FLOAT, HALF_FLOAT_OES, FLOAT, UNSIGNED_SHORT_4_4_4_4, UNSIGNED_SHORT_5_5_5_1] };&#xD;&#xD;	      // sized formats&#xD;	      t[R8] = { textureFormat: RED, colorRenderable: true, textureFilterable: true, bytesPerElement: 1, type: UNSIGNED_BYTE };&#xD;	      t[R8_SNORM] = { textureFormat: RED, colorRenderable: false, textureFilterable: true, bytesPerElement: 1, type: BYTE };&#xD;	      t[R16F] = { textureFormat: RED, colorRenderable: false, textureFilterable: true, bytesPerElement: [4, 2], type: [FLOAT, HALF_FLOAT] };&#xD;	      t[R32F] = { textureFormat: RED, colorRenderable: false, textureFilterable: false, bytesPerElement: 4, type: FLOAT };&#xD;	      t[R8UI] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 1, type: UNSIGNED_BYTE };&#xD;	      t[R8I] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 1, type: BYTE };&#xD;	      t[R16UI] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 2, type: UNSIGNED_SHORT };&#xD;	      t[R16I] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 2, type: SHORT };&#xD;	      t[R32UI] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_INT };&#xD;	      t[R32I] = { textureFormat: RED_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: INT };&#xD;	      t[RG8] = { textureFormat: RG, colorRenderable: true, textureFilterable: true, bytesPerElement: 2, type: UNSIGNED_BYTE };&#xD;	      t[RG8_SNORM] = { textureFormat: RG, colorRenderable: false, textureFilterable: true, bytesPerElement: 2, type: BYTE };&#xD;	      t[RG16F] = { textureFormat: RG, colorRenderable: false, textureFilterable: true, bytesPerElement: [8, 4], type: [FLOAT, HALF_FLOAT] };&#xD;	      t[RG32F] = { textureFormat: RG, colorRenderable: false, textureFilterable: false, bytesPerElement: 8, type: FLOAT };&#xD;	      t[RG8UI] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 2, type: UNSIGNED_BYTE };&#xD;	      t[RG8I] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 2, type: BYTE };&#xD;	      t[RG16UI] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_SHORT };&#xD;	      t[RG16I] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: SHORT };&#xD;	      t[RG32UI] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 8, type: UNSIGNED_INT };&#xD;	      t[RG32I] = { textureFormat: RG_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 8, type: INT };&#xD;	      t[RGB8] = { textureFormat: RGB, colorRenderable: true, textureFilterable: true, bytesPerElement: 3, type: UNSIGNED_BYTE };&#xD;	      t[SRGB8] = { textureFormat: RGB, colorRenderable: false, textureFilterable: true, bytesPerElement: 3, type: UNSIGNED_BYTE };&#xD;	      t[RGB565] = { textureFormat: RGB, colorRenderable: true, textureFilterable: true, bytesPerElement: [3, 2], type: [UNSIGNED_BYTE, UNSIGNED_SHORT_5_6_5] };&#xD;	      t[RGB8_SNORM] = { textureFormat: RGB, colorRenderable: false, textureFilterable: true, bytesPerElement: 3, type: BYTE };&#xD;	      t[R11F_G11F_B10F] = { textureFormat: RGB, colorRenderable: false, textureFilterable: true, bytesPerElement: [12, 6, 4], type: [FLOAT, HALF_FLOAT, UNSIGNED_INT_10F_11F_11F_REV] };&#xD;	      t[RGB9_E5] = { textureFormat: RGB, colorRenderable: false, textureFilterable: true, bytesPerElement: [12, 6, 4], type: [FLOAT, HALF_FLOAT, UNSIGNED_INT_5_9_9_9_REV] };&#xD;	      t[RGB16F] = { textureFormat: RGB, colorRenderable: false, textureFilterable: true, bytesPerElement: [12, 6], type: [FLOAT, HALF_FLOAT] };&#xD;	      t[RGB32F] = { textureFormat: RGB, colorRenderable: false, textureFilterable: false, bytesPerElement: 12, type: FLOAT };&#xD;	      t[RGB8UI] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 3, type: UNSIGNED_BYTE };&#xD;	      t[RGB8I] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 3, type: BYTE };&#xD;	      t[RGB16UI] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 6, type: UNSIGNED_SHORT };&#xD;	      t[RGB16I] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 6, type: SHORT };&#xD;	      t[RGB32UI] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 12, type: UNSIGNED_INT };&#xD;	      t[RGB32I] = { textureFormat: RGB_INTEGER, colorRenderable: false, textureFilterable: false, bytesPerElement: 12, type: INT };&#xD;	      t[RGBA8] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: 4, type: UNSIGNED_BYTE };&#xD;	      t[SRGB8_ALPHA8] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: 4, type: UNSIGNED_BYTE };&#xD;	      t[RGBA8_SNORM] = { textureFormat: RGBA, colorRenderable: false, textureFilterable: true, bytesPerElement: 4, type: BYTE };&#xD;	      t[RGB5_A1] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: [4, 2, 4], type: [UNSIGNED_BYTE, UNSIGNED_SHORT_5_5_5_1, UNSIGNED_INT_2_10_10_10_REV] };&#xD;	      t[RGBA4] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: [4, 2], type: [UNSIGNED_BYTE, UNSIGNED_SHORT_4_4_4_4] };&#xD;	      t[RGB10_A2] = { textureFormat: RGBA, colorRenderable: true, textureFilterable: true, bytesPerElement: 4, type: UNSIGNED_INT_2_10_10_10_REV };&#xD;	      t[RGBA16F] = { textureFormat: RGBA, colorRenderable: false, textureFilterable: true, bytesPerElement: [16, 8], type: [FLOAT, HALF_FLOAT] };&#xD;	      t[RGBA32F] = { textureFormat: RGBA, colorRenderable: false, textureFilterable: false, bytesPerElement: 16, type: FLOAT };&#xD;	      t[RGBA8UI] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_BYTE };&#xD;	      t[RGBA8I] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: BYTE };&#xD;	      t[RGB10_A2UI] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_INT_2_10_10_10_REV };&#xD;	      t[RGBA16UI] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 8, type: UNSIGNED_SHORT };&#xD;	      t[RGBA16I] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 8, type: SHORT };&#xD;	      t[RGBA32I] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 16, type: INT };&#xD;	      t[RGBA32UI] = { textureFormat: RGBA_INTEGER, colorRenderable: true, textureFilterable: false, bytesPerElement: 16, type: UNSIGNED_INT };&#xD;	      // Sized Internal&#xD;	      t[DEPTH_COMPONENT16] = { textureFormat: DEPTH_COMPONENT, colorRenderable: true, textureFilterable: false, bytesPerElement: [2, 4], type: [UNSIGNED_SHORT, UNSIGNED_INT] };&#xD;	      t[DEPTH_COMPONENT24] = { textureFormat: DEPTH_COMPONENT, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_INT };&#xD;	      t[DEPTH_COMPONENT32F] = { textureFormat: DEPTH_COMPONENT, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: FLOAT };&#xD;	      t[DEPTH24_STENCIL8] = { textureFormat: DEPTH_STENCIL, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: UNSIGNED_INT_24_8 };&#xD;	      t[DEPTH32F_STENCIL8] = { textureFormat: DEPTH_STENCIL, colorRenderable: true, textureFilterable: false, bytesPerElement: 4, type: FLOAT_32_UNSIGNED_INT_24_8_REV };&#xD;&#xD;	      Object.keys(t).forEach(function (internalFormat) {&#xD;	        var info = t[internalFormat];&#xD;	        info.bytesPerElementMap = {};&#xD;	        if (Array.isArray(info.bytesPerElement)) {&#xD;	          info.bytesPerElement.forEach(function (bytesPerElement, ndx) {&#xD;	            var type = info.type[ndx];&#xD;	            info.bytesPerElementMap[type] = bytesPerElement;&#xD;	          });&#xD;	        } else {&#xD;	          var type = info.type;&#xD;	          info.bytesPerElementMap[type] = info.bytesPerElement;&#xD;	        }&#xD;	      });&#xD;	    })();&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets the number of bytes per element for a given internalFormat / type&#xD;	   * @param {number} internalFormat The internalFormat parameter from texImage2D etc..&#xD;	   * @param {number} type The type parameter for texImage2D etc..&#xD;	   * @return {number} the number of bytes per element for the given internalFormat, type combo&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function getBytesPerElementForInternalFormat(internalFormat, type) {&#xD;	    var info = textureInternalFormatInfo[internalFormat];&#xD;	    if (!info) {&#xD;	      throw "unknown internal format";&#xD;	    }&#xD;	    var bytesPerElement = info.bytesPerElementMap[type];&#xD;	    if (bytesPerElement === undefined) {&#xD;	      throw "unknown internal format";&#xD;	    }&#xD;	    return bytesPerElement;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets the format for a given internalFormat&#xD;	   *&#xD;	   * @param {number} internalFormat The internal format&#xD;	   * @return {{format:number, type:number}} the corresponding format and type&#xD;	   */&#xD;	  function getFormatAndTypeForInternalFormat(internalFormat) {&#xD;	    var info = textureInternalFormatInfo[internalFormat];&#xD;	    if (!info) {&#xD;	      throw "unknown internal format";&#xD;	    }&#xD;	    return {&#xD;	      format: info.textureFormat,&#xD;	      type: Array.isArray(info.type) ? info.type[0] : info.type&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Returns true if value is power of 2&#xD;	   * @param {number} value number to check.&#xD;	   * @return true if value is power of 2&#xD;	   */&#xD;	  function isPowerOf2(value) {&#xD;	    return (value &amp; value - 1) === 0;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets whether or not we can generate mips for the given format&#xD;	   * @param {number} internalFormat The internalFormat parameter from texImage2D etc..&#xD;	   * @param {number} type The type parameter for texImage2D etc..&#xD;	   * @return {boolean} true if we can generate mips&#xD;	   */&#xD;	  function canGenerateMipmap(gl, width, height, internalFormat /*, type */) {&#xD;	    if (!utils.isWebGL2(gl)) {&#xD;	      return isPowerOf2(width) &amp;&amp; isPowerOf2(height);&#xD;	    }&#xD;	    var info = textureInternalFormatInfo[internalFormat];&#xD;	    if (!info) {&#xD;	      throw "unknown internal format";&#xD;	    }&#xD;	    return info.colorRenderable &amp;&amp; info.textureFilterable;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets whether or not we can generate mips for the given format&#xD;	   * @param {number} internalFormat The internalFormat parameter from texImage2D etc..&#xD;	   * @param {number} type The type parameter for texImage2D etc..&#xD;	   * @return {boolean} true if we can generate mips&#xD;	   */&#xD;	  function canFilter(internalFormat /*, type */) {&#xD;	    var info = textureInternalFormatInfo[internalFormat];&#xD;	    if (!info) {&#xD;	      throw "unknown internal format";&#xD;	    }&#xD;	    return info.textureFilterable;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets the number of compontents for a given image format.&#xD;	   * @param {number} format the format.&#xD;	   * @return {number} the number of components for the format.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function getNumComponentsForFormat(format) {&#xD;	    var info = formatInfo[format];&#xD;	    if (!info) {&#xD;	      throw "unknown format: " + format;&#xD;	    }&#xD;	    return info.numColorComponents;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets the texture type for a given array type.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @return {number} the gl texture type&#xD;	   */&#xD;	  function getTextureTypeForArrayType(gl, src, defaultType) {&#xD;	    if (isArrayBuffer(src)) {&#xD;	      return typedArrays.getGLTypeForTypedArray(src);&#xD;	    }&#xD;	    return defaultType || gl.UNSIGNED_BYTE;&#xD;	  }&#xD;&#xD;	  function guessDimensions(gl, target, width, height, numElements) {&#xD;	    if (numElements % 1 !== 0) {&#xD;	      throw "can&apos;t guess dimensions";&#xD;	    }&#xD;	    if (!width &amp;&amp; !height) {&#xD;	      var size = Math.sqrt(numElements / (target === gl.TEXTURE_CUBE_MAP ? 6 : 1));&#xD;	      if (size % 1 === 0) {&#xD;	        width = size;&#xD;	        height = size;&#xD;	      } else {&#xD;	        width = numElements;&#xD;	        height = 1;&#xD;	      }&#xD;	    } else if (!height) {&#xD;	      height = numElements / width;&#xD;	      if (height % 1) {&#xD;	        throw "can&apos;t guess dimensions";&#xD;	      }&#xD;	    } else if (!width) {&#xD;	      width = numElements / height;&#xD;	      if (width % 1) {&#xD;	        throw "can&apos;t guess dimensions";&#xD;	      }&#xD;	    }&#xD;	    return {&#xD;	      width: width,&#xD;	      height: height&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets the default texture color.&#xD;	   *&#xD;	   * The default texture color is used when loading textures from&#xD;	   * urls. Because the URL will be loaded async we&apos;d like to be&#xD;	   * able to use the texture immediately. By putting a 1x1 pixel&#xD;	   * color in the texture we can start using the texture before&#xD;	   * the URL has loaded.&#xD;	   *&#xD;	   * @param {number[]} color Array of 4 values in the range 0 to 1&#xD;	   * @deprecated see {@link module:twgl.setDefaults}&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setDefaultTextureColor(color) {&#xD;	    defaults.textureColor = new Uint8Array([color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]);&#xD;	  }&#xD;&#xD;	  function setDefaults(newDefaults) {&#xD;	    utils.copyExistingProperties(newDefaults, defaults);&#xD;	    if (newDefaults.textureColor) {&#xD;	      setDefaultTextureColor(newDefaults.textureColor);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets a string for gl enum&#xD;	   *&#xD;	   * Note: Several enums are the same. Without more&#xD;	   * context (which function) it&apos;s impossible to always&#xD;	   * give the correct enum.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {number} value the value of the enum you want to look up.&#xD;	   */&#xD;	  var glEnumToString = function () {&#xD;	    var enums;&#xD;&#xD;	    function init(gl) {&#xD;	      if (!enums) {&#xD;	        enums = {};&#xD;	        for (var key in gl) {&#xD;	          if (typeof gl[key] === &apos;number&apos;) {&#xD;	            enums[gl[key]] = key;&#xD;	          }&#xD;	        }&#xD;	      }&#xD;	    }&#xD;&#xD;	    return function glEnumToString(gl, value) {&#xD;	      init(gl);&#xD;	      return enums[value] || "0x" + value.toString(16);&#xD;	    };&#xD;	  }();&#xD;&#xD;	  /**&#xD;	   * A function to generate the source for a texture.&#xD;	   * @callback TextureFunc&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {module:twgl.TextureOptions} options the texture options&#xD;	   * @return {*} Returns any of the things documentented for `src` for {@link module:twgl.TextureOptions}.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Texture options passed to most texture functions. Each function will use whatever options&#xD;	   * are appropriate for its needs. This lets you pass the same options to all functions.&#xD;	   *&#xD;	   * @typedef {Object} TextureOptions&#xD;	   * @property {number} [target] the type of texture `gl.TEXTURE_2D` or `gl.TEXTURE_CUBE_MAP`. Defaults to `gl.TEXTURE_2D`.&#xD;	   * @property {number} [width] the width of the texture. Only used if src is an array or typed array or null.&#xD;	   * @property {number} [height] the height of a texture. Only used if src is an array or typed array or null.&#xD;	   * @property {number} [depth] the depth of a texture. Only used if src is an array or type array or null and target is `TEXTURE_3D` .&#xD;	   * @property {number} [min] the min filter setting (eg. `gl.LINEAR`). Defaults to `gl.NEAREST_MIPMAP_LINEAR`&#xD;	   *     or if texture is not a power of 2 on both dimensions then defaults to `gl.LINEAR`.&#xD;	   * @property {number} [mag] the mag filter setting (eg. `gl.LINEAR`). Defaults to `gl.LINEAR`&#xD;	   * @property {number} [minMag] both the min and mag filter settings.&#xD;	   * @property {number} [internalFormat] internal format for texture. Defaults to `gl.RGBA`&#xD;	   * @property {number} [format] format for texture. Defaults to `gl.RGBA`.&#xD;	   * @property {number} [type] type for texture. Defaults to `gl.UNSIGNED_BYTE` unless `src` is ArrayBuffer. If `src`&#xD;	   *     is ArrayBuffer defaults to type that matches ArrayBuffer type.&#xD;	   * @property {number} [wrap] Texture wrapping for both S and T (and R if TEXTURE_3D or WebGLSampler). Defaults to `gl.REPEAT` for 2D unless src is WebGL1 and src not npot and `gl.CLAMP_TO_EDGE` for cube&#xD;	   * @property {number} [wrapS] Texture wrapping for S. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.&#xD;	   * @property {number} [wrapT] Texture wrapping for T. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.&#xD;	   * @property {number} [wrapR] Texture wrapping for R. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.&#xD;	   * @property {number} [minLod] TEXTURE_MIN_LOD setting&#xD;	   * @property {number} [maxLod] TEXTURE_MAX_LOD setting&#xD;	   * @property {number} [baseLevel] TEXTURE_BASE_LEVEL setting&#xD;	   * @property {number} [maxLevel] TEXTURE_MAX_LEVEL setting&#xD;	   * @property {number} [unpackAlignment] The `gl.UNPACK_ALIGNMENT` used when uploading an array. Defaults to 1.&#xD;	   * @property {number} [premultiplyAlpha] Whether or not to premultiply alpha. Defaults to whatever the current setting is.&#xD;	   *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override&#xD;	   *     the current setting for specific textures.&#xD;	   * @property {number} [flipY] Whether or not to flip the texture vertically on upload. Defaults to whatever the current setting is.&#xD;	   *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override&#xD;	   *     the current setting for specific textures.&#xD;	   * @property {number} [colorspaceConversion] Whether or not to let the browser do colorspace conversion of the texture on upload. Defaults to whatever the current setting is.&#xD;	   *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override&#xD;	   *     the current setting for specific textures.&#xD;	   * @property {(number[]|ArrayBuffer)} color color used as temporary 1x1 pixel color for textures loaded async when src is a string.&#xD;	   *    If it&apos;s a JavaScript array assumes color is 0 to 1 like most GL colors as in `[1, 0, 0, 1] = red=1, green=0, blue=0, alpha=0`.&#xD;	   *    Defaults to `[0.5, 0.75, 1, 1]`. See {@link module:twgl.setDefaultTextureColor}. If `false` texture is set. Can be used to re-load a texture&#xD;	   * @property {boolean} [auto] If not `false` then texture working filtering is set automatically for non-power of 2 images and&#xD;	   *    mips are generated for power of 2 images.&#xD;	   * @property {number[]} [cubeFaceOrder] The order that cube faces are pulled out of an img or set of images. The default is&#xD;	   *&#xD;	   *     [gl.TEXTURE_CUBE_MAP_POSITIVE_X,&#xD;	   *      gl.TEXTURE_CUBE_MAP_NEGATIVE_X,&#xD;	   *      gl.TEXTURE_CUBE_MAP_POSITIVE_Y,&#xD;	   *      gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,&#xD;	   *      gl.TEXTURE_CUBE_MAP_POSITIVE_Z,&#xD;	   *      gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]&#xD;	   *&#xD;	   * @property {(number[]|ArrayBuffer|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement|string|string[]|module:twgl.TextureFunc)} [src] source for texture&#xD;	   *&#xD;	   *    If `string` then it&apos;s assumed to be a URL to an image. The image will be downloaded async. A usable&#xD;	   *    1x1 pixel texture will be returned immediatley. The texture will be updated once the image has downloaded.&#xD;	   *    If `target` is `gl.TEXTURE_CUBE_MAP` will attempt to divide image into 6 square pieces. 1x6, 6x1, 3x2, 2x3.&#xD;	   *    The pieces will be uploaded in `cubeFaceOrder`&#xD;	   *&#xD;	   *    If `string[]` then it must have 6 entries, one for each face of a cube map. Target must be `gl.TEXTURE_CUBE_MAP`.&#xD;	   *&#xD;	   *    If `HTMLElement` then it wil be used immediately to create the contents of the texture. Examples `HTMLImageElement`,&#xD;	   *    `HTMLCanvasElement`, `HTMLVideoElement`.&#xD;	   *&#xD;	   *    If `number[]` or `ArrayBuffer` it&apos;s assumed to be data for a texture. If `width` or `height` is&#xD;	   *    not specified it is guessed as follows. First the number of elements is computed by `src.length / numComponets`&#xD;	   *    where `numComponents` is derived from `format`. If `target` is `gl.TEXTURE_CUBE_MAP` then `numElements` is divided&#xD;	   *    by 6. Then&#xD;	   *&#xD;	   *    *   If neither `width` nor `height` are specified and `sqrt(numElements)` is an integer then width and height&#xD;	   *        are set to `sqrt(numElements)`. Otherwise `width = numElements` and `height = 1`.&#xD;	   *&#xD;	   *    *   If only one of `width` or `height` is specified then the other equals `numElements / specifiedDimension`.&#xD;	   *&#xD;	   * If `number[]` will be converted to `type`.&#xD;	   *&#xD;	   * If `src` is a function it will be called with a `WebGLRenderingContext` and these options.&#xD;	   * Whatever it returns is subject to these rules. So it can return a string url, an `HTMLElement`&#xD;	   * an array etc...&#xD;	   *&#xD;	   * If `src` is undefined then an empty texture will be created of size `width` by `height`.&#xD;	   *&#xD;	   * @property {string} [crossOrigin] What to set the crossOrigin property of images when they are downloaded.&#xD;	   *    default: undefined. Also see {@link module:twgl.setDefaults}.&#xD;	   *&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  // NOTE: While querying GL is considered slow it&apos;s not remotely as slow&#xD;	  // as uploading a texture. On top of that you&apos;re unlikely to call this in&#xD;	  // a perf critical loop. Even if upload a texture every frame that&apos;s unlikely&#xD;	  // to be more than 1 or 2 textures a frame. In other words, the benefits of&#xD;	  // making the API easy to use outweigh any supposed perf benefits&#xD;	  var lastPackState = {};&#xD;&#xD;	  /**&#xD;	   * Saves any packing state that will be set based on the options.&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   */&#xD;	  function savePackState(gl, options) {&#xD;	    if (options.colorspaceConversion !== undefined) {&#xD;	      lastPackState.colorspaceConversion = gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL);&#xD;	      gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, options.colorspaceConversion);&#xD;	    }&#xD;	    if (options.premultiplyAlpha !== undefined) {&#xD;	      lastPackState.premultiplyAlpha = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);&#xD;	      gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, options.premultiplyAlpha);&#xD;	    }&#xD;	    if (options.flipY !== undefined) {&#xD;	      lastPackState.flipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);&#xD;	      gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, options.flipY);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Restores any packing state that was set based on the options.&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   */&#xD;	  function restorePackState(gl, options) {&#xD;	    if (options.colorspaceConversion !== undefined) {&#xD;	      gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, lastPackState.colorspaceConversion);&#xD;	    }&#xD;	    if (options.premultiplyAlpha !== undefined) {&#xD;	      gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, lastPackState.premultiplyAlpha);&#xD;	    }&#xD;	    if (options.flipY !== undefined) {&#xD;	      gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, lastPackState.flipY);&#xD;	    }&#xD;	  }&#xD;&#xD;	  var WebGLSamplerCtor = window.WebGLSampler || function NotWebGLSampler() {};&#xD;&#xD;	  /**&#xD;	   * Sets the parameters of a texture or sampler&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {number|WebGLSampler} target texture target or sampler&#xD;	   * @param {function()} parameteriFn texParamteri or samplerParameteri fn&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   */&#xD;	  function setTextureSamplerParameters(gl, target, parameteriFn, options) {&#xD;	    if (options.minMag) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MIN_FILTER, options.minMag);&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MAG_FILTER, options.minMag);&#xD;	    }&#xD;	    if (options.min) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MIN_FILTER, options.min);&#xD;	    }&#xD;	    if (options.mag) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MAG_FILTER, options.mag);&#xD;	    }&#xD;	    if (options.wrap) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_WRAP_S, options.wrap);&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_WRAP_T, options.wrap);&#xD;	      if (target === gl.TEXTURE_3D || target instanceof WebGLSamplerCtor) {&#xD;	        parameteriFn.call(gl, target, gl.TEXTURE_WRAP_R, options.wrap);&#xD;	      }&#xD;	    }&#xD;	    if (options.wrapR) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_WRAP_R, options.wrapR);&#xD;	    }&#xD;	    if (options.wrapS) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_WRAP_S, options.wrapS);&#xD;	    }&#xD;	    if (options.wrapT) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_WRAP_T, options.wrapT);&#xD;	    }&#xD;	    if (options.minLod) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MIN_LOD, options.minLod);&#xD;	    }&#xD;	    if (options.maxLod) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MAX_LOD, options.maxLod);&#xD;	    }&#xD;	    if (options.baseLevel) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_BASE_LEVEL, options.baseLevel);&#xD;	    }&#xD;	    if (options.maxLevel) {&#xD;	      parameteriFn.call(gl, target, gl.TEXTURE_MAX_LEVEL, options.maxLevel);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets the texture parameters of a texture.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setTextureParameters(gl, tex, options) {&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    gl.bindTexture(target, tex);&#xD;	    setTextureSamplerParameters(gl, target, gl.texParameteri, options);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets the sampler parameters of a sampler.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLSampler} sampler the WebGLSampler to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setSamplerParameters(gl, sampler, options) {&#xD;	    setTextureSamplerParameters(gl, sampler, gl.samplerParameteri, options);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a new sampler object and sets parameters.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *      const sampler = twgl.createSampler(gl, {&#xD;	   *        minMag: gl.NEAREST,         // sets both TEXTURE_MIN_FILTER and TEXTURE_MAG_FILTER&#xD;	   *        wrap: gl.CLAMP_TO_NEAREST,  // sets both TEXTURE_WRAP_S and TEXTURE_WRAP_T and TEXTURE_WRAP_R&#xD;	   *      });&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {Object.&lt;string,module:twgl.TextureOptions&gt;} options A object of TextureOptions one per sampler.&#xD;	   * @return {Object.&lt;string,WebGLSampler&gt;} the created samplers by name&#xD;	   */&#xD;	  function createSampler(gl, options) {&#xD;	    var sampler = gl.createSampler();&#xD;	    setSamplerParameters(gl, sampler, options);&#xD;	    return sampler;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a multiple sampler objects and sets parameters on each.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *      const samplers = twgl.createSamplers(gl, {&#xD;	   *        nearest: {&#xD;	   *          minMag: gl.NEAREST,&#xD;	   *        },&#xD;	   *        nearestClampS: {&#xD;	   *          minMag: gl.NEAREST,&#xD;	   *          wrapS: gl.CLAMP_TO_NEAREST,&#xD;	   *        },&#xD;	   *        linear: {&#xD;	   *          minMag: gl.LINEAR,&#xD;	   *        },&#xD;	   *        nearestClamp: {&#xD;	   *          minMag: gl.NEAREST,&#xD;	   *          wrap: gl.CLAMP_TO_EDGE,&#xD;	   *        },&#xD;	   *        linearClamp: {&#xD;	   *          minMag: gl.LINEAR,&#xD;	   *          wrap: gl.CLAMP_TO_EDGE,&#xD;	   *        },&#xD;	   *        linearClampT: {&#xD;	   *          minMag: gl.LINEAR,&#xD;	   *          wrapT: gl.CLAMP_TO_EDGE,&#xD;	   *        },&#xD;	   *      });&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set on the sampler&#xD;	   */&#xD;	  function createSamplers(gl, samplerOptions) {&#xD;	    var samplers = {};&#xD;	    Object.keys(samplerOptions).forEach(function (name) {&#xD;	      samplers[name] = createSampler(gl, samplerOptions[name]);&#xD;	    });&#xD;	    return samplers;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Makes a 1x1 pixel&#xD;	   * If no color is passed in uses the default color which can be set by calling `setDefaultTextureColor`.&#xD;	   * @param {(number[]|ArrayBuffer)} [color] The color using 0-1 values&#xD;	   * @return {Uint8Array} Unit8Array with color.&#xD;	   */&#xD;	  function make1Pixel(color) {&#xD;	    color = color || defaults.textureColor;&#xD;	    if (isArrayBuffer(color)) {&#xD;	      return color;&#xD;	    }&#xD;	    return new Uint8Array([color[0] * 255, color[1] * 255, color[2] * 255, color[3] * 255]);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets filtering or generates mips for texture based on width or height&#xD;	   * If width or height is not passed in uses `options.width` and//or `options.height`&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @param {number} [width] width of texture&#xD;	   * @param {number} [height] height of texture&#xD;	   * @param {number} [internalFormat] The internalFormat parameter from texImage2D etc..&#xD;	   * @param {number} [type] The type parameter for texImage2D etc..&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setTextureFilteringForSize(gl, tex, options, width, height, internalFormat, type) {&#xD;	    options = options || defaults.textureOptions;&#xD;	    internalFormat = internalFormat || gl.RGBA;&#xD;	    type = type || gl.UNSIGNED_BYTE;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    width = width || options.width;&#xD;	    height = height || options.height;&#xD;	    gl.bindTexture(target, tex);&#xD;	    if (canGenerateMipmap(gl, width, height, internalFormat, type)) {&#xD;	      gl.generateMipmap(target);&#xD;	    } else {&#xD;	      var filtering = canFilter(internalFormat, type) ? gl.LINEAR : gl.NEAREST;&#xD;	      gl.texParameteri(target, gl.TEXTURE_MIN_FILTER, filtering);&#xD;	      gl.texParameteri(target, gl.TEXTURE_MAG_FILTER, filtering);&#xD;	      gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);&#xD;	      gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Gets an array of cubemap face enums&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @return {number[]} cubemap face enums&#xD;	   */&#xD;	  function getCubeFaceOrder(gl, options) {&#xD;	    options = options || {};&#xD;	    return options.cubeFaceOrder || [gl.TEXTURE_CUBE_MAP_POSITIVE_X, gl.TEXTURE_CUBE_MAP_NEGATIVE_X, gl.TEXTURE_CUBE_MAP_POSITIVE_Y, gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, gl.TEXTURE_CUBE_MAP_POSITIVE_Z, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z];&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} FaceInfo&#xD;	   * @property {number} face gl enum for texImage2D&#xD;	   * @property {number} ndx face index (0 - 5) into source data&#xD;	   * @ignore&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Gets an array of FaceInfos&#xD;	   * There&apos;s a bug in some NVidia drivers that will crash the driver if&#xD;	   * `gl.TEXTURE_CUBE_MAP_POSITIVE_X` is not uploaded first. So, we take&#xD;	   * the user&apos;s desired order from his faces to WebGL and make sure we&#xD;	   * do the faces in WebGL order&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @return {FaceInfo[]} cubemap face infos. Arguably the `face` property of each element is redundent but&#xD;	   *    it&apos;s needed internally to sort the array of `ndx` properties by `face`.&#xD;	   */&#xD;	  function getCubeFacesWithNdx(gl, options) {&#xD;	    var faces = getCubeFaceOrder(gl, options);&#xD;	    // work around bug in NVidia drivers. We have to upload the first face first else the driver crashes :(&#xD;	    var facesWithNdx = faces.map(function (face, ndx) {&#xD;	      return { face: face, ndx: ndx };&#xD;	    });&#xD;	    facesWithNdx.sort(function (a, b) {&#xD;	      return a.face - b.face;&#xD;	    });&#xD;	    return facesWithNdx;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Set a texture from the contents of an element. Will also set&#xD;	   * texture filtering or generate mips based on the dimensions of the element&#xD;	   * unless `options.auto === false`. If `target === gl.TEXTURE_CUBE_MAP` will&#xD;	   * attempt to slice image into 1x6, 2x3, 3x2, or 6x1 images, one for each face.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {HTMLElement} element a canvas, img, or video element.&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @memberOf module:twgl/textures&#xD;	   * @kind function&#xD;	   */&#xD;	  function setTextureFromElement(gl, tex, element, options) {&#xD;	    options = options || defaults.textureOptions;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    var width = element.width;&#xD;	    var height = element.height;&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type = options.type || formatType.type;&#xD;	    savePackState(gl, options);&#xD;	    gl.bindTexture(target, tex);&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      // guess the parts&#xD;	      var imgWidth = element.width;&#xD;	      var imgHeight = element.height;&#xD;	      var size;&#xD;	      var slices;&#xD;	      if (imgWidth / 6 === imgHeight) {&#xD;	        // It&apos;s 6x1&#xD;	        size = imgHeight;&#xD;	        slices = [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0];&#xD;	      } else if (imgHeight / 6 === imgWidth) {&#xD;	        // It&apos;s 1x6&#xD;	        size = imgWidth;&#xD;	        slices = [0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5];&#xD;	      } else if (imgWidth / 3 === imgHeight / 2) {&#xD;	        // It&apos;s 3x2&#xD;	        size = imgWidth / 3;&#xD;	        slices = [0, 0, 1, 0, 2, 0, 0, 1, 1, 1, 2, 1];&#xD;	      } else if (imgWidth / 2 === imgHeight / 3) {&#xD;	        // It&apos;s 2x3&#xD;	        size = imgWidth / 2;&#xD;	        slices = [0, 0, 1, 0, 0, 1, 1, 1, 0, 2, 1, 2];&#xD;	      } else {&#xD;	        throw "can&apos;t figure out cube map from element: " + (element.src ? element.src : element.nodeName);&#xD;	      }&#xD;	      ctx.canvas.width = size;&#xD;	      ctx.canvas.height = size;&#xD;	      width = size;&#xD;	      height = size;&#xD;	      getCubeFacesWithNdx(gl, options).forEach(function (f) {&#xD;	        var xOffset = slices[f.ndx * 2 + 0] * size;&#xD;	        var yOffset = slices[f.ndx * 2 + 1] * size;&#xD;	        ctx.drawImage(element, xOffset, yOffset, size, size, 0, 0, size, size);&#xD;	        gl.texImage2D(f.face, 0, internalFormat, format, type, ctx.canvas);&#xD;	      });&#xD;	      // Free up the canvas memory&#xD;	      ctx.canvas.width = 1;&#xD;	      ctx.canvas.height = 1;&#xD;	    } else if (target === gl.TEXTURE_3D) {&#xD;	      var smallest = Math.min(element.width, element.height);&#xD;	      var largest = Math.max(element.width, element.height);&#xD;	      var depth = largest / smallest;&#xD;	      if (depth % 1 !== 0) {&#xD;	        throw "can not compute 3D dimensions of element";&#xD;	      }&#xD;	      var xMult = element.width === largest ? 1 : 0;&#xD;	      var yMult = element.height === largest ? 1 : 0;&#xD;	      gl.texImage3D(target, 0, internalFormat, smallest, smallest, smallest, 0, format, type, null);&#xD;	      // remove this is texSubImage3D gets width and height arguments&#xD;	      ctx.canvas.width = smallest;&#xD;	      ctx.canvas.height = smallest;&#xD;	      for (var d = 0; d &lt; depth; ++d) {&#xD;	        //        gl.pixelStorei(gl.UNPACK_SKIP_PIXELS, d * smallest);&#xD;	        //        gl.texSubImage3D(target, 0, 0, 0, d, format, type, element);&#xD;	        var srcX = d * smallest * xMult;&#xD;	        var srcY = d * smallest * yMult;&#xD;	        var srcW = smallest;&#xD;	        var srcH = smallest;&#xD;	        var dstX = 0;&#xD;	        var dstY = 0;&#xD;	        var dstW = smallest;&#xD;	        var dstH = smallest;&#xD;	        ctx.drawImage(element, srcX, srcY, srcW, srcH, dstX, dstY, dstW, dstH);&#xD;	        gl.texSubImage3D(target, 0, 0, 0, d, smallest, smallest, 1, format, type, ctx.canvas);&#xD;	      }&#xD;	      ctx.canvas.width = 0;&#xD;	      ctx.canvas.height = 0;&#xD;	      // FIX (save state)&#xD;	      //      gl.pixelStorei(gl.UNPACK_SKIP_PIXELS, 0);&#xD;	    } else {&#xD;	      gl.texImage2D(target, 0, internalFormat, format, type, element);&#xD;	    }&#xD;	    restorePackState(gl, options);&#xD;	    if (options.auto !== false) {&#xD;	      setTextureFilteringForSize(gl, tex, options, width, height, internalFormat, type);&#xD;	    }&#xD;	    setTextureParameters(gl, tex, options);&#xD;	  }&#xD;&#xD;	  function noop() {}&#xD;&#xD;	  /**&#xD;	   * Loads an image&#xD;	   * @param {string} url url to image&#xD;	   * @param {function(err, img)} [callback] a callback that&apos;s passed an error and the image. The error will be non-null&#xD;	   *     if there was an error&#xD;	   * @return {HTMLImageElement} the image being loaded.&#xD;	   */&#xD;	  function loadImage(url, crossOrigin, callback) {&#xD;	    callback = callback || noop;&#xD;	    var img = new Image();&#xD;	    crossOrigin = crossOrigin !== undefined ? crossOrigin : defaults.crossOrigin;&#xD;	    if (crossOrigin !== undefined) {&#xD;	      img.crossOrigin = crossOrigin;&#xD;	    }&#xD;&#xD;	    function clearEventHandlers() {&#xD;	      img.removeEventListener(&apos;error&apos;, onError); // eslint-disable-line&#xD;	      img.removeEventListener(&apos;load&apos;, onLoad); // eslint-disable-line&#xD;	      img = null;&#xD;	    }&#xD;&#xD;	    function onError() {&#xD;	      var msg = "couldn&apos;t load image: " + url;&#xD;	      utils.error(msg);&#xD;	      callback(msg, img);&#xD;	      clearEventHandlers();&#xD;	    }&#xD;&#xD;	    function onLoad() {&#xD;	      callback(null, img);&#xD;	      clearEventHandlers();&#xD;	    }&#xD;&#xD;	    img.addEventListener(&apos;error&apos;, onError);&#xD;	    img.addEventListener(&apos;load&apos;, onLoad);&#xD;	    img.src = url;&#xD;	    return img;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets a texture to a 1x1 pixel color. If `options.color === false` is nothing happens. If it&apos;s not set&#xD;	   * the default texture color is used which can be set by calling `setDefaultTextureColor`.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setTextureTo1PixelColor(gl, tex, options) {&#xD;	    options = options || defaults.textureOptions;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    gl.bindTexture(target, tex);&#xD;	    if (options.color === false) {&#xD;	      return;&#xD;	    }&#xD;	    // Assume it&apos;s a URL&#xD;	    // Put 1x1 pixels in texture. That makes it renderable immediately regardless of filtering.&#xD;	    var color = make1Pixel(options.color);&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      for (var ii = 0; ii &lt; 6; ++ii) {&#xD;	        gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + ii, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);&#xD;	      }&#xD;	    } else if (target === gl.TEXTURE_3D || target === gl.TEXTURE_2D_ARRAY) {&#xD;	      gl.texImage3D(target, 0, gl.RGBA, 1, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);&#xD;	    } else {&#xD;	      gl.texImage2D(target, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * The src image(s) used to create a texture.&#xD;	   *&#xD;	   * When you call {@link module:twgl.createTexture} or {@link module:twgl.createTextures}&#xD;	   * you can pass in urls for images to load into the textures. If it&apos;s a single url&#xD;	   * then this will be a single HTMLImageElement. If it&apos;s an array of urls used for a cubemap&#xD;	   * this will be a corresponding array of images for the cubemap.&#xD;	   *&#xD;	   * @typedef {HTMLImageElement|HTMLImageElement[]} TextureSrc&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * A callback for when an image finished downloading and been uploaded into a texture&#xD;	   * @callback TextureReadyCallback&#xD;	   * @param {*} err If truthy there was an error.&#xD;	   * @param {WebGLTexture} texture the texture.&#xD;	   * @param {module:twgl.TextureSrc} souce image(s) used to as the src for the texture&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * A callback for when all images have finished downloading and been uploaded into their respective textures&#xD;	   * @callback TexturesReadyCallback&#xD;	   * @param {*} err If truthy there was an error.&#xD;	   * @param {Object.&lt;string, WebGLTexture&gt;} textures the created textures by name. Same as returned by {@link module:twgl.createTextures}.&#xD;	   * @param {Object.&lt;string, module:twgl.TextureSrc&gt;} sources the image(s) used for the texture by name.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * A callback for when an image finished downloading and been uploaded into a texture&#xD;	   * @callback CubemapReadyCallback&#xD;	   * @param {*} err If truthy there was an error.&#xD;	   * @param {WebGLTexture} tex the texture.&#xD;	   * @param {HTMLImageElement[]} imgs the images for each face.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * A callback for when an image finished downloading and been uploaded into a texture&#xD;	   * @callback ThreeDReadyCallback&#xD;	   * @param {*} err If truthy there was an error.&#xD;	   * @param {WebGLTexture} tex the texture.&#xD;	   * @param {HTMLImageElement[]} imgs the images for each slice.&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Loads a texture from an image from a Url as specified in `options.src`&#xD;	   * If `options.color !== false` will set the texture to a 1x1 pixel color so that the texture is&#xD;	   * immediately useable. It will be updated with the contents of the image once the image has finished&#xD;	   * downloading. Filtering options will be set as approriate for image unless `options.auto === false`.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {module:twgl.TextureReadyCallback} [callback] A function to be called when the image has finished loading. err will&#xD;	   *    be non null if there was an error.&#xD;	   * @return {HTMLImageElement} the image being downloaded.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function loadTextureFromUrl(gl, tex, options, callback) {&#xD;	    callback = callback || noop;&#xD;	    options = options || defaults.textureOptions;&#xD;	    setTextureTo1PixelColor(gl, tex, options);&#xD;	    // Because it&apos;s async we need to copy the options.&#xD;	    options = utils.shallowCopy(options);&#xD;	    var img = loadImage(options.src, options.crossOrigin, function (err, img) {&#xD;	      if (err) {&#xD;	        callback(err, tex, img);&#xD;	      } else {&#xD;	        setTextureFromElement(gl, tex, img, options);&#xD;	        callback(null, tex, img);&#xD;	      }&#xD;	    });&#xD;	    return img;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Loads a cubemap from 6 urls as specified in `options.src`. Will set the cubemap to a 1x1 pixel color&#xD;	   * so that it is usable immediately unless `option.color === false`.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {module:twgl.CubemapReadyCallback} [callback] A function to be called when all the images have finished loading. err will&#xD;	   *    be non null if there was an error.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function loadCubemapFromUrls(gl, tex, options, callback) {&#xD;	    callback = callback || noop;&#xD;	    var urls = options.src;&#xD;	    if (urls.length !== 6) {&#xD;	      throw "there must be 6 urls for a cubemap";&#xD;	    }&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type = options.type || gl.UNSIGNED_BYTE;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    if (target !== gl.TEXTURE_CUBE_MAP) {&#xD;	      throw "target must be TEXTURE_CUBE_MAP";&#xD;	    }&#xD;	    setTextureTo1PixelColor(gl, tex, options);&#xD;	    // Because it&apos;s async we need to copy the options.&#xD;	    options = utils.shallowCopy(options);&#xD;	    var numToLoad = 6;&#xD;	    var errors = [];&#xD;	    var imgs;&#xD;	    var faces = getCubeFaceOrder(gl, options);&#xD;&#xD;	    function uploadImg(faceTarget) {&#xD;	      return function (err, img) {&#xD;	        --numToLoad;&#xD;	        if (err) {&#xD;	          errors.push(err);&#xD;	        } else {&#xD;	          if (img.width !== img.height) {&#xD;	            errors.push("cubemap face img is not a square: " + img.src);&#xD;	          } else {&#xD;	            savePackState(gl, options);&#xD;	            gl.bindTexture(target, tex);&#xD;&#xD;	            // So assuming this is the first image we now have one face that&apos;s img sized&#xD;	            // and 5 faces that are 1x1 pixel so size the other faces&#xD;	            if (numToLoad === 5) {&#xD;	              // use the default order&#xD;	              getCubeFaceOrder(gl).forEach(function (otherTarget) {&#xD;	                // Should we re-use the same face or a color?&#xD;	                gl.texImage2D(otherTarget, 0, internalFormat, format, type, img);&#xD;	              });&#xD;	            } else {&#xD;	              gl.texImage2D(faceTarget, 0, internalFormat, format, type, img);&#xD;	            }&#xD;&#xD;	            restorePackState(gl, options);&#xD;	            gl.generateMipmap(target);&#xD;	          }&#xD;	        }&#xD;&#xD;	        if (numToLoad === 0) {&#xD;	          callback(errors.length ? errors : undefined, imgs, tex);&#xD;	        }&#xD;	      };&#xD;	    }&#xD;&#xD;	    imgs = urls.map(function (url, ndx) {&#xD;	      return loadImage(url, options.crossOrigin, uploadImg(faces[ndx]));&#xD;	    });&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Loads a 2d array or 3d texture from urls as specified in `options.src`.&#xD;	   * Will set the texture to a 1x1 pixel color&#xD;	   * so that it is usable immediately unless `option.color === false`.&#xD;	   *&#xD;	   * If the width and height is not specified the width and height of the first&#xD;	   * image loaded will be used. Note that since images are loaded async&#xD;	   * which image downloads first is unknown.&#xD;	   *&#xD;	   * If an image is not the same size as the width and height it will be scaled&#xD;	   * to that width and height.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {module:twgl.ThreeDReadyCallback} [callback] A function to be called when all the images have finished loading. err will&#xD;	   *    be non null if there was an error.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function loadSlicesFromUrls(gl, tex, options, callback) {&#xD;	    callback = callback || noop;&#xD;	    var urls = options.src;&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type = options.type || gl.UNSIGNED_BYTE;&#xD;	    var target = options.target || gl.TEXTURE_2D_ARRAY;&#xD;	    if (target !== gl.TEXTURE_3D &amp;&amp; target !== gl.TEXTURE_2D_ARRAY) {&#xD;	      throw "target must be TEXTURE_3D or TEXTURE_2D_ARRAY";&#xD;	    }&#xD;	    setTextureTo1PixelColor(gl, tex, options);&#xD;	    // Because it&apos;s async we need to copy the options.&#xD;	    options = utils.shallowCopy(options);&#xD;	    var numToLoad = urls.length;&#xD;	    var errors = [];&#xD;	    var imgs;&#xD;	    var width = options.width;&#xD;	    var height = options.height;&#xD;	    var depth = urls.length;&#xD;	    var firstImage = true;&#xD;&#xD;	    function uploadImg(slice) {&#xD;	      return function (err, img) {&#xD;	        --numToLoad;&#xD;	        if (err) {&#xD;	          errors.push(err);&#xD;	        } else {&#xD;	          savePackState(gl, options);&#xD;	          gl.bindTexture(target, tex);&#xD;&#xD;	          if (firstImage) {&#xD;	            firstImage = false;&#xD;	            width = options.width || img.width;&#xD;	            height = options.height || img.height;&#xD;	            gl.texImage3D(target, 0, internalFormat, width, height, depth, 0, format, type, null);&#xD;&#xD;	            // put it in every slice otherwise some slices will be 0,0,0,0&#xD;	            for (var s = 0; s &lt; depth; ++s) {&#xD;	              gl.texSubImage3D(target, 0, 0, 0, s, width, height, 1, format, type, img);&#xD;	            }&#xD;	          } else {&#xD;	            var src = img;&#xD;	            if (img.width !== width || img.height !== height) {&#xD;	              // Size the image to fix&#xD;	              src = ctx.canvas;&#xD;	              ctx.canvas.width = width;&#xD;	              ctx.canvas.height = height;&#xD;	              ctx.drawImage(img, 0, 0, width, height);&#xD;	            }&#xD;&#xD;	            gl.texSubImage3D(target, 0, 0, 0, slice, width, height, 1, format, type, src);&#xD;&#xD;	            // free the canvas memory&#xD;	            if (src === ctx.canvas) {&#xD;	              ctx.canvas.width = 0;&#xD;	              ctx.canvas.height = 0;&#xD;	            }&#xD;	          }&#xD;&#xD;	          restorePackState(gl, options);&#xD;	          gl.generateMipmap(target);&#xD;	        }&#xD;&#xD;	        if (numToLoad === 0) {&#xD;	          callback(errors.length ? errors : undefined, imgs, tex);&#xD;	        }&#xD;	      };&#xD;	    }&#xD;&#xD;	    imgs = urls.map(function (url, ndx) {&#xD;	      return loadImage(url, options.crossOrigin, uploadImg(ndx));&#xD;	    });&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets a texture from an array or typed array. If the width or height is not provided will attempt to&#xD;	   * guess the size. See {@link module:twgl.TextureOptions}.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {(number[]|ArrayBuffer)} src An array or typed arry with texture data.&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   *   This is often the same options you passed in when you created the texture.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setTextureFromArray(gl, tex, src, options) {&#xD;	    options = options || defaults.textureOptions;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    gl.bindTexture(target, tex);&#xD;	    var width = options.width;&#xD;	    var height = options.height;&#xD;	    var depth = options.depth;&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type = options.type || getTextureTypeForArrayType(gl, src, formatType.type);&#xD;	    if (!isArrayBuffer(src)) {&#xD;	      var Type = typedArrays.getTypedArrayTypeForGLType(type);&#xD;	      src = new Type(src);&#xD;	    } else {&#xD;	      if (src instanceof Uint8ClampedArray) {&#xD;	        src = new Uint8Array(src.buffer);&#xD;	      }&#xD;	    }&#xD;	    var bytesPerElement = getBytesPerElementForInternalFormat(internalFormat, type);&#xD;	    var numElements = src.byteLength / bytesPerElement; // TODO: check UNPACK_ALIGNMENT?&#xD;	    if (numElements % 1) {&#xD;	      throw "length wrong size for format: " + glEnumToString(gl, format);&#xD;	    }&#xD;	    var dimensions;&#xD;	    if (target === gl.TEXTURE_3D) {&#xD;	      if (!width &amp;&amp; !height &amp;&amp; !depth) {&#xD;	        var size = Math.cbrt(numElements);&#xD;	        if (size % 1 !== 0) {&#xD;	          throw "can&apos;t guess cube size of array of numElements: " + numElements;&#xD;	        }&#xD;	        width = size;&#xD;	        height = size;&#xD;	        depth = size;&#xD;	      } else if (width &amp;&amp; (!height || !depth)) {&#xD;	        dimensions = guessDimensions(gl, target, height, depth, numElements / width);&#xD;	        height = dimensions.width;&#xD;	        depth = dimensions.height;&#xD;	      } else if (height &amp;&amp; (!width || !depth)) {&#xD;	        dimensions = guessDimensions(gl, target, width, depth, numElements / height);&#xD;	        width = dimensions.width;&#xD;	        depth = dimensions.height;&#xD;	      } else {&#xD;	        dimensions = guessDimensions(gl, target, width, height, numElements / depth);&#xD;	        width = dimensions.width;&#xD;	        height = dimensions.height;&#xD;	      }&#xD;	    } else {&#xD;	      dimensions = guessDimensions(gl, target, width, height, numElements);&#xD;	      width = dimensions.width;&#xD;	      height = dimensions.height;&#xD;	    }&#xD;	    gl.pixelStorei(gl.UNPACK_ALIGNMENT, options.unpackAlignment || 1);&#xD;	    savePackState(gl, options);&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      (function () {&#xD;	        var elementsPerElement = bytesPerElement / src.BYTES_PER_ELEMENT;&#xD;	        var faceSize = numElements / 6 * elementsPerElement;&#xD;&#xD;	        getCubeFacesWithNdx(gl, options).forEach(function (f) {&#xD;	          var offset = faceSize * f.ndx;&#xD;	          var data = src.subarray(offset, offset + faceSize);&#xD;	          gl.texImage2D(f.face, 0, internalFormat, width, height, 0, format, type, data);&#xD;	        });&#xD;	      })();&#xD;	    } else if (target === gl.TEXTURE_3D) {&#xD;	      gl.texImage3D(target, 0, internalFormat, width, height, depth, 0, format, type, src);&#xD;	    } else {&#xD;	      gl.texImage2D(target, 0, internalFormat, width, height, 0, format, type, src);&#xD;	    }&#xD;	    restorePackState(gl, options);&#xD;	    return {&#xD;	      width: width,&#xD;	      height: height,&#xD;	      depth: depth,&#xD;	      type: type&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets a texture with no contents of a certain size. In other words calls `gl.texImage2D` with `null`.&#xD;	   * You must set `options.width` and `options.height`.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the WebGLTexture to set parameters for&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function setEmptyTexture(gl, tex, options) {&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    gl.bindTexture(target, tex);&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type = options.type || formatType.type;&#xD;	    savePackState(gl, options);&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      for (var ii = 0; ii &lt; 6; ++ii) {&#xD;	        gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + ii, 0, internalFormat, options.width, options.height, 0, format, type, null);&#xD;	      }&#xD;	    } else if (target === gl.TEXTURE_3D) {&#xD;	      gl.texImage3D(target, 0, internalFormat, options.width, options.height, options.depth, 0, format, type, null);&#xD;	    } else {&#xD;	      gl.texImage2D(target, 0, internalFormat, options.width, options.height, 0, format, type, null);&#xD;	    }&#xD;	    restorePackState(gl, options);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a texture based on the options passed in.&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {module:twgl.TextureReadyCallback} [callback] A callback called when an image has been downloaded and uploaded to the texture.&#xD;	   * @return {WebGLTexture} the created texture.&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function createTexture(gl, options, callback) {&#xD;	    callback = callback || noop;&#xD;	    options = options || defaults.textureOptions;&#xD;	    var tex = gl.createTexture();&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    var width = options.width || 1;&#xD;	    var height = options.height || 1;&#xD;	    var internalFormat = options.internalFormat || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var type = options.type || formatType.type;&#xD;	    gl.bindTexture(target, tex);&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      // this should have been the default for CUBEMAPS :(&#xD;	      gl.texParameteri(target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);&#xD;	      gl.texParameteri(target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);&#xD;	    }&#xD;	    var src = options.src;&#xD;	    if (src) {&#xD;	      if (typeof src === "function") {&#xD;	        src = src(gl, options);&#xD;	      }&#xD;	      if (typeof src === "string") {&#xD;	        loadTextureFromUrl(gl, tex, options, callback);&#xD;	      } else if (isArrayBuffer(src) || Array.isArray(src) &amp;&amp; (typeof src[0] === &apos;number&apos; || Array.isArray(src[0]) || isArrayBuffer(src[0]))) {&#xD;	        var dimensions = setTextureFromArray(gl, tex, src, options);&#xD;	        width = dimensions.width;&#xD;	        height = dimensions.height;&#xD;	        type = dimensions.type;&#xD;	      } else if (Array.isArray(src) &amp;&amp; typeof src[0] === &apos;string&apos;) {&#xD;	        if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	          loadCubemapFromUrls(gl, tex, options, callback);&#xD;	        } else {&#xD;	          loadSlicesFromUrls(gl, tex, options, callback);&#xD;	        }&#xD;	      } else if (src instanceof HTMLElement) {&#xD;	        setTextureFromElement(gl, tex, src, options);&#xD;	        width = src.width;&#xD;	        height = src.height;&#xD;	      } else {&#xD;	        throw "unsupported src type";&#xD;	      }&#xD;	    } else {&#xD;	      setEmptyTexture(gl, tex, options);&#xD;	    }&#xD;	    if (options.auto !== false) {&#xD;	      setTextureFilteringForSize(gl, tex, options, width, height, internalFormat, type);&#xD;	    }&#xD;	    setTextureParameters(gl, tex, options);&#xD;	    return tex;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Resizes a texture based on the options passed in.&#xD;	   *&#xD;	   * Note: This is not a generic resize anything function.&#xD;	   * It&apos;s mostly used by {@link module:twgl.resizeFramebufferInfo}&#xD;	   * It will use `options.src` if it exists to try to determine a `type`&#xD;	   * otherwise it will assume `gl.UNSIGNED_BYTE`. No data is provided&#xD;	   * for the texture. Texture parameters will be set accordingly&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {WebGLTexture} tex the texture to resize&#xD;	   * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.&#xD;	   * @param {number} [width] the new width. If not passed in will use `options.width`&#xD;	   * @param {number} [height] the new height. If not passed in will use `options.height`&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function resizeTexture(gl, tex, options, width, height) {&#xD;	    width = width || options.width;&#xD;	    height = height || options.height;&#xD;	    var target = options.target || gl.TEXTURE_2D;&#xD;	    gl.bindTexture(target, tex);&#xD;	    var internalFormat = options.internalFormat || options.format || gl.RGBA;&#xD;	    var formatType = getFormatAndTypeForInternalFormat(internalFormat);&#xD;	    var format = options.format || formatType.format;&#xD;	    var type;&#xD;	    var src = options.src;&#xD;	    if (!src) {&#xD;	      type = options.type || formatType.type;&#xD;	    } else if (isArrayBuffer(src) || Array.isArray(src) &amp;&amp; typeof src[0] === &apos;number&apos;) {&#xD;	      type = options.type || getTextureTypeForArrayType(gl, src, formatType.type);&#xD;	    } else {&#xD;	      type = options.type || formatType.type;&#xD;	    }&#xD;	    if (target === gl.TEXTURE_CUBE_MAP) {&#xD;	      for (var ii = 0; ii &lt; 6; ++ii) {&#xD;	        gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + ii, 0, format, width, height, 0, format, type, null);&#xD;	      }&#xD;	    } else {&#xD;	      gl.texImage2D(target, 0, format, width, height, 0, format, type, null);&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Check if a src is an async request.&#xD;	   * if src is a string we&apos;re going to download an image&#xD;	   * if src is an array of strings we&apos;re going to download cubemap images&#xD;	   * @param {*} src The src from a TextureOptions&#xD;	   * @returns {bool} true if src is async.&#xD;	   */&#xD;	  function isAsyncSrc(src) {&#xD;	    return typeof src === &apos;string&apos; || Array.isArray(src) &amp;&amp; typeof src[0] === &apos;string&apos;;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a bunch of textures based on the passed in options.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *     var textures = twgl.createTextures(gl, {&#xD;	   *       // a power of 2 image&#xD;	   *       hftIcon: { src: "images/hft-icon-16.png", mag: gl.NEAREST },&#xD;	   *       // a non-power of 2 image&#xD;	   *       clover: { src: "images/clover.jpg" },&#xD;	   *       // From a canvas&#xD;	   *       fromCanvas: { src: ctx.canvas },&#xD;	   *       // A cubemap from 6 images&#xD;	   *       yokohama: {&#xD;	   *         target: gl.TEXTURE_CUBE_MAP,&#xD;	   *         src: [&#xD;	   *           &apos;images/yokohama/posx.jpg&apos;,&#xD;	   *           &apos;images/yokohama/negx.jpg&apos;,&#xD;	   *           &apos;images/yokohama/posy.jpg&apos;,&#xD;	   *           &apos;images/yokohama/negy.jpg&apos;,&#xD;	   *           &apos;images/yokohama/posz.jpg&apos;,&#xD;	   *           &apos;images/yokohama/negz.jpg&apos;,&#xD;	   *         ],&#xD;	   *       },&#xD;	   *       // A cubemap from 1 image (can be 1x6, 2x3, 3x2, 6x1)&#xD;	   *       goldengate: {&#xD;	   *         target: gl.TEXTURE_CUBE_MAP,&#xD;	   *         src: &apos;images/goldengate.jpg&apos;,&#xD;	   *       },&#xD;	   *       // A 2x2 pixel texture from a JavaScript array&#xD;	   *       checker: {&#xD;	   *         mag: gl.NEAREST,&#xD;	   *         min: gl.LINEAR,&#xD;	   *         src: [&#xD;	   *           255,255,255,255,&#xD;	   *           192,192,192,255,&#xD;	   *           192,192,192,255,&#xD;	   *           255,255,255,255,&#xD;	   *         ],&#xD;	   *       },&#xD;	   *       // a 1x2 pixel texture from a typed array.&#xD;	   *       stripe: {&#xD;	   *         mag: gl.NEAREST,&#xD;	   *         min: gl.LINEAR,&#xD;	   *         format: gl.LUMINANCE,&#xD;	   *         src: new Uint8Array([&#xD;	   *           255,&#xD;	   *           128,&#xD;	   *           255,&#xD;	   *           128,&#xD;	   *           255,&#xD;	   *           128,&#xD;	   *           255,&#xD;	   *           128,&#xD;	   *         ]),&#xD;	   *         width: 1,&#xD;	   *       },&#xD;	   *     });&#xD;	   *&#xD;	   * Now&#xD;	   *&#xD;	   * *   `textures.hftIcon` will be a 2d texture&#xD;	   * *   `textures.clover` will be a 2d texture&#xD;	   * *   `textures.fromCanvas` will be a 2d texture&#xD;	   * *   `textures.yohohama` will be a cubemap texture&#xD;	   * *   `textures.goldengate` will be a cubemap texture&#xD;	   * *   `textures.checker` will be a 2d texture&#xD;	   * *   `textures.stripe` will be a 2d texture&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl the WebGLRenderingContext&#xD;	   * @param {Object.&lt;string,module:twgl.TextureOptions&gt;} options A object of TextureOptions one per texture.&#xD;	   * @param {module:twgl.TexturesReadyCallback} [callback] A callback called when all textures have been downloaded.&#xD;	   * @return {Object.&lt;string,WebGLTexture&gt;} the created textures by name&#xD;	   * @memberOf module:twgl/textures&#xD;	   */&#xD;	  function createTextures(gl, textureOptions, callback) {&#xD;	    callback = callback || noop;&#xD;	    var numDownloading = 0;&#xD;	    var errors = [];&#xD;	    var textures = {};&#xD;	    var images = {};&#xD;&#xD;	    function callCallbackIfReady() {&#xD;	      if (numDownloading === 0) {&#xD;	        setTimeout(function () {&#xD;	          callback(errors.length ? errors : undefined, textures, images);&#xD;	        }, 0);&#xD;	      }&#xD;	    }&#xD;&#xD;	    Object.keys(textureOptions).forEach(function (name) {&#xD;	      var options = textureOptions[name];&#xD;	      var onLoadFn;&#xD;	      if (isAsyncSrc(options.src)) {&#xD;	        onLoadFn = function onLoadFn(err, tex, img) {&#xD;	          images[name] = img;&#xD;	          --numDownloading;&#xD;	          if (err) {&#xD;	            errors.push(err);&#xD;	          }&#xD;	          callCallbackIfReady();&#xD;	        };&#xD;	        ++numDownloading;&#xD;	      }&#xD;	      textures[name] = createTexture(gl, options, onLoadFn);&#xD;	    });&#xD;&#xD;	    // queue the callback if there are no images to download.&#xD;	    // We do this because if your code is structured to wait for&#xD;	    // images to download but then you comment out all the async&#xD;	    // images your code would break.&#xD;	    callCallbackIfReady();&#xD;&#xD;	    return textures;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "setDefaults_": setDefaults,&#xD;&#xD;	    "createSampler": createSampler,&#xD;	    "createSamplers": createSamplers,&#xD;	    "setSamplerParameters": setSamplerParameters,&#xD;&#xD;	    "createTexture": createTexture,&#xD;	    "setEmptyTexture": setEmptyTexture,&#xD;	    "setTextureFromArray": setTextureFromArray,&#xD;	    "loadTextureFromUrl": loadTextureFromUrl,&#xD;	    "setTextureFromElement": setTextureFromElement,&#xD;	    "setTextureFilteringForSize": setTextureFilteringForSize,&#xD;	    "setTextureParameters": setTextureParameters,&#xD;	    "setDefaultTextureColor": setDefaultTextureColor,&#xD;	    "createTextures": createTextures,&#xD;	    "resizeTexture": resizeTexture,&#xD;	    "getNumComponentsForFormat": getNumComponentsForFormat,&#xD;	    "getBytesPerElementForInternalFormat": getBytesPerElementForInternalFormat&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 9 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function (programs) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * vertex array object related functions&#xD;	   *&#xD;	   * You should generally not need to use these functions. They are provided&#xD;	   * for those cases where you&apos;re doing something out of the ordinary&#xD;	   * and you need lower level access.&#xD;	   *&#xD;	   * For backward compatibily they are available at both `twgl.attributes` and `twgl`&#xD;	   * itself&#xD;	   *&#xD;	   * See {@link module:twgl} for core functions&#xD;	   *&#xD;	   * @module twgl/vertexArrays&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} VertexArrayInfo&#xD;	   * @property {number} numElements The number of elements to pass to `gl.drawArrays` or `gl.drawElements`.&#xD;	   * @property {number} [elementType] The type of indices `UNSIGNED_BYTE`, `UNSIGNED_SHORT` etc..&#xD;	   * @property {WebGLVertexArrayObject} [vertexArrayObject] a vertex array object&#xD;	   * @memberOf module:twgl&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates a VertexArrayInfo from a BufferInfo and one or more ProgramInfos&#xD;	   *&#xD;	   * This can be passed to {@link module:twgl.setBuffersAndAttributes} and to&#xD;	   * {@link module:twgl:drawBufferInfo}.&#xD;	   *&#xD;	   * &gt; **IMPORTANT:** Vertex Array Objects are **not** a direct analog for a BufferInfo. Vertex Array Objects&#xD;	   *   assign buffers to specific attributes at creation time. That means they can only be used with programs&#xD;	   *   who&apos;s attributes use the same attribute locations for the same purposes.&#xD;	   *&#xD;	   * &gt; Bind your attribute locations by passing an array of attribute names to {@link module:twgl.createProgramInfo}&#xD;	   *   or use WebGL 2&apos;s GLSL ES 3&apos;s `layout(location = &lt;num&gt;)` to make sure locations match.&#xD;	   *&#xD;	   * also&#xD;	   *&#xD;	   * &gt; **IMPORTANT:** After calling twgl.setBuffersAndAttribute with a BufferInfo that uses a Vertex Array Object&#xD;	   *   that Vertex Array Object will be bound. That means **ANY MANIPULATION OF ELEMENT_ARRAY_BUFFER or ATTRIBUTES**&#xD;	   *   will affect the Vertex Array Object state.&#xD;	   *&#xD;	   * &gt; Call `gl.bindVertexArray(null)` to get back manipulating the global attributes and ELEMENT_ARRAY_BUFFER.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl A WebGLRenderingContext&#xD;	   * @param {module:twgl.ProgramInfo|module:twgl.ProgramInfo[]} programInfo a programInfo or array of programInfos&#xD;	   * @param {module:twgl.BufferInfo} bufferInfo BufferInfo as returned from createBufferInfoFromArrays etc...&#xD;	   *&#xD;	   *    You need to make sure every attribute that will be used is bound. So for example assume shader 1&#xD;	   *    uses attributes A, B, C and shader 2 uses attributes A, B, D. If you only pass in the programInfo&#xD;	   *    for shader 1 then only attributes A, B, and C will have their attributes set because TWGL doesn&apos;t&#xD;	   *    now attribute D&apos;s location.&#xD;	   *&#xD;	   *    So, you can pass in both shader 1 and shader 2&apos;s programInfo&#xD;	   *&#xD;	   * @return {module:twgl.VertexArrayInfo} The created VertexArrayInfo&#xD;	   *&#xD;	   * @memberOf module:twgl/vertexArrays&#xD;	   */&#xD;&#xD;	  function createVertexArrayInfo(gl, programInfos, bufferInfo) {&#xD;	    var vao = gl.createVertexArray();&#xD;	    gl.bindVertexArray(vao);&#xD;	    if (!programInfos.length) {&#xD;	      programInfos = [programInfos];&#xD;	    }&#xD;	    programInfos.forEach(function (programInfo) {&#xD;	      programs.setBuffersAndAttributes(gl, programInfo, bufferInfo);&#xD;	    });&#xD;	    gl.bindVertexArray(null);&#xD;	    return {&#xD;	      numElements: bufferInfo.numElements,&#xD;	      elementType: bufferInfo.elementType,&#xD;	      vertexArrayObject: vao&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a vertex array object and then sets the attributes on it&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.&#xD;	   * @param {Object.&lt;string, function&gt;} setters Attribute setters as returned from createAttributeSetters&#xD;	   * @param {Object.&lt;string, module:twgl.AttribInfo&gt;} attribs AttribInfos mapped by attribute name.&#xD;	   * @param {WebGLBuffer} [indices] an optional ELEMENT_ARRAY_BUFFER of indices&#xD;	   * @memberOf module:twgl/vertexArrays&#xD;	   */&#xD;	  function createVAOAndSetAttributes(gl, setters, attribs, indices) {&#xD;	    var vao = gl.createVertexArray();&#xD;	    gl.bindVertexArray(vao);&#xD;	    programs.setAttributes(setters, attribs);&#xD;	    if (indices) {&#xD;	      gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indices);&#xD;	    }&#xD;	    // We unbind this because otherwise any change to ELEMENT_ARRAY_BUFFER&#xD;	    // like when creating buffers for other stuff will mess up this VAO&apos;s binding&#xD;	    gl.bindVertexArray(null);&#xD;	    return vao;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a vertex array object and then sets the attributes&#xD;	   * on it&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext&#xD;	   *        to use.&#xD;	   * @param {Object.&lt;string, function&gt;| module:twgl.ProgramInfo} programInfo as returned from createProgramInfo or Attribute setters as returned from createAttributeSetters&#xD;	   * @param {module:twgl.BufferInfo} bufferInfo BufferInfo as returned from createBufferInfoFromArrays etc...&#xD;	   * @param {WebGLBuffer} [indices] an optional ELEMENT_ARRAY_BUFFER of indices&#xD;	   * @memberOf module:twgl/vertexArrays&#xD;	   */&#xD;	  function createVAOFromBufferInfo(gl, programInfo, bufferInfo) {&#xD;	    return createVAOAndSetAttributes(gl, programInfo.attribSetters || programInfo, bufferInfo.attribs, bufferInfo.indices);&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "createVertexArrayInfo": createVertexArrayInfo,&#xD;	    "createVAOAndSetAttributes": createVAOAndSetAttributes,&#xD;	    "createVAOFromBufferInfo": createVAOFromBufferInfo&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 10 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(11)], __WEBPACK_AMD_DEFINE_RESULT__ = function (v3) {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   * 4x4 Matrix math math functions.&#xD;	   *&#xD;	   * Almost all functions take an optional `dst` argument. If it is not passed in the&#xD;	   * functions will create a new matrix. In other words you can do this&#xD;	   *&#xD;	   *     var mat = m4.translation([1, 2, 3]);  // Creates a new translation matrix&#xD;	   *&#xD;	   * or&#xD;	   *&#xD;	   *     var mat = m4.create();&#xD;	   *     m4.translation([1, 2, 3], mat);  // Puts translation matrix in mat.&#xD;	   *&#xD;	   * The first style is often easier but depending on where it&apos;s used it generates garbage where&#xD;	   * as there is almost never allocation with the second style.&#xD;	   *&#xD;	   * It is always save to pass any matrix as the destination. So for example&#xD;	   *&#xD;	   *     var mat = m4.identity();&#xD;	   *     var trans = m4.translation([1, 2, 3]);&#xD;	   *     m4.multiply(mat, trans, mat);  // Multiplies mat * trans and puts result in mat.&#xD;	   *&#xD;	   * @module twgl/m4&#xD;	   */&#xD;&#xD;	  var MatType = Float32Array;&#xD;&#xD;	  var tempV3a = v3.create();&#xD;	  var tempV3b = v3.create();&#xD;	  var tempV3c = v3.create();&#xD;&#xD;	  /**&#xD;	   * A JavaScript array with 16 values or a Float32Array with 16 values.&#xD;	   * When created by the library will create the default type which is `Float32Array`&#xD;	   * but can be set by calling {@link module:twgl/m4.setDefaultType}.&#xD;	   * @typedef {(number[]|Float32Array)} Mat4&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Sets the type this library creates for a Mat4&#xD;	   * @param {constructor} ctor the constructor for the type. Either `Float32Array` or `Array`&#xD;	   * @return {constructor} previous constructor for Mat4&#xD;	   */&#xD;	  function setDefaultType(ctor) {&#xD;	    var oldType = MatType;&#xD;	    MatType = ctor;&#xD;	    return oldType;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Negates a matrix.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} -m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function negate(m, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = -m[0];&#xD;	    dst[1] = -m[1];&#xD;	    dst[2] = -m[2];&#xD;	    dst[3] = -m[3];&#xD;	    dst[4] = -m[4];&#xD;	    dst[5] = -m[5];&#xD;	    dst[6] = -m[6];&#xD;	    dst[7] = -m[7];&#xD;	    dst[8] = -m[8];&#xD;	    dst[9] = -m[9];&#xD;	    dst[10] = -m[10];&#xD;	    dst[11] = -m[11];&#xD;	    dst[12] = -m[12];&#xD;	    dst[13] = -m[13];&#xD;	    dst[14] = -m[14];&#xD;	    dst[15] = -m[15];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Copies a matrix.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] The matrix.&#xD;	   * @return {module:twgl/m4.Mat4} A copy of m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function copy(m, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = m[0];&#xD;	    dst[1] = m[1];&#xD;	    dst[2] = m[2];&#xD;	    dst[3] = m[3];&#xD;	    dst[4] = m[4];&#xD;	    dst[5] = m[5];&#xD;	    dst[6] = m[6];&#xD;	    dst[7] = m[7];&#xD;	    dst[8] = m[8];&#xD;	    dst[9] = m[9];&#xD;	    dst[10] = m[10];&#xD;	    dst[11] = m[11];&#xD;	    dst[12] = m[12];&#xD;	    dst[13] = m[13];&#xD;	    dst[14] = m[14];&#xD;	    dst[15] = m[15];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates an n-by-n identity matrix.&#xD;	   *&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} An n-by-n identity matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function identity(dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = 1;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = 1;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = 1;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Takes the transpose of a matrix.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The transpose of m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function transpose(m, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;	    if (dst === m) {&#xD;	      var t;&#xD;&#xD;	      t = m[1];&#xD;	      m[1] = m[4];&#xD;	      m[4] = t;&#xD;&#xD;	      t = m[2];&#xD;	      m[2] = m[8];&#xD;	      m[8] = t;&#xD;&#xD;	      t = m[3];&#xD;	      m[3] = m[12];&#xD;	      m[12] = t;&#xD;&#xD;	      t = m[6];&#xD;	      m[6] = m[9];&#xD;	      m[9] = t;&#xD;&#xD;	      t = m[7];&#xD;	      m[7] = m[13];&#xD;	      m[13] = t;&#xD;&#xD;	      t = m[11];&#xD;	      m[11] = m[14];&#xD;	      m[14] = t;&#xD;	      return dst;&#xD;	    }&#xD;&#xD;	    var m00 = m[0 * 4 + 0];&#xD;	    var m01 = m[0 * 4 + 1];&#xD;	    var m02 = m[0 * 4 + 2];&#xD;	    var m03 = m[0 * 4 + 3];&#xD;	    var m10 = m[1 * 4 + 0];&#xD;	    var m11 = m[1 * 4 + 1];&#xD;	    var m12 = m[1 * 4 + 2];&#xD;	    var m13 = m[1 * 4 + 3];&#xD;	    var m20 = m[2 * 4 + 0];&#xD;	    var m21 = m[2 * 4 + 1];&#xD;	    var m22 = m[2 * 4 + 2];&#xD;	    var m23 = m[2 * 4 + 3];&#xD;	    var m30 = m[3 * 4 + 0];&#xD;	    var m31 = m[3 * 4 + 1];&#xD;	    var m32 = m[3 * 4 + 2];&#xD;	    var m33 = m[3 * 4 + 3];&#xD;&#xD;	    dst[0] = m00;&#xD;	    dst[1] = m10;&#xD;	    dst[2] = m20;&#xD;	    dst[3] = m30;&#xD;	    dst[4] = m01;&#xD;	    dst[5] = m11;&#xD;	    dst[6] = m21;&#xD;	    dst[7] = m31;&#xD;	    dst[8] = m02;&#xD;	    dst[9] = m12;&#xD;	    dst[10] = m22;&#xD;	    dst[11] = m32;&#xD;	    dst[12] = m03;&#xD;	    dst[13] = m13;&#xD;	    dst[14] = m23;&#xD;	    dst[15] = m33;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the inverse of a 4-by-4 matrix.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The inverse of m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function inverse(m, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var m00 = m[0 * 4 + 0];&#xD;	    var m01 = m[0 * 4 + 1];&#xD;	    var m02 = m[0 * 4 + 2];&#xD;	    var m03 = m[0 * 4 + 3];&#xD;	    var m10 = m[1 * 4 + 0];&#xD;	    var m11 = m[1 * 4 + 1];&#xD;	    var m12 = m[1 * 4 + 2];&#xD;	    var m13 = m[1 * 4 + 3];&#xD;	    var m20 = m[2 * 4 + 0];&#xD;	    var m21 = m[2 * 4 + 1];&#xD;	    var m22 = m[2 * 4 + 2];&#xD;	    var m23 = m[2 * 4 + 3];&#xD;	    var m30 = m[3 * 4 + 0];&#xD;	    var m31 = m[3 * 4 + 1];&#xD;	    var m32 = m[3 * 4 + 2];&#xD;	    var m33 = m[3 * 4 + 3];&#xD;	    var tmp_0 = m22 * m33;&#xD;	    var tmp_1 = m32 * m23;&#xD;	    var tmp_2 = m12 * m33;&#xD;	    var tmp_3 = m32 * m13;&#xD;	    var tmp_4 = m12 * m23;&#xD;	    var tmp_5 = m22 * m13;&#xD;	    var tmp_6 = m02 * m33;&#xD;	    var tmp_7 = m32 * m03;&#xD;	    var tmp_8 = m02 * m23;&#xD;	    var tmp_9 = m22 * m03;&#xD;	    var tmp_10 = m02 * m13;&#xD;	    var tmp_11 = m12 * m03;&#xD;	    var tmp_12 = m20 * m31;&#xD;	    var tmp_13 = m30 * m21;&#xD;	    var tmp_14 = m10 * m31;&#xD;	    var tmp_15 = m30 * m11;&#xD;	    var tmp_16 = m10 * m21;&#xD;	    var tmp_17 = m20 * m11;&#xD;	    var tmp_18 = m00 * m31;&#xD;	    var tmp_19 = m30 * m01;&#xD;	    var tmp_20 = m00 * m21;&#xD;	    var tmp_21 = m20 * m01;&#xD;	    var tmp_22 = m00 * m11;&#xD;	    var tmp_23 = m10 * m01;&#xD;&#xD;	    var t0 = tmp_0 * m11 + tmp_3 * m21 + tmp_4 * m31 - (tmp_1 * m11 + tmp_2 * m21 + tmp_5 * m31);&#xD;	    var t1 = tmp_1 * m01 + tmp_6 * m21 + tmp_9 * m31 - (tmp_0 * m01 + tmp_7 * m21 + tmp_8 * m31);&#xD;	    var t2 = tmp_2 * m01 + tmp_7 * m11 + tmp_10 * m31 - (tmp_3 * m01 + tmp_6 * m11 + tmp_11 * m31);&#xD;	    var t3 = tmp_5 * m01 + tmp_8 * m11 + tmp_11 * m21 - (tmp_4 * m01 + tmp_9 * m11 + tmp_10 * m21);&#xD;&#xD;	    var d = 1.0 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3);&#xD;&#xD;	    dst[0] = d * t0;&#xD;	    dst[1] = d * t1;&#xD;	    dst[2] = d * t2;&#xD;	    dst[3] = d * t3;&#xD;	    dst[4] = d * (tmp_1 * m10 + tmp_2 * m20 + tmp_5 * m30 - (tmp_0 * m10 + tmp_3 * m20 + tmp_4 * m30));&#xD;	    dst[5] = d * (tmp_0 * m00 + tmp_7 * m20 + tmp_8 * m30 - (tmp_1 * m00 + tmp_6 * m20 + tmp_9 * m30));&#xD;	    dst[6] = d * (tmp_3 * m00 + tmp_6 * m10 + tmp_11 * m30 - (tmp_2 * m00 + tmp_7 * m10 + tmp_10 * m30));&#xD;	    dst[7] = d * (tmp_4 * m00 + tmp_9 * m10 + tmp_10 * m20 - (tmp_5 * m00 + tmp_8 * m10 + tmp_11 * m20));&#xD;	    dst[8] = d * (tmp_12 * m13 + tmp_15 * m23 + tmp_16 * m33 - (tmp_13 * m13 + tmp_14 * m23 + tmp_17 * m33));&#xD;	    dst[9] = d * (tmp_13 * m03 + tmp_18 * m23 + tmp_21 * m33 - (tmp_12 * m03 + tmp_19 * m23 + tmp_20 * m33));&#xD;	    dst[10] = d * (tmp_14 * m03 + tmp_19 * m13 + tmp_22 * m33 - (tmp_15 * m03 + tmp_18 * m13 + tmp_23 * m33));&#xD;	    dst[11] = d * (tmp_17 * m03 + tmp_20 * m13 + tmp_23 * m23 - (tmp_16 * m03 + tmp_21 * m13 + tmp_22 * m23));&#xD;	    dst[12] = d * (tmp_14 * m22 + tmp_17 * m32 + tmp_13 * m12 - (tmp_16 * m32 + tmp_12 * m12 + tmp_15 * m22));&#xD;	    dst[13] = d * (tmp_20 * m32 + tmp_12 * m02 + tmp_19 * m22 - (tmp_18 * m22 + tmp_21 * m32 + tmp_13 * m02));&#xD;	    dst[14] = d * (tmp_18 * m12 + tmp_23 * m32 + tmp_15 * m02 - (tmp_22 * m32 + tmp_14 * m02 + tmp_19 * m12));&#xD;	    dst[15] = d * (tmp_22 * m22 + tmp_16 * m02 + tmp_21 * m12 - (tmp_20 * m12 + tmp_23 * m22 + tmp_17 * m02));&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Multiplies two 4-by-4 matrices with a on the left and b on the right&#xD;	   * @param {module:twgl/m4.Mat4} a The matrix on the left.&#xD;	   * @param {module:twgl/m4.Mat4} b The matrix on the right.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The matrix product of a and b.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function multiply(a, b, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var a00 = a[0];&#xD;	    var a01 = a[1];&#xD;	    var a02 = a[2];&#xD;	    var a03 = a[3];&#xD;	    var a10 = a[4 + 0];&#xD;	    var a11 = a[4 + 1];&#xD;	    var a12 = a[4 + 2];&#xD;	    var a13 = a[4 + 3];&#xD;	    var a20 = a[8 + 0];&#xD;	    var a21 = a[8 + 1];&#xD;	    var a22 = a[8 + 2];&#xD;	    var a23 = a[8 + 3];&#xD;	    var a30 = a[12 + 0];&#xD;	    var a31 = a[12 + 1];&#xD;	    var a32 = a[12 + 2];&#xD;	    var a33 = a[12 + 3];&#xD;	    var b00 = b[0];&#xD;	    var b01 = b[1];&#xD;	    var b02 = b[2];&#xD;	    var b03 = b[3];&#xD;	    var b10 = b[4 + 0];&#xD;	    var b11 = b[4 + 1];&#xD;	    var b12 = b[4 + 2];&#xD;	    var b13 = b[4 + 3];&#xD;	    var b20 = b[8 + 0];&#xD;	    var b21 = b[8 + 1];&#xD;	    var b22 = b[8 + 2];&#xD;	    var b23 = b[8 + 3];&#xD;	    var b30 = b[12 + 0];&#xD;	    var b31 = b[12 + 1];&#xD;	    var b32 = b[12 + 2];&#xD;	    var b33 = b[12 + 3];&#xD;&#xD;	    dst[0] = a00 * b00 + a10 * b01 + a20 * b02 + a30 * b03;&#xD;	    dst[1] = a01 * b00 + a11 * b01 + a21 * b02 + a31 * b03;&#xD;	    dst[2] = a02 * b00 + a12 * b01 + a22 * b02 + a32 * b03;&#xD;	    dst[3] = a03 * b00 + a13 * b01 + a23 * b02 + a33 * b03;&#xD;	    dst[4] = a00 * b10 + a10 * b11 + a20 * b12 + a30 * b13;&#xD;	    dst[5] = a01 * b10 + a11 * b11 + a21 * b12 + a31 * b13;&#xD;	    dst[6] = a02 * b10 + a12 * b11 + a22 * b12 + a32 * b13;&#xD;	    dst[7] = a03 * b10 + a13 * b11 + a23 * b12 + a33 * b13;&#xD;	    dst[8] = a00 * b20 + a10 * b21 + a20 * b22 + a30 * b23;&#xD;	    dst[9] = a01 * b20 + a11 * b21 + a21 * b22 + a31 * b23;&#xD;	    dst[10] = a02 * b20 + a12 * b21 + a22 * b22 + a32 * b23;&#xD;	    dst[11] = a03 * b20 + a13 * b21 + a23 * b22 + a33 * b23;&#xD;	    dst[12] = a00 * b30 + a10 * b31 + a20 * b32 + a30 * b33;&#xD;	    dst[13] = a01 * b30 + a11 * b31 + a21 * b32 + a31 * b33;&#xD;	    dst[14] = a02 * b30 + a12 * b31 + a22 * b32 + a32 * b33;&#xD;	    dst[15] = a03 * b30 + a13 * b31 + a23 * b32 + a33 * b33;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets the translation component of a 4-by-4 matrix to the given&#xD;	   * vector.&#xD;	   * @param {module:twgl/m4.Mat4} a The matrix.&#xD;	   * @param {Vec3} v The vector.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} a once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function setTranslation(a, v, dst) {&#xD;	    dst = dst || identity();&#xD;	    if (a !== dst) {&#xD;	      dst[0] = a[0];&#xD;	      dst[1] = a[1];&#xD;	      dst[2] = a[2];&#xD;	      dst[3] = a[3];&#xD;	      dst[4] = a[4];&#xD;	      dst[5] = a[5];&#xD;	      dst[6] = a[6];&#xD;	      dst[7] = a[7];&#xD;	      dst[8] = a[8];&#xD;	      dst[9] = a[9];&#xD;	      dst[10] = a[10];&#xD;	      dst[11] = a[11];&#xD;	    }&#xD;	    dst[12] = v[0];&#xD;	    dst[13] = v[1];&#xD;	    dst[14] = v[2];&#xD;	    dst[15] = 1;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Returns the translation component of a 4-by-4 matrix as a vector with 3&#xD;	   * entries.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} [dst] vector..&#xD;	   * @return {Vec3} The translation component of m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function getTranslation(m, dst) {&#xD;	    dst = dst || v3.create();&#xD;	    dst[0] = m[12];&#xD;	    dst[1] = m[13];&#xD;	    dst[2] = m[14];&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Returns an axis of a 4x4 matrix as a vector with 3 entries&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {number} axis The axis 0 = x, 1 = y, 2 = z;&#xD;	   * @return {Vec3} [dst] vector.&#xD;	   * @return {Vec3} The axis component of m.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function getAxis(m, axis, dst) {&#xD;	    dst = dst || v3.create();&#xD;	    var off = axis * 4;&#xD;	    dst[0] = m[off + 0];&#xD;	    dst[1] = m[off + 1];&#xD;	    dst[2] = m[off + 2];&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Sets an axis of a 4x4 matrix as a vector with 3 entries&#xD;	   * @param {Vec3} v the axis vector&#xD;	   * @param {number} axis The axis  0 = x, 1 = y, 2 = z;&#xD;	   * @param {module:twgl/m4.Mat4} [dst] The matrix to set. If none a new one is created&#xD;	   * @return {module:twgl/m4.Mat4} dst&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function setAxis(a, v, axis, dst) {&#xD;	    if (dst !== a) {&#xD;	      dst = copy(a, dst);&#xD;	    }&#xD;	    var off = axis * 4;&#xD;	    dst[off + 0] = v[0];&#xD;	    dst[off + 1] = v[1];&#xD;	    dst[off + 2] = v[2];&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes a 4-by-4 perspective transformation matrix given the angular height&#xD;	   * of the frustum, the aspect ratio, and the near and far clipping planes.  The&#xD;	   * arguments define a frustum extending in the negative z direction.  The given&#xD;	   * angle is the vertical angle of the frustum, and the horizontal angle is&#xD;	   * determined to produce the given aspect ratio.  The arguments near and far are&#xD;	   * the distances to the near and far clipping planes.  Note that near and far&#xD;	   * are not z coordinates, but rather they are distances along the negative&#xD;	   * z-axis.  The matrix generated sends the viewing frustum to the unit box.&#xD;	   * We assume a unit box extending from -1 to 1 in the x and y dimensions and&#xD;	   * from 0 to 1 in the z dimension.&#xD;	   * @param {number} fieldOfViewYInRadians The camera angle from top to bottom (in radians).&#xD;	   * @param {number} aspect The aspect ratio width / height.&#xD;	   * @param {number} zNear The depth (negative z coordinate)&#xD;	   *     of the near clipping plane.&#xD;	   * @param {number} zFar The depth (negative z coordinate)&#xD;	   *     of the far clipping plane.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The perspective matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function perspective(fieldOfViewYInRadians, aspect, zNear, zFar, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var f = Math.tan(Math.PI * 0.5 - 0.5 * fieldOfViewYInRadians);&#xD;	    var rangeInv = 1.0 / (zNear - zFar);&#xD;&#xD;	    dst[0] = f / aspect;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = f;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = (zNear + zFar) * rangeInv;&#xD;	    dst[11] = -1;&#xD;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = zNear * zFar * rangeInv * 2;&#xD;	    dst[15] = 0;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes a 4-by-4 othogonal transformation matrix given the left, right,&#xD;	   * bottom, and top dimensions of the near clipping plane as well as the&#xD;	   * near and far clipping plane distances.&#xD;	   * @param {number} left Left side of the near clipping plane viewport.&#xD;	   * @param {number} right Right side of the near clipping plane viewport.&#xD;	   * @param {number} top Top of the near clipping plane viewport.&#xD;	   * @param {number} bottom Bottom of the near clipping plane viewport.&#xD;	   * @param {number} near The depth (negative z coordinate)&#xD;	   *     of the near clipping plane.&#xD;	   * @param {number} far The depth (negative z coordinate)&#xD;	   *     of the far clipping plane.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] Output matrix.&#xD;	   * @return {module:twgl/m4.Mat4} The perspective matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function ortho(left, right, bottom, top, near, far, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = 2 / (right - left);&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = 2 / (top - bottom);&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = -1 / (far - near);&#xD;	    dst[11] = 0;&#xD;&#xD;	    dst[12] = (right + left) / (left - right);&#xD;	    dst[13] = (top + bottom) / (bottom - top);&#xD;	    dst[14] = -near / (near - far);&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes a 4-by-4 perspective transformation matrix given the left, right,&#xD;	   * top, bottom, near and far clipping planes. The arguments define a frustum&#xD;	   * extending in the negative z direction. The arguments near and far are the&#xD;	   * distances to the near and far clipping planes. Note that near and far are not&#xD;	   * z coordinates, but rather they are distances along the negative z-axis. The&#xD;	   * matrix generated sends the viewing frustum to the unit box. We assume a unit&#xD;	   * box extending from -1 to 1 in the x and y dimensions and from 0 to 1 in the z&#xD;	   * dimension.&#xD;	   * @param {number} left The x coordinate of the left plane of the box.&#xD;	   * @param {number} right The x coordinate of the right plane of the box.&#xD;	   * @param {number} bottom The y coordinate of the bottom plane of the box.&#xD;	   * @param {number} top The y coordinate of the right plane of the box.&#xD;	   * @param {number} near The negative z coordinate of the near plane of the box.&#xD;	   * @param {number} far The negative z coordinate of the far plane of the box.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] Output matrix.&#xD;	   * @return {module:twgl/m4.Mat4} The perspective projection matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function frustum(left, right, bottom, top, near, far, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var dx = right - left;&#xD;	    var dy = top - bottom;&#xD;	    var dz = near - far;&#xD;&#xD;	    dst[0] = 2 * near / dx;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = 2 * near / dy;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = (left + right) / dx;&#xD;	    dst[9] = (top + bottom) / dy;&#xD;	    dst[10] = far / dz;&#xD;	    dst[11] = -1;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = near * far / dz;&#xD;	    dst[15] = 0;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes a 4-by-4 look-at transformation.&#xD;	   *&#xD;	   * This is a matrix which positions the camera itself. If you want&#xD;	   * a view matrix (a matrix which moves things in front of the camera)&#xD;	   * take the inverse of this.&#xD;	   *&#xD;	   * @param {Vec3} eye The position of the eye.&#xD;	   * @param {Vec3} target The position meant to be viewed.&#xD;	   * @param {Vec3} up A vector pointing up.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The look-at matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function lookAt(eye, target, up, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var xAxis = tempV3a;&#xD;	    var yAxis = tempV3b;&#xD;	    var zAxis = tempV3c;&#xD;&#xD;	    v3.normalize(v3.subtract(eye, target, zAxis), zAxis);&#xD;	    v3.normalize(v3.cross(up, zAxis, xAxis), xAxis);&#xD;	    v3.normalize(v3.cross(zAxis, xAxis, yAxis), yAxis);&#xD;&#xD;	    dst[0] = xAxis[0];&#xD;	    dst[1] = xAxis[1];&#xD;	    dst[2] = xAxis[2];&#xD;	    dst[3] = 0;&#xD;	    dst[4] = yAxis[0];&#xD;	    dst[5] = yAxis[1];&#xD;	    dst[6] = yAxis[2];&#xD;	    dst[7] = 0;&#xD;	    dst[8] = zAxis[0];&#xD;	    dst[9] = zAxis[1];&#xD;	    dst[10] = zAxis[2];&#xD;	    dst[11] = 0;&#xD;	    dst[12] = eye[0];&#xD;	    dst[13] = eye[1];&#xD;	    dst[14] = eye[2];&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which translates by the given vector v.&#xD;	   * @param {Vec3} v The vector by&#xD;	   *     which to translate.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The translation matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function translation(v, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = 1;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = 1;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = 1;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = v[0];&#xD;	    dst[13] = v[1];&#xD;	    dst[14] = v[2];&#xD;	    dst[15] = 1;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix by translation by the given vector v.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} v The vector by&#xD;	   *     which to translate.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function translate(m, v, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;	    var m00 = m[0];&#xD;	    var m01 = m[1];&#xD;	    var m02 = m[2];&#xD;	    var m03 = m[3];&#xD;	    var m10 = m[1 * 4 + 0];&#xD;	    var m11 = m[1 * 4 + 1];&#xD;	    var m12 = m[1 * 4 + 2];&#xD;	    var m13 = m[1 * 4 + 3];&#xD;	    var m20 = m[2 * 4 + 0];&#xD;	    var m21 = m[2 * 4 + 1];&#xD;	    var m22 = m[2 * 4 + 2];&#xD;	    var m23 = m[2 * 4 + 3];&#xD;	    var m30 = m[3 * 4 + 0];&#xD;	    var m31 = m[3 * 4 + 1];&#xD;	    var m32 = m[3 * 4 + 2];&#xD;	    var m33 = m[3 * 4 + 3];&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[0] = m00;&#xD;	      dst[1] = m01;&#xD;	      dst[2] = m02;&#xD;	      dst[3] = m03;&#xD;	      dst[4] = m10;&#xD;	      dst[5] = m11;&#xD;	      dst[6] = m12;&#xD;	      dst[7] = m13;&#xD;	      dst[8] = m20;&#xD;	      dst[9] = m21;&#xD;	      dst[10] = m22;&#xD;	      dst[11] = m23;&#xD;	    }&#xD;&#xD;	    dst[12] = m00 * v0 + m10 * v1 + m20 * v2 + m30;&#xD;	    dst[13] = m01 * v0 + m11 * v1 + m21 * v2 + m31;&#xD;	    dst[14] = m02 * v0 + m12 * v1 + m22 * v2 + m32;&#xD;	    dst[15] = m03 * v0 + m13 * v1 + m23 * v2 + m33;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The rotation matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotationX(angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[0] = 1;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = c;&#xD;	    dst[6] = s;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = -s;&#xD;	    dst[10] = c;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix by a rotation around the x-axis by the given&#xD;	   * angle.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotateX(m, angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var m10 = m[4];&#xD;	    var m11 = m[5];&#xD;	    var m12 = m[6];&#xD;	    var m13 = m[7];&#xD;	    var m20 = m[8];&#xD;	    var m21 = m[9];&#xD;	    var m22 = m[10];&#xD;	    var m23 = m[11];&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[4] = c * m10 + s * m20;&#xD;	    dst[5] = c * m11 + s * m21;&#xD;	    dst[6] = c * m12 + s * m22;&#xD;	    dst[7] = c * m13 + s * m23;&#xD;	    dst[8] = c * m20 - s * m10;&#xD;	    dst[9] = c * m21 - s * m11;&#xD;	    dst[10] = c * m22 - s * m12;&#xD;	    dst[11] = c * m23 - s * m13;&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[0] = m[0];&#xD;	      dst[1] = m[1];&#xD;	      dst[2] = m[2];&#xD;	      dst[3] = m[3];&#xD;	      dst[12] = m[12];&#xD;	      dst[13] = m[13];&#xD;	      dst[14] = m[14];&#xD;	      dst[15] = m[15];&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The rotation matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotationY(angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[0] = c;&#xD;	    dst[1] = 0;&#xD;	    dst[2] = -s;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = 1;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = s;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = c;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix by a rotation around the y-axis by the given&#xD;	   * angle.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotateY(m, angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var m00 = m[0 * 4 + 0];&#xD;	    var m01 = m[0 * 4 + 1];&#xD;	    var m02 = m[0 * 4 + 2];&#xD;	    var m03 = m[0 * 4 + 3];&#xD;	    var m20 = m[2 * 4 + 0];&#xD;	    var m21 = m[2 * 4 + 1];&#xD;	    var m22 = m[2 * 4 + 2];&#xD;	    var m23 = m[2 * 4 + 3];&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[0] = c * m00 - s * m20;&#xD;	    dst[1] = c * m01 - s * m21;&#xD;	    dst[2] = c * m02 - s * m22;&#xD;	    dst[3] = c * m03 - s * m23;&#xD;	    dst[8] = c * m20 + s * m00;&#xD;	    dst[9] = c * m21 + s * m01;&#xD;	    dst[10] = c * m22 + s * m02;&#xD;	    dst[11] = c * m23 + s * m03;&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[4] = m[4];&#xD;	      dst[5] = m[5];&#xD;	      dst[6] = m[6];&#xD;	      dst[7] = m[7];&#xD;	      dst[12] = m[12];&#xD;	      dst[13] = m[13];&#xD;	      dst[14] = m[14];&#xD;	      dst[15] = m[15];&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The rotation matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotationZ(angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[0] = c;&#xD;	    dst[1] = s;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = -s;&#xD;	    dst[5] = c;&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = 1;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix by a rotation around the z-axis by the given&#xD;	   * angle.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function rotateZ(m, angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var m00 = m[0 * 4 + 0];&#xD;	    var m01 = m[0 * 4 + 1];&#xD;	    var m02 = m[0 * 4 + 2];&#xD;	    var m03 = m[0 * 4 + 3];&#xD;	    var m10 = m[1 * 4 + 0];&#xD;	    var m11 = m[1 * 4 + 1];&#xD;	    var m12 = m[1 * 4 + 2];&#xD;	    var m13 = m[1 * 4 + 3];&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;&#xD;	    dst[0] = c * m00 + s * m10;&#xD;	    dst[1] = c * m01 + s * m11;&#xD;	    dst[2] = c * m02 + s * m12;&#xD;	    dst[3] = c * m03 + s * m13;&#xD;	    dst[4] = c * m10 - s * m00;&#xD;	    dst[5] = c * m11 - s * m01;&#xD;	    dst[6] = c * m12 - s * m02;&#xD;	    dst[7] = c * m13 - s * m03;&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[8] = m[8];&#xD;	      dst[9] = m[9];&#xD;	      dst[10] = m[10];&#xD;	      dst[11] = m[11];&#xD;	      dst[12] = m[12];&#xD;	      dst[13] = m[13];&#xD;	      dst[14] = m[14];&#xD;	      dst[15] = m[15];&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which rotates around the given axis by the given&#xD;	   * angle.&#xD;	   * @param {Vec3} axis The axis&#xD;	   *     about which to rotate.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} A matrix which rotates angle radians&#xD;	   *     around the axis.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function axisRotation(axis, angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var x = axis[0];&#xD;	    var y = axis[1];&#xD;	    var z = axis[2];&#xD;	    var n = Math.sqrt(x * x + y * y + z * z);&#xD;	    x /= n;&#xD;	    y /= n;&#xD;	    z /= n;&#xD;	    var xx = x * x;&#xD;	    var yy = y * y;&#xD;	    var zz = z * z;&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;	    var oneMinusCosine = 1 - c;&#xD;&#xD;	    dst[0] = xx + (1 - xx) * c;&#xD;	    dst[1] = x * y * oneMinusCosine + z * s;&#xD;	    dst[2] = x * z * oneMinusCosine - y * s;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = x * y * oneMinusCosine - z * s;&#xD;	    dst[5] = yy + (1 - yy) * c;&#xD;	    dst[6] = y * z * oneMinusCosine + x * s;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = x * z * oneMinusCosine + y * s;&#xD;	    dst[9] = y * z * oneMinusCosine - x * s;&#xD;	    dst[10] = zz + (1 - zz) * c;&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix by rotation around the given axis by the&#xD;	   * given angle.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} axis The axis&#xD;	   *     about which to rotate.&#xD;	   * @param {number} angleInRadians The angle by which to rotate (in radians).&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function axisRotate(m, axis, angleInRadians, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var x = axis[0];&#xD;	    var y = axis[1];&#xD;	    var z = axis[2];&#xD;	    var n = Math.sqrt(x * x + y * y + z * z);&#xD;	    x /= n;&#xD;	    y /= n;&#xD;	    z /= n;&#xD;	    var xx = x * x;&#xD;	    var yy = y * y;&#xD;	    var zz = z * z;&#xD;	    var c = Math.cos(angleInRadians);&#xD;	    var s = Math.sin(angleInRadians);&#xD;	    var oneMinusCosine = 1 - c;&#xD;&#xD;	    var r00 = xx + (1 - xx) * c;&#xD;	    var r01 = x * y * oneMinusCosine + z * s;&#xD;	    var r02 = x * z * oneMinusCosine - y * s;&#xD;	    var r10 = x * y * oneMinusCosine - z * s;&#xD;	    var r11 = yy + (1 - yy) * c;&#xD;	    var r12 = y * z * oneMinusCosine + x * s;&#xD;	    var r20 = x * z * oneMinusCosine + y * s;&#xD;	    var r21 = y * z * oneMinusCosine - x * s;&#xD;	    var r22 = zz + (1 - zz) * c;&#xD;&#xD;	    var m00 = m[0];&#xD;	    var m01 = m[1];&#xD;	    var m02 = m[2];&#xD;	    var m03 = m[3];&#xD;	    var m10 = m[4];&#xD;	    var m11 = m[5];&#xD;	    var m12 = m[6];&#xD;	    var m13 = m[7];&#xD;	    var m20 = m[8];&#xD;	    var m21 = m[9];&#xD;	    var m22 = m[10];&#xD;	    var m23 = m[11];&#xD;&#xD;	    dst[0] = r00 * m00 + r01 * m10 + r02 * m20;&#xD;	    dst[1] = r00 * m01 + r01 * m11 + r02 * m21;&#xD;	    dst[2] = r00 * m02 + r01 * m12 + r02 * m22;&#xD;	    dst[3] = r00 * m03 + r01 * m13 + r02 * m23;&#xD;	    dst[4] = r10 * m00 + r11 * m10 + r12 * m20;&#xD;	    dst[5] = r10 * m01 + r11 * m11 + r12 * m21;&#xD;	    dst[6] = r10 * m02 + r11 * m12 + r12 * m22;&#xD;	    dst[7] = r10 * m03 + r11 * m13 + r12 * m23;&#xD;	    dst[8] = r20 * m00 + r21 * m10 + r22 * m20;&#xD;	    dst[9] = r20 * m01 + r21 * m11 + r22 * m21;&#xD;	    dst[10] = r20 * m02 + r21 * m12 + r22 * m22;&#xD;	    dst[11] = r20 * m03 + r21 * m13 + r22 * m23;&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[12] = m[12];&#xD;	      dst[13] = m[13];&#xD;	      dst[14] = m[14];&#xD;	      dst[15] = m[15];&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a 4-by-4 matrix which scales in each dimension by an amount given by&#xD;	   * the corresponding entry in the given vector; assumes the vector has three&#xD;	   * entries.&#xD;	   * @param {Vec3} v A vector of&#xD;	   *     three entries specifying the factor by which to scale in each dimension.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} The scaling matrix.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function scaling(v, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    dst[0] = v[0];&#xD;	    dst[1] = 0;&#xD;	    dst[2] = 0;&#xD;	    dst[3] = 0;&#xD;	    dst[4] = 0;&#xD;	    dst[5] = v[1];&#xD;	    dst[6] = 0;&#xD;	    dst[7] = 0;&#xD;	    dst[8] = 0;&#xD;	    dst[9] = 0;&#xD;	    dst[10] = v[2];&#xD;	    dst[11] = 0;&#xD;	    dst[12] = 0;&#xD;	    dst[13] = 0;&#xD;	    dst[14] = 0;&#xD;	    dst[15] = 1;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Modifies the given 4-by-4 matrix, scaling in each dimension by an amount&#xD;	   * given by the corresponding entry in the given vector; assumes the vector has&#xD;	   * three entries.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix to be modified.&#xD;	   * @param {Vec3} v A vector of three entries specifying the&#xD;	   *     factor by which to scale in each dimension.&#xD;	   * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If none new one is created..&#xD;	   * @return {module:twgl/m4.Mat4} m once modified.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function scale(m, v, dst) {&#xD;	    dst = dst || new MatType(16);&#xD;&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;&#xD;	    dst[0] = v0 * m[0 * 4 + 0];&#xD;	    dst[1] = v0 * m[0 * 4 + 1];&#xD;	    dst[2] = v0 * m[0 * 4 + 2];&#xD;	    dst[3] = v0 * m[0 * 4 + 3];&#xD;	    dst[4] = v1 * m[1 * 4 + 0];&#xD;	    dst[5] = v1 * m[1 * 4 + 1];&#xD;	    dst[6] = v1 * m[1 * 4 + 2];&#xD;	    dst[7] = v1 * m[1 * 4 + 3];&#xD;	    dst[8] = v2 * m[2 * 4 + 0];&#xD;	    dst[9] = v2 * m[2 * 4 + 1];&#xD;	    dst[10] = v2 * m[2 * 4 + 2];&#xD;	    dst[11] = v2 * m[2 * 4 + 3];&#xD;&#xD;	    if (m !== dst) {&#xD;	      dst[12] = m[12];&#xD;	      dst[13] = m[13];&#xD;	      dst[14] = m[14];&#xD;	      dst[15] = m[15];&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Takes a 4-by-4 matrix and a vector with 3 entries,&#xD;	   * interprets the vector as a point, transforms that point by the matrix, and&#xD;	   * returns the result as a vector with 3 entries.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} v The point.&#xD;	   * @param {Vec3} dst optional vec3 to store result&#xD;	   * @return {Vec3} dst or new vec3 if not provided&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function transformPoint(m, v, dst) {&#xD;	    dst = dst || v3.create();&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;	    var d = v0 * m[0 * 4 + 3] + v1 * m[1 * 4 + 3] + v2 * m[2 * 4 + 3] + m[3 * 4 + 3];&#xD;&#xD;	    dst[0] = (v0 * m[0 * 4 + 0] + v1 * m[1 * 4 + 0] + v2 * m[2 * 4 + 0] + m[3 * 4 + 0]) / d;&#xD;	    dst[1] = (v0 * m[0 * 4 + 1] + v1 * m[1 * 4 + 1] + v2 * m[2 * 4 + 1] + m[3 * 4 + 1]) / d;&#xD;	    dst[2] = (v0 * m[0 * 4 + 2] + v1 * m[1 * 4 + 2] + v2 * m[2 * 4 + 2] + m[3 * 4 + 2]) / d;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Takes a 4-by-4 matrix and a vector with 3 entries, interprets the vector as a&#xD;	   * direction, transforms that direction by the matrix, and returns the result;&#xD;	   * assumes the transformation of 3-dimensional space represented by the matrix&#xD;	   * is parallel-preserving, i.e. any combination of rotation, scaling and&#xD;	   * translation, but not a perspective distortion. Returns a vector with 3&#xD;	   * entries.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} v The direction.&#xD;	   * @param {Vec3} dst optional Vec3 to store result&#xD;	   * @return {Vec3} dst or new Vec3 if not provided&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function transformDirection(m, v, dst) {&#xD;	    dst = dst || v3.create();&#xD;&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;&#xD;	    dst[0] = v0 * m[0 * 4 + 0] + v1 * m[1 * 4 + 0] + v2 * m[2 * 4 + 0];&#xD;	    dst[1] = v0 * m[0 * 4 + 1] + v1 * m[1 * 4 + 1] + v2 * m[2 * 4 + 1];&#xD;	    dst[2] = v0 * m[0 * 4 + 2] + v1 * m[1 * 4 + 2] + v2 * m[2 * 4 + 2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Takes a 4-by-4 matrix m and a vector v with 3 entries, interprets the vector&#xD;	   * as a normal to a surface, and computes a vector which is normal upon&#xD;	   * transforming that surface by the matrix. The effect of this function is the&#xD;	   * same as transforming v (as a direction) by the inverse-transpose of m.  This&#xD;	   * function assumes the transformation of 3-dimensional space represented by the&#xD;	   * matrix is parallel-preserving, i.e. any combination of rotation, scaling and&#xD;	   * translation, but not a perspective distortion.  Returns a vector with 3&#xD;	   * entries.&#xD;	   * @param {module:twgl/m4.Mat4} m The matrix.&#xD;	   * @param {Vec3} v The normal.&#xD;	   * @param {Vec3} [dst] The direction.&#xD;	   * @return {Vec3} The transformed direction.&#xD;	   * @memberOf module:twgl/m4&#xD;	   */&#xD;	  function transformNormal(m, v, dst) {&#xD;	    dst = dst || v3.create();&#xD;	    var mi = inverse(m);&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;&#xD;	    dst[0] = v0 * mi[0 * 4 + 0] + v1 * mi[0 * 4 + 1] + v2 * mi[0 * 4 + 2];&#xD;	    dst[1] = v0 * mi[1 * 4 + 0] + v1 * mi[1 * 4 + 1] + v2 * mi[1 * 4 + 2];&#xD;	    dst[2] = v0 * mi[2 * 4 + 0] + v1 * mi[2 * 4 + 1] + v2 * mi[2 * 4 + 2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "axisRotate": axisRotate,&#xD;	    "axisRotation": axisRotation,&#xD;	    "create": identity,&#xD;	    "copy": copy,&#xD;	    "frustum": frustum,&#xD;	    "getAxis": getAxis,&#xD;	    "getTranslation": getTranslation,&#xD;	    "identity": identity,&#xD;	    "inverse": inverse,&#xD;	    "lookAt": lookAt,&#xD;	    "multiply": multiply,&#xD;	    "negate": negate,&#xD;	    "ortho": ortho,&#xD;	    "perspective": perspective,&#xD;	    "rotateX": rotateX,&#xD;	    "rotateY": rotateY,&#xD;	    "rotateZ": rotateZ,&#xD;	    "rotateAxis": axisRotate,&#xD;	    "rotationX": rotationX,&#xD;	    "rotationY": rotationY,&#xD;	    "rotationZ": rotationZ,&#xD;	    "scale": scale,&#xD;	    "scaling": scaling,&#xD;	    "setAxis": setAxis,&#xD;	    "setDefaultType": setDefaultType,&#xD;	    "setTranslation": setTranslation,&#xD;	    "transformDirection": transformDirection,&#xD;	    "transformNormal": transformNormal,&#xD;	    "transformPoint": transformPoint,&#xD;	    "translate": translate,&#xD;	    "translation": translation,&#xD;	    "transpose": transpose&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 11 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict";&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {&#xD;	  "use strict";&#xD;&#xD;	  /**&#xD;	   *&#xD;	   * Vec3 math math functions.&#xD;	   *&#xD;	   * Almost all functions take an optional `dst` argument. If it is not passed in the&#xD;	   * functions will create a new Vec3. In other words you can do this&#xD;	   *&#xD;	   *     var v = v3.cross(v1, v2);  // Creates a new Vec3 with the cross product of v1 x v2.&#xD;	   *&#xD;	   * or&#xD;	   *&#xD;	   *     var v3 = v3.create();&#xD;	   *     v3.cross(v1, v2, v);  // Puts the cross product of v1 x v2 in v&#xD;	   *&#xD;	   * The first style is often easier but depending on where it&apos;s used it generates garbage where&#xD;	   * as there is almost never allocation with the second style.&#xD;	   *&#xD;	   * It is always save to pass any vector as the destination. So for example&#xD;	   *&#xD;	   *     v3.cross(v1, v2, v1);  // Puts the cross product of v1 x v2 in v1&#xD;	   *&#xD;	   * @module twgl/v3&#xD;	   */&#xD;&#xD;	  var VecType = Float32Array;&#xD;&#xD;	  /**&#xD;	   * A JavaScript array with 3 values or a Float32Array with 3 values.&#xD;	   * When created by the library will create the default type which is `Float32Array`&#xD;	   * but can be set by calling {@link module:twgl/v3.setDefaultType}.&#xD;	   * @typedef {(number[]|Float32Array)} Vec3&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Sets the type this library creates for a Vec3&#xD;	   * @param {constructor} ctor the constructor for the type. Either `Float32Array` or `Array`&#xD;	   * @return {constructor} previous constructor for Vec3&#xD;	   */&#xD;	  function setDefaultType(ctor) {&#xD;	    var oldType = VecType;&#xD;	    VecType = ctor;&#xD;	    return oldType;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a vec3; may be called with x, y, z to set initial values.&#xD;	   * @return {Vec3} the created vector&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function create(x, y, z) {&#xD;	    var dst = new VecType(3);&#xD;	    if (x) {&#xD;	      dst[0] = x;&#xD;	    }&#xD;	    if (y) {&#xD;	      dst[1] = y;&#xD;	    }&#xD;	    if (z) {&#xD;	      dst[2] = z;&#xD;	    }&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Adds two vectors; assumes a and b have the same dimension.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function add(a, b, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = a[0] + b[0];&#xD;	    dst[1] = a[1] + b[1];&#xD;	    dst[2] = a[2] + b[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Subtracts two vectors.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function subtract(a, b, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = a[0] - b[0];&#xD;	    dst[1] = a[1] - b[1];&#xD;	    dst[2] = a[2] - b[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Performs linear interpolation on two vectors.&#xD;	   * Given vectors a and b and interpolation coefficient t, returns&#xD;	   * (1 - t) * a + t * b.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {number} t Interpolation coefficient.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function lerp(a, b, t, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = (1 - t) * a[0] + t * b[0];&#xD;	    dst[1] = (1 - t) * a[1] + t * b[1];&#xD;	    dst[2] = (1 - t) * a[2] + t * b[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Mutiplies a vector by a scalar.&#xD;	   * @param {module:twgl/v3.Vec3} v The vector.&#xD;	   * @param {number} k The scalar.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} dst.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function mulScalar(v, k, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = v[0] * k;&#xD;	    dst[1] = v[1] * k;&#xD;	    dst[2] = v[2] * k;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Divides a vector by a scalar.&#xD;	   * @param {module:twgl/v3.Vec3} v The vector.&#xD;	   * @param {number} k The scalar.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} dst.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function divScalar(v, k, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = v[0] / k;&#xD;	    dst[1] = v[1] / k;&#xD;	    dst[2] = v[2] / k;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the cross product of two vectors; assumes both vectors have&#xD;	   * three entries.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} The vector a cross b.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function cross(a, b, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    var t1 = a[2] * b[0] - a[0] * b[2];&#xD;	    var t2 = a[0] * b[1] - a[1] * b[0];&#xD;	    dst[0] = a[1] * b[2] - a[2] * b[1];&#xD;	    dst[1] = t1;&#xD;	    dst[2] = t2;&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the dot product of two vectors; assumes both vectors have&#xD;	   * three entries.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @return {number} dot product&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function dot(a, b) {&#xD;	    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the length of vector&#xD;	   * @param {module:twgl/v3.Vec3} v vector.&#xD;	   * @return {number} length of vector.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function length(v) {&#xD;	    return Math.sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the square of the length of vector&#xD;	   * @param {module:twgl/v3.Vec3} v vector.&#xD;	   * @return {number} square of the length of vector.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function lengthSq(v) {&#xD;	    return v[0] * v[0] + v[1] * v[1] + v[2] * v[2];&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the distance between 2 points&#xD;	   * @param {module:twgl/v3.Vec3} a vector.&#xD;	   * @param {module:twgl/v3.Vec3} b vector.&#xD;	   * @return {number} distance between a and b&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function distance(a, b) {&#xD;	    var dx = a[0] - b[0];&#xD;	    var dy = a[1] - b[1];&#xD;	    var dz = a[2] - b[2];&#xD;	    return Math.sqrt(dx * dx + dy * dy + dz * dz);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Computes the square of the distance between 2 points&#xD;	   * @param {module:twgl/v3.Vec3} a vector.&#xD;	   * @param {module:twgl/v3.Vec3} b vector.&#xD;	   * @return {number} square of the distance between a and b&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function distanceSq(a, b) {&#xD;	    var dx = a[0] - b[0];&#xD;	    var dy = a[1] - b[1];&#xD;	    var dz = a[2] - b[2];&#xD;	    return dx * dx + dy * dy + dz * dz;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Divides a vector by its Euclidean length and returns the quotient.&#xD;	   * @param {module:twgl/v3.Vec3} a The vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} The normalized vector.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function normalize(a, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    var lenSq = a[0] * a[0] + a[1] * a[1] + a[2] * a[2];&#xD;	    var len = Math.sqrt(lenSq);&#xD;	    if (len &gt; 0.00001) {&#xD;	      dst[0] = a[0] / len;&#xD;	      dst[1] = a[1] / len;&#xD;	      dst[2] = a[2] / len;&#xD;	    } else {&#xD;	      dst[0] = 0;&#xD;	      dst[1] = 0;&#xD;	      dst[2] = 0;&#xD;	    }&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Negates a vector.&#xD;	   * @param {module:twgl/v3.Vec3} v The vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} -v.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function negate(v, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = -v[0];&#xD;	    dst[1] = -v[1];&#xD;	    dst[2] = -v[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Copies a vector.&#xD;	   * @param {module:twgl/v3.Vec3} v The vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} A copy of v.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function copy(v, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = v[0];&#xD;	    dst[1] = v[1];&#xD;	    dst[2] = v[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Multiplies a vector by another vector (component-wise); assumes a and&#xD;	   * b have the same length.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} The vector of products of entries of a and&#xD;	   *     b.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function multiply(a, b, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = a[0] * b[0];&#xD;	    dst[1] = a[1] * b[1];&#xD;	    dst[2] = a[2] * b[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Divides a vector by another vector (component-wise); assumes a and&#xD;	   * b have the same length.&#xD;	   * @param {module:twgl/v3.Vec3} a Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} b Operand vector.&#xD;	   * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created..&#xD;	   * @return {module:twgl/v3.Vec3} The vector of quotients of entries of a and&#xD;	   *     b.&#xD;	   * @memberOf module:twgl/v3&#xD;	   */&#xD;	  function divide(a, b, dst) {&#xD;	    dst = dst || new VecType(3);&#xD;&#xD;	    dst[0] = a[0] / b[0];&#xD;	    dst[1] = a[1] / b[1];&#xD;	    dst[2] = a[2] / b[2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "add": add,&#xD;	    "copy": copy,&#xD;	    "create": create,&#xD;	    "cross": cross,&#xD;	    "distance": distance,&#xD;	    "distanceSq": distanceSq,&#xD;	    "divide": divide,&#xD;	    "divScalar": divScalar,&#xD;	    "dot": dot,&#xD;	    "lerp": lerp,&#xD;	    "length": length,&#xD;	    "lengthSq": lengthSq,&#xD;	    "mulScalar": mulScalar,&#xD;	    "multiply": multiply,&#xD;	    "negate": negate,&#xD;	    "normalize": normalize,&#xD;	    "setDefaultType": setDefaultType,&#xD;	    "subtract": subtract&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ },&#xD;/* 12 */&#xD;/***/ function(module, exports, __webpack_require__) {&#xD;&#xD;	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;&apos;use strict&apos;;&#xD;&#xD;	/*&#xD;	 * Copyright 2015, Gregg Tavares.&#xD;	 * All rights reserved.&#xD;	 *&#xD;	 * Redistribution and use in source and binary forms, with or without&#xD;	 * modification, are permitted provided that the following conditions are&#xD;	 * met:&#xD;	 *&#xD;	 *     * Redistributions of source code must retain the above copyright&#xD;	 * notice, this list of conditions and the following disclaimer.&#xD;	 *     * Redistributions in binary form must reproduce the above&#xD;	 * copyright notice, this list of conditions and the following disclaimer&#xD;	 * in the documentation and/or other materials provided with the&#xD;	 * distribution.&#xD;	 *     * Neither the name of Gregg Tavares. nor the names of his&#xD;	 * contributors may be used to endorse or promote products derived from&#xD;	 * this software without specific prior written permission.&#xD;	 *&#xD;	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&#xD;	 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&#xD;	 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&#xD;	 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT&#xD;	 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,&#xD;	 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT&#xD;	 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,&#xD;	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY&#xD;	 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT&#xD;	 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE&#xD;	 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&#xD;	 */&#xD;&#xD;	/**&#xD;	 * Various functions to make simple primitives&#xD;	 *&#xD;	 * note: Most primitive functions come in 3 styles&#xD;	 *&#xD;	 * *  `createSomeShapeBufferInfo`&#xD;	 *&#xD;	 *    These functions are almost always the functions you want to call. They&#xD;	 *    create vertices then make WebGLBuffers and create {@link module:twgl.AttribInfo}s&#xD;	 *    returing a {@link module:twgl.BufferInfo} you can pass to {@link module:twgl.setBuffersAndAttributes}&#xD;	 *    and {@link module:twgl.drawBufferInfo} etc...&#xD;	 *&#xD;	 * *  `createSomeShapeBuffers`&#xD;	 *&#xD;	 *    These create WebGLBuffers and put your data in them but nothing else.&#xD;	 *    It&apos;s a shortcut to doing it yourself if you don&apos;t want to use&#xD;	 *    the higher level functions.&#xD;	 *&#xD;	 * *  `createSomeShapeVertices`&#xD;	 *&#xD;	 *    These just create vertices, no buffers. This allows you to manipulate the vertices&#xD;	 *    or add more data before generating a {@link module:twgl.BufferInfo}. Once you&apos;re finished&#xD;	 *    manipulating the vertices call {@link module:twgl.createBufferInfoFromArrays}.&#xD;	 *&#xD;	 *    example:&#xD;	 *&#xD;	 *        var arrays = twgl.primitives.createPlaneArrays(1);&#xD;	 *        twgl.primitives.reorientVertices(arrays, m4.rotationX(Math.PI * 0.5));&#xD;	 *        var bufferInfo = twgl.createBufferInfoFromArrays(gl, arrays);&#xD;	 *&#xD;	 * @module twgl/primitives&#xD;	 */&#xD;	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2), __webpack_require__(4), __webpack_require__(10), __webpack_require__(11)], __WEBPACK_AMD_DEFINE_RESULT__ = function (attributes, utils, m4, v3) {&#xD;	  "use strict";&#xD;&#xD;	  var getArray = attributes.getArray_; // eslint-disable-line&#xD;	  var getNumComponents = attributes.getNumComponents_; // eslint-disable-line&#xD;&#xD;	  /**&#xD;	   * Add `push` to a typed array. It just keeps a &apos;cursor&apos;&#xD;	   * and allows use to `push` values into the array so we&#xD;	   * don&apos;t have to manually compute offsets&#xD;	   * @param {TypedArray} typedArray TypedArray to augment&#xD;	   * @param {number} numComponents number of components.&#xD;	   */&#xD;	  function augmentTypedArray(typedArray, numComponents) {&#xD;	    var cursor = 0;&#xD;	    typedArray.push = function () {&#xD;	      for (var ii = 0; ii &lt; arguments.length; ++ii) {&#xD;	        var value = arguments[ii];&#xD;	        if (value instanceof Array || value.buffer &amp;&amp; value.buffer instanceof ArrayBuffer) {&#xD;	          for (var jj = 0; jj &lt; value.length; ++jj) {&#xD;	            typedArray[cursor++] = value[jj];&#xD;	          }&#xD;	        } else {&#xD;	          typedArray[cursor++] = value;&#xD;	        }&#xD;	      }&#xD;	    };&#xD;	    typedArray.reset = function (opt_index) {&#xD;	      cursor = opt_index || 0;&#xD;	    };&#xD;	    typedArray.numComponents = numComponents;&#xD;	    Object.defineProperty(typedArray, &apos;numElements&apos;, {&#xD;	      get: function get() {&#xD;	        return this.length / this.numComponents | 0;&#xD;	      }&#xD;	    });&#xD;	    return typedArray;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * creates a typed array with a `push` function attached&#xD;	   * so that you can easily *push* values.&#xD;	   *&#xD;	   * `push` can take multiple arguments. If an argument is an array each element&#xD;	   * of the array will be added to the typed array.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *     var array = createAugmentedTypedArray(3, 2);  // creates a Float32Array with 6 values&#xD;	   *     array.push(1, 2, 3);&#xD;	   *     array.push([4, 5, 6]);&#xD;	   *     // array now contains [1, 2, 3, 4, 5, 6]&#xD;	   *&#xD;	   * Also has `numComponents` and `numElements` properties.&#xD;	   *&#xD;	   * @param {number} numComponents number of components&#xD;	   * @param {number} numElements number of elements. The total size of the array will be `numComponents * numElements`.&#xD;	   * @param {constructor} opt_type A constructor for the type. Default = `Float32Array`.&#xD;	   * @return {ArrayBuffer} A typed array.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createAugmentedTypedArray(numComponents, numElements, opt_type) {&#xD;	    var Type = opt_type || Float32Array;&#xD;	    return augmentTypedArray(new Type(numComponents * numElements), numComponents);&#xD;	  }&#xD;&#xD;	  function allButIndices(name) {&#xD;	    return name !== "indices";&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Given indexed vertices creates a new set of vertices unindexed by expanding the indexed vertices.&#xD;	   * @param {Object.&lt;string, TypedArray&gt;} vertices The indexed vertices to deindex&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The deindexed vertices&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function deindexVertices(vertices) {&#xD;	    var indices = vertices.indices;&#xD;	    var newVertices = {};&#xD;	    var numElements = indices.length;&#xD;&#xD;	    function expandToUnindexed(channel) {&#xD;	      var srcBuffer = vertices[channel];&#xD;	      var numComponents = srcBuffer.numComponents;&#xD;	      var dstBuffer = createAugmentedTypedArray(numComponents, numElements, srcBuffer.constructor);&#xD;	      for (var ii = 0; ii &lt; numElements; ++ii) {&#xD;	        var ndx = indices[ii];&#xD;	        var offset = ndx * numComponents;&#xD;	        for (var jj = 0; jj &lt; numComponents; ++jj) {&#xD;	          dstBuffer.push(srcBuffer[offset + jj]);&#xD;	        }&#xD;	      }&#xD;	      newVertices[channel] = dstBuffer;&#xD;	    }&#xD;&#xD;	    Object.keys(vertices).filter(allButIndices).forEach(expandToUnindexed);&#xD;&#xD;	    return newVertices;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * flattens the normals of deindexed vertices in place.&#xD;	   * @param {Object.&lt;string, TypedArray&gt;} vertices The deindexed vertices who&apos;s normals to flatten&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The flattened vertices (same as was passed in)&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function flattenNormals(vertices) {&#xD;	    if (vertices.indices) {&#xD;	      throw "can&apos;t flatten normals of indexed vertices. deindex them first";&#xD;	    }&#xD;&#xD;	    var normals = vertices.normal;&#xD;	    var numNormals = normals.length;&#xD;	    for (var ii = 0; ii &lt; numNormals; ii += 9) {&#xD;	      // pull out the 3 normals for this triangle&#xD;	      var nax = normals[ii + 0];&#xD;	      var nay = normals[ii + 1];&#xD;	      var naz = normals[ii + 2];&#xD;&#xD;	      var nbx = normals[ii + 3];&#xD;	      var nby = normals[ii + 4];&#xD;	      var nbz = normals[ii + 5];&#xD;&#xD;	      var ncx = normals[ii + 6];&#xD;	      var ncy = normals[ii + 7];&#xD;	      var ncz = normals[ii + 8];&#xD;&#xD;	      // add them&#xD;	      var nx = nax + nbx + ncx;&#xD;	      var ny = nay + nby + ncy;&#xD;	      var nz = naz + nbz + ncz;&#xD;&#xD;	      // normalize them&#xD;	      var length = Math.sqrt(nx * nx + ny * ny + nz * nz);&#xD;&#xD;	      nx /= length;&#xD;	      ny /= length;&#xD;	      nz /= length;&#xD;&#xD;	      // copy them back in&#xD;	      normals[ii + 0] = nx;&#xD;	      normals[ii + 1] = ny;&#xD;	      normals[ii + 2] = nz;&#xD;&#xD;	      normals[ii + 3] = nx;&#xD;	      normals[ii + 4] = ny;&#xD;	      normals[ii + 5] = nz;&#xD;&#xD;	      normals[ii + 6] = nx;&#xD;	      normals[ii + 7] = ny;&#xD;	      normals[ii + 8] = nz;&#xD;	    }&#xD;&#xD;	    return vertices;&#xD;	  }&#xD;&#xD;	  function applyFuncToV3Array(array, matrix, fn) {&#xD;	    var len = array.length;&#xD;	    var tmp = new Float32Array(3);&#xD;	    for (var ii = 0; ii &lt; len; ii += 3) {&#xD;	      fn(matrix, [array[ii], array[ii + 1], array[ii + 2]], tmp);&#xD;	      array[ii] = tmp[0];&#xD;	      array[ii + 1] = tmp[1];&#xD;	      array[ii + 2] = tmp[2];&#xD;	    }&#xD;	  }&#xD;&#xD;	  function transformNormal(mi, v, dst) {&#xD;	    dst = dst || v3.create();&#xD;	    var v0 = v[0];&#xD;	    var v1 = v[1];&#xD;	    var v2 = v[2];&#xD;&#xD;	    dst[0] = v0 * mi[0 * 4 + 0] + v1 * mi[0 * 4 + 1] + v2 * mi[0 * 4 + 2];&#xD;	    dst[1] = v0 * mi[1 * 4 + 0] + v1 * mi[1 * 4 + 1] + v2 * mi[1 * 4 + 2];&#xD;	    dst[2] = v0 * mi[2 * 4 + 0] + v1 * mi[2 * 4 + 1] + v2 * mi[2 * 4 + 2];&#xD;&#xD;	    return dst;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Reorients directions by the given matrix..&#xD;	   * @param {number[]|TypedArray} array The array. Assumes value floats per element.&#xD;	   * @param {Matrix} matrix A matrix to multiply by.&#xD;	   * @return {number[]|TypedArray} the same array that was passed in&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function reorientDirections(array, matrix) {&#xD;	    applyFuncToV3Array(array, matrix, m4.transformDirection);&#xD;	    return array;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Reorients normals by the inverse-transpose of the given&#xD;	   * matrix..&#xD;	   * @param {number[]|TypedArray} array The array. Assumes value floats per element.&#xD;	   * @param {Matrix} matrix A matrix to multiply by.&#xD;	   * @return {number[]|TypedArray} the same array that was passed in&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function reorientNormals(array, matrix) {&#xD;	    applyFuncToV3Array(array, m4.inverse(matrix), transformNormal);&#xD;	    return array;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Reorients positions by the given matrix. In other words, it&#xD;	   * multiplies each vertex by the given matrix.&#xD;	   * @param {number[]|TypedArray} array The array. Assumes value floats per element.&#xD;	   * @param {Matrix} matrix A matrix to multiply by.&#xD;	   * @return {number[]|TypedArray} the same array that was passed in&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function reorientPositions(array, matrix) {&#xD;	    applyFuncToV3Array(array, matrix, m4.transformPoint);&#xD;	    return array;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Reorients arrays by the given matrix. Assumes arrays have&#xD;	   * names that contains &apos;pos&apos; could be reoriented as positions,&#xD;	   * &apos;binorm&apos; or &apos;tan&apos; as directions, and &apos;norm&apos; as normals.&#xD;	   *&#xD;	   * @param {Object.&lt;string, (number[]|TypedArray)&gt;} arrays The vertices to reorient&#xD;	   * @param {Matrix} matrix matrix to reorient by.&#xD;	   * @return {Object.&lt;string, (number[]|TypedArray)&gt;} same arrays that were passed in.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function reorientVertices(arrays, matrix) {&#xD;	    Object.keys(arrays).forEach(function (name) {&#xD;	      var array = arrays[name];&#xD;	      if (name.indexOf("pos") &gt;= 0) {&#xD;	        reorientPositions(array, matrix);&#xD;	      } else if (name.indexOf("tan") &gt;= 0 || name.indexOf("binorm") &gt;= 0) {&#xD;	        reorientDirections(array, matrix);&#xD;	      } else if (name.indexOf("norm") &gt;= 0) {&#xD;	        reorientNormals(array, matrix);&#xD;	      }&#xD;	    });&#xD;	    return arrays;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates XY quad BufferInfo&#xD;	   *&#xD;	   * The default with no parameters will return a 2x2 quad with values from -1 to +1.&#xD;	   * If you want a unit quad with that goes from 0 to 1 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0.5, 0.5);&#xD;	   *&#xD;	   * If you want a unit quad centered above 0,0 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0, 0.5);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1&#xD;	   * @param {number} [xOffset] the amount to offset the quad in X&#xD;	   * @param {number} [yOffset] the amount to offset the quad in Y&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} the created XY Quad BufferInfo&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createXYQuadBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates XY quad Buffers&#xD;	   *&#xD;	   * The default with no parameters will return a 2x2 quad with values from -1 to +1.&#xD;	   * If you want a unit quad with that goes from 0 to 1 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0.5, 0.5);&#xD;	   *&#xD;	   * If you want a unit quad centered above 0,0 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0, 0.5);&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1&#xD;	   * @param {number} [xOffset] the amount to offset the quad in X&#xD;	   * @param {number} [yOffset] the amount to offset the quad in Y&#xD;	   * @return {module:twgl.BufferInfo} the created XY Quad buffers&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createXYQuadBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates XY quad vertices&#xD;	   *&#xD;	   * The default with no parameters will return a 2x2 quad with values from -1 to +1.&#xD;	   * If you want a unit quad with that goes from 0 to 1 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadVertices(1, 0.5, 0.5);&#xD;	   *&#xD;	   * If you want a unit quad centered above 0,0 you&apos;d call it with&#xD;	   *&#xD;	   *     twgl.primitives.createXYQuadVertices(1, 0, 0.5);&#xD;	   *&#xD;	   * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1&#xD;	   * @param {number} [xOffset] the amount to offset the quad in X&#xD;	   * @param {number} [yOffset] the amount to offset the quad in Y&#xD;	   * @return {Object.&lt;string, TypedArray&gt; the created XY Quad vertices&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createXYQuadVertices(size, xOffset, yOffset) {&#xD;	    size = size || 2;&#xD;	    xOffset = xOffset || 0;&#xD;	    yOffset = yOffset || 0;&#xD;	    size *= 0.5;&#xD;	    return {&#xD;	      position: {&#xD;	        numComponents: 2,&#xD;	        data: [xOffset + -1 * size, yOffset + -1 * size, xOffset + 1 * size, yOffset + -1 * size, xOffset + -1 * size, yOffset + 1 * size, xOffset + 1 * size, yOffset + 1 * size]&#xD;	      },&#xD;	      normal: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],&#xD;	      texcoord: [0, 0, 1, 0, 0, 1, 1, 1],&#xD;	      indices: [0, 1, 2, 2, 1, 3]&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates XZ plane BufferInfo.&#xD;	   *&#xD;	   * The created plane has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [width] Width of the plane. Default = 1&#xD;	   * @param {number} [depth] Depth of the plane. Default = 1&#xD;	   * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1&#xD;	   * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1&#xD;	   * @param {Matrix4} [matrix] A matrix by which to multiply all the vertices.&#xD;	   * @return {@module:twgl.BufferInfo} The created plane BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createPlaneBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates XZ plane buffers.&#xD;	   *&#xD;	   * The created plane has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [width] Width of the plane. Default = 1&#xD;	   * @param {number} [depth] Depth of the plane. Default = 1&#xD;	   * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1&#xD;	   * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1&#xD;	   * @param {Matrix4} [matrix] A matrix by which to multiply all the vertices.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created plane buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createPlaneBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates XZ plane vertices.&#xD;	   *&#xD;	   * The created plane has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {number} [width] Width of the plane. Default = 1&#xD;	   * @param {number} [depth] Depth of the plane. Default = 1&#xD;	   * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1&#xD;	   * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1&#xD;	   * @param {Matrix4} [matrix] A matrix by which to multiply all the vertices.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created plane vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createPlaneVertices(width, depth, subdivisionsWidth, subdivisionsDepth, matrix) {&#xD;	    width = width || 1;&#xD;	    depth = depth || 1;&#xD;	    subdivisionsWidth = subdivisionsWidth || 1;&#xD;	    subdivisionsDepth = subdivisionsDepth || 1;&#xD;	    matrix = matrix || m4.identity();&#xD;&#xD;	    var numVertices = (subdivisionsWidth + 1) * (subdivisionsDepth + 1);&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;&#xD;	    for (var z = 0; z &lt;= subdivisionsDepth; z++) {&#xD;	      for (var x = 0; x &lt;= subdivisionsWidth; x++) {&#xD;	        var u = x / subdivisionsWidth;&#xD;	        var v = z / subdivisionsDepth;&#xD;	        positions.push(width * u - width * 0.5, 0, depth * v - depth * 0.5);&#xD;	        normals.push(0, 1, 0);&#xD;	        texcoords.push(u, v);&#xD;	      }&#xD;	    }&#xD;&#xD;	    var numVertsAcross = subdivisionsWidth + 1;&#xD;	    var indices = createAugmentedTypedArray(3, subdivisionsWidth * subdivisionsDepth * 2, Uint16Array);&#xD;&#xD;	    for (var z = 0; z &lt; subdivisionsDepth; z++) {&#xD;	      // eslint-disable-line&#xD;	      for (var x = 0; x &lt; subdivisionsWidth; x++) {&#xD;	        // eslint-disable-line&#xD;	        // Make triangle 1 of quad.&#xD;	        indices.push((z + 0) * numVertsAcross + x, (z + 1) * numVertsAcross + x, (z + 0) * numVertsAcross + x + 1);&#xD;&#xD;	        // Make triangle 2 of quad.&#xD;	        indices.push((z + 1) * numVertsAcross + x, (z + 1) * numVertsAcross + x + 1, (z + 0) * numVertsAcross + x + 1);&#xD;	      }&#xD;	    }&#xD;&#xD;	    var arrays = reorientVertices({&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    }, matrix);&#xD;	    return arrays;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates sphere BufferInfo.&#xD;	   *&#xD;	   * The created sphere has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius radius of the sphere.&#xD;	   * @param {number} subdivisionsAxis number of steps around the sphere.&#xD;	   * @param {number} subdivisionsHeight number of vertically on the sphere.&#xD;	   * @param {number} [opt_startLatitudeInRadians] where to start the&#xD;	   *     top of the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLatitudeInRadians] Where to end the&#xD;	   *     bottom of the sphere. Default = Math.PI.&#xD;	   * @param {number} [opt_startLongitudeInRadians] where to start&#xD;	   *     wrapping the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLongitudeInRadians] where to end&#xD;	   *     wrapping the sphere. Default = 2 * Math.PI.&#xD;	   * @return {module:twgl.BufferInfo} The created sphere BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createSphereBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates sphere buffers.&#xD;	   *&#xD;	   * The created sphere has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius radius of the sphere.&#xD;	   * @param {number} subdivisionsAxis number of steps around the sphere.&#xD;	   * @param {number} subdivisionsHeight number of vertically on the sphere.&#xD;	   * @param {number} [opt_startLatitudeInRadians] where to start the&#xD;	   *     top of the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLatitudeInRadians] Where to end the&#xD;	   *     bottom of the sphere. Default = Math.PI.&#xD;	   * @param {number} [opt_startLongitudeInRadians] where to start&#xD;	   *     wrapping the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLongitudeInRadians] where to end&#xD;	   *     wrapping the sphere. Default = 2 * Math.PI.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created sphere buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createSphereBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates sphere vertices.&#xD;	   *&#xD;	   * The created sphere has position, normal, and texcoord data&#xD;	   *&#xD;	   * @param {number} radius radius of the sphere.&#xD;	   * @param {number} subdivisionsAxis number of steps around the sphere.&#xD;	   * @param {number} subdivisionsHeight number of vertically on the sphere.&#xD;	   * @param {number} [opt_startLatitudeInRadians] where to start the&#xD;	   *     top of the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLatitudeInRadians] Where to end the&#xD;	   *     bottom of the sphere. Default = Math.PI.&#xD;	   * @param {number} [opt_startLongitudeInRadians] where to start&#xD;	   *     wrapping the sphere. Default = 0.&#xD;	   * @param {number} [opt_endLongitudeInRadians] where to end&#xD;	   *     wrapping the sphere. Default = 2 * Math.PI.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created sphere vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createSphereVertices(radius, subdivisionsAxis, subdivisionsHeight, opt_startLatitudeInRadians, opt_endLatitudeInRadians, opt_startLongitudeInRadians, opt_endLongitudeInRadians) {&#xD;	    if (subdivisionsAxis &lt;= 0 || subdivisionsHeight &lt;= 0) {&#xD;	      throw Error(&apos;subdivisionAxis and subdivisionHeight must be &gt; 0&apos;);&#xD;	    }&#xD;&#xD;	    opt_startLatitudeInRadians = opt_startLatitudeInRadians || 0;&#xD;	    opt_endLatitudeInRadians = opt_endLatitudeInRadians || Math.PI;&#xD;	    opt_startLongitudeInRadians = opt_startLongitudeInRadians || 0;&#xD;	    opt_endLongitudeInRadians = opt_endLongitudeInRadians || Math.PI * 2;&#xD;&#xD;	    var latRange = opt_endLatitudeInRadians - opt_startLatitudeInRadians;&#xD;	    var longRange = opt_endLongitudeInRadians - opt_startLongitudeInRadians;&#xD;&#xD;	    // We are going to generate our sphere by iterating through its&#xD;	    // spherical coordinates and generating 2 triangles for each quad on a&#xD;	    // ring of the sphere.&#xD;	    var numVertices = (subdivisionsAxis + 1) * (subdivisionsHeight + 1);&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;&#xD;	    // Generate the individual vertices in our vertex buffer.&#xD;	    for (var y = 0; y &lt;= subdivisionsHeight; y++) {&#xD;	      for (var x = 0; x &lt;= subdivisionsAxis; x++) {&#xD;	        // Generate a vertex based on its spherical coordinates&#xD;	        var u = x / subdivisionsAxis;&#xD;	        var v = y / subdivisionsHeight;&#xD;	        var theta = longRange * u;&#xD;	        var phi = latRange * v;&#xD;	        var sinTheta = Math.sin(theta);&#xD;	        var cosTheta = Math.cos(theta);&#xD;	        var sinPhi = Math.sin(phi);&#xD;	        var cosPhi = Math.cos(phi);&#xD;	        var ux = cosTheta * sinPhi;&#xD;	        var uy = cosPhi;&#xD;	        var uz = sinTheta * sinPhi;&#xD;	        positions.push(radius * ux, radius * uy, radius * uz);&#xD;	        normals.push(ux, uy, uz);&#xD;	        texcoords.push(1 - u, v);&#xD;	      }&#xD;	    }&#xD;&#xD;	    var numVertsAround = subdivisionsAxis + 1;&#xD;	    var indices = createAugmentedTypedArray(3, subdivisionsAxis * subdivisionsHeight * 2, Uint16Array);&#xD;	    for (var x = 0; x &lt; subdivisionsAxis; x++) {&#xD;	      // eslint-disable-line&#xD;	      for (var y = 0; y &lt; subdivisionsHeight; y++) {&#xD;	        // eslint-disable-line&#xD;	        // Make triangle 1 of quad.&#xD;	        indices.push((y + 0) * numVertsAround + x, (y + 0) * numVertsAround + x + 1, (y + 1) * numVertsAround + x);&#xD;&#xD;	        // Make triangle 2 of quad.&#xD;	        indices.push((y + 1) * numVertsAround + x, (y + 0) * numVertsAround + x + 1, (y + 1) * numVertsAround + x + 1);&#xD;	      }&#xD;	    }&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Array of the indices of corners of each face of a cube.&#xD;	   * @type {Array.&lt;number[]&gt;}&#xD;	   */&#xD;	  var CUBE_FACE_INDICES = [[3, 7, 5, 1], // right&#xD;	  [6, 2, 0, 4], // left&#xD;	  [6, 7, 3, 2], // ??&#xD;	  [0, 1, 5, 4], // ??&#xD;	  [7, 6, 4, 5], // front&#xD;	  [2, 3, 1, 0]];&#xD;&#xD;	  /**&#xD;	   * Creates a BufferInfo for a cube.&#xD;	   *&#xD;	   * The cube is created around the origin. (-size / 2, size / 2).&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [size] width, height and depth of the cube.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCubeBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates the buffers and indices for a cube.&#xD;	   *&#xD;	   * The cube is created around the origin. (-size / 2, size / 2).&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} [size] width, height and depth of the cube.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCubeBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates the vertices and indices for a cube.&#xD;	   *&#xD;	   * The cube is created around the origin. (-size / 2, size / 2).&#xD;	   *&#xD;	   * @param {number} [size] width, height and depth of the cube.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createCubeVertices(size) {&#xD;	    size = size || 1;&#xD;	    var k = size / 2;&#xD;&#xD;	    var cornerVertices = [[-k, -k, -k], [+k, -k, -k], [-k, +k, -k], [+k, +k, -k], [-k, -k, +k], [+k, -k, +k], [-k, +k, +k], [+k, +k, +k]];&#xD;&#xD;	    var faceNormals = [[+1, +0, +0], [-1, +0, +0], [+0, +1, +0], [+0, -1, +0], [+0, +0, +1], [+0, +0, -1]];&#xD;&#xD;	    var uvCoords = [[1, 0], [0, 0], [0, 1], [1, 1]];&#xD;&#xD;	    var numVertices = 6 * 4;&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;	    var indices = createAugmentedTypedArray(3, 6 * 2, Uint16Array);&#xD;&#xD;	    for (var f = 0; f &lt; 6; ++f) {&#xD;	      var faceIndices = CUBE_FACE_INDICES[f];&#xD;	      for (var v = 0; v &lt; 4; ++v) {&#xD;	        var position = cornerVertices[faceIndices[v]];&#xD;	        var normal = faceNormals[f];&#xD;	        var uv = uvCoords[v];&#xD;&#xD;	        // Each face needs all four vertices because the normals and texture&#xD;	        // coordinates are not all the same.&#xD;	        positions.push(position);&#xD;	        normals.push(normal);&#xD;	        texcoords.push(uv);&#xD;	      }&#xD;	      // Two triangles make a square face.&#xD;	      var offset = 4 * f;&#xD;	      indices.push(offset + 0, offset + 1, offset + 2);&#xD;	      indices.push(offset + 0, offset + 2, offset + 3);&#xD;	    }&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a BufferInfo for a truncated cone, which is like a cylinder&#xD;	   * except that it has different top and bottom radii. A truncated cone&#xD;	   * can also be used to create cylinders and regular cones. The&#xD;	   * truncated cone will be created centered about the origin, with the&#xD;	   * y axis as its vertical axis.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} bottomRadius Bottom radius of truncated cone.&#xD;	   * @param {number} topRadius Top radius of truncated cone.&#xD;	   * @param {number} height Height of truncated cone.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the&#xD;	   *     truncated cone.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the&#xD;	   *     truncated cone.&#xD;	   * @param {boolean} [opt_topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {module:twgl.BufferInfo} The created cone BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createTruncatedConeBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates buffers for a truncated cone, which is like a cylinder&#xD;	   * except that it has different top and bottom radii. A truncated cone&#xD;	   * can also be used to create cylinders and regular cones. The&#xD;	   * truncated cone will be created centered about the origin, with the&#xD;	   * y axis as its vertical axis.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} bottomRadius Bottom radius of truncated cone.&#xD;	   * @param {number} topRadius Top radius of truncated cone.&#xD;	   * @param {number} height Height of truncated cone.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the&#xD;	   *     truncated cone.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the&#xD;	   *     truncated cone.&#xD;	   * @param {boolean} [opt_topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created cone buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createTruncatedConeBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates vertices for a truncated cone, which is like a cylinder&#xD;	   * except that it has different top and bottom radii. A truncated cone&#xD;	   * can also be used to create cylinders and regular cones. The&#xD;	   * truncated cone will be created centered about the origin, with the&#xD;	   * y axis as its vertical axis. .&#xD;	   *&#xD;	   * @param {number} bottomRadius Bottom radius of truncated cone.&#xD;	   * @param {number} topRadius Top radius of truncated cone.&#xD;	   * @param {number} height Height of truncated cone.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the&#xD;	   *     truncated cone.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the&#xD;	   *     truncated cone.&#xD;	   * @param {boolean} [opt_topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created cone vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createTruncatedConeVertices(bottomRadius, topRadius, height, radialSubdivisions, verticalSubdivisions, opt_topCap, opt_bottomCap) {&#xD;	    if (radialSubdivisions &lt; 3) {&#xD;	      throw Error(&apos;radialSubdivisions must be 3 or greater&apos;);&#xD;	    }&#xD;&#xD;	    if (verticalSubdivisions &lt; 1) {&#xD;	      throw Error(&apos;verticalSubdivisions must be 1 or greater&apos;);&#xD;	    }&#xD;&#xD;	    var topCap = opt_topCap === undefined ? true : opt_topCap;&#xD;	    var bottomCap = opt_bottomCap === undefined ? true : opt_bottomCap;&#xD;&#xD;	    var extra = (topCap ? 2 : 0) + (bottomCap ? 2 : 0);&#xD;&#xD;	    var numVertices = (radialSubdivisions + 1) * (verticalSubdivisions + 1 + extra);&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;	    var indices = createAugmentedTypedArray(3, radialSubdivisions * (verticalSubdivisions + extra) * 2, Uint16Array);&#xD;&#xD;	    var vertsAroundEdge = radialSubdivisions + 1;&#xD;&#xD;	    // The slant of the cone is constant across its surface&#xD;	    var slant = Math.atan2(bottomRadius - topRadius, height);&#xD;	    var cosSlant = Math.cos(slant);&#xD;	    var sinSlant = Math.sin(slant);&#xD;&#xD;	    var start = topCap ? -2 : 0;&#xD;	    var end = verticalSubdivisions + (bottomCap ? 2 : 0);&#xD;&#xD;	    for (var yy = start; yy &lt;= end; ++yy) {&#xD;	      var v = yy / verticalSubdivisions;&#xD;	      var y = height * v;&#xD;	      var ringRadius;&#xD;	      if (yy &lt; 0) {&#xD;	        y = 0;&#xD;	        v = 1;&#xD;	        ringRadius = bottomRadius;&#xD;	      } else if (yy &gt; verticalSubdivisions) {&#xD;	        y = height;&#xD;	        v = 1;&#xD;	        ringRadius = topRadius;&#xD;	      } else {&#xD;	        ringRadius = bottomRadius + (topRadius - bottomRadius) * (yy / verticalSubdivisions);&#xD;	      }&#xD;	      if (yy === -2 || yy === verticalSubdivisions + 2) {&#xD;	        ringRadius = 0;&#xD;	        v = 0;&#xD;	      }&#xD;	      y -= height / 2;&#xD;	      for (var ii = 0; ii &lt; vertsAroundEdge; ++ii) {&#xD;	        var sin = Math.sin(ii * Math.PI * 2 / radialSubdivisions);&#xD;	        var cos = Math.cos(ii * Math.PI * 2 / radialSubdivisions);&#xD;	        positions.push(sin * ringRadius, y, cos * ringRadius);&#xD;	        normals.push(yy &lt; 0 || yy &gt; verticalSubdivisions ? 0 : sin * cosSlant, yy &lt; 0 ? -1 : yy &gt; verticalSubdivisions ? 1 : sinSlant, yy &lt; 0 || yy &gt; verticalSubdivisions ? 0 : cos * cosSlant);&#xD;	        texcoords.push(ii / radialSubdivisions, 1 - v);&#xD;	      }&#xD;	    }&#xD;&#xD;	    for (var yy = 0; yy &lt; verticalSubdivisions + extra; ++yy) {&#xD;	      // eslint-disable-line&#xD;	      for (var ii = 0; ii &lt; radialSubdivisions; ++ii) {&#xD;	        // eslint-disable-line&#xD;	        indices.push(vertsAroundEdge * (yy + 0) + 0 + ii, vertsAroundEdge * (yy + 0) + 1 + ii, vertsAroundEdge * (yy + 1) + 1 + ii);&#xD;	        indices.push(vertsAroundEdge * (yy + 0) + 0 + ii, vertsAroundEdge * (yy + 1) + 1 + ii, vertsAroundEdge * (yy + 1) + 0 + ii);&#xD;	      }&#xD;	    }&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Expands RLE data&#xD;	   * @param {number[]} rleData data in format of run-length, x, y, z, run-length, x, y, z&#xD;	   * @param {number[]} [padding] value to add each entry with.&#xD;	   * @return {number[]} the expanded rleData&#xD;	   */&#xD;	  function expandRLEData(rleData, padding) {&#xD;	    padding = padding || [];&#xD;	    var data = [];&#xD;	    for (var ii = 0; ii &lt; rleData.length; ii += 4) {&#xD;	      var runLength = rleData[ii];&#xD;	      var element = rleData.slice(ii + 1, ii + 4);&#xD;	      element.push.apply(element, padding);&#xD;	      for (var jj = 0; jj &lt; runLength; ++jj) {&#xD;	        data.push.apply(data, element);&#xD;	      }&#xD;	    }&#xD;	    return data;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates 3D &apos;F&apos; BufferInfo.&#xD;	   * An &apos;F&apos; is useful because you can easily tell which way it is oriented.&#xD;	   * The created &apos;F&apos; has position, normal, texcoord, and color buffers.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function create3DFBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates 3D &apos;F&apos; buffers.&#xD;	   * An &apos;F&apos; is useful because you can easily tell which way it is oriented.&#xD;	   * The created &apos;F&apos; has position, normal, texcoord, and color buffers.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function create3DFBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates 3D &apos;F&apos; vertices.&#xD;	   * An &apos;F&apos; is useful because you can easily tell which way it is oriented.&#xD;	   * The created &apos;F&apos; has position, normal, texcoord, and color arrays.&#xD;	   *&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function create3DFVertices() {&#xD;&#xD;	    var positions = [&#xD;	    // left column front&#xD;	    0, 0, 0, 0, 150, 0, 30, 0, 0, 0, 150, 0, 30, 150, 0, 30, 0, 0,&#xD;&#xD;	    // top rung front&#xD;	    30, 0, 0, 30, 30, 0, 100, 0, 0, 30, 30, 0, 100, 30, 0, 100, 0, 0,&#xD;&#xD;	    // middle rung front&#xD;	    30, 60, 0, 30, 90, 0, 67, 60, 0, 30, 90, 0, 67, 90, 0, 67, 60, 0,&#xD;&#xD;	    // left column back&#xD;	    0, 0, 30, 30, 0, 30, 0, 150, 30, 0, 150, 30, 30, 0, 30, 30, 150, 30,&#xD;&#xD;	    // top rung back&#xD;	    30, 0, 30, 100, 0, 30, 30, 30, 30, 30, 30, 30, 100, 0, 30, 100, 30, 30,&#xD;&#xD;	    // middle rung back&#xD;	    30, 60, 30, 67, 60, 30, 30, 90, 30, 30, 90, 30, 67, 60, 30, 67, 90, 30,&#xD;&#xD;	    // top&#xD;	    0, 0, 0, 100, 0, 0, 100, 0, 30, 0, 0, 0, 100, 0, 30, 0, 0, 30,&#xD;&#xD;	    // top rung front&#xD;	    100, 0, 0, 100, 30, 0, 100, 30, 30, 100, 0, 0, 100, 30, 30, 100, 0, 30,&#xD;&#xD;	    // under top rung&#xD;	    30, 30, 0, 30, 30, 30, 100, 30, 30, 30, 30, 0, 100, 30, 30, 100, 30, 0,&#xD;&#xD;	    // between top rung and middle&#xD;	    30, 30, 0, 30, 60, 30, 30, 30, 30, 30, 30, 0, 30, 60, 0, 30, 60, 30,&#xD;&#xD;	    // top of middle rung&#xD;	    30, 60, 0, 67, 60, 30, 30, 60, 30, 30, 60, 0, 67, 60, 0, 67, 60, 30,&#xD;&#xD;	    // front of middle rung&#xD;	    67, 60, 0, 67, 90, 30, 67, 60, 30, 67, 60, 0, 67, 90, 0, 67, 90, 30,&#xD;&#xD;	    // bottom of middle rung.&#xD;	    30, 90, 0, 30, 90, 30, 67, 90, 30, 30, 90, 0, 67, 90, 30, 67, 90, 0,&#xD;&#xD;	    // front of bottom&#xD;	    30, 90, 0, 30, 150, 30, 30, 90, 30, 30, 90, 0, 30, 150, 0, 30, 150, 30,&#xD;&#xD;	    // bottom&#xD;	    0, 150, 0, 0, 150, 30, 30, 150, 30, 0, 150, 0, 30, 150, 30, 30, 150, 0,&#xD;&#xD;	    // left side&#xD;	    0, 0, 0, 0, 0, 30, 0, 150, 30, 0, 0, 0, 0, 150, 30, 0, 150, 0];&#xD;&#xD;	    var texcoords = [&#xD;	    // left column front&#xD;	    0.22, 0.19, 0.22, 0.79, 0.34, 0.19, 0.22, 0.79, 0.34, 0.79, 0.34, 0.19,&#xD;&#xD;	    // top rung front&#xD;	    0.34, 0.19, 0.34, 0.31, 0.62, 0.19, 0.34, 0.31, 0.62, 0.31, 0.62, 0.19,&#xD;&#xD;	    // middle rung front&#xD;	    0.34, 0.43, 0.34, 0.55, 0.49, 0.43, 0.34, 0.55, 0.49, 0.55, 0.49, 0.43,&#xD;&#xD;	    // left column back&#xD;	    0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1,&#xD;&#xD;	    // top rung back&#xD;	    0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1,&#xD;&#xD;	    // middle rung back&#xD;	    0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1,&#xD;&#xD;	    // top&#xD;	    0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1,&#xD;&#xD;	    // top rung front&#xD;	    0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1,&#xD;&#xD;	    // under top rung&#xD;	    0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0,&#xD;&#xD;	    // between top rung and middle&#xD;	    0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1,&#xD;&#xD;	    // top of middle rung&#xD;	    0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1,&#xD;&#xD;	    // front of middle rung&#xD;	    0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1,&#xD;&#xD;	    // bottom of middle rung.&#xD;	    0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0,&#xD;&#xD;	    // front of bottom&#xD;	    0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1,&#xD;&#xD;	    // bottom&#xD;	    0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0,&#xD;&#xD;	    // left side&#xD;	    0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0];&#xD;&#xD;	    var normals = expandRLEData([&#xD;	    // left column front&#xD;	    // top rung front&#xD;	    // middle rung front&#xD;	    18, 0, 0, 1,&#xD;&#xD;	    // left column back&#xD;	    // top rung back&#xD;	    // middle rung back&#xD;	    18, 0, 0, -1,&#xD;&#xD;	    // top&#xD;	    6, 0, 1, 0,&#xD;&#xD;	    // top rung front&#xD;	    6, 1, 0, 0,&#xD;&#xD;	    // under top rung&#xD;	    6, 0, -1, 0,&#xD;&#xD;	    // between top rung and middle&#xD;	    6, 1, 0, 0,&#xD;&#xD;	    // top of middle rung&#xD;	    6, 0, 1, 0,&#xD;&#xD;	    // front of middle rung&#xD;	    6, 1, 0, 0,&#xD;&#xD;	    // bottom of middle rung.&#xD;	    6, 0, -1, 0,&#xD;&#xD;	    // front of bottom&#xD;	    6, 1, 0, 0,&#xD;&#xD;	    // bottom&#xD;	    6, 0, -1, 0,&#xD;&#xD;	    // left side&#xD;	    6, -1, 0, 0]);&#xD;&#xD;	    var colors = expandRLEData([&#xD;	    // left column front&#xD;	    // top rung front&#xD;	    // middle rung front&#xD;	    18, 200, 70, 120,&#xD;&#xD;	    // left column back&#xD;	    // top rung back&#xD;	    // middle rung back&#xD;	    18, 80, 70, 200,&#xD;&#xD;	    // top&#xD;	    6, 70, 200, 210,&#xD;&#xD;	    // top rung front&#xD;	    6, 200, 200, 70,&#xD;&#xD;	    // under top rung&#xD;	    6, 210, 100, 70,&#xD;&#xD;	    // between top rung and middle&#xD;	    6, 210, 160, 70,&#xD;&#xD;	    // top of middle rung&#xD;	    6, 70, 180, 210,&#xD;&#xD;	    // front of middle rung&#xD;	    6, 100, 70, 210,&#xD;&#xD;	    // bottom of middle rung.&#xD;	    6, 76, 210, 100,&#xD;&#xD;	    // front of bottom&#xD;	    6, 140, 210, 80,&#xD;&#xD;	    // bottom&#xD;	    6, 90, 130, 110,&#xD;&#xD;	    // left side&#xD;	    6, 160, 160, 220], [255]);&#xD;&#xD;	    var numVerts = positions.length / 3;&#xD;&#xD;	    var arrays = {&#xD;	      position: createAugmentedTypedArray(3, numVerts),&#xD;	      texcoord: createAugmentedTypedArray(2, numVerts),&#xD;	      normal: createAugmentedTypedArray(3, numVerts),&#xD;	      color: createAugmentedTypedArray(4, numVerts, Uint8Array),&#xD;	      indices: createAugmentedTypedArray(3, numVerts / 3, Uint16Array)&#xD;	    };&#xD;&#xD;	    arrays.position.push(positions);&#xD;	    arrays.texcoord.push(texcoords);&#xD;	    arrays.normal.push(normals);&#xD;	    arrays.color.push(colors);&#xD;&#xD;	    for (var ii = 0; ii &lt; numVerts; ++ii) {&#xD;	      arrays.indices.push(ii);&#xD;	    }&#xD;&#xD;	    return arrays;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates cresent BufferInfo.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} verticalRadius The vertical radius of the cresent.&#xD;	   * @param {number} outerRadius The outer radius of the cresent.&#xD;	   * @param {number} innerRadius The inner radius of the cresent.&#xD;	   * @param {number} thickness The thickness of the cresent.&#xD;	   * @param {number} subdivisionsDown number of steps around the cresent.&#xD;	   * @param {number} subdivisionsThick number of vertically on the cresent.&#xD;	   * @param {number} [startOffset] Where to start arc. Default 0.&#xD;	   * @param {number} [endOffset] Where to end arg. Default 1.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCresentBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates cresent buffers.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} verticalRadius The vertical radius of the cresent.&#xD;	   * @param {number} outerRadius The outer radius of the cresent.&#xD;	   * @param {number} innerRadius The inner radius of the cresent.&#xD;	   * @param {number} thickness The thickness of the cresent.&#xD;	   * @param {number} subdivisionsDown number of steps around the cresent.&#xD;	   * @param {number} subdivisionsThick number of vertically on the cresent.&#xD;	   * @param {number} [startOffset] Where to start arc. Default 0.&#xD;	   * @param {number} [endOffset] Where to end arg. Default 1.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCresentBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates cresent vertices.&#xD;	   *&#xD;	   * @param {number} verticalRadius The vertical radius of the cresent.&#xD;	   * @param {number} outerRadius The outer radius of the cresent.&#xD;	   * @param {number} innerRadius The inner radius of the cresent.&#xD;	   * @param {number} thickness The thickness of the cresent.&#xD;	   * @param {number} subdivisionsDown number of steps around the cresent.&#xD;	   * @param {number} subdivisionsThick number of vertically on the cresent.&#xD;	   * @param {number} [startOffset] Where to start arc. Default 0.&#xD;	   * @param {number} [endOffset] Where to end arg. Default 1.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createCresentVertices(verticalRadius, outerRadius, innerRadius, thickness, subdivisionsDown, startOffset, endOffset) {&#xD;	    if (subdivisionsDown &lt;= 0) {&#xD;	      throw Error(&apos;subdivisionDown must be &gt; 0&apos;);&#xD;	    }&#xD;&#xD;	    startOffset = startOffset || 0;&#xD;	    endOffset = endOffset || 1;&#xD;&#xD;	    var subdivisionsThick = 2;&#xD;&#xD;	    var offsetRange = endOffset - startOffset;&#xD;	    var numVertices = (subdivisionsDown + 1) * 2 * (2 + subdivisionsThick);&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;&#xD;	    function lerp(a, b, s) {&#xD;	      return a + (b - a) * s;&#xD;	    }&#xD;&#xD;	    function createArc(arcRadius, x, normalMult, normalAdd, uMult, uAdd) {&#xD;	      for (var z = 0; z &lt;= subdivisionsDown; z++) {&#xD;	        var uBack = x / (subdivisionsThick - 1);&#xD;	        var v = z / subdivisionsDown;&#xD;	        var xBack = (uBack - 0.5) * 2;&#xD;	        var angle = (startOffset + v * offsetRange) * Math.PI;&#xD;	        var s = Math.sin(angle);&#xD;	        var c = Math.cos(angle);&#xD;	        var radius = lerp(verticalRadius, arcRadius, s);&#xD;	        var px = xBack * thickness;&#xD;	        var py = c * verticalRadius;&#xD;	        var pz = s * radius;&#xD;	        positions.push(px, py, pz);&#xD;	        var n = v3.add(v3.multiply([0, s, c], normalMult), normalAdd);&#xD;	        normals.push(n);&#xD;	        texcoords.push(uBack * uMult + uAdd, v);&#xD;	      }&#xD;	    }&#xD;&#xD;	    // Generate the individual vertices in our vertex buffer.&#xD;	    for (var x = 0; x &lt; subdivisionsThick; x++) {&#xD;	      var uBack = (x / (subdivisionsThick - 1) - 0.5) * 2;&#xD;	      createArc(outerRadius, x, [1, 1, 1], [0, 0, 0], 1, 0);&#xD;	      createArc(outerRadius, x, [0, 0, 0], [uBack, 0, 0], 0, 0);&#xD;	      createArc(innerRadius, x, [1, 1, 1], [0, 0, 0], 1, 0);&#xD;	      createArc(innerRadius, x, [0, 0, 0], [uBack, 0, 0], 0, 1);&#xD;	    }&#xD;&#xD;	    // Do outer surface.&#xD;	    var indices = createAugmentedTypedArray(3, subdivisionsDown * 2 * (2 + subdivisionsThick), Uint16Array);&#xD;&#xD;	    function createSurface(leftArcOffset, rightArcOffset) {&#xD;	      for (var z = 0; z &lt; subdivisionsDown; ++z) {&#xD;	        // Make triangle 1 of quad.&#xD;	        indices.push(leftArcOffset + z + 0, leftArcOffset + z + 1, rightArcOffset + z + 0);&#xD;&#xD;	        // Make triangle 2 of quad.&#xD;	        indices.push(leftArcOffset + z + 1, rightArcOffset + z + 1, rightArcOffset + z + 0);&#xD;	      }&#xD;	    }&#xD;&#xD;	    var numVerticesDown = subdivisionsDown + 1;&#xD;	    // front&#xD;	    createSurface(numVerticesDown * 0, numVerticesDown * 4);&#xD;	    // right&#xD;	    createSurface(numVerticesDown * 5, numVerticesDown * 7);&#xD;	    // back&#xD;	    createSurface(numVerticesDown * 6, numVerticesDown * 2);&#xD;	    // left&#xD;	    createSurface(numVerticesDown * 3, numVerticesDown * 1);&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates cylinder BufferInfo. The cylinder will be created around the origin&#xD;	   * along the y-axis.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius Radius of cylinder.&#xD;	   * @param {number} height Height of cylinder.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the cylinder.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.&#xD;	   * @param {boolean} [topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCylinderBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates cylinder buffers. The cylinder will be created around the origin&#xD;	   * along the y-axis.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius Radius of cylinder.&#xD;	   * @param {number} height Height of cylinder.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the cylinder.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.&#xD;	   * @param {boolean} [topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createCylinderBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates cylinder vertices. The cylinder will be created around the origin&#xD;	   * along the y-axis.&#xD;	   *&#xD;	   * @param {number} radius Radius of cylinder.&#xD;	   * @param {number} height Height of cylinder.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the cylinder.&#xD;	   * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.&#xD;	   * @param {boolean} [topCap] Create top cap. Default = true.&#xD;	   * @param {boolean} [bottomCap] Create bottom cap. Default = true.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createCylinderVertices(radius, height, radialSubdivisions, verticalSubdivisions, topCap, bottomCap) {&#xD;	    return createTruncatedConeVertices(radius, radius, height, radialSubdivisions, verticalSubdivisions, topCap, bottomCap);&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates BufferInfo for a torus&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius radius of center of torus circle.&#xD;	   * @param {number} thickness radius of torus ring.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the torus.&#xD;	   * @param {number} bodySubdivisions The number of subdivisions around the body torus.&#xD;	   * @param {boolean} [startAngle] start angle in radians. Default = 0.&#xD;	   * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createTorusBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates buffers for a torus&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius radius of center of torus circle.&#xD;	   * @param {number} thickness radius of torus ring.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the torus.&#xD;	   * @param {number} bodySubdivisions The number of subdivisions around the body torus.&#xD;	   * @param {boolean} [startAngle] start angle in radians. Default = 0.&#xD;	   * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createTorusBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates vertices for a torus&#xD;	   *&#xD;	   * @param {number} radius radius of center of torus circle.&#xD;	   * @param {number} thickness radius of torus ring.&#xD;	   * @param {number} radialSubdivisions The number of subdivisions around the torus.&#xD;	   * @param {number} bodySubdivisions The number of subdivisions around the body torus.&#xD;	   * @param {boolean} [startAngle] start angle in radians. Default = 0.&#xD;	   * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createTorusVertices(radius, thickness, radialSubdivisions, bodySubdivisions, startAngle, endAngle) {&#xD;	    if (radialSubdivisions &lt; 3) {&#xD;	      throw Error(&apos;radialSubdivisions must be 3 or greater&apos;);&#xD;	    }&#xD;&#xD;	    if (bodySubdivisions &lt; 3) {&#xD;	      throw Error(&apos;verticalSubdivisions must be 3 or greater&apos;);&#xD;	    }&#xD;&#xD;	    startAngle = startAngle || 0;&#xD;	    endAngle = endAngle || Math.PI * 2;&#xD;	    var range = endAngle - startAngle;&#xD;&#xD;	    var radialParts = radialSubdivisions + 1;&#xD;	    var bodyParts = bodySubdivisions + 1;&#xD;	    var numVertices = radialParts * bodyParts;&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;	    var indices = createAugmentedTypedArray(3, radialSubdivisions * bodySubdivisions * 2, Uint16Array);&#xD;&#xD;	    for (var slice = 0; slice &lt; bodyParts; ++slice) {&#xD;	      var v = slice / bodySubdivisions;&#xD;	      var sliceAngle = v * Math.PI * 2;&#xD;	      var sliceSin = Math.sin(sliceAngle);&#xD;	      var ringRadius = radius + sliceSin * thickness;&#xD;	      var ny = Math.cos(sliceAngle);&#xD;	      var y = ny * thickness;&#xD;	      for (var ring = 0; ring &lt; radialParts; ++ring) {&#xD;	        var u = ring / radialSubdivisions;&#xD;	        var ringAngle = startAngle + u * range;&#xD;	        var xSin = Math.sin(ringAngle);&#xD;	        var zCos = Math.cos(ringAngle);&#xD;	        var x = xSin * ringRadius;&#xD;	        var z = zCos * ringRadius;&#xD;	        var nx = xSin * sliceSin;&#xD;	        var nz = zCos * sliceSin;&#xD;	        positions.push(x, y, z);&#xD;	        normals.push(nx, ny, nz);&#xD;	        texcoords.push(u, 1 - v);&#xD;	      }&#xD;	    }&#xD;&#xD;	    for (var slice = 0; slice &lt; bodySubdivisions; ++slice) {&#xD;	      // eslint-disable-line&#xD;	      for (var ring = 0; ring &lt; radialSubdivisions; ++ring) {&#xD;	        // eslint-disable-line&#xD;	        var nextRingIndex = 1 + ring;&#xD;	        var nextSliceIndex = 1 + slice;&#xD;	        indices.push(radialParts * slice + ring, radialParts * nextSliceIndex + ring, radialParts * slice + nextRingIndex);&#xD;	        indices.push(radialParts * nextSliceIndex + ring, radialParts * nextSliceIndex + nextRingIndex, radialParts * slice + nextRingIndex);&#xD;	      }&#xD;	    }&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a disc BufferInfo. The disc will be in the xz plane, centered at&#xD;	   * the origin. When creating, at least 3 divisions, or pie&#xD;	   * pieces, need to be specified, otherwise the triangles making&#xD;	   * up the disc will be degenerate. You can also specify the&#xD;	   * number of radial pieces `stacks`. A value of 1 for&#xD;	   * stacks will give you a simple disc of pie pieces.  If you&#xD;	   * want to create an annulus you can set `innerRadius` to a&#xD;	   * value &gt; 0. Finally, `stackPower` allows you to have the widths&#xD;	   * increase or decrease as you move away from the center. This&#xD;	   * is particularly useful when using the disc as a ground plane&#xD;	   * with a fixed camera such that you don&apos;t need the resolution&#xD;	   * of small triangles near the perimeter. For example, a value&#xD;	   * of 2 will produce stacks whose ouside radius increases with&#xD;	   * the square of the stack index. A value of 1 will give uniform&#xD;	   * stacks.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius Radius of the ground plane.&#xD;	   * @param {number} divisions Number of triangles in the ground plane (at least 3).&#xD;	   * @param {number} [stacks] Number of radial divisions (default=1).&#xD;	   * @param {number} [innerRadius] Default 0.&#xD;	   * @param {number} [stackPower] Power to raise stack size to for decreasing width.&#xD;	   * @return {module:twgl.BufferInfo} The created BufferInfo.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createDiscBufferInfo&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates disc buffers. The disc will be in the xz plane, centered at&#xD;	   * the origin. When creating, at least 3 divisions, or pie&#xD;	   * pieces, need to be specified, otherwise the triangles making&#xD;	   * up the disc will be degenerate. You can also specify the&#xD;	   * number of radial pieces `stacks`. A value of 1 for&#xD;	   * stacks will give you a simple disc of pie pieces.  If you&#xD;	   * want to create an annulus you can set `innerRadius` to a&#xD;	   * value &gt; 0. Finally, `stackPower` allows you to have the widths&#xD;	   * increase or decrease as you move away from the center. This&#xD;	   * is particularly useful when using the disc as a ground plane&#xD;	   * with a fixed camera such that you don&apos;t need the resolution&#xD;	   * of small triangles near the perimeter. For example, a value&#xD;	   * of 2 will produce stacks whose ouside radius increases with&#xD;	   * the square of the stack index. A value of 1 will give uniform&#xD;	   * stacks.&#xD;	   *&#xD;	   * @param {WebGLRenderingContext} gl The WebGLRenderingContext.&#xD;	   * @param {number} radius Radius of the ground plane.&#xD;	   * @param {number} divisions Number of triangles in the ground plane (at least 3).&#xD;	   * @param {number} [stacks] Number of radial divisions (default=1).&#xD;	   * @param {number} [innerRadius] Default 0.&#xD;	   * @param {number} [stackPower] Power to raise stack size to for decreasing width.&#xD;	   * @return {Object.&lt;string, WebGLBuffer&gt;} The created buffers.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   * @function createDiscBuffers&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates disc vertices. The disc will be in the xz plane, centered at&#xD;	   * the origin. When creating, at least 3 divisions, or pie&#xD;	   * pieces, need to be specified, otherwise the triangles making&#xD;	   * up the disc will be degenerate. You can also specify the&#xD;	   * number of radial pieces `stacks`. A value of 1 for&#xD;	   * stacks will give you a simple disc of pie pieces.  If you&#xD;	   * want to create an annulus you can set `innerRadius` to a&#xD;	   * value &gt; 0. Finally, `stackPower` allows you to have the widths&#xD;	   * increase or decrease as you move away from the center. This&#xD;	   * is particularly useful when using the disc as a ground plane&#xD;	   * with a fixed camera such that you don&apos;t need the resolution&#xD;	   * of small triangles near the perimeter. For example, a value&#xD;	   * of 2 will produce stacks whose ouside radius increases with&#xD;	   * the square of the stack index. A value of 1 will give uniform&#xD;	   * stacks.&#xD;	   *&#xD;	   * @param {number} radius Radius of the ground plane.&#xD;	   * @param {number} divisions Number of triangles in the ground plane (at least 3).&#xD;	   * @param {number} [stacks] Number of radial divisions (default=1).&#xD;	   * @param {number} [innerRadius] Default 0.&#xD;	   * @param {number} [stackPower] Power to raise stack size to for decreasing width.&#xD;	   * @return {Object.&lt;string, TypedArray&gt;} The created vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function createDiscVertices(radius, divisions, stacks, innerRadius, stackPower) {&#xD;	    if (divisions &lt; 3) {&#xD;	      throw Error(&apos;divisions must be at least 3&apos;);&#xD;	    }&#xD;&#xD;	    stacks = stacks ? stacks : 1;&#xD;	    stackPower = stackPower ? stackPower : 1;&#xD;	    innerRadius = innerRadius ? innerRadius : 0;&#xD;&#xD;	    // Note: We don&apos;t share the center vertex because that would&#xD;	    // mess up texture coordinates.&#xD;	    var numVertices = (divisions + 1) * (stacks + 1);&#xD;&#xD;	    var positions = createAugmentedTypedArray(3, numVertices);&#xD;	    var normals = createAugmentedTypedArray(3, numVertices);&#xD;	    var texcoords = createAugmentedTypedArray(2, numVertices);&#xD;	    var indices = createAugmentedTypedArray(3, stacks * divisions * 2, Uint16Array);&#xD;&#xD;	    var firstIndex = 0;&#xD;	    var radiusSpan = radius - innerRadius;&#xD;	    var pointsPerStack = divisions + 1;&#xD;&#xD;	    // Build the disk one stack at a time.&#xD;	    for (var stack = 0; stack &lt;= stacks; ++stack) {&#xD;	      var stackRadius = innerRadius + radiusSpan * Math.pow(stack / stacks, stackPower);&#xD;&#xD;	      for (var i = 0; i &lt;= divisions; ++i) {&#xD;	        var theta = 2.0 * Math.PI * i / divisions;&#xD;	        var x = stackRadius * Math.cos(theta);&#xD;	        var z = stackRadius * Math.sin(theta);&#xD;&#xD;	        positions.push(x, 0, z);&#xD;	        normals.push(0, 1, 0);&#xD;	        texcoords.push(1 - i / divisions, stack / stacks);&#xD;	        if (stack &gt; 0 &amp;&amp; i !== divisions) {&#xD;	          // a, b, c and d are the indices of the vertices of a quad.  unless&#xD;	          // the current stack is the one closest to the center, in which case&#xD;	          // the vertices a and b connect to the center vertex.&#xD;	          var a = firstIndex + (i + 1);&#xD;	          var b = firstIndex + i;&#xD;	          var c = firstIndex + i - pointsPerStack;&#xD;	          var d = firstIndex + (i + 1) - pointsPerStack;&#xD;&#xD;	          // Make a quad of the vertices a, b, c, d.&#xD;	          indices.push(a, b, c);&#xD;	          indices.push(a, c, d);&#xD;	        }&#xD;	      }&#xD;&#xD;	      firstIndex += divisions + 1;&#xD;	    }&#xD;&#xD;	    return {&#xD;	      position: positions,&#xD;	      normal: normals,&#xD;	      texcoord: texcoords,&#xD;	      indices: indices&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * creates a random integer between 0 and range - 1 inclusive.&#xD;	   * @param {number} range&#xD;	   * @return {number} random value between 0 and range - 1 inclusive.&#xD;	   */&#xD;	  function randInt(range) {&#xD;	    return Math.random() * range | 0;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Used to supply random colors&#xD;	   * @callback RandomColorFunc&#xD;	   * @param {number} ndx index of triangle/quad if unindexed or index of vertex if indexed&#xD;	   * @param {number} channel 0 = red, 1 = green, 2 = blue, 3 = alpha&#xD;	   * @return {number} a number from 0 to 255&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * @typedef {Object} RandomVerticesOptions&#xD;	   * @property {number} [vertsPerColor] Defaults to 3 for non-indexed vertices&#xD;	   * @property {module:twgl/primitives.RandomColorFunc} [rand] A function to generate random numbers&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;&#xD;	  /**&#xD;	   * Creates an augmentedTypedArray of random vertex colors.&#xD;	   * If the vertices are indexed (have an indices array) then will&#xD;	   * just make random colors. Otherwise assumes they are triangles&#xD;	   * and makes one random color for every 3 vertices.&#xD;	   * @param {Object.&lt;string, augmentedTypedArray&gt;} vertices Vertices as returned from one of the createXXXVertices functions.&#xD;	   * @param {module:twgl/primitives.RandomVerticesOptions} [options] options.&#xD;	   * @return {Object.&lt;string, augmentedTypedArray&gt;} same vertices as passed in with `color` added.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function makeRandomVertexColors(vertices, options) {&#xD;	    options = options || {};&#xD;	    var numElements = vertices.position.numElements;&#xD;	    var vcolors = createAugmentedTypedArray(4, numElements, Uint8Array);&#xD;	    var rand = options.rand || function (ndx, channel) {&#xD;	      return channel &lt; 3 ? randInt(256) : 255;&#xD;	    };&#xD;	    vertices.color = vcolors;&#xD;	    if (vertices.indices) {&#xD;	      // just make random colors if index&#xD;	      for (var ii = 0; ii &lt; numElements; ++ii) {&#xD;	        vcolors.push(rand(ii, 0), rand(ii, 1), rand(ii, 2), rand(ii, 3));&#xD;	      }&#xD;	    } else {&#xD;	      // make random colors per triangle&#xD;	      var numVertsPerColor = options.vertsPerColor || 3;&#xD;	      var numSets = numElements / numVertsPerColor;&#xD;	      for (var ii = 0; ii &lt; numSets; ++ii) {&#xD;	        // eslint-disable-line&#xD;	        var color = [rand(ii, 0), rand(ii, 1), rand(ii, 2), rand(ii, 3)];&#xD;	        for (var jj = 0; jj &lt; numVertsPerColor; ++jj) {&#xD;	          vcolors.push(color);&#xD;	        }&#xD;	      }&#xD;	    }&#xD;	    return vertices;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * creates a function that calls fn to create vertices and then&#xD;	   * creates a buffers for them&#xD;	   */&#xD;	  function createBufferFunc(fn) {&#xD;	    return function (gl) {&#xD;	      var arrays = fn.apply(this, Array.prototype.slice.call(arguments, 1));&#xD;	      return attributes.createBuffersFromArrays(gl, arrays);&#xD;	    };&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * creates a function that calls fn to create vertices and then&#xD;	   * creates a bufferInfo object for them&#xD;	   */&#xD;	  function createBufferInfoFunc(fn) {&#xD;	    return function (gl) {&#xD;	      var arrays = fn.apply(null, Array.prototype.slice.call(arguments, 1));&#xD;	      return attributes.createBufferInfoFromArrays(gl, arrays);&#xD;	    };&#xD;	  }&#xD;&#xD;	  var arraySpecPropertyNames = ["numComponents", "size", "type", "normalize", "stride", "offset", "attrib", "name", "attribName"];&#xD;&#xD;	  /**&#xD;	   * Copy elements from one array to another&#xD;	   *&#xD;	   * @param {Array|TypedArray} src source array&#xD;	   * @param {Array|TypedArray} dst dest array&#xD;	   * @param {number} dstNdx index in dest to copy src&#xD;	   * @param {number} [offset] offset to add to copied values&#xD;	   */&#xD;	  function copyElements(src, dst, dstNdx, offset) {&#xD;	    offset = offset || 0;&#xD;	    var length = src.length;&#xD;	    for (var ii = 0; ii &lt; length; ++ii) {&#xD;	      dst[dstNdx + ii] = src[ii] + offset;&#xD;	    }&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates an array of the same time&#xD;	   *&#xD;	   * @param {(number[]|ArrayBuffer|module:twgl.FullArraySpec)} srcArray array who&apos;s type to copy&#xD;	   * @param {number} length size of new array&#xD;	   * @return {(number[]|ArrayBuffer|module:twgl.FullArraySpec)} array with same type as srcArray&#xD;	   */&#xD;	  function createArrayOfSameType(srcArray, length) {&#xD;	    var arraySrc = getArray(srcArray);&#xD;	    var newArray = new arraySrc.constructor(length);&#xD;	    var newArraySpec = newArray;&#xD;	    // If it appears to have been augmented make new one augemented&#xD;	    if (arraySrc.numComponents &amp;&amp; arraySrc.numElements) {&#xD;	      augmentTypedArray(newArray, arraySrc.numComponents);&#xD;	    }&#xD;	    // If it was a fullspec make new one a fullspec&#xD;	    if (srcArray.data) {&#xD;	      newArraySpec = {&#xD;	        data: newArray&#xD;	      };&#xD;	      utils.copyNamedProperties(arraySpecPropertyNames, srcArray, newArraySpec);&#xD;	    }&#xD;	    return newArraySpec;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Concatinates sets of vertices&#xD;	   *&#xD;	   * Assumes the vertices match in composition. For example&#xD;	   * if one set of vertices has positions, normals, and indices&#xD;	   * all sets of vertices must have positions, normals, and indices&#xD;	   * and of the same type.&#xD;	   *&#xD;	   * Example:&#xD;	   *&#xD;	   *      var cubeVertices = twgl.primtiives.createCubeVertices(2);&#xD;	   *      var sphereVertices = twgl.primitives.createSphereVertices(1, 10, 10);&#xD;	   *      // move the sphere 2 units up&#xD;	   *      twgl.primitives.reorientVertices(&#xD;	   *          sphereVertices, twgl.m4.translation([0, 2, 0]));&#xD;	   *      // merge the sphere with the cube&#xD;	   *      var cubeSphereVertices = twgl.primitives.concatVertices(&#xD;	   *          [cubeVertices, sphereVertices]);&#xD;	   *      // turn them into WebGL buffers and attrib data&#xD;	   *      var bufferInfo = twgl.createBufferInfoFromArrays(gl, cubeSphereVertices);&#xD;	   *&#xD;	   * @param {module:twgl.Arrays[]} arrays Array of arrays of vertices&#xD;	   * @return {module:twgl.Arrays} The concatinated vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function concatVertices(arrayOfArrays) {&#xD;	    var names = {};&#xD;	    var baseName;&#xD;	    // get names of all arrays.&#xD;	    // and numElements for each set of vertices&#xD;	    for (var ii = 0; ii &lt; arrayOfArrays.length; ++ii) {&#xD;	      var arrays = arrayOfArrays[ii];&#xD;	      Object.keys(arrays).forEach(function (name) {&#xD;	        // eslint-disable-line&#xD;	        if (!names[name]) {&#xD;	          names[name] = [];&#xD;	        }&#xD;	        if (!baseName &amp;&amp; name !== &apos;indices&apos;) {&#xD;	          baseName = name;&#xD;	        }&#xD;	        var arrayInfo = arrays[name];&#xD;	        var numComponents = getNumComponents(arrayInfo, name);&#xD;	        var array = getArray(arrayInfo);&#xD;	        var numElements = array.length / numComponents;&#xD;	        names[name].push(numElements);&#xD;	      });&#xD;	    }&#xD;&#xD;	    // compute length of combined array&#xD;	    // and return one for reference&#xD;	    function getLengthOfCombinedArrays(name) {&#xD;	      var length = 0;&#xD;	      var arraySpec;&#xD;	      for (var ii = 0; ii &lt; arrayOfArrays.length; ++ii) {&#xD;	        var arrays = arrayOfArrays[ii];&#xD;	        var arrayInfo = arrays[name];&#xD;	        var array = getArray(arrayInfo);&#xD;	        length += array.length;&#xD;	        if (!arraySpec || arrayInfo.data) {&#xD;	          arraySpec = arrayInfo;&#xD;	        }&#xD;	      }&#xD;	      return {&#xD;	        length: length,&#xD;	        spec: arraySpec&#xD;	      };&#xD;	    }&#xD;&#xD;	    function copyArraysToNewArray(name, base, newArray) {&#xD;	      var baseIndex = 0;&#xD;	      var offset = 0;&#xD;	      for (var ii = 0; ii &lt; arrayOfArrays.length; ++ii) {&#xD;	        var arrays = arrayOfArrays[ii];&#xD;	        var arrayInfo = arrays[name];&#xD;	        var array = getArray(arrayInfo);&#xD;	        if (name === &apos;indices&apos;) {&#xD;	          copyElements(array, newArray, offset, baseIndex);&#xD;	          baseIndex += base[ii];&#xD;	        } else {&#xD;	          copyElements(array, newArray, offset);&#xD;	        }&#xD;	        offset += array.length;&#xD;	      }&#xD;	    }&#xD;&#xD;	    var base = names[baseName];&#xD;&#xD;	    var newArrays = {};&#xD;	    Object.keys(names).forEach(function (name) {&#xD;	      var info = getLengthOfCombinedArrays(name);&#xD;	      var newArraySpec = createArrayOfSameType(info.spec, info.length);&#xD;	      copyArraysToNewArray(name, base, getArray(newArraySpec));&#xD;	      newArrays[name] = newArraySpec;&#xD;	    });&#xD;	    return newArrays;&#xD;	  }&#xD;&#xD;	  /**&#xD;	   * Creates a duplicate set of vertices&#xD;	   *&#xD;	   * This is useful for calling reorientVertices when you&#xD;	   * also want to keep the original available&#xD;	   *&#xD;	   * @param {module:twgl.Arrays} arrays of vertices&#xD;	   * @return {module:twgl.Arrays} The dupilicated vertices.&#xD;	   * @memberOf module:twgl/primitives&#xD;	   */&#xD;	  function duplicateVertices(arrays) {&#xD;	    var newArrays = {};&#xD;	    Object.keys(arrays).forEach(function (name) {&#xD;	      var arraySpec = arrays[name];&#xD;	      var srcArray = getArray(arraySpec);&#xD;	      var newArraySpec = createArrayOfSameType(arraySpec, srcArray.length);&#xD;	      copyElements(srcArray, getArray(newArraySpec), 0);&#xD;	      newArrays[name] = newArraySpec;&#xD;	    });&#xD;	    return newArrays;&#xD;	  }&#xD;&#xD;	  // Using quotes prevents Uglify from changing the names.&#xD;	  // No speed diff AFAICT.&#xD;	  return {&#xD;	    "create3DFBufferInfo": createBufferInfoFunc(create3DFVertices),&#xD;	    "create3DFBuffers": createBufferFunc(create3DFVertices),&#xD;	    "create3DFVertices": create3DFVertices,&#xD;	    "createAugmentedTypedArray": createAugmentedTypedArray,&#xD;	    "createCubeBufferInfo": createBufferInfoFunc(createCubeVertices),&#xD;	    "createCubeBuffers": createBufferFunc(createCubeVertices),&#xD;	    "createCubeVertices": createCubeVertices,&#xD;	    "createPlaneBufferInfo": createBufferInfoFunc(createPlaneVertices),&#xD;	    "createPlaneBuffers": createBufferFunc(createPlaneVertices),&#xD;	    "createPlaneVertices": createPlaneVertices,&#xD;	    "createSphereBufferInfo": createBufferInfoFunc(createSphereVertices),&#xD;	    "createSphereBuffers": createBufferFunc(createSphereVertices),&#xD;	    "createSphereVertices": createSphereVertices,&#xD;	    "createTruncatedConeBufferInfo": createBufferInfoFunc(createTruncatedConeVertices),&#xD;	    "createTruncatedConeBuffers": createBufferFunc(createTruncatedConeVertices),&#xD;	    "createTruncatedConeVertices": createTruncatedConeVertices,&#xD;	    "createXYQuadBufferInfo": createBufferInfoFunc(createXYQuadVertices),&#xD;	    "createXYQuadBuffers": createBufferFunc(createXYQuadVertices),&#xD;	    "createXYQuadVertices": createXYQuadVertices,&#xD;	    "createCresentBufferInfo": createBufferInfoFunc(createCresentVertices),&#xD;	    "createCresentBuffers": createBufferFunc(createCresentVertices),&#xD;	    "createCresentVertices": createCresentVertices,&#xD;	    "createCylinderBufferInfo": createBufferInfoFunc(createCylinderVertices),&#xD;	    "createCylinderBuffers": createBufferFunc(createCylinderVertices),&#xD;	    "createCylinderVertices": createCylinderVertices,&#xD;	    "createTorusBufferInfo": createBufferInfoFunc(createTorusVertices),&#xD;	    "createTorusBuffers": createBufferFunc(createTorusVertices),&#xD;	    "createTorusVertices": createTorusVertices,&#xD;	    "createDiscBufferInfo": createBufferInfoFunc(createDiscVertices),&#xD;	    "createDiscBuffers": createBufferFunc(createDiscVertices),&#xD;	    "createDiscVertices": createDiscVertices,&#xD;	    "deindexVertices": deindexVertices,&#xD;	    "flattenNormals": flattenNormals,&#xD;	    "makeRandomVertexColors": makeRandomVertexColors,&#xD;	    "reorientDirections": reorientDirections,&#xD;	    "reorientNormals": reorientNormals,&#xD;	    "reorientPositions": reorientPositions,&#xD;	    "reorientVertices": reorientVertices,&#xD;	    "concatVertices": concatVertices,&#xD;	    "duplicateVertices": duplicateVertices&#xD;	  };&#xD;	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined &amp;&amp; (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));&#xD;&#xD;/***/ }&#xD;/******/ ])&#xD;});&#xD;;&#xD;&#xD;/***/ }),&#xD;/* 1 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/** @module RenderConstants */&#xD;&#xD;/**&#xD; * Various constants meant for use throughout the renderer.&#xD; * @enum&#xD; */&#xD;module.exports = {&#xD;  /**&#xD;   * The ID value to use for "no item" or when an object has been disposed.&#xD;   * @const {int}&#xD;   */&#xD;  ID_NONE: -1,&#xD;&#xD;  /**&#xD;   * Optimize for fewer than this number of Drawables sharing the same Skin.&#xD;   * Going above this may cause middleware warnings or a performance penalty but should otherwise behave correctly.&#xD;   * @const {int}&#xD;   */&#xD;  SKIN_SHARE_SOFT_LIMIT: 301,&#xD;&#xD;  /**&#xD;   * @enum {string}&#xD;   */&#xD;  Events: {&#xD;    /**&#xD;    * NativeSizeChanged event&#xD;    *&#xD;    * @event RenderWebGL#event:NativeSizeChanged&#xD;    * @type {object}&#xD;    * @property {Array&lt;int&gt;} newSize - the new size of the renderer&#xD;    */&#xD;    NativeSizeChanged: &apos;NativeSizeChanged&apos;&#xD;  }&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 2 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var EventEmitter = __webpack_require__(4);&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var RenderConstants = __webpack_require__(1);&#xD;&#xD;var Skin = function (_EventEmitter) {&#xD;  _inherits(Skin, _EventEmitter);&#xD;&#xD;  /**&#xD;   * Create a Skin, which stores and/or generates textures for use in rendering.&#xD;   * @param {int} id - The unique ID for this Skin.&#xD;   * @constructor&#xD;   */&#xD;  function Skin(id) {&#xD;    _classCallCheck(this, Skin);&#xD;&#xD;    /** @type {int} */&#xD;    var _this = _possibleConstructorReturn(this, (Skin.__proto__ || Object.getPrototypeOf(Skin)).call(this));&#xD;&#xD;    _this._id = id;&#xD;&#xD;    /** @type {Vec3} */&#xD;    _this._rotationCenter = twgl.v3.create(0, 0);&#xD;&#xD;    /**&#xD;     * The uniforms to be used by the vertex and pixel shaders.&#xD;     * Some of these are used by other parts of the renderer as well.&#xD;     * @type {Object.&lt;string,*&gt;}&#xD;     * @private&#xD;     */&#xD;    _this._uniforms = {&#xD;      /**&#xD;       * The nominal (not necessarily current) size of the current skin.&#xD;       * @type {Array&lt;number&gt;}&#xD;       */&#xD;      u_skinSize: [0, 0],&#xD;&#xD;      /**&#xD;       * The actual WebGL texture object for the skin.&#xD;       * @type {WebGLTexture}&#xD;       */&#xD;      u_skin: null&#xD;    };&#xD;&#xD;    _this.setMaxListeners(RenderConstants.SKIN_SHARE_SOFT_LIMIT);&#xD;    return _this;&#xD;  }&#xD;&#xD;  /**&#xD;   * Dispose of this object. Do not use it after calling this method.&#xD;   */&#xD;&#xD;&#xD;  _createClass(Skin, [{&#xD;    key: &apos;dispose&apos;,&#xD;    value: function dispose() {&#xD;      this._id = RenderConstants.ID_NONE;&#xD;    }&#xD;&#xD;    /**&#xD;     * @return {int} the unique ID for this Skin.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;setRotationCenter&apos;,&#xD;&#xD;&#xD;    /**&#xD;     * Set the origin, in object space, about which this Skin should rotate.&#xD;     * @param {number} x - The x coordinate of the new rotation center.&#xD;     * @param {number} y - The y coordinate of the new rotation center.&#xD;     * @fires Skin.event:WasAltered&#xD;     */&#xD;    value: function setRotationCenter(x, y) {&#xD;      if (x !== this._rotationCenter[0] || y !== this._rotationCenter[1]) {&#xD;        this._rotationCenter[0] = x;&#xD;        this._rotationCenter[1] = y;&#xD;        this.emit(Skin.Events.WasAltered);&#xD;      }&#xD;    }&#xD;&#xD;    /**&#xD;     * Get the center of the current bounding box&#xD;     * @return {Array&lt;number&gt;} the center of the current bounding box&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;calculateRotationCenter&apos;,&#xD;    value: function calculateRotationCenter() {&#xD;      return [this.size[0] / 2, this.size[1] / 2];&#xD;    }&#xD;&#xD;    /**&#xD;     * @abstract&#xD;     * @param {Array&lt;number&gt;} scale - The scaling factors to be used.&#xD;     * @return {WebGLTexture} The GL texture representation of this skin when drawing at the given size.&#xD;     */&#xD;    // eslint-disable-next-line no-unused-vars&#xD;&#xD;  }, {&#xD;    key: &apos;getTexture&apos;,&#xD;    value: function getTexture(scale) {&#xD;      return null;&#xD;    }&#xD;&#xD;    /**&#xD;     * Update and returns the uniforms for this skin.&#xD;     * @param {Array&lt;number&gt;} scale - The scaling factors to be used.&#xD;     * @returns {object.&lt;string, *&gt;} the shader uniforms to be used when rendering with this Skin.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;getUniforms&apos;,&#xD;    value: function getUniforms(scale) {&#xD;      this._uniforms.u_skin = this.getTexture(scale);&#xD;      this._uniforms.u_skinSize = this.size;&#xD;      return this._uniforms;&#xD;    }&#xD;  }, {&#xD;    key: &apos;id&apos;,&#xD;    get: function get() {&#xD;      return this._id;&#xD;    }&#xD;&#xD;    /**&#xD;     * @returns {Vec3} the origin, in object space, about which this Skin should rotate.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;rotationCenter&apos;,&#xD;    get: function get() {&#xD;      return this._rotationCenter;&#xD;    }&#xD;&#xD;    /**&#xD;     * @abstract&#xD;     * @return {Array&lt;number&gt;} the "native" size, in texels, of this skin.&#xD;     */&#xD;&#xD;  }, {&#xD;    key: &apos;size&apos;,&#xD;    get: function get() {&#xD;      return [0, 0];&#xD;    }&#xD;  }]);&#xD;&#xD;  return Skin;&#xD;}(EventEmitter);&#xD;&#xD;/**&#xD; * These are the events which can be emitted by instances of this class.&#xD; * @enum {string}&#xD; */&#xD;&#xD;&#xD;Skin.Events = {&#xD;  /**&#xD;   * Emitted when anything about the Skin has been altered, such as the appearance or rotation center.&#xD;   * @event Skin.event:WasAltered&#xD;   */&#xD;  WasAltered: &apos;WasAltered&apos;&#xD;};&#xD;&#xD;module.exports = Skin;&#xD;&#xD;/***/ }),&#xD;/* 3 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var vertexShaderText = __webpack_require__(23);&#xD;var fragmentShaderText = __webpack_require__(22);&#xD;&#xD;var ShaderManager = function () {&#xD;    /**&#xD;     * @param {WebGLRenderingContext} gl WebGL rendering context to create shaders for&#xD;     * @constructor&#xD;     */&#xD;    function ShaderManager(gl) {&#xD;        _classCallCheck(this, ShaderManager);&#xD;&#xD;        this._gl = gl;&#xD;&#xD;        /**&#xD;         * The cache of all shaders compiled so far, filled on demand.&#xD;         * @type {Object&lt;ShaderManager.DRAW_MODE, Array&lt;ProgramInfo&gt;&gt;}&#xD;         * @private&#xD;         */&#xD;        this._shaderCache = {};&#xD;        for (var modeName in ShaderManager.DRAW_MODE) {&#xD;            if (ShaderManager.DRAW_MODE.hasOwnProperty(modeName)) {&#xD;                this._shaderCache[modeName] = [];&#xD;            }&#xD;        }&#xD;    }&#xD;&#xD;    /**&#xD;     * Fetch the shader for a particular set of active effects.&#xD;     * Build the shader if necessary.&#xD;     * @param {ShaderManager.DRAW_MODE} drawMode Draw normally, silhouette, etc.&#xD;     * @param {int} effectBits Bitmask representing the enabled effects.&#xD;     * @returns {ProgramInfo} The shader&apos;s program info.&#xD;     */&#xD;&#xD;&#xD;    _createClass(ShaderManager, [{&#xD;        key: &apos;getShader&apos;,&#xD;        value: function getShader(drawMode, effectBits) {&#xD;            var cache = this._shaderCache[drawMode];&#xD;            if (drawMode === ShaderManager.DRAW_MODE.silhouette) {&#xD;                // Silhouette mode isn&apos;t affected by these effects.&#xD;                effectBits &amp;= &#126;(ShaderManager.EFFECT_INFO.color.mask | ShaderManager.EFFECT_INFO.brightness.mask);&#xD;            }&#xD;            var shader = cache[effectBits];&#xD;            if (!shader) {&#xD;                shader = cache[effectBits] = this._buildShader(drawMode, effectBits);&#xD;            }&#xD;            return shader;&#xD;        }&#xD;&#xD;        /**&#xD;         * Build the shader for a particular set of active effects.&#xD;         * @param {ShaderManager.DRAW_MODE} drawMode Draw normally, silhouette, etc.&#xD;         * @param {int} effectBits Bitmask representing the enabled effects.&#xD;         * @returns {ProgramInfo} The new shader&apos;s program info.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_buildShader&apos;,&#xD;        value: function _buildShader(drawMode, effectBits) {&#xD;            var numEffects = ShaderManager.EFFECTS.length;&#xD;&#xD;            var defines = [&apos;#define DRAW_MODE_&apos; + drawMode];&#xD;            for (var index = 0; index &lt; numEffects; ++index) {&#xD;                if ((effectBits &amp; 1 &lt;&lt; index) !== 0) {&#xD;                    defines.push(&apos;#define ENABLE_&apos; + ShaderManager.EFFECTS[index]);&#xD;                }&#xD;            }&#xD;&#xD;            var definesText = defines.join(&apos;\n&apos;) + &apos;\n&apos;;&#xD;            var vsFullText = definesText + vertexShaderText;&#xD;            var fsFullText = definesText + fragmentShaderText;&#xD;&#xD;            return twgl.createProgramInfo(this._gl, [vsFullText, fsFullText]);&#xD;        }&#xD;    }]);&#xD;&#xD;    return ShaderManager;&#xD;}();&#xD;&#xD;/**&#xD; * @typedef {object} ShaderManager.Effect&#xD; * @prop {int} mask - The bit in &apos;effectBits&apos; representing the effect.&#xD; * @prop {function} converter - A conversion function which takes a Scratch value (generally in the range&#xD; *   0..100 or -100..100) and maps it to a value useful to the shader. This&#xD; *   mapping may not be reversible.&#xD; * @prop {boolean} shapeChanges - Whether the effect could change the drawn shape.&#xD; */&#xD;&#xD;/**&#xD; * Mapping of each effect name to info about that effect.&#xD; * @enum {ShaderManager.Effect}&#xD; */&#xD;&#xD;&#xD;ShaderManager.EFFECT_INFO = {&#xD;    /** Color effect */&#xD;    color: {&#xD;        mask: 1 &lt;&lt; 0,&#xD;        converter: function converter(x) {&#xD;            return x / 200 % 1;&#xD;        },&#xD;        shapeChanges: false&#xD;    },&#xD;    /** Fisheye effect */&#xD;    fisheye: {&#xD;        mask: 1 &lt;&lt; 1,&#xD;        converter: function converter(x) {&#xD;            return Math.max(0, (x + 100) / 100);&#xD;        },&#xD;        shapeChanges: true&#xD;    },&#xD;    /** Whirl effect */&#xD;    whirl: {&#xD;        mask: 1 &lt;&lt; 2,&#xD;        converter: function converter(x) {&#xD;            return -x * Math.PI / 180;&#xD;        },&#xD;        shapeChanges: true&#xD;    },&#xD;    /** Pixelate effect */&#xD;    pixelate: {&#xD;        mask: 1 &lt;&lt; 3,&#xD;        converter: function converter(x) {&#xD;            return Math.abs(x) / 10;&#xD;        },&#xD;        shapeChanges: true&#xD;    },&#xD;    /** Mosaic effect */&#xD;    mosaic: {&#xD;        mask: 1 &lt;&lt; 4,&#xD;        converter: function converter(x) {&#xD;            x = Math.round((Math.abs(x) + 10) / 10);&#xD;            /** @todo cap by Math.min(srcWidth, srcHeight) */&#xD;            return Math.max(1, Math.min(x, 512));&#xD;        },&#xD;        shapeChanges: true&#xD;    },&#xD;    /** Brightness effect */&#xD;    brightness: {&#xD;        mask: 1 &lt;&lt; 5,&#xD;        converter: function converter(x) {&#xD;            return Math.max(-100, Math.min(x, 100)) / 100;&#xD;        },&#xD;        shapeChanges: false&#xD;    },&#xD;    /** Ghost effect */&#xD;    ghost: {&#xD;        mask: 1 &lt;&lt; 6,&#xD;        converter: function converter(x) {&#xD;            return 1 - Math.max(0, Math.min(x, 100)) / 100;&#xD;        },&#xD;        shapeChanges: false&#xD;    }&#xD;};&#xD;&#xD;/**&#xD; * The name of each supported effect.&#xD; * @type {Array}&#xD; */&#xD;ShaderManager.EFFECTS = Object.keys(ShaderManager.EFFECT_INFO);&#xD;&#xD;/**&#xD; * The available draw modes.&#xD; * @readonly&#xD; * @enum {string}&#xD; */&#xD;ShaderManager.DRAW_MODE = {&#xD;    /**&#xD;     * Draw normally.&#xD;     */&#xD;    default: &apos;default&apos;,&#xD;&#xD;    /**&#xD;     * Draw a silhouette using a solid color.&#xD;     */&#xD;    silhouette: &apos;silhouette&apos;,&#xD;&#xD;    /**&#xD;     * Draw only the parts of the drawable which match a particular color.&#xD;     */&#xD;    colorMask: &apos;colorMask&apos;&#xD;};&#xD;&#xD;module.exports = ShaderManager;&#xD;&#xD;/***/ }),&#xD;/* 4 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(30);&#xD;&#xD;/***/ }),&#xD;/* 5 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i &amp;&amp; _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n &amp;&amp; _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var EventEmitter = __webpack_require__(4);&#xD;&#xD;var hull = __webpack_require__(20);&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var BitmapSkin = __webpack_require__(6);&#xD;var Drawable = __webpack_require__(7);&#xD;var PenSkin = __webpack_require__(8);&#xD;var RenderConstants = __webpack_require__(1);&#xD;var ShaderManager = __webpack_require__(3);&#xD;var SVGSkin = __webpack_require__(10);&#xD;&#xD;/**&#xD; * @callback RenderWebGL#idFilterFunc&#xD; * @param {int} drawableID The ID to filter.&#xD; * @return {bool} True if the ID passes the filter, otherwise false.&#xD; */&#xD;&#xD;/**&#xD; * Maximum touch size for a picking check.&#xD; * @todo Figure out a reasonable max size. Maybe this should be configurable?&#xD; * @type {Array&lt;int&gt;}&#xD; * @memberof RenderWebGL&#xD; */&#xD;var MAX_TOUCH_SIZE = [3, 3];&#xD;&#xD;/**&#xD; * "touching {color}?" or "{color} touching {color}?" tests will be true if the&#xD; * target is touching a color whose components are each within this tolerance of&#xD; * the corresponding component of the query color.&#xD; * between 0 (exact matches only) and 255 (match anything).&#xD; * @type {int}&#xD; * @memberof RenderWebGL&#xD; */&#xD;var TOLERANCE_TOUCHING_COLOR = 2;&#xD;&#xD;/**&#xD; * Sprite Fencing - The number of pixels a sprite is required to leave remaining&#xD; * onscreen around the edge of the staging area.&#xD; * @type {number}&#xD; */&#xD;var FENCE_WIDTH = 15;&#xD;&#xD;var RenderWebGL = function (_EventEmitter) {&#xD;    _inherits(RenderWebGL, _EventEmitter);&#xD;&#xD;    /**&#xD;     * Create a renderer for drawing Scratch sprites to a canvas using WebGL.&#xD;     * Coordinates will default to Scratch 2.0 values if unspecified.&#xD;     * The stage&apos;s "native" size will be calculated from the these coordinates.&#xD;     * For example, the defaults result in a native size of 480x360.&#xD;     * Queries such as "touching color?" will always execute at the native size.&#xD;     * @see RenderWebGL#setStageSize&#xD;     * @see RenderWebGL#resize&#xD;     * @param {canvas} canvas The canvas to draw onto.&#xD;     * @param {int} [xLeft=-240] The x-coordinate of the left edge.&#xD;     * @param {int} [xRight=240] The x-coordinate of the right edge.&#xD;     * @param {int} [yBottom=-180] The y-coordinate of the bottom edge.&#xD;     * @param {int} [yTop=180] The y-coordinate of the top edge.&#xD;     * @constructor&#xD;     * @listens RenderWebGL#event:NativeSizeChanged&#xD;     */&#xD;    function RenderWebGL(canvas, xLeft, xRight, yBottom, yTop) {&#xD;        _classCallCheck(this, RenderWebGL);&#xD;&#xD;        /** @type {Drawable[]} */&#xD;        var _this = _possibleConstructorReturn(this, (RenderWebGL.__proto__ || Object.getPrototypeOf(RenderWebGL)).call(this));&#xD;&#xD;        _this._allDrawables = [];&#xD;&#xD;        /** @type {Skin[]} */&#xD;        _this._allSkins = [];&#xD;&#xD;        /** @type {Array&lt;int&gt;} */&#xD;        _this._drawList = [];&#xD;&#xD;        /** @type {WebGLRenderingContext} */&#xD;        var gl = _this._gl = twgl.getWebGLContext(canvas, { alpha: false, stencil: true });&#xD;&#xD;        /** @type {int} */&#xD;        _this._nextDrawableId = RenderConstants.ID_NONE + 1;&#xD;&#xD;        /** @type {int} */&#xD;        _this._nextSkinId = RenderConstants.ID_NONE + 1;&#xD;&#xD;        /** @type {module:twgl/m4.Mat4} */&#xD;        _this._projection = twgl.m4.identity();&#xD;&#xD;        /** @type {ShaderManager} */&#xD;        _this._shaderManager = new ShaderManager(gl);&#xD;&#xD;        /** @type {HTMLCanvasElement} */&#xD;        _this._tempCanvas = document.createElement(&apos;canvas&apos;);&#xD;&#xD;        _this._createGeometry();&#xD;&#xD;        _this.on(RenderConstants.Events.NativeSizeChanged, _this.onNativeSizeChanged);&#xD;&#xD;        _this.setBackgroundColor(1, 1, 1);&#xD;        _this.setStageSize(xLeft || -240, xRight || 240, yBottom || -180, yTop || 180);&#xD;        _this.resize(_this._nativeSize[0], _this._nativeSize[1]);&#xD;&#xD;        gl.disable(gl.DEPTH_TEST);&#xD;        /** @todo disable when no partial transparency? */&#xD;        gl.enable(gl.BLEND);&#xD;        gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ZERO, gl.ONE);&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * @returns {WebGLRenderingContext} the WebGL rendering context associated with this renderer.&#xD;     */&#xD;&#xD;&#xD;    _createClass(RenderWebGL, [{&#xD;        key: &apos;resize&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Set the physical size of the stage in device-independent pixels.&#xD;         * This will be multiplied by the device&apos;s pixel ratio on high-DPI displays.&#xD;         * @param {int} pixelsWide The desired width in device-independent pixels.&#xD;         * @param {int} pixelsTall The desired height in device-independent pixels.&#xD;         */&#xD;        value: function resize(pixelsWide, pixelsTall) {&#xD;            var pixelRatio = window.devicePixelRatio || 1;&#xD;            this._gl.canvas.width = pixelsWide * pixelRatio;&#xD;            this._gl.canvas.height = pixelsTall * pixelRatio;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the background color for the stage. The stage will be cleared with this&#xD;         * color each frame.&#xD;         * @param {number} red The red component for the background.&#xD;         * @param {number} green The green component for the background.&#xD;         * @param {number} blue The blue component for the background.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setBackgroundColor&apos;,&#xD;        value: function setBackgroundColor(red, green, blue) {&#xD;            this._backgroundColor = [red, green, blue, 1];&#xD;        }&#xD;&#xD;        /**&#xD;         * Tell the renderer to draw various debug information to the provided canvas&#xD;         * during certain operations.&#xD;         * @param {canvas} canvas The canvas to use for debug output.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setDebugCanvas&apos;,&#xD;        value: function setDebugCanvas(canvas) {&#xD;            this._debugCanvas = canvas;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set logical size of the stage in Scratch units.&#xD;         * @param {int} xLeft The left edge&apos;s x-coordinate. Scratch 2 uses -240.&#xD;         * @param {int} xRight The right edge&apos;s x-coordinate. Scratch 2 uses 240.&#xD;         * @param {int} yBottom The bottom edge&apos;s y-coordinate. Scratch 2 uses -180.&#xD;         * @param {int} yTop The top edge&apos;s y-coordinate. Scratch 2 uses 180.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setStageSize&apos;,&#xD;        value: function setStageSize(xLeft, xRight, yBottom, yTop) {&#xD;            this._xLeft = xLeft;&#xD;            this._xRight = xRight;&#xD;            this._yBottom = yBottom;&#xD;            this._yTop = yTop;&#xD;&#xD;            // swap yBottom &amp; yTop to fit Scratch convention of +y=up&#xD;            this._projection = twgl.m4.ortho(xLeft, xRight, yBottom, yTop, -1, 1);&#xD;&#xD;            this._setNativeSize(Math.abs(xRight - xLeft), Math.abs(yBottom - yTop));&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;int&gt;} the "native" size of the stage, which is used for pen, query renders, etc.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getNativeSize&apos;,&#xD;        value: function getNativeSize() {&#xD;            return [this._nativeSize[0], this._nativeSize[1]];&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the "native" size of the stage, which is used for pen, query renders, etc.&#xD;         * @param {int} width - the new width to set.&#xD;         * @param {int} height - the new height to set.&#xD;         * @private&#xD;         * @fires RenderWebGL#event:NativeSizeChanged&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_setNativeSize&apos;,&#xD;        value: function _setNativeSize(width, height) {&#xD;            this._nativeSize = [width, height];&#xD;            this.emit(RenderConstants.Events.NativeSizeChanged, { newSize: this._nativeSize });&#xD;        }&#xD;&#xD;        /**&#xD;         * Create a new bitmap skin from a snapshot of the provided bitmap data.&#xD;         * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - new contents for this skin.&#xD;         * @param {!int} [costumeResolution=1] - The resolution to use for this bitmap.&#xD;         * @param {?Array&lt;number&gt;} rotationCenter Optional: rotation center of the skin. If not supplied, the center of the&#xD;         * skin will be used&#xD;         * @returns {!int} the ID for the new skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createBitmapSkin&apos;,&#xD;        value: function createBitmapSkin(bitmapData, costumeResolution, rotationCenter) {&#xD;            var skinId = this._nextSkinId++;&#xD;            var newSkin = new BitmapSkin(skinId, this);&#xD;            newSkin.setBitmap(bitmapData, costumeResolution, rotationCenter);&#xD;            this._allSkins[skinId] = newSkin;&#xD;            return skinId;&#xD;        }&#xD;&#xD;        /**&#xD;         * Create a new SVG skin.&#xD;         * @param {!string} svgData - new SVG to use.&#xD;         * @param {?Array&lt;number&gt;} rotationCenter Optional: rotation center of the skin. If not supplied, the center of the&#xD;         * skin will be used&#xD;         * @returns {!int} the ID for the new skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createSVGSkin&apos;,&#xD;        value: function createSVGSkin(svgData, rotationCenter) {&#xD;            var skinId = this._nextSkinId++;&#xD;            var newSkin = new SVGSkin(skinId, this);&#xD;            newSkin.setSVG(svgData, rotationCenter);&#xD;            this._allSkins[skinId] = newSkin;&#xD;            return skinId;&#xD;        }&#xD;&#xD;        /**&#xD;         * Create a new PenSkin - a skin which implements a Scratch pen layer.&#xD;         * @returns {!int} the ID for the new skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createPenSkin&apos;,&#xD;        value: function createPenSkin() {&#xD;            var skinId = this._nextSkinId++;&#xD;            var newSkin = new PenSkin(skinId, this);&#xD;            this._allSkins[skinId] = newSkin;&#xD;            return skinId;&#xD;        }&#xD;&#xD;        /**&#xD;         * Destroy an existing skin. Do not use the skin or its ID after calling this.&#xD;         * @param {!int} skinId - The ID of the skin to destroy.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;destroySkin&apos;,&#xD;        value: function destroySkin(skinId) {&#xD;            var oldSkin = this._allSkins[skinId];&#xD;            oldSkin.dispose();&#xD;            delete this._allSkins[skinId];&#xD;        }&#xD;&#xD;        /**&#xD;         * Create a new Drawable and add it to the scene.&#xD;         * @returns {int} The ID of the new Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;createDrawable&apos;,&#xD;        value: function createDrawable() {&#xD;            var drawableID = this._nextDrawableId++;&#xD;            var drawable = new Drawable(drawableID);&#xD;            this._allDrawables[drawableID] = drawable;&#xD;            this._drawList.push(drawableID);&#xD;&#xD;            drawable.skin = null;&#xD;&#xD;            return drawableID;&#xD;        }&#xD;&#xD;        /**&#xD;         * Destroy a Drawable, removing it from the scene.&#xD;         * @param {int} drawableID The ID of the Drawable to remove.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;destroyDrawable&apos;,&#xD;        value: function destroyDrawable(drawableID) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            drawable.dispose();&#xD;            delete this._allDrawables[drawableID];&#xD;&#xD;            var index = void 0;&#xD;            while ((index = this._drawList.indexOf(drawableID)) &gt;= 0) {&#xD;                this._drawList.splice(index, 1);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set a drawable&apos;s order in the drawable list (effectively, z/layer).&#xD;         * Can be used to move drawables to absolute positions in the list,&#xD;         * or relative to their current positions.&#xD;         * "go back N layers": setDrawableOrder(id, -N, true, 1); (assuming stage at 0).&#xD;         * "go to back": setDrawableOrder(id, 1); (assuming stage at 0).&#xD;         * "go to front": setDrawableOrder(id, Infinity);&#xD;         * @param {int} drawableID ID of Drawable to reorder.&#xD;         * @param {number} order New absolute order or relative order adjusment.&#xD;         * @param {boolean=} optIsRelative If set, `order` refers to a relative change.&#xD;         * @param {number=} optMin If set, order constrained to be at least `optMin`.&#xD;         * @return {?number} New order if changed, or null.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setDrawableOrder&apos;,&#xD;        value: function setDrawableOrder(drawableID, order, optIsRelative, optMin) {&#xD;            var oldIndex = this._drawList.indexOf(drawableID);&#xD;            if (oldIndex &gt;= 0) {&#xD;                // Remove drawable from the list.&#xD;                var drawable = this._drawList.splice(oldIndex, 1)[0];&#xD;                // Determine new index.&#xD;                var newIndex = order;&#xD;                if (optIsRelative) {&#xD;                    newIndex += oldIndex;&#xD;                }&#xD;                if (optMin) {&#xD;                    newIndex = Math.max(newIndex, optMin);&#xD;                }&#xD;                newIndex = Math.max(newIndex, 0);&#xD;                // Insert at new index.&#xD;                this._drawList.splice(newIndex, 0, drawable);&#xD;                return this._drawList.indexOf(drawable);&#xD;            }&#xD;            return null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw all current drawables and present the frame on the canvas.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;draw&apos;,&#xD;        value: function draw() {&#xD;            var gl = this._gl;&#xD;&#xD;            twgl.bindFramebufferInfo(gl, null);&#xD;            gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);&#xD;            gl.clearColor.apply(gl, this._backgroundColor);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT);&#xD;&#xD;            this._drawThese(this._drawList, ShaderManager.DRAW_MODE.default, this._projection);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the precise bounds for a Drawable.&#xD;         * @param {int} drawableID ID of Drawable to get bounds for.&#xD;         * @return {object} Bounds for a tight box around the Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getBounds&apos;,&#xD;        value: function getBounds(drawableID) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            // Tell the Drawable about its updated convex hull, if necessary.&#xD;            if (drawable.needsConvexHullPoints()) {&#xD;                var points = this._getConvexHullPointsForDrawable(drawableID);&#xD;                drawable.setConvexHullPoints(points);&#xD;            }&#xD;            var bounds = drawable.getFastBounds();&#xD;            // In debug mode, draw the bounds.&#xD;            if (this._debugCanvas) {&#xD;                var gl = this._gl;&#xD;                this._debugCanvas.width = gl.canvas.width;&#xD;                this._debugCanvas.height = gl.canvas.height;&#xD;                var context = this._debugCanvas.getContext(&apos;2d&apos;);&#xD;                context.drawImage(gl.canvas, 0, 0);&#xD;                context.strokeStyle = &apos;#FF0000&apos;;&#xD;                var pr = window.devicePixelRatio;&#xD;                context.strokeRect(pr * (bounds.left + this._nativeSize[0] / 2), pr * (-bounds.top + this._nativeSize[1] / 2), pr * (bounds.right - bounds.left), pr * (-bounds.bottom + bounds.top));&#xD;            }&#xD;            return bounds;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the current skin (costume) size of a Drawable.&#xD;         * @param {int} drawableID The ID of the Drawable to measure.&#xD;         * @return {Array&lt;number&gt;} Skin size, width and height.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getSkinSize&apos;,&#xD;        value: function getSkinSize(drawableID) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            return drawable.skin.size;&#xD;        }&#xD;&#xD;        /**&#xD;         * Check if a particular Drawable is touching a particular color.&#xD;         * @param {int} drawableID The ID of the Drawable to check.&#xD;         * @param {Array&lt;int&gt;} color3b Test if the Drawable is touching this color.&#xD;         * @param {Array&lt;int&gt;} [mask3b] Optionally mask the check to this part of Drawable.&#xD;         * @returns {boolean} True iff the Drawable is touching the color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingColor&apos;,&#xD;        value: function isTouchingColor(drawableID, color3b, mask3b) {&#xD;            var gl = this._gl;&#xD;            twgl.bindFramebufferInfo(gl, this._queryBufferInfo);&#xD;&#xD;            var bounds = this._touchingBounds(drawableID);&#xD;            if (!bounds) {&#xD;                return;&#xD;            }&#xD;            var candidateIDs = this._filterCandidatesTouching(drawableID, this._drawList, bounds);&#xD;            if (!candidateIDs) {&#xD;                return;&#xD;            }&#xD;&#xD;            // Limit size of viewport to the bounds around the target Drawable,&#xD;            // and create the projection matrix for the draw.&#xD;            gl.viewport(0, 0, bounds.width, bounds.height);&#xD;            var projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1);&#xD;&#xD;            gl.clearColor.apply(gl, this._backgroundColor);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);&#xD;&#xD;            var extraUniforms = void 0;&#xD;            if (mask3b) {&#xD;                extraUniforms = {&#xD;                    u_colorMask: [mask3b[0] / 255, mask3b[1] / 255, mask3b[2] / 255],&#xD;                    u_colorMaskTolerance: TOLERANCE_TOUCHING_COLOR / 255&#xD;                };&#xD;            }&#xD;&#xD;            try {&#xD;                gl.enable(gl.STENCIL_TEST);&#xD;                gl.stencilFunc(gl.ALWAYS, 1, 1);&#xD;                gl.stencilOp(gl.KEEP, gl.KEEP, gl.REPLACE);&#xD;                gl.colorMask(false, false, false, false);&#xD;                this._drawThese([drawableID], mask3b ? ShaderManager.DRAW_MODE.colorMask : ShaderManager.DRAW_MODE.silhouette, projection, { extraUniforms: extraUniforms });&#xD;&#xD;                gl.stencilFunc(gl.EQUAL, 1, 1);&#xD;                gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);&#xD;                gl.colorMask(true, true, true, true);&#xD;&#xD;                this._drawThese(candidateIDs, ShaderManager.DRAW_MODE.default, projection, { idFilterFunc: function idFilterFunc(testID) {&#xD;                        return testID !== drawableID;&#xD;                    } });&#xD;            } finally {&#xD;                gl.colorMask(true, true, true, true);&#xD;                gl.disable(gl.STENCIL_TEST);&#xD;            }&#xD;&#xD;            var pixels = new Uint8Array(Math.floor(bounds.width * bounds.height * 4));&#xD;            gl.readPixels(0, 0, bounds.width, bounds.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);&#xD;&#xD;            if (this._debugCanvas) {&#xD;                this._debugCanvas.width = bounds.width;&#xD;                this._debugCanvas.height = bounds.height;&#xD;                var context = this._debugCanvas.getContext(&apos;2d&apos;);&#xD;                var imageData = context.getImageData(0, 0, bounds.width, bounds.height);&#xD;                imageData.data.set(pixels);&#xD;                context.putImageData(imageData, 0, 0);&#xD;            }&#xD;&#xD;            for (var pixelBase = 0; pixelBase &lt; pixels.length; pixelBase += 4) {&#xD;                var pixelDistanceR = Math.abs(pixels[pixelBase] - color3b[0]);&#xD;                var pixelDistanceG = Math.abs(pixels[pixelBase + 1] - color3b[1]);&#xD;                var pixelDistanceB = Math.abs(pixels[pixelBase + 2] - color3b[2]);&#xD;&#xD;                if (pixelDistanceR &lt;= TOLERANCE_TOUCHING_COLOR &amp;&amp; pixelDistanceG &lt;= TOLERANCE_TOUCHING_COLOR &amp;&amp; pixelDistanceB &lt;= TOLERANCE_TOUCHING_COLOR) {&#xD;                    return true;&#xD;                }&#xD;            }&#xD;&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Check if a particular Drawable is touching any in a set of Drawables.&#xD;         * @param {int} drawableID The ID of the Drawable to check.&#xD;         * @param {Array&lt;int&gt;} candidateIDs The Drawable IDs to check, otherwise all.&#xD;         * @returns {boolean} True iff the Drawable is touching one of candidateIDs.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;isTouchingDrawables&apos;,&#xD;        value: function isTouchingDrawables(drawableID, candidateIDs) {&#xD;            candidateIDs = candidateIDs || this._drawList;&#xD;&#xD;            var gl = this._gl;&#xD;&#xD;            twgl.bindFramebufferInfo(gl, this._queryBufferInfo);&#xD;&#xD;            var bounds = this._touchingBounds(drawableID);&#xD;            if (!bounds) {&#xD;                return;&#xD;            }&#xD;            candidateIDs = this._filterCandidatesTouching(drawableID, candidateIDs, bounds);&#xD;            if (!candidateIDs) {&#xD;                return;&#xD;            }&#xD;&#xD;            // Limit size of viewport to the bounds around the target Drawable,&#xD;            // and create the projection matrix for the draw.&#xD;            gl.viewport(0, 0, bounds.width, bounds.height);&#xD;            var projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1);&#xD;&#xD;            var noneColor = Drawable.color4fFromID(RenderConstants.ID_NONE);&#xD;            gl.clearColor.apply(gl, noneColor);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);&#xD;&#xD;            try {&#xD;                gl.enable(gl.STENCIL_TEST);&#xD;                gl.stencilFunc(gl.ALWAYS, 1, 1);&#xD;                gl.stencilOp(gl.KEEP, gl.KEEP, gl.REPLACE);&#xD;                gl.colorMask(false, false, false, false);&#xD;                this._drawThese([drawableID], ShaderManager.DRAW_MODE.silhouette, projection);&#xD;&#xD;                gl.stencilFunc(gl.EQUAL, 1, 1);&#xD;                gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);&#xD;                gl.colorMask(true, true, true, true);&#xD;&#xD;                this._drawThese(candidateIDs, ShaderManager.DRAW_MODE.silhouette, projection, { idFilterFunc: function idFilterFunc(testID) {&#xD;                        return testID !== drawableID;&#xD;                    } });&#xD;            } finally {&#xD;                gl.colorMask(true, true, true, true);&#xD;                gl.disable(gl.STENCIL_TEST);&#xD;            }&#xD;&#xD;            var pixels = new Uint8Array(Math.floor(bounds.width * bounds.height * 4));&#xD;            gl.readPixels(0, 0, bounds.width, bounds.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);&#xD;&#xD;            if (this._debugCanvas) {&#xD;                this._debugCanvas.width = bounds.width;&#xD;                this._debugCanvas.height = bounds.height;&#xD;                var context = this._debugCanvas.getContext(&apos;2d&apos;);&#xD;                var imageData = context.getImageData(0, 0, bounds.width, bounds.height);&#xD;                imageData.data.set(pixels);&#xD;                context.putImageData(imageData, 0, 0);&#xD;            }&#xD;&#xD;            for (var pixelBase = 0; pixelBase &lt; pixels.length; pixelBase += 4) {&#xD;                var pixelID = Drawable.color3bToID(pixels[pixelBase], pixels[pixelBase + 1], pixels[pixelBase + 2]);&#xD;                if (pixelID &gt; RenderConstants.ID_NONE) {&#xD;                    return true;&#xD;                }&#xD;            }&#xD;&#xD;            return false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Detect which sprite, if any, is at the given location.&#xD;         * @param {int} centerX The client x coordinate of the picking location.&#xD;         * @param {int} centerY The client y coordinate of the picking location.&#xD;         * @param {int} touchWidth The client width of the touch event (optional).&#xD;         * @param {int} touchHeight The client height of the touch event (optional).&#xD;         * @param {Array&lt;int&gt;} candidateIDs The Drawable IDs to pick from, otherwise all.&#xD;         * @returns {int} The ID of the topmost Drawable under the picking location, or&#xD;         * RenderConstants.ID_NONE if there is no Drawable at that location.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;pick&apos;,&#xD;        value: function pick(centerX, centerY, touchWidth, touchHeight, candidateIDs) {&#xD;            var gl = this._gl;&#xD;&#xD;            touchWidth = touchWidth || 1;&#xD;            touchHeight = touchHeight || 1;&#xD;            candidateIDs = candidateIDs || this._drawList;&#xD;&#xD;            var clientToGLX = gl.canvas.width / gl.canvas.clientWidth;&#xD;            var clientToGLY = gl.canvas.height / gl.canvas.clientHeight;&#xD;&#xD;            centerX *= clientToGLX;&#xD;            centerY *= clientToGLY;&#xD;            touchWidth *= clientToGLX;&#xD;            touchHeight *= clientToGLY;&#xD;&#xD;            touchWidth = Math.max(1, Math.min(touchWidth, MAX_TOUCH_SIZE[0]));&#xD;            touchHeight = Math.max(1, Math.min(touchHeight, MAX_TOUCH_SIZE[1]));&#xD;&#xD;            var pixelLeft = Math.floor(centerX - Math.floor(touchWidth / 2) + 0.5);&#xD;            var pixelRight = Math.floor(centerX + Math.ceil(touchWidth / 2) + 0.5);&#xD;            var pixelTop = Math.floor(centerY - Math.floor(touchHeight / 2) + 0.5);&#xD;            var pixelBottom = Math.floor(centerY + Math.ceil(touchHeight / 2) + 0.5);&#xD;&#xD;            twgl.bindFramebufferInfo(gl, this._pickBufferInfo);&#xD;            gl.viewport(0, 0, touchWidth, touchHeight);&#xD;&#xD;            var noneColor = Drawable.color4fFromID(RenderConstants.ID_NONE);&#xD;            gl.clearColor.apply(gl, noneColor);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT);&#xD;&#xD;            var widthPerPixel = (this._xRight - this._xLeft) / this._gl.canvas.width;&#xD;            var heightPerPixel = (this._yBottom - this._yTop) / this._gl.canvas.height;&#xD;&#xD;            var pickLeft = this._xLeft + pixelLeft * widthPerPixel;&#xD;            var pickRight = this._xLeft + pixelRight * widthPerPixel;&#xD;            var pickTop = this._yTop + pixelTop * heightPerPixel;&#xD;            var pickBottom = this._yTop + pixelBottom * heightPerPixel;&#xD;&#xD;            var projection = twgl.m4.ortho(pickLeft, pickRight, pickTop, pickBottom, -1, 1);&#xD;&#xD;            this._drawThese(candidateIDs, ShaderManager.DRAW_MODE.silhouette, projection);&#xD;&#xD;            var pixels = new Uint8Array(Math.floor(touchWidth * touchHeight * 4));&#xD;            gl.readPixels(0, 0, touchWidth, touchHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels);&#xD;&#xD;            if (this._debugCanvas) {&#xD;                this._debugCanvas.width = touchWidth;&#xD;                this._debugCanvas.height = touchHeight;&#xD;                var context = this._debugCanvas.getContext(&apos;2d&apos;);&#xD;                var imageData = context.getImageData(0, 0, touchWidth, touchHeight);&#xD;                imageData.data.set(pixels);&#xD;                context.putImageData(imageData, 0, 0);&#xD;            }&#xD;&#xD;            var hits = {};&#xD;            for (var pixelBase = 0; pixelBase &lt; pixels.length; pixelBase += 4) {&#xD;                var pixelID = Drawable.color3bToID(pixels[pixelBase], pixels[pixelBase + 1], pixels[pixelBase + 2]);&#xD;                hits[pixelID] = (hits[pixelID] || 0) + 1;&#xD;            }&#xD;&#xD;            // Bias toward selecting anything over nothing&#xD;            hits[RenderConstants.ID_NONE] = 0;&#xD;&#xD;            var hit = RenderConstants.ID_NONE;&#xD;            for (var hitID in hits) {&#xD;                if (hits.hasOwnProperty(hitID) &amp;&amp; hits[hitID] &gt; hits[hit]) {&#xD;                    hit = hitID;&#xD;                }&#xD;            }&#xD;&#xD;            return hit | 0;&#xD;        }&#xD;&#xD;        /**&#xD;         * @typedef DrawableExtraction&#xD;         * @property {Uint8Array} data Raw pixel data for the drawable&#xD;         * @property {int} width Drawable bounding box width&#xD;         * @property {int} height Drawable bounding box height&#xD;         * @property {Array&lt;number&gt;} scratchOffset [x, y] offset in Scratch coordinates&#xD;         * from the drawable position to the client x, y coordinate&#xD;         * @property {int} x The x coordinate relative to drawable bounding box&#xD;         * @property {int} y The y coordinate relative to drawable bounding box&#xD;         */&#xD;&#xD;        /**&#xD;         * Return drawable pixel data and picking coordinates relative to the drawable bounds&#xD;         * @param {int} drawableID The ID of the drawable to get pixel data for&#xD;         * @param {int} x The client x coordinate of the picking location.&#xD;         * @param {int} y The client y coordinate of the picking location.&#xD;         * @return {?DrawableExtraction} Data about the picked drawable&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;extractDrawable&apos;,&#xD;        value: function extractDrawable(drawableID, x, y) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            if (!drawable) return null;&#xD;&#xD;            var gl = this._gl;&#xD;            twgl.bindFramebufferInfo(gl, this._queryBufferInfo);&#xD;&#xD;            var bounds = drawable.getFastBounds();&#xD;            bounds.snapToInt();&#xD;&#xD;            // Translate input x and y to coordinates relative to the drawable&#xD;            var pickX = x - (this._nativeSize[0] / 2 + bounds.left);&#xD;            var pickY = y - (this._nativeSize[1] / 2 - bounds.top);&#xD;&#xD;            // Limit size of viewport to the bounds around the target Drawable,&#xD;            // and create the projection matrix for the draw.&#xD;            gl.viewport(0, 0, bounds.width, bounds.height);&#xD;            var projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1);&#xD;&#xD;            gl.clearColor(0, 0, 0, 0);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT);&#xD;            try {&#xD;                gl.disable(gl.BLEND);&#xD;                this._drawThese([drawableID], ShaderManager.DRAW_MODE.default, projection, { effectMask: &#126;ShaderManager.EFFECT_INFO.ghost.mask });&#xD;            } finally {&#xD;                gl.enable(gl.BLEND);&#xD;            }&#xD;&#xD;            var data = new Uint8Array(Math.floor(bounds.width * bounds.height * 4));&#xD;            gl.readPixels(0, 0, bounds.width, bounds.height, gl.RGBA, gl.UNSIGNED_BYTE, data);&#xD;&#xD;            if (this._debugCanvas) {&#xD;                this._debugCanvas.width = bounds.width;&#xD;                this._debugCanvas.height = bounds.height;&#xD;                var ctx = this._debugCanvas.getContext(&apos;2d&apos;);&#xD;                var imageData = ctx.createImageData(bounds.width, bounds.height);&#xD;                imageData.data.set(data);&#xD;                ctx.putImageData(imageData, 0, 0);&#xD;                ctx.beginPath();&#xD;                ctx.arc(pickX, pickY, 3, 0, 2 * Math.PI, false);&#xD;                ctx.fillStyle = &apos;white&apos;;&#xD;                ctx.fill();&#xD;                ctx.lineWidth = 1;&#xD;                ctx.strokeStyle = &apos;black&apos;;&#xD;                ctx.stroke();&#xD;            }&#xD;&#xD;            return {&#xD;                data: data,&#xD;                width: bounds.width,&#xD;                height: bounds.height,&#xD;                scratchOffset: [this._nativeSize[0] / 2 - x + drawable._position[0], this._nativeSize[1] / 2 - y - drawable._position[1]],&#xD;                x: pickX,&#xD;                y: pickY&#xD;            };&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the candidate bounding box for a touching query.&#xD;         * @param {int} drawableID ID for drawable of query.&#xD;         * @return {?Rectangle} Rectangle bounds for touching query, or null.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_touchingBounds&apos;,&#xD;        value: function _touchingBounds(drawableID) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;&#xD;            /** @todo remove this once URL-based skin setting is removed. */&#xD;            if (!drawable.skin || !drawable.skin.getTexture([100, 100])) return null;&#xD;&#xD;            var bounds = drawable.getFastBounds();&#xD;&#xD;            // Limit queries to the stage size.&#xD;            bounds.clamp(this._xLeft, this._xRight, this._yBottom, this._yTop);&#xD;&#xD;            // Use integer coordinates for queries - weird things happen&#xD;            // when you provide float width/heights to gl.viewport and projection.&#xD;            bounds.snapToInt();&#xD;&#xD;            if (bounds.width === 0 || bounds.height === 0) {&#xD;                // No space to query.&#xD;                return null;&#xD;            }&#xD;            return bounds;&#xD;        }&#xD;&#xD;        /**&#xD;         * Filter a list of candidates for a touching query into only those that&#xD;         * could possibly intersect the given bounds.&#xD;         * @param {int} drawableID - ID for drawable of query.&#xD;         * @param {Array&lt;int&gt;} candidateIDs - Candidates for touching query.&#xD;         * @param {Rectangle} bounds - Bounds to limit candidates to.&#xD;         * @return {?Array&lt;int&gt;} Filtered candidateIDs, or null if none.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_filterCandidatesTouching&apos;,&#xD;        value: function _filterCandidatesTouching(drawableID, candidateIDs, bounds) {&#xD;            var _this2 = this;&#xD;&#xD;            // Filter candidates by rough bounding box intersection.&#xD;            // Do this before _drawThese, so we can prevent any GL operations&#xD;            // and readback by returning early.&#xD;            candidateIDs = candidateIDs.filter(function (testID) {&#xD;                if (testID === drawableID) return false;&#xD;                // Only draw items which could possibly overlap target Drawable.&#xD;                var candidate = _this2._allDrawables[testID];&#xD;                var candidateBounds = candidate.getFastBounds();&#xD;                return bounds.intersects(candidateBounds);&#xD;            });&#xD;            if (candidateIDs.length === 0) {&#xD;                // No possible intersections based on bounding boxes.&#xD;                return null;&#xD;            }&#xD;            return candidateIDs;&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the position, direction, scale, or effect properties of this Drawable.&#xD;         * @param {int} drawableID The ID of the Drawable to update.&#xD;         * @param {object.&lt;string,*&gt;} properties The new property values to set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;updateDrawableProperties&apos;,&#xD;        value: function updateDrawableProperties(drawableID, properties) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            if (!drawable) {&#xD;                /**&#xD;                 * @todo fix whatever&apos;s wrong in the VM which causes this, then add a warning or throw here.&#xD;                 * Right now this happens so much on some projects that a warning or exception here can hang the browser.&#xD;                 */&#xD;                return;&#xD;            }&#xD;            if (&apos;skinId&apos; in properties) {&#xD;                drawable.skin = this._allSkins[properties.skinId];&#xD;            }&#xD;            if (&apos;rotationCenter&apos; in properties) {&#xD;                var newRotationCenter = properties.rotationCenter;&#xD;                drawable.skin.setRotationCenter(newRotationCenter[0], newRotationCenter[1]);&#xD;            }&#xD;            drawable.updateProperties(properties);&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the position object&apos;s x &amp; y members to keep the drawable fenced in view.&#xD;         * @param {int} drawableID - The ID of the Drawable to update.&#xD;         * @param {Array.&lt;number, number&gt;} position to be fenced - An array of type [x, y]&#xD;         * @return {Array.&lt;number, number&gt;} The fenced position as an array [x, y]&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getFencedPositionOfDrawable&apos;,&#xD;        value: function getFencedPositionOfDrawable(drawableID, position) {&#xD;&#xD;            var x = position[0];&#xD;            var y = position[1];&#xD;&#xD;            var drawable = this._allDrawables[drawableID];&#xD;            if (!drawable) {&#xD;                // TODO: fix whatever&apos;s wrong in the VM which causes this, then add a warning or throw here.&#xD;                // Right now this happens so much on some projects that a warning or exception here can hang the browser.&#xD;                return [x, y];&#xD;            }&#xD;&#xD;            var dx = x - drawable._position[0];&#xD;            var dy = y - drawable._position[1];&#xD;&#xD;            var aabb = drawable.getFastBounds();&#xD;&#xD;            var sx = this._xRight - Math.min(FENCE_WIDTH, Math.floor((aabb.right - aabb.left) / 2));&#xD;            if (aabb.right + dx &lt; -sx) {&#xD;                x = drawable._position[0] - (sx + aabb.right);&#xD;            } else if (aabb.left + dx &gt; sx) {&#xD;                x = drawable._position[0] + (sx - aabb.left);&#xD;            }&#xD;            var sy = this._yTop - Math.min(FENCE_WIDTH, Math.floor((aabb.top - aabb.bottom) / 2));&#xD;            if (aabb.top + dy &lt; -sy) {&#xD;                y = drawable._position[1] - (sy + aabb.top);&#xD;            } else if (aabb.bottom + dy &gt; sy) {&#xD;                y = drawable._position[1] + (sy - aabb.bottom);&#xD;            }&#xD;            return [x, y];&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear a pen layer.&#xD;         * @param {int} penSkinID - the unique ID of a Pen Skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penClear&apos;,&#xD;        value: function penClear(penSkinID) {&#xD;            var skin = /** @type {PenSkin} */this._allSkins[penSkinID];&#xD;            skin.clear();&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw a point on a pen layer.&#xD;         * @param {int} penSkinID - the unique ID of a Pen Skin.&#xD;         * @param {PenAttributes} penAttributes - how the point should be drawn.&#xD;         * @param {number} x - the X coordinate of the point to draw.&#xD;         * @param {number} y - the Y coordinate of the point to draw.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penPoint&apos;,&#xD;        value: function penPoint(penSkinID, penAttributes, x, y) {&#xD;            var skin = /** @type {PenSkin} */this._allSkins[penSkinID];&#xD;            skin.drawPoint(penAttributes, x, y);&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw a line on a pen layer.&#xD;         * @param {int} penSkinID - the unique ID of a Pen Skin.&#xD;         * @param {PenAttributes} penAttributes - how the line should be drawn.&#xD;         * @param {number} x0 - the X coordinate of the beginning of the line.&#xD;         * @param {number} y0 - the Y coordinate of the beginning of the line.&#xD;         * @param {number} x1 - the X coordinate of the end of the line.&#xD;         * @param {number} y1 - the Y coordinate of the end of the line.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penLine&apos;,&#xD;        value: function penLine(penSkinID, penAttributes, x0, y0, x1, y1) {&#xD;            var skin = /** @type {PenSkin} */this._allSkins[penSkinID];&#xD;            skin.drawLine(penAttributes, x0, y0, x1, y1);&#xD;        }&#xD;&#xD;        /**&#xD;         * Stamp a Drawable onto a pen layer.&#xD;         * @param {int} penSkinID - the unique ID of a Pen Skin.&#xD;         * @param {int} stampID - the unique ID of the Drawable to use as the stamp.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;penStamp&apos;,&#xD;        value: function penStamp(penSkinID, stampID) {&#xD;            var stampDrawable = this._allDrawables[stampID];&#xD;            if (!stampDrawable) {&#xD;                return;&#xD;            }&#xD;&#xD;            var bounds = this._touchingBounds(stampID);&#xD;            if (!bounds) {&#xD;                return;&#xD;            }&#xD;&#xD;            var skin = /** @type {PenSkin} */this._allSkins[penSkinID];&#xD;&#xD;            var gl = this._gl;&#xD;            twgl.bindFramebufferInfo(gl, this._queryBufferInfo);&#xD;&#xD;            // Limit size of viewport to the bounds around the stamp Drawable and create the projection matrix for the draw.&#xD;            gl.viewport(0, 0, bounds.width, bounds.height);&#xD;            var projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1);&#xD;&#xD;            gl.clearColor(0, 0, 0, 0);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT);&#xD;&#xD;            try {&#xD;                gl.disable(gl.BLEND);&#xD;                this._drawThese([stampID], ShaderManager.DRAW_MODE.default, projection, { isStamping: true });&#xD;            } finally {&#xD;                gl.enable(gl.BLEND);&#xD;            }&#xD;&#xD;            var stampPixels = new Uint8Array(Math.floor(bounds.width * bounds.height * 4));&#xD;            gl.readPixels(0, 0, bounds.width, bounds.height, gl.RGBA, gl.UNSIGNED_BYTE, stampPixels);&#xD;&#xD;            var stampCanvas = this._tempCanvas;&#xD;            stampCanvas.width = bounds.width;&#xD;            stampCanvas.height = bounds.height;&#xD;&#xD;            var stampContext = stampCanvas.getContext(&apos;2d&apos;);&#xD;            var stampImageData = stampContext.createImageData(bounds.width, bounds.height);&#xD;            stampImageData.data.set(stampPixels);&#xD;            stampContext.putImageData(stampImageData, 0, 0);&#xD;&#xD;            skin.drawStamp(stampCanvas, bounds.left, bounds.top);&#xD;        }&#xD;&#xD;        /* ******&#xD;         * Truly internal functions: these support the functions above.&#xD;         ********/&#xD;&#xD;        /**&#xD;         * Build geometry (vertex and index) buffers.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_createGeometry&apos;,&#xD;        value: function _createGeometry() {&#xD;            var quad = {&#xD;                a_position: {&#xD;                    numComponents: 2,&#xD;                    data: [-0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5]&#xD;                },&#xD;                a_texCoord: {&#xD;                    numComponents: 2,&#xD;                    data: [1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1]&#xD;                }&#xD;            };&#xD;            this._bufferInfo = twgl.createBufferInfoFromArrays(this._gl, quad);&#xD;        }&#xD;&#xD;        /**&#xD;         * Respond to a change in the "native" rendering size. The native size is used by buffers which are fixed in size&#xD;         * regardless of the size of the main render target. This includes the buffers used for queries such as picking and&#xD;         * color-touching. The fixed size allows (more) consistent behavior across devices and presentation modes.&#xD;         * @param {object} event - The change event.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;onNativeSizeChanged&apos;,&#xD;        value: function onNativeSizeChanged(event) {&#xD;            var _event$newSize = _slicedToArray(event.newSize, 2),&#xD;                width = _event$newSize[0],&#xD;                height = _event$newSize[1];&#xD;&#xD;            var gl = this._gl;&#xD;            var attachments = [{ format: gl.RGBA }, { format: gl.DEPTH_STENCIL }];&#xD;&#xD;            if (!this._pickBufferInfo) {&#xD;                this._pickBufferInfo = twgl.createFramebufferInfo(gl, attachments, MAX_TOUCH_SIZE[0], MAX_TOUCH_SIZE[1]);&#xD;            }&#xD;&#xD;            /** @todo should we create this on demand to save memory? */&#xD;            // A 480x360 32-bpp buffer is 675 KiB.&#xD;            if (this._queryBufferInfo) {&#xD;                twgl.resizeFramebufferInfo(gl, this._queryBufferInfo, attachments, width, height);&#xD;            } else {&#xD;                this._queryBufferInfo = twgl.createFramebufferInfo(gl, attachments, width, height);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw a set of Drawables, by drawable ID&#xD;         * @param {Array&lt;int&gt;} drawables The Drawable IDs to draw, possibly this._drawList.&#xD;         * @param {ShaderManager.DRAW_MODE} drawMode Draw normally, silhouette, etc.&#xD;         * @param {module:twgl/m4.Mat4} projection The projection matrix to use.&#xD;         * @param {object} [opts] Options for drawing&#xD;         * @param {idFilterFunc} opts.filter An optional filter function.&#xD;         * @param {object.&lt;string,*&gt;} opts.extraUniforms Extra uniforms for the shaders.&#xD;         * @param {int} opts.effectMask Bitmask for effects to allow&#xD;         * @param {boolean} opts.isStamping Stamp mode ignores sprite visibility, always drawing.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_drawThese&apos;,&#xD;        value: function _drawThese(drawables, drawMode, projection) {&#xD;            var opts = arguments.length &gt; 3 &amp;&amp; arguments[3] !== undefined ? arguments[3] : {};&#xD;&#xD;            var gl = this._gl;&#xD;            var currentShader = null;&#xD;&#xD;            var numDrawables = drawables.length;&#xD;            for (var drawableIndex = 0; drawableIndex &lt; numDrawables; ++drawableIndex) {&#xD;                var drawableID = drawables[drawableIndex];&#xD;&#xD;                // If we have a filter, check whether the ID fails&#xD;                if (opts.filter &amp;&amp; !opts.filter(drawableID)) continue;&#xD;&#xD;                var drawable = this._allDrawables[drawableID];&#xD;                /** @todo check if drawable is inside the viewport before anything else */&#xD;&#xD;                // Hidden drawables (e.g., by a "hide" block) are not drawn unless stamping&#xD;                if (!drawable.getVisible() &amp;&amp; !opts.isStamping) continue;&#xD;&#xD;                var drawableScale = drawable.scale;&#xD;&#xD;                // If the skin or texture isn&apos;t ready yet, skip it.&#xD;                if (!drawable.skin || !drawable.skin.getTexture(drawableScale)) continue;&#xD;&#xD;                var effectBits = drawable.getEnabledEffects();&#xD;                effectBits &amp;= opts.hasOwnProperty(&apos;effectMask&apos;) ? opts.effectMask : effectBits;&#xD;                var newShader = this._shaderManager.getShader(drawMode, effectBits);&#xD;                if (currentShader !== newShader) {&#xD;                    currentShader = newShader;&#xD;                    gl.useProgram(currentShader.program);&#xD;                    twgl.setBuffersAndAttributes(gl, currentShader, this._bufferInfo);&#xD;                    twgl.setUniforms(currentShader, { u_projectionMatrix: projection });&#xD;                    twgl.setUniforms(currentShader, { u_fudge: window.fudge || 0 });&#xD;                }&#xD;&#xD;                twgl.setUniforms(currentShader, drawable.skin.getUniforms(drawableScale));&#xD;                twgl.setUniforms(currentShader, drawable.getUniforms());&#xD;&#xD;                // Apply extra uniforms after the Drawable&apos;s, to allow overwriting.&#xD;                if (opts.extraUniforms) {&#xD;                    twgl.setUniforms(currentShader, opts.extraUniforms);&#xD;                }&#xD;&#xD;                twgl.drawBufferInfo(gl, this._bufferInfo, gl.TRIANGLES);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the convex hull points for a particular Drawable.&#xD;         * To do this, draw the Drawable unrotated, unscaled, and untranslated.&#xD;         * Read back the pixels and find all boundary points.&#xD;         * Finally, apply a convex hull algorithm to simplify the set.&#xD;         * @param {int} drawableID The Drawable IDs calculate convex hull for.&#xD;         * @return {Array&lt;Array&lt;number&gt;&gt;} points Convex hull points, as [[x, y], ...]&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_getConvexHullPointsForDrawable&apos;,&#xD;        value: function _getConvexHullPointsForDrawable(drawableID) {&#xD;            var drawable = this._allDrawables[drawableID];&#xD;&#xD;            var _drawable$skin$size = _slicedToArray(drawable.skin.size, 2),&#xD;                width = _drawable$skin$size[0],&#xD;                height = _drawable$skin$size[1];&#xD;            // No points in the hull if invisible or size is 0.&#xD;&#xD;&#xD;            if (!drawable.getVisible() || width === 0 || height === 0) {&#xD;                return [];&#xD;            }&#xD;&#xD;            // Only draw to the size of the untransformed drawable.&#xD;            var gl = this._gl;&#xD;            twgl.bindFramebufferInfo(gl, this._queryBufferInfo);&#xD;            gl.viewport(0, 0, width, height);&#xD;&#xD;            // Clear the canvas with RenderConstants.ID_NONE.&#xD;            var noneColor = Drawable.color4fFromID(RenderConstants.ID_NONE);&#xD;            gl.clearColor.apply(gl, noneColor);&#xD;            gl.clear(gl.COLOR_BUFFER_BIT);&#xD;&#xD;            // Overwrite the model matrix to be unrotated, unscaled, untranslated.&#xD;            var modelMatrix = twgl.m4.identity();&#xD;            twgl.m4.rotateZ(modelMatrix, Math.PI, modelMatrix);&#xD;            twgl.m4.scale(modelMatrix, [width, height], modelMatrix);&#xD;&#xD;            var projection = twgl.m4.ortho(-0.5 * width, 0.5 * width, -0.5 * height, 0.5 * height, -1, 1);&#xD;&#xD;            this._drawThese([drawableID], ShaderManager.DRAW_MODE.silhouette, projection, { extraUniforms: { u_modelMatrix: modelMatrix } });&#xD;&#xD;            var pixels = new Uint8Array(Math.floor(width * height * 4));&#xD;            gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);&#xD;&#xD;            // Known boundary points on left/right edges of pixels.&#xD;            var boundaryPoints = [];&#xD;&#xD;            /**&#xD;             * Helper method to look up a pixel.&#xD;             * @param {int} x X coordinate of the pixel in `pixels`.&#xD;             * @param {int} y Y coordinate of the pixel in `pixels`.&#xD;             * @return {int} Known ID at that pixel, or RenderConstants.ID_NONE.&#xD;             */&#xD;            var _getPixel = function _getPixel(x, y) {&#xD;                var pixelBase = Math.round((width * y + x) * 4); // Sometimes SVGs don&apos;t have int width and height&#xD;                return Drawable.color3bToID(pixels[pixelBase], pixels[pixelBase + 1], pixels[pixelBase + 2]);&#xD;            };&#xD;            for (var y = 0; y &lt;= height; y++) {&#xD;                // Scan from left.&#xD;                for (var x = 0; x &lt; width; x++) {&#xD;                    if (_getPixel(x, y) &gt; RenderConstants.ID_NONE) {&#xD;                        boundaryPoints.push([x, y]);&#xD;                        break;&#xD;                    }&#xD;                }&#xD;                // Scan from right.&#xD;                for (var _x2 = width - 1; _x2 &gt;= 0; _x2--) {&#xD;                    if (_getPixel(_x2, y) &gt; RenderConstants.ID_NONE) {&#xD;                        boundaryPoints.push([_x2, y]);&#xD;                        break;&#xD;                    }&#xD;                }&#xD;            }&#xD;            // Simplify boundary points using convex hull.&#xD;            return hull(boundaryPoints, Infinity);&#xD;        }&#xD;    }, {&#xD;        key: &apos;gl&apos;,&#xD;        get: function get() {&#xD;            return this._gl;&#xD;        }&#xD;    }]);&#xD;&#xD;    return RenderWebGL;&#xD;}(EventEmitter);&#xD;&#xD;// :3&#xD;&#xD;&#xD;RenderWebGL.prototype.canHazPixels = RenderWebGL.prototype.extractDrawable;&#xD;&#xD;module.exports = RenderWebGL;&#xD;&#xD;/***/ }),&#xD;/* 6 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var Skin = __webpack_require__(2);&#xD;&#xD;var BitmapSkin = function (_Skin) {&#xD;    _inherits(BitmapSkin, _Skin);&#xD;&#xD;    /**&#xD;     * Create a new Bitmap Skin.&#xD;     * @extends Skin&#xD;     * @param {!int} id - The ID for this Skin.&#xD;     * @param {!RenderWebGL} renderer - The renderer which will use this skin.&#xD;     */&#xD;    function BitmapSkin(id, renderer) {&#xD;        _classCallCheck(this, BitmapSkin);&#xD;&#xD;        /** @type {!int} */&#xD;        var _this = _possibleConstructorReturn(this, (BitmapSkin.__proto__ || Object.getPrototypeOf(BitmapSkin)).call(this, id));&#xD;&#xD;        _this._costumeResolution = 1;&#xD;&#xD;        /** @type {!RenderWebGL} */&#xD;        _this._renderer = renderer;&#xD;&#xD;        /** @type {WebGLTexture} */&#xD;        _this._texture = null;&#xD;&#xD;        /** @type {Array&lt;int&gt;} */&#xD;        _this._textureSize = [0, 0];&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Dispose of this object. Do not use it after calling this method.&#xD;     */&#xD;&#xD;&#xD;    _createClass(BitmapSkin, [{&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            if (this._texture) {&#xD;                this._renderer.gl.deleteTexture(this._texture);&#xD;                this._texture = null;&#xD;            }&#xD;            _get(BitmapSkin.prototype.__proto__ || Object.getPrototypeOf(BitmapSkin.prototype), &apos;dispose&apos;, this).call(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;number&gt;} the "native" size, in texels, of this skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTexture&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * @param {Array&lt;number&gt;} scale - The scaling factors to be used.&#xD;         * @return {WebGLTexture} The GL texture representation of this skin when drawing at the given scale.&#xD;         */&#xD;        // eslint-disable-next-line no-unused-vars&#xD;        value: function getTexture(scale) {&#xD;            return this._texture;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the contents of this skin to a snapshot of the provided bitmap data.&#xD;         * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - new contents for this skin.&#xD;         * @param {int} [costumeResolution=1] - The resolution to use for this bitmap.&#xD;         * @param {Array&lt;number&gt;} [rotationCenter] - Optional rotation center for the bitmap. If not supplied, it will be&#xD;         * calculated from the bounding box&#xD;         * @fires Skin.event:WasAltered&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setBitmap&apos;,&#xD;        value: function setBitmap(bitmapData, costumeResolution, rotationCenter) {&#xD;            var gl = this._renderer.gl;&#xD;&#xD;            if (this._texture) {&#xD;                gl.bindTexture(gl.TEXTURE_2D, this._texture);&#xD;                gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmapData);&#xD;            } else {&#xD;                var textureOptions = {&#xD;                    auto: true,&#xD;                    mag: gl.NEAREST,&#xD;                    /** @todo mipmaps, linear (except pixelate) */&#xD;                    min: gl.NEAREST,&#xD;                    wrap: gl.CLAMP_TO_EDGE,&#xD;                    src: bitmapData&#xD;                };&#xD;&#xD;                this._texture = twgl.createTexture(gl, textureOptions);&#xD;            }&#xD;&#xD;            // Do these last in case any of the above throws an exception&#xD;            this._costumeResolution = costumeResolution || 1;&#xD;            this._textureSize = BitmapSkin._getBitmapSize(bitmapData);&#xD;&#xD;            if (typeof rotationCenter === &apos;undefined&apos;) rotationCenter = this.calculateRotationCenter();&#xD;            this.setRotationCenter.apply(this, rotationCenter);&#xD;&#xD;            this.emit(Skin.Events.WasAltered);&#xD;        }&#xD;&#xD;        /**&#xD;         * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - bitmap data to inspect.&#xD;         * @returns {Array&lt;int&gt;} the width and height of the bitmap data, in pixels.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;size&apos;,&#xD;        get: function get() {&#xD;            return [this._textureSize[0] / this._costumeResolution, this._textureSize[1] / this._costumeResolution];&#xD;        }&#xD;    }], [{&#xD;        key: &apos;_getBitmapSize&apos;,&#xD;        value: function _getBitmapSize(bitmapData) {&#xD;            if (bitmapData instanceof HTMLImageElement) {&#xD;                return [bitmapData.naturalWidth || bitmapData.width, bitmapData.naturalHeight || bitmapData.height];&#xD;            }&#xD;&#xD;            if (bitmapData instanceof HTMLVideoElement) {&#xD;                return [bitmapData.videoWidth || bitmapData.width, bitmapData.videoHeight || bitmapData.height];&#xD;            }&#xD;&#xD;            // ImageData or HTMLCanvasElement&#xD;            return [bitmapData.width, bitmapData.height];&#xD;        }&#xD;    }]);&#xD;&#xD;    return BitmapSkin;&#xD;}(Skin);&#xD;&#xD;module.exports = BitmapSkin;&#xD;&#xD;/***/ }),&#xD;/* 7 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var Rectangle = __webpack_require__(9);&#xD;var RenderConstants = __webpack_require__(1);&#xD;var ShaderManager = __webpack_require__(3);&#xD;var Skin = __webpack_require__(2);&#xD;&#xD;var Drawable = function () {&#xD;    /**&#xD;     * An object which can be drawn by the renderer.&#xD;     * @todo double-buffer all rendering state (position, skin, effects, etc.)&#xD;     * @param {!int} id - This Drawable&apos;s unique ID.&#xD;     * @constructor&#xD;     */&#xD;    function Drawable(id) {&#xD;        _classCallCheck(this, Drawable);&#xD;&#xD;        /** @type {!int} */&#xD;        this._id = id;&#xD;&#xD;        /**&#xD;         * The uniforms to be used by the vertex and pixel shaders.&#xD;         * Some of these are used by other parts of the renderer as well.&#xD;         * @type {Object.&lt;string,*&gt;}&#xD;         * @private&#xD;         */&#xD;        this._uniforms = {&#xD;            /**&#xD;             * The model matrix, to concat with projection at draw time.&#xD;             * @type {module:twgl/m4.Mat4}&#xD;             */&#xD;            u_modelMatrix: twgl.m4.identity(),&#xD;&#xD;            /**&#xD;             * The color to use in the silhouette draw mode.&#xD;             * @type {Array&lt;number&gt;}&#xD;             */&#xD;            u_silhouetteColor: Drawable.color4fFromID(this._id)&#xD;        };&#xD;&#xD;        // Effect values are uniforms too&#xD;        var numEffects = ShaderManager.EFFECTS.length;&#xD;        for (var index = 0; index &lt; numEffects; ++index) {&#xD;            var effectName = ShaderManager.EFFECTS[index];&#xD;            var converter = ShaderManager.EFFECT_INFO[effectName].converter;&#xD;            this._uniforms[&apos;u_&apos; + effectName] = converter(0);&#xD;        }&#xD;&#xD;        this._position = twgl.v3.create(0, 0);&#xD;        this._scale = twgl.v3.create(100, 100);&#xD;        this._direction = 90;&#xD;        this._transformDirty = true;&#xD;        this._visible = true;&#xD;        this._effectBits = 0;&#xD;&#xD;        /** @todo move convex hull functionality, maybe bounds functionality overall, to Skin classes */&#xD;        this._convexHullPoints = null;&#xD;        this._convexHullDirty = true;&#xD;&#xD;        this._skinWasAltered = this._skinWasAltered.bind(this);&#xD;    }&#xD;&#xD;    /**&#xD;     * Dispose of this Drawable. Do not use it after calling this method.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Drawable, [{&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            // Use the setter: disconnect events&#xD;            this.skin = null;&#xD;        }&#xD;&#xD;        /**&#xD;         * Mark this Drawable&apos;s transform as dirty.&#xD;         * It will be recalculated next time it&apos;s needed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setTransformDirty&apos;,&#xD;        value: function setTransformDirty() {&#xD;            this._transformDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {number} The ID for this Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getEnabledEffects&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * @returns {int} A bitmask identifying which effects are currently in use.&#xD;         */&#xD;        value: function getEnabledEffects() {&#xD;            return this._effectBits;&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {object.&lt;string, *&gt;} the shader uniforms to be used when rendering this Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getUniforms&apos;,&#xD;        value: function getUniforms() {&#xD;            if (this._transformDirty) {&#xD;                this._calculateTransform();&#xD;            }&#xD;            return this._uniforms;&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {boolean} whether this Drawable is visible.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getVisible&apos;,&#xD;        value: function getVisible() {&#xD;            return this._visible;&#xD;        }&#xD;&#xD;        /**&#xD;         * Update the position, direction, scale, or effect properties of this Drawable.&#xD;         * @param {object.&lt;string,*&gt;} properties The new property values to set.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;updateProperties&apos;,&#xD;        value: function updateProperties(properties) {&#xD;            var dirty = false;&#xD;            if (&apos;position&apos; in properties &amp;&amp; (this._position[0] !== properties.position[0] || this._position[1] !== properties.position[1])) {&#xD;                this._position[0] = properties.position[0];&#xD;                this._position[1] = properties.position[1];&#xD;                dirty = true;&#xD;            }&#xD;            if (&apos;direction&apos; in properties &amp;&amp; this._direction !== properties.direction) {&#xD;                this._direction = properties.direction;&#xD;                dirty = true;&#xD;            }&#xD;            if (&apos;scale&apos; in properties &amp;&amp; (this._scale[0] !== properties.scale[0] || this._scale[1] !== properties.scale[1])) {&#xD;                this._scale[0] = properties.scale[0];&#xD;                this._scale[1] = properties.scale[1];&#xD;                dirty = true;&#xD;            }&#xD;            if (&apos;visible&apos; in properties) {&#xD;                this._visible = properties.visible;&#xD;                this.setConvexHullDirty();&#xD;            }&#xD;            if (dirty) {&#xD;                this.setTransformDirty();&#xD;            }&#xD;            var numEffects = ShaderManager.EFFECTS.length;&#xD;            for (var index = 0; index &lt; numEffects; ++index) {&#xD;                var effectName = ShaderManager.EFFECTS[index];&#xD;                if (effectName in properties) {&#xD;                    var rawValue = properties[effectName];&#xD;                    var effectInfo = ShaderManager.EFFECT_INFO[effectName];&#xD;                    if (rawValue) {&#xD;                        this._effectBits |= effectInfo.mask;&#xD;                    } else {&#xD;                        this._effectBits &amp;= &#126;effectInfo.mask;&#xD;                    }&#xD;                    var converter = effectInfo.converter;&#xD;                    this._uniforms[&apos;u_&apos; + effectName] = converter(rawValue);&#xD;                    if (effectInfo.shapeChanges) {&#xD;                        this.setConvexHullDirty();&#xD;                    }&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Calculate the transform to use when rendering this Drawable.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_calculateTransform&apos;,&#xD;        value: function _calculateTransform() {&#xD;            var modelMatrix = this._uniforms.u_modelMatrix;&#xD;&#xD;            twgl.m4.identity(modelMatrix);&#xD;            twgl.m4.translate(modelMatrix, this._position, modelMatrix);&#xD;&#xD;            var rotation = (270 - this._direction) * Math.PI / 180;&#xD;            twgl.m4.rotateZ(modelMatrix, rotation, modelMatrix);&#xD;&#xD;            // Adjust rotation center relative to the skin.&#xD;            var rotationAdjusted = twgl.v3.subtract(this.skin.rotationCenter, twgl.v3.divScalar(this.skin.size, 2));&#xD;            rotationAdjusted[1] *= -1; // Y flipped to Scratch coordinate.&#xD;            rotationAdjusted[2] = 0; // Z coordinate is 0.&#xD;&#xD;            twgl.m4.translate(modelMatrix, rotationAdjusted, modelMatrix);&#xD;&#xD;            var scaledSize = twgl.v3.divScalar(twgl.v3.multiply(this.skin.size, this._scale), 100);&#xD;            scaledSize[2] = 0; // was NaN because the vectors have only 2 components.&#xD;            twgl.m4.scale(modelMatrix, scaledSize, modelMatrix);&#xD;&#xD;            this._transformDirty = false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Whether the Drawable needs convex hull points provided by the renderer.&#xD;         * @return {boolean} True when no convex hull known, or it&apos;s dirty.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;needsConvexHullPoints&apos;,&#xD;        value: function needsConvexHullPoints() {&#xD;            return !this._convexHullPoints || this._convexHullDirty || this._convexHullPoints.length === 0;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the convex hull to be dirty.&#xD;         * Do this whenever the Drawable&apos;s shape has possibly changed.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setConvexHullDirty&apos;,&#xD;        value: function setConvexHullDirty() {&#xD;            this._convexHullDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the convex hull points for the Drawable.&#xD;         * @param {Array&lt;Array&lt;number&gt;&gt;} points Convex hull points, as [[x, y], ...]&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setConvexHullPoints&apos;,&#xD;        value: function setConvexHullPoints(points) {&#xD;            this._convexHullPoints = points;&#xD;            this._convexHullDirty = false;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the precise bounds for a Drawable.&#xD;         * This function applies the transform matrix to the known convex hull,&#xD;         * and then finds the minimum box along the axes.&#xD;         * Before calling this, ensure the renderer has updated convex hull points.&#xD;         * @return {!Rectangle} Bounds for a tight box around the Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getBounds&apos;,&#xD;        value: function getBounds() {&#xD;            if (this.needsConvexHullPoints()) {&#xD;                throw new Error(&apos;Needs updated convex hull points before bounds calculation.&apos;);&#xD;            }&#xD;            if (this._transformDirty) {&#xD;                this._calculateTransform();&#xD;            }&#xD;            // First, transform all the convex hull points by the current Drawable&apos;s&#xD;            // transform. This allows us to skip recalculating the convex hull&#xD;            // for many Drawable updates, including translation, rotation, scaling.&#xD;            var projection = twgl.m4.ortho(-1, 1, -1, 1, -1, 1);&#xD;            var skinSize = this.skin.size;&#xD;            var tm = twgl.m4.multiply(this._uniforms.u_modelMatrix, projection);&#xD;            var transformedHullPoints = [];&#xD;            for (var i = 0; i &lt; this._convexHullPoints.length; i++) {&#xD;                var point = this._convexHullPoints[i];&#xD;                var glPoint = twgl.v3.create(0.5 + -point[0] / skinSize[0], 0.5 + -point[1] / skinSize[1], 0);&#xD;                twgl.m4.transformPoint(tm, glPoint, glPoint);&#xD;                transformedHullPoints.push(glPoint);&#xD;            }&#xD;            // Search through transformed points to generate box on axes.&#xD;            var bounds = new Rectangle();&#xD;            bounds.initFromPointsAABB(transformedHullPoints);&#xD;            return bounds;&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the rough axis-aligned bounding box for the Drawable.&#xD;         * Calculated by transforming the skin&apos;s bounds.&#xD;         * Note that this is less precise than the box returned by `getBounds`,&#xD;         * which is tightly snapped to account for a Drawable&apos;s transparent regions.&#xD;         * `getAABB` returns a much less accurate bounding box, but will be much&#xD;         * faster to calculate so may be desired for quick checks/optimizations.&#xD;         * @return {!Rectangle} Rough axis-aligned bounding box for Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getAABB&apos;,&#xD;        value: function getAABB() {&#xD;            if (this._transformDirty) {&#xD;                this._calculateTransform();&#xD;            }&#xD;            var tm = this._uniforms.u_modelMatrix;&#xD;            var bounds = new Rectangle();&#xD;            bounds.initFromPointsAABB([twgl.m4.transformPoint(tm, [-0.5, -0.5, 0]), twgl.m4.transformPoint(tm, [0.5, -0.5, 0]), twgl.m4.transformPoint(tm, [-0.5, 0.5, 0]), twgl.m4.transformPoint(tm, [0.5, 0.5, 0])]);&#xD;            return bounds;&#xD;        }&#xD;&#xD;        /**&#xD;         * Return the best Drawable bounds possible without performing graphics queries.&#xD;         * I.e., returns the tight bounding box when the convex hull points are already&#xD;         * known, but otherwise return the rough AABB of the Drawable.&#xD;         * @return {!Rectangle} Bounds for the Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getFastBounds&apos;,&#xD;        value: function getFastBounds() {&#xD;            if (!this.needsConvexHullPoints()) {&#xD;                return this.getBounds();&#xD;            }&#xD;            return this.getAABB();&#xD;        }&#xD;&#xD;        /**&#xD;         * Respond to an internal change in the current Skin.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_skinWasAltered&apos;,&#xD;        value: function _skinWasAltered() {&#xD;            this.setConvexHullDirty();&#xD;            this.setTransformDirty();&#xD;        }&#xD;&#xD;        /**&#xD;         * Calculate a color to represent the given ID number. At least one component of&#xD;         * the resulting color will be non-zero if the ID is not RenderConstants.ID_NONE.&#xD;         * @param {int} id The ID to convert.&#xD;         * @returns {Array&lt;number&gt;} An array of [r,g,b,a], each component in the range [0,1].&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;id&apos;,&#xD;        get: function get() {&#xD;            return this._id;&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {Skin} the current skin for this Drawable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;skin&apos;,&#xD;        get: function get() {&#xD;            return this._skin;&#xD;        }&#xD;&#xD;        /**&#xD;         * @param {Skin} newSkin - A new Skin for this Drawable.&#xD;         */&#xD;        ,&#xD;        set: function set(newSkin) {&#xD;            if (this._skin !== newSkin) {&#xD;                if (this._skin) {&#xD;                    this._skin.removeListener(Skin.Events.WasAltered, this._skinWasAltered);&#xD;                }&#xD;                this._skin = newSkin;&#xD;                if (this._skin) {&#xD;                    this._skin.addListener(Skin.Events.WasAltered, this._skinWasAltered);&#xD;                }&#xD;                this._skinWasAltered();&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {Array&lt;number&gt;} the current scaling percentages applied to this Drawable. [100,100] is normal size.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;scale&apos;,&#xD;        get: function get() {&#xD;            return [this._scale[0], this._scale[1]];&#xD;        }&#xD;    }], [{&#xD;        key: &apos;color4fFromID&apos;,&#xD;        value: function color4fFromID(id) {&#xD;            id -= RenderConstants.ID_NONE;&#xD;            var r = (id &gt;&gt; 0 &amp; 255) / 255.0;&#xD;            var g = (id &gt;&gt; 8 &amp; 255) / 255.0;&#xD;            var b = (id &gt;&gt; 16 &amp; 255) / 255.0;&#xD;            return [r, g, b, 1.0];&#xD;        }&#xD;&#xD;        /**&#xD;         * Calculate the ID number represented by the given color. If all components of&#xD;         * the color are zero, the result will be RenderConstants.ID_NONE; otherwise the result&#xD;         * will be a valid ID.&#xD;         * @param {int} r The red value of the color, in the range [0,255].&#xD;         * @param {int} g The green value of the color, in the range [0,255].&#xD;         * @param {int} b The blue value of the color, in the range [0,255].&#xD;         * @returns {int} The ID represented by that color.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;color3bToID&apos;,&#xD;        value: function color3bToID(r, g, b) {&#xD;            var id = void 0;&#xD;            id = (r &amp; 255) &lt;&lt; 0;&#xD;            id |= (g &amp; 255) &lt;&lt; 8;&#xD;            id |= (b &amp; 255) &lt;&lt; 16;&#xD;            return id + RenderConstants.ID_NONE;&#xD;        }&#xD;    }]);&#xD;&#xD;    return Drawable;&#xD;}();&#xD;&#xD;module.exports = Drawable;&#xD;&#xD;/***/ }),&#xD;/* 8 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i &amp;&amp; _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n &amp;&amp; _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var RenderConstants = __webpack_require__(1);&#xD;var Skin = __webpack_require__(2);&#xD;&#xD;/**&#xD; * Attributes to use when drawing with the pen&#xD; * @typedef {object} PenSkin#PenAttributes&#xD; * @property {number} [diameter] - The size (diameter) of the pen.&#xD; * @property {Array&lt;number&gt;} [color4f] - The pen color as an array of [r,g,b,a], each component in the range [0,1].&#xD; */&#xD;&#xD;/**&#xD; * The pen attributes to use when unspecified.&#xD; * @type {PenSkin#PenAttributes}&#xD; * @memberof PenSkin&#xD; * @private&#xD; * @const&#xD; */&#xD;var DefaultPenAttributes = {&#xD;    color4f: [0, 0, 1, 1],&#xD;    diameter: 1&#xD;};&#xD;&#xD;var PenSkin = function (_Skin) {&#xD;    _inherits(PenSkin, _Skin);&#xD;&#xD;    /**&#xD;     * Create a Skin which implements a Scratch pen layer.&#xD;     * @param {int} id - The unique ID for this Skin.&#xD;     * @param {RenderWebGL} renderer - The renderer which will use this Skin.&#xD;     * @extends Skin&#xD;     * @listens RenderWebGL#event:NativeSizeChanged&#xD;     */&#xD;    function PenSkin(id, renderer) {&#xD;        _classCallCheck(this, PenSkin);&#xD;&#xD;        /**&#xD;         * @private&#xD;         * @type {RenderWebGL}&#xD;         */&#xD;        var _this = _possibleConstructorReturn(this, (PenSkin.__proto__ || Object.getPrototypeOf(PenSkin)).call(this, id));&#xD;&#xD;        _this._renderer = renderer;&#xD;&#xD;        /** @type {HTMLCanvasElement} */&#xD;        _this._canvas = document.createElement(&apos;canvas&apos;);&#xD;&#xD;        /** @type {boolean} */&#xD;        _this._canvasDirty = false;&#xD;&#xD;        /** @type {WebGLTexture} */&#xD;        _this._texture = null;&#xD;&#xD;        _this.onNativeSizeChanged = _this.onNativeSizeChanged.bind(_this);&#xD;        _this._renderer.on(RenderConstants.Events.NativeSizeChanged, _this.onNativeSizeChanged);&#xD;&#xD;        _this._setCanvasSize(renderer.getNativeSize());&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Dispose of this object. Do not use it after calling this method.&#xD;     */&#xD;&#xD;&#xD;    _createClass(PenSkin, [{&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            this._renderer.removeListener(RenderConstants.Events.NativeSizeChanged, this.onNativeSizeChanged);&#xD;            this._renderer.gl.deleteTexture(this._texture);&#xD;            this._texture = null;&#xD;            _get(PenSkin.prototype.__proto__ || Object.getPrototypeOf(PenSkin.prototype), &apos;dispose&apos;, this).call(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;number&gt;} the "native" size, in texels, of this skin. [width, height]&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getTexture&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * @return {WebGLTexture} The GL texture representation of this skin when drawing at the given size.&#xD;         * @param {int} pixelsWide - The width that the skin will be rendered at, in GPU pixels.&#xD;         * @param {int} pixelsTall - The height that the skin will be rendered at, in GPU pixels.&#xD;         */&#xD;        // eslint-disable-next-line no-unused-vars&#xD;        value: function getTexture(pixelsWide, pixelsTall) {&#xD;            if (this._canvasDirty) {&#xD;                this._canvasDirty = false;&#xD;&#xD;                var gl = this._renderer.gl;&#xD;                gl.bindTexture(gl.TEXTURE_2D, this._texture);&#xD;                gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._canvas);&#xD;            }&#xD;&#xD;            return this._texture;&#xD;        }&#xD;&#xD;        /**&#xD;         * Clear the pen layer.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;clear&apos;,&#xD;        value: function clear() {&#xD;            var ctx = this._canvas.getContext(&apos;2d&apos;);&#xD;            ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);&#xD;            this._canvasDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw a point on the pen layer.&#xD;         * @param {PenAttributes} penAttributes - how the point should be drawn.&#xD;         * @param {number} x - the X coordinate of the point to draw.&#xD;         * @param {number} y - the Y coordinate of the point to draw.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;drawPoint&apos;,&#xD;        value: function drawPoint(penAttributes, x, y) {&#xD;            // Canvas renders a zero-length line as two end-caps back-to-back, which is what we want.&#xD;            this.drawLine(penAttributes, x, y, x, y);&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw a point on the pen layer.&#xD;         * @param {PenAttributes} penAttributes - how the line should be drawn.&#xD;         * @param {number} x0 - the X coordinate of the beginning of the line.&#xD;         * @param {number} y0 - the Y coordinate of the beginning of the line.&#xD;         * @param {number} x1 - the X coordinate of the end of the line.&#xD;         * @param {number} y1 - the Y coordinate of the end of the line.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;drawLine&apos;,&#xD;        value: function drawLine(penAttributes, x0, y0, x1, y1) {&#xD;            var ctx = this._canvas.getContext(&apos;2d&apos;);&#xD;            this._setAttributes(ctx, penAttributes);&#xD;            ctx.beginPath();&#xD;            ctx.moveTo(this._rotationCenter[0] + x0, this._rotationCenter[1] - y0);&#xD;            ctx.lineTo(this._rotationCenter[0] + x1, this._rotationCenter[1] - y1);&#xD;            ctx.stroke();&#xD;            this._canvasDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Stamp an image onto the pen layer.&#xD;         * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} stampElement - the element to use as the stamp.&#xD;         * @param {number} x - the X coordinate of the stamp to draw.&#xD;         * @param {number} y - the Y coordinate of the stamp to draw.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;drawStamp&apos;,&#xD;        value: function drawStamp(stampElement, x, y) {&#xD;            var ctx = this._canvas.getContext(&apos;2d&apos;);&#xD;            ctx.drawImage(stampElement, this._rotationCenter[0] + x, this._rotationCenter[1] - y);&#xD;            this._canvasDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * React to a change in the renderer&apos;s native size.&#xD;         * @param {object} event - The change event.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;onNativeSizeChanged&apos;,&#xD;        value: function onNativeSizeChanged(event) {&#xD;            this._setCanvasSize(event.newSize);&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the size of the pen canvas.&#xD;         * @param {Array&lt;int&gt;} canvasSize - the new width and height for the canvas.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_setCanvasSize&apos;,&#xD;        value: function _setCanvasSize(canvasSize) {&#xD;            var _canvasSize = _slicedToArray(canvasSize, 2),&#xD;                width = _canvasSize[0],&#xD;                height = _canvasSize[1];&#xD;&#xD;            var gl = this._renderer.gl;&#xD;            this._canvas.width = width;&#xD;            this._canvas.height = height;&#xD;            this._rotationCenter[0] = width / 2;&#xD;            this._rotationCenter[1] = height / 2;&#xD;            this._texture = twgl.createTexture(gl, {&#xD;                auto: true,&#xD;                mag: gl.NEAREST,&#xD;                min: gl.NEAREST,&#xD;                wrap: gl.CLAMP_TO_EDGE,&#xD;                src: this._canvas&#xD;            });&#xD;            this._canvasDirty = true;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set context state to match provided pen attributes.&#xD;         * @param {CanvasRenderingContext2D} context - the canvas rendering context to be modified.&#xD;         * @param {PenAttributes} penAttributes - the pen attributes to be used.&#xD;         * @private&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_setAttributes&apos;,&#xD;        value: function _setAttributes(context, penAttributes) {&#xD;            penAttributes = penAttributes || DefaultPenAttributes;&#xD;            var color4f = penAttributes.color4f || DefaultPenAttributes.color4f;&#xD;            var diameter = penAttributes.diameter || DefaultPenAttributes.diameter;&#xD;&#xD;            var r = Math.round(color4f[0] * 255);&#xD;            var g = Math.round(color4f[1] * 255);&#xD;            var b = Math.round(color4f[2] * 255);&#xD;            var a = color4f[3]; // Alpha is 0 to 1 (not 0 to 255 like r,g,b)&#xD;&#xD;            context.strokeStyle = &apos;rgba(&apos; + r + &apos;,&apos; + g + &apos;,&apos; + b + &apos;,&apos; + a + &apos;)&apos;;&#xD;            context.lineCap = &apos;round&apos;;&#xD;            context.lineWidth = diameter;&#xD;        }&#xD;    }, {&#xD;        key: &apos;size&apos;,&#xD;        get: function get() {&#xD;            return [this._canvas.width, this._canvas.height];&#xD;        }&#xD;    }]);&#xD;&#xD;    return PenSkin;&#xD;}(Skin);&#xD;&#xD;module.exports = PenSkin;&#xD;&#xD;/***/ }),&#xD;/* 9 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Rectangle = function () {&#xD;    /**&#xD;     * A utility for creating and comparing axis-aligned rectangles.&#xD;     * Rectangles are always initialized to the "largest possible rectangle";&#xD;     * use one of the init* methods below to set up a particular rectangle.&#xD;     * @constructor&#xD;     */&#xD;    function Rectangle() {&#xD;        _classCallCheck(this, Rectangle);&#xD;&#xD;        this.left = -Infinity;&#xD;        this.right = Infinity;&#xD;        this.bottom = -Infinity;&#xD;        this.top = Infinity;&#xD;    }&#xD;&#xD;    /**&#xD;     * Initialize a Rectangle from given Scratch-coordinate bounds.&#xD;     * @param {number} left Left bound of the rectangle.&#xD;     * @param {number} right Right bound of the rectangle.&#xD;     * @param {number} bottom Bottom bound of the rectangle.&#xD;     * @param {number} top Top bound of the rectangle.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Rectangle, [{&#xD;        key: "initFromBounds",&#xD;        value: function initFromBounds(left, right, bottom, top) {&#xD;            this.left = left;&#xD;            this.right = right;&#xD;            this.bottom = bottom;&#xD;            this.top = top;&#xD;        }&#xD;&#xD;        /**&#xD;         * Initialize a Rectangle to the minimum AABB around a set of points.&#xD;         * @param {Array&lt;Array&lt;number&gt;&gt;} points Array of [x, y] points.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "initFromPointsAABB",&#xD;        value: function initFromPointsAABB(points) {&#xD;            this.left = Infinity;&#xD;            this.right = -Infinity;&#xD;            this.top = -Infinity;&#xD;            this.bottom = Infinity;&#xD;            for (var i = 0; i &lt; points.length; i++) {&#xD;                var x = points[i][0];&#xD;                var y = points[i][1];&#xD;                if (x &lt; this.left) {&#xD;                    this.left = x;&#xD;                }&#xD;                if (x &gt; this.right) {&#xD;                    this.right = x;&#xD;                }&#xD;                if (y &gt; this.top) {&#xD;                    this.top = y;&#xD;                }&#xD;                if (y &lt; this.bottom) {&#xD;                    this.bottom = y;&#xD;                }&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Determine if this Rectangle intersects some other.&#xD;         * Note that this is a comparison assuming the Rectangle was&#xD;         * initialized with Scratch-space bounds or points.&#xD;         * @param {!Rectangle} other Rectangle to check if intersecting.&#xD;         * @return {boolean} True if this Rectangle intersects other.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "intersects",&#xD;        value: function intersects(other) {&#xD;            return this.left &lt;= other.right &amp;&amp; other.left &lt;= this.right &amp;&amp; this.top &gt;= other.bottom &amp;&amp; other.top &gt;= this.bottom;&#xD;        }&#xD;&#xD;        /**&#xD;         * Determine if this Rectangle fully contains some other.&#xD;         * Note that this is a comparison assuming the Rectangle was&#xD;         * initialized with Scratch-space bounds or points.&#xD;         * @param {!Rectangle} other Rectangle to check if fully contained.&#xD;         * @return {boolean} True if this Rectangle fully contains other.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "contains",&#xD;        value: function contains(other) {&#xD;            return other.left &gt; this.left &amp;&amp; other.right &lt; this.right &amp;&amp; other.top &lt; this.top &amp;&amp; other.bottom &gt; this.bottom;&#xD;        }&#xD;&#xD;        /**&#xD;         * Clamp a Rectangle to bounds.&#xD;         * @param {number} left Left clamp.&#xD;         * @param {number} right Right clamp.&#xD;         * @param {number} bottom Bottom clamp.&#xD;         * @param {number} top Top clamp.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "clamp",&#xD;        value: function clamp(left, right, bottom, top) {&#xD;            this.left = Math.max(this.left, left);&#xD;            this.right = Math.min(this.right, right);&#xD;            this.bottom = Math.max(this.bottom, bottom);&#xD;            this.top = Math.min(this.top, top);&#xD;            // Ensure rectangle coordinates in order.&#xD;            this.left = Math.min(this.left, this.right);&#xD;            this.right = Math.max(this.right, this.left);&#xD;            this.bottom = Math.min(this.bottom, this.top);&#xD;            this.top = Math.max(this.top, this.bottom);&#xD;        }&#xD;&#xD;        /**&#xD;         * Push out the Rectangle to integer bounds.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "snapToInt",&#xD;        value: function snapToInt() {&#xD;            this.left = Math.floor(this.left);&#xD;            this.right = Math.ceil(this.right);&#xD;            this.bottom = Math.floor(this.bottom);&#xD;            this.top = Math.ceil(this.top);&#xD;        }&#xD;&#xD;        /**&#xD;         * Width of the Rectangle.&#xD;         * @return {number} Width of rectangle.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "width",&#xD;        get: function get() {&#xD;            return Math.abs(this.left - this.right);&#xD;        }&#xD;&#xD;        /**&#xD;         * Height of the Rectangle.&#xD;         * @return {number} Height of rectangle.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: "height",&#xD;        get: function get() {&#xD;            return Math.abs(this.top - this.bottom);&#xD;        }&#xD;    }]);&#xD;&#xD;    return Rectangle;&#xD;}();&#xD;&#xD;module.exports = Rectangle;&#xD;&#xD;/***/ }),&#xD;/* 10 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var twgl = __webpack_require__(0);&#xD;&#xD;var Skin = __webpack_require__(2);&#xD;var SvgRenderer = __webpack_require__(11);&#xD;&#xD;var SVGSkin = function (_Skin) {&#xD;    _inherits(SVGSkin, _Skin);&#xD;&#xD;    /**&#xD;     * Create a new SVG skin.&#xD;     * @param {!int} id - The ID for this Skin.&#xD;     * @param {!RenderWebGL} renderer - The renderer which will use this skin.&#xD;     * @constructor&#xD;     * @extends Skin&#xD;     */&#xD;    function SVGSkin(id, renderer) {&#xD;        _classCallCheck(this, SVGSkin);&#xD;&#xD;        /** @type {RenderWebGL} */&#xD;        var _this = _possibleConstructorReturn(this, (SVGSkin.__proto__ || Object.getPrototypeOf(SVGSkin)).call(this, id));&#xD;&#xD;        _this._renderer = renderer;&#xD;&#xD;        /** @type {SvgRenderer} */&#xD;        _this._svgRenderer = new SvgRenderer();&#xD;&#xD;        /** @type {WebGLTexture} */&#xD;        _this._texture = null;&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Dispose of this object. Do not use it after calling this method.&#xD;     */&#xD;&#xD;&#xD;    _createClass(SVGSkin, [{&#xD;        key: &apos;dispose&apos;,&#xD;        value: function dispose() {&#xD;            if (this._texture) {&#xD;                this._renderer.gl.deleteTexture(this._texture);&#xD;                this._texture = null;&#xD;            }&#xD;            _get(SVGSkin.prototype.__proto__ || Object.getPrototypeOf(SVGSkin.prototype), &apos;dispose&apos;, this).call(this);&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;number&gt;} the natural size, in Scratch units, of this skin.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setRotationCenter&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Set the origin, in object space, about which this Skin should rotate.&#xD;         * @param {number} x - The x coordinate of the new rotation center.&#xD;         * @param {number} y - The y coordinate of the new rotation center.&#xD;         */&#xD;        value: function setRotationCenter(x, y) {&#xD;            var viewOffset = this._svgRenderer.viewOffset;&#xD;            _get(SVGSkin.prototype.__proto__ || Object.getPrototypeOf(SVGSkin.prototype), &apos;setRotationCenter&apos;, this).call(this, x - viewOffset[0], y - viewOffset[1]);&#xD;        }&#xD;&#xD;        /**&#xD;         * @param {Array&lt;number&gt;} scale - The scaling factors to be used.&#xD;         * @return {WebGLTexture} The GL texture representation of this skin when drawing at the given scale.&#xD;         */&#xD;        // eslint-disable-next-line no-unused-vars&#xD;&#xD;    }, {&#xD;        key: &apos;getTexture&apos;,&#xD;        value: function getTexture(scale) {&#xD;            /** @todo re-render a scaled version if the requested scale is significantly larger than the current render */&#xD;            return this._texture;&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the contents of this skin to a snapshot of the provided SVG data.&#xD;         * @param {string} svgData - new SVG to use.&#xD;         * @param {Array&lt;number&gt;} [rotationCenter] - Optional rotation center for the SVG. If not supplied, it will be&#xD;         * calculated from the bounding box&#xD;         * @fires Skin.event:WasAltered&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setSVG&apos;,&#xD;        value: function setSVG(svgData, rotationCenter) {&#xD;            var _this2 = this;&#xD;&#xD;            this._svgRenderer.fromString(svgData, function () {&#xD;                var gl = _this2._renderer.gl;&#xD;                if (_this2._texture) {&#xD;                    gl.bindTexture(gl.TEXTURE_2D, _this2._texture);&#xD;                    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, _this2._svgRenderer.canvas);&#xD;                } else {&#xD;                    var textureOptions = {&#xD;                        auto: true,&#xD;                        mag: gl.NEAREST,&#xD;                        min: gl.NEAREST, /** @todo mipmaps, linear (except pixelate) */&#xD;                        wrap: gl.CLAMP_TO_EDGE,&#xD;                        src: _this2._svgRenderer.canvas&#xD;                    };&#xD;&#xD;                    _this2._texture = twgl.createTexture(gl, textureOptions);&#xD;                }&#xD;                if (typeof rotationCenter === &apos;undefined&apos;) rotationCenter = _this2.calculateRotationCenter();&#xD;                _this2.setRotationCenter.apply(_this2, rotationCenter);&#xD;                _this2.emit(Skin.Events.WasAltered);&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;size&apos;,&#xD;        get: function get() {&#xD;            return this._svgRenderer.size;&#xD;        }&#xD;    }]);&#xD;&#xD;    return SVGSkin;&#xD;}(Skin);&#xD;&#xD;module.exports = SVGSkin;&#xD;&#xD;/***/ }),&#xD;/* 11 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;// Synchronously load TTF fonts.&#xD;// First, have Webpack load their data as Base 64 strings.&#xD;/* eslint-disable global-require */&#xD;var FONTS = {&#xD;    Donegal: __webpack_require__(12),&#xD;    Gloria: __webpack_require__(13),&#xD;    Mystery: __webpack_require__(14),&#xD;    Marker: __webpack_require__(15),&#xD;    Scratch: __webpack_require__(16)&#xD;};&#xD;/* eslint-enable global-require */&#xD;&#xD;// For each Base 64 string,&#xD;// 1. Replace each with a usable @font-face tag that points to a Data URI.&#xD;// 2. Inject the font into a style on `document.body`, so measurements&#xD;//    can be accurately taken in SvgRenderer._transformMeasurements.&#xD;var documentStyleTag = document.createElement(&apos;style&apos;);&#xD;documentStyleTag.id = &apos;scratch-font-styles&apos;;&#xD;for (var fontName in FONTS) {&#xD;    var fontData = FONTS[fontName];&#xD;    FONTS[fontName] = &apos;@font-face {&apos; + (&apos;font-family: "&apos; + fontName + &apos;";src: url("data:application/x-font-ttf;charset=utf-8;base64,&apos; + fontData + &apos;");}&apos;);&#xD;    documentStyleTag.textContent += FONTS[fontName];&#xD;}&#xD;document.body.insertBefore(documentStyleTag, document.body.firstChild);&#xD;&#xD;/**&#xD; * Main quirks-mode SVG rendering code.&#xD; */&#xD;&#xD;var SvgRenderer = function () {&#xD;    /**&#xD;     * Create a quirks-mode SVG renderer for a particular canvas.&#xD;     * @param {HTMLCanvasElement} [canvas] An optional canvas element to draw to. If this is not provided, the renderer&#xD;     * will create a new canvas.&#xD;     * @constructor&#xD;     */&#xD;    function SvgRenderer(canvas) {&#xD;        _classCallCheck(this, SvgRenderer);&#xD;&#xD;        this._canvas = canvas || document.createElement(&apos;canvas&apos;);&#xD;        this._context = this._canvas.getContext(&apos;2d&apos;);&#xD;        this._measurements = { x: 0, y: 0, width: 0, height: 0 };&#xD;    }&#xD;&#xD;    /**&#xD;     * @returns {!HTMLCanvasElement} this renderer&apos;s target canvas.&#xD;     */&#xD;&#xD;&#xD;    _createClass(SvgRenderer, [{&#xD;        key: &apos;fromString&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Load an SVG from a string and draw it.&#xD;         * This will be parsed and transformed, and finally drawn.&#xD;         * When drawing is finished, the `onFinish` callback is called.&#xD;         * @param {string} svgString String of SVG data to draw in quirks-mode.&#xD;         * @param {Function} [onFinish] Optional callback for when drawing finished.&#xD;         */&#xD;        value: function fromString(svgString, onFinish) {&#xD;            // Store the callback for later.&#xD;            this._onFinish = onFinish;&#xD;            // Parse string into SVG XML.&#xD;            var parser = new DOMParser();&#xD;            this._svgDom = parser.parseFromString(svgString, &apos;text/xml&apos;);&#xD;            if (this._svgDom.childNodes.length &lt; 1 || this._svgDom.documentElement.localName !== &apos;svg&apos;) {&#xD;                throw new Error(&apos;Document does not appear to be SVG.&apos;);&#xD;            }&#xD;            this._svgTag = this._svgDom.documentElement;&#xD;            // Transform all text elements.&#xD;            this._transformText();&#xD;            // Transform measurements.&#xD;            this._transformMeasurements();&#xD;            // Draw to a canvas.&#xD;            this._draw();&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;number&gt;} the natural size, in Scratch units, of this SVG.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_transformText&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Transforms an SVG&apos;s text elements for Scratch 2.0 quirks.&#xD;         * These quirks include:&#xD;         * 1. `x` and `y` properties are removed/ignored.&#xD;         * 2. Alignment is set to `text-before-edge`.&#xD;         * 3. Line-breaks are converted to explicit &lt;tspan&gt; elements.&#xD;         * 4. Any required fonts are injected.&#xD;         */&#xD;        value: function _transformText() {&#xD;            // Collect all text elements into a list.&#xD;            var textElements = [];&#xD;            var collectText = function collectText(domElement) {&#xD;                if (domElement.localName === &apos;text&apos;) {&#xD;                    textElements.push(domElement);&#xD;                }&#xD;                for (var i = 0; i &lt; domElement.childNodes.length; i++) {&#xD;                    collectText(domElement.childNodes[i]);&#xD;                }&#xD;            };&#xD;            collectText(this._svgTag);&#xD;            // For each text element, apply quirks.&#xD;            var fontsNeeded = {};&#xD;            var _iteratorNormalCompletion = true;&#xD;            var _didIteratorError = false;&#xD;            var _iteratorError = undefined;&#xD;&#xD;            try {&#xD;                for (var _iterator = textElements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {&#xD;                    var textElement = _step.value;&#xD;&#xD;                    // Remove x and y attributes - they are not used in Scratch.&#xD;                    textElement.removeAttribute(&apos;x&apos;);&#xD;                    textElement.removeAttribute(&apos;y&apos;);&#xD;                    // Set text-before-edge alignment:&#xD;                    // Scratch renders all text like this.&#xD;                    textElement.setAttribute(&apos;alignment-baseline&apos;, &apos;text-before-edge&apos;);&#xD;                    // If there&apos;s no font size provided, provide one.&#xD;                    if (!textElement.getAttribute(&apos;font-size&apos;)) {&#xD;                        textElement.setAttribute(&apos;font-size&apos;, &apos;18&apos;);&#xD;                    }&#xD;                    // If there&apos;s no font-family provided, provide one.&#xD;                    if (!textElement.getAttribute(&apos;font-family&apos;)) {&#xD;                        textElement.setAttribute(&apos;font-family&apos;, &apos;Helvetica&apos;);&#xD;                    }&#xD;                    // Collect fonts that need injection.&#xD;                    var font = textElement.getAttribute(&apos;font-family&apos;);&#xD;                    fontsNeeded[font] = true;&#xD;                    // Fix line breaks in text, which are not natively supported by SVG.&#xD;                    var text = textElement.textContent;&#xD;                    if (text) {&#xD;                        textElement.textContent = &apos;&apos;;&#xD;                        var lines = text.split(&apos;\n&apos;);&#xD;                        text = &apos;&apos;;&#xD;                        var _iteratorNormalCompletion3 = true;&#xD;                        var _didIteratorError3 = false;&#xD;                        var _iteratorError3 = undefined;&#xD;&#xD;                        try {&#xD;                            for (var _iterator3 = lines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {&#xD;                                var line = _step3.value;&#xD;&#xD;                                var tspanNode = this._createSVGElement(&apos;tspan&apos;);&#xD;                                tspanNode.setAttribute(&apos;x&apos;, &apos;0&apos;);&#xD;                                tspanNode.setAttribute(&apos;dy&apos;, &apos;1em&apos;);&#xD;                                tspanNode.textContent = line;&#xD;                                textElement.appendChild(tspanNode);&#xD;                            }&#xD;                        } catch (err) {&#xD;                            _didIteratorError3 = true;&#xD;                            _iteratorError3 = err;&#xD;                        } finally {&#xD;                            try {&#xD;                                if (!_iteratorNormalCompletion3 &amp;&amp; _iterator3.return) {&#xD;                                    _iterator3.return();&#xD;                                }&#xD;                            } finally {&#xD;                                if (_didIteratorError3) {&#xD;                                    throw _iteratorError3;&#xD;                                }&#xD;                            }&#xD;                        }&#xD;                    }&#xD;                }&#xD;                // Inject fonts that are needed.&#xD;                // It would be nice if there were another way to get the SVG-in-canvas&#xD;                // to render the correct font family, but I couldn&apos;t find any other way.&#xD;                // Other things I tried:&#xD;                // Just injecting the font-family into the document: no effect.&#xD;                // External stylesheet linked to by SVG: no effect.&#xD;                // Using a &lt;link&gt; or &lt;style&gt;@import&lt;/style&gt; to link to font-family&#xD;                // injected into the document: no effect.&#xD;            } catch (err) {&#xD;                _didIteratorError = true;&#xD;                _iteratorError = err;&#xD;            } finally {&#xD;                try {&#xD;                    if (!_iteratorNormalCompletion &amp;&amp; _iterator.return) {&#xD;                        _iterator.return();&#xD;                    }&#xD;                } finally {&#xD;                    if (_didIteratorError) {&#xD;                        throw _iteratorError;&#xD;                    }&#xD;                }&#xD;            }&#xD;&#xD;            var newDefs = this._createSVGElement(&apos;defs&apos;);&#xD;            var newStyle = this._createSVGElement(&apos;style&apos;);&#xD;            var allFonts = Object.keys(fontsNeeded);&#xD;            var _iteratorNormalCompletion2 = true;&#xD;            var _didIteratorError2 = false;&#xD;            var _iteratorError2 = undefined;&#xD;&#xD;            try {&#xD;                for (var _iterator2 = allFonts[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {&#xD;                    var _font = _step2.value;&#xD;&#xD;                    if (FONTS.hasOwnProperty(_font)) {&#xD;                        newStyle.textContent += FONTS[_font];&#xD;                    }&#xD;                }&#xD;            } catch (err) {&#xD;                _didIteratorError2 = true;&#xD;                _iteratorError2 = err;&#xD;            } finally {&#xD;                try {&#xD;                    if (!_iteratorNormalCompletion2 &amp;&amp; _iterator2.return) {&#xD;                        _iterator2.return();&#xD;                    }&#xD;                } finally {&#xD;                    if (_didIteratorError2) {&#xD;                        throw _iteratorError2;&#xD;                    }&#xD;                }&#xD;            }&#xD;&#xD;            newDefs.appendChild(newStyle);&#xD;            this._svgTag.insertBefore(newDefs, this._svgTag.childNodes[0]);&#xD;        }&#xD;&#xD;        /**&#xD;         * Transform the measurements of the SVG.&#xD;         * In Scratch 2.0, SVGs are drawn without respect to the width,&#xD;         * height, and viewBox attribute on the tag. The exporter&#xD;         * does output these properties - but they appear to be incorrect often.&#xD;         * To address the incorrect measurements, we append the DOM to the&#xD;         * document, and then use SVG&apos;s native `getBBox` to find the real&#xD;         * drawn dimensions. This ensures things drawn in negative dimensions,&#xD;         * outside the given viewBox, etc., are all eventually drawn to the canvas.&#xD;         * I tried to do this several other ways: stripping the width/height/viewBox&#xD;         * attributes and then drawing (Firefox won&apos;t draw anything),&#xD;         * or inflating them and then measuring a canvas. But this seems to be&#xD;         * a natural and performant way.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_transformMeasurements&apos;,&#xD;        value: function _transformMeasurements() {&#xD;            // Save `svgText` for later re-parsing.&#xD;            var svgText = this._toString();&#xD;&#xD;            // Append the SVG dom to the document.&#xD;            // This allows us to use `getBBox` on the page,&#xD;            // which returns the full bounding-box of all drawn SVG&#xD;            // elements, similar to how Scratch 2.0 did measurement.&#xD;            var svgSpot = document.createElement(&apos;span&apos;);&#xD;            var bbox = void 0;&#xD;            try {&#xD;                document.body.appendChild(svgSpot);&#xD;                svgSpot.appendChild(this._svgTag);&#xD;                // Take the bounding box.&#xD;                bbox = this._svgTag.getBBox();&#xD;            } finally {&#xD;                // Always destroy the element, even if, for example, getBBox throws.&#xD;                document.body.removeChild(svgSpot);&#xD;            }&#xD;&#xD;            // Re-parse the SVG from `svgText`. The above DOM becomes&#xD;            // unusable/undrawable in browsers once it&apos;s appended to the page,&#xD;            // perhaps for security reasons?&#xD;            var parser = new DOMParser();&#xD;            this._svgDom = parser.parseFromString(svgText, &apos;text/xml&apos;);&#xD;            this._svgTag = this._svgDom.documentElement;&#xD;&#xD;            // Set the correct measurements on the SVG tag, and save them.&#xD;            this._svgTag.setAttribute(&apos;width&apos;, bbox.width);&#xD;            this._svgTag.setAttribute(&apos;height&apos;, bbox.height);&#xD;            this._svgTag.setAttribute(&apos;viewBox&apos;, bbox.x + &apos; &apos; + bbox.y + &apos; &apos; + bbox.width + &apos; &apos; + bbox.height);&#xD;            this._measurements = bbox;&#xD;        }&#xD;&#xD;        /**&#xD;         * Serialize the active SVG DOM to a string.&#xD;         * @returns {string} String representing current SVG data.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_toString&apos;,&#xD;        value: function _toString() {&#xD;            var serializer = new XMLSerializer();&#xD;            return serializer.serializeToString(this._svgDom);&#xD;        }&#xD;&#xD;        /**&#xD;         * Get the drawing ratio, adjusted for HiDPI screens.&#xD;         * @return {number} Scale ratio to draw to canvases with.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getDrawRatio&apos;,&#xD;        value: function getDrawRatio() {&#xD;            var devicePixelRatio = window.devicePixelRatio || 1;&#xD;            var backingStoreRatio = this._context.webkitBackingStorePixelRatio || this._context.mozBackingStorePixelRatio || this._context.msBackingStorePixelRatio || this._context.oBackingStorePixelRatio || this._context.backingStorePixelRatio || 1;&#xD;            return devicePixelRatio / backingStoreRatio;&#xD;        }&#xD;&#xD;        /**&#xD;         * Draw the SVG to a canvas.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_draw&apos;,&#xD;        value: function _draw() {&#xD;            var _this = this;&#xD;&#xD;            var ratio = this.getDrawRatio();&#xD;            var bbox = this._measurements;&#xD;&#xD;            // Set up the canvas for drawing.&#xD;            this._canvas.width = bbox.width * ratio;&#xD;            this._canvas.height = bbox.height * ratio;&#xD;            this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);&#xD;            this._context.scale(ratio, ratio);&#xD;&#xD;            // Convert the SVG text to an Image, and then draw it to the canvas.&#xD;            var img = new Image();&#xD;            img.onload = function () {&#xD;                _this._context.drawImage(img, 0, 0);&#xD;                // Reset the canvas transform after drawing.&#xD;                _this._context.setTransform(1, 0, 0, 1, 0, 0);&#xD;                // Set the CSS style of the canvas to the actual measurements.&#xD;                _this._canvas.style.width = bbox.width;&#xD;                _this._canvas.style.height = bbox.height;&#xD;                // All finished - call the callback if provided.&#xD;                if (_this._onFinish) {&#xD;                    _this._onFinish();&#xD;                }&#xD;            };&#xD;            var svgText = this._toString();&#xD;            img.src = &apos;data:image/svg+xml;utf8,&apos; + encodeURIComponent(svgText);&#xD;        }&#xD;&#xD;        /**&#xD;         * Helper to create an SVG element with the correct NS.&#xD;         * @param {string} tagName Tag name for the element.&#xD;         * @return {!DOMElement} Element created.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;_createSVGElement&apos;,&#xD;        value: function _createSVGElement(tagName) {&#xD;            return document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, tagName);&#xD;        }&#xD;    }, {&#xD;        key: &apos;canvas&apos;,&#xD;        get: function get() {&#xD;            return this._canvas;&#xD;        }&#xD;    }, {&#xD;        key: &apos;size&apos;,&#xD;        get: function get() {&#xD;            return [this._measurements.width, this._measurements.height];&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {Array&lt;number&gt;} the offset (upper left corner) of the SVG&apos;s view box.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;viewOffset&apos;,&#xD;        get: function get() {&#xD;            return [this._measurements.x, this._measurements.y];&#xD;        }&#xD;    }]);&#xD;&#xD;    return SvgRenderer;&#xD;}();&#xD;&#xD;module.exports = SvgRenderer;&#xD;&#xD;/***/ }),&#xD;/* 12 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "AAEAAAAPAIAAAwBwR1NVQrF7s6AAANxsAAACBE9TLzKWu362AAABeAAAAGBjbWFwAGmpXwAACKwAAAYiY3Z0IAToGrUAABjIAAAALmZwZ23kLgKEAAAO0AAACWJnYXNwAAAAEAAA3GQAAAAIZ2x5Zt+xS8sAABxkAACrpGhlYWQDL3pgAAAA/AAAADZoaGVhEiUJ3QAAATQAAAAkaG10eNNple8AAAHYAAAG1GxvY2HXngI0AAAY+AAAA2xtYXhwAs4KyAAAAVgAAAAgbmFtZUejscAAAMgIAAAKenBvc3Rt/EG5AADShAAACd1wcmVw/Jci1gAAGDQAAACTAAEAAAABAQau7ek+Xw889QALCAAAAAAAzNYlZAAAAADM6AlB/8T95wqOB9AAAAAJAAIAAAAAAAAAAQAAB9D90AAACwb/xP9RCo4AAQAAAAAAAAAAAAAAAAAAAbUAAQAAAbUAngAHAJUABAACACIAMABqAAAAfQliAAQAAQADBNkBkAAFAAAFmgUzAAABHwWaBTMAAAPRAGYCAAAAAgIGAgYDAAYHBKAAAK9QACBKAAAAAAAAAABTVEMgAEAAAPsCB9D90AAAB9ACMCAAAJMAAAAAA/wF+gAAACAABAKjAAAAAAAAAqUAAAKsAAAFQwBnBMMADQVSACkHuwB8B1AAfAKrAHcHUABoA1UAiwNRAFYCAQC3BKkAvwSsANQCqABGAqsAoQP9ANsFVAAyBTAAlQfGAHgGpgCCAqsA2wNVAOEDVQBQBRcAwASpAKsCQABuA/8AvwJAAIwDUQB2BVIAhQNzAIMEqQB2BBYAfwSlADYEEwB8BKkAeQQTAF4EqgCYBKkAeQJAAIwCQABuBVIAlwSrAJ4FUgCmBGYAnAcmAHsF///WBV4AbgXnAGQGpQBmBVYAbgVLAG4GJQBkBqoAZgLUAGgCwAAmBdwAZwVNAGcH+wALBqoAUQaqAGQFYwBnBqoAZAW2AG4FNgCfBVQAJQaBAEMF///XCKb/9gX8ACoFwgAMBVYATgKrAKoDUQB3AqsAqgSpAIgFL//2AtMAcgRKAGcEwwANBAIAWgSfAFoEDwBYAykAXgSVAGUFOAA2AqMAVgKaAAUEswA3AqQAWgfXAFsFSQBdBJ8AWgTlAD8EtwBaA8cAWwPoAIwDNwBEBTEAXgSLAAMGrgANBIwAIQSZAAQEFABfA1UANQIBALcDVQBLBKkArwQPAFgEDwBYBA8AWAKj/+MFIgCgA/8AkAQbAF0FUgCeBBsAoQP/ARMFKwCeBU8ANQcaAHMHEQBzCDMAUALTAHIDqgBxBKsAngfn/8QHVACvBRcAqwUvANgFGgDYBfwAKASsAK4ErABrBdUAvwYAAG4FUgA9A/8ABAP/AKUD/wB/BlsAaAaDAGcEnwBaAqsAqwVWAMYFrwA/BeIAaQSpAK8GDABNBVIAqgVSANgGwACMAqwAAAivAGQHSwBaBVYAvwf6AL8EfAC3BHwAvQKrALcCqwC9BJAAqQSpAIAD///oA1UAqgNVANgFIgCgAmgAoAKrAL0LBgB4AqMAVgOyAHID1gByAzoAcgOLAGoCFQByAt0AcgLfAHIEZgByApIAbAOyAHIGqgBFBS8AaQSdAFoEfAC9BGYAcgK/AHICvwByA9YAcgOyAHICGAByBEoAZwX//9YFVABsAfMAcgUeAHIDZQBcBU0AZwOVAEQCowBWAqwAVAUxAF4GgQBDBqoARQSfAFoCqABcAzcARAVUACUGqgBFAzoAcgRIAHIDiwBqBTgANgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAarAAAF/ABtAo7/+gNaAFwAAAAAA7IAcgLdAHICmgAFAhUAcgQPAFgESgBnBEoAZwRKAGcESgBnBAIAWgQPAFgFVABGAqP/0gU9AFYCo//hBLMANwTYAF0FSQBdBUkAXQSfAFoEnwBaBJ8AWgSfAFoEnwBaA8cAWwPHAFsFMQBeBTEAXgUxAF4FMQBeBJkABASZAAQF///WBf//1gX//9YF///WBf//1gX//9YF5wBkBVYAbgVWAG4FVgBuBVYAbgLUAE0C1ABoAtT/4gLUAAMC1AAHAsAADQaqAFEGqgBRBqoAZAaqAGQGqgBkBqoAZAaqAGQGqgBkBbYAbgW2AG4FtgBuBoEAQwaBAEMGgQBDBoEAQwXCAAwGqgBRBUkAXQX//9YF///WBecAZAXnAGQF5wBkBecAZAalAGYFVgBuBVYAbgVWAG4FVgBuBiUAZAYlAGQGJQBkBiUAZAaqAGYC1AA/AtQADwLUAGgF3ABnBU0AZwaqAFEGqgBRBqoAZAaqAGQFNgCfBTYAnwU2AJ8FNgCfBTYAnwVUACUFVAAlBoEAQwaBAEMGgQBDBoEAQwaBAEMGqgBkCKb/9gim//YIpv/2CKb/9gXCAAwFwgAMBcIADAVWAE4FVgBOBVYATgRKAGcESgBnBAIAWgQCAFoEAgBaBAIAWgaDAGcEDwBYBA8AWAQPAFgEDwBYBJUAZQSVAGUElQBlBJUAZQKjAB0Co//vBJkABASZAAQGrgANBq4ADQauAA0GrgANBTEAXgUxAF4FMQBeBTEAXgM3AEQD6ACMA+gAjAPoAIwD6ACMA+gAjAPHAFsEFABfBBQAXwQUAF8EnwBaBJ8AWgVJAF0FSQBdAqgAXAPoAIwFNgCfBOUAPwVjAGcH1wBbB/sACwVLAG4EnwBaBqUAZgTDABMFXgBuAykAXgVUACUEnwBaBTEAXgWGAGwDqQByBZQAaARKAGcESgBnAqP/xgKjAFYFTQBnCCMAAAYMAE0ErACuBlsAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNwBEAzcARAarACUEwwChBlIAXgXMAF4FzQBeAqsAvAKrAMgD/QDIAAAAAwAAAAMAAAAcAAEAAAAABBgAAwABAAAAHAAEA/wAAABuAEAABQAuAAoADQAUABkAIAB+AH8BSAF+AZIB/QIZAhsCNwLHAt0DlAOpA7wDwB4DHgseHx5BHlceYR5rHoUe8yAUIB4gIiAmIDAgMyA6IDwgRCCsISIhJiICIgYiDyISIhoiHiIrIkgiYCJlJcr2w/sC//8AAAAAAA0AEAAVAB4AIQB/AKABSgGSAfwCGAIbAjcCxgLYA5QDqQO8A8AeAh4KHh4eQB5WHmAeah6AHvIgEyAYICAgJiAwIDIgOSA8IEQgrCEiISYiAiIGIg8iESIaIh4iKyJIImAiZCXK9sP7AP//AAD/9QGTAMoAAP/wASsAAAAA/wMAAAAA/1z+tAAAAAD+Cv33/eP8ywAAAAAAAAAAAAAAAAAAAAAAAOCLAAAAAOB04HzhgeBu4XLgYuA531vfad6G3pHeewAA3nreZN5h3k7eIN4g2tsJ/gavAAEAbgAAAAAAAAB8AAAAAAB8AcwAAAIyAjQAAAAAAjICNAAAAAAAAAAAAjYCOAI6AjwCPgJAAkICRAJOAAACTgJaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkYAAAAAAAAAAAAAAAAAAAAAAAAAAAABAOgA2ADZANoA2wDcAN0A3gGiAaEBqAGpAAMAmwCSAHUAdgC5AIYADQB3AH8AfACNAJgAkwDkAHsAsAB0AIMADAALAH4AhwB5AKoAtAAJAI4AmQAIAAcACgC8AQkBCgELAQwBDQEOAIEBDwEQAREBEgETARQBFQEXARgAuAEbARwBHQEeAR8BIAAPASEBJQEmAScBKAEpAAQAegGYAZkA7gDwAO8A8QCQAPIA8wBvAHAAcQGaAZsA9wByALoA+wD8AP0A/gD/AQAApACRAQMBBAEFAQYBBwAFAQgBLAFcAS0BXQDDAMIBLgFeAS8BXwExAWEBMAFgATIAxgDOAM8BNAFkATUBZQE2AWYAxADtATMBYwE3AWcBOAFoAToBaQE5AWoBOwDXANMA9AEWAPUBPAFrAT0BbADLAMoBPgCtAZcA9gEZAOYBPwD4APkBnADQAUABhQDIAMcBlQDnAAYAEAEaAPoBQgGEAUEBgwEqASsBQwGBAUQBggFRAZMAnACdASIBfQEkAQIBIwEBAUUBegFGAXsBSAF5AUcBfAGtAawBSgDJANIA0QFMAXMBTQF0AU4BdQFPAXYBUAGUAM0AzAFUAXEBVwFuAVgBWQF+AVsBgAFaAX8BnQFiAUkBeACuALcAsQCyALMAtgCvALUBkAGPAY4BjQGMAZEBiwGKAYkBiAGHAYYBkgGrAVIBbwFTAXABVQFyAVYBbQCiAKMAqwGyAKAAoQC7AHMAqQB4AIkADgAGAgoAAAAAAQAAAQAAAAAA2QDaANsA3ADdAAEAAgGhAAAAAAACAAAAAAGjAaQBpQGmAacA3wDgAOEA4gDjAAAAAAAAAAEBqAGpAAMAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgAAAQ0BDgEPAREBGwEgASgBmQGYAO4A7wDwAPEA8gBvAPMAcABxAZsBmgD3AHIA+wD9APwA/gEAAP8BBAEDAQUBBgBz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sDsssAAVIEewACNCsgABARUUEy6wKCotsDwssAAVIEewACNCsgABARUUEy6wKCotsD0ssQABFBOwKSotsD4ssCsqLbA1LLAsKyMgLkawAiVGUlggPFkusSIBFCstsEkssgAANSstsEossgABNSstsEsssgEANSstsEwssgEBNSstsDYssC0riiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSIBFCuwBEMusCIrLbBVLLIAADYrLbBWLLIAATYrLbBXLLIBADYrLbBYLLIBATYrLbA3LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEiARQrLbBNLLIAADcrLbBOLLIAATcrLbBPLLIBADcrLbBQLLIBATcrLbA4LLEJBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEiARQrLbBBLLIAADgrLbBCLLIAATgrLbBDLLIBADgrLbBELLIBATgrLbBALLAJI0KwPystsDkssCwrLrEiARQrLbBFLLIAADkrLbBGLLIAATkrLbBHLLIBADkrLbBILLIBATkrLbA6LLAtKyEjICA8sAQjQiM4sSIBFCuwBEMusCIrLbBRLLIAADorLbBSLLIAATorLbBTLLIBADorLbBULLIBATorLbA/LLAAFkUjIC4gRoojYTixIgEUKy2wWSywLisusSIBFCstsFossC4rsDIrLbBbLLAuK7AzKy2wXCywABawLiuwNCstsF0ssC8rLrEiARQrLbBeLLAvK7AyKy2wXyywLyuwMystsGAssC8rsDQrLbBhLLAwKy6xIgEUKy2wYiywMCuwMistsGMssDArsDMrLbBkLLAwK7A0Ky2wZSywMSsusSIBFCstsGYssDErsDIrLbBnLLAxK7AzKy2waCywMSuwNCstsGksK7AIZbADJFB4sAEVMC0AAEuwyFJYsQEBjlm5CAAIAGMgsAEjRCCwAyNwsBRFICBLsA5RS7AGU1pYsDQbsChZYGYgilVYsAIlYbABRWMjYrACI0SzCgoFBCuzCxAFBCuzERYFBCtZsgQoCEVSRLMLEAYEK7EGAUSx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AAAAAAAHACkAqgABAAAAAAAIAA8A0wABAAAAAAAJAA0A4gABAAAAAAAKAVUA7wABAAAAAAALABICRAABAAAAAAAMABICRAABAAAAAAANAJACVgABAAAAAAAOABoC5gABAAAAAAASAAsAWQADAAEECQAAALIDAAADAAEECQABABYDsgADAAEECQACAA4DyAADAAEECQADAEAD1gADAAEECQAEABYDsgADAAEECQAFABoEFgADAAEECQAGACQEMAADAAEECQAHAFIEVAADAAEECQAIAB4EpgADAAEECQAJABoExAADAAEECQAKAqoE3gADAAEECQALACQHiAADAAEECQAMACQHiAADAAEECQANASAHrAADAAEECQAOADQIzENvcHlyaWdodCAoYykgMjAxMiwgU29ya2luIFR5cGUgQ28gKHd3dy5zb3JraW50eXBlLmNvbSkgd2l0aCBSZXNlcnZlZCBGb250IE5hbWUgJ0RvbmVnYWwnRG9uZWdhbCBPbmVSZWd1bGFyU29ya2luVHlwZUNvLjogRG9uZWdhbCBPbmU6IDIwMTJWZXJzaW9uIDEuMDA0RG9uZWdhbE9uZS1SZWd1bGFyRG9uZWdhbCBpcyBhIHRyYWRlbWFyayBvZiBTb3JraW4gVHlwZSBDby5Tb3JraW4gVHlwZSBDby5HYXJ5IExvbmVyZ2FuRG9uZWdhbCBpcyBhIHRleHQgdHlwZWZhY2UgZGVzaWduZWQgdG8gYmUgaGlnaGx5IGxlZ2libGUgYW5kIGNvbWZvcnRhYmxlIHdoZW4gcmVhZGluZyBzY3JlZW5zLiBEb25lZ2FsJ3MgdXRpbGl0eSBhbmQgcGVyc29uYWxpdHkgY29uc2lzdGVudGx5IHNob3dzIGZyb20gc21hbGwgdGV4dCBzaXplcyB0byBkaXNwbGF5LiBEb25lZ2FsIHVzZXMgdGhlIGN1dCBpbnRlcmlvciBjdXJ2ZSBhc3NvY2lhdGVkIHdpdGggVy5BLiBEd2lnZ2lucy4gVGhpcyBmZWF0dXJlIGlzIG9uZSBvZiBtYW55IHRoYXQgY29udHJpYnV0ZSB0byBEb25lZ2FsJ3MgZGlzdGluY3RpdmUgYW5kIHBsZWFzaW5nIGNoYXJhY3Rlci53d3cuc29ya2ludHlwZS5jb21UaGlzIEZvbnQgU29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNJTCBPcGVuIEZvbnQgTGljZW5zZSwgVmVyc2lvbiAxLjEuIFRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUgd2l0aCBhIEZBUSBhdDogaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkxodHRwOi8vc2NyaXB0cy5zaWwub3JnL09GTABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEAMgAsACAAUwBvAHIAawBpAG4AIABUAHkAcABlACAAQwBvACAAKAB3AHcAdwAuAHMAbwByAGsAaQBuAHQAeQBwAGUALgBjAG8AbQApACAAdwBpAHQAaAAgAFIAZQBzAGUAcgB2AGUAZAAgAEYAbwBuAHQAIABOAGEAbQBlACAAJwBEAG8AbgBlAGcAYQBsACcARABvAG4AZQBnAGEAbAAgAE8AbgBlAFIAZQBnAHUAbABhAHIAUwBvAHIAawBpAG4AVAB5AHAAZQBDAG8ALgA6ACAARABvAG4AZQBnAGEAbAAgAE8AbgBlADoAIAAyADAAMQAyAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADQARABvAG4AZQBnAGEAbABPAG4AZQAtAFIAZQBnAHUAbABhAHIARABvAG4AZQBnAGEAbAAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAFMAbwByAGsAaQBuACAAVAB5AHAAZQAgAEMAbwAuAFMAbwByAGsAaQBuACAAVAB5AHAAZQAgAEMAbwAuAEcAYQByAHkAIABMAG8AbgBlAHIAZwBhAG4ARABvAG4AZQBnAGEAbAAgAGkAcwAgAGEAIAB0AGUAeAB0ACAAdAB5AHAAZQBmAGEAYwBlACAAZABlAHMAaQBnAG4AZQBkACAAdABvACAAYgBlACAAaABpAGcAaABsAHkAIABsAGUAZwBpAGIAbABlACAAYQBuAGQAIABjAG8AbQBmAG8AcgB0AGEAYgBsAGUAIAB3AGgAZQBuACAAcgBlAGEAZABpAG4AZwAgAHMAYwByAGUAZQBuAHMALgAgAEQAbwBuAGUAZwBhAGwAJwBzACAAdQB0AGkAbABpAHQAeQAgAGEAbgBkACAAcABlAHIAcwBvAG4AYQBsAGkAdAB5ACAAYwBvAG4AcwBpAHMAdABlAG4AdABsAHkAIABzAGgAbwB3AHMAIABmAHIAbwBtACAAcwBtAGEAbABsACAAdABlAHgAdAAgAHMAaQB6AGUAcwAgAHQAbwAgAGQAaQBzAHAAbABhAHkALgAgAEQAbwBuAGUAZwBhAGwAIAB1AHMAZQBzACAAdABoAGUAIABjAHUAdAAgAGkAbgB0AGUAcgBpAG8AcgAgAGMAdQByAHYAZQAgAGEAcwBzAG8AYwBpAGEAdABlAGQAIAB3AGkAdABoACAAVwAuAEEALgAgAEQAdwBpAGcAZwBpAG4AcwAuACAAVABoAGkAcwAgAGYAZQBhAHQAdQByAGUAIABpAHMAIABvAG4AZQAgAG8AZgAgAG0AYQBuAHkAIAB0AGgAYQB0ACAAYwBvAG4AdAByAGkAYgB1AHQAZQAgAHQAbwAgAEQAbwBuAGUAZwBhAGwAJwBzACAAZABpAHMAdABpAG4AYwB0AGkAdgBlACAAYQBuAGQAIABwAGwAZQBhAHMAaQBuAGcAIABjAGgAYQByAGEAYwB0AGUAcgAuAHcAdwB3AC4AcwBvAHIAawBpAG4AdAB5AHAAZQAuAGMAbwBtAFQAaABpAHMAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAaQBzACAAbABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABTAEkATAAgAE8AcABlAG4AIABGAG8AbgB0ACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADEALgAxAC4AIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGEAdgBhAGkAbABhAGIAbABlACAAdwBpAHQAaAAgAGEAIABGAEEAUQAgAGEAdAA6ACAAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATAAAAAIAAAAAAAD++wApAAAAAAAAAAAAAAAAAAAAAAAAAAABtQAAAQIAAgADAO0A7gDiAPQA9QDxAPYA8wDyAOgA7wDwAOMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBwAHIAcwB3AIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJIAkwCUAJUAlgCXAJgAmQCaAJsAnACdAJ4AnwCgAKEAowCkAKUApgCnAQMAqQCqAKsArACwALEAsgCzALQAtQC2ALcAuAC5ALwAvgC/AMIBBADEAMYA1wDYANkBBQDbANwA3QDeAN8A4ADhAOkAvQDqAMUAogEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2AGsAbABtAG4AbwBxATcBOAE5AHYBOgE7ATwAeAB6AHkAewB9AHwBPQE+AH8AfgCAAIEA7AC6AK0AyQDHAK4AYgBjAGQAywBlAMgAygDPAMwBPwDNAM4BQAFBAGYA0wDQANEArwBnAJEBQgFDAUQA1gDUANUAaADrAUUBRgFHAUgA/QFJAP8BSgFLAUwBTQFOAU8BUAD4AVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgDkAPsBXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0AuwFuAOYBbwFwAXEA/gFyAQABcwF0AXUBdgF3AXgBeQD5AXoBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkA/AGKAYsA5QGMAY0A5wGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQBqAGkAdQB0AaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4FLm51bGwFRGVsdGEOcGVyaW9kY2VudGVyZWQGbWFjcm9uCWFjdXRlLmNhcAlncmF2ZS5jYXAJdGlsZGUuY2FwDmNpcmN1bWZsZXguY2FwC2NvbW1hYWNjZW50B2FvZ29uZWsHQW9nb25lawdFb2dvbmVrDWNhcm9udmVydGljYWwGZGNhcm9uBmxjYXJvbgZMY2Fyb24GdGNhcm9uB2lvZ29uZWsHSW9nb25lawd1b2dvbmVrB1VvZ29uZWsGRGNyb2F0BmRjcm9hdAZsYWN1dGUEdGJhcgRUYmFyBEhiYXIKbWFjcm9uLmNhcBBodW5nYXJ1bWxhdXQuY2FwCWJyZXZlLmNhcAtoY2lyY3VtZmxleAd1bmkwMDAyB3VuaTAwMDMHdW5pMDAwNAd1bmkwMDA1B3VuaTAwMDYHdW5pMDAwNwd1bmkwMDA4B3VuaTAwMTUHdW5pMDAxNgd1bmkwMDE3B3VuaTAwMTgHdW5pMDAxOQd1bmkwMEFEBEV1cm8LamNpcmN1bWZsZXgEbGRvdAd1bmkwMDAxCWNhcm9uLmNhcAhyaW5nLmNhcAhkb3RsZXNzag1kb3RhY2NlbnQuY2FwB2VvZ29uZWsEaGJhcgZpdGlsZGUCaWoMa2NvbW1hYWNjZW50DGtncmVlbmxhbmRpYwZuYWN1dGUGcmNhcm9uDHJjb21tYWFjY2VudAZJdGlsZGULSmNpcmN1bWZsZXgGTmFjdXRlBlJhY3V0ZQZSY2Fyb24MUmNvbW1hYWNjZW50A0VuZwNlbmcHQW1hY3JvbgZBYnJldmULQ2NpcmN1bWZsZXgKQ2RvdGFjY2VudAZEY2Fyb24GRWNhcm9uB0VtYWNyb24GRWJyZXZlCkVkb3RhY2NlbnQLR2NpcmN1bWZsZXgMR2NvbW1hYWNjZW50Ckdkb3RhY2NlbnQLSGNpcmN1bWZsZXgHSW1hY3JvbgZJYnJldmUKSWRvdGFjY2VudAxLY29tbWFhY2NlbnQMTGNvbW1hYWNjZW50Bk5jYXJvbgxOY29tbWFhY2NlbnQHT21hY3JvbgZPYnJldmUGU2FjdXRlC1NjaXJjdW1mbGV4DFNjb21tYWFjY2VudAZUY2Fyb24MVGNvbW1hYWNjZW50BlV0aWxkZQdVbWFjcm9uBlVicmV2ZQVVcmluZw1VaHVuZ2FydW1sYXV0DU9odW5nYXJ1bWxhdXQGV2dyYXZlBldhY3V0ZQtXY2lyY3VtZmxleAlXZGllcmVzaXMGWWdyYXZlC1ljaXJjdW1mbGV4BlphY3V0ZQpaZG90YWNjZW50B2FtYWNyb24GYWJyZXZlC2NjaXJjdW1mbGV4CmNkb3RhY2NlbnQHYWVhY3V0ZQZlY2Fyb24HZW1hY3JvbgZlYnJldmUKZWRvdGFjY2VudAtnY2lyY3VtZmxleApnZG90YWNjZW50DGdjb21tYWFjY2VudAdpbWFjcm9uBmlicmV2ZQZ5Z3JhdmULeWNpcmN1bWZsZXgGd2dyYXZlBndhY3V0ZQt3Y2lyY3VtZmxleAl3ZGllcmVzaXMGdXRpbGRlB3VtYWNyb24GdWJyZXZlBXVyaW5nDHRjb21tYWFjY2VudAxzY29tbWFhY2NlbnQGc2FjdXRlC3NjaXJjdW1mbGV4BnJhY3V0ZQZ6YWN1dGUKemRvdGFjY2VudAdvbWFjcm9uBm9icmV2ZQZuY2Fyb24MbmNvbW1hYWNjZW50DGxjb21tYWFjY2VudAd1bmkxRTYxB3VuaTFFNjAHdW5pMUU1Nwd1bmkxRTU2B3VuaTFFNDEHdW5pMUU0MAd1bmkxRTFFB3VuaTFFMEIHdW5pMUUwQQd1bmkxRTAzB3VuaTFFMDIHdW5pMUUxRgd1bmkxRTZBDW9odW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dARMZG90DGRpZXJlc2lzLmNhcAJJSgZMYWN1dGUHQUVhY3V0ZQd1bmkwMzk0B3VuaTAzQkMHdW5pMDNBOQJMRgJIVANETEUDREMxA0RDMgNEQzMDREM0AlJTAlVTA0RFTAd1bmkxRTZCCHRjZWRpbGxhCFRjZWRpbGxhCWV4Y2xhbWRibANmX2YDZl9pA2ZfbA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQAAAAAAQAB//8ADwABAAAACgByAPIAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAWAANNT0wgACRST00gADJUUksgAEAAAP//AAQAAQAFAAkADQAA//8ABAACAAYACgAOAAD//wAEAAMABwALAA8AAP//AAQABAAIAAwAEAARYWFsdABoYWFsdABoYWFsdABoYWFsdABoYWFsdABoZnJhYwBuZnJhYwBuZnJhYwBuZnJhYwBub3JkbgB0b3JkbgB0b3JkbgB0b3JkbgB0c3VwcwB6c3VwcwB6c3VwcwB6c3VwcwB6AAAAAQAAAAAAAQADAAAAAQABAAAAAQACAAUA+AAMAIIAoAD4AAYAAAAEAA4AIAAyAEwAAwABAFgAAQA4AAAAAQAAAAQAAwABAEYAAQBQAAAAAQAAAAQAAwACAC4ANAABABQAAAABAAAABAABAAEAUQADAAIAFAAaAAEAJAAAAAEAAAAEAAEAAQAeAAIAAQAgACkAAAABAAEAXwABAAAAAQAIAAIADAADAAkADAALAAEAAwAhACIAIwAEAAAAAQAIAAEARgADAAwAJAA6AAIABgAQAKwABAAfACAAIAAVAAMAHwAgAAIABgAOAAcAAwAfACIACAADAB8AJAABAAQACgADAB8AJAABAAMAIAAhACMAAQAAAAEACAACAAoAAgCNAI4AAQACAFEAXw=="&#xD;&#xD;/***/ }),&#xD;/* 13 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "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A24AAALv//4DbgAAAu///gKDABQB7QADAaQATAJrAEwAlgAWAJYAFgCWABcBbAASAYL//gFsADEBxgAhAc3/+gFAAEcCqABVAawAFAHCABABkAApAsUALwYZABQBpABMAu8AFALZABYBzQB3AygAEgNhABIAAAABAAEBAQEBAAwA+Aj/AAgADP/7AAkADf/6AAoAD//6AAsAEP/5AAwAEf/5AA0AE//4AA4AFP/3AA8AFv/3ABAAF//2ABEAGP/2ABIAGv/1ABMAG//1ABQAHf/0ABUAHv/zABYAH//zABcAIf/yABgAIv/yABkAJP/xABoAJf/wABsAJv/wABwAKP/vAB0AKf/vAB4AK//uAB8ALP/uACAALf/tACEAL//sACIAMP/sACMAMv/rACQAM//rACUANP/qACYANv/qACcAN//pACgAOf/oACkAOv/oACoAPP/nACsAPf/nACwAPv/mAC0AQP/mAC4AQf/lAC8AQ//kADAARP/kADEARf/jADIAR//jADMASP/iADQASv/hADUAS//hADYATP/gADcATv/gADgAT//fADkAUf/fADoAUv/eADsAU//dADwAVf/dAD0AVv/cAD4AWP/cAD8AWf/bAEAAWv/bAEEAXP/aAEIAXf/ZAEMAX//ZAEQAYP/YAEUAYf/YAEYAY//XAEcAZP/XAEgAZv/WAEkAZ//VAEoAaP/VAEsAav/UAEwAa//UAE0Abf/TAE4Abv/SAE8AcP/SAFAAcf/RAFEAcv/RAFIAdP/QAFMAdf/QAFQAd//PAFUAeP/OAFYAef/OAFcAe//NAFgAfP/NAFkAfv/MAFoAf//MAFsAgP/LAFwAgv/KAF0Ag//KAF4Ahf/JAF8Ahv/JAGAAh//IAGEAif/IAGIAiv/HAGMAjP/GAGQAjf/GAGUAjv/FAGYAkP/FAGcAkf/EAGgAk//DAGkAlP/DAGoAlf/CAGsAl//CAGwAmP/BAG0Amv/BAG4Am//AAG8AnP+/AHAAnv+/AHEAn/++AHIAof++AHMAov+9AHQApP+9AHUApf+8AHYApv+7AHcAqP+7AHgAqf+6AHkAq/+6AHoArP+5AHsArf+5AHwAr/+4AH0AsP+3AH4Asv+3AH8As/+2AIAAtP+2AIEAtv+1AIIAt/+0AIMAuf+0AIQAuv+zAIUAu/+zAIYAvf+yAIcAvv+yAIgAwP+xAIkAwf+wAIoAwv+wAIsAxP+vAIwAxf+vAI0Ax/+uAI4AyP+uAI8Ayf+tAJAAy/+sAJEAzP+sAJIAzv+rAJMAz/+rAJQA0P+qAJUA0v+qAJYA0/+pAJcA1f+oAJgA1v+oAJkA2P+nAJoA2f+nAJsA2v+mAJwA3P+lAJ0A3f+lAJ4A3/+kAJ8A4P+kAKAA4f+jAKEA4/+jAKIA5P+iAKMA5v+hAKQA5/+hAKUA6P+gAKYA6v+gAKcA6/+fAKgA7f+fAKkA7v+eAKoA7/+dAKsA8f+dAKwA8v+cAK0A9P+cAK4A9f+bAK8A9v+aALAA+P+aALEA+f+ZALIA+/+ZALMA/P+YALQA/f+YALUA//+XALYBAP+WALcBAv+WALgBA/+VALkBBP+VALoBBv+UALsBB/+UALwBCf+TAL0BCv+SAL4BDP+SAL8BDf+RAMABDv+RAMEBEP+QAMIBEf+QAMMBE/+PAMQBFP+OAMUBFf+OAMYBF/+NAMcBGP+NAMgBGv+MAMkBG/+LAMoBHP+LAMsBHv+KAMwBH/+KAM0BIf+JAM4BIv+JAM8BI/+IANABJf+HANEBJv+HANIBKP+GANMBKf+GANQBKv+FANUBLP+FANYBLf+EANcBL/+DANgBMP+DANkBMf+CANoBM/+CANsBNP+BANwBNv+BAN0BN/+AAN4BOP9/AN8BOv9/AOABO/9+AOEBPf9+AOIBPv99AOMBP/98AOQBQf98AOUBQv97AOYBRP97AOcBRf96AOgBR/96AOkBSP95AOoBSf94AOsBS/94AOwBTP93AO0BTv93AO4BT/92AO8BUP92APABUv91APEBU/90APIBVf90APMBVv9zAPQBV/9zAPUBWf9yAPYBWv9yAPcBXP9xAPgBXf9wAPkBXv9wAPoBYP9vAPsBYf9vAPwBY/9uAP0BZP9tAP4BZf9tAP8BZ/9sAAAAAwAAAAMAAALWAAEAAAAAABwAAwABAAAB5gAGAcoECQAgAOAAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJ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EtEAAwABBAkABAAiEwcAAwABBAkABQAkEykAAwABBAkABgAgE00AAwABBAkACAAgE20AAwABBAkACQAgE40AAwABBAkADAA0E60AAwABBAkADSJwE+EAAwABBAkADgA2NlFDb3B5cmlnaHQgKGMpIDIwMTAsIEtpbWJlcmx5IEdlc3dlaW4gKGtpbWJlcmx5Z2Vzd2Vpbi5jb20pR2xvcmlhIEhhbGxlbHVqYWhSZWd1bGFyMS4wMDQ7cHlycztHbG9yaWFIYWxsZWx1amFoR2xvcmlhIEhhbGxlbHVqYWhWZXJzaW9uIDEuMDA0IDIwMTBHbG9yaWFIYWxsZWx1amFoS2ltYmVybHkgR2Vzd2VpbktpbWJlcmx5IEdlc3dlaW5odHRwOi8va2ltYmVybHlnZXN3ZWluLmNvbUNvcHlyaWdodCAoYykgMjAxMCwgS2ltYmVybHkgR2Vzd2VpbiAoa2ltYmVybHlnZXN3ZWluLmNvbSkNCg0KVGhpcyBGb250IFNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTSUwgT3BlbiBGb250IExpY2Vuc2UsIFZlcnNpb24gMS4xLiAgVGhpcyBsaWNlbnNlIGlzIGNvcGllZCBiZWxvdywgYW5kIGlzIGFsc28gYXZhaWxhYmxlIHdpdGggYSBGQVEgYXQ6ICBodHRwOi8vc2NyaXB0cy5zaWwub3JnL09GTA0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpTSUwgT1BFTiBGT05UIExJQ0VOU0UgVmVyc2lvbiAxLjEgLSAyNiBGZWJydWFyeSAyMDA3DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpQUkVBTUJMRQ0KVGhlIGdvYWxzIG9mIHRoZSBPcGVuIEZvbnQgTGljZW5zZSAoT0ZMKSBhcmUgdG8gc3RpbXVsYXRlIHdvcmxkd2lkZSBkZXZlbG9wbWVudCBvZiBjb2xsYWJvcmF0aXZlIGZvbnQgcHJvamVjdHMsIHRvIHN1cHBvcnQgdGhlIGZvbnQgY3JlYXRpb24gZWZmb3J0cyBvZiBhY2FkZW1pYyBhbmQgbGluZ3Vpc3RpYyBjb21tdW5pdGllcywgYW5kIHRvIHByb3ZpZGUgYSBmcmVlIGFuZCBvcGVuIGZyYW1ld29yayBpbiB3aGljaCBmb250cyBtYXkgYmUgc2hhcmVkIGFuZCBpbXByb3ZlZCBpbiBwYXJ0bmVyc2hpcA0Kd2l0aCBvdGhlcnMuDQoNClRoZSBPRkwgYWxsb3dzIHRoZSBsaWNlbnNlZCBmb250cyB0byBiZSB1c2VkLCBzdHVkaWVkLCBtb2RpZmllZCBhbmQgcmVkaXN0cmlidXRlZCBmcmVlbHkgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3Qgc29sZCBieSB0aGVtc2VsdmVzLiBUaGUgZm9udHMsIGluY2x1ZGluZyBhbnkgZGVyaXZhdGl2ZSB3b3JrcywgY2FuIGJlIGJ1bmRsZWQsIGVtYmVkZGVkLCByZWRpc3RyaWJ1dGVkIGFuZC9vciBzb2xkIHdpdGggYW55IHNvZnR3YXJlIHByb3ZpZGVkIHRoYXQgYW55IHJlc2VydmVkIG5hbWVzIGFyZSBub3QgdXNlZCBieSBkZXJpdmF0aXZlIHdvcmtzLiBUaGUgZm9udHMgYW5kIGRlcml2YXRpdmVzLCBob3dldmVyLCBjYW5ub3QgYmUgcmVsZWFzZWQgdW5kZXIgYW55IG90aGVyIHR5cGUgb2YgbGljZW5zZS4gVGhlIHJlcXVpcmVtZW50IGZvciBmb250cyB0byByZW1haW4gdW5kZXIgdGhpcyBsaWNlbnNlIGRvZXMgbm90IGFwcGx5IHRvIGFueSBkb2N1bWVudCBjcmVhdGVkIHVzaW5nIHRoZSBmb250cyBvciB0aGVpciBkZXJpdmF0aXZlcy4NCg0KREVGSU5JVElPTlMNCiJGb250IFNvZnR3YXJlIiByZWZlcnMgdG8gdGhlIHNldCBvZiBmaWxlcyByZWxlYXNlZCBieSB0aGUgQ29weXJpZ2h0IEhvbGRlcihzKSB1bmRlciB0aGlzIGxpY2Vuc2UgYW5kIGNsZWFybHkgbWFya2VkIGFzIHN1Y2guIFRoaXMgbWF5IGluY2x1ZGUgc291cmNlIGZpbGVzLCBidWlsZCBzY3JpcHRzIGFuZCBkb2N1bWVudGF0aW9uLg0KDQoiUmVzZXJ2ZWQgRm9udCBOYW1lIiByZWZlcnMgdG8gYW55IG5hbWVzIHNwZWNpZmllZCBhcyBzdWNoIGFmdGVyIHRoZSBjb3B5cmlnaHQgc3RhdGVtZW50KHMpLg0KDQoiT3JpZ2luYWwgVmVyc2lvbiIgcmVmZXJzIHRvIHRoZSBjb2xsZWN0aW9uIG9mIEZvbnQgU29mdHdhcmUgY29tcG9uZW50cyBhcyBkaXN0cmlidXRlZCBieSB0aGUgQ29weXJpZ2h0IEhvbGRlcihzKS4NCg0KIk1vZGlmaWVkIFZlcnNpb24iIHJlZmVycyB0byBhbnkgZGVyaXZhdGl2ZSBtYWRlIGJ5IGFkZGluZyB0bywgZGVsZXRpbmcsIG9yIHN1YnN0aXR1dGluZyAtLSBpbiBwYXJ0IG9yIGluIHdob2xlIC0tIGFueSBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGUgT3JpZ2luYWwgVmVyc2lvbiwgYnkgY2hhbmdpbmcgZm9ybWF0cyBvciBieSBwb3J0aW5nIHRoZSBGb250IFNvZnR3YXJlIHRvIGEgbmV3IGVudmlyb25tZW50Lg0KDQoiQXV0aG9yIiByZWZlcnMgdG8gYW55IGRlc2lnbmVyLCBlbmdpbmVlciwgcHJvZ3JhbW1lciwgdGVjaG5pY2FsIHdyaXRlciBvciBvdGhlciBwZXJzb24gd2hvIGNvbnRyaWJ1dGVkIHRvIHRoZSBGb250IFNvZnR3YXJlLg0KDQpQRVJNSVNTSU9OICYgQ09ORElUSU9OUw0KUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGUgRm9udCBTb2Z0d2FyZSwgdG8gdXNlLCBzdHVkeSwgY29weSwgbWVyZ2UsIGVtYmVkLCBtb2RpZnksIHJlZGlzdHJpYnV0ZSwgYW5kIHNlbGwgbW9kaWZpZWQgYW5kIHVubW9kaWZpZWQgY29waWVzIG9mIHRoZSBGb250IFNvZnR3YXJlLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCg0KMSkgTmVpdGhlciB0aGUgRm9udCBTb2Z0d2FyZSBub3IgYW55IG9mIGl0cyBpbmRpdmlkdWFsIGNvbXBvbmVudHMsIGluIE9yaWdpbmFsIG9yIE1vZGlmaWVkIFZlcnNpb25zLCBtYXkgYmUgc29sZCBieSBpdHNlbGYuDQoNCjIpIE9yaWdpbmFsIG9yIE1vZGlmaWVkIFZlcnNpb25zIG9mIHRoZSBGb250IFNvZnR3YXJlIG1heSBiZSBidW5kbGVkLCByZWRpc3RyaWJ1dGVkIGFuZC9vciBzb2xkIHdpdGggYW55IHNvZnR3YXJlLCBwcm92aWRlZCB0aGF0IGVhY2ggY29weSBjb250YWlucyB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBsaWNlbnNlLiBUaGVzZSBjYW4gYmUgaW5jbHVkZWQgZWl0aGVyIGFzIHN0YW5kLWFsb25lIHRleHQgZmlsZXMsIGh1bWFuLXJlYWRhYmxlIGhlYWRlcnMgb3IgaW4gdGhlIGFwcHJvcHJpYXRlIG1hY2hpbmUtcmVhZGFibGUgbWV0YWRhdGEgZmllbGRzIHdpdGhpbiB0ZXh0IG9yIGJpbmFyeSBmaWxlcyBhcyBsb25nIGFzIHRob3NlIGZpZWxkcyBjYW4gYmUgZWFzaWx5IHZpZXdlZCBieSB0aGUgdXNlci4NCg0KMykgTm8gTW9kaWZpZWQgVmVyc2lvbiBvZiB0aGUgRm9udCBTb2Z0d2FyZSBtYXkgdXNlIHRoZSBSZXNlcnZlZCBGb250IE5hbWUocykgdW5sZXNzIGV4cGxpY2l0IHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBncmFudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIENvcHlyaWdodCBIb2xkZXIuIFRoaXMgcmVzdHJpY3Rpb24gb25seSBhcHBsaWVzIHRvIHRoZSBwcmltYXJ5IGZvbnQgbmFtZSBhcw0KcHJlc2VudGVkIHRvIHRoZSB1c2Vycy4NCg0KNCkgVGhlIG5hbWUocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgb3IgdGhlIEF1dGhvcihzKSBvZiB0aGUgRm9udCBTb2Z0d2FyZSBzaGFsbCBub3QgYmUgdXNlZCB0byBwcm9tb3RlLCBlbmRvcnNlIG9yIGFkdmVydGlzZSBhbnkgTW9kaWZpZWQgVmVyc2lvbiwgZXhjZXB0IHRvIGFja25vd2xlZGdlIHRoZSBjb250cmlidXRpb24ocykgb2YgdGhlIENvcHlyaWdodCBIb2xkZXIocykgYW5kIHRoZSBBdXRob3Iocykgb3Igd2l0aCB0aGVpciBleHBsaWNpdCB3cml0dGVuDQpwZXJtaXNzaW9uLg0KDQo1KSBUaGUgRm9udCBTb2Z0d2FyZSwgbW9kaWZpZWQgb3IgdW5tb2RpZmllZCwgaW4gcGFydCBvciBpbiB3aG9sZSwgbXVzdCBiZSBkaXN0cmlidXRlZCBlbnRpcmVseSB1bmRlciB0aGlzIGxpY2Vuc2UsIGFuZCBtdXN0IG5vdCBiZSBkaXN0cmlidXRlZCB1bmRlciBhbnkgb3RoZXIgbGljZW5zZS4gVGhlIHJlcXVpcmVtZW50IGZvciBmb250cyB0byByZW1haW4gdW5kZXIgdGhpcyBsaWNlbnNlIGRvZXMgbm90IGFwcGx5IHRvIGFueSBkb2N1bWVudCBjcmVhdGVkIHVzaW5nIHRoZSBGb250IFNvZnR3YXJlLg0KDQpURVJNSU5BVElPTg0KVGhpcyBsaWNlbnNlIGJlY29tZXMgbnVsbCBhbmQgdm9pZCBpZiBhbnkgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuDQoNCkRJU0NMQUlNRVINClRIRSBGT05UIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQgT0YgQ09QWVJJR0hULCBQQVRFTlQsIFRSQURFTUFSSywgT1IgT1RIRVIgUklHSFQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KQ09QWVJJR0hUIEhPTERFUiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIEZPTlQgU09GVFdBUkUgT1IgRlJPTSBPVEhFUiBERUFMSU5HUyBJTiBUSEUgRk9OVCBTT0ZUV0FSRS4gaHR0cDovL3NjcmlwdHMuc2lsLm9yZy9PRkwAQwBvAHAAeQByAGkAZwBoAHQAIAAoAGMAKQAgADIAMAAxADAALAAgAEsAaQBtAGIAZQByAGwAeQAgAEcAZQBzAHcAZQBpAG4AIAAoAGsAaQBtAGIAZQByAGwAeQBnAGUAcwB3AGUAaQBuAC4AYwBvAG0AKQBHAGwAbwByAGkAYQAgAEgAYQBsAGwAZQBsAHUAagBhAGgAUgBlAGcAdQBsAGEAcgAxAC4AMAAwADQAOwBwAHkAcgBzADsARwBsAG8AcgBpAGEASABhAGwAbABlAGwAdQBqAGEAaABHAGwAbwByAGkAYQAgAEgAYQBsAGwAZQBsAHUAagBhAGgAVgBlAHIAcwBpAG8AbgAgADEALgAwADAANAAgADIAMAAxADAARwBsAG8AcgBpAGEASABhAGwAbABlAGwAdQBqAGEAaABLAGkAbQBiAGUAcgBsAHkAIABHAGUAcwB3AGUAaQBuAEsAaQBtAGIAZQByAGwAeQAgAEcAZQBzAHcAZQBpAG4AaAB0AHQAcAA6AC8ALwBrAGkAbQBiAGUAcgBsAHkAZwBlAHMAdwBlAGkAbgAuAGMAbwBtAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAyADAAMQAwACwAIABLAGkAbQBiAGUAcgBsAHkAIABHAGUAcwB3AGUAaQBuACAAKABrAGkAbQBiAGUAcgBsAHkAZwBlAHMAdwBlAGkAbgAuAGMAbwBtACkADQAKAA0ACgBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuACAAIABUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGkAcwAgAGMAbwBwAGkAZQBkACAAYgBlAGwAbwB3ACwAIABhAG4AZAAgAGkAcwAgAGEAbABzAG8AIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgAgACAAaAB0AHQAcAA6AC8ALwBzAGMAcgBpAHAAdABzAC4AcwBpAGwALgBvAHIAZwAvAE8ARgBMAA0ACgANAAoADQAKAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQANAAoAUwBJAEwAIABPAFAARQBOACAARgBPAE4AVAAgAEwASQBDAEUATgBTAEUAIABWAGUAcgBzAGkAbwBuACAAMQAuADEAIAAtACAAMgA2ACAARgBlAGIAcgB1AGEAcgB5ACAAMgAwADAANwANAAoALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAC0ALQAtAA0ACgANAAoAUABSAEUAQQBNAEIATABFAA0ACgBUAGgAZQAgAGcAbwBhAGwAcwAgAG8AZgAgAHQAaABlACAATwBwAGUAbgAgAEYAbwBuAHQAIABMAGkAYwBlAG4AcwBlACAAKABPAEYATAApACAAYQByAGUAIAB0AG8AIABzAHQAaQBtAHUAbABhAHQAZQAgAHcAbwByAGwAZAB3AGkAZABlACAAZABlAHYAZQBsAG8AcABtAGUAbgB0ACAAbwBmACAAYwBvAGwAbABhAGIAbwByAGEAdABpAHYAZQAgAGYAbwBuAHQAIABwAHIAbwBqAGUAYwB0AHMALAAgAHQAbwAgAHMAdQBwAHAAbwByAHQAIAB0AGgAZQAgAGYAbwBuAHQAIABjAHIAZQBhAHQAaQBvAG4AIABlAGYAZgBvAHIAdABzACAAbwBmACAAYQBjAGEAZABlAG0AaQBjACAAYQBuAGQAIABsAGkAbgBnAHUAaQBzAHQAaQBjACAAYwBvAG0AbQB1AG4AaQB0AGkAZQBzACwAIABhAG4AZAAgAHQAbwAgAHAAcgBvAHYAaQBkAGUAIABhACAAZgByAGUAZQAgAGEAbgBkACAAbwBwAGUAbgAgAGYAcgBhAG0AZQB3AG8AcgBrACAAaQBuACAAdwBoAGkAYwBoACAAZgBvAG4AdABzACAAbQBhAHkAIABiAGUAIABzAGgAYQByAGUAZAAgAGEAbgBkACAAaQBtAHAAcgBvAHYAZQBkACAAaQBuACAAcABhAHIAdABuAGUAcgBzAGgAaQBwAA0ACgB3AGkAdABoACAAbwB0AGgAZQByAHMALgANAAoADQAKAFQAaABlACAATwBGAEwAIABhAGwAbABvAHcAcwAgAHQAaABlACAAbABpAGMAZQBuAHMAZQBkACAAZgBvAG4AdABzACAAdABvACAAYgBlACAAdQBzAGUAZAAsACAAcwB0AHUAZABpAGUAZAAsACAAbQBvAGQAaQBmAGkAZQBkACAAYQBuAGQAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAZgByAGUAZQBsAHkAIABhAHMAIABsAG8AbgBnACAAYQBzACAAdABoAGUAeQAgAGEAcgBlACAAbgBvAHQAIABzAG8AbABkACAAYgB5ACAAdABoAGUAbQBzAGUAbAB2AGUAcwAuACAAVABoAGUAIABmAG8AbgB0AHMALAAgAGkAbgBjAGwAdQBkAGkAbgBnACAAYQBuAHkAIABkAGUAcgBpAHYAYQB0AGkAdgBlACAAdwBvAHIAawBzACwAIABjAGEAbgAgAGIAZQAgAGIAdQBuAGQAbABlAGQALAAgAGUAbQBiAGUAZABkAGUAZAAsACAAcgBlAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAGEAbgBkAC8AbwByACAAcwBvAGwAZAAgAHcAaQB0AGgAIABhAG4AeQAgAHMAbwBmAHQAdwBhAHIAZQAgAHAAcgBvAHYAaQBkAGUAZAAgAHQAaABhAHQAIABhAG4AeQAgAHIAZQBzAGUAcgB2AGUAZAAgAG4AYQBtAGUAcwAgAGEAcgBlACAAbgBvAHQAIAB1AHMAZQBkACAAYgB5ACAAZABlAHIAaQB2AGEAdABpAHYAZQAgAHcAbwByAGsAcwAuACAAVABoAGUAIABmAG8AbgB0AHMAIABhAG4AZAAgAGQAZQByAGkAdgBhAHQAaQB2AGUAcwAsACAAaABvAHcAZQB2AGUAcgAsACAAYwBhAG4AbgBvAHQAIABiAGUAIAByAGUAbABlAGEAcwBlAGQAIAB1AG4AZABlAHIAIABhAG4AeQAgAG8AdABoAGUAcgAgAHQAeQBwAGUAIABvAGYAIABsAGkAYwBlAG4AcwBlAC4AIABUAGgAZQAgAHIAZQBxAHUAaQByAGUAbQBlAG4AdAAgAGYAbwByACAAZgBvAG4AdABzACAAdABvACAAcgBlAG0AYQBpAG4AIAB1AG4AZABlAHIAIAB0AGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGQAbwBlAHMAIABuAG8AdAAgAGEAcABwAGwAeQAgAHQAbwAgAGEAbgB5ACAAZABvAGMAdQBtAGUAbgB0ACAAYwByAGUAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAHQAaABlACAAZgBvAG4AdABzACAAbwByACAAdABoAGUAaQByACAAZABlAHIAaQB2AGEAdABpAHYAZQBzAC4ADQAKAA0ACgBEAEUARgBJAE4ASQBUAEkATwBOAFMADQAKACIARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAiACAAcgBlAGYAZQByAHMAIAB0AG8AIAB0AGgAZQAgAHMAZQB0ACAAbwBmACAAZgBpAGwAZQBzACAAcgBlAGwAZQBhAHMAZQBkACAAYgB5ACAAdABoAGUAIABDAG8AcAB5AHIAaQBnAGgAdAAgAEgAbwBsAGQAZQByACgAcwApACAAdQBuAGQAZQByACAAdABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABhAG4AZAAgAGMAbABlAGEAcgBsAHkAIABtAGEAcgBrAGUAZAAgAGEAcwAgAHMAdQBjAGgALgAgAFQAaABpAHMAIABtAGEAeQAgAGkAbgBjAGwAdQBkAGUAIABzAG8AdQByAGMAZQAgAGYAaQBsAGUAcwAsACAAYgB1AGkAbABkACAAcwBjAHIAaQBwAHQAcwAgAGEAbgBkACAAZABvAGMAdQBtAGUAbgB0AGEAdABpAG8AbgAuAA0ACgANAAoAIgBSAGUAcwBlAHIAdgBlAGQAIABGAG8AbgB0ACAATgBhAG0AZQAiACAAcgBlAGYAZQByAHMAIAB0AG8AIABhAG4AeQAgAG4AYQBtAGUAcwAgAHMAcABlAGMAaQBmAGkAZQBkACAAYQBzACAAcwB1AGMAaAAgAGEAZgB0AGUAcgAgAHQAaABlACAAYwBvAHAAeQByAGkAZwBoAHQAIABzAHQAYQB0AGUAbQBlAG4AdAAoAHMAKQAuAA0ACgANAAoAIgBPAHIAaQBnAGkAbgBhAGwAIABWAGUAcgBzAGkAbwBuACIAIAByAGUAZgBlAHIAcwAgAHQAbwAgAHQAaABlACAAYwBvAGwAbABlAGMAdABpAG8AbgAgAG8AZgAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABjAG8AbQBwAG8AbgBlAG4AdABzACAAYQBzACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAYgB5ACAAdABoAGUAIABDAG8AcAB5AHIAaQBnAGgAdAAgAEgAbwBsAGQAZQByACgAcwApAC4ADQAKAA0ACgAiAE0AbwBkAGkAZgBpAGUAZAAgAFYAZQByAHMAaQBvAG4AIgAgAHIAZQBmAGUAcgBzACAAdABvACAAYQBuAHkAIABkAGUAcgBpAHYAYQB0AGkAdgBlACAAbQBhAGQAZQAgAGIAeQAgAGEAZABkAGkAbgBnACAAdABvACwAIABkAGUAbABlAHQAaQBuAGcALAAgAG8AcgAgAHMAdQBiAHMAdABpAHQAdQB0AGkAbgBnACAALQAtACAAaQBuACAAcABhAHIAdAAgAG8AcgAgAGkAbgAgAHcAaABvAGwAZQAgAC0ALQAgAGEAbgB5ACAAbwBmACAAdABoAGUAIABjAG8AbQBwAG8AbgBlAG4AdABzACAAbwBmACAAdABoAGUAIABPAHIAaQBnAGkAbgBhAGwAIABWAGUAcgBzAGkAbwBuACwAIABiAHkAIABjAGgAYQBuAGcAaQBuAGcAIABmAG8AcgBtAGEAdABzACAAbwByACAAYgB5ACAAcABvAHIAdABpAG4AZwAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAHQAbwAgAGEAIABuAGUAdwAgAGUAbgB2AGkAcgBvAG4AbQBlAG4AdAAuAA0ACgANAAoAIgBBAHUAdABoAG8AcgAiACAAcgBlAGYAZQByAHMAIAB0AG8AIABhAG4AeQAgAGQAZQBzAGkAZwBuAGUAcgAsACAAZQBuAGcAaQBuAGUAZQByACwAIABwAHIAbwBnAHIAYQBtAG0AZQByACwAIAB0AGUAYwBoAG4AaQBjAGEAbAAgAHcAcgBpAHQAZQByACAAbwByACAAbwB0AGgAZQByACAAcABlAHIAcwBvAG4AIAB3AGgAbwAgAGMAbwBuAHQAcgBpAGIAdQB0AGUAZAAgAHQAbwAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAuAA0ACgANAAoAUABFAFIATQBJAFMAUwBJAE8ATgAgACYAIABDAE8ATgBEAEkAVABJAE8ATgBTAA0ACgBQAGUAcgBtAGkAcwBzAGkAbwBuACAAaQBzACAAaABlAHIAZQBiAHkAIABnAHIAYQBuAHQAZQBkACwAIABmAHIAZQBlACAAbwBmACAAYwBoAGEAcgBnAGUALAAgAHQAbwAgAGEAbgB5ACAAcABlAHIAcwBvAG4AIABvAGIAdABhAGkAbgBpAG4AZwAgAGEAIABjAG8AcAB5ACAAbwBmACAAdABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACwAIAB0AG8AIAB1AHMAZQAsACAAcwB0AHUAZAB5ACwAIABjAG8AcAB5ACwAIABtAGUAcgBnAGUALAAgAGUAbQBiAGUAZAAsACAAbQBvAGQAaQBmAHkALAAgAHIAZQBkAGkAcwB0AHIAaQBiAHUAdABlACwAIABhAG4AZAAgAHMAZQBsAGwAIABtAG8AZABpAGYAaQBlAGQAIABhAG4AZAAgAHUAbgBtAG8AZABpAGYAaQBlAGQAIABjAG8AcABpAGUAcwAgAG8AZgAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAsACAAcwB1AGIAagBlAGMAdAAgAHQAbwAgAHQAaABlACAAZgBvAGwAbABvAHcAaQBuAGcAIABjAG8AbgBkAGkAdABpAG8AbgBzADoADQAKAA0ACgAxACkAIABOAGUAaQB0AGgAZQByACAAdABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAbgBvAHIAIABhAG4AeQAgAG8AZgAgAGkAdABzACAAaQBuAGQAaQB2AGkAZAB1AGEAbAAgAGMAbwBtAHAAbwBuAGUAbgB0AHMALAAgAGkAbgAgAE8AcgBpAGcAaQBuAGEAbAAgAG8AcgAgAE0AbwBkAGkAZgBpAGUAZAAgAFYAZQByAHMAaQBvAG4AcwAsACAAbQBhAHkAIABiAGUAIABzAG8AbABkACAAYgB5ACAAaQB0AHMAZQBsAGYALgANAAoADQAKADIAKQAgAE8AcgBpAGcAaQBuAGEAbAAgAG8AcgAgAE0AbwBkAGkAZgBpAGUAZAAgAFYAZQByAHMAaQBvAG4AcwAgAG8AZgAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAG0AYQB5ACAAYgBlACAAYgB1AG4AZABsAGUAZAAsACAAcgBlAGQAaQBzAHQAcgBpAGIAdQB0AGUAZAAgAGEAbgBkAC8AbwByACAAcwBvAGwAZAAgAHcAaQB0AGgAIABhAG4AeQAgAHMAbwBmAHQAdwBhAHIAZQAsACAAcAByAG8AdgBpAGQAZQBkACAAdABoAGEAdAAgAGUAYQBjAGgAIABjAG8AcAB5ACAAYwBvAG4AdABhAGkAbgBzACAAdABoAGUAIABhAGIAbwB2AGUAIABjAG8AcAB5AHIAaQBnAGgAdAAgAG4AbwB0AGkAYwBlACAAYQBuAGQAIAB0AGgAaQBzACAAbABpAGMAZQBuAHMAZQAuACAAVABoAGUAcwBlACAAYwBhAG4AIABiAGUAIABpAG4AYwBsAHUAZABlAGQAIABlAGkAdABoAGUAcgAgAGEAcwAgAHMAdABhAG4AZAAtAGEAbABvAG4AZQAgAHQAZQB4AHQAIABmAGkAbABlAHMALAAgAGgAdQBtAGEAbgAtAHIAZQBhAGQAYQBiAGwAZQAgAGgAZQBhAGQAZQByAHMAIABvAHIAIABpAG4AIAB0AGgAZQAgAGEAcABwAHIAbwBwAHIAaQBhAHQAZQAgAG0AYQBjAGgAaQBuAGUALQByAGUAYQBkAGEAYgBsAGUAIABtAGUAdABhAGQAYQB0AGEAIABmAGkAZQBsAGQAcwAgAHcAaQB0AGgAaQBuACAAdABlAHgAdAAgAG8AcgAgAGIAaQBuAGEAcgB5ACAAZgBpAGwAZQBzACAAYQBzACAAbABvAG4AZwAgAGEAcwAgAHQAaABvAHMAZQAgAGYAaQBlAGwAZABzACAAYwBhAG4AIABiAGUAIABlAGEAcwBpAGwAeQAgAHYAaQBlAHcAZQBkACAAYgB5ACAAdABoAGUAIAB1AHMAZQByAC4ADQAKAA0ACgAzACkAIABOAG8AIABNAG8AZABpAGYAaQBlAGQAIABWAGUAcgBzAGkAbwBuACAAbwBmACAAdABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAbQBhAHkAIAB1AHMAZQAgAHQAaABlACAAUgBlAHMAZQByAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAKABzACkAIAB1AG4AbABlAHMAcwAgAGUAeABwAGwAaQBjAGkAdAAgAHcAcgBpAHQAdABlAG4AIABwAGUAcgBtAGkAcwBzAGkAbwBuACAAaQBzACAAZwByAGEAbgB0AGUAZAAgAGIAeQAgAHQAaABlACAAYwBvAHIAcgBlAHMAcABvAG4AZABpAG4AZwAgAEMAbwBwAHkAcgBpAGcAaAB0ACAASABvAGwAZABlAHIALgAgAFQAaABpAHMAIAByAGUAcwB0AHIAaQBjAHQAaQBvAG4AIABvAG4AbAB5ACAAYQBwAHAAbABpAGUAcwAgAHQAbwAgAHQAaABlACAAcAByAGkAbQBhAHIAeQAgAGYAbwBuAHQAIABuAGEAbQBlACAAYQBzAA0ACgBwAHIAZQBzAGUAbgB0AGUAZAAgAHQAbwAgAHQAaABlACAAdQBzAGUAcgBzAC4ADQAKAA0ACgA0ACkAIABUAGgAZQAgAG4AYQBtAGUAKABzACkAIABvAGYAIAB0AGgAZQAgAEMAbwBwAHkAcgBpAGcAaAB0ACAASABvAGwAZABlAHIAKABzACkAIABvAHIAIAB0AGgAZQAgAEEAdQB0AGgAbwByACgAcwApACAAbwBmACAAdABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACAAcwBoAGEAbABsACAAbgBvAHQAIABiAGUAIAB1AHMAZQBkACAAdABvACAAcAByAG8AbQBvAHQAZQAsACAAZQBuAGQAbwByAHMAZQAgAG8AcgAgAGEAZAB2AGUAcgB0AGkAcwBlACAAYQBuAHkAIABNAG8AZABpAGYAaQBlAGQAIABWAGUAcgBzAGkAbwBuACwAIABlAHgAYwBlAHAAdAAgAHQAbwAgAGEAYwBrAG4AbwB3AGwAZQBkAGcAZQAgAHQAaABlACAAYwBvAG4AdAByAGkAYgB1AHQAaQBvAG4AKABzACkAIABvAGYAIAB0AGgAZQAgAEMAbwBwAHkAcgBpAGcAaAB0ACAASABvAGwAZABlAHIAKABzACkAIABhAG4AZAAgAHQAaABlACAAQQB1AHQAaABvAHIAKABzACkAIABvAHIAIAB3AGkAdABoACAAdABoAGUAaQByACAAZQB4AHAAbABpAGMAaQB0ACAAdwByAGkAdAB0AGUAbgANAAoAcABlAHIAbQBpAHMAcwBpAG8AbgAuAA0ACgANAAoANQApACAAVABoAGUAIABGAG8AbgB0ACAAUwBvAGYAdAB3AGEAcgBlACwAIABtAG8AZABpAGYAaQBlAGQAIABvAHIAIAB1AG4AbQBvAGQAaQBmAGkAZQBkACwAIABpAG4AIABwAGEAcgB0ACAAbwByACAAaQBuACAAdwBoAG8AbABlACwAIABtAHUAcwB0ACAAYgBlACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAZQBuAHQAaQByAGUAbAB5ACAAdQBuAGQAZQByACAAdABoAGkAcwAgAGwAaQBjAGUAbgBzAGUALAAgAGEAbgBkACAAbQB1AHMAdAAgAG4AbwB0ACAAYgBlACAAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAdQBuAGQAZQByACAAYQBuAHkAIABvAHQAaABlAHIAIABsAGkAYwBlAG4AcwBlAC4AIABUAGgAZQAgAHIAZQBxAHUAaQByAGUAbQBlAG4AdAAgAGYAbwByACAAZgBvAG4AdABzACAAdABvACAAcgBlAG0AYQBpAG4AIAB1AG4AZABlAHIAIAB0AGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGQAbwBlAHMAIABuAG8AdAAgAGEAcABwAGwAeQAgAHQAbwAgAGEAbgB5ACAAZABvAGMAdQBtAGUAbgB0ACAAYwByAGUAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAHQAaABlACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAuAA0ACgANAAoAVABFAFIATQBJAE4AQQBUAEkATwBOAA0ACgBUAGgAaQBzACAAbABpAGMAZQBuAHMAZQAgAGIAZQBjAG8AbQBlAHMAIABuAHUAbABsACAAYQBuAGQAIAB2AG8AaQBkACAAaQBmACAAYQBuAHkAIABvAGYAIAB0AGgAZQAgAGEAYgBvAHYAZQAgAGMAbwBuAGQAaQB0AGkAbwBuAHMAIABhAHIAZQAgAG4AbwB0ACAAbQBlAHQALgANAAoADQAKAEQASQBTAEMATABBAEkATQBFAFIADQAKAFQASABFACAARgBPAE4AVAAgAFMATwBGAFQAVwBBAFIARQAgAEkAUwAgAFAAUgBPAFYASQBEAEUARAAgACIAQQBTACAASQBTACIALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAFkAIABPAEYAIABBAE4AWQAgAEsASQBOAEQALAAgAEUAWABQAFIARQBTAFMAIABPAFIAIABJAE0AUABMAEkARQBEACwAIABJAE4AQwBMAFUARABJAE4ARwAgAEIAVQBUACAATgBPAFQAIABMAEkATQBJAFQARQBEACAAVABPACAAQQBOAFkAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBGACAATQBFAFIAQwBIAEEATgBUAEEAQgBJAEwASQBUAFkALAAgAEYASQBUAE4ARQBTAFMAIABGAE8AUgAgAEEAIABQAEEAUgBUAEkAQwBVAEwAQQBSACAAUABVAFIAUABPAFMARQAgAEEATgBEACAATgBPAE4ASQBOAEYAUgBJAE4ARwBFAE0ARQBOAFQAIABPAEYAIABDAE8AUABZAFIASQBHAEgAVAAsACAAUABBAFQARQBOAFQALAAgAFQAUgBBAEQARQBNAEEAUgBLACwAIABPAFIAIABPAFQASABFAFIAIABSAEkARwBIAFQALgAgAEkATgAgAE4ATwAgAEUAVgBFAE4AVAAgAFMASABBAEwATAAgAFQASABFAA0ACgBDAE8AUABZAFIASQBHAEgAVAAgAEgATwBMAEQARQBSACAAQgBFACAATABJAEEAQgBMAEUAIABGAE8AUgAgAEEATgBZACAAQwBMAEEASQBNACwAIABEAEEATQBBAEcARQBTACAATwBSACAATwBUAEgARQBSACAATABJAEEAQgBJAEwASQBUAFkALAAgAEkATgBDAEwAVQBEAEkATgBHACAAQQBOAFkAIABHAEUATgBFAFIAQQBMACwAIABTAFAARQBDAEkAQQBMACwAIABJAE4ARABJAFIARQBDAFQALAAgAEkATgBDAEkARABFAE4AVABBAEwALAAgAE8AUgAgAEMATwBOAFMARQBRAFUARQBOAFQASQBBAEwAIABEAEEATQBBAEcARQBTACwAIABXAEgARQBUAEgARQBSACAASQBOACAAQQBOACAAQQBDAFQASQBPAE4AIABPAEYAIABDAE8ATgBUAFIAQQBDAFQALAAgAFQATwBSAFQAIABPAFIAIABPAFQASABFAFIAVwBJAFMARQAsACAAQQBSAEkAUwBJAE4ARwAgAEYAUgBPAE0ALAAgAE8AVQBUACAATwBGACAAVABIAEUAIABVAFMARQAgAE8AUgAgAEkATgBBAEIASQBMAEkAVABZACAAVABPACAAVQBTAEUAIABUAEgARQAgAEYATwBOAFQAIABTAE8ARgBUAFcAQQBSAEUAIABPAFIAIABGAFIATwBNACAATwBUAEgARQBSACAARABFAEEATABJAE4ARwBTACAASQBOACAAVABIAEUAIABGAE8ATgBUACAAUwBPAEYAVABXAEEAUgBFAC4AIABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAAAAgAAAAAAAP+zADMAAAAAAAAAAAAAAAAAAAAAAAAAAAFpAAABAgACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQCsAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQMAigEEAIMAkwDyAPMAjQCXAIgBBQDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugEGAQcBCAEJAQoBCwD9AP4BDAENAQ4BDwD/AQABEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwD4APkBIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwDXATABMQEyATMBNAE1ATYBNwE4ATkBOgE7AOIA4wE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIALAAsQFJAUoBSwFMAU0BTgFPAVABUQFSAPsA/ADkAOUBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAC7AWkBagFrAWwA5gDnAKYBbQFuAW8BcAFxAXIA2ADhANsA3ADdAOAA2QDfAXMBdAF1AXYBdwF4AXkBegCyALMAtgC3AMQAtAC1AMUAggDCAIcAqwC+AL8AvAF7AIwA7wF8AX0BfgDAAMEFLm51bGwHaHlwaGVuXwZtYWNyb24OcGVyaW9kY2VudGVyZWQHQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmUHQW9nb25lawdhb2dvbmVrC0NjaXJjdW1mbGV4C2NjaXJjdW1mbGV4CkNkb3RhY2NlbnQKY2RvdGFjY2VudAZEY2Fyb24GZGNhcm9uBkRjcm9hdAZkY3JvYXQHRW1hY3JvbgdlbWFjcm9uBkVicmV2ZQZlYnJldmUKRWRvdGFjY2VudAplZG90YWNjZW50B0VvZ29uZWsHZW9nb25lawZFY2Fyb24GZWNhcm9uC0djaXJjdW1mbGV4C2djaXJjdW1mbGV4Ckdkb3RhY2NlbnQKZ2RvdGFjY2VudAxHY29tbWFhY2NlbnQMZ2NvbW1hYWNjZW50C0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIEaGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUHSW9nb25lawdpb2dvbmVrCklkb3RhY2NlbnQLSmNpcmN1bWZsZXgLamNpcmN1bWZsZXgMS2NvbW1hYWNjZW50DGtjb21tYWFjY2VudAZMYWN1dGUGbGFjdXRlDExjb21tYWFjY2VudAxsY29tbWFhY2NlbnQGTGNhcm9uBmxjYXJvbgRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQxOY29tbWFhY2NlbnQMbmNvbW1hYWNjZW50Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUHT21hY3JvbgdvbWFjcm9uBk9icmV2ZQZvYnJldmUNT2h1bmdhcnVtbGF1dA1vaHVuZ2FydW1sYXV0BlJhY3V0ZQZyYWN1dGUMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudAZSY2Fyb24GcmNhcm9uBlNhY3V0ZQZzYWN1dGULU2NpcmN1bWZsZXgLc2NpcmN1bWZsZXgMVGNvbW1hYWNjZW50DHRjb21tYWFjY2VudAZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQHQUVhY3V0ZQdhZWFjdXRlC09zbGFzaGFjdXRlC29zbGFzaGFjdXRlDFNjb21tYWFjY2VudAxzY29tbWFhY2NlbnQGV2dyYXZlBndncmF2ZQZXYWN1dGUGd2FjdXRlCVdkaWVyZXNpcwl3ZGllcmVzaXMGWWdyYXZlBnlncmF2ZQRFdXJvA2EzNQVoZWFydAtjb21tYWFjY2VudAAAAAAB//8AAw=="&#xD;&#xD;/***/ }),&#xD;/* 14 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "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Oi8vc2NyaXB0cy5zaWwub3JnL09GTABDAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEAMgAgAGIAeQAgAEYAbwBuAHQAIABEAGkAbgBlAHIALAAgAEkAbgBjACAARABCAEEAIABTAGkAZABlAHMAaABvAHcAIAAoAGQAaQBuAGUAcgBAAGYAbwBuAHQAZABpAG4AZQByAC4AYwBvAG0AKQAgAHcAaQB0AGgAIABSAGUAcwBlAHYAZQBkACAARgBvAG4AdAAgAE4AYQBtAGUAIAAiAE0AeQBzAHQAZQByAHkAIABRAHUAZQBzAHQAIgBNAHkAcwB0AGUAcgB5ACAAUQB1AGUAcwB0AFIAZQBnAHUAbABhAHIARgBvAG4AdABEAGkAbgBlAHIALABJAG4AYwBEAEIAQQBTAGkAZABlAHMAaABvAHcAOgAgAE0AeQBzAHQAZQByAHkAIABRAHUAZQBzAHQAOgAgADIAMAAxADIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMABNAHkAcwB0AGUAcgB5AFEAdQBlAHMAdABNAHkAcwB0AGUAcgB5ACAAUQB1AGUAcwB0ACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARgBvAG4AdAAgAEQAaQBuAGUAcgAsACAASQBuAGMAIABEAEIAQQAgAFMAaQBkAGUAcwBoAG8AdwAuAEYAbwBuAHQAIABEAGkAbgBlAHIALAAgAEkAbgBjACAARABCAEEAIABTAGkAZABlAHMAaABvAHcAUwBxAHUAaQBkAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBmAG8AbgB0AGIAcgBvAHMALgBjAG8AbQAvAHMAaQBkAGUAcwBoAG8AdwAuAHAAaABwAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBzAHEAdQBpAGQAYQByAHQALgBjAG8AbQBUAGgAaQBzACAARgBvAG4AdAAgAFMAbwBmAHQAdwBhAHIAZQAgAGkAcwAgAGwAaQBjAGUAbgBzAGUAZAAgAHUAbgBkAGUAcgAgAHQAaABlACAAUwBJAEwAIABPAHAAZQBuACAARgBvAG4AdAAgAEwAaQBjAGUAbgBzAGUALAANAFYAZQByAHMAaQBvAG4AIAAxAC4AMQAuACAAVABoAGkAcwAgAGwAaQBjAGUAbgBzAGUAIABpAHMAIABhAHYAYQBpAGwAYQBiAGwAZQAgAHcAaQB0AGgAIABhACAARgBBAFEAIABhAHQAOgANAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBPAEYATABoAHQAdABwADoALwAvAHMAYwByAGkAcAB0AHMALgBzAGkAbAAuAG8AcgBnAC8ATwBGAEwAAAACAAAAAAAA/7MAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAOUAAADpAOoA4gDjAOQA5QDrAOwA7QDuAOYA5wD0APUA8QD2APMA8gDoAO8A8AADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEBAgBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAIEAgwCEAIUAhgCHAIgAiQCKAIsAjQCOAJAAkQCTAJYAlwCdAJ4AoAChAKIAowCkAKkAqgCrAQMArQCuAK8AsACxALIAswC0ALUAtgC3ALgAugC7ALwBBAC+AL8AwADBAQUAxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADRANMA1ADVANYA1wDYANkBBgDbANwA3QDeAN8A4ADhAL0BBwNERUwHdW5pMDBBMARFdXJvDnBlcmlvZGNlbnRlcmVkBm1hY3JvbglzZnRoeXBoZW4AAAAAAQAB//8ADw=="&#xD;&#xD;/***/ }),&#xD;/* 15 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "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DQkEDAYMGxcSBAsKAwERNyAECw0UFRcPBA0FGTErIgsIFxkXBxAYFhkRGioBWQQPEA8EAhgGBQQDBggBAgE3NAsLBAkSIxcSIg4UOQ4fPUleQAYICAoJP1ZCNx8HIS02HQ0SEBcuFwgOBgEOFRvhBC8pAQIJFBQCDBEWChMSBCo0AQgKCAEICQUKFhwkGQ8VFRcPAg0NDAEOCwAAAAAAAQAALDYAAQdcGAAAChQoADYAN//sADYASP/sADYASf/NADYASv/hADYAS//XADYATv/hADYAV//sADYAaP/sADYAaf/NADYAav/hADYAa//XADYAbv/hADYAkP/hADYAkf/hADYAkv/hADYAk//hADYAvf/hADYAvv/hADYA1f/hADYA1v/hADYA1//hADcAPv/NADcARf/sADcASP/hADcASv/sADcAS//XADcATP/2ADcATv/XADcAZf/sADcAaP/hADcAav/sADcAa//XADcAbP/2ADcAbv/XADcAhv/NADcAh//NADcAiP/NADcAif/NADcAkP/sADcAkf/sADcAkv/sADcAk//sADcAvf/XADcAvv/XADcAzv/NADcAz//NADcA0P/NADcA0f/NADcA1f/sADcA1v/sADcA1//sADcA2P/NADgAOP/sADgAOv/2ADgAPP/sADgAPv/hADgARf/hADgASP/2ADgASv/hADgAS//2ADgATP/2ADgAWP/sADgAWv/2ADgAXP/sADgAZf/hADgAaP/2ADgAav/hADgAa//2ADgAbP/2ADgAdv/sADgAd//2ADgAgf/sADgAgv/2ADgAg//2ADgAhP/2ADgAhf/2ADgAhv/hADgAh//hADgAiP/hADgAif/hADgAkP/hADgAkf/hADgAkv/hADgAk//hADgAyv/2ADgAzP/2ADgAzf/2ADgAzv/hADgAz//hADgA0P/hADgA0f/hADgA1f/hADgA1v/hADgA1//hADgA2P/hADkAN//sADkAOf/2ADkAOv/2ADkAPv+kADkAP/+uADkASP/2ADkASf+kADkASv/2ADkAS//hADkATf/hADkATv/XADkAV//sADkAWf/2ADkAWv/2ADkAXv+kADkAX/+uADkAaP/2ADkAaf+kADkAav/2ADkAa//hADkAbf/hADkAbv/XADkAd//2ADkAgv/2ADkAg//2ADkAhP/2ADkAhf/2ADkAhv+kADkAh/+kADkAiP+kADkAif+kADkAkP/2ADkAkf/2ADkAkv/2ADkAk//2ADkAvf/XADkAvv/XADkAyv/2ADkAzP/2ADkAzf/2ADkAzv+kADkAz/+kADkA0P+kADkA0f+kADkA1f/2ADkA1v/2ADkA1//2ADkA2P+kADoAOP/2ADoARP/2ADoAR//2ADoASv/2ADoAWP/2ADoAZP/2ADoAZ//2ADoAav/2ADoAdv/2ADoAef/2ADoAgf/2ADoAi//2ADoAjP/2ADoAjf/2ADoAjv/2ADoAj//2ADoAkP/2ADoAkf/2ADoAkv/2ADoAk//2ADoAs//2ADoAtP/2ADoAtf/2ADoA0v/2ADoA0//2ADoA1P/2ADoA1f/2ADoA1v/2ADoA1//2ADsANv/2ADsAPP/sADsAVv/2ADsAXP/sADsAZP/sADsAdP/2ADsAdf/2ADsAef/sADsAe//2ADsAfP/2ADsAff/2ADsAfv/2ADsAf//2ADsAgP/2ADsAi//sADsAjP/sADsAjf/sADsAjv/sADsAj//sADsAn//2ADsApv/2ADsAsf/2ADsAsv/2ADsAs//sADsAtP/sADsAtf/sADsAyf/2ADsAy//2ADsA0v/sADsA0//sADsA1P/sADwAN//sADwAO//XADwAPv/NADwAP//sADwASP/hADwASf/NADwAS//XADwATv/sADwAV//sADwAW//XADwAXv/NADwAX//sADwAaP/hADwAaf/NADwAa//XADwAbv/sADwAhv/NADwAh//NADwAiP/NADwAif/NADwAvf/sADwAvv/sADwAzv/NADwAz//NADwA0P/NADwA0f/NADwA2P/NAD4ARP/sAD4AZP/sAD4Aef/sAD4Ai//sAD4AjP/sAD4Ajf/sAD4Ajv/sAD4Aj//sAD4As//sAD4AtP/sAD4Atf/sAD4A0v/sAD4A0//sAD4A1P/sAD8ARv/sAD8AZv/sAEAARP/sAEAAZP/sAEAAef/sAEAAi//sAEAAjP/sAEAAjf/sAEAAjv/sAEAAj//sAEAAs//sAEAAtP/sAEAAtf/sAEAA0v/sAEAA0//sAEAA1P/sAEEAN//sAEEAOP/sAEEAPP/sAEEARf/sAEEASP/hAEEASf+uAEEASv/XAEEAS//NAEEATv/hAEEAV//sAEEAWP/sAEEAXP/sAEEAZf/sAEEAaP/hAEEAaf+uAEEAav/XAEEAa//NAEEAbv/hAEEAdv/sAEEAgf/sAEEAkP/XAEEAkf/XAEEAkv/XAEEAk//XAEEAvf/hAEEAvv/hAEEA1f/XAEEA1v/XAEEA1//XAEIAPv/sAEIAhv/sAEIAh//sAEIAiP/sAEIAif/sAEIAzv/sAEIAz//sAEIA0P/sAEIA0f/sAEIA2P/sAEMAPv/sAEMAhv/sAEMAh//sAEMAiP/sAEMAif/sAEMAzv/sAEMAz//sAEMA0P/sAEMA0f/sAEMA2P/sAEQAN//sAEQAPv/XAEQARf/sAEQASP/sAEQASf/NAEQASv/sAEQAS//hAEQATf/sAEQATv/XAEQAT//2AEQAV//sAEQAXv/XAEQAZf/sAEQAaP/sAEQAaf/NAEQAav/sAEQAa//hAEQAbf/sAEQAbv/XAEQAb//2AEQAhv/XAEQAh//XAEQAiP/XAEQAif/XAEQAkP/sAEQAkf/sAEQAkv/sAEQAk//sAEQAvf/XAEQAvv/XAEQAzv/XAEQAz//XAEQA0P/XAEQA0f/XAEQA1f/sAEQA1v/sAEQA1//sAEQA2P/XAEUAIf/XAEUAI//XAEUANv/sAEUAPv/sAEUAT//hAEUAVv/sAEUAZP/sAEUAb//hAEUAdP/sAEUAdf/sAEUAef/sAEUAe//sAEUAfP/sAEUAff/sAEUAfv/sAEUAf//sAEUAgP/sAEUAhv/sAEUAh//sAEUAiP/sAEUAif/sAEUAi//sAEUAjP/sAEUAjf/sAEUAjv/sAEUAj//sAEUAn//sAEUApv/sAEUAsf/sAEUAsv/sAEUAs//sAEUAtP/sAEUAtf/sAEUAyf/sAEUAy//sAEUAzv/sAEUAz//sAEUA0P/sAEUA0f/sAEUA0v/sAEUA0//sAEUA1P/sAEUA2P/sAEYAN//2AEYAPv/sAEYASf/hAEYASv/2AEYATv/sAEYAV//2AEYAaf/hAEYAav/2AEYAbv/sAEYAhv/sAEYAh//sAEYAiP/sAEYAif/sAEYAkP/2AEYAkf/2AEYAkv/2AEYAk//2AEYAvf/sAEYAvv/sAEYAzv/sAEYAz//sAEYA0P/sAEYA0f/sAEYA1f/2AEYA1v/2AEYA1//2AEYA2P/sAEcAPv/hAEcASf/hAEcASv/sAEcAS//hAEcATv/sAEcAaf/hAEcAav/sAEcAa//hAEcAbv/sAEcAhv/hAEcAh//hAEcAiP/hAEcAif/hAEcAkP/sAEcAkf/sAEcAkv/sAEcAk//sAEcAvf/sAEcAvv/sAEcAzv/hAEcAz//hAEcA0P/hAEcA0f/hAEcA1f/sAEcA1v/sAEcA1//sAEcA2P/hAEgAQv/2AEgARP/sAEgARf/2AEgARv/sAEgAYv/2AEgAZP/sAEgAZf/2AEgAZv/sAEgAef/sAEgAi//sAEgAjP/sAEgAjf/sAEgAjv/sAEgAj//sAEgAs//sAEgAtP/sAEgAtf/sAEgA0v/sAEgA0//sAEgA1P/sAEkANv/NAEkAPP/hAEkARP/hAEkARv/XAEkAVv/NAEkAWP/hAEkAXP/hAEkAZP/hAEkAZv/XAEkAdP/NAEkAdf/NAEkAdv/hAEkAef/hAEkAe//NAEkAfP/NAEkAff/NAEkAfv/NAEkAf//NAEkAgP/NAEkAgf/hAEkAi//hAEkAjP/hAEkAjf/hAEkAjv/hAEkAj//hAEkAn//NAEkApv/NAEkAsf/NAEkAsv/NAEkAs//hAEkAtP/hAEkAtf/hAEkAyf/NAEkAy//NAEkA0v/hAEkA0//hAEkA1P/hAEoANv/hAEoAPv/XAEoAVv/hAEoAdP/hAEoAdf/hAEoAe//hAEoAfP/hAEoAff/hAEoAfv/hAEoAf//hAEoAgP/hAEoAhv/XAEoAh//XAEoAiP/XAEoAif/XAEoAn//hAEoApv/hAEoAsf/hAEoAsv/hAEoAyf/hAEoAy//hAEoAzv/XAEoAz//XAEoA0P/XAEoA0f/XAEoA2P/XAEsAIf/XAEsAI//XAEsANv/hAEsAPP/hAEsAQv/sAEsAQ//2AEsARP/hAEsARf/2AEsARv/XAEsAR//2AEsAVv/hAEsAXP/hAEsAYv/sAEsAY//2AEsAZP/hAEsAZf/2AEsAZv/XAEsAZ//2AEsAdP/hAEsAdf/hAEsAeP/2AEsAef/hAEsAe//hAEsAfP/hAEsAff/hAEsAfv/hAEsAf//hAEsAgP/hAEsAiv/2AEsAi//hAEsAjP/hAEsAjf/hAEsAjv/hAEsAj//hAEsAn//hAEsApv/hAEsAsf/hAEsAsv/hAEsAs//hAEsAtP/hAEsAtf/hAEsAyf/hAEsAy//hAEsA0v/hAEsA0//hAEsA1P/hAEwAI//XAEwANv/2AEwAPv/sAEwAVv/2AEwAdP/2AEwAdf/2AEwAe//2AEwAfP/2AEwAff/2AEwAfv/2AEwAf//2AEwAgP/2AEwAhv/sAEwAh//sAEwAiP/sAEwAif/sAEwAn//2AEwApv/2AEwAsf/2AEwAsv/2AEwAyf/2AEwAy//2AEwAzv/sAEwAz//sAEwA0P/sAEwA0f/sAEwA2P/sAE0APP/sAE0APv/2AE0ARP/sAE0AXP/sAE0AZP/sAE0Aef/sAE0Ahv/2AE0Ah//2AE0AiP/2AE0Aif/2AE0Ai//sAE0AjP/sAE0Ajf/sAE0Ajv/sAE0Aj//sAE0As//sAE0AtP/sAE0Atf/sAE0Azv/2AE0Az//2AE0A0P/2AE0A0f/2AE0A0v/sAE0A0//sAE0A1P/sAE0A2P/2AE4AIf/sAE4AI//sAE4ANv/sAE4APP/hAE4ARP/hAE4ARv/hAE4AVv/sAE4AXP/hAE4AZP/hAE4AZv/hAE4AdP/sAE4Adf/sAE4Aef/hAE4Ae//sAE4AfP/sAE4Aff/sAE4Afv/sAE4Af//sAE4AgP/sAE4Ai//hAE4AjP/hAE4Ajf/hAE4Ajv/hAE4Aj//hAE4An//sAE4Apv/sAE4Asf/sAE4Asv/sAE4As//hAE4AtP/hAE4Atf/hAE4Ayf/sAE4Ay//sAE4A0v/hAE4A0//hAE4A1P/hAE8AOP/2AE8APP/sAE8ARv/sAE8AWP/2AE8AXP/sAE8AZv/sAE8Adv/2AE8Agf/2AFYAN//sAFYASP/sAFYASf/NAFYASv/hAFYAS//XAFYATv/hAFYAV//sAFYAaP/sAFYAaf/NAFYAav/hAFYAa//XAFYAbv/hAFYAkP/hAFYAkf/hAFYAkv/hAFYAk//hAFYAvf/hAFYAvv/hAFYA1f/hAFYA1v/hAFYA1//hAFcAPv/NAFcARf/sAFcASP/hAFcASv/sAFcAS//XAFcATP/2AFcATv/XAFcAZf/sAFcAaP/hAFcAav/sAFcAa//XAFcAbP/2AFcAbv/XAFcAhv/NAFcAh//NAFcAiP/NAFcAif/NAFcAkP/sAFcAkf/sAFcAkv/sAFcAk//sAFcAvf/XAFcAvv/XAFcAzv/NAFcAz//NAFcA0P/NAFcA0f/NAFcA1f/sAFcA1v/sAFcA1//sAFcA2P/NAFgAOP/sAFgAOv/2AFgAPP/sAFgAPv/hAFgARf/hAFgASP/2AFgASv/hAFgAS//2AFgATP/2AFgAWP/sAFgAWv/2AFgAXP/sAFgAZf/hAFgAaP/2AFgAav/hAFgAa//2AFgAbP/2AFgAdv/sAFgAd//2AFgAgf/sAFgAgv/2AFgAg//2AFgAhP/2AFgAhf/2AFgAhv/hAFgAh//hAFgAiP/hAFgAif/hAFgAkP/hAFgAkf/hAFgAkv/hAFgAk//hAFgAyv/2AFgAzP/2AFgAzf/2AFgAzv/hAFgAz//hAFgA0P/hAFgA0f/hAFgA1f/hAFgA1v/hAFgA1//hAFgA2P/hAFkAN//sAFkAOf/2AFkAOv/2AFkAPv+kAFkAP/+uAFkASP/2AFkASf+kAFkASv/2AFkAS//hAFkATf/hAFkATv/XAFkAV//sAFkAWf/2AFkAWv/2AFkAX/+uAFkAaP/2AFkAaf+kAFkAav/2AFkAa//hAFkAbf/hAFkAbv/XAFkAd//2AFkAgv/2AFkAg//2AFkAhP/2AFkAhf/2AFkAhv+kAFkAh/+kAFkAiP+kAFkAif+kAFkAkP/2AFkAkf/2AFkAkv/2AFkAk//2AFkAvf/XAFkAvv/XAFkAyv/2AFkAzP/2AFkAzf/2AFkAzv+kAFkAz/+kAFkA0P+kAFkA0f+kAFkA1f/2AFkA1v/2AFkA1//2AFkA2P+kAFoAOP/2AFoARP/2AFoAR//2AFoASv/2AFoAWP/2AFoAZP/2AFoAZ//2AFoAav/2AFoAdv/2AFoAef/2AFoAgf/2AFoAi//2AFoAjP/2AFoAjf/2AFoAjv/2AFoAj//2AFoAkP/2AFoAkf/2AFoAkv/2AFoAk//2AFoAs//2AFoAtP/2AFoAtf/2AFoA0v/2AFoA0//2AFoA1P/2AFoA1f/2AFoA1v/2AFoA1//2AFsANv/2AFsAPP/sAFsAVv/2AFsAXP/sAFsAdP/2AFsAdf/2AFsAe//2AFsAfP/2AFsAff/2AFsAfv/2AFsAf//2AFsAgP/2AFsAn//2AFsApv/2AFsAsf/2AFsAsv/2AFsAyf/2AFsAy//2AFwAN//sAFwAO//XAFwAPv/NAFwAP//sAFwASP/hAFwASf/NAFwAS//XAFwATv/sAFwAV//sAFwAW//XAFwAXv/NAFwAX//sAFwAaP/hAFwAaf/NAFwAa//XAFwAbv/sAFwAhv/NAFwAh//NAFwAiP/NAFwAif/NAFwAvf/sAFwAvv/sAFwAzv/NAFwAz//NAFwA0P/NAFwA0f/NAFwA2P/NAF4ARP/sAF4AZP/sAF4Aef/sAF4Ai//sAF4AjP/sAF4Ajf/sAF4Ajv/sAF4Aj//sAF4As//sAF4AtP/sAF4Atf/sAF4A0v/sAF4A0//sAF4A1P/sAF8ARv/sAF8AZv/sAGAARP/sAGAAZP/sAGAAef/sAGAAi//sAGAAjP/sAGAAjf/sAGAAjv/sAGAAj//sAGAAs//sAGAAtP/sAGAAtf/sAGAA0v/sAGAA0//sAGAA1P/sAGEAN//sAGEAOP/sAGEAPP/sAGEARf/sAGEASP/hAGEASf+uAGEASv/XAGEAS//NAGEATv/hAGEAV//sAGEAWP/sAGEAXP/sAGEAZf/sAGEAaP/hAGEAaf+uAGEAav/XAGEAa//NAGEAbv/hAGEAdv/sAGEAgf/sAGEAkP/XAGEAkf/XAGEAkv/XAGEAk//XAGEAvf/hAGEAvv/hAGEA1f/XAGEA1v/XAGEA1//XAGIAPv/sAGIAhv/sAGIAh//sAGIAiP/sAGIAif/sAGIAzv/sAGIAz//sAGIA0P/sAGIA0f/sAGIA2P/sAGMAPv/sAGMAhv/sAGMAh//sAGMAiP/sAGMAif/sAGMAzv/sAGMAz//sAGMA0P/sAGMA0f/sAGMA2P/sAGQAN//sAGQAPv/XAGQARf/sAGQASP/sAGQASf/NAGQASv/sAGQAS//hAGQATf/sAGQATv/XAGQAT//2AGQAV//sAGQAXv/XAGQAZf/sAGQAaP/sAGQAaf/NAGQAav/sAGQAa//hAGQAbf/sAGQAbv/XAGQAb//2AGQAhv/XAGQAh//XAGQAiP/XAGQAif/XAGQAkP/sAGQAkf/sAGQAkv/sAGQAk//sAGQAvf/XAGQAvv/XAGQAzv/XAGQAz//XAGQA0P/XAGQA0f/XAGQA1f/sAGQA1v/sAGQA1//sAGQA2P/XAGUAIf/XAGUAI//XAGUANv/sAGUAPv/sAGUAT//hAGUAVv/sAGUAb//hAGUAdP/sAGUAdf/sAGUAe//sAGUAfP/sAGUAff/sAGUAfv/sAGUAf//sAGUAgP/sAGUAhv/sAGUAh//sAGUAiP/sAGUAif/sAGUAn//sAGUApv/sAGUAsf/sAGUAsv/sAGUAyf/sAGUAy//sAGUAzv/sAGUAz//sAGUA0P/sAGUA0f/sAGUA2P/sAGYAN//2AGYAPv/sAGYASf/hAGYASv/2AGYATv/sAGYAV//2AGYAaf/hAGYAav/2AGYAbv/sAGYAhv/sAGYAh//sAGYAiP/sAGYAif/sAGYAkP/2AGYAkf/2AGYAkv/2AGYAk//2AGYAvf/sAGYAvv/sAGYAzv/sAGYAz//sAGYA0P/sAGYA0f/sAGYA1f/2AGYA1v/2AGYA1//2AGYA2P/sAGcAPv/hAGcASf/hAGcASv/sAGcAS//hAGcATv/sAGcAaf/hAGcAav/sAGcAa//hAGcAbv/sAGcAhv/hAGcAh//hAGcAiP/hAGcAif/hAGcAkP/sAGcAkf/sAGcAkv/sAGcAk//sAGcAvf/sAGcAvv/sAGcAzv/hAGcAz//hAGcA0P/hAGcA0f/hAGcA1f/sAGcA1v/sAGcA1//sAGcA2P/hAGgAQv/2AGgARP/sAGgARf/2AGgARv/sAGgAYv/2AGgAZP/sAGgAZf/2AGgAZv/sAGgAef/sAGgAi//sAGgAjP/sAGgAjf/sAGgAjv/sAGgAj//sAGgAs//sAGgAtP/sAGgAtf/sAGgA0v/sAGgA0//sAGgA1P/sAGkANv/NAGkAPP/hAGkARP/hAGkARv/XAGkAVv/NAGkAXP/hAGkAZP/hAGkAZv/XAGkAdP/NAGkAdf/NAGkAef/hAGkAe//NAGkAfP/NAGkAff/NAGkAfv/NAGkAf//NAGkAgP/NAGkAi//hAGkAjP/hAGkAjf/hAGkAjv/hAGkAj//hAGkAn//NAGkApv/NAGkAsf/NAGkAsv/NAGkAs//hAGkAtP/hAGkAtf/hAGkAyf/NAGkAy//NAGkA0v/hAGkA0//hAGkA1P/hAGoANv/hAGoAPv/XAGoAVv/hAGoAdP/hAGoAdf/hAGoAe//hAGoAfP/hAGoAff/hAGoAfv/hAGoAf//hAGoAgP/hAGoAhv/XAGoAh//XAGoAiP/XAGoAif/XAGoAn//hAGoApv/hAGoAsf/hAGoAsv/hAGoAyf/hAGoAy//hAGoAzv/XAGoAz//XAGoA0P/XAGoA0f/XAGoA2P/XAGsAIf/XAGsAI//XAGsANv/hAGsAPP/hAGsAQv/sAGsAQ//2AGsARP/hAGsARf/2AGsARv/XAGsAR//2AGsAVv/hAGsAXP/hAGsAYv/sAGsAY//2AGsAZP/hAGsAZf/2AGsAZv/XAGsAZ//2AGsAdP/hAGsAdf/hAGsAeP/2AGsAef/hAGsAe//hAGsAfP/hAGsAff/hAGsAfv/hAGsAf//hAGsAgP/hAGsAiv/2AGsAi//hAGsAjP/hAGsAjf/hAGsAjv/hAGsAj//hAGsAn//hAGsApv/hAGsAsf/hAGsAsv/hAGsAs//hAGsAtP/hAGsAtf/hAGsAyf/hAGsAy//hAGsA0v/hAGsA0//hAGsA1P/hAGwAI//XAGwANv/2AGwAPv/sAGwAVv/2AGwAdP/2AGwAdf/2AGwAe//2AGwAfP/2AGwAff/2AGwAfv/2AGwAf//2AGwAgP/2AGwAhv/sAGwAh//sAGwAiP/sAGwAif/sAGwAn//2AGwApv/2AGwAsf/2AGwAsv/2AGwAyf/2AGwAy//2AGwAzv/sAGwAz//sAGwA0P/sAGwA0f/sAGwA2P/sAG0APP/sAG0APv/2AG0ARP/sAG0AXP/sAG0AZP/sAG0Aef/sAG0Ahv/2AG0Ah//2AG0AiP/2AG0Aif/2AG0Ai//sAG0AjP/sAG0Ajf/sAG0Ajv/sAG0Aj//sAG0As//sAG0AtP/sAG0Atf/sAG0Azv/2AG0Az//2AG0A0P/2AG0A0f/2AG0A0v/sAG0A0//sAG0A1P/sAG0A2P/2AG4AIf/sAG4AI//sAG4ANv/sAG4APP/hAG4ARP/hAG4ARv/hAG4AVv/sAG4AXP/hAG4AZP/hAG4AZv/hAG4AdP/sAG4Adf/sAG4Aef/hAG4Ae//sAG4AfP/sAG4Aff/sAG4Afv/sAG4Af//sAG4AgP/sAG4Ai//hAG4AjP/hAG4Ajf/hAG4Ajv/hAG4Aj//hAG4An//sAG4Apv/sAG4Asf/sAG4Asv/sAG4As//hAG4AtP/hAG4Atf/hAG4Ayf/sAG4Ay//sAG4A0v/hAG4A0//hAG4A1P/hAG8AOP/2AG8APP/sAG8ARv/sAG8AWP/2AG8AXP/sAG8AZv/sAG8Adv/2AG8Agf/2AHQAN//sAHQASP/sAHQASf/NAHQASv/hAHQAS//XAHQATv/hAHQAV//sAHQAaP/sAHQAaf/NAHQAav/hAHQAa//XAHQAbv/hAHUAN//sAHUASP/sAHUASf/NAHUASv/hAHUAS//XAHUATv/hAHUAV//sAHUAaP/sAHUAaf/NAHUAav/hAHUAa//XAHUAbv/hAHYAOP/sAHYAOv/2AHYAPP/sAHYAPv/hAHYARf/hAHYASP/2AHYASv/hAHYAS//2AHYATP/2AHYAWP/sAHYAWv/2AHYAXP/sAHYAXv/hAHYAZf/hAHYAaP/2AHYAav/hAHYAa//2AHYAbP/2AHcAOP/2AHcARP/2AHcAR//2AHcASv/2AHcAWP/2AHcAZP/2AHcAZ//2AHcAav/2AHgAPv/sAHgAXv/sAHkAN//sAHkAPv/XAHkARf/sAHkASP/sAHkASf/NAHkASv/sAHkAS//hAHkATf/sAHkATv/XAHkAT//2AHkAV//sAHkAXv/XAHkAZf/sAHkAaP/sAHkAaf/NAHkAav/sAHkAa//hAHkAbf/sAHkAbv/XAHkAb//2AHsAN//sAHsASP/sAHsASf/NAHsASv/hAHsAS//XAHsATv/hAHsAV//sAHsAaP/sAHsAaf/NAHsAav/hAHsAa//XAHsAbv/hAHwAN//sAHwASP/sAHwASf/NAHwASv/hAHwAS//XAHwATv/hAHwAV//sAHwAaP/sAHwAaf/NAHwAav/hAHwAa//XAHwAbv/hAH0AN//sAH0ASP/sAH0ASf/NAH0ASv/hAH0AS//XAH0ATv/hAH0AV//sAH0AaP/sAH0Aaf/NAH0Aav/hAH0Aa//XAH0Abv/hAH4AN//sAH4ASP/sAH4ASf/NAH4ASv/hAH4AS//XAH4ATv/hAH4AV//sAH4AaP/sAH4Aaf/NAH4Aav/hAH4Aa//XAH4Abv/hAH8AN//sAH8ASP/sAH8ASf/NAH8ASv/hAH8AS//XAH8ATv/hAH8AV//sAH8AaP/sAH8Aaf/NAH8Aav/hAH8Aa//XAH8Abv/hAIAAN//sAIAASP/sAIAASf/NAIAASv/hAIAAS//XAIAATv/hAIAAV//sAIAAaP/sAIAAaf/NAIAAav/hAIAAa//XAIAAbv/hAIEAOP/sAIEAOv/2AIEAPP/sAIEAPv/hAIEARf/hAIEASP/2AIEASv/hAIEAS//2AIEATP/2AIEAWP/sAIEAWv/2AIEAXP/sAIEAXv/hAIEAZf/hAIEAaP/2AIEAav/hAIEAa//2AIEAbP/2AIIAOP/2AIIARP/2AIIAR//2AIIASv/2AIIAWP/2AIIAZP/2AIIAZ//2AIIAav/2AIMAOP/2AIMARP/2AIMAR//2AIMASv/2AIMAWP/2AIMAZP/2AIMAZ//2AIMAav/2AIQAOP/2AIQARP/2AIQAR//2AIQASv/2AIQAWP/2AIQAZP/2AIQAZ//2AIQAav/2AIUAOP/2AIUARP/2AIUAR//2AIUASv/2AIUAWP/2AIUAZP/2AIUAZ//2AIUAav/2AIYARP/sAIYAZP/sAIcARP/sAIcAZP/sAIgARP/sAIgAZP/sAIkARP/sAIkAZP/sAIoAPv/sAIoAXv/sAIsAN//sAIsAPv/XAIsARf/sAIsASP/sAIsASf/NAIsASv/sAIsAS//hAIsATf/sAIsATv/XAIsAT//2AIsAV//sAIsAXv/XAIsAZf/sAIsAaP/sAIsAaf/NAIsAav/sAIsAa//hAIsAbf/sAIsAbv/XAIsAb//2AIwAN//sAIwAPv/XAIwARf/sAIwASP/sAIwASf/NAIwASv/sAIwAS//hAIwATf/sAIwATv/XAIwAT//2AIwAV//sAIwAXv/XAIwAZf/sAIwAaP/sAIwAaf/NAIwAav/sAIwAa//hAIwAbf/sAIwAbv/XAIwAb//2AI0AN//sAI0APv/XAI0ARf/sAI0ASP/sAI0ASf/NAI0ASv/sAI0AS//hAI0ATf/sAI0ATv/XAI0AT//2AI0AV//sAI0AXv/XAI0AZf/sAI0AaP/sAI0Aaf/NAI0Aav/sAI0Aa//hAI0Abf/sAI0Abv/XAI0Ab//2AI4AN//sAI4APv/XAI4ARf/sAI4ASP/sAI4ASf/NAI4ASv/sAI4AS//hAI4ATf/sAI4ATv/XAI4AT//2AI4AV//sAI4AXv/XAI4AZf/sAI4AaP/sAI4Aaf/NAI4Aav/sAI4Aa//hAI4Abf/sAI4Abv/XAI4Ab//2AI8AN//sAI8APv/XAI8ARf/sAI8ASP/sAI8ASf/NAI8ASv/sAI8AS//hAI8ATf/sAI8ATv/XAI8AT//2AI8AV//sAI8AXv/XAI8AZf/sAI8AaP/sAI8Aaf/NAI8Aav/sAI8Aa//hAI8Abf/sAI8Abv/XAI8Ab//2AJAANv/hAJAAPv/XAJAAVv/hAJAAXv/XAJEANv/hAJEAPv/XAJEAVv/hAJEAXv/XAJIANv/hAJIAPv/XAJIAVv/hAJIAXv/XAJMANv/hAJMAPv/XAJMAVv/hAJMAXv/XAJ8AN//sAJ8ASP/sAJ8ASf/NAJ8ASv/hAJ8AS//XAJ8ATv/hAJ8AV//sAJ8AaP/sAJ8Aaf/NAJ8Aav/hAJ8Aa//XAJ8Abv/hAKYAN//sAKYASP/sAKYASf/NAKYASv/hAKYAS//XAKYATv/hAKYAV//sAKYAaP/sAKYAaf/NAKYAav/hAKYAa//XAKYAbv/hALEAN//sALEASP/sALEASf/NALEASv/hALEAS//XALEATv/hALEAV//sALEAaP/sALEAaf/NALEAav/hALEAa//XALEAbv/hALIAN//sALIASP/sALIASf/NALIASv/hALIAS//XALIATv/hALIAV//sALIAaP/sALIAaf/NALIAav/hALIAa//XALIAbv/hALMAN//sALMAPv/XALMARf/sALMASP/sALMASf/NALMASv/sALMAS//hALMATf/sALMATv/XALMAT//2ALMAV//sALMAXv/XALMAZf/sALMAaP/sALMAaf/NALMAav/sALMAa//hALMAbf/sALMAbv/XALMAb//2ALQAN//sALQAPv/XALQARf/sALQASP/sALQASf/NALQASv/sALQAS//hALQATf/sALQATv/XALQAT//2ALQAV//sALQAXv/XALQAZf/sALQAaP/sALQAaf/NALQAav/sALQAa//hALQAbf/sALQAbv/XALQAb//2ALUAN//sALUAPv/XALUARf/sALUASP/sALUASf/NALUASv/sALUAS//hALUATf/sALUATv/XALUAT//2ALUAV//sALUAXv/XALUAZf/sALUAaP/sALUAaf/NALUAav/sALUAa//hALUAbf/sALUAbv/XALUAb//2AL0ANv/sAL0APP/hAL0ARP/hAL0ARv/hAL0AVv/sAL0AXP/hAL0AZP/hAL0AZv/hAL4ANv/sAL4APP/hAL4ARP/hAL4ARv/hAL4AVv/sAL4AXP/hAL4AZP/hAL4AZv/hAMkAN//sAMkASP/sAMkASf/NAMkASv/hAMkAS//XAMkATv/hAMkAV//sAMkAaP/sAMkAaf/NAMkAav/hAMkAa//XAMkAbv/hAMoAOP/2AMoARP/2AMoAR//2AMoASv/2AMoAWP/2AMoAZP/2AMoAZ//2AMoAav/2AMsAN//sAMsASP/sAMsASf/NAMsASv/hAMsAS//XAMsATv/hAMsAV//sAMsAaP/sAMsAaf/NAMsAav/hAMsAa//XAMsAbv/hAMwAOP/2AMwARP/2AMwAR//2AMwASv/2AMwAWP/2AMwAZP/2AMwAZ//2AMwAav/2AM0AOP/2AM0ARP/2AM0AR//2AM0ASv/2AM0AWP/2AM0AZP/2AM0AZ//2AM0Aav/2AM4ARP/sAM4AZP/sAM8ARP/sAM8AZP/sANAARP/sANAAZP/sANEARP/sANEAZP/sANIAN//sANIAPv/XANIARf/sANIASP/sANIASf/NANIASv/sANIAS//hANIATf/sANIATv/XANIAT//2ANIAV//sANIAXv/XANIAZf/sANIAaP/sANIAaf/NANIAav/sANIAa//hANIAbf/sANIAbv/XANIAb//2ANMAN//sANMAPv/XANMARf/sANMASP/sANMASf/NANMASv/sANMAS//hANMATf/sANMATv/XANMAT//2ANMAV//sANMAXv/XANMAZf/sANMAaP/sANMAaf/NANMAav/sANMAa//hANMAbf/sANMAbv/XANMAb//2ANQAN//sANQAPv/XANQARf/sANQASP/sANQASf/NANQASv/sANQAS//hANQATf/sANQATv/XANQAT//2ANQAV//sANQAXv/XANQAZf/sANQAaP/sANQAaf/NANQAav/sANQAa//hANQAbf/sANQAbv/XANQAb//2ANUANv/hANUAPv/XANUAVv/hANUAXv/XANYANv/hANYAPv/XANYAVv/hANYAXv/XANcANv/hANcAPv/XANcAVv/hANcAXv/XANgARP/sANgAZP/sAAAAAAAjAaoAAQAAAAAAAAA7AAAAAQAAAAAAAQAQADsAAQAAAAAAAgAHAEsAAQAAAAAAAwAlAFIAAQAAAAAABAAQADsAAQAAAAAABQANAHcAAQAAAAAABgAPAIQAAQAAAAAABwAzAJMAAQAAAAAACAAPAMYAAQAAAAAACQAPAMYAAQAAAAAACgA7AAAAAQAAAAAACwAYANUAAQAAAAAADAAYANUAAQAAAAAADQAuAO0AAQAAAAAADgAqARsAAQAAAAAAEAAQADsAAQAAAAAAEQAHAEsAAQAAAAAAEgAQ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"&#xD;&#xD;/***/ }),&#xD;/* 16 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "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BgYCAgQDAwYBAwMEBAIEAgMFBAUFBQUFBQUFAgIDBAMEBQYFBAYGBgUGAwUHBQgGBQUFBgQGBgYIBwcFAgMCBAQDBQQEBQYDAwYDCQUEBQQEBAQGBQcGBQQAAAAMCgYABgYCAwUDBAYBAwMEBQMEAgMFBAUGBQUFBgUFAgIDBAQEBQcGBQYGBgYGAwUHBgkHBgYGBwUGBwcJCAcFAgMDBAUEBQQEBgcDBAYDCgYEBQQFBQQGBQgGBgQAAAANCwcABwcCAwUDBAcBAwMFBQMEAgQGBAUGBgYGBgYFAgIDBAQEBQcGBQcHBwYHAwYIBgkIBgYGBwUHBwcKCAgGAwMDBAUEBQQEBgcEBAcDCwYFBQQFBQQHBggHBgUAAAAOCwcABwcCAwUEBAcCBAQFBQMFAwQGBQYHBgYGBgYGAgIEBQQEBggHBQgHBwcHAwYJBwoIBwYHCAUHCAgKCQgGAwQDBQYEBgUFBwgEBAcDCwcFBgUGBQUHBgkHBwUAAAAPDAgACAgCAwYEBAgCBAQFBgMFAwQGBQYHBwcGBwcGAgIEBQUFBgkHBggICAcIBAYJBwsJBwcHCAYICAgLCgkHAwQDBQYEBgUFBwgEBQgEDAcFBgUGBgUIBwoIBwUAAAAQDQgACAgCBAYEBQgCBAQGBgMFAwQHBQcIBwcHBwcHAgMEBgUFBwkIBgkICAgIBAcKCAwJCAcICQYICQkMCgoHAwQEBQYFBwUFBwkEBQgEDQgGBwYGBgUIBwoICAYAAAARDgkACQkDBAYFBQkCBAQGBgQGAwUHBgcICAcHCAgHAwMEBgUFBwoIBgkJCQgJBAcKCAwKCAgICQYJCgkNCwoIBAQEBgcFBwYGCAkFBQkEDggGBwYHBwYJCAsJCAYAAAASDwkACQkDBAcFBQkCBQUGBwQGAwUIBgcJCAgICAgHAwMFBgUGBwoJBwoKCQkKBAgLCQ0LCQgJCgcJCgoNDAsIBAUEBgcFCAYGCAoFBQkEDwkHCAYHBwYJCAwJCAYAAAATEAoACgoDBAcFBgoCBQUHBwQGAwUIBggJCQgICQgIAwMFBwYGCAsJBwoKCgkKBQgMCQ4LCQkJCgcKCwoODAsIBAUEBggGCAYGCQoFBgoFEAkHCAcIBwYKCQwKCQcAAAAUEAoACgoDBAgFBgoCBQUHCAQHBAYJBggKCQkICQkIAwMFBwYGCAsKCAsLCgkLBQkMCg4MCgkKCwgKCwsPDQwJBAUEBwgGCAcHCQsGBgoFEAoHCAcICAcKCQ0KCQcAAAAVEQsACwsDBQgGBgsCBQUHCAQHBAYJBwkKCgkJCgkJAwMFBwYHCQwKCAsLCwoLBQkNCg8MCgoKCwgLDAwQDgwJBAUFBwgGCQcHCgsGBgsFEQoICQcICAcLCQ4LCgcAAAAWEgsACwsDBQgGBwsCBgYICAUHBAYKBwkLCgoJCgoJAwMGCAcHCQ0LCAwMDAoMBQkNCxANCwoLDAgLDAwQDg0KBQYFBwkHCQcHCgwGBwsFEgsICQgJCAcLCg4LCggAAAAXEwwADAwDBQkGBwwCBgYICQUIBAYKBwkLCgoKCwoJAwQGCAcHCQ0LCQwMDAsMBgoOCxENCwsLDQkMDQ0RDw4KBQYFCAkHCggICwwGBwwFEwsICggJCQgMCg8MCwgAAAAYFAwADAwEBQkGBwwDBgYICQUIBAcKCAoMCwoKCwsKBAQGCAcICg4MCQ0NDQsNBgoPDBEODAsMDQkMDg0SEA4LBQYFCAoHCggICw0HBwwGFAwJCggKCQgMCxAMCwgAAAAAAQAAAZAABQACArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAADAAAAAAAAAAAAAAAATUFDUgBAACAAegKz/zsAAAKzAMUAAAABAAAAAAAAAAEAAIAAAAAB9AGKAABgAAKzAnVCbGFjayBib3lzIG8gICAg/////zf///5CTEFSMDAAAAAAAAAAAQAAAAEAABIO2bBfDzz1AAAD6AAAAAC0STWnAAAAALRJNaf/mf87A2oDIAAAAAMAAgABAAAAAAABAAADIP84AAADMP+Z/7gDagABAAAAAAAAAAAAAAAAAAAAWwABAAAAWwChAAMAAAAAAAIACABAAAoAAABeALsAAQABAAAAEADGAAEAAAAAAAAAMgAAAAEAAAAAAAEACwAyAAEAAAAAAAIABwA9AAEAAAAAAAMACwBEAAEAAAAAAAQACwBPAAEAAAAAAAUAIABaAAEAAAAAAAYACwB6AAEAAAAAAAcAGgCFAAMAAQQJAAAAZACfAAMAAQQJAAEAFgEDAAMAAQQJAAIADgEZAAMAAQQJAAMAFgEnAAMAAQQJAAQAFgE9AAMAAQQJAAUAQAFTAAMAAQQJAAYAFgGTAAMAAQQJAAcANAGpQnkgSmFrb2IgRmlzY2hlciBha2EgUGl6emFEdWRlICpEaXN0cmlidXRlIGZyZWVseSpTY3JhdGNoRm9udFJlZ3VsYXJTY3JhdGNoRm9udFNjcmF0Y2hGb250aHR0cDovL2hqZW0uZ2V0Mm5ldC5kay9qZmlzY2hlci9TY3JhdGNoRm9udCoqKiBObyBUcmFkZU1hcmsgRm91bmQgKioqAEIAeQAgAEoAYQBrAG8AYgAgAEYAaQBzAGMAaABlAHIAIABhAGsAYQAgAFAAaQB6AHoAYQBEAHUAZABlACAAKgBEAGkAcwB0AHIAaQBiAHUAdABlACAAZgByAGUAZQBsAHkAKgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUgBlAGcAdQBsAGEAcgBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAUwBjAHIAYQB0AGMAaABGAG8AbgB0AGgAdAB0AHAAOgAvAC8AaABqAGUAbQAuAGcAZQB0ADIAbgBlAHQALgBkAGsALwBqAGYAaQBzAGMAaABlAHIALwBTAGMAcgBhAHQAYwBoAEYAbwBuAHQAKgAqACoAIABOAG8AIABUAHIAYQBkAGUATQBhAHIAawAgAEYAbwB1AG4AZAAgACoAKgAqAAAAAABUAGgAaQBzACAARgBvAG4AdAAgAFIAZQBuAGEAbQBlAGQAAAAAAAAA/AAAAxg="&#xD;&#xD;/***/ }),&#xD;/* 17 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function _cross(o, a, b) {&#xD;    return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);&#xD;}&#xD;&#xD;function _upperTangent(pointset) {&#xD;    var lower = [];&#xD;    for (var l = 0; l &lt; pointset.length; l++) {&#xD;        while (lower.length &gt;= 2 &amp;&amp; (_cross(lower[lower.length - 2], lower[lower.length - 1], pointset[l]) &lt;= 0)) {&#xD;            lower.pop();&#xD;        }&#xD;        lower.push(pointset[l]);&#xD;    }&#xD;    lower.pop();&#xD;    return lower;&#xD;}&#xD;&#xD;function _lowerTangent(pointset) {&#xD;    var reversed = pointset.reverse(),&#xD;        upper = [];&#xD;    for (var u = 0; u &lt; reversed.length; u++) {&#xD;        while (upper.length &gt;= 2 &amp;&amp; (_cross(upper[upper.length - 2], upper[upper.length - 1], reversed[u]) &lt;= 0)) {&#xD;            upper.pop();&#xD;        }&#xD;        upper.push(reversed[u]);&#xD;    }&#xD;    upper.pop();&#xD;    return upper;&#xD;}&#xD;&#xD;// pointset has to be sorted by X&#xD;function convex(pointset) {&#xD;    var convex,&#xD;        upper = _upperTangent(pointset),&#xD;        lower = _lowerTangent(pointset);&#xD;    convex = lower.concat(upper);&#xD;    convex.push(pointset[0]);  &#xD;    return convex;  &#xD;}&#xD;&#xD;module.exports = convex;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 18 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;&#xD;    toXy: function(pointset, format) {&#xD;        if (format === undefined) {&#xD;            return pointset.slice();&#xD;        }&#xD;        return pointset.map(function(pt) {&#xD;            /*jslint evil: true */&#xD;            var _getXY = new Function(&apos;pt&apos;, &apos;return [pt&apos; + format[0] + &apos;,&apos; + &apos;pt&apos; + format[1] + &apos;];&apos;);&#xD;            return _getXY(pt);&#xD;        });&#xD;    },&#xD;&#xD;    fromXy: function(pointset, format) {&#xD;        if (format === undefined) {&#xD;            return pointset.slice();&#xD;        }&#xD;        return pointset.map(function(pt) {&#xD;            /*jslint evil: true */&#xD;            var _getObj = new Function(&apos;pt&apos;, &apos;var o = {}; o&apos; + format[0] + &apos;= pt[0]; o&apos; + format[1] + &apos;= pt[1]; return o;&apos;);&#xD;            return _getObj(pt);&#xD;        });&#xD;    }&#xD;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 19 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function Grid(points, cellSize) {&#xD;    this._cells = [];&#xD;    this._cellSize = cellSize;&#xD;&#xD;    points.forEach(function(point) {&#xD;        var cellXY = this.point2CellXY(point),&#xD;            x = cellXY[0],&#xD;            y = cellXY[1];&#xD;        if (this._cells[x] === undefined) {&#xD;            this._cells[x] = [];&#xD;        }&#xD;        if (this._cells[x][y] === undefined) {&#xD;            this._cells[x][y] = [];&#xD;        }&#xD;        this._cells[x][y].push(point);&#xD;    }, this);&#xD;}&#xD;&#xD;Grid.prototype = {&#xD;    cellPoints: function(x, y) { // (Number, Number) -&gt; Array&#xD;        return (this._cells[x] !== undefined &amp;&amp; this._cells[x][y] !== undefined) ? this._cells[x][y] : [];&#xD;    },&#xD;&#xD;    rangePoints: function(bbox) { // (Array) -&gt; Array&#xD;        var tlCellXY = this.point2CellXY([bbox[0], bbox[1]]),&#xD;            brCellXY = this.point2CellXY([bbox[2], bbox[3]]),&#xD;            points = [];&#xD;&#xD;        for (var x = tlCellXY[0]; x &lt;= brCellXY[0]; x++) {&#xD;            for (var y = tlCellXY[1]; y &lt;= brCellXY[1]; y++) {&#xD;                points = points.concat(this.cellPoints(x, y));&#xD;            }&#xD;        }&#xD;&#xD;        return points;&#xD;    },&#xD;&#xD;    removePoint: function(point) { // (Array) -&gt; Array&#xD;        var cellXY = this.point2CellXY(point),&#xD;            cell = this._cells[cellXY[0]][cellXY[1]],&#xD;            pointIdxInCell;&#xD;        &#xD;        for (var i = 0; i &lt; cell.length; i++) {&#xD;            if (cell[i][0] === point[0] &amp;&amp; cell[i][1] === point[1]) {&#xD;                pointIdxInCell = i;&#xD;                break;&#xD;            }&#xD;        }&#xD;&#xD;        cell.splice(pointIdxInCell, 1);&#xD;&#xD;        return cell;&#xD;    },&#xD;&#xD;    point2CellXY: function(point) { // (Array) -&gt; Array&#xD;        var x = parseInt(point[0] / this._cellSize),&#xD;            y = parseInt(point[1] / this._cellSize);&#xD;        return [x, y];&#xD;    },&#xD;&#xD;    extendBbox: function(bbox, scaleFactor) { // (Array, Number) -&gt; Array&#xD;        return [&#xD;            bbox[0] - (scaleFactor * this._cellSize),&#xD;            bbox[1] - (scaleFactor * this._cellSize),&#xD;            bbox[2] + (scaleFactor * this._cellSize),&#xD;            bbox[3] + (scaleFactor * this._cellSize)&#xD;        ];&#xD;    }&#xD;};&#xD;&#xD;function grid(points, cellSize) {&#xD;    return new Grid(points, cellSize);&#xD;}&#xD;&#xD;module.exports = grid;&#xD;&#xD;/***/ }),&#xD;/* 20 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/*&#xD; (c) 2014-2016, Andrii Heonia&#xD; Hull.js, a JavaScript library for concave hull generation by set of points.&#xD; https://github.com/AndriiHeonia/hull&#xD;*/&#xD;&#xD;&#xD;&#xD;var intersect = __webpack_require__(21);&#xD;var grid = __webpack_require__(19);&#xD;var formatUtil = __webpack_require__(18);&#xD;var convexHull = __webpack_require__(17);&#xD;&#xD;function _filterDuplicates(pointset) {&#xD;    return pointset.filter(function(el, idx, arr) {&#xD;        var prevEl = arr[idx - 1];&#xD;        return idx === 0 || !(prevEl[0] === el[0] &amp;&amp; prevEl[1] === el[1]);&#xD;    });&#xD;}&#xD;&#xD;function _sortByX(pointset) {&#xD;    return pointset.sort(function(a, b) {&#xD;        if (a[0] == b[0]) {&#xD;            return a[1] - b[1];&#xD;        } else {&#xD;            return a[0] - b[0];&#xD;        }&#xD;    });&#xD;}&#xD;&#xD;function _sqLength(a, b) {&#xD;    return Math.pow(b[0] - a[0], 2) + Math.pow(b[1] - a[1], 2);&#xD;}&#xD;&#xD;function _cos(o, a, b) {&#xD;    var aShifted = [a[0] - o[0], a[1] - o[1]],&#xD;        bShifted = [b[0] - o[0], b[1] - o[1]],&#xD;        sqALen = _sqLength(o, a),&#xD;        sqBLen = _sqLength(o, b),&#xD;        dot = aShifted[0] * bShifted[0] + aShifted[1] * bShifted[1];&#xD;&#xD;    return dot / Math.sqrt(sqALen * sqBLen);&#xD;}&#xD;&#xD;function _intersect(segment, pointset) {&#xD;    for (var i = 0; i &lt; pointset.length - 1; i++) {&#xD;        var seg = [pointset[i], pointset[i + 1]];&#xD;        if (segment[0][0] === seg[0][0] &amp;&amp; segment[0][1] === seg[0][1] ||&#xD;            segment[0][0] === seg[1][0] &amp;&amp; segment[0][1] === seg[1][1]) {&#xD;            continue;&#xD;        }&#xD;        if (intersect(segment, seg)) {&#xD;            return true;&#xD;        }&#xD;    }&#xD;    return false;&#xD;}&#xD;&#xD;function _occupiedArea(pointset) {&#xD;    var minX = Infinity,&#xD;        minY = Infinity,&#xD;        maxX = -Infinity,&#xD;        maxY = -Infinity;&#xD;&#xD;    for (var i = pointset.length - 1; i &gt;= 0; i--) {&#xD;        if (pointset[i][0] &lt; minX) {&#xD;            minX = pointset[i][0];&#xD;        }&#xD;        if (pointset[i][1] &lt; minY) {&#xD;            minY = pointset[i][1];&#xD;        }&#xD;        if (pointset[i][0] &gt; maxX) {&#xD;            maxX = pointset[i][0];&#xD;        }&#xD;        if (pointset[i][1] &gt; maxY) {&#xD;            maxY = pointset[i][1];&#xD;        }&#xD;    }&#xD;&#xD;    return [&#xD;        maxX - minX, // width&#xD;        maxY - minY  // height&#xD;    ];&#xD;}&#xD;&#xD;function _bBoxAround(edge) {&#xD;    return [&#xD;        Math.min(edge[0][0], edge[1][0]), // left&#xD;        Math.min(edge[0][1], edge[1][1]), // top&#xD;        Math.max(edge[0][0], edge[1][0]), // right&#xD;        Math.max(edge[0][1], edge[1][1])  // bottom&#xD;    ];&#xD;}&#xD;&#xD;function _midPoint(edge, innerPoints, convex) {&#xD;    var point = null,&#xD;        angle1Cos = MAX_CONCAVE_ANGLE_COS,&#xD;        angle2Cos = MAX_CONCAVE_ANGLE_COS,&#xD;        a1Cos, a2Cos;&#xD;&#xD;    for (var i = 0; i &lt; innerPoints.length; i++) {&#xD;        a1Cos = _cos(edge[0], edge[1], innerPoints[i]);&#xD;        a2Cos = _cos(edge[1], edge[0], innerPoints[i]);&#xD;&#xD;        if (a1Cos &gt; angle1Cos &amp;&amp; a2Cos &gt; angle2Cos &amp;&amp;&#xD;            !_intersect([edge[0], innerPoints[i]], convex) &amp;&amp;&#xD;            !_intersect([edge[1], innerPoints[i]], convex)) {&#xD;&#xD;            angle1Cos = a1Cos;&#xD;            angle2Cos = a2Cos;&#xD;            point = innerPoints[i];&#xD;        }&#xD;    }&#xD;&#xD;    return point;&#xD;}&#xD;&#xD;function _concave(convex, maxSqEdgeLen, maxSearchArea, grid, edgeSkipList) {&#xD;    var edge,&#xD;        keyInSkipList,&#xD;        scaleFactor,&#xD;        midPoint,&#xD;        bBoxAround,&#xD;        bBoxWidth,&#xD;        bBoxHeight,&#xD;        midPointInserted = false;&#xD;&#xD;    for (var i = 0; i &lt; convex.length - 1; i++) {&#xD;        edge = [convex[i], convex[i + 1]];&#xD;        keyInSkipList = edge[0].join() + &apos;,&apos; + edge[1].join();&#xD;&#xD;        if (_sqLength(edge[0], edge[1]) &lt; maxSqEdgeLen ||&#xD;            edgeSkipList[keyInSkipList] === true) { continue; }&#xD;&#xD;        scaleFactor = 0;&#xD;        bBoxAround = _bBoxAround(edge);&#xD;        do {&#xD;            bBoxAround = grid.extendBbox(bBoxAround, scaleFactor);&#xD;            bBoxWidth = bBoxAround[2] - bBoxAround[0];&#xD;            bBoxHeight = bBoxAround[3] - bBoxAround[1];&#xD;&#xD;            midPoint = _midPoint(edge, grid.rangePoints(bBoxAround), convex);            &#xD;            scaleFactor++;&#xD;        }  while (midPoint === null &amp;&amp; (maxSearchArea[0] &gt; bBoxWidth || maxSearchArea[1] &gt; bBoxHeight));&#xD;&#xD;        if (bBoxWidth &gt;= maxSearchArea[0] &amp;&amp; bBoxHeight &gt;= maxSearchArea[1]) {&#xD;            edgeSkipList[keyInSkipList] = true;&#xD;        }&#xD;&#xD;        if (midPoint !== null) {&#xD;            convex.splice(i + 1, 0, midPoint);&#xD;            grid.removePoint(midPoint);&#xD;            midPointInserted = true;&#xD;        }&#xD;    }&#xD;&#xD;    if (midPointInserted) {&#xD;        return _concave(convex, maxSqEdgeLen, maxSearchArea, grid, edgeSkipList);&#xD;    }&#xD;&#xD;    return convex;&#xD;}&#xD;&#xD;function hull(pointset, concavity, format) {&#xD;    var convex,&#xD;        concave,&#xD;        innerPoints,&#xD;        occupiedArea,&#xD;        maxSearchArea,&#xD;        cellSize,&#xD;        points,&#xD;        maxEdgeLen = concavity || 20;&#xD;&#xD;    if (pointset.length &lt; 4) {&#xD;        return pointset.slice();&#xD;    }&#xD;&#xD;    points = _filterDuplicates(_sortByX(formatUtil.toXy(pointset, format)));&#xD;&#xD;    occupiedArea = _occupiedArea(points);&#xD;    maxSearchArea = [&#xD;        occupiedArea[0] * MAX_SEARCH_BBOX_SIZE_PERCENT,&#xD;        occupiedArea[1] * MAX_SEARCH_BBOX_SIZE_PERCENT&#xD;    ];&#xD;&#xD;    convex = convexHull(points);&#xD;    innerPoints = points.filter(function(pt) {&#xD;        return convex.indexOf(pt) &lt; 0;&#xD;    });&#xD;&#xD;    cellSize = Math.ceil(1 / (points.length / (occupiedArea[0] * occupiedArea[1])));&#xD;&#xD;    concave = _concave(&#xD;        convex, Math.pow(maxEdgeLen, 2),&#xD;        maxSearchArea, grid(innerPoints, cellSize), {});&#xD; &#xD;    return formatUtil.fromXy(concave, format);&#xD;}&#xD;&#xD;var MAX_CONCAVE_ANGLE_COS = Math.cos(90 / (180 / Math.PI)); // angle = 90 deg&#xD;var MAX_SEARCH_BBOX_SIZE_PERCENT = 0.6;&#xD;&#xD;module.exports = hull;&#xD;&#xD;/***/ }),&#xD;/* 21 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;function ccw(x1, y1, x2, y2, x3, y3) {           &#xD;    var cw = ((y3 - y1) * (x2 - x1)) - ((y2 - y1) * (x3 - x1));&#xD;    return cw &gt; 0 ? true : cw &lt; 0 ? false : true; // colinear&#xD;}&#xD;&#xD;function intersect(seg1, seg2) {&#xD;  var x1 = seg1[0][0], y1 = seg1[0][1],&#xD;      x2 = seg1[1][0], y2 = seg1[1][1],&#xD;      x3 = seg2[0][0], y3 = seg2[0][1],&#xD;      x4 = seg2[1][0], y4 = seg2[1][1];&#xD;&#xD;    return ccw(x1, y1, x3, y3, x4, y4) !== ccw(x2, y2, x3, y3, x4, y4) &amp;&amp; ccw(x1, y1, x2, y2, x3, y3) !== ccw(x1, y1, x2, y2, x4, y4);&#xD;}&#xD;&#xD;module.exports = intersect;&#xD;&#xD;/***/ }),&#xD;/* 22 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "precision mediump float;\n\nuniform float u_fudge;\n\n#ifdef DRAW_MODE_silhouette\nuniform vec4 u_silhouetteColor;\n#else // DRAW_MODE_silhouette\n# ifdef ENABLE_color\nuniform float u_color;\n# endif // ENABLE_color\n# ifdef ENABLE_brightness\nuniform float u_brightness;\n# endif // ENABLE_brightness\n#endif // DRAW_MODE_silhouette\n\n#ifdef DRAW_MODE_colorMask\nuniform vec3 u_colorMask;\nuniform float u_colorMaskTolerance;\n#endif // DRAW_MODE_colorMask\n\n#ifdef ENABLE_fisheye\nuniform float u_fisheye;\n#endif // ENABLE_fisheye\n#ifdef ENABLE_whirl\nuniform float u_whirl;\n#endif // ENABLE_whirl\n#ifdef ENABLE_pixelate\nuniform float u_pixelate;\nuniform vec2 u_skinSize;\n#endif // ENABLE_pixelate\n#ifdef ENABLE_mosaic\nuniform float u_mosaic;\n#endif // ENABLE_mosaic\n#ifdef ENABLE_ghost\nuniform float u_ghost;\n#endif // ENABLE_ghost\n\nuniform sampler2D u_skin;\n\nvarying vec2 v_texCoord;\n\n#if !defined(DRAW_MODE_silhouette) &amp;&amp; (defined(ENABLE_color) || defined(ENABLE_brightness))\n// Branchless color conversions based on code from:\n// http://www.chilliant.com/rgb2hsv.html by Ian Taylor\n// Based in part on work by Sam Hocevar and Emil Persson\n\nconst float kEpsilon = 1e-6;\n\nvec3 convertRGB2HCV(vec3 rgb)\n{\n\tvec4 p = (rgb.g &lt; rgb.b) ? vec4(rgb.bg, -1, 2.0/3.0) : vec4(rgb.gb, 0, -1.0/3.0);\n\tvec4 q = (rgb.r &lt; p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx);\n\tfloat c = q.x - min(q.w, q.y);\n\tfloat h = abs((q.w - q.y) / (6.0 * c + kEpsilon) + q.z);\n\treturn vec3(h, c, q.x);\n}\n\nvec3 convertRGB2HSL(vec3 rgb)\n{\n\tvec3 hcv = convertRGB2HCV(rgb);\n\tfloat l = hcv.z - hcv.y * 0.5;\n\tfloat s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + kEpsilon);\n\treturn vec3(hcv.x, s, l);\n}\n\nvec3 convertHue2RGB(float hue)\n{\n\tfloat r = abs(hue * 6.0 - 3.0) - 1.0;\n\tfloat g = 2.0 - abs(hue * 6.0 - 2.0);\n\tfloat b = 2.0 - abs(hue * 6.0 - 4.0);\n\treturn clamp(vec3(r, g, b), 0.0, 1.0);\n}\n\nvec3 convertHSL2RGB(vec3 hsl)\n{\n\tvec3 rgb = convertHue2RGB(hsl.x);\n\tfloat c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;\n\treturn (rgb - 0.5) * c + hsl.z;\n}\n#endif // !defined(DRAW_MODE_silhouette) &amp;&amp; (defined(ENABLE_color) || defined(ENABLE_brightness))\n\nconst vec2 kCenter = vec2(0.5, 0.5);\n\nvoid main()\n{\n\tvec2 texcoord0 = v_texCoord;\n\n\t#ifdef ENABLE_mosaic\n\ttexcoord0 = fract(u_mosaic * texcoord0);\n\t#endif // ENABLE_mosaic\n\n\t#ifdef ENABLE_pixelate\n\t{\n\t\t// TODO: clean up \"pixel\" edges\n\t\tvec2 pixelTexelSize = u_skinSize / u_pixelate;\n\t\ttexcoord0 = (floor(texcoord0 * pixelTexelSize) + kCenter) / pixelTexelSize;\n\t}\n\t#endif // ENABLE_pixelate\n\n\t#ifdef ENABLE_whirl\n\t{\n\t\tconst float kRadius = 0.5;\n\t\tvec2 offset = texcoord0 - kCenter;\n\t\tfloat offsetMagnitude = length(offset);\n\t\tfloat whirlFactor = 1.0 - (offsetMagnitude / kRadius);\n\t\tfloat whirlActual = u_whirl * whirlFactor * whirlFactor;\n\t\tfloat sinWhirl = sin(whirlActual);\n\t\tfloat cosWhirl = cos(whirlActual);\n\t\tmat2 rotationMatrix = mat2(\n\t\t\tcosWhirl, -sinWhirl,\n\t\t\tsinWhirl, cosWhirl\n\t\t);\n\n\t\t// TODO: tweak this algorithm such that texture coordinates don&apos;t depend on conditionals.\n\t\t// see: https://www.opengl.org/wiki/Sampler_%28GLSL%29#Non-uniform_flow_control\n\t\tif (offsetMagnitude &lt;= kRadius)\n\t\t{\n\t\t\ttexcoord0 = rotationMatrix * offset + kCenter;\n\t\t}\n\t}\n\t#endif // ENABLE_whirl\n\n\t#ifdef ENABLE_fisheye\n\t{\n\t\tvec2 vec = (texcoord0 - kCenter) / kCenter;\n\t\tfloat r = pow(length(vec), u_fisheye);\n\t\tfloat angle = atan(vec.y, vec.x);\n\t\t// TODO: tweak this algorithm such that texture coordinates don&apos;t depend on conditionals.\n\t\t// see: https://www.opengl.org/wiki/Sampler_%28GLSL%29#Non-uniform_flow_control\n\t\tif (r &lt;= 1.0)\n\t\t{\n\t\t\ttexcoord0 = kCenter + r * vec2(cos(angle), sin(angle)) * kCenter;\n\t\t}\n\t}\n\t#endif // ENABLE_fisheye\n\n\tgl_FragColor = texture2D(u_skin, texcoord0);\n\n\n\tif (gl_FragColor.a == 0.0)\n\t{\n\t\tdiscard;\n\t}\n\n    #ifdef ENABLE_ghost\n    gl_FragColor.a *= u_ghost;\n    #endif // ENABLE_ghost\n\n\t#ifdef DRAW_MODE_silhouette\n\t// switch to u_silhouetteColor only AFTER the alpha test\n\tgl_FragColor = u_silhouetteColor;\n\t#else // DRAW_MODE_silhouette\n\n\t#if defined(ENABLE_color) || defined(ENABLE_brightness)\n\t{\n\t\tvec3 hsl = convertRGB2HSL(gl_FragColor.xyz);\n\n\t\t#ifdef ENABLE_color\n\t\t{\n\t\t\t// this code forces grayscale values to be slightly saturated\n\t\t\t// so that some slight change of hue will be visible\n\t\t\tconst float minLightness = 0.11 / 2.0;\n\t\t\tconst float minSaturation = 0.09;\n\t\t\tif (hsl.z &lt; minLightness) hsl = vec3(0.0, 1.0, minLightness);\n\t\t\telse if (hsl.y &lt; minSaturation) hsl = vec3(0.0, minSaturation, hsl.z);\n\n\t\t\thsl.x = mod(hsl.x + u_color, 1.0);\n\t\t\tif (hsl.x &lt; 0.0) hsl.x += 1.0;\n\t\t}\n\t\t#endif // ENABLE_color\n\n\t\t#ifdef ENABLE_brightness\n\t\thsl.z = clamp(hsl.z + u_brightness, 0.0, 1.0);\n\t\t#endif // ENABLE_brightness\n\n\t\tgl_FragColor.rgb = convertHSL2RGB(hsl);\n\t}\n\t#endif // defined(ENABLE_color) || defined(ENABLE_brightness)\n\n\t#ifdef DRAW_MODE_colorMask\n\tvec3 maskDistance = abs(gl_FragColor.rgb - u_colorMask);\n\tvec3 colorMaskTolerance = vec3(u_colorMaskTolerance, u_colorMaskTolerance, u_colorMaskTolerance);\n\tif (any(greaterThan(maskDistance, colorMaskTolerance)))\n\t{\n\t\tdiscard;\n\t}\n\t#endif // DRAW_MODE_colorMask\n\n\t// WebGL defaults to premultiplied alpha\n\tgl_FragColor.rgb *= gl_FragColor.a;\n\n\t#endif // DRAW_MODE_silhouette\n}\n"&#xD;&#xD;/***/ }),&#xD;/* 23 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "uniform mat4 u_projectionMatrix;\nuniform mat4 u_modelMatrix;\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nvarying vec2 v_texCoord;\n\nvoid main() {\n    gl_Position = u_projectionMatrix * u_modelMatrix * vec4(a_position, 0, 1);\n    v_texCoord = a_texCoord;\n}\n"&#xD;&#xD;/***/ }),&#xD;/* 24 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var RenderWebGL = __webpack_require__(5);&#xD;&#xD;/**&#xD; * Export for NPM &amp; Node.js&#xD; * @type {RenderWebGL}&#xD; */&#xD;module.exports = RenderWebGL;&#xD;&#xD;/***/ })&#xD;/******/ ]);&#xD;//# sourceMappingURL=scratch-render.js.map&#xD;&#xD;/***/ }),&#xD;/* 508 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer, global, process, setImmediate) {module.exports =&#xD;/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;/******/&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;/******/&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId])&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;/******/&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			i: moduleId,&#xD;/******/ 			l: false,&#xD;/******/ 			exports: {}&#xD;/******/ 		};&#xD;/******/&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;/******/&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.l = true;&#xD;/******/&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;/******/&#xD;/******/&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;/******/&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;/******/&#xD;/******/ 	// identity function for calling harmony imports with the correct context&#xD;/******/ 	__webpack_require__.i = function(value) { return value; };&#xD;/******/&#xD;/******/ 	// define getter function for harmony exports&#xD;/******/ 	__webpack_require__.d = function(exports, name, getter) {&#xD;/******/ 		if(!__webpack_require__.o(exports, name)) {&#xD;/******/ 			Object.defineProperty(exports, name, {&#xD;/******/ 				configurable: false,&#xD;/******/ 				enumerable: true,&#xD;/******/ 				get: getter&#xD;/******/ 			});&#xD;/******/ 		}&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// getDefaultExport function for compatibility with non-harmony modules&#xD;/******/ 	__webpack_require__.n = function(module) {&#xD;/******/ 		var getter = module &amp;&amp; module.__esModule ?&#xD;/******/ 			function getDefault() { return module[&apos;default&apos;]; } :&#xD;/******/ 			function getModuleExports() { return module; };&#xD;/******/ 		__webpack_require__.d(getter, &apos;a&apos;, getter);&#xD;/******/ 		return getter;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// Object.prototype.hasOwnProperty.call&#xD;/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };&#xD;/******/&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;/******/&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(__webpack_require__.s = 64);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a duplex stream is just a stream that is both readable and writable.&#xD;// Since JS doesn&apos;t have multiple prototypal inheritance, this class&#xD;// prototypally inherits from Readable, and then parasitically from&#xD;// Writable.&#xD;&#xD;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;&#xD;var objectKeys = Object.keys || function (obj) {&#xD;  var keys = [];&#xD;  for (var key in obj) {&#xD;    keys.push(key);&#xD;  }return keys;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = Duplex;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(8);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(1);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Readable = __webpack_require__(14);&#xD;var Writable = __webpack_require__(16);&#xD;&#xD;util.inherits(Duplex, Readable);&#xD;&#xD;var keys = objectKeys(Writable.prototype);&#xD;for (var v = 0; v &lt; keys.length; v++) {&#xD;  var method = keys[v];&#xD;  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];&#xD;}&#xD;&#xD;function Duplex(options) {&#xD;  if (!(this instanceof Duplex)) return new Duplex(options);&#xD;&#xD;  Readable.call(this, options);&#xD;  Writable.call(this, options);&#xD;&#xD;  if (options &amp;&amp; options.readable === false) this.readable = false;&#xD;&#xD;  if (options &amp;&amp; options.writable === false) this.writable = false;&#xD;&#xD;  this.allowHalfOpen = true;&#xD;  if (options &amp;&amp; options.allowHalfOpen === false) this.allowHalfOpen = false;&#xD;&#xD;  this.once(&apos;end&apos;, onend);&#xD;}&#xD;&#xD;// the no-half-open enforcer&#xD;function onend() {&#xD;  // if we allow half-open state, or if the writable side ended,&#xD;  // then we&apos;re ok.&#xD;  if (this.allowHalfOpen || this._writableState.ended) return;&#xD;&#xD;  // no more data can be written.&#xD;  // But allow more writes to happen in this tick.&#xD;  processNextTick(onEndNT, this);&#xD;}&#xD;&#xD;function onEndNT(self) {&#xD;  self.end();&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 1 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// Copyright Joyent, Inc. and other Node contributors.&#xD;//&#xD;// Permission is hereby granted, free of charge, to any person obtaining a&#xD;// copy of this software and associated documentation files (the&#xD;// "Software"), to deal in the Software without restriction, including&#xD;// without limitation the rights to use, copy, modify, merge, publish,&#xD;// distribute, sublicense, and/or sell copies of the Software, and to permit&#xD;// persons to whom the Software is furnished to do so, subject to the&#xD;// following conditions:&#xD;//&#xD;// The above copyright notice and this permission notice shall be included&#xD;// in all copies or substantial portions of the Software.&#xD;//&#xD;// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS&#xD;// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD;// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN&#xD;// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,&#xD;// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR&#xD;// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE&#xD;// USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD;&#xD;// NOTE: These type checking functions intentionally don&apos;t use `instanceof`&#xD;// because it is fragile and can be easily faked with `Object.create()`.&#xD;&#xD;function isArray(arg) {&#xD;  if (Array.isArray) {&#xD;    return Array.isArray(arg);&#xD;  }&#xD;  return objectToString(arg) === &apos;[object Array]&apos;;&#xD;}&#xD;exports.isArray = isArray;&#xD;&#xD;function isBoolean(arg) {&#xD;  return typeof arg === &apos;boolean&apos;;&#xD;}&#xD;exports.isBoolean = isBoolean;&#xD;&#xD;function isNull(arg) {&#xD;  return arg === null;&#xD;}&#xD;exports.isNull = isNull;&#xD;&#xD;function isNullOrUndefined(arg) {&#xD;  return arg == null;&#xD;}&#xD;exports.isNullOrUndefined = isNullOrUndefined;&#xD;&#xD;function isNumber(arg) {&#xD;  return typeof arg === &apos;number&apos;;&#xD;}&#xD;exports.isNumber = isNumber;&#xD;&#xD;function isString(arg) {&#xD;  return typeof arg === &apos;string&apos;;&#xD;}&#xD;exports.isString = isString;&#xD;&#xD;function isSymbol(arg) {&#xD;  return typeof arg === &apos;symbol&apos;;&#xD;}&#xD;exports.isSymbol = isSymbol;&#xD;&#xD;function isUndefined(arg) {&#xD;  return arg === void 0;&#xD;}&#xD;exports.isUndefined = isUndefined;&#xD;&#xD;function isRegExp(re) {&#xD;  return objectToString(re) === &apos;[object RegExp]&apos;;&#xD;}&#xD;exports.isRegExp = isRegExp;&#xD;&#xD;function isObject(arg) {&#xD;  return typeof arg === &apos;object&apos; &amp;&amp; arg !== null;&#xD;}&#xD;exports.isObject = isObject;&#xD;&#xD;function isDate(d) {&#xD;  return objectToString(d) === &apos;[object Date]&apos;;&#xD;}&#xD;exports.isDate = isDate;&#xD;&#xD;function isError(e) {&#xD;  return (objectToString(e) === &apos;[object Error]&apos; || e instanceof Error);&#xD;}&#xD;exports.isError = isError;&#xD;&#xD;function isFunction(arg) {&#xD;  return typeof arg === &apos;function&apos;;&#xD;}&#xD;exports.isFunction = isFunction;&#xD;&#xD;function isPrimitive(arg) {&#xD;  return arg === null ||&#xD;         typeof arg === &apos;boolean&apos; ||&#xD;         typeof arg === &apos;number&apos; ||&#xD;         typeof arg === &apos;string&apos; ||&#xD;         typeof arg === &apos;symbol&apos; ||  // ES6 symbol&#xD;         typeof arg === &apos;undefined&apos;;&#xD;}&#xD;exports.isPrimitive = isPrimitive;&#xD;&#xD;exports.isBuffer = Buffer.isBuffer;&#xD;&#xD;function objectToString(o) {&#xD;  return Object.prototype.toString.call(o);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 2 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;try {&#xD;  var util = __webpack_require__(4);&#xD;  if (typeof util.inherits !== &apos;function&apos;) throw &apos;&apos;;&#xD;  module.exports = util.inherits;&#xD;} catch (e) {&#xD;  module.exports = __webpack_require__(47);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 3 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(1);&#xD;&#xD;/***/ }),&#xD;/* 4 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(74);&#xD;&#xD;/***/ }),&#xD;/* 5 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var TextDecoder = __webpack_require__(56).TextDecoder;&#xD;&#xD;var memoizedToString = function () {&#xD;    var strings = {};&#xD;    return function (assetId, data) {&#xD;        if (!strings.hasOwnProperty(assetId)) {&#xD;            strings[assetId] = data.toString(&apos;base64&apos;);&#xD;        }&#xD;        return strings[assetId];&#xD;    };&#xD;}();&#xD;&#xD;var Asset = function () {&#xD;    /**&#xD;     * Construct an Asset.&#xD;     * @param {AssetType} assetType - The type of this asset (sound, image, etc.)&#xD;     * @param {string} assetId - The ID of this asset.&#xD;     * @param {DataFormat} [dataFormat] - The format of the data (WAV, PNG, etc.); required iff `data` is present.&#xD;     * @param {Buffer} [data] - The in-memory data for this asset; optional.&#xD;     */&#xD;    function Asset(assetType, assetId, dataFormat, data) {&#xD;        _classCallCheck(this, Asset);&#xD;&#xD;        /** @type {AssetType} */&#xD;        this.assetType = assetType;&#xD;&#xD;        /** @type {string} */&#xD;        this.assetId = assetId;&#xD;&#xD;        this.setData(data, dataFormat);&#xD;&#xD;        /** @type {Asset[]} */&#xD;        this.dependencies = [];&#xD;    }&#xD;&#xD;    _createClass(Asset, [{&#xD;        key: &apos;setData&apos;,&#xD;        value: function setData(data, dataFormat) {&#xD;            if (data &amp;&amp; !dataFormat) {&#xD;                throw new Error(&apos;Data provided without specifying its format&apos;);&#xD;            }&#xD;&#xD;            /** @type {DataFormat} */&#xD;            this.dataFormat = dataFormat;&#xD;&#xD;            /** @type {Buffer} */&#xD;            this.data = data;&#xD;        }&#xD;&#xD;        /**&#xD;         * @returns {string} - This asset&apos;s data, decoded as text.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;decodeText&apos;,&#xD;        value: function decodeText() {&#xD;            var decoder = new TextDecoder();&#xD;            return decoder.decode(this.data);&#xD;        }&#xD;&#xD;        /**&#xD;         * @param {string} [contentType] - Optionally override the content type to be included in the data URI.&#xD;         * @returns {string} - A data URI representing the asset&apos;s data.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;encodeDataURI&apos;,&#xD;        value: function encodeDataURI(contentType) {&#xD;            contentType = contentType || this.assetType.contentType;&#xD;            return &apos;data:&apos; + contentType + &apos;;base64,&apos; + memoizedToString(this.assetId, this.data);&#xD;        }&#xD;    }]);&#xD;&#xD;    return Asset;&#xD;}();&#xD;&#xD;module.exports = Asset;&#xD;&#xD;/***/ }),&#xD;/* 6 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var buffer = __webpack_require__(3);&#xD;var Buffer = buffer.Buffer;&#xD;var SlowBuffer = buffer.SlowBuffer;&#xD;var MAX_LEN = buffer.kMaxLength || 2147483647;&#xD;exports.alloc = function alloc(size, fill, encoding) {&#xD;  if (typeof Buffer.alloc === &apos;function&apos;) {&#xD;    return Buffer.alloc(size, fill, encoding);&#xD;  }&#xD;  if (typeof encoding === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;encoding must not be number&apos;);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  var enc = encoding;&#xD;  var _fill = fill;&#xD;  if (_fill === undefined) {&#xD;    enc = undefined;&#xD;    _fill = 0;&#xD;  }&#xD;  var buf = new Buffer(size);&#xD;  if (typeof _fill === &apos;string&apos;) {&#xD;    var fillBuf = new Buffer(_fill, enc);&#xD;    var flen = fillBuf.length;&#xD;    var i = -1;&#xD;    while (++i &lt; size) {&#xD;      buf[i] = fillBuf[i % flen];&#xD;    }&#xD;  } else {&#xD;    buf.fill(_fill);&#xD;  }&#xD;  return buf;&#xD;}&#xD;exports.allocUnsafe = function allocUnsafe(size) {&#xD;  if (typeof Buffer.allocUnsafe === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafe(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt; MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new Buffer(size);&#xD;}&#xD;exports.from = function from(value, encodingOrOffset, length) {&#xD;  if (typeof Buffer.from === &apos;function&apos; &amp;&amp; (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {&#xD;    return Buffer.from(value, encodingOrOffset, length);&#xD;  }&#xD;  if (typeof value === &apos;number&apos;) {&#xD;    throw new TypeError(&apos;"value" argument must not be a number&apos;);&#xD;  }&#xD;  if (typeof value === &apos;string&apos;) {&#xD;    return new Buffer(value, encodingOrOffset);&#xD;  }&#xD;  if (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value instanceof ArrayBuffer) {&#xD;    var offset = encodingOrOffset;&#xD;    if (arguments.length === 1) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (typeof offset === &apos;undefined&apos;) {&#xD;      offset = 0;&#xD;    }&#xD;    var len = length;&#xD;    if (typeof len === &apos;undefined&apos;) {&#xD;      len = value.byteLength - offset;&#xD;    }&#xD;    if (offset &gt;= value.byteLength) {&#xD;      throw new RangeError(&apos;\&apos;offset\&apos; is out of bounds&apos;);&#xD;    }&#xD;    if (len &gt; value.byteLength - offset) {&#xD;      throw new RangeError(&apos;\&apos;length\&apos; is out of bounds&apos;);&#xD;    }&#xD;    return new Buffer(value.slice(offset, offset + len));&#xD;  }&#xD;  if (Buffer.isBuffer(value)) {&#xD;    var out = new Buffer(value.length);&#xD;    value.copy(out, 0, 0, value.length);&#xD;    return out;&#xD;  }&#xD;  if (value) {&#xD;    if (Array.isArray(value) || (typeof ArrayBuffer !== &apos;undefined&apos; &amp;&amp; value.buffer instanceof ArrayBuffer) || &apos;length&apos; in value) {&#xD;      return new Buffer(value);&#xD;    }&#xD;    if (value.type === &apos;Buffer&apos; &amp;&amp; Array.isArray(value.data)) {&#xD;      return new Buffer(value.data);&#xD;    }&#xD;  }&#xD;&#xD;  throw new TypeError(&apos;First argument must be a string, Buffer, &apos; + &apos;ArrayBuffer, Array, or array-like object.&apos;);&#xD;}&#xD;exports.allocUnsafeSlow = function allocUnsafeSlow(size) {&#xD;  if (typeof Buffer.allocUnsafeSlow === &apos;function&apos;) {&#xD;    return Buffer.allocUnsafeSlow(size);&#xD;  }&#xD;  if (typeof size !== &apos;number&apos;) {&#xD;    throw new TypeError(&apos;size must be a number&apos;);&#xD;  }&#xD;  if (size &gt;= MAX_LEN) {&#xD;    throw new RangeError(&apos;size is too large&apos;);&#xD;  }&#xD;  return new SlowBuffer(size);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 7 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;/**&#xD; * Base class for asset load/save helpers.&#xD; * @abstract&#xD; */&#xD;var Helper = function () {&#xD;    function Helper(parent) {&#xD;        _classCallCheck(this, Helper);&#xD;&#xD;        this.parent = parent;&#xD;    }&#xD;&#xD;    /**&#xD;     * Fetch an asset but don&apos;t process dependencies.&#xD;     * @param {AssetType} assetType - The type of asset to fetch.&#xD;     * @param {string} assetId - The ID of the asset to fetch: a project ID, MD5, etc.&#xD;     * @return {Promise.&lt;Asset&gt;} A promise for the contents of the asset.&#xD;     */&#xD;&#xD;&#xD;    _createClass(Helper, [{&#xD;        key: "load",&#xD;        value: function load(assetType, assetId) {&#xD;            return Promise.reject(new Error("No asset of type " + assetType + " for ID " + assetId));&#xD;        }&#xD;    }]);&#xD;&#xD;    return Helper;&#xD;}();&#xD;&#xD;module.exports = Helper;&#xD;&#xD;/***/ }),&#xD;/* 8 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;if (!process.version ||&#xD;    process.version.indexOf(&apos;v0.&apos;) === 0 ||&#xD;    process.version.indexOf(&apos;v1.&apos;) === 0 &amp;&amp; process.version.indexOf(&apos;v1.8.&apos;) !== 0) {&#xD;  module.exports = nextTick;&#xD;} else {&#xD;  module.exports = process.nextTick;&#xD;}&#xD;&#xD;function nextTick(fn, arg1, arg2, arg3) {&#xD;  if (typeof fn !== &apos;function&apos;) {&#xD;    throw new TypeError(&apos;"callback" argument must be a function&apos;);&#xD;  }&#xD;  var len = arguments.length;&#xD;  var args, i;&#xD;  switch (len) {&#xD;  case 0:&#xD;  case 1:&#xD;    return process.nextTick(fn);&#xD;  case 2:&#xD;    return process.nextTick(function afterTickOne() {&#xD;      fn.call(null, arg1);&#xD;    });&#xD;  case 3:&#xD;    return process.nextTick(function afterTickTwo() {&#xD;      fn.call(null, arg1, arg2);&#xD;    });&#xD;  case 4:&#xD;    return process.nextTick(function afterTickThree() {&#xD;      fn.call(null, arg1, arg2, arg3);&#xD;    });&#xD;  default:&#xD;    args = new Array(len - 1);&#xD;    i = 0;&#xD;    while (i &lt; args.length) {&#xD;      args[i++] = arguments[i];&#xD;    }&#xD;    return process.nextTick(function afterTick() {&#xD;      fn.apply(null, args);&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 9 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Stream = __webpack_require__(10);&#xD;if (process.env.READABLE_STREAM === &apos;disable&apos; &amp;&amp; Stream) {&#xD;  module.exports = Stream;&#xD;  exports = module.exports = Stream.Readable;&#xD;  exports.Readable = Stream.Readable;&#xD;  exports.Writable = Stream.Writable;&#xD;  exports.Duplex = Stream.Duplex;&#xD;  exports.Transform = Stream.Transform;&#xD;  exports.PassThrough = Stream.PassThrough;&#xD;  exports.Stream = Stream;&#xD;} else {&#xD;  exports = module.exports = __webpack_require__(14);&#xD;  exports.Stream = Stream || exports;&#xD;  exports.Readable = exports;&#xD;  exports.Writable = __webpack_require__(16);&#xD;  exports.Duplex = __webpack_require__(0);&#xD;  exports.Transform = __webpack_require__(15);&#xD;  exports.PassThrough = __webpack_require__(45);&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 10 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(29);&#xD;&#xD;/***/ }),&#xD;/* 11 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var DataFormat = __webpack_require__(12);&#xD;&#xD;/**&#xD; * Enumeration of the supported asset types.&#xD; * @type {Object.&lt;String,AssetType&gt;}&#xD; * @typedef {Object} AssetType - Information about a supported asset type.&#xD; * @property {string} contentType - the MIME type associated with this kind of data. Useful for data URIs, etc.&#xD; * @property {string} name - The human-readable name of this asset type.&#xD; * @property {DataFormat} runtimeFormat - The format used for runtime, in-memory storage of this asset. For example, a&#xD; *     project stored in SB2 format on disk will be returned as JSON when loaded into memory.&#xD; * @property {boolean} immutable - Indicates if the asset id is determined by the asset content.&#xD; */&#xD;var AssetType = {&#xD;    ImageBitmap: {&#xD;        contentType: &apos;image/png&apos;,&#xD;        name: &apos;ImageBitmap&apos;,&#xD;        runtimeFormat: DataFormat.PNG,&#xD;        immutable: true&#xD;    },&#xD;    ImageVector: {&#xD;        contentType: &apos;image/svg+xml&apos;,&#xD;        name: &apos;ImageVector&apos;,&#xD;        runtimeFormat: DataFormat.SVG,&#xD;        immutable: true&#xD;    },&#xD;    Project: {&#xD;        contentType: &apos;application/json&apos;,&#xD;        name: &apos;Project&apos;,&#xD;        runtimeFormat: DataFormat.JSON,&#xD;        immutable: false&#xD;    },&#xD;    Sound: {&#xD;        contentType: &apos;audio/x-wav&apos;,&#xD;        name: &apos;Sound&apos;,&#xD;        runtimeFormat: DataFormat.WAV,&#xD;        immutable: true&#xD;    },&#xD;    Sprite: {&#xD;        contentType: &apos;application/json&apos;,&#xD;        name: &apos;Sprite&apos;,&#xD;        runtimeFormat: DataFormat.JSON,&#xD;        immutable: true&#xD;    }&#xD;};&#xD;&#xD;module.exports = AssetType;&#xD;&#xD;/***/ }),&#xD;/* 12 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Enumeration of the supported data formats.&#xD; * @type {Object.&lt;string,string&gt;}&#xD; */&#xD;var DataFormat = {&#xD;    JSON: &apos;json&apos;,&#xD;    PNG: &apos;png&apos;,&#xD;    SB2: &apos;sb2&apos;,&#xD;    SVG: &apos;svg&apos;,&#xD;    WAV: &apos;wav&apos;&#xD;};&#xD;&#xD;module.exports = DataFormat;&#xD;&#xD;/***/ }),&#xD;/* 13 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = typeof Promise === &apos;function&apos; ? Promise : __webpack_require__(43);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 14 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = Readable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(8);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var isArray = __webpack_require__(48);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Readable.ReadableState = ReadableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var EE = __webpack_require__(19).EventEmitter;&#xD;&#xD;var EElistenerCount = function (emitter, type) {&#xD;  return emitter.listeners(type).length;&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream = __webpack_require__(17);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(3).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(6);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(1);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var debugUtil = __webpack_require__(4);&#xD;var debug = void 0;&#xD;if (debugUtil &amp;&amp; debugUtil.debuglog) {&#xD;  debug = debugUtil.debuglog(&apos;stream&apos;);&#xD;} else {&#xD;  debug = function () {};&#xD;}&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var BufferList = __webpack_require__(46);&#xD;var StringDecoder;&#xD;&#xD;util.inherits(Readable, Stream);&#xD;&#xD;var kProxyEvents = [&apos;error&apos;, &apos;close&apos;, &apos;destroy&apos;, &apos;pause&apos;, &apos;resume&apos;];&#xD;&#xD;function prependListener(emitter, event, fn) {&#xD;  // Sadly this is not cacheable as some libraries bundle their own&#xD;  // event emitter implementation with them.&#xD;  if (typeof emitter.prependListener === &apos;function&apos;) {&#xD;    return emitter.prependListener(event, fn);&#xD;  } else {&#xD;    // This is a hack to make sure that our error handler is attached before any&#xD;    // userland ones.  NEVER DO THIS. This is here only because this code needs&#xD;    // to continue to work with older versions of Node.js that do not include&#xD;    // the prependListener() method. The goal is to eventually remove this hack.&#xD;    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];&#xD;  }&#xD;}&#xD;&#xD;function ReadableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(0);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag. Used to make read(n) ignore n and to&#xD;  // make all the buffer merging and length checks go away&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;&#xD;&#xD;  // the point at which it stops calling _read() to fill the buffer&#xD;  // Note: 0 is a valid value, means "don&apos;t call _read preemptively ever"&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126;&#126;this.highWaterMark;&#xD;&#xD;  // A linked list is used to store data chunks instead of an array because the&#xD;  // linked list can remove elements from the beginning faster than&#xD;  // array.shift()&#xD;  this.buffer = new BufferList();&#xD;  this.length = 0;&#xD;  this.pipes = null;&#xD;  this.pipesCount = 0;&#xD;  this.flowing = null;&#xD;  this.ended = false;&#xD;  this.endEmitted = false;&#xD;  this.reading = false;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // whenever we return null, then we set a flag to say&#xD;  // that we&apos;re awaiting a &apos;readable&apos; event emission.&#xD;  this.needReadable = false;&#xD;  this.emittedReadable = false;&#xD;  this.readableListening = false;&#xD;  this.resumeScheduled = false;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // when piping, we only care about &apos;readable&apos; events that happen&#xD;  // after read()ing all the bytes and not getting any pushback.&#xD;  this.ranOut = false;&#xD;&#xD;  // the number of writers that are awaiting a drain event in .pipe()s&#xD;  this.awaitDrain = 0;&#xD;&#xD;  // if true, a maybeReadMore has been scheduled&#xD;  this.readingMore = false;&#xD;&#xD;  this.decoder = null;&#xD;  this.encoding = null;&#xD;  if (options.encoding) {&#xD;    if (!StringDecoder) StringDecoder = __webpack_require__(18).StringDecoder;&#xD;    this.decoder = new StringDecoder(options.encoding);&#xD;    this.encoding = options.encoding;&#xD;  }&#xD;}&#xD;&#xD;function Readable(options) {&#xD;  Duplex = Duplex || __webpack_require__(0);&#xD;&#xD;  if (!(this instanceof Readable)) return new Readable(options);&#xD;&#xD;  this._readableState = new ReadableState(options, this);&#xD;&#xD;  // legacy&#xD;  this.readable = true;&#xD;&#xD;  if (options &amp;&amp; typeof options.read === &apos;function&apos;) this._read = options.read;&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Manually shove something into the read() buffer.&#xD;// This returns true if the highWaterMark has not been hit yet,&#xD;// similar to how Writable.write() returns true if you should&#xD;// write() some more.&#xD;Readable.prototype.push = function (chunk, encoding) {&#xD;  var state = this._readableState;&#xD;&#xD;  if (!state.objectMode &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    encoding = encoding || state.defaultEncoding;&#xD;    if (encoding !== state.encoding) {&#xD;      chunk = bufferShim.from(chunk, encoding);&#xD;      encoding = &apos;&apos;;&#xD;    }&#xD;  }&#xD;&#xD;  return readableAddChunk(this, state, chunk, encoding, false);&#xD;};&#xD;&#xD;// Unshift should *always* be something directly out of read()&#xD;Readable.prototype.unshift = function (chunk) {&#xD;  var state = this._readableState;&#xD;  return readableAddChunk(this, state, chunk, &apos;&apos;, true);&#xD;};&#xD;&#xD;Readable.prototype.isPaused = function () {&#xD;  return this._readableState.flowing === false;&#xD;};&#xD;&#xD;function readableAddChunk(stream, state, chunk, encoding, addToFront) {&#xD;  var er = chunkInvalid(state, chunk);&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;  } else if (chunk === null) {&#xD;    state.reading = false;&#xD;    onEofChunk(stream, state);&#xD;  } else if (state.objectMode || chunk &amp;&amp; chunk.length &gt; 0) {&#xD;    if (state.ended &amp;&amp; !addToFront) {&#xD;      var e = new Error(&apos;stream.push() after EOF&apos;);&#xD;      stream.emit(&apos;error&apos;, e);&#xD;    } else if (state.endEmitted &amp;&amp; addToFront) {&#xD;      var _e = new Error(&apos;stream.unshift() after end event&apos;);&#xD;      stream.emit(&apos;error&apos;, _e);&#xD;    } else {&#xD;      var skipAdd;&#xD;      if (state.decoder &amp;&amp; !addToFront &amp;&amp; !encoding) {&#xD;        chunk = state.decoder.write(chunk);&#xD;        skipAdd = !state.objectMode &amp;&amp; chunk.length === 0;&#xD;      }&#xD;&#xD;      if (!addToFront) state.reading = false;&#xD;&#xD;      // Don&apos;t add to the buffer if we&apos;ve decoded to an empty string chunk and&#xD;      // we&apos;re not in object mode&#xD;      if (!skipAdd) {&#xD;        // if we want the data now, just emit it.&#xD;        if (state.flowing &amp;&amp; state.length === 0 &amp;&amp; !state.sync) {&#xD;          stream.emit(&apos;data&apos;, chunk);&#xD;          stream.read(0);&#xD;        } else {&#xD;          // update the buffer info.&#xD;          state.length += state.objectMode ? 1 : chunk.length;&#xD;          if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);&#xD;&#xD;          if (state.needReadable) emitReadable(stream);&#xD;        }&#xD;      }&#xD;&#xD;      maybeReadMore(stream, state);&#xD;    }&#xD;  } else if (!addToFront) {&#xD;    state.reading = false;&#xD;  }&#xD;&#xD;  return needMoreData(state);&#xD;}&#xD;&#xD;// if it&apos;s past the high water mark, we can push in some more.&#xD;// Also, if we have no data yet, we can stand some&#xD;// more bytes.  This is to work around cases where hwm=0,&#xD;// such as the repl.  Also, if the push() triggered a&#xD;// readable event, and the user called read(largeNumber) such that&#xD;// needReadable was set, then we ought to push more, so that another&#xD;// &apos;readable&apos; event will be triggered.&#xD;function needMoreData(state) {&#xD;  return !state.ended &amp;&amp; (state.needReadable || state.length &lt; state.highWaterMark || state.length === 0);&#xD;}&#xD;&#xD;// backwards compatibility.&#xD;Readable.prototype.setEncoding = function (enc) {&#xD;  if (!StringDecoder) StringDecoder = __webpack_require__(18).StringDecoder;&#xD;  this._readableState.decoder = new StringDecoder(enc);&#xD;  this._readableState.encoding = enc;&#xD;  return this;&#xD;};&#xD;&#xD;// Don&apos;t raise the hwm &gt; 8MB&#xD;var MAX_HWM = 0x800000;&#xD;function computeNewHighWaterMark(n) {&#xD;  if (n &gt;= MAX_HWM) {&#xD;    n = MAX_HWM;&#xD;  } else {&#xD;    // Get the next highest power of 2 to prevent increasing hwm excessively in&#xD;    // tiny amounts&#xD;    n--;&#xD;    n |= n &gt;&gt;&gt; 1;&#xD;    n |= n &gt;&gt;&gt; 2;&#xD;    n |= n &gt;&gt;&gt; 4;&#xD;    n |= n &gt;&gt;&gt; 8;&#xD;    n |= n &gt;&gt;&gt; 16;&#xD;    n++;&#xD;  }&#xD;  return n;&#xD;}&#xD;&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function howMuchToRead(n, state) {&#xD;  if (n &lt;= 0 || state.length === 0 &amp;&amp; state.ended) return 0;&#xD;  if (state.objectMode) return 1;&#xD;  if (n !== n) {&#xD;    // Only flow one buffer at a time&#xD;    if (state.flowing &amp;&amp; state.length) return state.buffer.head.data.length;else return state.length;&#xD;  }&#xD;  // If we&apos;re asking for more than the current hwm, then raise the hwm.&#xD;  if (n &gt; state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);&#xD;  if (n &lt;= state.length) return n;&#xD;  // Don&apos;t have enough&#xD;  if (!state.ended) {&#xD;    state.needReadable = true;&#xD;    return 0;&#xD;  }&#xD;  return state.length;&#xD;}&#xD;&#xD;// you can override either this method, or the async _read(n) below.&#xD;Readable.prototype.read = function (n) {&#xD;  debug(&apos;read&apos;, n);&#xD;  n = parseInt(n, 10);&#xD;  var state = this._readableState;&#xD;  var nOrig = n;&#xD;&#xD;  if (n !== 0) state.emittedReadable = false;&#xD;&#xD;  // if we&apos;re doing read(0) to trigger a readable event, but we&#xD;  // already have a bunch of data in the buffer, then just trigger&#xD;  // the &apos;readable&apos; event and move on.&#xD;  if (n === 0 &amp;&amp; state.needReadable &amp;&amp; (state.length &gt;= state.highWaterMark || state.ended)) {&#xD;    debug(&apos;read: emitReadable&apos;, state.length, state.ended);&#xD;    if (state.length === 0 &amp;&amp; state.ended) endReadable(this);else emitReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  n = howMuchToRead(n, state);&#xD;&#xD;  // if we&apos;ve ended, and we&apos;re now clear, then finish it up.&#xD;  if (n === 0 &amp;&amp; state.ended) {&#xD;    if (state.length === 0) endReadable(this);&#xD;    return null;&#xD;  }&#xD;&#xD;  // All the actual chunk generation logic needs to be&#xD;  // *below* the call to _read.  The reason is that in certain&#xD;  // synthetic stream cases, such as passthrough streams, _read&#xD;  // may be a completely synchronous operation which may change&#xD;  // the state of the read buffer, providing enough data when&#xD;  // before there was *not* enough.&#xD;  //&#xD;  // So, the steps are:&#xD;  // 1. Figure out what the state of things will be after we do&#xD;  // a read from the buffer.&#xD;  //&#xD;  // 2. If that resulting state will trigger a _read, then call _read.&#xD;  // Note that this may be asynchronous, or synchronous.  Yes, it is&#xD;  // deeply ugly to write APIs this way, but that still doesn&apos;t mean&#xD;  // that the Readable class should behave improperly, as streams are&#xD;  // designed to be sync/async agnostic.&#xD;  // Take note if the _read call is sync or async (ie, if the read call&#xD;  // has returned yet), so that we know whether or not it&apos;s safe to emit&#xD;  // &apos;readable&apos; etc.&#xD;  //&#xD;  // 3. Actually pull the requested chunks out of the buffer and return.&#xD;&#xD;  // if we need a readable event, then we need to do some reading.&#xD;  var doRead = state.needReadable;&#xD;  debug(&apos;need readable&apos;, doRead);&#xD;&#xD;  // if we currently have less than the highWaterMark, then also read some&#xD;  if (state.length === 0 || state.length - n &lt; state.highWaterMark) {&#xD;    doRead = true;&#xD;    debug(&apos;length less than watermark&apos;, doRead);&#xD;  }&#xD;&#xD;  // however, if we&apos;ve ended, then there&apos;s no point, and if we&apos;re already&#xD;  // reading, then it&apos;s unnecessary.&#xD;  if (state.ended || state.reading) {&#xD;    doRead = false;&#xD;    debug(&apos;reading or ended&apos;, doRead);&#xD;  } else if (doRead) {&#xD;    debug(&apos;do read&apos;);&#xD;    state.reading = true;&#xD;    state.sync = true;&#xD;    // if the length is currently zero, then we *need* a readable event.&#xD;    if (state.length === 0) state.needReadable = true;&#xD;    // call internal read method&#xD;    this._read(state.highWaterMark);&#xD;    state.sync = false;&#xD;    // If _read pushed data synchronously, then `reading` will be false,&#xD;    // and we need to re-evaluate how much data we can return to the user.&#xD;    if (!state.reading) n = howMuchToRead(nOrig, state);&#xD;  }&#xD;&#xD;  var ret;&#xD;  if (n &gt; 0) ret = fromList(n, state);else ret = null;&#xD;&#xD;  if (ret === null) {&#xD;    state.needReadable = true;&#xD;    n = 0;&#xD;  } else {&#xD;    state.length -= n;&#xD;  }&#xD;&#xD;  if (state.length === 0) {&#xD;    // If we have nothing in the buffer, then we want to know&#xD;    // as soon as we *do* get something into the buffer.&#xD;    if (!state.ended) state.needReadable = true;&#xD;&#xD;    // If we tried to read() past the EOF, then emit end on the next tick.&#xD;    if (nOrig !== n &amp;&amp; state.ended) endReadable(this);&#xD;  }&#xD;&#xD;  if (ret !== null) this.emit(&apos;data&apos;, ret);&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;function chunkInvalid(state, chunk) {&#xD;  var er = null;&#xD;  if (!Buffer.isBuffer(chunk) &amp;&amp; typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== null &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  return er;&#xD;}&#xD;&#xD;function onEofChunk(stream, state) {&#xD;  if (state.ended) return;&#xD;  if (state.decoder) {&#xD;    var chunk = state.decoder.end();&#xD;    if (chunk &amp;&amp; chunk.length) {&#xD;      state.buffer.push(chunk);&#xD;      state.length += state.objectMode ? 1 : chunk.length;&#xD;    }&#xD;  }&#xD;  state.ended = true;&#xD;&#xD;  // emit &apos;readable&apos; now to make sure it gets picked up.&#xD;  emitReadable(stream);&#xD;}&#xD;&#xD;// Don&apos;t emit readable right away in sync mode, because this can trigger&#xD;// another read() call =&gt; stack overflow.  This way, it might trigger&#xD;// a nextTick recursion warning, but that&apos;s not so bad.&#xD;function emitReadable(stream) {&#xD;  var state = stream._readableState;&#xD;  state.needReadable = false;&#xD;  if (!state.emittedReadable) {&#xD;    debug(&apos;emitReadable&apos;, state.flowing);&#xD;    state.emittedReadable = true;&#xD;    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);&#xD;  }&#xD;}&#xD;&#xD;function emitReadable_(stream) {&#xD;  debug(&apos;emit readable&apos;);&#xD;  stream.emit(&apos;readable&apos;);&#xD;  flow(stream);&#xD;}&#xD;&#xD;// at this point, the user has presumably seen the &apos;readable&apos; event,&#xD;// and called read() to consume some data.  that may have triggered&#xD;// in turn another _read(n) call, in which case reading = true if&#xD;// it&apos;s in progress.&#xD;// However, if we&apos;re not ended, or reading, and the length &lt; hwm,&#xD;// then go ahead and try to read some more preemptively.&#xD;function maybeReadMore(stream, state) {&#xD;  if (!state.readingMore) {&#xD;    state.readingMore = true;&#xD;    processNextTick(maybeReadMore_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function maybeReadMore_(stream, state) {&#xD;  var len = state.length;&#xD;  while (!state.reading &amp;&amp; !state.flowing &amp;&amp; !state.ended &amp;&amp; state.length &lt; state.highWaterMark) {&#xD;    debug(&apos;maybeReadMore read 0&apos;);&#xD;    stream.read(0);&#xD;    if (len === state.length)&#xD;      // didn&apos;t get any data, stop spinning.&#xD;      break;else len = state.length;&#xD;  }&#xD;  state.readingMore = false;&#xD;}&#xD;&#xD;// abstract method.  to be overridden in specific implementation classes.&#xD;// call cb(er, data) where data is &lt;= n in length.&#xD;// for virtual (non-string, non-buffer) streams, "length" is somewhat&#xD;// arbitrary, and perhaps not very meaningful.&#xD;Readable.prototype._read = function (n) {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;_read() is not implemented&apos;));&#xD;};&#xD;&#xD;Readable.prototype.pipe = function (dest, pipeOpts) {&#xD;  var src = this;&#xD;  var state = this._readableState;&#xD;&#xD;  switch (state.pipesCount) {&#xD;    case 0:&#xD;      state.pipes = dest;&#xD;      break;&#xD;    case 1:&#xD;      state.pipes = [state.pipes, dest];&#xD;      break;&#xD;    default:&#xD;      state.pipes.push(dest);&#xD;      break;&#xD;  }&#xD;  state.pipesCount += 1;&#xD;  debug(&apos;pipe count=%d opts=%j&apos;, state.pipesCount, pipeOpts);&#xD;&#xD;  var doEnd = (!pipeOpts || pipeOpts.end !== false) &amp;&amp; dest !== process.stdout &amp;&amp; dest !== process.stderr;&#xD;&#xD;  var endFn = doEnd ? onend : cleanup;&#xD;  if (state.endEmitted) processNextTick(endFn);else src.once(&apos;end&apos;, endFn);&#xD;&#xD;  dest.on(&apos;unpipe&apos;, onunpipe);&#xD;  function onunpipe(readable) {&#xD;    debug(&apos;onunpipe&apos;);&#xD;    if (readable === src) {&#xD;      cleanup();&#xD;    }&#xD;  }&#xD;&#xD;  function onend() {&#xD;    debug(&apos;onend&apos;);&#xD;    dest.end();&#xD;  }&#xD;&#xD;  // when the dest drains, it reduces the awaitDrain counter&#xD;  // on the source.  This would be more elegant with a .once()&#xD;  // handler in flow(), but adding and removing repeatedly is&#xD;  // too slow.&#xD;  var ondrain = pipeOnDrain(src);&#xD;  dest.on(&apos;drain&apos;, ondrain);&#xD;&#xD;  var cleanedUp = false;&#xD;  function cleanup() {&#xD;    debug(&apos;cleanup&apos;);&#xD;    // cleanup event handlers once the pipe is broken&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    dest.removeListener(&apos;drain&apos;, ondrain);&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    dest.removeListener(&apos;unpipe&apos;, onunpipe);&#xD;    src.removeListener(&apos;end&apos;, onend);&#xD;    src.removeListener(&apos;end&apos;, cleanup);&#xD;    src.removeListener(&apos;data&apos;, ondata);&#xD;&#xD;    cleanedUp = true;&#xD;&#xD;    // if the reader is waiting for a drain event from this&#xD;    // specific writer, then it would cause it to never start&#xD;    // flowing again.&#xD;    // So, if this is awaiting a drain, then we just call it now.&#xD;    // If we don&apos;t know, then assume that we are waiting for one.&#xD;    if (state.awaitDrain &amp;&amp; (!dest._writableState || dest._writableState.needDrain)) ondrain();&#xD;  }&#xD;&#xD;  // If the user pushes more data while we&apos;re writing to dest then we&apos;ll end up&#xD;  // in ondata again. However, we only want to increase awaitDrain once because&#xD;  // dest will only emit one &apos;drain&apos; event for the multiple writes.&#xD;  // =&gt; Introduce a guard on increasing awaitDrain.&#xD;  var increasedAwaitDrain = false;&#xD;  src.on(&apos;data&apos;, ondata);&#xD;  function ondata(chunk) {&#xD;    debug(&apos;ondata&apos;);&#xD;    increasedAwaitDrain = false;&#xD;    var ret = dest.write(chunk);&#xD;    if (false === ret &amp;&amp; !increasedAwaitDrain) {&#xD;      // If the user unpiped during `dest.write()`, it is possible&#xD;      // to get stuck in a permanently paused state if that write&#xD;      // also returned false.&#xD;      // =&gt; Check whether `dest` is still a piping destination.&#xD;      if ((state.pipesCount === 1 &amp;&amp; state.pipes === dest || state.pipesCount &gt; 1 &amp;&amp; indexOf(state.pipes, dest) !== -1) &amp;&amp; !cleanedUp) {&#xD;        debug(&apos;false write response, pause&apos;, src._readableState.awaitDrain);&#xD;        src._readableState.awaitDrain++;&#xD;        increasedAwaitDrain = true;&#xD;      }&#xD;      src.pause();&#xD;    }&#xD;  }&#xD;&#xD;  // if the dest has an error, then stop piping into it.&#xD;  // however, don&apos;t suppress the throwing behavior for this.&#xD;  function onerror(er) {&#xD;    debug(&apos;onerror&apos;, er);&#xD;    unpipe();&#xD;    dest.removeListener(&apos;error&apos;, onerror);&#xD;    if (EElistenerCount(dest, &apos;error&apos;) === 0) dest.emit(&apos;error&apos;, er);&#xD;  }&#xD;&#xD;  // Make sure our error handler is attached before userland ones.&#xD;  prependListener(dest, &apos;error&apos;, onerror);&#xD;&#xD;  // Both close and finish should trigger unpipe, but only once.&#xD;  function onclose() {&#xD;    dest.removeListener(&apos;finish&apos;, onfinish);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;close&apos;, onclose);&#xD;  function onfinish() {&#xD;    debug(&apos;onfinish&apos;);&#xD;    dest.removeListener(&apos;close&apos;, onclose);&#xD;    unpipe();&#xD;  }&#xD;  dest.once(&apos;finish&apos;, onfinish);&#xD;&#xD;  function unpipe() {&#xD;    debug(&apos;unpipe&apos;);&#xD;    src.unpipe(dest);&#xD;  }&#xD;&#xD;  // tell the dest that it&apos;s being piped to&#xD;  dest.emit(&apos;pipe&apos;, src);&#xD;&#xD;  // start the flow if it hasn&apos;t been started already.&#xD;  if (!state.flowing) {&#xD;    debug(&apos;pipe resume&apos;);&#xD;    src.resume();&#xD;  }&#xD;&#xD;  return dest;&#xD;};&#xD;&#xD;function pipeOnDrain(src) {&#xD;  return function () {&#xD;    var state = src._readableState;&#xD;    debug(&apos;pipeOnDrain&apos;, state.awaitDrain);&#xD;    if (state.awaitDrain) state.awaitDrain--;&#xD;    if (state.awaitDrain === 0 &amp;&amp; EElistenerCount(src, &apos;data&apos;)) {&#xD;      state.flowing = true;&#xD;      flow(src);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;Readable.prototype.unpipe = function (dest) {&#xD;  var state = this._readableState;&#xD;&#xD;  // if we&apos;re not piping anywhere, then do nothing.&#xD;  if (state.pipesCount === 0) return this;&#xD;&#xD;  // just one destination.  most common case.&#xD;  if (state.pipesCount === 1) {&#xD;    // passed in one, but it&apos;s not the right one.&#xD;    if (dest &amp;&amp; dest !== state.pipes) return this;&#xD;&#xD;    if (!dest) dest = state.pipes;&#xD;&#xD;    // got a match.&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;    if (dest) dest.emit(&apos;unpipe&apos;, this);&#xD;    return this;&#xD;  }&#xD;&#xD;  // slow case. multiple pipe destinations.&#xD;&#xD;  if (!dest) {&#xD;    // remove all.&#xD;    var dests = state.pipes;&#xD;    var len = state.pipesCount;&#xD;    state.pipes = null;&#xD;    state.pipesCount = 0;&#xD;    state.flowing = false;&#xD;&#xD;    for (var i = 0; i &lt; len; i++) {&#xD;      dests[i].emit(&apos;unpipe&apos;, this);&#xD;    }return this;&#xD;  }&#xD;&#xD;  // try to find the right one.&#xD;  var index = indexOf(state.pipes, dest);&#xD;  if (index === -1) return this;&#xD;&#xD;  state.pipes.splice(index, 1);&#xD;  state.pipesCount -= 1;&#xD;  if (state.pipesCount === 1) state.pipes = state.pipes[0];&#xD;&#xD;  dest.emit(&apos;unpipe&apos;, this);&#xD;&#xD;  return this;&#xD;};&#xD;&#xD;// set up data events if they are asked for&#xD;// Ensure readable listeners eventually get something&#xD;Readable.prototype.on = function (ev, fn) {&#xD;  var res = Stream.prototype.on.call(this, ev, fn);&#xD;&#xD;  if (ev === &apos;data&apos;) {&#xD;    // Start flowing on next tick if stream isn&apos;t explicitly paused&#xD;    if (this._readableState.flowing !== false) this.resume();&#xD;  } else if (ev === &apos;readable&apos;) {&#xD;    var state = this._readableState;&#xD;    if (!state.endEmitted &amp;&amp; !state.readableListening) {&#xD;      state.readableListening = state.needReadable = true;&#xD;      state.emittedReadable = false;&#xD;      if (!state.reading) {&#xD;        processNextTick(nReadingNextTick, this);&#xD;      } else if (state.length) {&#xD;        emitReadable(this, state);&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  return res;&#xD;};&#xD;Readable.prototype.addListener = Readable.prototype.on;&#xD;&#xD;function nReadingNextTick(self) {&#xD;  debug(&apos;readable nexttick read 0&apos;);&#xD;  self.read(0);&#xD;}&#xD;&#xD;// pause() and resume() are remnants of the legacy readable stream API&#xD;// If the user uses them, then switch into old mode.&#xD;Readable.prototype.resume = function () {&#xD;  var state = this._readableState;&#xD;  if (!state.flowing) {&#xD;    debug(&apos;resume&apos;);&#xD;    state.flowing = true;&#xD;    resume(this, state);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function resume(stream, state) {&#xD;  if (!state.resumeScheduled) {&#xD;    state.resumeScheduled = true;&#xD;    processNextTick(resume_, stream, state);&#xD;  }&#xD;}&#xD;&#xD;function resume_(stream, state) {&#xD;  if (!state.reading) {&#xD;    debug(&apos;resume read 0&apos;);&#xD;    stream.read(0);&#xD;  }&#xD;&#xD;  state.resumeScheduled = false;&#xD;  state.awaitDrain = 0;&#xD;  stream.emit(&apos;resume&apos;);&#xD;  flow(stream);&#xD;  if (state.flowing &amp;&amp; !state.reading) stream.read(0);&#xD;}&#xD;&#xD;Readable.prototype.pause = function () {&#xD;  debug(&apos;call pause flowing=%j&apos;, this._readableState.flowing);&#xD;  if (false !== this._readableState.flowing) {&#xD;    debug(&apos;pause&apos;);&#xD;    this._readableState.flowing = false;&#xD;    this.emit(&apos;pause&apos;);&#xD;  }&#xD;  return this;&#xD;};&#xD;&#xD;function flow(stream) {&#xD;  var state = stream._readableState;&#xD;  debug(&apos;flow&apos;, state.flowing);&#xD;  while (state.flowing &amp;&amp; stream.read() !== null) {}&#xD;}&#xD;&#xD;// wrap an old-style stream as the async data source.&#xD;// This is *not* part of the readable stream interface.&#xD;// It is an ugly unfortunate mess of history.&#xD;Readable.prototype.wrap = function (stream) {&#xD;  var state = this._readableState;&#xD;  var paused = false;&#xD;&#xD;  var self = this;&#xD;  stream.on(&apos;end&apos;, function () {&#xD;    debug(&apos;wrapped end&apos;);&#xD;    if (state.decoder &amp;&amp; !state.ended) {&#xD;      var chunk = state.decoder.end();&#xD;      if (chunk &amp;&amp; chunk.length) self.push(chunk);&#xD;    }&#xD;&#xD;    self.push(null);&#xD;  });&#xD;&#xD;  stream.on(&apos;data&apos;, function (chunk) {&#xD;    debug(&apos;wrapped data&apos;);&#xD;    if (state.decoder) chunk = state.decoder.write(chunk);&#xD;&#xD;    // don&apos;t skip over falsy values in objectMode&#xD;    if (state.objectMode &amp;&amp; (chunk === null || chunk === undefined)) return;else if (!state.objectMode &amp;&amp; (!chunk || !chunk.length)) return;&#xD;&#xD;    var ret = self.push(chunk);&#xD;    if (!ret) {&#xD;      paused = true;&#xD;      stream.pause();&#xD;    }&#xD;  });&#xD;&#xD;  // proxy all the other methods.&#xD;  // important when wrapping filters and duplexes.&#xD;  for (var i in stream) {&#xD;    if (this[i] === undefined &amp;&amp; typeof stream[i] === &apos;function&apos;) {&#xD;      this[i] = function (method) {&#xD;        return function () {&#xD;          return stream[method].apply(stream, arguments);&#xD;        };&#xD;      }(i);&#xD;    }&#xD;  }&#xD;&#xD;  // proxy certain important events.&#xD;  for (var n = 0; n &lt; kProxyEvents.length; n++) {&#xD;    stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));&#xD;  }&#xD;&#xD;  // when we try to consume some more bytes, simply unpause the&#xD;  // underlying stream.&#xD;  self._read = function (n) {&#xD;    debug(&apos;wrapped _read&apos;, n);&#xD;    if (paused) {&#xD;      paused = false;&#xD;      stream.resume();&#xD;    }&#xD;  };&#xD;&#xD;  return self;&#xD;};&#xD;&#xD;// exposed for testing purposes only.&#xD;Readable._fromList = fromList;&#xD;&#xD;// Pluck off n bytes from an array of buffers.&#xD;// Length is the combined lengths of all the buffers in the list.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromList(n, state) {&#xD;  // nothing buffered&#xD;  if (state.length === 0) return null;&#xD;&#xD;  var ret;&#xD;  if (state.objectMode) ret = state.buffer.shift();else if (!n || n &gt;= state.length) {&#xD;    // read it all, truncate the list&#xD;    if (state.decoder) ret = state.buffer.join(&apos;&apos;);else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);&#xD;    state.buffer.clear();&#xD;  } else {&#xD;    // read part of list&#xD;    ret = fromListPartial(n, state.buffer, state.decoder);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;// Extracts only enough buffered data to satisfy the amount requested.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function fromListPartial(n, list, hasStrings) {&#xD;  var ret;&#xD;  if (n &lt; list.head.data.length) {&#xD;    // slice is the same for buffers and strings&#xD;    ret = list.head.data.slice(0, n);&#xD;    list.head.data = list.head.data.slice(n);&#xD;  } else if (n === list.head.data.length) {&#xD;    // first chunk is a perfect match&#xD;    ret = list.shift();&#xD;  } else {&#xD;    // result spans more than one buffer&#xD;    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of characters from the list of buffered data&#xD;// chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBufferString(n, list) {&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  var ret = p.data;&#xD;  n -= ret.length;&#xD;  while (p = p.next) {&#xD;    var str = p.data;&#xD;    var nb = n &gt; str.length ? str.length : n;&#xD;    if (nb === str.length) ret += str;else ret += str.slice(0, n);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === str.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = str.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;// Copies a specified amount of bytes from the list of buffered data chunks.&#xD;// This function is designed to be inlinable, so please take care when making&#xD;// changes to the function body.&#xD;function copyFromBuffer(n, list) {&#xD;  var ret = bufferShim.allocUnsafe(n);&#xD;  var p = list.head;&#xD;  var c = 1;&#xD;  p.data.copy(ret);&#xD;  n -= p.data.length;&#xD;  while (p = p.next) {&#xD;    var buf = p.data;&#xD;    var nb = n &gt; buf.length ? buf.length : n;&#xD;    buf.copy(ret, ret.length - n, 0, nb);&#xD;    n -= nb;&#xD;    if (n === 0) {&#xD;      if (nb === buf.length) {&#xD;        ++c;&#xD;        if (p.next) list.head = p.next;else list.head = list.tail = null;&#xD;      } else {&#xD;        list.head = p;&#xD;        p.data = buf.slice(nb);&#xD;      }&#xD;      break;&#xD;    }&#xD;    ++c;&#xD;  }&#xD;  list.length -= c;&#xD;  return ret;&#xD;}&#xD;&#xD;function endReadable(stream) {&#xD;  var state = stream._readableState;&#xD;&#xD;  // If we get here before consuming all the bytes, then that is a&#xD;  // bug in node.  Should never happen.&#xD;  if (state.length &gt; 0) throw new Error(&apos;"endReadable()" called on non-empty stream&apos;);&#xD;&#xD;  if (!state.endEmitted) {&#xD;    state.ended = true;&#xD;    processNextTick(endReadableNT, state, stream);&#xD;  }&#xD;}&#xD;&#xD;function endReadableNT(state, stream) {&#xD;  // Check that we didn&apos;t get one last unshift.&#xD;  if (!state.endEmitted &amp;&amp; state.length === 0) {&#xD;    state.endEmitted = true;&#xD;    stream.readable = false;&#xD;    stream.emit(&apos;end&apos;);&#xD;  }&#xD;}&#xD;&#xD;function forEach(xs, f) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    f(xs[i], i);&#xD;  }&#xD;}&#xD;&#xD;function indexOf(xs, x) {&#xD;  for (var i = 0, l = xs.length; i &lt; l; i++) {&#xD;    if (xs[i] === x) return i;&#xD;  }&#xD;  return -1;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 15 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a transform stream is a readable/writable stream where you do&#xD;// something with the data.  Sometimes it&apos;s called a "filter",&#xD;// but that&apos;s not a great name for it, since that implies a thing where&#xD;// some bits pass through, and others are simply ignored.  (That would&#xD;// be a valid example of a transform, of course.)&#xD;//&#xD;// While the output is causally related to the input, it&apos;s not a&#xD;// necessarily symmetric or synchronous transformation.  For example,&#xD;// a zlib stream might take multiple plain-text writes(), and then&#xD;// emit a single compressed chunk some time in the future.&#xD;//&#xD;// Here&apos;s how this works:&#xD;//&#xD;// The Transform stream has all the aspects of the readable and writable&#xD;// stream classes.  When you write(chunk), that calls _write(chunk,cb)&#xD;// internally, and returns false if there&apos;s a lot of pending writes&#xD;// buffered up.  When you call read(), that calls _read(n) until&#xD;// there&apos;s enough pending readable data buffered up.&#xD;//&#xD;// In a transform stream, the written data is placed in a buffer.  When&#xD;// _read(n) is called, it transforms the queued up data, calling the&#xD;// buffered _write cb&apos;s as it consumes chunks.  If consuming a single&#xD;// written chunk would result in multiple output chunks, then the first&#xD;// outputted bit calls the readcb, and subsequent chunks just go into&#xD;// the read buffer, and will cause it to emit &apos;readable&apos; if necessary.&#xD;//&#xD;// This way, back-pressure is actually determined by the reading side,&#xD;// since _read has to be called to start processing a new chunk.  However,&#xD;// a pathological inflate type of transform can cause excessive buffering&#xD;// here.  For example, imagine a stream where every byte of input is&#xD;// interpreted as an integer from 0-255, and then results in that many&#xD;// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in&#xD;// 1kb of data being output.  In this case, you could write a very small&#xD;// amount of input, and end up with a very large amount of output.  In&#xD;// such a pathological inflating mechanism, there&apos;d be no way to tell&#xD;// the system to stop doing the transform.  A single 4MB write could&#xD;// cause the system to run out of memory.&#xD;//&#xD;// However, even in such a pathological case, only a single written chunk&#xD;// would be consumed, and then the rest would wait (un-transformed) until&#xD;// the results of the previous transformed chunk were consumed.&#xD;&#xD;&#xD;&#xD;module.exports = Transform;&#xD;&#xD;var Duplex = __webpack_require__(0);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(1);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Transform, Duplex);&#xD;&#xD;function TransformState(stream) {&#xD;  this.afterTransform = function (er, data) {&#xD;    return afterTransform(stream, er, data);&#xD;  };&#xD;&#xD;  this.needTransform = false;&#xD;  this.transforming = false;&#xD;  this.writecb = null;&#xD;  this.writechunk = null;&#xD;  this.writeencoding = null;&#xD;}&#xD;&#xD;function afterTransform(stream, er, data) {&#xD;  var ts = stream._transformState;&#xD;  ts.transforming = false;&#xD;&#xD;  var cb = ts.writecb;&#xD;&#xD;  if (!cb) return stream.emit(&apos;error&apos;, new Error(&apos;no writecb in Transform class&apos;));&#xD;&#xD;  ts.writechunk = null;&#xD;  ts.writecb = null;&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  cb(er);&#xD;&#xD;  var rs = stream._readableState;&#xD;  rs.reading = false;&#xD;  if (rs.needReadable || rs.length &lt; rs.highWaterMark) {&#xD;    stream._read(rs.highWaterMark);&#xD;  }&#xD;}&#xD;&#xD;function Transform(options) {&#xD;  if (!(this instanceof Transform)) return new Transform(options);&#xD;&#xD;  Duplex.call(this, options);&#xD;&#xD;  this._transformState = new TransformState(this);&#xD;&#xD;  var stream = this;&#xD;&#xD;  // start out asking for a readable event once data is transformed.&#xD;  this._readableState.needReadable = true;&#xD;&#xD;  // we have implemented the _read method, and done the other things&#xD;  // that Readable wants before the first _read call, so unset the&#xD;  // sync guard flag.&#xD;  this._readableState.sync = false;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.transform === &apos;function&apos;) this._transform = options.transform;&#xD;&#xD;    if (typeof options.flush === &apos;function&apos;) this._flush = options.flush;&#xD;  }&#xD;&#xD;  // When the writable side finishes, then flush out anything remaining.&#xD;  this.once(&apos;prefinish&apos;, function () {&#xD;    if (typeof this._flush === &apos;function&apos;) this._flush(function (er, data) {&#xD;      done(stream, er, data);&#xD;    });else done(stream);&#xD;  });&#xD;}&#xD;&#xD;Transform.prototype.push = function (chunk, encoding) {&#xD;  this._transformState.needTransform = false;&#xD;  return Duplex.prototype.push.call(this, chunk, encoding);&#xD;};&#xD;&#xD;// This is the part where you do stuff!&#xD;// override this function in implementation classes.&#xD;// &apos;chunk&apos; is an input chunk.&#xD;//&#xD;// Call `push(newChunk)` to pass along transformed output&#xD;// to the readable side.  You may call &apos;push&apos; zero or more times.&#xD;//&#xD;// Call `cb(err)` when you are done with this chunk.  If you pass&#xD;// an error, then that&apos;ll put the hurt on the whole operation.  If you&#xD;// never call cb(), then you&apos;ll never get another chunk.&#xD;Transform.prototype._transform = function (chunk, encoding, cb) {&#xD;  throw new Error(&apos;_transform() is not implemented&apos;);&#xD;};&#xD;&#xD;Transform.prototype._write = function (chunk, encoding, cb) {&#xD;  var ts = this._transformState;&#xD;  ts.writecb = cb;&#xD;  ts.writechunk = chunk;&#xD;  ts.writeencoding = encoding;&#xD;  if (!ts.transforming) {&#xD;    var rs = this._readableState;&#xD;    if (ts.needTransform || rs.needReadable || rs.length &lt; rs.highWaterMark) this._read(rs.highWaterMark);&#xD;  }&#xD;};&#xD;&#xD;// Doesn&apos;t matter what the args are here.&#xD;// _transform does all the work.&#xD;// That we got here means that the readable side wants more data.&#xD;Transform.prototype._read = function (n) {&#xD;  var ts = this._transformState;&#xD;&#xD;  if (ts.writechunk !== null &amp;&amp; ts.writecb &amp;&amp; !ts.transforming) {&#xD;    ts.transforming = true;&#xD;    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);&#xD;  } else {&#xD;    // mark that we need a transform, so that any data that comes in&#xD;    // will get processed, now that we&apos;ve asked for it.&#xD;    ts.needTransform = true;&#xD;  }&#xD;};&#xD;&#xD;function done(stream, er, data) {&#xD;  if (er) return stream.emit(&apos;error&apos;, er);&#xD;&#xD;  if (data !== null &amp;&amp; data !== undefined) stream.push(data);&#xD;&#xD;  // if there&apos;s nothing in the write buffer, then that means&#xD;  // that nothing more will ever be provided&#xD;  var ws = stream._writableState;&#xD;  var ts = stream._transformState;&#xD;&#xD;  if (ws.length) throw new Error(&apos;Calling transform done when ws.length != 0&apos;);&#xD;&#xD;  if (ts.transforming) throw new Error(&apos;Calling transform done when still transforming&apos;);&#xD;&#xD;  return stream.push(null);&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 16 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// A bit simpler than readable streams.&#xD;// Implement an async ._write(chunk, encoding, cb), and it&apos;ll handle all&#xD;// the drain event emission and buffering.&#xD;&#xD;&#xD;&#xD;module.exports = Writable;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var processNextTick = __webpack_require__(8);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var asyncWrite = !process.browser &amp;&amp; [&apos;v0.10&apos;, &apos;v0.9.&apos;].indexOf(process.version.slice(0, 5)) &gt; -1 ? setImmediate : processNextTick;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Duplex;&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;Writable.WritableState = WritableState;&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(1);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var internalUtil = {&#xD;  deprecate: __webpack_require__(49)&#xD;};&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var Stream = __webpack_require__(17);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;var Buffer = __webpack_require__(3).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(6);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(Writable, Stream);&#xD;&#xD;function nop() {}&#xD;&#xD;function WriteReq(chunk, encoding, cb) {&#xD;  this.chunk = chunk;&#xD;  this.encoding = encoding;&#xD;  this.callback = cb;&#xD;  this.next = null;&#xD;}&#xD;&#xD;function WritableState(options, stream) {&#xD;  Duplex = Duplex || __webpack_require__(0);&#xD;&#xD;  options = options || {};&#xD;&#xD;  // object stream flag to indicate whether or not this stream&#xD;  // contains buffers or objects.&#xD;  this.objectMode = !!options.objectMode;&#xD;&#xD;  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;&#xD;&#xD;  // the point at which write() starts returning false&#xD;  // Note: 0 is a valid value, means that we always return false if&#xD;  // the entire buffer is not flushed immediately on write()&#xD;  var hwm = options.highWaterMark;&#xD;  var defaultHwm = this.objectMode ? 16 : 16 * 1024;&#xD;  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;&#xD;&#xD;  // cast to ints.&#xD;  this.highWaterMark = &#126;&#126;this.highWaterMark;&#xD;&#xD;  // drain event flag.&#xD;  this.needDrain = false;&#xD;  // at the start of calling end()&#xD;  this.ending = false;&#xD;  // when end() has been called, and returned&#xD;  this.ended = false;&#xD;  // when &apos;finish&apos; is emitted&#xD;  this.finished = false;&#xD;&#xD;  // should we decode strings into buffers before passing to _write?&#xD;  // this is here so that some node-core streams can optimize string&#xD;  // handling at a lower level.&#xD;  var noDecode = options.decodeStrings === false;&#xD;  this.decodeStrings = !noDecode;&#xD;&#xD;  // Crypto is kind of old and crusty.  Historically, its default string&#xD;  // encoding is &apos;binary&apos; so we have to make this configurable.&#xD;  // Everything else in the universe uses &apos;utf8&apos;, though.&#xD;  this.defaultEncoding = options.defaultEncoding || &apos;utf8&apos;;&#xD;&#xD;  // not an actual buffer we keep track of, but a measurement&#xD;  // of how much we&apos;re waiting to get pushed to some underlying&#xD;  // socket or file.&#xD;  this.length = 0;&#xD;&#xD;  // a flag to see when we&apos;re in the middle of a write.&#xD;  this.writing = false;&#xD;&#xD;  // when true all writes will be buffered until .uncork() call&#xD;  this.corked = 0;&#xD;&#xD;  // a flag to be able to tell if the onwrite cb is called immediately,&#xD;  // or on a later tick.  We set this to true at first, because any&#xD;  // actions that shouldn&apos;t happen until "later" should generally also&#xD;  // not happen before the first write call.&#xD;  this.sync = true;&#xD;&#xD;  // a flag to know if we&apos;re processing previously buffered items, which&#xD;  // may call the _write() callback in the same tick, so that we don&apos;t&#xD;  // end up in an overlapped onwrite situation.&#xD;  this.bufferProcessing = false;&#xD;&#xD;  // the callback that&apos;s passed to _write(chunk,cb)&#xD;  this.onwrite = function (er) {&#xD;    onwrite(stream, er);&#xD;  };&#xD;&#xD;  // the callback that the user supplies to write(chunk,encoding,cb)&#xD;  this.writecb = null;&#xD;&#xD;  // the amount that is being written when _write is called.&#xD;  this.writelen = 0;&#xD;&#xD;  this.bufferedRequest = null;&#xD;  this.lastBufferedRequest = null;&#xD;&#xD;  // number of pending user-supplied write callbacks&#xD;  // this must be 0 before &apos;finish&apos; can be emitted&#xD;  this.pendingcb = 0;&#xD;&#xD;  // emit prefinish if the only thing we&apos;re waiting for is _write cbs&#xD;  // This is relevant for synchronous Transform streams&#xD;  this.prefinished = false;&#xD;&#xD;  // True if the error was already emitted and should not be thrown again&#xD;  this.errorEmitted = false;&#xD;&#xD;  // count buffered requests&#xD;  this.bufferedRequestCount = 0;&#xD;&#xD;  // allocate the first CorkedRequest, there is always&#xD;  // one allocated and free to use, and we maintain at most two&#xD;  this.corkedRequestsFree = new CorkedRequest(this);&#xD;}&#xD;&#xD;WritableState.prototype.getBuffer = function getBuffer() {&#xD;  var current = this.bufferedRequest;&#xD;  var out = [];&#xD;  while (current) {&#xD;    out.push(current);&#xD;    current = current.next;&#xD;  }&#xD;  return out;&#xD;};&#xD;&#xD;(function () {&#xD;  try {&#xD;    Object.defineProperty(WritableState.prototype, &apos;buffer&apos;, {&#xD;      get: internalUtil.deprecate(function () {&#xD;        return this.getBuffer();&#xD;      }, &apos;_writableState.buffer is deprecated. Use _writableState.getBuffer &apos; + &apos;instead.&apos;)&#xD;    });&#xD;  } catch (_) {}&#xD;})();&#xD;&#xD;// Test _writableState for inheritance to account for Duplex streams,&#xD;// whose prototype chain only points to Readable.&#xD;var realHasInstance;&#xD;if (typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.hasInstance &amp;&amp; typeof Function.prototype[Symbol.hasInstance] === &apos;function&apos;) {&#xD;  realHasInstance = Function.prototype[Symbol.hasInstance];&#xD;  Object.defineProperty(Writable, Symbol.hasInstance, {&#xD;    value: function (object) {&#xD;      if (realHasInstance.call(this, object)) return true;&#xD;&#xD;      return object &amp;&amp; object._writableState instanceof WritableState;&#xD;    }&#xD;  });&#xD;} else {&#xD;  realHasInstance = function (object) {&#xD;    return object instanceof this;&#xD;  };&#xD;}&#xD;&#xD;function Writable(options) {&#xD;  Duplex = Duplex || __webpack_require__(0);&#xD;&#xD;  // Writable ctor is applied to Duplexes, too.&#xD;  // `realHasInstance` is necessary because using plain `instanceof`&#xD;  // would return false, as no `_writableState` property is attached.&#xD;&#xD;  // Trying to use the custom `instanceof` for Writable here will also break the&#xD;  // Node.js LazyTransform implementation, which has a non-trivial getter for&#xD;  // `_writableState` that would lead to infinite recursion.&#xD;  if (!realHasInstance.call(Writable, this) &amp;&amp; !(this instanceof Duplex)) {&#xD;    return new Writable(options);&#xD;  }&#xD;&#xD;  this._writableState = new WritableState(options, this);&#xD;&#xD;  // legacy.&#xD;  this.writable = true;&#xD;&#xD;  if (options) {&#xD;    if (typeof options.write === &apos;function&apos;) this._write = options.write;&#xD;&#xD;    if (typeof options.writev === &apos;function&apos;) this._writev = options.writev;&#xD;  }&#xD;&#xD;  Stream.call(this);&#xD;}&#xD;&#xD;// Otherwise people can pipe Writable streams, which is just wrong.&#xD;Writable.prototype.pipe = function () {&#xD;  this.emit(&apos;error&apos;, new Error(&apos;Cannot pipe, not readable&apos;));&#xD;};&#xD;&#xD;function writeAfterEnd(stream, cb) {&#xD;  var er = new Error(&apos;write after end&apos;);&#xD;  // TODO: defer error events consistently everywhere, not just the cb&#xD;  stream.emit(&apos;error&apos;, er);&#xD;  processNextTick(cb, er);&#xD;}&#xD;&#xD;// Checks that a user-supplied chunk is valid, especially for the particular&#xD;// mode the stream is in. Currently this means that `null` is never accepted&#xD;// and undefined/non-string values are only allowed in object mode.&#xD;function validChunk(stream, state, chunk, cb) {&#xD;  var valid = true;&#xD;  var er = false;&#xD;&#xD;  if (chunk === null) {&#xD;    er = new TypeError(&apos;May not write null values to stream&apos;);&#xD;  } else if (typeof chunk !== &apos;string&apos; &amp;&amp; chunk !== undefined &amp;&amp; !state.objectMode) {&#xD;    er = new TypeError(&apos;Invalid non-string/buffer chunk&apos;);&#xD;  }&#xD;  if (er) {&#xD;    stream.emit(&apos;error&apos;, er);&#xD;    processNextTick(cb, er);&#xD;    valid = false;&#xD;  }&#xD;  return valid;&#xD;}&#xD;&#xD;Writable.prototype.write = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;  var ret = false;&#xD;  var isBuf = Buffer.isBuffer(chunk);&#xD;&#xD;  if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (isBuf) encoding = &apos;buffer&apos;;else if (!encoding) encoding = state.defaultEncoding;&#xD;&#xD;  if (typeof cb !== &apos;function&apos;) cb = nop;&#xD;&#xD;  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {&#xD;    state.pendingcb++;&#xD;    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;};&#xD;&#xD;Writable.prototype.cork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  state.corked++;&#xD;};&#xD;&#xD;Writable.prototype.uncork = function () {&#xD;  var state = this._writableState;&#xD;&#xD;  if (state.corked) {&#xD;    state.corked--;&#xD;&#xD;    if (!state.writing &amp;&amp; !state.corked &amp;&amp; !state.finished &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) clearBuffer(this, state);&#xD;  }&#xD;};&#xD;&#xD;Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {&#xD;  // node::ParseEncoding() requires lower case.&#xD;  if (typeof encoding === &apos;string&apos;) encoding = encoding.toLowerCase();&#xD;  if (!([&apos;hex&apos;, &apos;utf8&apos;, &apos;utf-8&apos;, &apos;ascii&apos;, &apos;binary&apos;, &apos;base64&apos;, &apos;ucs2&apos;, &apos;ucs-2&apos;, &apos;utf16le&apos;, &apos;utf-16le&apos;, &apos;raw&apos;].indexOf((encoding + &apos;&apos;).toLowerCase()) &gt; -1)) throw new TypeError(&apos;Unknown encoding: &apos; + encoding);&#xD;  this._writableState.defaultEncoding = encoding;&#xD;  return this;&#xD;};&#xD;&#xD;function decodeChunk(state, chunk, encoding) {&#xD;  if (!state.objectMode &amp;&amp; state.decodeStrings !== false &amp;&amp; typeof chunk === &apos;string&apos;) {&#xD;    chunk = bufferShim.from(chunk, encoding);&#xD;  }&#xD;  return chunk;&#xD;}&#xD;&#xD;// if we&apos;re already writing something, then just put this&#xD;// in the queue, and wait our turn.  Otherwise, call _write&#xD;// If we return false, then we need a drain event, so set that flag.&#xD;function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {&#xD;  if (!isBuf) {&#xD;    chunk = decodeChunk(state, chunk, encoding);&#xD;    if (Buffer.isBuffer(chunk)) encoding = &apos;buffer&apos;;&#xD;  }&#xD;  var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;  state.length += len;&#xD;&#xD;  var ret = state.length &lt; state.highWaterMark;&#xD;  // we must ensure that previous needDrain will not be reset to false.&#xD;  if (!ret) state.needDrain = true;&#xD;&#xD;  if (state.writing || state.corked) {&#xD;    var last = state.lastBufferedRequest;&#xD;    state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);&#xD;    if (last) {&#xD;      last.next = state.lastBufferedRequest;&#xD;    } else {&#xD;      state.bufferedRequest = state.lastBufferedRequest;&#xD;    }&#xD;    state.bufferedRequestCount += 1;&#xD;  } else {&#xD;    doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;  }&#xD;&#xD;  return ret;&#xD;}&#xD;&#xD;function doWrite(stream, state, writev, len, chunk, encoding, cb) {&#xD;  state.writelen = len;&#xD;  state.writecb = cb;&#xD;  state.writing = true;&#xD;  state.sync = true;&#xD;  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);&#xD;  state.sync = false;&#xD;}&#xD;&#xD;function onwriteError(stream, state, sync, er, cb) {&#xD;  --state.pendingcb;&#xD;  if (sync) processNextTick(cb, er);else cb(er);&#xD;&#xD;  stream._writableState.errorEmitted = true;&#xD;  stream.emit(&apos;error&apos;, er);&#xD;}&#xD;&#xD;function onwriteStateUpdate(state) {&#xD;  state.writing = false;&#xD;  state.writecb = null;&#xD;  state.length -= state.writelen;&#xD;  state.writelen = 0;&#xD;}&#xD;&#xD;function onwrite(stream, er) {&#xD;  var state = stream._writableState;&#xD;  var sync = state.sync;&#xD;  var cb = state.writecb;&#xD;&#xD;  onwriteStateUpdate(state);&#xD;&#xD;  if (er) onwriteError(stream, state, sync, er, cb);else {&#xD;    // Check if we&apos;re actually ready to finish, but don&apos;t emit yet&#xD;    var finished = needFinish(state);&#xD;&#xD;    if (!finished &amp;&amp; !state.corked &amp;&amp; !state.bufferProcessing &amp;&amp; state.bufferedRequest) {&#xD;      clearBuffer(stream, state);&#xD;    }&#xD;&#xD;    if (sync) {&#xD;      /*&lt;replacement&gt;*/&#xD;      asyncWrite(afterWrite, stream, state, finished, cb);&#xD;      /*&lt;/replacement&gt;*/&#xD;    } else {&#xD;      afterWrite(stream, state, finished, cb);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function afterWrite(stream, state, finished, cb) {&#xD;  if (!finished) onwriteDrain(stream, state);&#xD;  state.pendingcb--;&#xD;  cb();&#xD;  finishMaybe(stream, state);&#xD;}&#xD;&#xD;// Must force callback to be called on nextTick, so that we don&apos;t&#xD;// emit &apos;drain&apos; before the write() consumer gets the &apos;false&apos; return&#xD;// value, and has a chance to attach a &apos;drain&apos; listener.&#xD;function onwriteDrain(stream, state) {&#xD;  if (state.length === 0 &amp;&amp; state.needDrain) {&#xD;    state.needDrain = false;&#xD;    stream.emit(&apos;drain&apos;);&#xD;  }&#xD;}&#xD;&#xD;// if there&apos;s something in the buffer waiting, then process it&#xD;function clearBuffer(stream, state) {&#xD;  state.bufferProcessing = true;&#xD;  var entry = state.bufferedRequest;&#xD;&#xD;  if (stream._writev &amp;&amp; entry &amp;&amp; entry.next) {&#xD;    // Fast case, write everything using _writev()&#xD;    var l = state.bufferedRequestCount;&#xD;    var buffer = new Array(l);&#xD;    var holder = state.corkedRequestsFree;&#xD;    holder.entry = entry;&#xD;&#xD;    var count = 0;&#xD;    while (entry) {&#xD;      buffer[count] = entry;&#xD;      entry = entry.next;&#xD;      count += 1;&#xD;    }&#xD;&#xD;    doWrite(stream, state, true, state.length, buffer, &apos;&apos;, holder.finish);&#xD;&#xD;    // doWrite is almost always async, defer these to save a bit of time&#xD;    // as the hot path ends with doWrite&#xD;    state.pendingcb++;&#xD;    state.lastBufferedRequest = null;&#xD;    if (holder.next) {&#xD;      state.corkedRequestsFree = holder.next;&#xD;      holder.next = null;&#xD;    } else {&#xD;      state.corkedRequestsFree = new CorkedRequest(state);&#xD;    }&#xD;  } else {&#xD;    // Slow case, write chunks one-by-one&#xD;    while (entry) {&#xD;      var chunk = entry.chunk;&#xD;      var encoding = entry.encoding;&#xD;      var cb = entry.callback;&#xD;      var len = state.objectMode ? 1 : chunk.length;&#xD;&#xD;      doWrite(stream, state, false, len, chunk, encoding, cb);&#xD;      entry = entry.next;&#xD;      // if we didn&apos;t call the onwrite immediately, then&#xD;      // it means that we need to wait until it does.&#xD;      // also, that means that the chunk and cb are currently&#xD;      // being processed, so move the buffer counter past them.&#xD;      if (state.writing) {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    if (entry === null) state.lastBufferedRequest = null;&#xD;  }&#xD;&#xD;  state.bufferedRequestCount = 0;&#xD;  state.bufferedRequest = entry;&#xD;  state.bufferProcessing = false;&#xD;}&#xD;&#xD;Writable.prototype._write = function (chunk, encoding, cb) {&#xD;  cb(new Error(&apos;_write() is not implemented&apos;));&#xD;};&#xD;&#xD;Writable.prototype._writev = null;&#xD;&#xD;Writable.prototype.end = function (chunk, encoding, cb) {&#xD;  var state = this._writableState;&#xD;&#xD;  if (typeof chunk === &apos;function&apos;) {&#xD;    cb = chunk;&#xD;    chunk = null;&#xD;    encoding = null;&#xD;  } else if (typeof encoding === &apos;function&apos;) {&#xD;    cb = encoding;&#xD;    encoding = null;&#xD;  }&#xD;&#xD;  if (chunk !== null &amp;&amp; chunk !== undefined) this.write(chunk, encoding);&#xD;&#xD;  // .end() fully uncorks&#xD;  if (state.corked) {&#xD;    state.corked = 1;&#xD;    this.uncork();&#xD;  }&#xD;&#xD;  // ignore unnecessary end() calls.&#xD;  if (!state.ending &amp;&amp; !state.finished) endWritable(this, state, cb);&#xD;};&#xD;&#xD;function needFinish(state) {&#xD;  return state.ending &amp;&amp; state.length === 0 &amp;&amp; state.bufferedRequest === null &amp;&amp; !state.finished &amp;&amp; !state.writing;&#xD;}&#xD;&#xD;function prefinish(stream, state) {&#xD;  if (!state.prefinished) {&#xD;    state.prefinished = true;&#xD;    stream.emit(&apos;prefinish&apos;);&#xD;  }&#xD;}&#xD;&#xD;function finishMaybe(stream, state) {&#xD;  var need = needFinish(state);&#xD;  if (need) {&#xD;    if (state.pendingcb === 0) {&#xD;      prefinish(stream, state);&#xD;      state.finished = true;&#xD;      stream.emit(&apos;finish&apos;);&#xD;    } else {&#xD;      prefinish(stream, state);&#xD;    }&#xD;  }&#xD;  return need;&#xD;}&#xD;&#xD;function endWritable(stream, state, cb) {&#xD;  state.ending = true;&#xD;  finishMaybe(stream, state);&#xD;  if (cb) {&#xD;    if (state.finished) processNextTick(cb);else stream.once(&apos;finish&apos;, cb);&#xD;  }&#xD;  state.ended = true;&#xD;  stream.writable = false;&#xD;}&#xD;&#xD;// It seems a linked list but it is not&#xD;// there will be only 2 of these for each stream&#xD;function CorkedRequest(state) {&#xD;  var _this = this;&#xD;&#xD;  this.next = null;&#xD;  this.entry = null;&#xD;  this.finish = function (err) {&#xD;    var entry = _this.entry;&#xD;    _this.entry = null;&#xD;    while (entry) {&#xD;      var cb = entry.callback;&#xD;      state.pendingcb--;&#xD;      cb(err);&#xD;      entry = entry.next;&#xD;    }&#xD;    if (state.corkedRequestsFree) {&#xD;      state.corkedRequestsFree.next = _this;&#xD;    } else {&#xD;      state.corkedRequestsFree = _this;&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 17 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(10);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 18 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Buffer = __webpack_require__(3).Buffer;&#xD;var bufferShim = __webpack_require__(6);&#xD;&#xD;var isEncoding = Buffer.isEncoding || function (encoding) {&#xD;  encoding = &apos;&apos; + encoding;&#xD;  switch (encoding &amp;&amp; encoding.toLowerCase()) {&#xD;    case &apos;hex&apos;:case &apos;utf8&apos;:case &apos;utf-8&apos;:case &apos;ascii&apos;:case &apos;binary&apos;:case &apos;base64&apos;:case &apos;ucs2&apos;:case &apos;ucs-2&apos;:case &apos;utf16le&apos;:case &apos;utf-16le&apos;:case &apos;raw&apos;:&#xD;      return true;&#xD;    default:&#xD;      return false;&#xD;  }&#xD;};&#xD;&#xD;function _normalizeEncoding(enc) {&#xD;  if (!enc) return &apos;utf8&apos;;&#xD;  var retried;&#xD;  while (true) {&#xD;    switch (enc) {&#xD;      case &apos;utf8&apos;:&#xD;      case &apos;utf-8&apos;:&#xD;        return &apos;utf8&apos;;&#xD;      case &apos;ucs2&apos;:&#xD;      case &apos;ucs-2&apos;:&#xD;      case &apos;utf16le&apos;:&#xD;      case &apos;utf-16le&apos;:&#xD;        return &apos;utf16le&apos;;&#xD;      case &apos;latin1&apos;:&#xD;      case &apos;binary&apos;:&#xD;        return &apos;latin1&apos;;&#xD;      case &apos;base64&apos;:&#xD;      case &apos;ascii&apos;:&#xD;      case &apos;hex&apos;:&#xD;        return enc;&#xD;      default:&#xD;        if (retried) return; // undefined&#xD;        enc = (&apos;&apos; + enc).toLowerCase();&#xD;        retried = true;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;// Do not cache `Buffer.isEncoding` when checking encoding names as some&#xD;// modules monkey-patch it to support additional encodings&#xD;function normalizeEncoding(enc) {&#xD;  var nenc = _normalizeEncoding(enc);&#xD;  if (typeof nenc !== &apos;string&apos; &amp;&amp; (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error(&apos;Unknown encoding: &apos; + enc);&#xD;  return nenc || enc;&#xD;}&#xD;&#xD;// StringDecoder provides an interface for efficiently splitting a series of&#xD;// buffers into a series of JS strings without breaking apart multi-byte&#xD;// characters.&#xD;exports.StringDecoder = StringDecoder;&#xD;function StringDecoder(encoding) {&#xD;  this.encoding = normalizeEncoding(encoding);&#xD;  var nb;&#xD;  switch (this.encoding) {&#xD;    case &apos;utf16le&apos;:&#xD;      this.text = utf16Text;&#xD;      this.end = utf16End;&#xD;      nb = 4;&#xD;      break;&#xD;    case &apos;utf8&apos;:&#xD;      this.fillLast = utf8FillLast;&#xD;      nb = 4;&#xD;      break;&#xD;    case &apos;base64&apos;:&#xD;      this.text = base64Text;&#xD;      this.end = base64End;&#xD;      nb = 3;&#xD;      break;&#xD;    default:&#xD;      this.write = simpleWrite;&#xD;      this.end = simpleEnd;&#xD;      return;&#xD;  }&#xD;  this.lastNeed = 0;&#xD;  this.lastTotal = 0;&#xD;  this.lastChar = bufferShim.allocUnsafe(nb);&#xD;}&#xD;&#xD;StringDecoder.prototype.write = function (buf) {&#xD;  if (buf.length === 0) return &apos;&apos;;&#xD;  var r;&#xD;  var i;&#xD;  if (this.lastNeed) {&#xD;    r = this.fillLast(buf);&#xD;    if (r === undefined) return &apos;&apos;;&#xD;    i = this.lastNeed;&#xD;    this.lastNeed = 0;&#xD;  } else {&#xD;    i = 0;&#xD;  }&#xD;  if (i &lt; buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);&#xD;  return r || &apos;&apos;;&#xD;};&#xD;&#xD;StringDecoder.prototype.end = utf8End;&#xD;&#xD;// Returns only complete characters in a Buffer&#xD;StringDecoder.prototype.text = utf8Text;&#xD;&#xD;// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer&#xD;StringDecoder.prototype.fillLast = function (buf) {&#xD;  if (this.lastNeed &lt;= buf.length) {&#xD;    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);&#xD;    return this.lastChar.toString(this.encoding, 0, this.lastTotal);&#xD;  }&#xD;  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);&#xD;  this.lastNeed -= buf.length;&#xD;};&#xD;&#xD;// Checks the type of a UTF-8 byte, whether it&apos;s ASCII, a leading byte, or a&#xD;// continuation byte.&#xD;function utf8CheckByte(byte) {&#xD;  if (byte &lt;= 0x7F) return 0;else if (byte &gt;&gt; 5 === 0x06) return 2;else if (byte &gt;&gt; 4 === 0x0E) return 3;else if (byte &gt;&gt; 3 === 0x1E) return 4;&#xD;  return -1;&#xD;}&#xD;&#xD;// Checks at most 3 bytes at the end of a Buffer in order to detect an&#xD;// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)&#xD;// needed to complete the UTF-8 character (if applicable) are returned.&#xD;function utf8CheckIncomplete(self, buf, i) {&#xD;  var j = buf.length - 1;&#xD;  if (j &lt; i) return 0;&#xD;  var nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) self.lastNeed = nb - 1;&#xD;    return nb;&#xD;  }&#xD;  if (--j &lt; i) return 0;&#xD;  nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) self.lastNeed = nb - 2;&#xD;    return nb;&#xD;  }&#xD;  if (--j &lt; i) return 0;&#xD;  nb = utf8CheckByte(buf[j]);&#xD;  if (nb &gt;= 0) {&#xD;    if (nb &gt; 0) {&#xD;      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;&#xD;    }&#xD;    return nb;&#xD;  }&#xD;  return 0;&#xD;}&#xD;&#xD;// Validates as many continuation bytes for a multi-byte UTF-8 character as&#xD;// needed or are available. If we see a non-continuation byte where we expect&#xD;// one, we "replace" the validated continuation bytes we&apos;ve seen so far with&#xD;// UTF-8 replacement characters (&apos;\ufffd&apos;), to match v8&apos;s UTF-8 decoding&#xD;// behavior. The continuation byte check is included three times in the case&#xD;// where all of the continuation bytes for a character exist in the same buffer.&#xD;// It is also done this way as a slight performance increase instead of using a&#xD;// loop.&#xD;function utf8CheckExtraBytes(self, buf, p) {&#xD;  if ((buf[0] &amp; 0xC0) !== 0x80) {&#xD;    self.lastNeed = 0;&#xD;    return &apos;\ufffd&apos;.repeat(p);&#xD;  }&#xD;  if (self.lastNeed &gt; 1 &amp;&amp; buf.length &gt; 1) {&#xD;    if ((buf[1] &amp; 0xC0) !== 0x80) {&#xD;      self.lastNeed = 1;&#xD;      return &apos;\ufffd&apos;.repeat(p + 1);&#xD;    }&#xD;    if (self.lastNeed &gt; 2 &amp;&amp; buf.length &gt; 2) {&#xD;      if ((buf[2] &amp; 0xC0) !== 0x80) {&#xD;        self.lastNeed = 2;&#xD;        return &apos;\ufffd&apos;.repeat(p + 2);&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.&#xD;function utf8FillLast(buf) {&#xD;  var p = this.lastTotal - this.lastNeed;&#xD;  var r = utf8CheckExtraBytes(this, buf, p);&#xD;  if (r !== undefined) return r;&#xD;  if (this.lastNeed &lt;= buf.length) {&#xD;    buf.copy(this.lastChar, p, 0, this.lastNeed);&#xD;    return this.lastChar.toString(this.encoding, 0, this.lastTotal);&#xD;  }&#xD;  buf.copy(this.lastChar, p, 0, buf.length);&#xD;  this.lastNeed -= buf.length;&#xD;}&#xD;&#xD;// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a&#xD;// partial character, the character&apos;s bytes are buffered until the required&#xD;// number of bytes are available.&#xD;function utf8Text(buf, i) {&#xD;  var total = utf8CheckIncomplete(this, buf, i);&#xD;  if (!this.lastNeed) return buf.toString(&apos;utf8&apos;, i);&#xD;  this.lastTotal = total;&#xD;  var end = buf.length - (total - this.lastNeed);&#xD;  buf.copy(this.lastChar, 0, end);&#xD;  return buf.toString(&apos;utf8&apos;, i, end);&#xD;}&#xD;&#xD;// For UTF-8, a replacement character for each buffered byte of a (partial)&#xD;// character needs to be added to the output.&#xD;function utf8End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) return r + &apos;\ufffd&apos;.repeat(this.lastTotal - this.lastNeed);&#xD;  return r;&#xD;}&#xD;&#xD;// UTF-16LE typically needs two bytes per character, but even if we have an even&#xD;// number of bytes available, we need to check if we end on a leading/high&#xD;// surrogate. In that case, we need to wait for the next two bytes in order to&#xD;// decode the last character properly.&#xD;function utf16Text(buf, i) {&#xD;  if ((buf.length - i) % 2 === 0) {&#xD;    var r = buf.toString(&apos;utf16le&apos;, i);&#xD;    if (r) {&#xD;      var c = r.charCodeAt(r.length - 1);&#xD;      if (c &gt;= 0xD800 &amp;&amp; c &lt;= 0xDBFF) {&#xD;        this.lastNeed = 2;&#xD;        this.lastTotal = 4;&#xD;        this.lastChar[0] = buf[buf.length - 2];&#xD;        this.lastChar[1] = buf[buf.length - 1];&#xD;        return r.slice(0, -1);&#xD;      }&#xD;    }&#xD;    return r;&#xD;  }&#xD;  this.lastNeed = 1;&#xD;  this.lastTotal = 2;&#xD;  this.lastChar[0] = buf[buf.length - 1];&#xD;  return buf.toString(&apos;utf16le&apos;, i, buf.length - 1);&#xD;}&#xD;&#xD;// For UTF-16LE we do not explicitly append special replacement characters if we&#xD;// end on a partial character, we simply let v8 handle that.&#xD;function utf16End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) {&#xD;    var end = this.lastTotal - this.lastNeed;&#xD;    return r + this.lastChar.toString(&apos;utf16le&apos;, 0, end);&#xD;  }&#xD;  return r;&#xD;}&#xD;&#xD;function base64Text(buf, i) {&#xD;  var n = (buf.length - i) % 3;&#xD;  if (n === 0) return buf.toString(&apos;base64&apos;, i);&#xD;  this.lastNeed = 3 - n;&#xD;  this.lastTotal = 3;&#xD;  if (n === 1) {&#xD;    this.lastChar[0] = buf[buf.length - 1];&#xD;  } else {&#xD;    this.lastChar[0] = buf[buf.length - 2];&#xD;    this.lastChar[1] = buf[buf.length - 1];&#xD;  }&#xD;  return buf.toString(&apos;base64&apos;, i, buf.length - n);&#xD;}&#xD;&#xD;function base64End(buf) {&#xD;  var r = buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;  if (this.lastNeed) return r + this.lastChar.toString(&apos;base64&apos;, 0, 3 - this.lastNeed);&#xD;  return r;&#xD;}&#xD;&#xD;// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)&#xD;function simpleWrite(buf) {&#xD;  return buf.toString(this.encoding);&#xD;}&#xD;&#xD;function simpleEnd(buf) {&#xD;  return buf &amp;&amp; buf.length ? this.write(buf) : &apos;&apos;;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 19 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(30);&#xD;&#xD;/***/ }),&#xD;/* 20 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(200);&#xD;&#xD;/***/ }),&#xD;/* 21 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var Asset = __webpack_require__(5);&#xD;var AssetType = __webpack_require__(11);&#xD;var BuiltinHelper = __webpack_require__(22);&#xD;var LocalHelper = __webpack_require__(23);&#xD;var WebHelper = __webpack_require__(24);&#xD;&#xD;var ScratchStorage = function () {&#xD;    function ScratchStorage() {&#xD;        _classCallCheck(this, ScratchStorage);&#xD;&#xD;        this.defaultAssetId = {};&#xD;&#xD;        this.builtinHelper = new BuiltinHelper(this);&#xD;        this.webHelper = new WebHelper(this);&#xD;        this.localHelper = new LocalHelper(this);&#xD;&#xD;        this.builtinHelper.registerDefaultAssets(this);&#xD;    }&#xD;&#xD;    /**&#xD;     * @return {Asset} - the `Asset` class constructor.&#xD;     * @constructor&#xD;     */&#xD;&#xD;&#xD;    _createClass(ScratchStorage, [{&#xD;        key: &apos;get&apos;,&#xD;&#xD;&#xD;        /**&#xD;         * Synchronously fetch a cached asset from built-in storage. Assets are cached when they are loaded.&#xD;         * @param {string} assetId - The id of the asset to fetch.&#xD;         * @returns {?Asset} The asset, if it exists.&#xD;         */&#xD;        value: function get(assetId) {&#xD;            return this.builtinHelper.get(assetId);&#xD;        }&#xD;&#xD;        /**&#xD;         * Register a web-based source for assets. Sources will be checked in order of registration.&#xD;         * @param {Array.&lt;AssetType&gt;} types - The types of asset provided by this source.&#xD;         * @param {UrlFunction} urlFunction - A function which computes a URL from an Asset.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;addWebSource&apos;,&#xD;        value: function addWebSource(types, urlFunction) {&#xD;            this.webHelper.addSource(types, urlFunction);&#xD;        }&#xD;&#xD;        /**&#xD;         * TODO: Should this be removed in favor of requesting an asset with `null` as the ID?&#xD;         * @param {AssetType} type - Get the default ID for assets of this type.&#xD;         * @return {?string} The ID of the default asset of the given type, if any.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;getDefaultAssetId&apos;,&#xD;        value: function getDefaultAssetId(type) {&#xD;            if (this.defaultAssetId.hasOwnProperty(type.name)) {&#xD;                return this.defaultAssetId[type.name];&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Set the default ID for a particular type of asset. This default asset will be used if a requested asset cannot&#xD;         * be found and automatic fallback is enabled. Ideally this should be an asset that is available locally or even&#xD;         * one built into this module.&#xD;         * TODO: Should this be removed in favor of requesting an asset with `null` as the ID?&#xD;         * @param {AssetType} type - The type of asset for which the default will be set.&#xD;         * @param {string} id - The default ID to use for this type of asset.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;setDefaultAssetId&apos;,&#xD;        value: function setDefaultAssetId(type, id) {&#xD;            this.defaultAssetId[type.name] = id;&#xD;        }&#xD;&#xD;        /**&#xD;         * Fetch an asset by type &amp; ID.&#xD;         * @param {AssetType} assetType - The type of asset to fetch. This also determines which asset store to use.&#xD;         * @param {string} assetId - The ID of the asset to fetch: a project ID, MD5, etc.&#xD;         * @return {Promise.&lt;Asset&gt;} A promise for the requested Asset.&#xD;         *   If the promise is fulfilled with non-null, the value is the requested asset or a fallback.&#xD;         *   If the promise is fulfilled with null, the desired asset could not be found with the current asset sources.&#xD;         *   If the promise is rejected, there was an error on at least one asset source. HTTP 404 does not count as an&#xD;         *   error here, but (for example) HTTP 403 does.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;load&apos;,&#xD;        value: function load(assetType, assetId) {&#xD;            var _this = this;&#xD;&#xD;            /** @type {Helper[]} */&#xD;            var helpers = [this.builtinHelper, this.localHelper, this.webHelper];&#xD;            var errors = [];&#xD;            var helperIndex = 0;&#xD;&#xD;            return new Promise(function (fulfill, reject) {&#xD;                var tryNextHelper = function tryNextHelper() {&#xD;                    if (helperIndex &lt; helpers.length) {&#xD;                        var helper = helpers[helperIndex++];&#xD;                        helper.load(assetType, assetId).then(function (asset) {&#xD;                            if (asset === null) {&#xD;                                tryNextHelper();&#xD;                            } else {&#xD;                                // TODO? this.localHelper.cache(assetType, assetId, asset);&#xD;                                if (helper !== _this.builtinHelper &amp;&amp; assetType.immutable) {&#xD;                                    asset.assetId = _this.builtinHelper.cache(assetType, asset.dataFormat, asset.data, assetId);&#xD;                                }&#xD;                                // Note that other attempts may have caused errors, effectively suppressed here.&#xD;                                fulfill(asset);&#xD;                            }&#xD;                        }, function (error) {&#xD;                            errors.push(error);&#xD;                            // TODO: maybe some types of error should prevent trying the next helper?&#xD;                            tryNextHelper();&#xD;                        });&#xD;                    } else if (errors.length === 0) {&#xD;                        // Nothing went wrong but we couldn&apos;t find the asset.&#xD;                        fulfill(null);&#xD;                    } else {&#xD;                        // At least one thing went wrong and also we couldn&apos;t find the asset.&#xD;                        reject(errors);&#xD;                    }&#xD;                };&#xD;&#xD;                tryNextHelper();&#xD;            });&#xD;        }&#xD;    }, {&#xD;        key: &apos;Asset&apos;,&#xD;        get: function get() {&#xD;            return Asset;&#xD;        }&#xD;&#xD;        /**&#xD;         * @return {AssetType} - the list of supported asset types.&#xD;         * @constructor&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;AssetType&apos;,&#xD;        get: function get() {&#xD;            return AssetType;&#xD;        }&#xD;&#xD;        /**&#xD;         * @deprecated Please use the `Asset` member of a storage instance instead.&#xD;         * @return {Asset} - the `Asset` class constructor.&#xD;         * @constructor&#xD;         */&#xD;&#xD;    }], [{&#xD;        key: &apos;Asset&apos;,&#xD;        get: function get() {&#xD;            return Asset;&#xD;        }&#xD;&#xD;        /**&#xD;         * @deprecated Please use the `AssetType` member of a storage instance instead.&#xD;         * @return {AssetType} - the list of supported asset types.&#xD;         * @constructor&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;AssetType&apos;,&#xD;        get: function get() {&#xD;            return AssetType;&#xD;        }&#xD;    }]);&#xD;&#xD;    return ScratchStorage;&#xD;}();&#xD;&#xD;module.exports = ScratchStorage;&#xD;&#xD;/***/ }),&#xD;/* 22 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var crypto = __webpack_require__(59);&#xD;&#xD;var Asset = __webpack_require__(5);&#xD;var AssetType = __webpack_require__(11);&#xD;var DataFormat = __webpack_require__(12);&#xD;var Helper = __webpack_require__(7);&#xD;&#xD;/**&#xD; * @typedef {object} BuiltinAssetRecord&#xD; * @property {AssetType} type - The type of the asset.&#xD; * @property {DataFormat} format - The format of the asset&apos;s data.&#xD; * @property {?string} id - The asset&apos;s unique ID.&#xD; * @property {Buffer} data - The asset&apos;s data.&#xD; */&#xD;&#xD;/**&#xD; * @type {BuiltinAssetRecord[]}&#xD; */&#xD;var DefaultAssets = [{&#xD;    type: AssetType.ImageBitmap,&#xD;    format: DataFormat.PNG,&#xD;    id: null,&#xD;    data: __webpack_require__(25) // eslint-disable-line global-require&#xD;}, {&#xD;    type: AssetType.Sound,&#xD;    format: DataFormat.WAV,&#xD;    id: null,&#xD;    data: __webpack_require__(26) // eslint-disable-line global-require&#xD;}, {&#xD;    type: AssetType.ImageVector,&#xD;    format: DataFormat.SVG,&#xD;    id: null,&#xD;    data: __webpack_require__(27) // eslint-disable-line global-require&#xD;}];&#xD;&#xD;/**&#xD; * @type {BuiltinAssetRecord[]}&#xD; */&#xD;var BuiltinAssets = DefaultAssets.concat([]);&#xD;&#xD;var BuiltinHelper = function (_Helper) {&#xD;    _inherits(BuiltinHelper, _Helper);&#xD;&#xD;    function BuiltinHelper(parent) {&#xD;        _classCallCheck(this, BuiltinHelper);&#xD;&#xD;        /**&#xD;         * In-memory storage for all built-in assets.&#xD;         * @type {Object.&lt;AssetType, AssetIdMap&gt;} Maps asset type to a map of asset ID to actual assets.&#xD;         * @typedef {Object.&lt;string, BuiltinAssetRecord&gt;} AssetIdMap - Maps asset ID to asset.&#xD;         */&#xD;        var _this = _possibleConstructorReturn(this, (BuiltinHelper.__proto__ || Object.getPrototypeOf(BuiltinHelper)).call(this, parent));&#xD;&#xD;        _this.assets = {};&#xD;&#xD;        BuiltinAssets.forEach(function (assetRecord) {&#xD;            assetRecord.id = _this.cache(assetRecord.type, assetRecord.format, assetRecord.data, assetRecord.id);&#xD;        });&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Call `setDefaultAssetId` on the parent `ScratchStorage` instance to register all built-in default assets.&#xD;     */&#xD;&#xD;&#xD;    _createClass(BuiltinHelper, [{&#xD;        key: &apos;registerDefaultAssets&apos;,&#xD;        value: function registerDefaultAssets() {&#xD;            var numAssets = DefaultAssets.length;&#xD;            for (var assetIndex = 0; assetIndex &lt; numAssets; ++assetIndex) {&#xD;                var assetRecord = DefaultAssets[assetIndex];&#xD;                this.parent.setDefaultAssetId(assetRecord.type, assetRecord.id);&#xD;            }&#xD;        }&#xD;&#xD;        /**&#xD;         * Synchronously fetch a cached asset for a given asset id. Returns null if not found.&#xD;         * @param {string} assetId - The id for the asset to fetch.&#xD;         * @returns {?Asset} The asset for assetId, if it exists.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;get&apos;,&#xD;        value: function get(assetId) {&#xD;            var asset = null;&#xD;            if (this.assets.hasOwnProperty(assetId)) {&#xD;                /** @type{BuiltinAssetRecord} */&#xD;                var assetRecord = this.assets[assetId];&#xD;                asset = new Asset(assetRecord.type, assetRecord.id, assetRecord.format, assetRecord.data);&#xD;            }&#xD;            return asset;&#xD;        }&#xD;&#xD;        /**&#xD;         * Cache an asset for future lookups by ID.&#xD;         * @param {AssetType} assetType - The type of the asset to cache.&#xD;         * @param {DataFormat} dataFormat - The dataFormat of the data for the cached asset.&#xD;         * @param {Buffer} data - The data for the cached asset.&#xD;         * @param {string} id - The id for the cached asset.&#xD;         * @returns {string} The calculated id of the cached asset, or the supplied id if the asset is mutable.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;cache&apos;,&#xD;        value: function cache(assetType, dataFormat, data, id) {&#xD;            if (!dataFormat) throw new Error(&apos;Data cached without specifying its format&apos;);&#xD;            if (id) {&#xD;                if (this.assets.hasOwnProperty(id) &amp;&amp; assetType.immutable) return id;&#xD;            } else if (assetType.immutable) {&#xD;                var hash = crypto.createHash(&apos;md5&apos;);&#xD;                hash.update(data);&#xD;                id = hash.digest(&apos;hex&apos;);&#xD;            }&#xD;            this.assets[id] = {&#xD;                type: assetType,&#xD;                format: dataFormat,&#xD;                id: id,&#xD;                data: data&#xD;            };&#xD;            return id;&#xD;        }&#xD;&#xD;        /**&#xD;         * Fetch an asset but don&apos;t process dependencies.&#xD;         * @param {AssetType} assetType - The type of asset to fetch.&#xD;         * @param {string} assetId - The ID of the asset to fetch: a project ID, MD5, etc.&#xD;         * @return {Promise.&lt;Asset&gt;} A promise for the contents of the asset.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;load&apos;,&#xD;        value: function load(assetType, assetId) {&#xD;            return Promise.resolve(this.get(assetId));&#xD;        }&#xD;    }]);&#xD;&#xD;    return BuiltinHelper;&#xD;}(Helper);&#xD;&#xD;module.exports = BuiltinHelper;&#xD;&#xD;/***/ }),&#xD;/* 23 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var localforage = __webpack_require__(55);&#xD;&#xD;var Asset = __webpack_require__(5);&#xD;var Helper = __webpack_require__(7);&#xD;&#xD;/**&#xD; * Implements storage on the local device, available even when the device has no network connection.&#xD; */&#xD;&#xD;var LocalHelper = function (_Helper) {&#xD;    _inherits(LocalHelper, _Helper);&#xD;&#xD;    function LocalHelper(parent) {&#xD;        _classCallCheck(this, LocalHelper);&#xD;&#xD;        var _this = _possibleConstructorReturn(this, (LocalHelper.__proto__ || Object.getPrototypeOf(LocalHelper)).call(this, parent));&#xD;&#xD;        localforage.config({&#xD;            name: &apos;Scratch 3.0&apos;,&#xD;            size: 100 * 1024 * 1024&#xD;        });&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Fetch an asset but don&apos;t process dependencies.&#xD;     * @param {AssetType} assetType - The type of asset to fetch.&#xD;     * @param {string} assetId - The ID of the asset to fetch: a project ID, MD5, etc.&#xD;     * @return {Promise.&lt;Asset&gt;} A promise for the contents of the asset.&#xD;     */&#xD;&#xD;&#xD;    _createClass(LocalHelper, [{&#xD;        key: &apos;load&apos;,&#xD;        value: function load(assetType, assetId) {&#xD;            return new Promise(function (fulfill, reject) {&#xD;                var fileName = [assetId, assetType.runtimeFormat].join(&apos;.&apos;);&#xD;                localforage.getItem(fileName).then(function (data) {&#xD;                    if (data === null) {&#xD;                        fulfill(null);&#xD;                    } else {&#xD;                        fulfill(new Asset(assetType, assetId, assetType.runtimeFormat, data));&#xD;                    }&#xD;                }, function (error) {&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return LocalHelper;&#xD;}(Helper);&#xD;&#xD;module.exports = LocalHelper;&#xD;&#xD;/***/ }),&#xD;/* 24 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i &lt; props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn&apos;t been initialised - super() hasn&apos;t been called"); } return call &amp;&amp; (typeof call === "object" || typeof call === "function") ? call : self; }&#xD;&#xD;function _inherits(subClass, superClass) { if (typeof superClass !== "function" &amp;&amp; superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass &amp;&amp; superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }&#xD;&#xD;var got = __webpack_require__(28);&#xD;&#xD;var Asset = __webpack_require__(5);&#xD;var Helper = __webpack_require__(7);&#xD;&#xD;/**&#xD; * @typedef {function} UrlFunction - A function which computes a URL from asset information.&#xD; * @param {Asset} - The asset for which the URL should be computed.&#xD; * @returns {string} - The URL for the asset.&#xD; */&#xD;&#xD;var WebHelper = function (_Helper) {&#xD;    _inherits(WebHelper, _Helper);&#xD;&#xD;    function WebHelper(parent) {&#xD;        _classCallCheck(this, WebHelper);&#xD;&#xD;        /**&#xD;         * @type {Array.&lt;SourceRecord&gt;}&#xD;         * @typedef {object} SourceRecord&#xD;         * @property {Array.&lt;string&gt;} types - The types of asset provided by this source, from AssetType&apos;s name field.&#xD;         * @property {UrlFunction} urlFunction - A function which computes a URL from an Asset.&#xD;         */&#xD;        var _this = _possibleConstructorReturn(this, (WebHelper.__proto__ || Object.getPrototypeOf(WebHelper)).call(this, parent));&#xD;&#xD;        _this.sources = [];&#xD;        return _this;&#xD;    }&#xD;&#xD;    /**&#xD;     * Register a web-based source for assets. Sources will be checked in order of registration.&#xD;     * @param {Array.&lt;AssetType&gt;} types - The types of asset provided by this source.&#xD;     * @param {UrlFunction} urlFunction - A function which computes a URL from an Asset.&#xD;     */&#xD;&#xD;&#xD;    _createClass(WebHelper, [{&#xD;        key: &apos;addSource&apos;,&#xD;        value: function addSource(types, urlFunction) {&#xD;            this.sources.push({&#xD;                types: types.map(function (assetType) {&#xD;                    return assetType.name;&#xD;                }),&#xD;                urlFunction: urlFunction&#xD;            });&#xD;        }&#xD;&#xD;        /**&#xD;         * Fetch an asset but don&apos;t process dependencies.&#xD;         * @param {AssetType} assetType - The type of asset to fetch.&#xD;         * @param {string} assetId - The ID of the asset to fetch: a project ID, MD5, etc.&#xD;         * @return {Promise.&lt;Asset&gt;} A promise for the contents of the asset.&#xD;         */&#xD;&#xD;    }, {&#xD;        key: &apos;load&apos;,&#xD;        value: function load(assetType, assetId) {&#xD;&#xD;            /** @type {Array.&lt;{url:string, result:*}&gt;} List of URLs attempted &amp; errors encountered. */&#xD;            var errors = [];&#xD;            var sources = this.sources.slice();&#xD;            var asset = new Asset(assetType, assetId);&#xD;            var sourceIndex = 0;&#xD;&#xD;            return new Promise(function (fulfill, reject) {&#xD;&#xD;                var tryNextSource = function tryNextSource() {&#xD;&#xD;                    /** @type {UrlFunction} */&#xD;                    var urlFunction = void 0;&#xD;&#xD;                    while (sourceIndex &lt; sources.length) {&#xD;                        var source = sources[sourceIndex];&#xD;                        ++sourceIndex;&#xD;                        if (source.types.indexOf(assetType.name) &gt;= 0) {&#xD;                            urlFunction = source.urlFunction;&#xD;                            break;&#xD;                        }&#xD;                    }&#xD;&#xD;                    if (urlFunction) {&#xD;                        var options = {&#xD;                            encoding: null // return body as Buffer&#xD;                        };&#xD;                        var url = urlFunction(asset);&#xD;                        got(url, options).then(function (response) {&#xD;                            if (response.status &lt; 200 || response.status &gt;= 300) {&#xD;                                if (response.status !== 404) {&#xD;                                    errors.push({ url: url, result: response });&#xD;                                }&#xD;                                tryNextSource();&#xD;                            } else {&#xD;                                asset.setData(response.body, assetType.runtimeFormat);&#xD;                                fulfill(asset);&#xD;                            }&#xD;                        }, function (error) {&#xD;                            errors.push({ url: url, result: error });&#xD;                            tryNextSource();&#xD;                        });&#xD;                    } else if (errors.length &gt; 0) {&#xD;                        reject(errors);&#xD;                    } else {&#xD;                        fulfill(null); // no sources matching asset&#xD;                    }&#xD;                };&#xD;&#xD;                tryNextSource();&#xD;            });&#xD;        }&#xD;    }]);&#xD;&#xD;    return WebHelper;&#xD;}(Helper);&#xD;&#xD;module.exports = WebHelper;&#xD;&#xD;/***/ }),&#xD;/* 25 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0000\u0000\u0000\b\u0000\u0000\u0000\u0000æU&gt;\u0017\u0000\u0000\u0003dIDATxÚíÚïKÛ@\u0018\u0007ðïû¼è¾É\u0015A\u0004YAR\u00146æpî\"PPñ´H\u0007}á«QX\b}±áo\"Ûp£\u0005ÑÝPXcsÔ^$M\u000e,¤½Ë!Ü½lðÉÓç.wO\u000eDp\u0004H\u0004H\u0004H\u0004H\u0004&lt;U@«þ¥ðn(\u0001\u0000©á©âÁµ\u0015&apos; UÍ§ð¨¥òÕVLÖþ\b|ÛÈ®\u0019\u0007àbÒyäÑ\\¡°8 \t¯¾s\u0007e\u0015\u0000^\u001bí\u001f&#126;ÌQÄG/ÀÈ+\u0000R¦_L\u0000\u0000:O±\f\u0000ÃµÇY±©z9\u001fÀ,\u0000@ºúÏ\u0005k\u0012\u0014L^\u0000«¬\u0000Hîù]úì\t\n/@5\r\u0000Szppì6pÁ\u0007Ð\\\u0000\u0000¬ù_m¼¥\u0012Ñä\u00028N\u0002\u0000´ËÛ\u000bPOx\u0000\u001eì»\u0007ýÃ7^\b\u001e8\u0000êöÍA\u001dJ\u001e }Î\u0001 9!¸\rèpúÌ\u0013T8\u0000Ö{&apos;\u0003:Üye= \u0017ã÷ó\u001e 0L,\u00009^ô\u0000+\u0000,4ý{¬{¾\u001aO@P\bvø\u0002¨\u0000çýSLã\u000b ïe#\fÐÆ\u001ep\u000e{¾\nµ&lt;¼f\u000fpÞE\u00000X\u000fKÂiÃËè´§}û\u0019#,KVx¼\ríõ\b\u0000e;t\"â1\u0015\u0013Ò*&apos;\u0000@yoMÅ\\^F\u0010r1¯*£û\u0001; Z¯\u000bmØR`KÄîJÌo\u0011\u0000jø`\u0000:\n\u0000;·$ä·/øoÛu\u0017ÅY]\u0004@rçª\u001aÑa²ý\u0007-\u0011\u0000c¦]\u0011C\u001b×éÜ\u0000DL\u0000fö\u0010P\u000f\u0010@{\bDM@föÆ¸\u0010KÎg!à\u0014©\r\"\u0006àd@V&apos;b\u0000N\u0006D\u001eÌ\u0000v\u0000¢\u000f@Væl\u0003\u0015àDº\u0006a\u000b°KG% \u0013Àyºó\u0004d\u0002(\u0001P5\"\fp;ÑM\u00020\u0000|M\u00027D\u001c \u0018­.Ê\u001cp;\u0001¬&lt;\b\u0004õ£ç&apos;\u0011\bØ´\u0011å\u0000(F)\u0005p\u0000ÜÏcàHÀÍX¢,\u000f@}\u00109\"\u0012PëÅ&apos;¡\u0000-ø\u000bN&lt;J,\u0017ÀzPÍ2.@1BM\u000b ×õ(X$@\u0002$ +¾1®ªã\u001bº(À·\u0001»0òüÈ\u0012\u00028tu¼5ï\npE\u001d\u0018º\u0014\u0000Ø¢Ïâ\u0007Ðßèì]ì\u0000ú¸\u0004ºY\u0015&lt;YÀ]\u0006L\u001bñ&apos;aIp\u0012Ë¡\u000e\u000f1\u000eT±\u0013\u0011±´&gt;ç8&amp;f*&amp;äz5£(Õî\u0016ær= \u0001\u0012 \u0001\u0012 \u0001\u0012 \u0001\u0012 \u001cð\u0017zW+Â\u0010¡ªq\u0000\u0000\u0000\u0000IEND®B`"&#xD;&#xD;/***/ }),&#xD;/* 26 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "RIFF&amp;\u0000\u0000\u0000WAVEfmt \u0010\u0000\u0000\u0000\u0001\u0000\u0001\u0000\"V\u0000\u0000D¬\u0000\u0000\u0002\u0000\u0010\u0000data\u0002\u0000\u0000\u0000\u0000\u0000"&#xD;&#xD;/***/ }),&#xD;/* 27 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "&lt;?xml version=\"1.0\"?&gt;\n&lt;svg width=\"128\" height=\"128\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\"&gt;\n &lt;g&gt;\n  &lt;rect fill=\"#CCC\" height=\"128\" width=\"128\"/&gt;\n  &lt;text fill=\"black\" y=\"107\" x=\"35.5\" font-size=\"128\"&gt;?&lt;/text&gt;\n &lt;/g&gt;\n&lt;/svg&gt;\n"&#xD;&#xD;/***/ }),&#xD;/* 28 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var EventEmitter = __webpack_require__(19).EventEmitter;&#xD;var http = __webpack_require__(60);&#xD;var https = __webpack_require__(61);&#xD;var urlLib = __webpack_require__(20);&#xD;var querystring = __webpack_require__(62);&#xD;var objectAssign = __webpack_require__(37);&#xD;var PassThrough = __webpack_require__(9).PassThrough;&#xD;var duplexer2 = __webpack_require__(31);&#xD;var isStream = __webpack_require__(34);&#xD;var readAllStream = __webpack_require__(44);&#xD;var timedOut = __webpack_require__(50);&#xD;var urlParseLax = __webpack_require__(52);&#xD;var lowercaseKeys = __webpack_require__(35);&#xD;var isRedirect = __webpack_require__(32);&#xD;var PinkiePromise = __webpack_require__(13);&#xD;var unzipResponse = __webpack_require__(51);&#xD;var createErrorClass = __webpack_require__(29);&#xD;var nodeStatusCodes = __webpack_require__(36);&#xD;var parseJson = __webpack_require__(38);&#xD;var isRetryAllowed = __webpack_require__(33);&#xD;var pkg = __webpack_require__(54);&#xD;&#xD;function requestAsEventEmitter(opts) {&#xD;	opts = opts || {};&#xD;&#xD;	var ee = new EventEmitter();&#xD;	var requestUrl = opts.href || urlLib.resolve(urlLib.format(opts), opts.path);&#xD;	var redirectCount = 0;&#xD;	var retryCount = 0;&#xD;	var redirectUrl;&#xD;&#xD;	var get = function (opts) {&#xD;		var fn = opts.protocol === &apos;https:&apos; ? https : http;&#xD;&#xD;		var req = fn.request(opts, function (res) {&#xD;			var statusCode = res.statusCode;&#xD;&#xD;			if (isRedirect(statusCode) &amp;&amp; opts.followRedirect &amp;&amp; &apos;location&apos; in res.headers &amp;&amp; (opts.method === &apos;GET&apos; || opts.method === &apos;HEAD&apos;)) {&#xD;				res.resume();&#xD;&#xD;				if (++redirectCount &gt; 10) {&#xD;					ee.emit(&apos;error&apos;, new got.MaxRedirectsError(statusCode, opts), null, res);&#xD;					return;&#xD;				}&#xD;&#xD;				redirectUrl = urlLib.resolve(urlLib.format(opts), res.headers.location);&#xD;				var redirectOpts = objectAssign({}, opts, urlLib.parse(redirectUrl));&#xD;&#xD;				ee.emit(&apos;redirect&apos;, res, redirectOpts);&#xD;&#xD;				get(redirectOpts);&#xD;				return;&#xD;			}&#xD;&#xD;			// do not write ee.bind(...) instead of function - it will break gzip in Node.js 0.10&#xD;			setImmediate(function () {&#xD;				var response = typeof unzipResponse === &apos;function&apos; &amp;&amp; req.method !== &apos;HEAD&apos; ? unzipResponse(res) : res;&#xD;				response.url = redirectUrl || requestUrl;&#xD;				response.requestUrl = requestUrl;&#xD;&#xD;				ee.emit(&apos;response&apos;, response);&#xD;			});&#xD;		});&#xD;&#xD;		req.once(&apos;error&apos;, function (err) {&#xD;			var backoff = opts.retries(++retryCount, err);&#xD;			if (backoff) {&#xD;				setTimeout(get, backoff, opts);&#xD;				return;&#xD;			}&#xD;&#xD;			ee.emit(&apos;error&apos;, new got.RequestError(err, opts));&#xD;		});&#xD;&#xD;		if (opts.timeout) {&#xD;			timedOut(req, opts.timeout);&#xD;		}&#xD;&#xD;		setImmediate(ee.emit.bind(ee), &apos;request&apos;, req);&#xD;	};&#xD;&#xD;	get(opts);&#xD;	return ee;&#xD;}&#xD;&#xD;function asCallback(opts, cb) {&#xD;	var ee = requestAsEventEmitter(opts);&#xD;&#xD;	ee.on(&apos;request&apos;, function (req) {&#xD;		if (isStream(opts.body)) {&#xD;			opts.body.pipe(req);&#xD;			opts.body = undefined;&#xD;			return;&#xD;		}&#xD;&#xD;		req.end(opts.body);&#xD;	});&#xD;&#xD;	ee.on(&apos;response&apos;, function (res) {&#xD;		readAllStream(res, opts.encoding, function (error, data) {&#xD;			var statusCode = res.statusCode;&#xD;			var limitStatusCode = opts.followRedirect ? 299 : 399;&#xD;&#xD;			if (error) {&#xD;				cb(new got.ReadError(error, opts), null, res);&#xD;				return;&#xD;			}&#xD;&#xD;			if (statusCode &lt; 200 || statusCode &gt; limitStatusCode) {&#xD;				error = new got.HTTPError(statusCode, opts);&#xD;			}&#xD;&#xD;			if (opts.json &amp;&amp; data) {&#xD;				try {&#xD;					data = parseJson(data);&#xD;				} catch (err) {&#xD;					err.fileName = urlLib.format(opts);&#xD;					error = new got.ParseError(err, statusCode, opts);&#xD;				}&#xD;			}&#xD;&#xD;			cb(error, data, res);&#xD;		});&#xD;	});&#xD;&#xD;	ee.on(&apos;error&apos;, cb);&#xD;}&#xD;&#xD;function asPromise(opts) {&#xD;	return new PinkiePromise(function (resolve, reject) {&#xD;		asCallback(opts, function (err, data, response) {&#xD;			if (response) {&#xD;				response.body = data;&#xD;			}&#xD;&#xD;			if (err) {&#xD;				Object.defineProperty(err, &apos;response&apos;, {&#xD;					value: response,&#xD;					enumerable: false&#xD;				});&#xD;				reject(err);&#xD;				return;&#xD;			}&#xD;&#xD;			resolve(response);&#xD;		});&#xD;	});&#xD;}&#xD;&#xD;function asStream(opts) {&#xD;	var input = new PassThrough();&#xD;	var output = new PassThrough();&#xD;	var proxy = duplexer2(input, output);&#xD;&#xD;	if (opts.json) {&#xD;		throw new Error(&apos;got can not be used as stream when options.json is used&apos;);&#xD;	}&#xD;&#xD;	if (opts.body) {&#xD;		proxy.write = function () {&#xD;			throw new Error(&apos;got\&apos;s stream is not writable when options.body is used&apos;);&#xD;		};&#xD;	}&#xD;&#xD;	var ee = requestAsEventEmitter(opts);&#xD;&#xD;	ee.on(&apos;request&apos;, function (req) {&#xD;		proxy.emit(&apos;request&apos;, req);&#xD;&#xD;		if (isStream(opts.body)) {&#xD;			opts.body.pipe(req);&#xD;			return;&#xD;		}&#xD;&#xD;		if (opts.body) {&#xD;			req.end(opts.body);&#xD;			return;&#xD;		}&#xD;&#xD;		if (opts.method === &apos;POST&apos; || opts.method === &apos;PUT&apos; || opts.method === &apos;PATCH&apos;) {&#xD;			input.pipe(req);&#xD;			return;&#xD;		}&#xD;&#xD;		req.end();&#xD;	});&#xD;&#xD;	ee.on(&apos;response&apos;, function (res) {&#xD;		var statusCode = res.statusCode;&#xD;		var limitStatusCode = opts.followRedirect ? 299 : 399;&#xD;&#xD;		res.pipe(output);&#xD;&#xD;		if (statusCode &lt; 200 || statusCode &gt; limitStatusCode) {&#xD;			proxy.emit(&apos;error&apos;, new got.HTTPError(statusCode, opts), null, res);&#xD;			return;&#xD;		}&#xD;&#xD;		proxy.emit(&apos;response&apos;, res);&#xD;	});&#xD;&#xD;	ee.on(&apos;redirect&apos;, proxy.emit.bind(proxy, &apos;redirect&apos;));&#xD;&#xD;	ee.on(&apos;error&apos;, proxy.emit.bind(proxy, &apos;error&apos;));&#xD;&#xD;	return proxy;&#xD;}&#xD;&#xD;function normalizeArguments(url, opts) {&#xD;	if (typeof url !== &apos;string&apos; &amp;&amp; typeof url !== &apos;object&apos;) {&#xD;		throw new Error(&apos;Parameter `url` must be a string or object, not &apos; + typeof url);&#xD;	}&#xD;&#xD;	if (typeof url === &apos;string&apos;) {&#xD;		url = url.replace(/^unix:/, &apos;http://$&amp;&apos;);&#xD;		url = urlParseLax(url);&#xD;&#xD;		if (url.auth) {&#xD;			throw new Error(&apos;Basic authentication must be done with auth option&apos;);&#xD;		}&#xD;	}&#xD;&#xD;	opts = objectAssign(&#xD;		{protocol: &apos;http:&apos;, path: &apos;&apos;, retries: 5},&#xD;		url,&#xD;		opts&#xD;	);&#xD;&#xD;	opts.headers = objectAssign({&#xD;		&apos;user-agent&apos;: pkg.name + &apos;/&apos; + pkg.version + &apos; (https://github.com/sindresorhus/got)&apos;,&#xD;		&apos;accept-encoding&apos;: &apos;gzip,deflate&apos;&#xD;	}, lowercaseKeys(opts.headers));&#xD;&#xD;	var query = opts.query;&#xD;&#xD;	if (query) {&#xD;		if (typeof query !== &apos;string&apos;) {&#xD;			opts.query = querystring.stringify(query);&#xD;		}&#xD;&#xD;		opts.path = opts.path.split(&apos;?&apos;)[0] + &apos;?&apos; + opts.query;&#xD;		delete opts.query;&#xD;	}&#xD;&#xD;	if (opts.json &amp;&amp; opts.headers.accept === undefined) {&#xD;		opts.headers.accept = &apos;application/json&apos;;&#xD;	}&#xD;&#xD;	var body = opts.body;&#xD;&#xD;	if (body) {&#xD;		if (typeof body !== &apos;string&apos; &amp;&amp; !(body !== null &amp;&amp; typeof body === &apos;object&apos;)) {&#xD;			throw new Error(&apos;options.body must be a ReadableStream, string, Buffer or plain Object&apos;);&#xD;		}&#xD;&#xD;		opts.method = opts.method || &apos;POST&apos;;&#xD;&#xD;		if (isStream(body) &amp;&amp; typeof body.getBoundary === &apos;function&apos;) {&#xD;			// Special case for https://github.com/form-data/form-data&#xD;			opts.headers[&apos;content-type&apos;] = opts.headers[&apos;content-type&apos;] || &apos;multipart/form-data; boundary=&apos; + body.getBoundary();&#xD;		} else if (body !== null &amp;&amp; typeof body === &apos;object&apos; &amp;&amp; !Buffer.isBuffer(body) &amp;&amp; !isStream(body)) {&#xD;			opts.headers[&apos;content-type&apos;] = opts.headers[&apos;content-type&apos;] || &apos;application/x-www-form-urlencoded&apos;;&#xD;			body = opts.body = querystring.stringify(body);&#xD;		}&#xD;&#xD;		if (opts.headers[&apos;content-length&apos;] === undefined &amp;&amp; opts.headers[&apos;transfer-encoding&apos;] === undefined &amp;&amp; !isStream(body)) {&#xD;			var length = typeof body === &apos;string&apos; ? Buffer.byteLength(body) : body.length;&#xD;			opts.headers[&apos;content-length&apos;] = length;&#xD;		}&#xD;	}&#xD;&#xD;	opts.method = opts.method || &apos;GET&apos;;&#xD;&#xD;	opts.method = opts.method.toUpperCase();&#xD;&#xD;	if (opts.hostname === &apos;unix&apos;) {&#xD;		var matches = /(.+):(.+)/.exec(opts.path);&#xD;&#xD;		if (matches) {&#xD;			opts.socketPath = matches[1];&#xD;			opts.path = matches[2];&#xD;			opts.host = null;&#xD;		}&#xD;	}&#xD;&#xD;	if (typeof opts.retries !== &apos;function&apos;) {&#xD;		var retries = opts.retries;&#xD;		opts.retries = function backoff(iter, err) {&#xD;			if (iter &gt; retries || !isRetryAllowed(err)) {&#xD;				return 0;&#xD;			}&#xD;&#xD;			var noise = Math.random() * 100;&#xD;			return ((1 &lt;&lt; iter) * 1000) + noise;&#xD;		};&#xD;	}&#xD;&#xD;	if (opts.followRedirect === undefined) {&#xD;		opts.followRedirect = true;&#xD;	}&#xD;&#xD;	return opts;&#xD;}&#xD;&#xD;function got(url, opts, cb) {&#xD;	if (typeof opts === &apos;function&apos;) {&#xD;		cb = opts;&#xD;		opts = {};&#xD;	}&#xD;&#xD;	if (cb) {&#xD;		asCallback(normalizeArguments(url, opts), cb);&#xD;		return null;&#xD;	}&#xD;&#xD;	try {&#xD;		return asPromise(normalizeArguments(url, opts));&#xD;	} catch (err) {&#xD;		return PinkiePromise.reject(err);&#xD;	}&#xD;}&#xD;&#xD;var helpers = [&#xD;	&apos;get&apos;,&#xD;	&apos;post&apos;,&#xD;	&apos;put&apos;,&#xD;	&apos;patch&apos;,&#xD;	&apos;head&apos;,&#xD;	&apos;delete&apos;&#xD;];&#xD;&#xD;helpers.forEach(function (el) {&#xD;	got[el] = function (url, opts, cb) {&#xD;		if (typeof opts === &apos;function&apos;) {&#xD;			cb = opts;&#xD;			opts = {};&#xD;		}&#xD;&#xD;		return got(url, objectAssign({}, opts, {method: el}), cb);&#xD;	};&#xD;});&#xD;&#xD;got.stream = function (url, opts, cb) {&#xD;	if (cb || typeof opts === &apos;function&apos;) {&#xD;		throw new Error(&apos;callback can not be used with stream mode&apos;);&#xD;	}&#xD;&#xD;	return asStream(normalizeArguments(url, opts));&#xD;};&#xD;&#xD;helpers.forEach(function (el) {&#xD;	got.stream[el] = function (url, opts, cb) {&#xD;		if (typeof opts === &apos;function&apos;) {&#xD;			cb = opts;&#xD;			opts = {};&#xD;		}&#xD;&#xD;		return got.stream(url, objectAssign({}, opts, {method: el}), cb);&#xD;	};&#xD;});&#xD;&#xD;function stdError(error, opts) {&#xD;	if (error.code !== undefined) {&#xD;		this.code = error.code;&#xD;	}&#xD;&#xD;	objectAssign(this, {&#xD;		message: error.message,&#xD;		host: opts.host,&#xD;		hostname: opts.hostname,&#xD;		method: opts.method,&#xD;		path: opts.path&#xD;	});&#xD;}&#xD;&#xD;got.RequestError = createErrorClass(&apos;RequestError&apos;, stdError);&#xD;got.ReadError = createErrorClass(&apos;ReadError&apos;, stdError);&#xD;&#xD;got.ParseError = createErrorClass(&apos;ParseError&apos;, function (e, statusCode, opts) {&#xD;	stdError.call(this, e, opts);&#xD;	this.statusCode = statusCode;&#xD;	this.statusMessage = nodeStatusCodes[this.statusCode];&#xD;});&#xD;&#xD;got.HTTPError = createErrorClass(&apos;HTTPError&apos;, function (statusCode, opts) {&#xD;	stdError.call(this, {}, opts);&#xD;	this.statusCode = statusCode;&#xD;	this.statusMessage = nodeStatusCodes[this.statusCode];&#xD;	this.message = &apos;Response code &apos; + this.statusCode + &apos; (&apos; + this.statusMessage + &apos;)&apos;;&#xD;});&#xD;&#xD;got.MaxRedirectsError = createErrorClass(&apos;MaxRedirectsError&apos;, function (statusCode, opts) {&#xD;	stdError.call(this, {}, opts);&#xD;	this.statusCode = statusCode;&#xD;	this.statusMessage = nodeStatusCodes[this.statusCode];&#xD;	this.message = &apos;Redirected 10 times. Aborting.&apos;;&#xD;});&#xD;&#xD;module.exports = got;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 29 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;var captureStackTrace = __webpack_require__(30);&#xD;&#xD;function inherits(ctor, superCtor) {&#xD;	ctor.super_ = superCtor;&#xD;	ctor.prototype = Object.create(superCtor.prototype, {&#xD;		constructor: {&#xD;			value: ctor,&#xD;			enumerable: false,&#xD;			writable: true,&#xD;			configurable: true&#xD;		}&#xD;	});&#xD;}&#xD;&#xD;module.exports = function createErrorClass(className, setup) {&#xD;	if (typeof className !== &apos;string&apos;) {&#xD;		throw new TypeError(&apos;Expected className to be a string&apos;);&#xD;	}&#xD;&#xD;	if (/[^0-9a-zA-Z_$]/.test(className)) {&#xD;		throw new Error(&apos;className contains invalid characters&apos;);&#xD;	}&#xD;&#xD;	setup = setup || function (message) {&#xD;		this.message = message;&#xD;	};&#xD;&#xD;	var ErrorClass = function () {&#xD;		Object.defineProperty(this, &apos;name&apos;, {&#xD;			configurable: true,&#xD;			value: className,&#xD;			writable: true&#xD;		});&#xD;&#xD;		captureStackTrace(this, this.constructor);&#xD;&#xD;		setup.apply(this, arguments);&#xD;	};&#xD;&#xD;	inherits(ErrorClass, Error);&#xD;&#xD;	return ErrorClass;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 30 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = Error.captureStackTrace || function (error) {&#xD;	var container = new Error();&#xD;&#xD;	Object.defineProperty(error, &apos;stack&apos;, {&#xD;		configurable: true,&#xD;		get: function getStack() {&#xD;			var stack = container.stack;&#xD;&#xD;			Object.defineProperty(this, &apos;stack&apos;, {&#xD;				value: stack&#xD;			});&#xD;&#xD;			return stack;&#xD;		}&#xD;	});&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 31 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var stream = __webpack_require__(9);&#xD;&#xD;function DuplexWrapper(options, writable, readable) {&#xD;  if (typeof readable === "undefined") {&#xD;    readable = writable;&#xD;    writable = options;&#xD;    options = null;&#xD;  }&#xD;&#xD;  stream.Duplex.call(this, options);&#xD;&#xD;  if (typeof readable.read !== "function") {&#xD;    readable = (new stream.Readable(options)).wrap(readable);&#xD;  }&#xD;&#xD;  this._writable = writable;&#xD;  this._readable = readable;&#xD;  this._waiting = false;&#xD;&#xD;  var self = this;&#xD;&#xD;  writable.once("finish", function() {&#xD;    self.end();&#xD;  });&#xD;&#xD;  this.once("finish", function() {&#xD;    writable.end();&#xD;  });&#xD;&#xD;  readable.on("readable", function() {&#xD;    if (self._waiting) {&#xD;      self._waiting = false;&#xD;      self._read();&#xD;    }&#xD;  });&#xD;&#xD;  readable.once("end", function() {&#xD;    self.push(null);&#xD;  });&#xD;&#xD;  if (!options || typeof options.bubbleErrors === "undefined" || options.bubbleErrors) {&#xD;    writable.on("error", function(err) {&#xD;      self.emit("error", err);&#xD;    });&#xD;&#xD;    readable.on("error", function(err) {&#xD;      self.emit("error", err);&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});&#xD;&#xD;DuplexWrapper.prototype._write = function _write(input, encoding, done) {&#xD;  this._writable.write(input, encoding, done);&#xD;};&#xD;&#xD;DuplexWrapper.prototype._read = function _read() {&#xD;  var buf;&#xD;  var reads = 0;&#xD;  while ((buf = this._readable.read()) !== null) {&#xD;    this.push(buf);&#xD;    reads++;&#xD;  }&#xD;  if (reads === 0) {&#xD;    this._waiting = true;&#xD;  }&#xD;};&#xD;&#xD;module.exports = function duplex2(options, writable, readable) {&#xD;  return new DuplexWrapper(options, writable, readable);&#xD;};&#xD;&#xD;module.exports.DuplexWrapper = DuplexWrapper;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 32 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;module.exports = function (x) {&#xD;	if (typeof x !== &apos;number&apos;) {&#xD;		throw new TypeError(&apos;Expected a number&apos;);&#xD;	}&#xD;&#xD;	return x === 300 ||&#xD;		x === 301 ||&#xD;		x === 302 ||&#xD;		x === 303 ||&#xD;		x === 305 ||&#xD;		x === 307 ||&#xD;		x === 308;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 33 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var WHITELIST = [&#xD;	&apos;ETIMEDOUT&apos;,&#xD;	&apos;ECONNRESET&apos;,&#xD;	&apos;EADDRINUSE&apos;,&#xD;	&apos;ESOCKETTIMEDOUT&apos;,&#xD;	&apos;ECONNREFUSED&apos;,&#xD;	&apos;EPIPE&apos;&#xD;];&#xD;&#xD;var BLACKLIST = [&#xD;	&apos;ENOTFOUND&apos;,&#xD;	&apos;ENETUNREACH&apos;,&#xD;&#xD;	// SSL errors from https://github.com/nodejs/node/blob/ed3d8b13ee9a705d89f9e0397d9e96519e7e47ac/src/node_crypto.cc#L1950&#xD;	&apos;UNABLE_TO_GET_ISSUER_CERT&apos;,&#xD;	&apos;UNABLE_TO_GET_CRL&apos;,&#xD;	&apos;UNABLE_TO_DECRYPT_CERT_SIGNATURE&apos;,&#xD;	&apos;UNABLE_TO_DECRYPT_CRL_SIGNATURE&apos;,&#xD;	&apos;UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY&apos;,&#xD;	&apos;CERT_SIGNATURE_FAILURE&apos;,&#xD;	&apos;CRL_SIGNATURE_FAILURE&apos;,&#xD;	&apos;CERT_NOT_YET_VALID&apos;,&#xD;	&apos;CERT_HAS_EXPIRED&apos;,&#xD;	&apos;CRL_NOT_YET_VALID&apos;,&#xD;	&apos;CRL_HAS_EXPIRED&apos;,&#xD;	&apos;ERROR_IN_CERT_NOT_BEFORE_FIELD&apos;,&#xD;	&apos;ERROR_IN_CERT_NOT_AFTER_FIELD&apos;,&#xD;	&apos;ERROR_IN_CRL_LAST_UPDATE_FIELD&apos;,&#xD;	&apos;ERROR_IN_CRL_NEXT_UPDATE_FIELD&apos;,&#xD;	&apos;OUT_OF_MEM&apos;,&#xD;	&apos;DEPTH_ZERO_SELF_SIGNED_CERT&apos;,&#xD;	&apos;SELF_SIGNED_CERT_IN_CHAIN&apos;,&#xD;	&apos;UNABLE_TO_GET_ISSUER_CERT_LOCALLY&apos;,&#xD;	&apos;UNABLE_TO_VERIFY_LEAF_SIGNATURE&apos;,&#xD;	&apos;CERT_CHAIN_TOO_LONG&apos;,&#xD;	&apos;CERT_REVOKED&apos;,&#xD;	&apos;INVALID_CA&apos;,&#xD;	&apos;PATH_LENGTH_EXCEEDED&apos;,&#xD;	&apos;INVALID_PURPOSE&apos;,&#xD;	&apos;CERT_UNTRUSTED&apos;,&#xD;	&apos;CERT_REJECTED&apos;&#xD;];&#xD;&#xD;module.exports = function (err) {&#xD;	if (!err || !err.code) {&#xD;		return true;&#xD;	}&#xD;&#xD;	if (WHITELIST.indexOf(err.code) !== -1) {&#xD;		return true;&#xD;	}&#xD;&#xD;	if (BLACKLIST.indexOf(err.code) !== -1) {&#xD;		return false;&#xD;	}&#xD;&#xD;	return true;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 34 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var isStream = module.exports = function (stream) {&#xD;	return stream !== null &amp;&amp; typeof stream === &apos;object&apos; &amp;&amp; typeof stream.pipe === &apos;function&apos;;&#xD;};&#xD;&#xD;isStream.writable = function (stream) {&#xD;	return isStream(stream) &amp;&amp; stream.writable !== false &amp;&amp; typeof stream._write === &apos;function&apos; &amp;&amp; typeof stream._writableState === &apos;object&apos;;&#xD;};&#xD;&#xD;isStream.readable = function (stream) {&#xD;	return isStream(stream) &amp;&amp; stream.readable !== false &amp;&amp; typeof stream._read === &apos;function&apos; &amp;&amp; typeof stream._readableState === &apos;object&apos;;&#xD;};&#xD;&#xD;isStream.duplex = function (stream) {&#xD;	return isStream.writable(stream) &amp;&amp; isStream.readable(stream);&#xD;};&#xD;&#xD;isStream.transform = function (stream) {&#xD;	return isStream.duplex(stream) &amp;&amp; typeof stream._transform === &apos;function&apos; &amp;&amp; typeof stream._transformState === &apos;object&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 35 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;module.exports = function (obj) {&#xD;	var ret = {};&#xD;	var keys = Object.keys(Object(obj));&#xD;&#xD;	for (var i = 0; i &lt; keys.length; i++) {&#xD;		ret[keys[i].toLowerCase()] = obj[keys[i]];&#xD;	}&#xD;&#xD;	return ret;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 36 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;// https://github.com/nodejs/io.js/commit/8be6060020&#xD;module.exports = {&#xD;	100: &apos;Continue&apos;,&#xD;	101: &apos;Switching Protocols&apos;,&#xD;	102: &apos;Processing&apos;,&#xD;	200: &apos;OK&apos;,&#xD;	201: &apos;Created&apos;,&#xD;	202: &apos;Accepted&apos;,&#xD;	203: &apos;Non-Authoritative Information&apos;,&#xD;	204: &apos;No Content&apos;,&#xD;	205: &apos;Reset Content&apos;,&#xD;	206: &apos;Partial Content&apos;,&#xD;	207: &apos;Multi-Status&apos;,&#xD;	300: &apos;Multiple Choices&apos;,&#xD;	301: &apos;Moved Permanently&apos;,&#xD;	302: &apos;Moved Temporarily&apos;,&#xD;	303: &apos;See Other&apos;,&#xD;	304: &apos;Not Modified&apos;,&#xD;	305: &apos;Use Proxy&apos;,&#xD;	307: &apos;Temporary Redirect&apos;,&#xD;	308: &apos;Permanent Redirect&apos;,&#xD;	400: &apos;Bad Request&apos;,&#xD;	401: &apos;Unauthorized&apos;,&#xD;	402: &apos;Payment Required&apos;,&#xD;	403: &apos;Forbidden&apos;,&#xD;	404: &apos;Not Found&apos;,&#xD;	405: &apos;Method Not Allowed&apos;,&#xD;	406: &apos;Not Acceptable&apos;,&#xD;	407: &apos;Proxy Authentication Required&apos;,&#xD;	408: &apos;Request Time-out&apos;,&#xD;	409: &apos;Conflict&apos;,&#xD;	410: &apos;Gone&apos;,&#xD;	411: &apos;Length Required&apos;,&#xD;	412: &apos;Precondition Failed&apos;,&#xD;	413: &apos;Request Entity Too Large&apos;,&#xD;	414: &apos;Request-URI Too Large&apos;,&#xD;	415: &apos;Unsupported Media Type&apos;,&#xD;	416: &apos;Requested Range Not Satisfiable&apos;,&#xD;	417: &apos;Expectation Failed&apos;,&#xD;	418: &apos;I\&apos;m a teapot&apos;,&#xD;	422: &apos;Unprocessable Entity&apos;,&#xD;	423: &apos;Locked&apos;,&#xD;	424: &apos;Failed Dependency&apos;,&#xD;	425: &apos;Unordered Collection&apos;,&#xD;	426: &apos;Upgrade Required&apos;,&#xD;	428: &apos;Precondition Required&apos;,&#xD;	429: &apos;Too Many Requests&apos;,&#xD;	431: &apos;Request Header Fields Too Large&apos;,&#xD;	500: &apos;Internal Server Error&apos;,&#xD;	501: &apos;Not Implemented&apos;,&#xD;	502: &apos;Bad Gateway&apos;,&#xD;	503: &apos;Service Unavailable&apos;,&#xD;	504: &apos;Gateway Time-out&apos;,&#xD;	505: &apos;HTTP Version Not Supported&apos;,&#xD;	506: &apos;Variant Also Negotiates&apos;,&#xD;	507: &apos;Insufficient Storage&apos;,&#xD;	509: &apos;Bandwidth Limit Exceeded&apos;,&#xD;	510: &apos;Not Extended&apos;,&#xD;	511: &apos;Network Authentication Required&apos;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 37 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/*&#xD;object-assign&#xD;(c) Sindre Sorhus&#xD;@license MIT&#xD;*/&#xD;&#xD;&#xD;/* eslint-disable no-unused-vars */&#xD;var getOwnPropertySymbols = Object.getOwnPropertySymbols;&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;var propIsEnumerable = Object.prototype.propertyIsEnumerable;&#xD;&#xD;function toObject(val) {&#xD;	if (val === null || val === undefined) {&#xD;		throw new TypeError(&apos;Object.assign cannot be called with null or undefined&apos;);&#xD;	}&#xD;&#xD;	return Object(val);&#xD;}&#xD;&#xD;function shouldUseNative() {&#xD;	try {&#xD;		if (!Object.assign) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// Detect buggy property enumeration order in older V8 versions.&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=4118&#xD;		var test1 = new String(&apos;abc&apos;);  // eslint-disable-line no-new-wrappers&#xD;		test1[5] = &apos;de&apos;;&#xD;		if (Object.getOwnPropertyNames(test1)[0] === &apos;5&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=3056&#xD;		var test2 = {};&#xD;		for (var i = 0; i &lt; 10; i++) {&#xD;			test2[&apos;_&apos; + String.fromCharCode(i)] = i;&#xD;		}&#xD;		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {&#xD;			return test2[n];&#xD;		});&#xD;		if (order2.join(&apos;&apos;) !== &apos;0123456789&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=3056&#xD;		var test3 = {};&#xD;		&apos;abcdefghijklmnopqrst&apos;.split(&apos;&apos;).forEach(function (letter) {&#xD;			test3[letter] = letter;&#xD;		});&#xD;		if (Object.keys(Object.assign({}, test3)).join(&apos;&apos;) !==&#xD;				&apos;abcdefghijklmnopqrst&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		return true;&#xD;	} catch (err) {&#xD;		// We don&apos;t expect any of the above to throw, but better to be safe.&#xD;		return false;&#xD;	}&#xD;}&#xD;&#xD;module.exports = shouldUseNative() ? Object.assign : function (target, source) {&#xD;	var from;&#xD;	var to = toObject(target);&#xD;	var symbols;&#xD;&#xD;	for (var s = 1; s &lt; arguments.length; s++) {&#xD;		from = Object(arguments[s]);&#xD;&#xD;		for (var key in from) {&#xD;			if (hasOwnProperty.call(from, key)) {&#xD;				to[key] = from[key];&#xD;			}&#xD;		}&#xD;&#xD;		if (getOwnPropertySymbols) {&#xD;			symbols = getOwnPropertySymbols(from);&#xD;			for (var i = 0; i &lt; symbols.length; i++) {&#xD;				if (propIsEnumerable.call(from, symbols[i])) {&#xD;					to[symbols[i]] = from[symbols[i]];&#xD;				}&#xD;			}&#xD;		}&#xD;	}&#xD;&#xD;	return to;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 38 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;var errorEx = __webpack_require__(39);&#xD;var fallback = __webpack_require__(41);&#xD;&#xD;var JSONError = errorEx(&apos;JSONError&apos;, {&#xD;	fileName: errorEx.append(&apos;in %s&apos;)&#xD;});&#xD;&#xD;module.exports = function (x, reviver, filename) {&#xD;	if (typeof reviver === &apos;string&apos;) {&#xD;		filename = reviver;&#xD;		reviver = null;&#xD;	}&#xD;&#xD;	try {&#xD;		try {&#xD;			return JSON.parse(x, reviver);&#xD;		} catch (err) {&#xD;			fallback.parse(x, {&#xD;				mode: &apos;json&apos;,&#xD;				reviver: reviver&#xD;			});&#xD;&#xD;			throw err;&#xD;		}&#xD;	} catch (err) {&#xD;		var jsonErr = new JSONError(err);&#xD;&#xD;		if (filename) {&#xD;			jsonErr.fileName = filename;&#xD;		}&#xD;&#xD;		throw jsonErr;&#xD;	}&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 39 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var util = __webpack_require__(4);&#xD;var isArrayish = __webpack_require__(40);&#xD;&#xD;var errorEx = function errorEx(name, properties) {&#xD;	if (!name || name.constructor !== String) {&#xD;		properties = name || {};&#xD;		name = Error.name;&#xD;	}&#xD;&#xD;	var errorExError = function ErrorEXError(message) {&#xD;		if (!this) {&#xD;			return new ErrorEXError(message);&#xD;		}&#xD;&#xD;		message = message instanceof Error&#xD;			? message.message&#xD;			: (message || this.message);&#xD;&#xD;		Error.call(this, message);&#xD;		Error.captureStackTrace(this, errorExError);&#xD;&#xD;		this.name = name;&#xD;&#xD;		Object.defineProperty(this, &apos;message&apos;, {&#xD;			configurable: true,&#xD;			enumerable: false,&#xD;			get: function () {&#xD;				var newMessage = message.split(/\r?\n/g);&#xD;&#xD;				for (var key in properties) {&#xD;					if (!properties.hasOwnProperty(key)) {&#xD;						continue;&#xD;					}&#xD;&#xD;					var modifier = properties[key];&#xD;&#xD;					if (&apos;message&apos; in modifier) {&#xD;						newMessage = modifier.message(this[key], newMessage) || newMessage;&#xD;						if (!isArrayish(newMessage)) {&#xD;							newMessage = [newMessage];&#xD;						}&#xD;					}&#xD;				}&#xD;&#xD;				return newMessage.join(&apos;\n&apos;);&#xD;			},&#xD;			set: function (v) {&#xD;				message = v;&#xD;			}&#xD;		});&#xD;&#xD;		var stackDescriptor = Object.getOwnPropertyDescriptor(this, &apos;stack&apos;);&#xD;		var stackGetter = stackDescriptor.get;&#xD;		var stackValue = stackDescriptor.value;&#xD;		delete stackDescriptor.value;&#xD;		delete stackDescriptor.writable;&#xD;&#xD;		stackDescriptor.get = function () {&#xD;			var stack = (stackGetter)&#xD;				? stackGetter.call(this).split(/\r?\n+/g)&#xD;				: stackValue.split(/\r?\n+/g);&#xD;&#xD;			// starting in Node 7, the stack builder caches the message.&#xD;			// just replace it.&#xD;			stack[0] = this.name + &apos;: &apos; + this.message;&#xD;&#xD;			var lineCount = 1;&#xD;			for (var key in properties) {&#xD;				if (!properties.hasOwnProperty(key)) {&#xD;					continue;&#xD;				}&#xD;&#xD;				var modifier = properties[key];&#xD;&#xD;				if (&apos;line&apos; in modifier) {&#xD;					var line = modifier.line(this[key]);&#xD;					if (line) {&#xD;						stack.splice(lineCount++, 0, &apos;    &apos; + line);&#xD;					}&#xD;				}&#xD;&#xD;				if (&apos;stack&apos; in modifier) {&#xD;					modifier.stack(this[key], stack);&#xD;				}&#xD;			}&#xD;&#xD;			return stack.join(&apos;\n&apos;);&#xD;		};&#xD;&#xD;		Object.defineProperty(this, &apos;stack&apos;, stackDescriptor);&#xD;	};&#xD;&#xD;	if (Object.setPrototypeOf) {&#xD;		Object.setPrototypeOf(errorExError.prototype, Error.prototype);&#xD;		Object.setPrototypeOf(errorExError, Error);&#xD;	} else {&#xD;		util.inherits(errorExError, Error);&#xD;	}&#xD;&#xD;	return errorExError;&#xD;};&#xD;&#xD;errorEx.append = function (str, def) {&#xD;	return {&#xD;		message: function (v, message) {&#xD;			v = v || def;&#xD;&#xD;			if (v) {&#xD;				message[0] += &apos; &apos; + str.replace(&apos;%s&apos;, v.toString());&#xD;			}&#xD;&#xD;			return message;&#xD;		}&#xD;	};&#xD;};&#xD;&#xD;errorEx.line = function (str, def) {&#xD;	return {&#xD;		line: function (v) {&#xD;			v = v || def;&#xD;&#xD;			if (v) {&#xD;				return str.replace(&apos;%s&apos;, v.toString());&#xD;			}&#xD;&#xD;			return null;&#xD;		}&#xD;	};&#xD;};&#xD;&#xD;module.exports = errorEx;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 40 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = function isArrayish(obj) {&#xD;	if (!obj) {&#xD;		return false;&#xD;	}&#xD;&#xD;	return obj instanceof Array || Array.isArray(obj) ||&#xD;		(obj.length &gt;= 0 &amp;&amp; obj.splice instanceof Function);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 41 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/*&#xD; * Author: Alex Kocharin &lt;alex@kocharin.ru&gt;&#xD; * GIT: https://github.com/rlidwka/jju&#xD; * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/&#xD; */&#xD;&#xD;// RTFM: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf&#xD;&#xD;var Uni = __webpack_require__(42)&#xD;&#xD;function isHexDigit(x) {&#xD;  return (x &gt;= &apos;0&apos; &amp;&amp; x &lt;= &apos;9&apos;)&#xD;      || (x &gt;= &apos;A&apos; &amp;&amp; x &lt;= &apos;F&apos;)&#xD;      || (x &gt;= &apos;a&apos; &amp;&amp; x &lt;= &apos;f&apos;)&#xD;}&#xD;&#xD;function isOctDigit(x) {&#xD;  return x &gt;= &apos;0&apos; &amp;&amp; x &lt;= &apos;7&apos;&#xD;}&#xD;&#xD;function isDecDigit(x) {&#xD;  return x &gt;= &apos;0&apos; &amp;&amp; x &lt;= &apos;9&apos;&#xD;}&#xD;&#xD;var unescapeMap = {&#xD;  &apos;\&apos;&apos;: &apos;\&apos;&apos;,&#xD;  &apos;"&apos; : &apos;"&apos;,&#xD;  &apos;\\&apos;: &apos;\\&apos;,&#xD;  &apos;b&apos; : &apos;\b&apos;,&#xD;  &apos;f&apos; : &apos;\f&apos;,&#xD;  &apos;n&apos; : &apos;\n&apos;,&#xD;  &apos;r&apos; : &apos;\r&apos;,&#xD;  &apos;t&apos; : &apos;\t&apos;,&#xD;  &apos;v&apos; : &apos;\v&apos;,&#xD;  &apos;/&apos; : &apos;/&apos;,&#xD;}&#xD;&#xD;function formatError(input, msg, position, lineno, column, json5) {&#xD;  var result = msg + &apos; at &apos; + (lineno + 1) + &apos;:&apos; + (column + 1)&#xD;    , tmppos = position - column - 1&#xD;    , srcline = &apos;&apos;&#xD;    , underline = &apos;&apos;&#xD;&#xD;  var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON&#xD;&#xD;  // output no more than 70 characters before the wrong ones&#xD;  if (tmppos &lt; position - 70) {&#xD;    tmppos = position - 70&#xD;  }&#xD;&#xD;  while (1) {&#xD;    var chr = input[++tmppos]&#xD;&#xD;    if (isLineTerminator(chr) || tmppos === input.length) {&#xD;      if (position &gt;= tmppos) {&#xD;        // ending line error, so show it after the last char&#xD;        underline += &apos;^&apos;&#xD;      }&#xD;      break&#xD;    }&#xD;    srcline += chr&#xD;&#xD;    if (position === tmppos) {&#xD;      underline += &apos;^&apos;&#xD;    } else if (position &gt; tmppos) {&#xD;      underline += input[tmppos] === &apos;\t&apos; ? &apos;\t&apos; : &apos; &apos;&#xD;    }&#xD;&#xD;    // output no more than 78 characters on the string&#xD;    if (srcline.length &gt; 78) break&#xD;  }&#xD;&#xD;  return result + &apos;\n&apos; + srcline + &apos;\n&apos; + underline&#xD;}&#xD;&#xD;function parse(input, options) {&#xD;  // parse as a standard JSON mode&#xD;  var json5 = !(options.mode === &apos;json&apos; || options.legacy)&#xD;  var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON&#xD;  var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON&#xD;&#xD;  var length = input.length&#xD;    , lineno = 0&#xD;    , linestart = 0&#xD;    , position = 0&#xD;    , stack = []&#xD;&#xD;  var tokenStart = function() {}&#xD;  var tokenEnd = function(v) {return v}&#xD;&#xD;  /* tokenize({&#xD;       raw: &apos;...&apos;,&#xD;       type: &apos;whitespace&apos;|&apos;comment&apos;|&apos;key&apos;|&apos;literal&apos;|&apos;separator&apos;|&apos;newline&apos;,&#xD;       value: &apos;number&apos;|&apos;string&apos;|&apos;whatever&apos;,&#xD;       path: [...],&#xD;     })&#xD;  */&#xD;  if (options._tokenize) {&#xD;    ;(function() {&#xD;      var start = null&#xD;      tokenStart = function() {&#xD;        if (start !== null) throw Error(&apos;internal error, token overlap&apos;)&#xD;        start = position&#xD;      }&#xD;&#xD;      tokenEnd = function(v, type) {&#xD;        if (start != position) {&#xD;          var hash = {&#xD;            raw: input.substr(start, position-start),&#xD;            type: type,&#xD;            stack: stack.slice(0),&#xD;          }&#xD;          if (v !== undefined) hash.value = v&#xD;          options._tokenize.call(null, hash)&#xD;        }&#xD;        start = null&#xD;        return v&#xD;      }&#xD;    })()&#xD;  }&#xD;&#xD;  function fail(msg) {&#xD;    var column = position - linestart&#xD;&#xD;    if (!msg) {&#xD;      if (position &lt; length) {&#xD;        var token = &apos;\&apos;&apos; +&#xD;          JSON&#xD;            .stringify(input[position])&#xD;            .replace(/^"|"$/g, &apos;&apos;)&#xD;            .replace(/&apos;/g, "\\&apos;")&#xD;            .replace(/\\"/g, &apos;"&apos;)&#xD;          + &apos;\&apos;&apos;&#xD;&#xD;        if (!msg) msg = &apos;Unexpected token &apos; + token&#xD;      } else {&#xD;        if (!msg) msg = &apos;Unexpected end of input&apos;&#xD;      }&#xD;    }&#xD;&#xD;    var error = SyntaxError(formatError(input, msg, position, lineno, column, json5))&#xD;    error.row = lineno + 1&#xD;    error.column = column + 1&#xD;    throw error&#xD;  }&#xD;&#xD;  function newline(chr) {&#xD;    // account for &lt;cr&gt;&lt;lf&gt;&#xD;    if (chr === &apos;\r&apos; &amp;&amp; input[position] === &apos;\n&apos;) position++&#xD;    linestart = position&#xD;    lineno++&#xD;  }&#xD;&#xD;  function parseGeneric() {&#xD;    var result&#xD;&#xD;    while (position &lt; length) {&#xD;      tokenStart()&#xD;      var chr = input[position++]&#xD;&#xD;      if (chr === &apos;"&apos; || (chr === &apos;\&apos;&apos; &amp;&amp; json5)) {&#xD;        return tokenEnd(parseString(chr), &apos;literal&apos;)&#xD;&#xD;      } else if (chr === &apos;{&apos;) {&#xD;        tokenEnd(undefined, &apos;separator&apos;)&#xD;        return parseObject()&#xD;&#xD;      } else if (chr === &apos;[&apos;) {&#xD;        tokenEnd(undefined, &apos;separator&apos;)&#xD;        return parseArray()&#xD;&#xD;      } else if (chr === &apos;-&apos;&#xD;             ||  chr === &apos;.&apos;&#xD;             ||  isDecDigit(chr)&#xD;                 //           + number       Infinity          NaN&#xD;             ||  (json5 &amp;&amp; (chr === &apos;+&apos; || chr === &apos;I&apos; || chr === &apos;N&apos;))&#xD;      ) {&#xD;        return tokenEnd(parseNumber(), &apos;literal&apos;)&#xD;&#xD;      } else if (chr === &apos;n&apos;) {&#xD;        parseKeyword(&apos;null&apos;)&#xD;        return tokenEnd(null, &apos;literal&apos;)&#xD;&#xD;      } else if (chr === &apos;t&apos;) {&#xD;        parseKeyword(&apos;true&apos;)&#xD;        return tokenEnd(true, &apos;literal&apos;)&#xD;&#xD;      } else if (chr === &apos;f&apos;) {&#xD;        parseKeyword(&apos;false&apos;)&#xD;        return tokenEnd(false, &apos;literal&apos;)&#xD;&#xD;      } else {&#xD;        position--&#xD;        return tokenEnd(undefined)&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  function parseKey() {&#xD;    var result&#xD;&#xD;    while (position &lt; length) {&#xD;      tokenStart()&#xD;      var chr = input[position++]&#xD;&#xD;      if (chr === &apos;"&apos; || (chr === &apos;\&apos;&apos; &amp;&amp; json5)) {&#xD;        return tokenEnd(parseString(chr), &apos;key&apos;)&#xD;&#xD;      } else if (chr === &apos;{&apos;) {&#xD;        tokenEnd(undefined, &apos;separator&apos;)&#xD;        return parseObject()&#xD;&#xD;      } else if (chr === &apos;[&apos;) {&#xD;        tokenEnd(undefined, &apos;separator&apos;)&#xD;        return parseArray()&#xD;&#xD;      } else if (chr === &apos;.&apos;&#xD;             ||  isDecDigit(chr)&#xD;      ) {&#xD;        return tokenEnd(parseNumber(true), &apos;key&apos;)&#xD;&#xD;      } else if (json5&#xD;             &amp;&amp;  Uni.isIdentifierStart(chr) || (chr === &apos;\\&apos; &amp;&amp; input[position] === &apos;u&apos;)) {&#xD;        // unicode char or a unicode sequence&#xD;        var rollback = position - 1&#xD;        var result = parseIdentifier()&#xD;&#xD;        if (result === undefined) {&#xD;          position = rollback&#xD;          return tokenEnd(undefined)&#xD;        } else {&#xD;          return tokenEnd(result, &apos;key&apos;)&#xD;        }&#xD;&#xD;      } else {&#xD;        position--&#xD;        return tokenEnd(undefined)&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  function skipWhiteSpace() {&#xD;    tokenStart()&#xD;    while (position &lt; length) {&#xD;      var chr = input[position++]&#xD;&#xD;      if (isLineTerminator(chr)) {&#xD;        position--&#xD;        tokenEnd(undefined, &apos;whitespace&apos;)&#xD;        tokenStart()&#xD;        position++&#xD;        newline(chr)&#xD;        tokenEnd(undefined, &apos;newline&apos;)&#xD;        tokenStart()&#xD;&#xD;      } else if (isWhiteSpace(chr)) {&#xD;        // nothing&#xD;&#xD;      } else if (chr === &apos;/&apos;&#xD;             &amp;&amp; json5&#xD;             &amp;&amp; (input[position] === &apos;/&apos; || input[position] === &apos;*&apos;)&#xD;      ) {&#xD;        position--&#xD;        tokenEnd(undefined, &apos;whitespace&apos;)&#xD;        tokenStart()&#xD;        position++&#xD;        skipComment(input[position++] === &apos;*&apos;)&#xD;        tokenEnd(undefined, &apos;comment&apos;)&#xD;        tokenStart()&#xD;&#xD;      } else {&#xD;        position--&#xD;        break&#xD;      }&#xD;    }&#xD;    return tokenEnd(undefined, &apos;whitespace&apos;)&#xD;  }&#xD;&#xD;  function skipComment(multi) {&#xD;    while (position &lt; length) {&#xD;      var chr = input[position++]&#xD;&#xD;      if (isLineTerminator(chr)) {&#xD;        // LineTerminator is an end of singleline comment&#xD;        if (!multi) {&#xD;          // let parent function deal with newline&#xD;          position--&#xD;          return&#xD;        }&#xD;&#xD;        newline(chr)&#xD;&#xD;      } else if (chr === &apos;*&apos; &amp;&amp; multi) {&#xD;        // end of multiline comment&#xD;        if (input[position] === &apos;/&apos;) {&#xD;          position++&#xD;          return&#xD;        }&#xD;&#xD;      } else {&#xD;        // nothing&#xD;      }&#xD;    }&#xD;&#xD;    if (multi) {&#xD;      fail(&apos;Unclosed multiline comment&apos;)&#xD;    }&#xD;  }&#xD;&#xD;  function parseKeyword(keyword) {&#xD;    // keyword[0] is not checked because it should&apos;ve checked earlier&#xD;    var _pos = position&#xD;    var len = keyword.length&#xD;    for (var i=1; i&lt;len; i++) {&#xD;      if (position &gt;= length || keyword[i] != input[position]) {&#xD;        position = _pos-1&#xD;        fail()&#xD;      }&#xD;      position++&#xD;    }&#xD;  }&#xD;&#xD;  function parseObject() {&#xD;    var result = options.null_prototype ? Object.create(null) : {}&#xD;      , empty_object = {}&#xD;      , is_non_empty = false&#xD;&#xD;    while (position &lt; length) {&#xD;      skipWhiteSpace()&#xD;      var item1 = parseKey()&#xD;      skipWhiteSpace()&#xD;      tokenStart()&#xD;      var chr = input[position++]&#xD;      tokenEnd(undefined, &apos;separator&apos;)&#xD;&#xD;      if (chr === &apos;}&apos; &amp;&amp; item1 === undefined) {&#xD;        if (!json5 &amp;&amp; is_non_empty) {&#xD;          position--&#xD;          fail(&apos;Trailing comma in object&apos;)&#xD;        }&#xD;        return result&#xD;&#xD;      } else if (chr === &apos;:&apos; &amp;&amp; item1 !== undefined) {&#xD;        skipWhiteSpace()&#xD;        stack.push(item1)&#xD;        var item2 = parseGeneric()&#xD;        stack.pop()&#xD;&#xD;        if (item2 === undefined) fail(&apos;No value found for key &apos; + item1)&#xD;        if (typeof(item1) !== &apos;string&apos;) {&#xD;          if (!json5 || typeof(item1) !== &apos;number&apos;) {&#xD;            fail(&apos;Wrong key type: &apos; + item1)&#xD;          }&#xD;        }&#xD;&#xD;        if ((item1 in empty_object || empty_object[item1] != null) &amp;&amp; options.reserved_keys !== &apos;replace&apos;) {&#xD;          if (options.reserved_keys === &apos;throw&apos;) {&#xD;            fail(&apos;Reserved key: &apos; + item1)&#xD;          } else {&#xD;            // silently ignore it&#xD;          }&#xD;        } else {&#xD;          if (typeof(options.reviver) === &apos;function&apos;) {&#xD;            item2 = options.reviver.call(null, item1, item2)&#xD;          }&#xD;&#xD;          if (item2 !== undefined) {&#xD;            is_non_empty = true&#xD;            Object.defineProperty(result, item1, {&#xD;              value: item2,&#xD;              enumerable: true,&#xD;              configurable: true,&#xD;              writable: true,&#xD;            })&#xD;          }&#xD;        }&#xD;&#xD;        skipWhiteSpace()&#xD;&#xD;        tokenStart()&#xD;        var chr = input[position++]&#xD;        tokenEnd(undefined, &apos;separator&apos;)&#xD;&#xD;        if (chr === &apos;,&apos;) {&#xD;          continue&#xD;&#xD;        } else if (chr === &apos;}&apos;) {&#xD;          return result&#xD;&#xD;        } else {&#xD;          fail()&#xD;        }&#xD;&#xD;      } else {&#xD;        position--&#xD;        fail()&#xD;      }&#xD;    }&#xD;&#xD;    fail()&#xD;  }&#xD;&#xD;  function parseArray() {&#xD;    var result = []&#xD;&#xD;    while (position &lt; length) {&#xD;      skipWhiteSpace()&#xD;      stack.push(result.length)&#xD;      var item = parseGeneric()&#xD;      stack.pop()&#xD;      skipWhiteSpace()&#xD;      tokenStart()&#xD;      var chr = input[position++]&#xD;      tokenEnd(undefined, &apos;separator&apos;)&#xD;&#xD;      if (item !== undefined) {&#xD;        if (typeof(options.reviver) === &apos;function&apos;) {&#xD;          item = options.reviver.call(null, String(result.length), item)&#xD;        }&#xD;        if (item === undefined) {&#xD;          result.length++&#xD;          item = true // hack for check below, not included into result&#xD;        } else {&#xD;          result.push(item)&#xD;        }&#xD;      }&#xD;&#xD;      if (chr === &apos;,&apos;) {&#xD;        if (item === undefined) {&#xD;          fail(&apos;Elisions are not supported&apos;)&#xD;        }&#xD;&#xD;      } else if (chr === &apos;]&apos;) {&#xD;        if (!json5 &amp;&amp; item === undefined &amp;&amp; result.length) {&#xD;          position--&#xD;          fail(&apos;Trailing comma in array&apos;)&#xD;        }&#xD;        return result&#xD;&#xD;      } else {&#xD;        position--&#xD;        fail()&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  function parseNumber() {&#xD;    // rewind because we don&apos;t know first char&#xD;    position--&#xD;&#xD;    var start = position&#xD;      , chr = input[position++]&#xD;      , t&#xD;&#xD;    var to_num = function(is_octal) {&#xD;      var str = input.substr(start, position - start)&#xD;&#xD;      if (is_octal) {&#xD;        var result = parseInt(str.replace(/^0o?/, &apos;&apos;), 8)&#xD;      } else {&#xD;        var result = Number(str)&#xD;      }&#xD;&#xD;      if (Number.isNaN(result)) {&#xD;        position--&#xD;        fail(&apos;Bad numeric literal - "&apos; + input.substr(start, position - start + 1) + &apos;"&apos;)&#xD;      } else if (!json5 &amp;&amp; !str.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) {&#xD;        // additional restrictions imposed by json&#xD;        position--&#xD;        fail(&apos;Non-json numeric literal - "&apos; + input.substr(start, position - start + 1) + &apos;"&apos;)&#xD;      } else {&#xD;        return result&#xD;      }&#xD;    }&#xD;&#xD;    // ex: -5982475.249875e+29384&#xD;    //     ^ skipping this&#xD;    if (chr === &apos;-&apos; || (chr === &apos;+&apos; &amp;&amp; json5)) chr = input[position++]&#xD;&#xD;    if (chr === &apos;N&apos; &amp;&amp; json5) {&#xD;      parseKeyword(&apos;NaN&apos;)&#xD;      return NaN&#xD;    }&#xD;&#xD;    if (chr === &apos;I&apos; &amp;&amp; json5) {&#xD;      parseKeyword(&apos;Infinity&apos;)&#xD;&#xD;      // returning +inf or -inf&#xD;      return to_num()&#xD;    }&#xD;&#xD;    if (chr &gt;= &apos;1&apos; &amp;&amp; chr &lt;= &apos;9&apos;) {&#xD;      // ex: -5982475.249875e+29384&#xD;      //        ^^^ skipping these&#xD;      while (position &lt; length &amp;&amp; isDecDigit(input[position])) position++&#xD;      chr = input[position++]&#xD;    }&#xD;&#xD;    // special case for leading zero: 0.123456&#xD;    if (chr === &apos;0&apos;) {&#xD;      chr = input[position++]&#xD;&#xD;      //             new syntax, "0o777"           old syntax, "0777"&#xD;      var is_octal = chr === &apos;o&apos; || chr === &apos;O&apos; || isOctDigit(chr)&#xD;      var is_hex = chr === &apos;x&apos; || chr === &apos;X&apos;&#xD;&#xD;      if (json5 &amp;&amp; (is_octal || is_hex)) {&#xD;        while (position &lt; length&#xD;           &amp;&amp;  (is_hex ? isHexDigit : isOctDigit)( input[position] )&#xD;        ) position++&#xD;&#xD;        var sign = 1&#xD;        if (input[start] === &apos;-&apos;) {&#xD;          sign = -1&#xD;          start++&#xD;        } else if (input[start] === &apos;+&apos;) {&#xD;          start++&#xD;        }&#xD;&#xD;        return sign * to_num(is_octal)&#xD;      }&#xD;    }&#xD;&#xD;    if (chr === &apos;.&apos;) {&#xD;      // ex: -5982475.249875e+29384&#xD;      //                ^^^ skipping these&#xD;      while (position &lt; length &amp;&amp; isDecDigit(input[position])) position++&#xD;      chr = input[position++]&#xD;    }&#xD;&#xD;    if (chr === &apos;e&apos; || chr === &apos;E&apos;) {&#xD;      chr = input[position++]&#xD;      if (chr === &apos;-&apos; || chr === &apos;+&apos;) position++&#xD;      // ex: -5982475.249875e+29384&#xD;      //                       ^^^ skipping these&#xD;      while (position &lt; length &amp;&amp; isDecDigit(input[position])) position++&#xD;      chr = input[position++]&#xD;    }&#xD;&#xD;    // we have char in the buffer, so count for it&#xD;    position--&#xD;    return to_num()&#xD;  }&#xD;&#xD;  function parseIdentifier() {&#xD;    // rewind because we don&apos;t know first char&#xD;    position--&#xD;&#xD;    var result = &apos;&apos;&#xD;&#xD;    while (position &lt; length) {&#xD;      var chr = input[position++]&#xD;&#xD;      if (chr === &apos;\\&apos;&#xD;      &amp;&amp;  input[position] === &apos;u&apos;&#xD;      &amp;&amp;  isHexDigit(input[position+1])&#xD;      &amp;&amp;  isHexDigit(input[position+2])&#xD;      &amp;&amp;  isHexDigit(input[position+3])&#xD;      &amp;&amp;  isHexDigit(input[position+4])&#xD;      ) {&#xD;        // UnicodeEscapeSequence&#xD;        chr = String.fromCharCode(parseInt(input.substr(position+1, 4), 16))&#xD;        position += 5&#xD;      }&#xD;&#xD;      if (result.length) {&#xD;        // identifier started&#xD;        if (Uni.isIdentifierPart(chr)) {&#xD;          result += chr&#xD;        } else {&#xD;          position--&#xD;          return result&#xD;        }&#xD;&#xD;      } else {&#xD;        if (Uni.isIdentifierStart(chr)) {&#xD;          result += chr&#xD;        } else {&#xD;          return undefined&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    fail()&#xD;  }&#xD;&#xD;  function parseString(endChar) {&#xD;    // 7.8.4 of ES262 spec&#xD;    var result = &apos;&apos;&#xD;&#xD;    while (position &lt; length) {&#xD;      var chr = input[position++]&#xD;&#xD;      if (chr === endChar) {&#xD;        return result&#xD;&#xD;      } else if (chr === &apos;\\&apos;) {&#xD;        if (position &gt;= length) fail()&#xD;        chr = input[position++]&#xD;&#xD;        if (unescapeMap[chr] &amp;&amp; (json5 || (chr != &apos;v&apos; &amp;&amp; chr != "&apos;"))) {&#xD;          result += unescapeMap[chr]&#xD;&#xD;        } else if (json5 &amp;&amp; isLineTerminator(chr)) {&#xD;          // line continuation&#xD;          newline(chr)&#xD;&#xD;        } else if (chr === &apos;u&apos; || (chr === &apos;x&apos; &amp;&amp; json5)) {&#xD;          // unicode/character escape sequence&#xD;          var off = chr === &apos;u&apos; ? 4 : 2&#xD;&#xD;          // validation for \uXXXX&#xD;          for (var i=0; i&lt;off; i++) {&#xD;            if (position &gt;= length) fail()&#xD;            if (!isHexDigit(input[position])) fail(&apos;Bad escape sequence&apos;)&#xD;            position++&#xD;          }&#xD;&#xD;          result += String.fromCharCode(parseInt(input.substr(position-off, off), 16))&#xD;        } else if (json5 &amp;&amp; isOctDigit(chr)) {&#xD;          if (chr &lt; &apos;4&apos; &amp;&amp; isOctDigit(input[position]) &amp;&amp; isOctDigit(input[position+1])) {&#xD;            // three-digit octal&#xD;            var digits = 3&#xD;          } else if (isOctDigit(input[position])) {&#xD;            // two-digit octal&#xD;            var digits = 2&#xD;          } else {&#xD;            var digits = 1&#xD;          }&#xD;          position += digits - 1&#xD;          result += String.fromCharCode(parseInt(input.substr(position-digits, digits), 8))&#xD;          /*if (!isOctDigit(input[position])) {&#xD;            // \0 is allowed still&#xD;            result += &apos;\0&apos;&#xD;          } else {&#xD;            fail(&apos;Octal literals are not supported&apos;)&#xD;          }*/&#xD;&#xD;        } else if (json5) {&#xD;          // \X -&gt; x&#xD;          result += chr&#xD;&#xD;        } else {&#xD;          position--&#xD;          fail()&#xD;        }&#xD;&#xD;      } else if (isLineTerminator(chr)) {&#xD;        fail()&#xD;&#xD;      } else {&#xD;        if (!json5 &amp;&amp; chr.charCodeAt(0) &lt; 32) {&#xD;          position--&#xD;          fail(&apos;Unexpected control character&apos;)&#xD;        }&#xD;&#xD;        // SourceCharacter but not one of " or \ or LineTerminator&#xD;        result += chr&#xD;      }&#xD;    }&#xD;&#xD;    fail()&#xD;  }&#xD;&#xD;  skipWhiteSpace()&#xD;  var return_value = parseGeneric()&#xD;  if (return_value !== undefined || position &lt; length) {&#xD;    skipWhiteSpace()&#xD;&#xD;    if (position &gt;= length) {&#xD;      if (typeof(options.reviver) === &apos;function&apos;) {&#xD;        return_value = options.reviver.call(null, &apos;&apos;, return_value)&#xD;      }&#xD;      return return_value&#xD;    } else {&#xD;      fail()&#xD;    }&#xD;&#xD;  } else {&#xD;    if (position) {&#xD;      fail(&apos;No data, only a whitespace&apos;)&#xD;    } else {&#xD;      fail(&apos;No data, empty input&apos;)&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/*&#xD; * parse(text, options)&#xD; * or&#xD; * parse(text, reviver)&#xD; *&#xD; * where:&#xD; * text - string&#xD; * options - object&#xD; * reviver - function&#xD; */&#xD;module.exports.parse = function parseJSON(input, options) {&#xD;  // support legacy functions&#xD;  if (typeof(options) === &apos;function&apos;) {&#xD;    options = {&#xD;      reviver: options&#xD;    }&#xD;  }&#xD;&#xD;  if (input === undefined) {&#xD;    // parse(stringify(x)) should be equal x&#xD;    // with JSON functions it is not &apos;cause of undefined&#xD;    // so we&apos;re fixing it&#xD;    return undefined&#xD;  }&#xD;&#xD;  // JSON.parse compat&#xD;  if (typeof(input) !== &apos;string&apos;) input = String(input)&#xD;  if (options == null) options = {}&#xD;  if (options.reserved_keys == null) options.reserved_keys = &apos;ignore&apos;&#xD;&#xD;  if (options.reserved_keys === &apos;throw&apos; || options.reserved_keys === &apos;ignore&apos;) {&#xD;    if (options.null_prototype == null) {&#xD;      options.null_prototype = true&#xD;    }&#xD;  }&#xD;&#xD;  try {&#xD;    return parse(input, options)&#xD;  } catch(err) {&#xD;    // jju is a recursive parser, so JSON.parse("{{{{{{{") could blow up the stack&#xD;    //&#xD;    // this catch is used to skip all those internal calls&#xD;    if (err instanceof SyntaxError &amp;&amp; err.row != null &amp;&amp; err.column != null) {&#xD;      var old_err = err&#xD;      err = SyntaxError(old_err.message)&#xD;      err.column = old_err.column&#xD;      err.row = old_err.row&#xD;    }&#xD;    throw err&#xD;  }&#xD;}&#xD;&#xD;module.exports.tokenize = function tokenizeJSON(input, options) {&#xD;  if (options == null) options = {}&#xD;&#xD;  options._tokenize = function(smth) {&#xD;    if (options._addstack) smth.stack.unshift.apply(smth.stack, options._addstack)&#xD;    tokens.push(smth)&#xD;  }&#xD;&#xD;  var tokens = []&#xD;  tokens.data = module.exports.parse(input, options)&#xD;  return tokens&#xD;}&#xD;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 42 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;&#xD;// This is autogenerated with esprima tools, see:&#xD;// https://github.com/ariya/esprima/blob/master/esprima.js&#xD;//&#xD;// PS: oh God, I hate Unicode&#xD;&#xD;// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart:&#xD;&#xD;var Uni = module.exports&#xD;&#xD;module.exports.isWhiteSpace = function isWhiteSpace(x) {&#xD;  // section 7.2, table 2&#xD;  return x === &apos;\u0020&apos;&#xD;      || x === &apos;\u00A0&apos;&#xD;      || x === &apos;\uFEFF&apos; // &lt;-- this is not a Unicode WS, only a JS one&#xD;      || (x &gt;= &apos;\u0009&apos; &amp;&amp; x &lt;= &apos;\u000D&apos;) // 9 A B C D&#xD;&#xD;      // + whitespace characters from unicode, category Zs&#xD;      || x === &apos;\u1680&apos;&#xD;      || x === &apos;\u180E&apos;&#xD;      || (x &gt;= &apos;\u2000&apos; &amp;&amp; x &lt;= &apos;\u200A&apos;) // 0 1 2 3 4 5 6 7 8 9 A&#xD;      || x === &apos;\u2028&apos;&#xD;      || x === &apos;\u2029&apos;&#xD;      || x === &apos;\u202F&apos;&#xD;      || x === &apos;\u205F&apos;&#xD;      || x === &apos;\u3000&apos;&#xD;}&#xD;&#xD;module.exports.isWhiteSpaceJSON = function isWhiteSpaceJSON(x) {&#xD;  return x === &apos;\u0020&apos;&#xD;      || x === &apos;\u0009&apos;&#xD;      || x === &apos;\u000A&apos;&#xD;      || x === &apos;\u000D&apos;&#xD;}&#xD;&#xD;module.exports.isLineTerminator = function isLineTerminator(x) {&#xD;  // ok, here is the part when JSON is wrong&#xD;  // section 7.3, table 3&#xD;  return x === &apos;\u000A&apos;&#xD;      || x === &apos;\u000D&apos;&#xD;      || x === &apos;\u2028&apos;&#xD;      || x === &apos;\u2029&apos;&#xD;}&#xD;&#xD;module.exports.isLineTerminatorJSON = function isLineTerminatorJSON(x) {&#xD;  return x === &apos;\u000A&apos;&#xD;      || x === &apos;\u000D&apos;&#xD;}&#xD;&#xD;module.exports.isIdentifierStart = function isIdentifierStart(x) {&#xD;  return x === &apos;$&apos;&#xD;      || x === &apos;_&apos;&#xD;      || (x &gt;= &apos;A&apos; &amp;&amp; x &lt;= &apos;Z&apos;)&#xD;      || (x &gt;= &apos;a&apos; &amp;&amp; x &lt;= &apos;z&apos;)&#xD;      || (x &gt;= &apos;\u0080&apos; &amp;&amp; Uni.NonAsciiIdentifierStart.test(x))&#xD;}&#xD;&#xD;module.exports.isIdentifierPart = function isIdentifierPart(x) {&#xD;  return x === &apos;$&apos;&#xD;      || x === &apos;_&apos;&#xD;      || (x &gt;= &apos;A&apos; &amp;&amp; x &lt;= &apos;Z&apos;)&#xD;      || (x &gt;= &apos;a&apos; &amp;&amp; x &lt;= &apos;z&apos;)&#xD;      || (x &gt;= &apos;0&apos; &amp;&amp; x &lt;= &apos;9&apos;) // &lt;-- addition to Start&#xD;      || (x &gt;= &apos;\u0080&apos; &amp;&amp; Uni.NonAsciiIdentifierPart.test(x))&#xD;}&#xD;&#xD;module.exports.NonAsciiIdentifierStart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/&#xD;&#xD;// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart:&#xD;&#xD;module.exports.NonAsciiIdentifierPart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/&#xD;&#xD;&#xD;/***/ }),&#xD;/* 43 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var PENDING = &apos;pending&apos;;&#xD;var SETTLED = &apos;settled&apos;;&#xD;var FULFILLED = &apos;fulfilled&apos;;&#xD;var REJECTED = &apos;rejected&apos;;&#xD;var NOOP = function () {};&#xD;var isNode = typeof global !== &apos;undefined&apos; &amp;&amp; typeof global.process !== &apos;undefined&apos; &amp;&amp; typeof global.process.emit === &apos;function&apos;;&#xD;&#xD;var asyncSetTimer = typeof setImmediate === &apos;undefined&apos; ? setTimeout : setImmediate;&#xD;var asyncQueue = [];&#xD;var asyncTimer;&#xD;&#xD;function asyncFlush() {&#xD;	// run promise callbacks&#xD;	for (var i = 0; i &lt; asyncQueue.length; i++) {&#xD;		asyncQueue[i][0](asyncQueue[i][1]);&#xD;	}&#xD;&#xD;	// reset async asyncQueue&#xD;	asyncQueue = [];&#xD;	asyncTimer = false;&#xD;}&#xD;&#xD;function asyncCall(callback, arg) {&#xD;	asyncQueue.push([callback, arg]);&#xD;&#xD;	if (!asyncTimer) {&#xD;		asyncTimer = true;&#xD;		asyncSetTimer(asyncFlush, 0);&#xD;	}&#xD;}&#xD;&#xD;function invokeResolver(resolver, promise) {&#xD;	function resolvePromise(value) {&#xD;		resolve(promise, value);&#xD;	}&#xD;&#xD;	function rejectPromise(reason) {&#xD;		reject(promise, reason);&#xD;	}&#xD;&#xD;	try {&#xD;		resolver(resolvePromise, rejectPromise);&#xD;	} catch (e) {&#xD;		rejectPromise(e);&#xD;	}&#xD;}&#xD;&#xD;function invokeCallback(subscriber) {&#xD;	var owner = subscriber.owner;&#xD;	var settled = owner._state;&#xD;	var value = owner._data;&#xD;	var callback = subscriber[settled];&#xD;	var promise = subscriber.then;&#xD;&#xD;	if (typeof callback === &apos;function&apos;) {&#xD;		settled = FULFILLED;&#xD;		try {&#xD;			value = callback(value);&#xD;		} catch (e) {&#xD;			reject(promise, e);&#xD;		}&#xD;	}&#xD;&#xD;	if (!handleThenable(promise, value)) {&#xD;		if (settled === FULFILLED) {&#xD;			resolve(promise, value);&#xD;		}&#xD;&#xD;		if (settled === REJECTED) {&#xD;			reject(promise, value);&#xD;		}&#xD;	}&#xD;}&#xD;&#xD;function handleThenable(promise, value) {&#xD;	var resolved;&#xD;&#xD;	try {&#xD;		if (promise === value) {&#xD;			throw new TypeError(&apos;A promises callback cannot return that same promise.&apos;);&#xD;		}&#xD;&#xD;		if (value &amp;&amp; (typeof value === &apos;function&apos; || typeof value === &apos;object&apos;)) {&#xD;			// then should be retrieved only once&#xD;			var then = value.then;&#xD;&#xD;			if (typeof then === &apos;function&apos;) {&#xD;				then.call(value, function (val) {&#xD;					if (!resolved) {&#xD;						resolved = true;&#xD;&#xD;						if (value === val) {&#xD;							fulfill(promise, val);&#xD;						} else {&#xD;							resolve(promise, val);&#xD;						}&#xD;					}&#xD;				}, function (reason) {&#xD;					if (!resolved) {&#xD;						resolved = true;&#xD;&#xD;						reject(promise, reason);&#xD;					}&#xD;				});&#xD;&#xD;				return true;&#xD;			}&#xD;		}&#xD;	} catch (e) {&#xD;		if (!resolved) {&#xD;			reject(promise, e);&#xD;		}&#xD;&#xD;		return true;&#xD;	}&#xD;&#xD;	return false;&#xD;}&#xD;&#xD;function resolve(promise, value) {&#xD;	if (promise === value || !handleThenable(promise, value)) {&#xD;		fulfill(promise, value);&#xD;	}&#xD;}&#xD;&#xD;function fulfill(promise, value) {&#xD;	if (promise._state === PENDING) {&#xD;		promise._state = SETTLED;&#xD;		promise._data = value;&#xD;&#xD;		asyncCall(publishFulfillment, promise);&#xD;	}&#xD;}&#xD;&#xD;function reject(promise, reason) {&#xD;	if (promise._state === PENDING) {&#xD;		promise._state = SETTLED;&#xD;		promise._data = reason;&#xD;&#xD;		asyncCall(publishRejection, promise);&#xD;	}&#xD;}&#xD;&#xD;function publish(promise) {&#xD;	promise._then = promise._then.forEach(invokeCallback);&#xD;}&#xD;&#xD;function publishFulfillment(promise) {&#xD;	promise._state = FULFILLED;&#xD;	publish(promise);&#xD;}&#xD;&#xD;function publishRejection(promise) {&#xD;	promise._state = REJECTED;&#xD;	publish(promise);&#xD;	if (!promise._handled &amp;&amp; isNode) {&#xD;		global.process.emit(&apos;unhandledRejection&apos;, promise._data, promise);&#xD;	}&#xD;}&#xD;&#xD;function notifyRejectionHandled(promise) {&#xD;	global.process.emit(&apos;rejectionHandled&apos;, promise);&#xD;}&#xD;&#xD;/**&#xD; * @class&#xD; */&#xD;function Promise(resolver) {&#xD;	if (typeof resolver !== &apos;function&apos;) {&#xD;		throw new TypeError(&apos;Promise resolver &apos; + resolver + &apos; is not a function&apos;);&#xD;	}&#xD;&#xD;	if (this instanceof Promise === false) {&#xD;		throw new TypeError(&apos;Failed to construct \&apos;Promise\&apos;: Please use the \&apos;new\&apos; operator, this object constructor cannot be called as a function.&apos;);&#xD;	}&#xD;&#xD;	this._then = [];&#xD;&#xD;	invokeResolver(resolver, this);&#xD;}&#xD;&#xD;Promise.prototype = {&#xD;	constructor: Promise,&#xD;&#xD;	_state: PENDING,&#xD;	_then: null,&#xD;	_data: undefined,&#xD;	_handled: false,&#xD;&#xD;	then: function (onFulfillment, onRejection) {&#xD;		var subscriber = {&#xD;			owner: this,&#xD;			then: new this.constructor(NOOP),&#xD;			fulfilled: onFulfillment,&#xD;			rejected: onRejection&#xD;		};&#xD;&#xD;		if ((onRejection || onFulfillment) &amp;&amp; !this._handled) {&#xD;			this._handled = true;&#xD;			if (this._state === REJECTED &amp;&amp; isNode) {&#xD;				asyncCall(notifyRejectionHandled, this);&#xD;			}&#xD;		}&#xD;&#xD;		if (this._state === FULFILLED || this._state === REJECTED) {&#xD;			// already resolved, call callback async&#xD;			asyncCall(invokeCallback, subscriber);&#xD;		} else {&#xD;			// subscribe&#xD;			this._then.push(subscriber);&#xD;		}&#xD;&#xD;		return subscriber.then;&#xD;	},&#xD;&#xD;	catch: function (onRejection) {&#xD;		return this.then(null, onRejection);&#xD;	}&#xD;};&#xD;&#xD;Promise.all = function (promises) {&#xD;	if (!Array.isArray(promises)) {&#xD;		throw new TypeError(&apos;You must pass an array to Promise.all().&apos;);&#xD;	}&#xD;&#xD;	return new Promise(function (resolve, reject) {&#xD;		var results = [];&#xD;		var remaining = 0;&#xD;&#xD;		function resolver(index) {&#xD;			remaining++;&#xD;			return function (value) {&#xD;				results[index] = value;&#xD;				if (!--remaining) {&#xD;					resolve(results);&#xD;				}&#xD;			};&#xD;		}&#xD;&#xD;		for (var i = 0, promise; i &lt; promises.length; i++) {&#xD;			promise = promises[i];&#xD;&#xD;			if (promise &amp;&amp; typeof promise.then === &apos;function&apos;) {&#xD;				promise.then(resolver(i), reject);&#xD;			} else {&#xD;				results[i] = promise;&#xD;			}&#xD;		}&#xD;&#xD;		if (!remaining) {&#xD;			resolve(results);&#xD;		}&#xD;	});&#xD;};&#xD;&#xD;Promise.race = function (promises) {&#xD;	if (!Array.isArray(promises)) {&#xD;		throw new TypeError(&apos;You must pass an array to Promise.race().&apos;);&#xD;	}&#xD;&#xD;	return new Promise(function (resolve, reject) {&#xD;		for (var i = 0, promise; i &lt; promises.length; i++) {&#xD;			promise = promises[i];&#xD;&#xD;			if (promise &amp;&amp; typeof promise.then === &apos;function&apos;) {&#xD;				promise.then(resolve, reject);&#xD;			} else {&#xD;				resolve(promise);&#xD;			}&#xD;		}&#xD;	});&#xD;};&#xD;&#xD;Promise.resolve = function (value) {&#xD;	if (value &amp;&amp; typeof value === &apos;object&apos; &amp;&amp; value.constructor === Promise) {&#xD;		return value;&#xD;	}&#xD;&#xD;	return new Promise(function (resolve) {&#xD;		resolve(value);&#xD;	});&#xD;};&#xD;&#xD;Promise.reject = function (reason) {&#xD;	return new Promise(function (resolve, reject) {&#xD;		reject(reason);&#xD;	});&#xD;};&#xD;&#xD;module.exports = Promise;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 44 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Writable = __webpack_require__(9).Writable;&#xD;var inherits = __webpack_require__(4).inherits;&#xD;var Promise = __webpack_require__(13);&#xD;&#xD;function BufferStream() {&#xD;	Writable.call(this, { objectMode: true });&#xD;	this.buffer = [];&#xD;	this.length = 0;&#xD;}&#xD;&#xD;inherits(BufferStream, Writable);&#xD;BufferStream.prototype._write = function(chunk, enc, next) {&#xD;	if (!Buffer.isBuffer(chunk)) {&#xD;		chunk = new Buffer(chunk);&#xD;	}&#xD;&#xD;	this.buffer.push(chunk);&#xD;	this.length += chunk.length;&#xD;	next();&#xD;};&#xD;&#xD;module.exports = function read(stream, options, cb) {&#xD;	if (!stream) {&#xD;		throw new Error(&apos;stream argument is required&apos;);&#xD;	}&#xD;&#xD;	if (typeof options === &apos;function&apos;) {&#xD;		cb = options;&#xD;		options = {};&#xD;	}&#xD;&#xD;	if (typeof options === &apos;string&apos; || options === undefined || options === null) {&#xD;		options = { encoding: options };&#xD;	}&#xD;&#xD;	if (options.encoding === undefined) { options.encoding = &apos;utf8&apos;; }&#xD;&#xD;	var promise;&#xD;&#xD;	if (!cb) {&#xD;		var resolve, reject;&#xD;		promise = new Promise(function(_res, _rej) {&#xD;			resolve = _res;&#xD;			reject = _rej;&#xD;		});&#xD;&#xD;		cb = function (err, data) {&#xD;			if (err) { return reject(err); }&#xD;			resolve(data);&#xD;		};&#xD;	}&#xD;&#xD;	var sink = new BufferStream();&#xD;&#xD;	sink.on(&apos;finish&apos;, function () {&#xD;		var data = Buffer.concat(this.buffer, this.length);&#xD;&#xD;		if (options.encoding) {&#xD;			data = data.toString(options.encoding);&#xD;		}&#xD;&#xD;		cb(null, data);&#xD;	});&#xD;&#xD;	stream.once(&apos;error&apos;, cb);&#xD;&#xD;	stream.pipe(sink);&#xD;&#xD;	return promise;&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 45 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;// a passthrough stream.&#xD;// basically just the most minimal sort of Transform stream.&#xD;// Every written chunk gets output as-is.&#xD;&#xD;&#xD;&#xD;module.exports = PassThrough;&#xD;&#xD;var Transform = __webpack_require__(15);&#xD;&#xD;/*&lt;replacement&gt;*/&#xD;var util = __webpack_require__(1);&#xD;util.inherits = __webpack_require__(2);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;util.inherits(PassThrough, Transform);&#xD;&#xD;function PassThrough(options) {&#xD;  if (!(this instanceof PassThrough)) return new PassThrough(options);&#xD;&#xD;  Transform.call(this, options);&#xD;}&#xD;&#xD;PassThrough.prototype._transform = function (chunk, encoding, cb) {&#xD;  cb(null, chunk);&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 46 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var Buffer = __webpack_require__(3).Buffer;&#xD;/*&lt;replacement&gt;*/&#xD;var bufferShim = __webpack_require__(6);&#xD;/*&lt;/replacement&gt;*/&#xD;&#xD;module.exports = BufferList;&#xD;&#xD;function BufferList() {&#xD;  this.head = null;&#xD;  this.tail = null;&#xD;  this.length = 0;&#xD;}&#xD;&#xD;BufferList.prototype.push = function (v) {&#xD;  var entry = { data: v, next: null };&#xD;  if (this.length &gt; 0) this.tail.next = entry;else this.head = entry;&#xD;  this.tail = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.unshift = function (v) {&#xD;  var entry = { data: v, next: this.head };&#xD;  if (this.length === 0) this.tail = entry;&#xD;  this.head = entry;&#xD;  ++this.length;&#xD;};&#xD;&#xD;BufferList.prototype.shift = function () {&#xD;  if (this.length === 0) return;&#xD;  var ret = this.head.data;&#xD;  if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;&#xD;  --this.length;&#xD;  return ret;&#xD;};&#xD;&#xD;BufferList.prototype.clear = function () {&#xD;  this.head = this.tail = null;&#xD;  this.length = 0;&#xD;};&#xD;&#xD;BufferList.prototype.join = function (s) {&#xD;  if (this.length === 0) return &apos;&apos;;&#xD;  var p = this.head;&#xD;  var ret = &apos;&apos; + p.data;&#xD;  while (p = p.next) {&#xD;    ret += s + p.data;&#xD;  }return ret;&#xD;};&#xD;&#xD;BufferList.prototype.concat = function (n) {&#xD;  if (this.length === 0) return bufferShim.alloc(0);&#xD;  if (this.length === 1) return this.head.data;&#xD;  var ret = bufferShim.allocUnsafe(n &gt;&gt;&gt; 0);&#xD;  var p = this.head;&#xD;  var i = 0;&#xD;  while (p) {&#xD;    p.data.copy(ret, i);&#xD;    i += p.data.length;&#xD;    p = p.next;&#xD;  }&#xD;  return ret;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 47 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;if (typeof Object.create === &apos;function&apos;) {&#xD;  // implementation from standard node.js &apos;util&apos; module&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    ctor.prototype = Object.create(superCtor.prototype, {&#xD;      constructor: {&#xD;        value: ctor,&#xD;        enumerable: false,&#xD;        writable: true,&#xD;        configurable: true&#xD;      }&#xD;    });&#xD;  };&#xD;} else {&#xD;  // old school shim for old browsers&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    var TempCtor = function () {}&#xD;    TempCtor.prototype = superCtor.prototype&#xD;    ctor.prototype = new TempCtor()&#xD;    ctor.prototype.constructor = ctor&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 48 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;var toString = {}.toString;&#xD;&#xD;module.exports = Array.isArray || function (arr) {&#xD;  return toString.call(arr) == &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 49 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;&#xD;/**&#xD; * For Node.js, simply re-export the core `util.deprecate` function.&#xD; */&#xD;&#xD;module.exports = __webpack_require__(4).deprecate;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 50 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = function (req, time) {&#xD;	if (req.timeoutTimer) {&#xD;		return req;&#xD;	}&#xD;&#xD;	var delays = isNaN(time) ? time : {socket: time, connect: time};&#xD;	var host = req._headers ? (&apos; to &apos; + req._headers.host) : &apos;&apos;;&#xD;&#xD;	if (delays.connect !== undefined) {&#xD;		req.timeoutTimer = setTimeout(function timeoutHandler() {&#xD;			req.abort();&#xD;			var e = new Error(&apos;Connection timed out on request&apos; + host);&#xD;			e.code = &apos;ETIMEDOUT&apos;;&#xD;			req.emit(&apos;error&apos;, e);&#xD;		}, delays.connect);&#xD;	}&#xD;&#xD;	// Clear the connection timeout timer once a socket is assigned to the&#xD;	// request and is connected.&#xD;	req.on(&apos;socket&apos;, function assign(socket) {&#xD;		// Socket may come from Agent pool and may be already connected.&#xD;		if (!(socket.connecting || socket._connecting)) {&#xD;			connect.call(socket);&#xD;			return;&#xD;		}&#xD;&#xD;		socket.once(&apos;connect&apos;, connect);&#xD;	});&#xD;&#xD;	function clear() {&#xD;		if (req.timeoutTimer) {&#xD;			clearTimeout(req.timeoutTimer);&#xD;			req.timeoutTimer = null;&#xD;		}&#xD;	}&#xD;&#xD;	function connect() {&#xD;		clear();&#xD;&#xD;		if (delays.socket !== undefined) {&#xD;			// Abort the request if there is no activity on the socket for more&#xD;			// than `delays.socket` milliseconds.&#xD;			this.setTimeout(delays.socket, function socketTimeoutHandler() {&#xD;				req.abort();&#xD;				var e = new Error(&apos;Socket timed out on request&apos; + host);&#xD;				e.code = &apos;ESOCKETTIMEDOUT&apos;;&#xD;				req.emit(&apos;error&apos;, e);&#xD;			});&#xD;		}&#xD;	}&#xD;&#xD;	return req.on(&apos;error&apos;, clear);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 51 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;var PassThrough = __webpack_require__(10).PassThrough;&#xD;var zlib = __webpack_require__(63);&#xD;&#xD;module.exports = function (res) {&#xD;	// TODO: use Array#includes when targeting Node.js 6&#xD;	if ([&apos;gzip&apos;, &apos;deflate&apos;].indexOf(res.headers[&apos;content-encoding&apos;]) === -1) {&#xD;		return res;&#xD;	}&#xD;&#xD;	var unzip = zlib.createUnzip();&#xD;	var stream = new PassThrough();&#xD;&#xD;	stream.httpVersion = res.httpVersion;&#xD;	stream.headers = res.headers;&#xD;	stream.rawHeaders = res.rawHeaders;&#xD;	stream.trailers = res.trailers;&#xD;	stream.rawTrailers = res.rawTrailers;&#xD;	stream.setTimeout = res.setTimeout.bind(res);&#xD;	stream.statusCode = res.statusCode;&#xD;	stream.statusMessage = res.statusMessage;&#xD;	stream.socket = res.socket;&#xD;&#xD;	unzip.on(&apos;error&apos;, function (err) {&#xD;		if (err.code === &apos;Z_BUF_ERROR&apos;) {&#xD;			stream.end();&#xD;			return;&#xD;		}&#xD;&#xD;		stream.emit(&apos;error&apos;, err);&#xD;	});&#xD;&#xD;	res.pipe(unzip).pipe(stream);&#xD;&#xD;	return stream;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 52 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;var url = __webpack_require__(20);&#xD;var prependHttp = __webpack_require__(53);&#xD;&#xD;module.exports = function (x) {&#xD;	var withProtocol = prependHttp(x);&#xD;	var parsed = url.parse(withProtocol);&#xD;&#xD;	if (withProtocol !== x) {&#xD;		parsed.protocol = null;&#xD;	}&#xD;&#xD;	return parsed;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 53 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;module.exports = function (url) {&#xD;	if (typeof url !== &apos;string&apos;) {&#xD;		throw new TypeError(&apos;Expected a string, got &apos; + typeof url);&#xD;	}&#xD;&#xD;	url = url.trim();&#xD;&#xD;	if (/^\.*\/|^(?!localhost)\w+:/.test(url)) {&#xD;		return url;&#xD;	}&#xD;&#xD;	return url.replace(/^(?!(?:\w+:)?\/\/)/, &apos;http://&apos;);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 54 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"name": "got",&#xD;	"version": "5.7.1",&#xD;	"description": "Simplified HTTP/HTTPS requests",&#xD;	"license": "MIT",&#xD;	"repository": {&#xD;		"type": "git",&#xD;		"url": "git+https://github.com/sindresorhus/got.git"&#xD;	},&#xD;	"maintainers": [&#xD;		{&#xD;			"name": "sindresorhus",&#xD;			"email": "sindresorhus@gmail.com"&#xD;		},&#xD;		{&#xD;			"name": "floatdrop",&#xD;			"email": "floatdrop@gmail.com"&#xD;		},&#xD;		{&#xD;			"name": "kevva",&#xD;			"email": "kevinmartensson@gmail.com"&#xD;		}&#xD;	],&#xD;	"engines": {&#xD;		"node": "&gt;=0.10.0 &lt;7"&#xD;	},&#xD;	"browser": {&#xD;		"unzip-response": false&#xD;	},&#xD;	"scripts": {&#xD;		"test": "xo &amp;&amp; nyc ava",&#xD;		"coveralls": "nyc report --reporter=text-lcov | coveralls"&#xD;	},&#xD;	"files": [&#xD;		"index.js"&#xD;	],&#xD;	"keywords": [&#xD;		"http",&#xD;		"https",&#xD;		"get",&#xD;		"got",&#xD;		"url",&#xD;		"uri",&#xD;		"request",&#xD;		"util",&#xD;		"utility",&#xD;		"simple",&#xD;		"curl",&#xD;		"wget",&#xD;		"fetch"&#xD;	],&#xD;	"dependencies": {&#xD;		"create-error-class": "^3.0.1",&#xD;		"duplexer2": "^0.1.4",&#xD;		"is-redirect": "^1.0.0",&#xD;		"is-retry-allowed": "^1.0.0",&#xD;		"is-stream": "^1.0.0",&#xD;		"lowercase-keys": "^1.0.0",&#xD;		"node-status-codes": "^1.0.0",&#xD;		"object-assign": "^4.0.1",&#xD;		"parse-json": "^2.1.0",&#xD;		"pinkie-promise": "^2.0.0",&#xD;		"read-all-stream": "^3.0.0",&#xD;		"readable-stream": "^2.0.5",&#xD;		"timed-out": "^3.0.0",&#xD;		"unzip-response": "^1.0.2",&#xD;		"url-parse-lax": "^1.0.0"&#xD;	},&#xD;	"devDependencies": {&#xD;		"ava": "^0.16.0",&#xD;		"coveralls": "^2.11.4",&#xD;		"form-data": "^2.1.1",&#xD;		"get-port": "^2.0.0",&#xD;		"get-stream": "^2.3.0",&#xD;		"into-stream": "^2.0.0",&#xD;		"nyc": "^8.1.0",&#xD;		"pem": "^1.4.4",&#xD;		"pify": "^2.3.0",&#xD;		"tempfile": "^1.1.1",&#xD;		"xo": "0.16.x"&#xD;	},&#xD;	"xo": {&#xD;		"ignores": [&#xD;			"test/**"&#xD;		]&#xD;	},&#xD;	"gitHead": "856b4caf16b02ce28ef0d92e83cf434a50b71e84",&#xD;	"bugs": {&#xD;		"url": "https://github.com/sindresorhus/got/issues"&#xD;	},&#xD;	"homepage": "https://github.com/sindresorhus/got#readme",&#xD;	"_id": "got@5.7.1",&#xD;	"_shasum": "5f81635a61e4a6589f180569ea4e381680a51f35",&#xD;	"_from": "got@5.7.1",&#xD;	"_npmVersion": "2.15.1",&#xD;	"_nodeVersion": "0.10.48",&#xD;	"_npmUser": {&#xD;		"name": "floatdrop",&#xD;		"email": "floatdrop@gmail.com"&#xD;	},&#xD;	"dist": {&#xD;		"shasum": "5f81635a61e4a6589f180569ea4e381680a51f35",&#xD;		"tarball": "https://registry.npmjs.org/got/-/got-5.7.1.tgz"&#xD;	},&#xD;	"_npmOperationalInternal": {&#xD;		"host": "packages-18-east.internal.npmjs.com",&#xD;		"tmp": "tmp/got-5.7.1.tgz_1478113400687_0.6078383799176663"&#xD;	},&#xD;	"directories": {},&#xD;	"_resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz"&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 55 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var require;var require;/*!&#xD;    localForage -- Offline Storage, Improved&#xD;    Version 1.5.0&#xD;    https://localforage.github.io/localForage&#xD;    (c) 2013-2017 Mozilla, Apache License 2.0&#xD;*/&#xD;(function(f){if(true){module.exports=f()}else if(typeof define==="function"&amp;&amp;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.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&amp;&amp;require;if(!u&amp;&amp;a)return require(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module &apos;"+o+"&apos;");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"&amp;&amp;require;for(var o=0;o&lt;r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){&#xD;(function (global){&#xD;&apos;use strict&apos;;&#xD;var Mutation = global.MutationObserver || global.WebKitMutationObserver;&#xD;&#xD;var scheduleDrain;&#xD;&#xD;{&#xD;  if (Mutation) {&#xD;    var called = 0;&#xD;    var observer = new Mutation(nextTick);&#xD;    var element = global.document.createTextNode(&apos;&apos;);&#xD;    observer.observe(element, {&#xD;      characterData: true&#xD;    });&#xD;    scheduleDrain = function () {&#xD;      element.data = (called = ++called % 2);&#xD;    };&#xD;  } else if (!global.setImmediate &amp;&amp; typeof global.MessageChannel !== &apos;undefined&apos;) {&#xD;    var channel = new global.MessageChannel();&#xD;    channel.port1.onmessage = nextTick;&#xD;    scheduleDrain = function () {&#xD;      channel.port2.postMessage(0);&#xD;    };&#xD;  } else if (&apos;document&apos; in global &amp;&amp; &apos;onreadystatechange&apos; in global.document.createElement(&apos;script&apos;)) {&#xD;    scheduleDrain = function () {&#xD;&#xD;      // Create a &lt;script&gt; element; its readystatechange event will be fired asynchronously once it is inserted&#xD;      // into the document. Do so, thus queuing up the task. Remember to clean up once it&apos;s been called.&#xD;      var scriptEl = global.document.createElement(&apos;script&apos;);&#xD;      scriptEl.onreadystatechange = function () {&#xD;        nextTick();&#xD;&#xD;        scriptEl.onreadystatechange = null;&#xD;        scriptEl.parentNode.removeChild(scriptEl);&#xD;        scriptEl = null;&#xD;      };&#xD;      global.document.documentElement.appendChild(scriptEl);&#xD;    };&#xD;  } else {&#xD;    scheduleDrain = function () {&#xD;      setTimeout(nextTick, 0);&#xD;    };&#xD;  }&#xD;}&#xD;&#xD;var draining;&#xD;var queue = [];&#xD;//named nextTick for less confusing stack traces&#xD;function nextTick() {&#xD;  draining = true;&#xD;  var i, oldQueue;&#xD;  var len = queue.length;&#xD;  while (len) {&#xD;    oldQueue = queue;&#xD;    queue = [];&#xD;    i = -1;&#xD;    while (++i &lt; len) {&#xD;      oldQueue[i]();&#xD;    }&#xD;    len = queue.length;&#xD;  }&#xD;  draining = false;&#xD;}&#xD;&#xD;module.exports = immediate;&#xD;function immediate(task) {&#xD;  if (queue.push(task) === 1 &amp;&amp; !draining) {&#xD;    scheduleDrain();&#xD;  }&#xD;}&#xD;&#xD;}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})&#xD;},{}],2:[function(_dereq_,module,exports){&#xD;&apos;use strict&apos;;&#xD;var immediate = _dereq_(1);&#xD;&#xD;/* istanbul ignore next */&#xD;function INTERNAL() {}&#xD;&#xD;var handlers = {};&#xD;&#xD;var REJECTED = [&apos;REJECTED&apos;];&#xD;var FULFILLED = [&apos;FULFILLED&apos;];&#xD;var PENDING = [&apos;PENDING&apos;];&#xD;&#xD;module.exports = exports = Promise;&#xD;&#xD;function Promise(resolver) {&#xD;  if (typeof resolver !== &apos;function&apos;) {&#xD;    throw new TypeError(&apos;resolver must be a function&apos;);&#xD;  }&#xD;  this.state = PENDING;&#xD;  this.queue = [];&#xD;  this.outcome = void 0;&#xD;  if (resolver !== INTERNAL) {&#xD;    safelyResolveThenable(this, resolver);&#xD;  }&#xD;}&#xD;&#xD;Promise.prototype["catch"] = function (onRejected) {&#xD;  return this.then(null, onRejected);&#xD;};&#xD;Promise.prototype.then = function (onFulfilled, onRejected) {&#xD;  if (typeof onFulfilled !== &apos;function&apos; &amp;&amp; this.state === FULFILLED ||&#xD;    typeof onRejected !== &apos;function&apos; &amp;&amp; this.state === REJECTED) {&#xD;    return this;&#xD;  }&#xD;  var promise = new this.constructor(INTERNAL);&#xD;  if (this.state !== PENDING) {&#xD;    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;&#xD;    unwrap(promise, resolver, this.outcome);&#xD;  } else {&#xD;    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));&#xD;  }&#xD;&#xD;  return promise;&#xD;};&#xD;function QueueItem(promise, onFulfilled, onRejected) {&#xD;  this.promise = promise;&#xD;  if (typeof onFulfilled === &apos;function&apos;) {&#xD;    this.onFulfilled = onFulfilled;&#xD;    this.callFulfilled = this.otherCallFulfilled;&#xD;  }&#xD;  if (typeof onRejected === &apos;function&apos;) {&#xD;    this.onRejected = onRejected;&#xD;    this.callRejected = this.otherCallRejected;&#xD;  }&#xD;}&#xD;QueueItem.prototype.callFulfilled = function (value) {&#xD;  handlers.resolve(this.promise, value);&#xD;};&#xD;QueueItem.prototype.otherCallFulfilled = function (value) {&#xD;  unwrap(this.promise, this.onFulfilled, value);&#xD;};&#xD;QueueItem.prototype.callRejected = function (value) {&#xD;  handlers.reject(this.promise, value);&#xD;};&#xD;QueueItem.prototype.otherCallRejected = function (value) {&#xD;  unwrap(this.promise, this.onRejected, value);&#xD;};&#xD;&#xD;function unwrap(promise, func, value) {&#xD;  immediate(function () {&#xD;    var returnValue;&#xD;    try {&#xD;      returnValue = func(value);&#xD;    } catch (e) {&#xD;      return handlers.reject(promise, e);&#xD;    }&#xD;    if (returnValue === promise) {&#xD;      handlers.reject(promise, new TypeError(&apos;Cannot resolve promise with itself&apos;));&#xD;    } else {&#xD;      handlers.resolve(promise, returnValue);&#xD;    }&#xD;  });&#xD;}&#xD;&#xD;handlers.resolve = function (self, value) {&#xD;  var result = tryCatch(getThen, value);&#xD;  if (result.status === &apos;error&apos;) {&#xD;    return handlers.reject(self, result.value);&#xD;  }&#xD;  var thenable = result.value;&#xD;&#xD;  if (thenable) {&#xD;    safelyResolveThenable(self, thenable);&#xD;  } else {&#xD;    self.state = FULFILLED;&#xD;    self.outcome = value;&#xD;    var i = -1;&#xD;    var len = self.queue.length;&#xD;    while (++i &lt; len) {&#xD;      self.queue[i].callFulfilled(value);&#xD;    }&#xD;  }&#xD;  return self;&#xD;};&#xD;handlers.reject = function (self, error) {&#xD;  self.state = REJECTED;&#xD;  self.outcome = error;&#xD;  var i = -1;&#xD;  var len = self.queue.length;&#xD;  while (++i &lt; len) {&#xD;    self.queue[i].callRejected(error);&#xD;  }&#xD;  return self;&#xD;};&#xD;&#xD;function getThen(obj) {&#xD;  // Make sure we only access the accessor once as required by the spec&#xD;  var then = obj &amp;&amp; obj.then;&#xD;  if (obj &amp;&amp; typeof obj === &apos;object&apos; &amp;&amp; typeof then === &apos;function&apos;) {&#xD;    return function appyThen() {&#xD;      then.apply(obj, arguments);&#xD;    };&#xD;  }&#xD;}&#xD;&#xD;function safelyResolveThenable(self, thenable) {&#xD;  // Either fulfill, reject or reject with error&#xD;  var called = false;&#xD;  function onError(value) {&#xD;    if (called) {&#xD;      return;&#xD;    }&#xD;    called = true;&#xD;    handlers.reject(self, value);&#xD;  }&#xD;&#xD;  function onSuccess(value) {&#xD;    if (called) {&#xD;      return;&#xD;    }&#xD;    called = true;&#xD;    handlers.resolve(self, value);&#xD;  }&#xD;&#xD;  function tryToUnwrap() {&#xD;    thenable(onSuccess, onError);&#xD;  }&#xD;&#xD;  var result = tryCatch(tryToUnwrap);&#xD;  if (result.status === &apos;error&apos;) {&#xD;    onError(result.value);&#xD;  }&#xD;}&#xD;&#xD;function tryCatch(func, value) {&#xD;  var out = {};&#xD;  try {&#xD;    out.value = func(value);&#xD;    out.status = &apos;success&apos;;&#xD;  } catch (e) {&#xD;    out.status = &apos;error&apos;;&#xD;    out.value = e;&#xD;  }&#xD;  return out;&#xD;}&#xD;&#xD;exports.resolve = resolve;&#xD;function resolve(value) {&#xD;  if (value instanceof this) {&#xD;    return value;&#xD;  }&#xD;  return handlers.resolve(new this(INTERNAL), value);&#xD;}&#xD;&#xD;exports.reject = reject;&#xD;function reject(reason) {&#xD;  var promise = new this(INTERNAL);&#xD;  return handlers.reject(promise, reason);&#xD;}&#xD;&#xD;exports.all = all;&#xD;function all(iterable) {&#xD;  var self = this;&#xD;  if (Object.prototype.toString.call(iterable) !== &apos;[object Array]&apos;) {&#xD;    return this.reject(new TypeError(&apos;must be an array&apos;));&#xD;  }&#xD;&#xD;  var len = iterable.length;&#xD;  var called = false;&#xD;  if (!len) {&#xD;    return this.resolve([]);&#xD;  }&#xD;&#xD;  var values = new Array(len);&#xD;  var resolved = 0;&#xD;  var i = -1;&#xD;  var promise = new this(INTERNAL);&#xD;&#xD;  while (++i &lt; len) {&#xD;    allResolver(iterable[i], i);&#xD;  }&#xD;  return promise;&#xD;  function allResolver(value, i) {&#xD;    self.resolve(value).then(resolveFromAll, function (error) {&#xD;      if (!called) {&#xD;        called = true;&#xD;        handlers.reject(promise, error);&#xD;      }&#xD;    });&#xD;    function resolveFromAll(outValue) {&#xD;      values[i] = outValue;&#xD;      if (++resolved === len &amp;&amp; !called) {&#xD;        called = true;&#xD;        handlers.resolve(promise, values);&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;exports.race = race;&#xD;function race(iterable) {&#xD;  var self = this;&#xD;  if (Object.prototype.toString.call(iterable) !== &apos;[object Array]&apos;) {&#xD;    return this.reject(new TypeError(&apos;must be an array&apos;));&#xD;  }&#xD;&#xD;  var len = iterable.length;&#xD;  var called = false;&#xD;  if (!len) {&#xD;    return this.resolve([]);&#xD;  }&#xD;&#xD;  var i = -1;&#xD;  var promise = new this(INTERNAL);&#xD;&#xD;  while (++i &lt; len) {&#xD;    resolver(iterable[i]);&#xD;  }&#xD;  return promise;&#xD;  function resolver(value) {&#xD;    self.resolve(value).then(function (response) {&#xD;      if (!called) {&#xD;        called = true;&#xD;        handlers.resolve(promise, response);&#xD;      }&#xD;    }, function (error) {&#xD;      if (!called) {&#xD;        called = true;&#xD;        handlers.reject(promise, error);&#xD;      }&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;},{"1":1}],3:[function(_dereq_,module,exports){&#xD;(function (global){&#xD;&apos;use strict&apos;;&#xD;if (typeof global.Promise !== &apos;function&apos;) {&#xD;  global.Promise = _dereq_(2);&#xD;}&#xD;&#xD;}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})&#xD;},{"2":2}],4:[function(_dereq_,module,exports){&#xD;&apos;use strict&apos;;&#xD;&#xD;var _typeof = typeof Symbol === "function" &amp;&amp; typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj &amp;&amp; typeof Symbol === "function" &amp;&amp; obj.constructor === Symbol &amp;&amp; obj !== Symbol.prototype ? "symbol" : typeof obj; };&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;function getIDB() {&#xD;    /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */&#xD;    try {&#xD;        if (typeof indexedDB !== &apos;undefined&apos;) {&#xD;            return indexedDB;&#xD;        }&#xD;        if (typeof webkitIndexedDB !== &apos;undefined&apos;) {&#xD;            return webkitIndexedDB;&#xD;        }&#xD;        if (typeof mozIndexedDB !== &apos;undefined&apos;) {&#xD;            return mozIndexedDB;&#xD;        }&#xD;        if (typeof OIndexedDB !== &apos;undefined&apos;) {&#xD;            return OIndexedDB;&#xD;        }&#xD;        if (typeof msIndexedDB !== &apos;undefined&apos;) {&#xD;            return msIndexedDB;&#xD;        }&#xD;    } catch (e) {}&#xD;}&#xD;&#xD;var idb = getIDB();&#xD;&#xD;function isIndexedDBValid() {&#xD;    try {&#xD;        // Initialize IndexedDB; fall back to vendor-prefixed versions&#xD;        // if needed.&#xD;        if (!idb) {&#xD;            return false;&#xD;        }&#xD;        // We mimic PouchDB here;&#xD;        //&#xD;        // We test for openDatabase because IE Mobile identifies itself&#xD;        // as Safari. Oh the lulz...&#xD;        var isSafari = typeof openDatabase !== &apos;undefined&apos; &amp;&amp; /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) &amp;&amp; !/Chrome/.test(navigator.userAgent) &amp;&amp; !/BlackBerry/.test(navigator.platform);&#xD;&#xD;        var hasFetch = typeof fetch === &apos;function&apos; &amp;&amp; fetch.toString().indexOf(&apos;[native code&apos;) !== -1;&#xD;&#xD;        // Safari &lt;10.1 does not meet our requirements for IDB support (#5572)&#xD;        // since Safari 10.1 shipped with fetch, we can use that to detect it&#xD;        return (!isSafari || hasFetch) &amp;&amp; typeof indexedDB !== &apos;undefined&apos; &amp;&amp;&#xD;        // some outdated implementations of IDB that appear on Samsung&#xD;        // and HTC Android devices &lt;4.4 are missing IDBKeyRange&#xD;        typeof IDBKeyRange !== &apos;undefined&apos;;&#xD;    } catch (e) {&#xD;        return false;&#xD;    }&#xD;}&#xD;&#xD;function isWebSQLValid() {&#xD;    return typeof openDatabase === &apos;function&apos;;&#xD;}&#xD;&#xD;function isLocalStorageValid() {&#xD;    try {&#xD;        return typeof localStorage !== &apos;undefined&apos; &amp;&amp; &apos;setItem&apos; in localStorage &amp;&amp; localStorage.setItem;&#xD;    } catch (e) {&#xD;        return false;&#xD;    }&#xD;}&#xD;&#xD;// Abstracts constructing a Blob object, so it also works in older&#xD;// browsers that don&apos;t support the native Blob constructor. (i.e.&#xD;// old QtWebKit versions, at least).&#xD;// Abstracts constructing a Blob object, so it also works in older&#xD;// browsers that don&apos;t support the native Blob constructor. (i.e.&#xD;// old QtWebKit versions, at least).&#xD;function createBlob(parts, properties) {&#xD;    /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */&#xD;    parts = parts || [];&#xD;    properties = properties || {};&#xD;    try {&#xD;        return new Blob(parts, properties);&#xD;    } catch (e) {&#xD;        if (e.name !== &apos;TypeError&apos;) {&#xD;            throw e;&#xD;        }&#xD;        var Builder = typeof BlobBuilder !== &apos;undefined&apos; ? BlobBuilder : typeof MSBlobBuilder !== &apos;undefined&apos; ? MSBlobBuilder : typeof MozBlobBuilder !== &apos;undefined&apos; ? MozBlobBuilder : WebKitBlobBuilder;&#xD;        var builder = new Builder();&#xD;        for (var i = 0; i &lt; parts.length; i += 1) {&#xD;            builder.append(parts[i]);&#xD;        }&#xD;        return builder.getBlob(properties.type);&#xD;    }&#xD;}&#xD;&#xD;// This is CommonJS because lie is an external dependency, so Rollup&#xD;// can just ignore it.&#xD;if (typeof Promise === &apos;undefined&apos;) {&#xD;    // In the "nopromises" build this will just throw if you don&apos;t have&#xD;    // a global promise object, but it would throw anyway later.&#xD;    _dereq_(3);&#xD;}&#xD;var Promise$1 = Promise;&#xD;&#xD;function executeCallback(promise, callback) {&#xD;    if (callback) {&#xD;        promise.then(function (result) {&#xD;            callback(null, result);&#xD;        }, function (error) {&#xD;            callback(error);&#xD;        });&#xD;    }&#xD;}&#xD;&#xD;function executeTwoCallbacks(promise, callback, errorCallback) {&#xD;    if (typeof callback === &apos;function&apos;) {&#xD;        promise.then(callback);&#xD;    }&#xD;&#xD;    if (typeof errorCallback === &apos;function&apos;) {&#xD;        promise["catch"](errorCallback);&#xD;    }&#xD;}&#xD;&#xD;// Some code originally from async_storage.js in&#xD;// [Gaia](https://github.com/mozilla-b2g/gaia).&#xD;&#xD;var DETECT_BLOB_SUPPORT_STORE = &apos;local-forage-detect-blob-support&apos;;&#xD;var supportsBlobs;&#xD;var dbContexts;&#xD;var toString = Object.prototype.toString;&#xD;&#xD;// Transform a binary string to an array buffer, because otherwise&#xD;// weird stuff happens when you try to work with the binary string directly.&#xD;// It is known.&#xD;// From http://stackoverflow.com/questions/14967647/ (continues on next line)&#xD;// encode-decode-image-with-base64-breaks-image (2013-04-21)&#xD;function _binStringToArrayBuffer(bin) {&#xD;    var length = bin.length;&#xD;    var buf = new ArrayBuffer(length);&#xD;    var arr = new Uint8Array(buf);&#xD;    for (var i = 0; i &lt; length; i++) {&#xD;        arr[i] = bin.charCodeAt(i);&#xD;    }&#xD;    return buf;&#xD;}&#xD;&#xD;//&#xD;// Blobs are not supported in all versions of IndexedDB, notably&#xD;// Chrome &lt;37 and Android &lt;5. In those versions, storing a blob will throw.&#xD;//&#xD;// Various other blob bugs exist in Chrome v37-42 (inclusive).&#xD;// Detecting them is expensive and confusing to users, and Chrome 37-42&#xD;// is at very low usage worldwide, so we do a hacky userAgent check instead.&#xD;//&#xD;// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120&#xD;// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916&#xD;// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836&#xD;//&#xD;// Code borrowed from PouchDB. See:&#xD;// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js&#xD;//&#xD;function _checkBlobSupportWithoutCaching(idb) {&#xD;    return new Promise$1(function (resolve) {&#xD;        var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, &apos;readwrite&apos;);&#xD;        var blob = createBlob([&apos;&apos;]);&#xD;        txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, &apos;key&apos;);&#xD;&#xD;        txn.onabort = function (e) {&#xD;            // If the transaction aborts now its due to not being able to&#xD;            // write to the database, likely due to the disk being full&#xD;            e.preventDefault();&#xD;            e.stopPropagation();&#xD;            resolve(false);&#xD;        };&#xD;&#xD;        txn.oncomplete = function () {&#xD;            var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);&#xD;            var matchedEdge = navigator.userAgent.match(/Edge\//);&#xD;            // MS Edge pretends to be Chrome 42:&#xD;            // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx&#xD;            resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) &gt;= 43);&#xD;        };&#xD;    })["catch"](function () {&#xD;        return false; // error, so assume unsupported&#xD;    });&#xD;}&#xD;&#xD;function _checkBlobSupport(idb) {&#xD;    if (typeof supportsBlobs === &apos;boolean&apos;) {&#xD;        return Promise$1.resolve(supportsBlobs);&#xD;    }&#xD;    return _checkBlobSupportWithoutCaching(idb).then(function (value) {&#xD;        supportsBlobs = value;&#xD;        return supportsBlobs;&#xD;    });&#xD;}&#xD;&#xD;function _deferReadiness(dbInfo) {&#xD;    var dbContext = dbContexts[dbInfo.name];&#xD;&#xD;    // Create a deferred object representing the current database operation.&#xD;    var deferredOperation = {};&#xD;&#xD;    deferredOperation.promise = new Promise$1(function (resolve) {&#xD;        deferredOperation.resolve = resolve;&#xD;    });&#xD;&#xD;    // Enqueue the deferred operation.&#xD;    dbContext.deferredOperations.push(deferredOperation);&#xD;&#xD;    // Chain its promise to the database readiness.&#xD;    if (!dbContext.dbReady) {&#xD;        dbContext.dbReady = deferredOperation.promise;&#xD;    } else {&#xD;        dbContext.dbReady = dbContext.dbReady.then(function () {&#xD;            return deferredOperation.promise;&#xD;        });&#xD;    }&#xD;}&#xD;&#xD;function _advanceReadiness(dbInfo) {&#xD;    var dbContext = dbContexts[dbInfo.name];&#xD;&#xD;    // Dequeue a deferred operation.&#xD;    var deferredOperation = dbContext.deferredOperations.pop();&#xD;&#xD;    // Resolve its promise (which is part of the database readiness&#xD;    // chain of promises).&#xD;    if (deferredOperation) {&#xD;        deferredOperation.resolve();&#xD;    }&#xD;}&#xD;&#xD;function _getConnection(dbInfo, upgradeNeeded) {&#xD;    return new Promise$1(function (resolve, reject) {&#xD;&#xD;        if (dbInfo.db) {&#xD;            if (upgradeNeeded) {&#xD;                _deferReadiness(dbInfo);&#xD;                dbInfo.db.close();&#xD;            } else {&#xD;                return resolve(dbInfo.db);&#xD;            }&#xD;        }&#xD;&#xD;        var dbArgs = [dbInfo.name];&#xD;&#xD;        if (upgradeNeeded) {&#xD;            dbArgs.push(dbInfo.version);&#xD;        }&#xD;&#xD;        var openreq = idb.open.apply(idb, dbArgs);&#xD;&#xD;        if (upgradeNeeded) {&#xD;            openreq.onupgradeneeded = function (e) {&#xD;                var db = openreq.result;&#xD;                try {&#xD;                    db.createObjectStore(dbInfo.storeName);&#xD;                    if (e.oldVersion &lt;= 1) {&#xD;                        // Added when support for blob shims was added&#xD;                        db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);&#xD;                    }&#xD;                } catch (ex) {&#xD;                    if (ex.name === &apos;ConstraintError&apos;) {&#xD;                        console.warn(&apos;The database "&apos; + dbInfo.name + &apos;"&apos; + &apos; has been upgraded from version &apos; + e.oldVersion + &apos; to version &apos; + e.newVersion + &apos;, but the storage "&apos; + dbInfo.storeName + &apos;" already exists.&apos;);&#xD;                    } else {&#xD;                        throw ex;&#xD;                    }&#xD;                }&#xD;            };&#xD;        }&#xD;&#xD;        openreq.onerror = function (e) {&#xD;            e.preventDefault();&#xD;            reject(openreq.error);&#xD;        };&#xD;&#xD;        openreq.onsuccess = function () {&#xD;            resolve(openreq.result);&#xD;            _advanceReadiness(dbInfo);&#xD;        };&#xD;    });&#xD;}&#xD;&#xD;function _getOriginalConnection(dbInfo) {&#xD;    return _getConnection(dbInfo, false);&#xD;}&#xD;&#xD;function _getUpgradedConnection(dbInfo) {&#xD;    return _getConnection(dbInfo, true);&#xD;}&#xD;&#xD;function _isUpgradeNeeded(dbInfo, defaultVersion) {&#xD;    if (!dbInfo.db) {&#xD;        return true;&#xD;    }&#xD;&#xD;    var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);&#xD;    var isDowngrade = dbInfo.version &lt; dbInfo.db.version;&#xD;    var isUpgrade = dbInfo.version &gt; dbInfo.db.version;&#xD;&#xD;    if (isDowngrade) {&#xD;        // If the version is not the default one&#xD;        // then warn for impossible downgrade.&#xD;        if (dbInfo.version !== defaultVersion) {&#xD;            console.warn(&apos;The database "&apos; + dbInfo.name + &apos;"&apos; + &apos; can\&apos;t be downgraded from version &apos; + dbInfo.db.version + &apos; to version &apos; + dbInfo.version + &apos;.&apos;);&#xD;        }&#xD;        // Align the versions to prevent errors.&#xD;        dbInfo.version = dbInfo.db.version;&#xD;    }&#xD;&#xD;    if (isUpgrade || isNewStore) {&#xD;        // If the store is new then increment the version (if needed).&#xD;        // This will trigger an "upgradeneeded" event which is required&#xD;        // for creating a store.&#xD;        if (isNewStore) {&#xD;            var incVersion = dbInfo.db.version + 1;&#xD;            if (incVersion &gt; dbInfo.version) {&#xD;                dbInfo.version = incVersion;&#xD;            }&#xD;        }&#xD;&#xD;        return true;&#xD;    }&#xD;&#xD;    return false;&#xD;}&#xD;&#xD;// encode a blob for indexeddb engines that don&apos;t support blobs&#xD;function _encodeBlob(blob) {&#xD;    return new Promise$1(function (resolve, reject) {&#xD;        var reader = new FileReader();&#xD;        reader.onerror = reject;&#xD;        reader.onloadend = function (e) {&#xD;            var base64 = btoa(e.target.result || &apos;&apos;);&#xD;            resolve({&#xD;                __local_forage_encoded_blob: true,&#xD;                data: base64,&#xD;                type: blob.type&#xD;            });&#xD;        };&#xD;        reader.readAsBinaryString(blob);&#xD;    });&#xD;}&#xD;&#xD;// decode an encoded blob&#xD;function _decodeBlob(encodedBlob) {&#xD;    var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));&#xD;    return createBlob([arrayBuff], { type: encodedBlob.type });&#xD;}&#xD;&#xD;// is this one of our fancy encoded blobs?&#xD;function _isEncodedBlob(value) {&#xD;    return value &amp;&amp; value.__local_forage_encoded_blob;&#xD;}&#xD;&#xD;// Specialize the default `ready()` function by making it dependent&#xD;// on the current database operations. Thus, the driver will be actually&#xD;// ready when it&apos;s been initialized (default) *and* there are no pending&#xD;// operations on the database (initiated by some other instances).&#xD;function _fullyReady(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = self._initReady().then(function () {&#xD;        var dbContext = dbContexts[self._dbInfo.name];&#xD;&#xD;        if (dbContext &amp;&amp; dbContext.dbReady) {&#xD;            return dbContext.dbReady;&#xD;        }&#xD;    });&#xD;&#xD;    executeTwoCallbacks(promise, callback, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Open the IndexedDB database (automatically creates one if one didn&apos;t&#xD;// previously exist), using any options set in the config.&#xD;function _initStorage(options) {&#xD;    var self = this;&#xD;    var dbInfo = {&#xD;        db: null&#xD;    };&#xD;&#xD;    if (options) {&#xD;        for (var i in options) {&#xD;            dbInfo[i] = options[i];&#xD;        }&#xD;    }&#xD;&#xD;    // Initialize a singleton container for all running localForages.&#xD;    if (!dbContexts) {&#xD;        dbContexts = {};&#xD;    }&#xD;&#xD;    // Get the current context of the database;&#xD;    var dbContext = dbContexts[dbInfo.name];&#xD;&#xD;    // ...or create a new context.&#xD;    if (!dbContext) {&#xD;        dbContext = {&#xD;            // Running localForages sharing a database.&#xD;            forages: [],&#xD;            // Shared database.&#xD;            db: null,&#xD;            // Database readiness (promise).&#xD;            dbReady: null,&#xD;            // Deferred operations on the database.&#xD;            deferredOperations: []&#xD;        };&#xD;        // Register the new context in the global container.&#xD;        dbContexts[dbInfo.name] = dbContext;&#xD;    }&#xD;&#xD;    // Register itself as a running localForage in the current context.&#xD;    dbContext.forages.push(self);&#xD;&#xD;    // Replace the default `ready()` function with the specialized one.&#xD;    if (!self._initReady) {&#xD;        self._initReady = self.ready;&#xD;        self.ready = _fullyReady;&#xD;    }&#xD;&#xD;    // Create an array of initialization states of the related localForages.&#xD;    var initPromises = [];&#xD;&#xD;    function ignoreErrors() {&#xD;        // Don&apos;t handle errors here,&#xD;        // just makes sure related localForages aren&apos;t pending.&#xD;        return Promise$1.resolve();&#xD;    }&#xD;&#xD;    for (var j = 0; j &lt; dbContext.forages.length; j++) {&#xD;        var forage = dbContext.forages[j];&#xD;        if (forage !== self) {&#xD;            // Don&apos;t wait for itself...&#xD;            initPromises.push(forage._initReady()["catch"](ignoreErrors));&#xD;        }&#xD;    }&#xD;&#xD;    // Take a snapshot of the related localForages.&#xD;    var forages = dbContext.forages.slice(0);&#xD;&#xD;    // Initialize the connection process only when&#xD;    // all the related localForages aren&apos;t pending.&#xD;    return Promise$1.all(initPromises).then(function () {&#xD;        dbInfo.db = dbContext.db;&#xD;        // Get the connection or open a new one without upgrade.&#xD;        return _getOriginalConnection(dbInfo);&#xD;    }).then(function (db) {&#xD;        dbInfo.db = db;&#xD;        if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {&#xD;            // Reopen the database for upgrading.&#xD;            return _getUpgradedConnection(dbInfo);&#xD;        }&#xD;        return db;&#xD;    }).then(function (db) {&#xD;        dbInfo.db = dbContext.db = db;&#xD;        self._dbInfo = dbInfo;&#xD;        // Share the final connection amongst related localForages.&#xD;        for (var k = 0; k &lt; forages.length; k++) {&#xD;            var forage = forages[k];&#xD;            if (forage !== self) {&#xD;                // Self is already up-to-date.&#xD;                forage._dbInfo.db = dbInfo.db;&#xD;                forage._dbInfo.version = dbInfo.version;&#xD;            }&#xD;        }&#xD;    });&#xD;}&#xD;&#xD;function getItem(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var store = dbInfo.db.transaction(dbInfo.storeName, &apos;readonly&apos;).objectStore(dbInfo.storeName);&#xD;            var req = store.get(key);&#xD;&#xD;            req.onsuccess = function () {&#xD;                var value = req.result;&#xD;                if (value === undefined) {&#xD;                    value = null;&#xD;                }&#xD;                if (_isEncodedBlob(value)) {&#xD;                    value = _decodeBlob(value);&#xD;                }&#xD;                resolve(value);&#xD;            };&#xD;&#xD;            req.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Iterate over all items stored in database.&#xD;function iterate(iterator, callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var store = dbInfo.db.transaction(dbInfo.storeName, &apos;readonly&apos;).objectStore(dbInfo.storeName);&#xD;&#xD;            var req = store.openCursor();&#xD;            var iterationNumber = 1;&#xD;&#xD;            req.onsuccess = function () {&#xD;                var cursor = req.result;&#xD;&#xD;                if (cursor) {&#xD;                    var value = cursor.value;&#xD;                    if (_isEncodedBlob(value)) {&#xD;                        value = _decodeBlob(value);&#xD;                    }&#xD;                    var result = iterator(value, cursor.key, iterationNumber++);&#xD;&#xD;                    if (result !== void 0) {&#xD;                        resolve(result);&#xD;                    } else {&#xD;                        cursor["continue"]();&#xD;                    }&#xD;                } else {&#xD;                    resolve();&#xD;                }&#xD;            };&#xD;&#xD;            req.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;&#xD;    return promise;&#xD;}&#xD;&#xD;function setItem(key, value, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        var dbInfo;&#xD;        self.ready().then(function () {&#xD;            dbInfo = self._dbInfo;&#xD;            if (toString.call(value) === &apos;[object Blob]&apos;) {&#xD;                return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {&#xD;                    if (blobSupport) {&#xD;                        return value;&#xD;                    }&#xD;                    return _encodeBlob(value);&#xD;                });&#xD;            }&#xD;            return value;&#xD;        }).then(function (value) {&#xD;            var transaction = dbInfo.db.transaction(dbInfo.storeName, &apos;readwrite&apos;);&#xD;            var store = transaction.objectStore(dbInfo.storeName);&#xD;            var req = store.put(value, key);&#xD;&#xD;            // The reason we don&apos;t _save_ null is because IE 10 does&#xD;            // not support saving the `null` type in IndexedDB. How&#xD;            // ironic, given the bug below!&#xD;            // See: https://github.com/mozilla/localForage/issues/161&#xD;            if (value === null) {&#xD;                value = undefined;&#xD;            }&#xD;&#xD;            transaction.oncomplete = function () {&#xD;                // Cast to undefined so the value passed to&#xD;                // callback/promise is the same as what one would get out&#xD;                // of `getItem()` later. This leads to some weirdness&#xD;                // (setItem(&apos;foo&apos;, undefined) will return `null`), but&#xD;                // it&apos;s not my fault localStorage is our baseline and that&#xD;                // it&apos;s weird.&#xD;                if (value === undefined) {&#xD;                    value = null;&#xD;                }&#xD;&#xD;                resolve(value);&#xD;            };&#xD;            transaction.onabort = transaction.onerror = function () {&#xD;                var err = req.error ? req.error : req.transaction.error;&#xD;                reject(err);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function removeItem(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var transaction = dbInfo.db.transaction(dbInfo.storeName, &apos;readwrite&apos;);&#xD;            var store = transaction.objectStore(dbInfo.storeName);&#xD;&#xD;            // We use a Grunt task to make this safe for IE and some&#xD;            // versions of Android (including those used by Cordova).&#xD;            // Normally IE won&apos;t like `.delete()` and will insist on&#xD;            // using `[&apos;delete&apos;]()`, but we have a build step that&#xD;            // fixes this for us now.&#xD;            var req = store["delete"](key);&#xD;            transaction.oncomplete = function () {&#xD;                resolve();&#xD;            };&#xD;&#xD;            transaction.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;&#xD;            // The request will be also be aborted if we&apos;ve exceeded our storage&#xD;            // space.&#xD;            transaction.onabort = function () {&#xD;                var err = req.error ? req.error : req.transaction.error;&#xD;                reject(err);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function clear(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var transaction = dbInfo.db.transaction(dbInfo.storeName, &apos;readwrite&apos;);&#xD;            var store = transaction.objectStore(dbInfo.storeName);&#xD;            var req = store.clear();&#xD;&#xD;            transaction.oncomplete = function () {&#xD;                resolve();&#xD;            };&#xD;&#xD;            transaction.onabort = transaction.onerror = function () {&#xD;                var err = req.error ? req.error : req.transaction.error;&#xD;                reject(err);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function length(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var store = dbInfo.db.transaction(dbInfo.storeName, &apos;readonly&apos;).objectStore(dbInfo.storeName);&#xD;            var req = store.count();&#xD;&#xD;            req.onsuccess = function () {&#xD;                resolve(req.result);&#xD;            };&#xD;&#xD;            req.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function key(n, callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        if (n &lt; 0) {&#xD;            resolve(null);&#xD;&#xD;            return;&#xD;        }&#xD;&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var store = dbInfo.db.transaction(dbInfo.storeName, &apos;readonly&apos;).objectStore(dbInfo.storeName);&#xD;&#xD;            var advanced = false;&#xD;            var req = store.openCursor();&#xD;            req.onsuccess = function () {&#xD;                var cursor = req.result;&#xD;                if (!cursor) {&#xD;                    // this means there weren&apos;t enough keys&#xD;                    resolve(null);&#xD;&#xD;                    return;&#xD;                }&#xD;&#xD;                if (n === 0) {&#xD;                    // We have the first key, return it if that&apos;s what they&#xD;                    // wanted.&#xD;                    resolve(cursor.key);&#xD;                } else {&#xD;                    if (!advanced) {&#xD;                        // Otherwise, ask the cursor to skip ahead n&#xD;                        // records.&#xD;                        advanced = true;&#xD;                        cursor.advance(n);&#xD;                    } else {&#xD;                        // When we get here, we&apos;ve got the nth key.&#xD;                        resolve(cursor.key);&#xD;                    }&#xD;                }&#xD;            };&#xD;&#xD;            req.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function keys(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            var store = dbInfo.db.transaction(dbInfo.storeName, &apos;readonly&apos;).objectStore(dbInfo.storeName);&#xD;&#xD;            var req = store.openCursor();&#xD;            var keys = [];&#xD;&#xD;            req.onsuccess = function () {&#xD;                var cursor = req.result;&#xD;&#xD;                if (!cursor) {&#xD;                    resolve(keys);&#xD;                    return;&#xD;                }&#xD;&#xD;                keys.push(cursor.key);&#xD;                cursor["continue"]();&#xD;            };&#xD;&#xD;            req.onerror = function () {&#xD;                reject(req.error);&#xD;            };&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;var asyncStorage = {&#xD;    _driver: &apos;asyncStorage&apos;,&#xD;    _initStorage: _initStorage,&#xD;    iterate: iterate,&#xD;    getItem: getItem,&#xD;    setItem: setItem,&#xD;    removeItem: removeItem,&#xD;    clear: clear,&#xD;    length: length,&#xD;    key: key,&#xD;    keys: keys&#xD;};&#xD;&#xD;// Sadly, the best way to save binary data in WebSQL/localStorage is serializing&#xD;// it to Base64, so this is how we store it to prevent very strange errors with less&#xD;// verbose ways of binary &lt;-&gt; string data storage.&#xD;var BASE_CHARS = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&apos;;&#xD;&#xD;var BLOB_TYPE_PREFIX = &apos;&#126;&#126;local_forage_type&#126;&apos;;&#xD;var BLOB_TYPE_PREFIX_REGEX = /^&#126;&#126;local_forage_type&#126;([^&#126;]+)&#126;/;&#xD;&#xD;var SERIALIZED_MARKER = &apos;__lfsc__:&apos;;&#xD;var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;&#xD;&#xD;// OMG the serializations!&#xD;var TYPE_ARRAYBUFFER = &apos;arbf&apos;;&#xD;var TYPE_BLOB = &apos;blob&apos;;&#xD;var TYPE_INT8ARRAY = &apos;si08&apos;;&#xD;var TYPE_UINT8ARRAY = &apos;ui08&apos;;&#xD;var TYPE_UINT8CLAMPEDARRAY = &apos;uic8&apos;;&#xD;var TYPE_INT16ARRAY = &apos;si16&apos;;&#xD;var TYPE_INT32ARRAY = &apos;si32&apos;;&#xD;var TYPE_UINT16ARRAY = &apos;ur16&apos;;&#xD;var TYPE_UINT32ARRAY = &apos;ui32&apos;;&#xD;var TYPE_FLOAT32ARRAY = &apos;fl32&apos;;&#xD;var TYPE_FLOAT64ARRAY = &apos;fl64&apos;;&#xD;var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;&#xD;&#xD;var toString$1 = Object.prototype.toString;&#xD;&#xD;function stringToBuffer(serializedString) {&#xD;    // Fill the string into a ArrayBuffer.&#xD;    var bufferLength = serializedString.length * 0.75;&#xD;    var len = serializedString.length;&#xD;    var i;&#xD;    var p = 0;&#xD;    var encoded1, encoded2, encoded3, encoded4;&#xD;&#xD;    if (serializedString[serializedString.length - 1] === &apos;=&apos;) {&#xD;        bufferLength--;&#xD;        if (serializedString[serializedString.length - 2] === &apos;=&apos;) {&#xD;            bufferLength--;&#xD;        }&#xD;    }&#xD;&#xD;    var buffer = new ArrayBuffer(bufferLength);&#xD;    var bytes = new Uint8Array(buffer);&#xD;&#xD;    for (i = 0; i &lt; len; i += 4) {&#xD;        encoded1 = BASE_CHARS.indexOf(serializedString[i]);&#xD;        encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);&#xD;        encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);&#xD;        encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);&#xD;&#xD;        /*jslint bitwise: true */&#xD;        bytes[p++] = encoded1 &lt;&lt; 2 | encoded2 &gt;&gt; 4;&#xD;        bytes[p++] = (encoded2 &amp; 15) &lt;&lt; 4 | encoded3 &gt;&gt; 2;&#xD;        bytes[p++] = (encoded3 &amp; 3) &lt;&lt; 6 | encoded4 &amp; 63;&#xD;    }&#xD;    return buffer;&#xD;}&#xD;&#xD;// Converts a buffer to a string to store, serialized, in the backend&#xD;// storage library.&#xD;function bufferToString(buffer) {&#xD;    // base64-arraybuffer&#xD;    var bytes = new Uint8Array(buffer);&#xD;    var base64String = &apos;&apos;;&#xD;    var i;&#xD;&#xD;    for (i = 0; i &lt; bytes.length; i += 3) {&#xD;        /*jslint bitwise: true */&#xD;        base64String += BASE_CHARS[bytes[i] &gt;&gt; 2];&#xD;        base64String += BASE_CHARS[(bytes[i] &amp; 3) &lt;&lt; 4 | bytes[i + 1] &gt;&gt; 4];&#xD;        base64String += BASE_CHARS[(bytes[i + 1] &amp; 15) &lt;&lt; 2 | bytes[i + 2] &gt;&gt; 6];&#xD;        base64String += BASE_CHARS[bytes[i + 2] &amp; 63];&#xD;    }&#xD;&#xD;    if (bytes.length % 3 === 2) {&#xD;        base64String = base64String.substring(0, base64String.length - 1) + &apos;=&apos;;&#xD;    } else if (bytes.length % 3 === 1) {&#xD;        base64String = base64String.substring(0, base64String.length - 2) + &apos;==&apos;;&#xD;    }&#xD;&#xD;    return base64String;&#xD;}&#xD;&#xD;// Serialize a value, afterwards executing a callback (which usually&#xD;// instructs the `setItem()` callback/promise to be executed). This is how&#xD;// we store binary data with localStorage.&#xD;function serialize(value, callback) {&#xD;    var valueType = &apos;&apos;;&#xD;    if (value) {&#xD;        valueType = toString$1.call(value);&#xD;    }&#xD;&#xD;    // Cannot use `value instanceof ArrayBuffer` or such here, as these&#xD;    // checks fail when running the tests using casper.js...&#xD;    //&#xD;    // TODO: See why those tests fail and use a better solution.&#xD;    if (value &amp;&amp; (valueType === &apos;[object ArrayBuffer]&apos; || value.buffer &amp;&amp; toString$1.call(value.buffer) === &apos;[object ArrayBuffer]&apos;)) {&#xD;        // Convert binary arrays to a string and prefix the string with&#xD;        // a special marker.&#xD;        var buffer;&#xD;        var marker = SERIALIZED_MARKER;&#xD;&#xD;        if (value instanceof ArrayBuffer) {&#xD;            buffer = value;&#xD;            marker += TYPE_ARRAYBUFFER;&#xD;        } else {&#xD;            buffer = value.buffer;&#xD;&#xD;            if (valueType === &apos;[object Int8Array]&apos;) {&#xD;                marker += TYPE_INT8ARRAY;&#xD;            } else if (valueType === &apos;[object Uint8Array]&apos;) {&#xD;                marker += TYPE_UINT8ARRAY;&#xD;            } else if (valueType === &apos;[object Uint8ClampedArray]&apos;) {&#xD;                marker += TYPE_UINT8CLAMPEDARRAY;&#xD;            } else if (valueType === &apos;[object Int16Array]&apos;) {&#xD;                marker += TYPE_INT16ARRAY;&#xD;            } else if (valueType === &apos;[object Uint16Array]&apos;) {&#xD;                marker += TYPE_UINT16ARRAY;&#xD;            } else if (valueType === &apos;[object Int32Array]&apos;) {&#xD;                marker += TYPE_INT32ARRAY;&#xD;            } else if (valueType === &apos;[object Uint32Array]&apos;) {&#xD;                marker += TYPE_UINT32ARRAY;&#xD;            } else if (valueType === &apos;[object Float32Array]&apos;) {&#xD;                marker += TYPE_FLOAT32ARRAY;&#xD;            } else if (valueType === &apos;[object Float64Array]&apos;) {&#xD;                marker += TYPE_FLOAT64ARRAY;&#xD;            } else {&#xD;                callback(new Error(&apos;Failed to get type for BinaryArray&apos;));&#xD;            }&#xD;        }&#xD;&#xD;        callback(marker + bufferToString(buffer));&#xD;    } else if (valueType === &apos;[object Blob]&apos;) {&#xD;        // Conver the blob to a binaryArray and then to a string.&#xD;        var fileReader = new FileReader();&#xD;&#xD;        fileReader.onload = function () {&#xD;            // Backwards-compatible prefix for the blob type.&#xD;            var str = BLOB_TYPE_PREFIX + value.type + &apos;&#126;&apos; + bufferToString(this.result);&#xD;&#xD;            callback(SERIALIZED_MARKER + TYPE_BLOB + str);&#xD;        };&#xD;&#xD;        fileReader.readAsArrayBuffer(value);&#xD;    } else {&#xD;        try {&#xD;            callback(JSON.stringify(value));&#xD;        } catch (e) {&#xD;            console.error("Couldn&apos;t convert value into a JSON string: ", value);&#xD;&#xD;            callback(null, e);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;// Deserialize data we&apos;ve inserted into a value column/field. We place&#xD;// special markers into our strings to mark them as encoded; this isn&apos;t&#xD;// as nice as a meta field, but it&apos;s the only sane thing we can do whilst&#xD;// keeping localStorage support intact.&#xD;//&#xD;// Oftentimes this will just deserialize JSON content, but if we have a&#xD;// special marker (SERIALIZED_MARKER, defined above), we will extract&#xD;// some kind of arraybuffer/binary data/typed array out of the string.&#xD;function deserialize(value) {&#xD;    // If we haven&apos;t marked this string as being specially serialized (i.e.&#xD;    // something other than serialized JSON), we can just return it and be&#xD;    // done with it.&#xD;    if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {&#xD;        return JSON.parse(value);&#xD;    }&#xD;&#xD;    // The following code deals with deserializing some kind of Blob or&#xD;    // TypedArray. First we separate out the type of data we&apos;re dealing&#xD;    // with from the data itself.&#xD;    var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);&#xD;    var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);&#xD;&#xD;    var blobType;&#xD;    // Backwards-compatible blob type serialization strategy.&#xD;    // DBs created with older versions of localForage will simply not have the blob type.&#xD;    if (type === TYPE_BLOB &amp;&amp; BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {&#xD;        var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);&#xD;        blobType = matcher[1];&#xD;        serializedString = serializedString.substring(matcher[0].length);&#xD;    }&#xD;    var buffer = stringToBuffer(serializedString);&#xD;&#xD;    // Return the right type based on the code/type set during&#xD;    // serialization.&#xD;    switch (type) {&#xD;        case TYPE_ARRAYBUFFER:&#xD;            return buffer;&#xD;        case TYPE_BLOB:&#xD;            return createBlob([buffer], { type: blobType });&#xD;        case TYPE_INT8ARRAY:&#xD;            return new Int8Array(buffer);&#xD;        case TYPE_UINT8ARRAY:&#xD;            return new Uint8Array(buffer);&#xD;        case TYPE_UINT8CLAMPEDARRAY:&#xD;            return new Uint8ClampedArray(buffer);&#xD;        case TYPE_INT16ARRAY:&#xD;            return new Int16Array(buffer);&#xD;        case TYPE_UINT16ARRAY:&#xD;            return new Uint16Array(buffer);&#xD;        case TYPE_INT32ARRAY:&#xD;            return new Int32Array(buffer);&#xD;        case TYPE_UINT32ARRAY:&#xD;            return new Uint32Array(buffer);&#xD;        case TYPE_FLOAT32ARRAY:&#xD;            return new Float32Array(buffer);&#xD;        case TYPE_FLOAT64ARRAY:&#xD;            return new Float64Array(buffer);&#xD;        default:&#xD;            throw new Error(&apos;Unkown type: &apos; + type);&#xD;    }&#xD;}&#xD;&#xD;var localforageSerializer = {&#xD;    serialize: serialize,&#xD;    deserialize: deserialize,&#xD;    stringToBuffer: stringToBuffer,&#xD;    bufferToString: bufferToString&#xD;};&#xD;&#xD;/*&#xD; * Includes code from:&#xD; *&#xD; * base64-arraybuffer&#xD; * https://github.com/niklasvh/base64-arraybuffer&#xD; *&#xD; * Copyright (c) 2012 Niklas von Hertzen&#xD; * Licensed under the MIT license.&#xD; */&#xD;// Open the WebSQL database (automatically creates one if one didn&apos;t&#xD;// previously exist), using any options set in the config.&#xD;function _initStorage$1(options) {&#xD;    var self = this;&#xD;    var dbInfo = {&#xD;        db: null&#xD;    };&#xD;&#xD;    if (options) {&#xD;        for (var i in options) {&#xD;            dbInfo[i] = typeof options[i] !== &apos;string&apos; ? options[i].toString() : options[i];&#xD;        }&#xD;    }&#xD;&#xD;    var dbInfoPromise = new Promise$1(function (resolve, reject) {&#xD;        // Open the database; the openDatabase API will automatically&#xD;        // create it for us if it doesn&apos;t exist.&#xD;        try {&#xD;            dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);&#xD;        } catch (e) {&#xD;            return reject(e);&#xD;        }&#xD;&#xD;        // Create our key/value table if it doesn&apos;t exist.&#xD;        dbInfo.db.transaction(function (t) {&#xD;            t.executeSql(&apos;CREATE TABLE IF NOT EXISTS &apos; + dbInfo.storeName + &apos; (id INTEGER PRIMARY KEY, key unique, value)&apos;, [], function () {&#xD;                self._dbInfo = dbInfo;&#xD;                resolve();&#xD;            }, function (t, error) {&#xD;                reject(error);&#xD;            });&#xD;        });&#xD;    });&#xD;&#xD;    dbInfo.serializer = localforageSerializer;&#xD;    return dbInfoPromise;&#xD;}&#xD;&#xD;function getItem$1(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;SELECT * FROM &apos; + dbInfo.storeName + &apos; WHERE key = ? LIMIT 1&apos;, [key], function (t, results) {&#xD;                    var result = results.rows.length ? results.rows.item(0).value : null;&#xD;&#xD;                    // Check to see if this is serialized content we need to&#xD;                    // unpack.&#xD;                    if (result) {&#xD;                        result = dbInfo.serializer.deserialize(result);&#xD;                    }&#xD;&#xD;                    resolve(result);&#xD;                }, function (t, error) {&#xD;&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function iterate$1(iterator, callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;SELECT * FROM &apos; + dbInfo.storeName, [], function (t, results) {&#xD;                    var rows = results.rows;&#xD;                    var length = rows.length;&#xD;&#xD;                    for (var i = 0; i &lt; length; i++) {&#xD;                        var item = rows.item(i);&#xD;                        var result = item.value;&#xD;&#xD;                        // Check to see if this is serialized content&#xD;                        // we need to unpack.&#xD;                        if (result) {&#xD;                            result = dbInfo.serializer.deserialize(result);&#xD;                        }&#xD;&#xD;                        result = iterator(result, item.key, i + 1);&#xD;&#xD;                        // void(0) prevents problems with redefinition&#xD;                        // of `undefined`.&#xD;                        if (result !== void 0) {&#xD;                            resolve(result);&#xD;                            return;&#xD;                        }&#xD;                    }&#xD;&#xD;                    resolve();&#xD;                }, function (t, error) {&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function _setItem(key, value, callback, retriesLeft) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            // The localStorage API doesn&apos;t return undefined values in an&#xD;            // "expected" way, so undefined is always cast to null in all&#xD;            // drivers. See: https://github.com/mozilla/localForage/pull/42&#xD;            if (value === undefined) {&#xD;                value = null;&#xD;            }&#xD;&#xD;            // Save the original value to pass to the callback.&#xD;            var originalValue = value;&#xD;&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.serializer.serialize(value, function (value, error) {&#xD;                if (error) {&#xD;                    reject(error);&#xD;                } else {&#xD;                    dbInfo.db.transaction(function (t) {&#xD;                        t.executeSql(&apos;INSERT OR REPLACE INTO &apos; + dbInfo.storeName + &apos; (key, value) VALUES (?, ?)&apos;, [key, value], function () {&#xD;                            resolve(originalValue);&#xD;                        }, function (t, error) {&#xD;                            reject(error);&#xD;                        });&#xD;                    }, function (sqlError) {&#xD;                        // The transaction failed; check&#xD;                        // to see if it&apos;s a quota error.&#xD;                        if (sqlError.code === sqlError.QUOTA_ERR) {&#xD;                            // We reject the callback outright for now, but&#xD;                            // it&apos;s worth trying to re-run the transaction.&#xD;                            // Even if the user accepts the prompt to use&#xD;                            // more storage on Safari, this error will&#xD;                            // be called.&#xD;                            //&#xD;                            // Try to re-run the transaction.&#xD;                            if (retriesLeft &gt; 0) {&#xD;                                resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));&#xD;                                return;&#xD;                            }&#xD;                            reject(sqlError);&#xD;                        }&#xD;                    });&#xD;                }&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function setItem$1(key, value, callback) {&#xD;    return _setItem.apply(this, [key, value, callback, 1]);&#xD;}&#xD;&#xD;function removeItem$1(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;DELETE FROM &apos; + dbInfo.storeName + &apos; WHERE key = ?&apos;, [key], function () {&#xD;                    resolve();&#xD;                }, function (t, error) {&#xD;&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Deletes every item in the table.&#xD;// TODO: Find out if this resets the AUTO_INCREMENT number.&#xD;function clear$1(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;DELETE FROM &apos; + dbInfo.storeName, [], function () {&#xD;                    resolve();&#xD;                }, function (t, error) {&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Does a simple `COUNT(key)` to get the number of items stored in&#xD;// localForage.&#xD;function length$1(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                // Ahhh, SQL makes this one soooooo easy.&#xD;                t.executeSql(&apos;SELECT COUNT(key) as c FROM &apos; + dbInfo.storeName, [], function (t, results) {&#xD;                    var result = results.rows.item(0).c;&#xD;&#xD;                    resolve(result);&#xD;                }, function (t, error) {&#xD;&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Return the key located at key index X; essentially gets the key from a&#xD;// `WHERE id = ?`. This is the most efficient way I can think to implement&#xD;// this rarely-used (in my experience) part of the API, but it can seem&#xD;// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so&#xD;// the ID of each key will change every time it&apos;s updated. Perhaps a stored&#xD;// procedure for the `setItem()` SQL would solve this problem?&#xD;// TODO: Don&apos;t change ID on `setItem()`.&#xD;function key$1(n, callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;SELECT key FROM &apos; + dbInfo.storeName + &apos; WHERE id = ? LIMIT 1&apos;, [n + 1], function (t, results) {&#xD;                    var result = results.rows.length ? results.rows.item(0).key : null;&#xD;                    resolve(result);&#xD;                }, function (t, error) {&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function keys$1(callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = new Promise$1(function (resolve, reject) {&#xD;        self.ready().then(function () {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.db.transaction(function (t) {&#xD;                t.executeSql(&apos;SELECT key FROM &apos; + dbInfo.storeName, [], function (t, results) {&#xD;                    var keys = [];&#xD;&#xD;                    for (var i = 0; i &lt; results.rows.length; i++) {&#xD;                        keys.push(results.rows.item(i).key);&#xD;                    }&#xD;&#xD;                    resolve(keys);&#xD;                }, function (t, error) {&#xD;&#xD;                    reject(error);&#xD;                });&#xD;            });&#xD;        })["catch"](reject);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;var webSQLStorage = {&#xD;    _driver: &apos;webSQLStorage&apos;,&#xD;    _initStorage: _initStorage$1,&#xD;    iterate: iterate$1,&#xD;    getItem: getItem$1,&#xD;    setItem: setItem$1,&#xD;    removeItem: removeItem$1,&#xD;    clear: clear$1,&#xD;    length: length$1,&#xD;    key: key$1,&#xD;    keys: keys$1&#xD;};&#xD;&#xD;// Config the localStorage backend, using options set in the config.&#xD;function _initStorage$2(options) {&#xD;    var self = this;&#xD;    var dbInfo = {};&#xD;    if (options) {&#xD;        for (var i in options) {&#xD;            dbInfo[i] = options[i];&#xD;        }&#xD;    }&#xD;&#xD;    dbInfo.keyPrefix = dbInfo.name + &apos;/&apos;;&#xD;&#xD;    if (dbInfo.storeName !== self._defaultConfig.storeName) {&#xD;        dbInfo.keyPrefix += dbInfo.storeName + &apos;/&apos;;&#xD;    }&#xD;&#xD;    self._dbInfo = dbInfo;&#xD;    dbInfo.serializer = localforageSerializer;&#xD;&#xD;    return Promise$1.resolve();&#xD;}&#xD;&#xD;// Remove all keys from the datastore, effectively destroying all data in&#xD;// the app&apos;s key/value store!&#xD;function clear$2(callback) {&#xD;    var self = this;&#xD;    var promise = self.ready().then(function () {&#xD;        var keyPrefix = self._dbInfo.keyPrefix;&#xD;&#xD;        for (var i = localStorage.length - 1; i &gt;= 0; i--) {&#xD;            var key = localStorage.key(i);&#xD;&#xD;            if (key.indexOf(keyPrefix) === 0) {&#xD;                localStorage.removeItem(key);&#xD;            }&#xD;        }&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Retrieve an item from the store. Unlike the original async_storage&#xD;// library in Gaia, we don&apos;t modify return values at all. If a key&apos;s value&#xD;// is `undefined`, we pass that value to the callback function.&#xD;function getItem$2(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = self.ready().then(function () {&#xD;        var dbInfo = self._dbInfo;&#xD;        var result = localStorage.getItem(dbInfo.keyPrefix + key);&#xD;&#xD;        // If a result was found, parse it from the serialized&#xD;        // string into a JS object. If result isn&apos;t truthy, the key&#xD;        // is likely undefined and we&apos;ll pass it straight to the&#xD;        // callback.&#xD;        if (result) {&#xD;            result = dbInfo.serializer.deserialize(result);&#xD;        }&#xD;&#xD;        return result;&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Iterate over all items in the store.&#xD;function iterate$2(iterator, callback) {&#xD;    var self = this;&#xD;&#xD;    var promise = self.ready().then(function () {&#xD;        var dbInfo = self._dbInfo;&#xD;        var keyPrefix = dbInfo.keyPrefix;&#xD;        var keyPrefixLength = keyPrefix.length;&#xD;        var length = localStorage.length;&#xD;&#xD;        // We use a dedicated iterator instead of the `i` variable below&#xD;        // so other keys we fetch in localStorage aren&apos;t counted in&#xD;        // the `iterationNumber` argument passed to the `iterate()`&#xD;        // callback.&#xD;        //&#xD;        // See: github.com/mozilla/localForage/pull/435#discussion_r38061530&#xD;        var iterationNumber = 1;&#xD;&#xD;        for (var i = 0; i &lt; length; i++) {&#xD;            var key = localStorage.key(i);&#xD;            if (key.indexOf(keyPrefix) !== 0) {&#xD;                continue;&#xD;            }&#xD;            var value = localStorage.getItem(key);&#xD;&#xD;            // If a result was found, parse it from the serialized&#xD;            // string into a JS object. If result isn&apos;t truthy, the&#xD;            // key is likely undefined and we&apos;ll pass it straight&#xD;            // to the iterator.&#xD;            if (value) {&#xD;                value = dbInfo.serializer.deserialize(value);&#xD;            }&#xD;&#xD;            value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);&#xD;&#xD;            if (value !== void 0) {&#xD;                return value;&#xD;            }&#xD;        }&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Same as localStorage&apos;s key() method, except takes a callback.&#xD;function key$2(n, callback) {&#xD;    var self = this;&#xD;    var promise = self.ready().then(function () {&#xD;        var dbInfo = self._dbInfo;&#xD;        var result;&#xD;        try {&#xD;            result = localStorage.key(n);&#xD;        } catch (error) {&#xD;            result = null;&#xD;        }&#xD;&#xD;        // Remove the prefix from the key, if a key is found.&#xD;        if (result) {&#xD;            result = result.substring(dbInfo.keyPrefix.length);&#xD;        }&#xD;&#xD;        return result;&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;function keys$2(callback) {&#xD;    var self = this;&#xD;    var promise = self.ready().then(function () {&#xD;        var dbInfo = self._dbInfo;&#xD;        var length = localStorage.length;&#xD;        var keys = [];&#xD;&#xD;        for (var i = 0; i &lt; length; i++) {&#xD;            if (localStorage.key(i).indexOf(dbInfo.keyPrefix) === 0) {&#xD;                keys.push(localStorage.key(i).substring(dbInfo.keyPrefix.length));&#xD;            }&#xD;        }&#xD;&#xD;        return keys;&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Supply the number of keys in the datastore to the callback function.&#xD;function length$2(callback) {&#xD;    var self = this;&#xD;    var promise = self.keys().then(function (keys) {&#xD;        return keys.length;&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Remove an item from the store, nice and simple.&#xD;function removeItem$2(key, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = self.ready().then(function () {&#xD;        var dbInfo = self._dbInfo;&#xD;        localStorage.removeItem(dbInfo.keyPrefix + key);&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;// Set a key&apos;s value and run an optional callback once the value is set.&#xD;// Unlike Gaia&apos;s implementation, the callback function is passed the value,&#xD;// in case you want to operate on that value only after you&apos;re sure it&#xD;// saved, or something like that.&#xD;function setItem$2(key, value, callback) {&#xD;    var self = this;&#xD;&#xD;    // Cast the key to a string, as that&apos;s all we can set as a key.&#xD;    if (typeof key !== &apos;string&apos;) {&#xD;        console.warn(key + &apos; used as a key, but it is not a string.&apos;);&#xD;        key = String(key);&#xD;    }&#xD;&#xD;    var promise = self.ready().then(function () {&#xD;        // Convert undefined values to null.&#xD;        // https://github.com/mozilla/localForage/pull/42&#xD;        if (value === undefined) {&#xD;            value = null;&#xD;        }&#xD;&#xD;        // Save the original value to pass to the callback.&#xD;        var originalValue = value;&#xD;&#xD;        return new Promise$1(function (resolve, reject) {&#xD;            var dbInfo = self._dbInfo;&#xD;            dbInfo.serializer.serialize(value, function (value, error) {&#xD;                if (error) {&#xD;                    reject(error);&#xD;                } else {&#xD;                    try {&#xD;                        localStorage.setItem(dbInfo.keyPrefix + key, value);&#xD;                        resolve(originalValue);&#xD;                    } catch (e) {&#xD;                        // localStorage capacity exceeded.&#xD;                        // TODO: Make this a specific error/event.&#xD;                        if (e.name === &apos;QuotaExceededError&apos; || e.name === &apos;NS_ERROR_DOM_QUOTA_REACHED&apos;) {&#xD;                            reject(e);&#xD;                        }&#xD;                        reject(e);&#xD;                    }&#xD;                }&#xD;            });&#xD;        });&#xD;    });&#xD;&#xD;    executeCallback(promise, callback);&#xD;    return promise;&#xD;}&#xD;&#xD;var localStorageWrapper = {&#xD;    _driver: &apos;localStorageWrapper&apos;,&#xD;    _initStorage: _initStorage$2,&#xD;    // Default API, from Gaia/localStorage.&#xD;    iterate: iterate$2,&#xD;    getItem: getItem$2,&#xD;    setItem: setItem$2,&#xD;    removeItem: removeItem$2,&#xD;    clear: clear$2,&#xD;    length: length$2,&#xD;    key: key$2,&#xD;    keys: keys$2&#xD;};&#xD;&#xD;// Custom drivers are stored here when `defineDriver()` is called.&#xD;// They are shared across all instances of localForage.&#xD;var CustomDrivers = {};&#xD;&#xD;var DriverType = {&#xD;    INDEXEDDB: &apos;asyncStorage&apos;,&#xD;    LOCALSTORAGE: &apos;localStorageWrapper&apos;,&#xD;    WEBSQL: &apos;webSQLStorage&apos;&#xD;};&#xD;&#xD;var DefaultDriverOrder = [DriverType.INDEXEDDB, DriverType.WEBSQL, DriverType.LOCALSTORAGE];&#xD;&#xD;var LibraryMethods = [&apos;clear&apos;, &apos;getItem&apos;, &apos;iterate&apos;, &apos;key&apos;, &apos;keys&apos;, &apos;length&apos;, &apos;removeItem&apos;, &apos;setItem&apos;];&#xD;&#xD;var DefaultConfig = {&#xD;    description: &apos;&apos;,&#xD;    driver: DefaultDriverOrder.slice(),&#xD;    name: &apos;localforage&apos;,&#xD;    // Default DB size is _JUST UNDER_ 5MB, as it&apos;s the highest size&#xD;    // we can use without a prompt.&#xD;    size: 4980736,&#xD;    storeName: &apos;keyvaluepairs&apos;,&#xD;    version: 1.0&#xD;};&#xD;&#xD;var driverSupport = {};&#xD;// Check to see if IndexedDB is available and if it is the latest&#xD;// implementation; it&apos;s our preferred backend library. We use "_spec_test"&#xD;// as the name of the database because it&apos;s not the one we&apos;ll operate on,&#xD;// but it&apos;s useful to make sure its using the right spec.&#xD;// See: https://github.com/mozilla/localForage/issues/128&#xD;driverSupport[DriverType.INDEXEDDB] = isIndexedDBValid();&#xD;&#xD;driverSupport[DriverType.WEBSQL] = isWebSQLValid();&#xD;&#xD;driverSupport[DriverType.LOCALSTORAGE] = isLocalStorageValid();&#xD;&#xD;var isArray = Array.isArray || function (arg) {&#xD;    return Object.prototype.toString.call(arg) === &apos;[object Array]&apos;;&#xD;};&#xD;&#xD;function callWhenReady(localForageInstance, libraryMethod) {&#xD;    localForageInstance[libraryMethod] = function () {&#xD;        var _args = arguments;&#xD;        return localForageInstance.ready().then(function () {&#xD;            return localForageInstance[libraryMethod].apply(localForageInstance, _args);&#xD;        });&#xD;    };&#xD;}&#xD;&#xD;function extend() {&#xD;    for (var i = 1; i &lt; arguments.length; i++) {&#xD;        var arg = arguments[i];&#xD;&#xD;        if (arg) {&#xD;            for (var key in arg) {&#xD;                if (arg.hasOwnProperty(key)) {&#xD;                    if (isArray(arg[key])) {&#xD;                        arguments[0][key] = arg[key].slice();&#xD;                    } else {&#xD;                        arguments[0][key] = arg[key];&#xD;                    }&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;&#xD;    return arguments[0];&#xD;}&#xD;&#xD;function isLibraryDriver(driverName) {&#xD;    for (var driver in DriverType) {&#xD;        if (DriverType.hasOwnProperty(driver) &amp;&amp; DriverType[driver] === driverName) {&#xD;            return true;&#xD;        }&#xD;    }&#xD;&#xD;    return false;&#xD;}&#xD;&#xD;var LocalForage = function () {&#xD;    function LocalForage(options) {&#xD;        _classCallCheck(this, LocalForage);&#xD;&#xD;        this.INDEXEDDB = DriverType.INDEXEDDB;&#xD;        this.LOCALSTORAGE = DriverType.LOCALSTORAGE;&#xD;        this.WEBSQL = DriverType.WEBSQL;&#xD;&#xD;        this._defaultConfig = extend({}, DefaultConfig);&#xD;        this._config = extend({}, this._defaultConfig, options);&#xD;        this._driverSet = null;&#xD;        this._initDriver = null;&#xD;        this._ready = false;&#xD;        this._dbInfo = null;&#xD;&#xD;        this._wrapLibraryMethodsWithReady();&#xD;        this.setDriver(this._config.driver)["catch"](function () {});&#xD;    }&#xD;&#xD;    // Set any config values for localForage; can be called anytime before&#xD;    // the first API call (e.g. `getItem`, `setItem`).&#xD;    // We loop through options so we don&apos;t overwrite existing config&#xD;    // values.&#xD;&#xD;&#xD;    LocalForage.prototype.config = function config(options) {&#xD;        // If the options argument is an object, we use it to set values.&#xD;        // Otherwise, we return either a specified config value or all&#xD;        // config values.&#xD;        if ((typeof options === &apos;undefined&apos; ? &apos;undefined&apos; : _typeof(options)) === &apos;object&apos;) {&#xD;            // If localforage is ready and fully initialized, we can&apos;t set&#xD;            // any new configuration values. Instead, we return an error.&#xD;            if (this._ready) {&#xD;                return new Error("Can&apos;t call config() after localforage " + &apos;has been used.&apos;);&#xD;            }&#xD;&#xD;            for (var i in options) {&#xD;                if (i === &apos;storeName&apos;) {&#xD;                    options[i] = options[i].replace(/\W/g, &apos;_&apos;);&#xD;                }&#xD;&#xD;                if (i === &apos;version&apos; &amp;&amp; typeof options[i] !== &apos;number&apos;) {&#xD;                    return new Error(&apos;Database version must be a number.&apos;);&#xD;                }&#xD;&#xD;                this._config[i] = options[i];&#xD;            }&#xD;&#xD;            // after all config options are set and&#xD;            // the driver option is used, try setting it&#xD;            if (&apos;driver&apos; in options &amp;&amp; options.driver) {&#xD;                return this.setDriver(this._config.driver);&#xD;            }&#xD;&#xD;            return true;&#xD;        } else if (typeof options === &apos;string&apos;) {&#xD;            return this._config[options];&#xD;        } else {&#xD;            return this._config;&#xD;        }&#xD;    };&#xD;&#xD;    // Used to define a custom driver, shared across all instances of&#xD;    // localForage.&#xD;&#xD;&#xD;    LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {&#xD;        var promise = new Promise$1(function (resolve, reject) {&#xD;            try {&#xD;                var driverName = driverObject._driver;&#xD;                var complianceError = new Error(&apos;Custom driver not compliant; see &apos; + &apos;https://mozilla.github.io/localForage/#definedriver&apos;);&#xD;                var namingError = new Error(&apos;Custom driver name already in use: &apos; + driverObject._driver);&#xD;&#xD;                // A driver name should be defined and not overlap with the&#xD;                // library-defined, default drivers.&#xD;                if (!driverObject._driver) {&#xD;                    reject(complianceError);&#xD;                    return;&#xD;                }&#xD;                if (isLibraryDriver(driverObject._driver)) {&#xD;                    reject(namingError);&#xD;                    return;&#xD;                }&#xD;&#xD;                var customDriverMethods = LibraryMethods.concat(&apos;_initStorage&apos;);&#xD;                for (var i = 0; i &lt; customDriverMethods.length; i++) {&#xD;                    var customDriverMethod = customDriverMethods[i];&#xD;                    if (!customDriverMethod || !driverObject[customDriverMethod] || typeof driverObject[customDriverMethod] !== &apos;function&apos;) {&#xD;                        reject(complianceError);&#xD;                        return;&#xD;                    }&#xD;                }&#xD;&#xD;                var supportPromise = Promise$1.resolve(true);&#xD;                if (&apos;_support&apos; in driverObject) {&#xD;                    if (driverObject._support &amp;&amp; typeof driverObject._support === &apos;function&apos;) {&#xD;                        supportPromise = driverObject._support();&#xD;                    } else {&#xD;                        supportPromise = Promise$1.resolve(!!driverObject._support);&#xD;                    }&#xD;                }&#xD;&#xD;                supportPromise.then(function (supportResult) {&#xD;                    driverSupport[driverName] = supportResult;&#xD;                    CustomDrivers[driverName] = driverObject;&#xD;                    resolve();&#xD;                }, reject);&#xD;            } catch (e) {&#xD;                reject(e);&#xD;            }&#xD;        });&#xD;&#xD;        executeTwoCallbacks(promise, callback, errorCallback);&#xD;        return promise;&#xD;    };&#xD;&#xD;    LocalForage.prototype.driver = function driver() {&#xD;        return this._driver || null;&#xD;    };&#xD;&#xD;    LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {&#xD;        var self = this;&#xD;        var getDriverPromise = Promise$1.resolve().then(function () {&#xD;            if (isLibraryDriver(driverName)) {&#xD;                switch (driverName) {&#xD;                    case self.INDEXEDDB:&#xD;                        return asyncStorage;&#xD;                    case self.LOCALSTORAGE:&#xD;                        return localStorageWrapper;&#xD;                    case self.WEBSQL:&#xD;                        return webSQLStorage;&#xD;                }&#xD;            } else if (CustomDrivers[driverName]) {&#xD;                return CustomDrivers[driverName];&#xD;            } else {&#xD;                throw new Error(&apos;Driver not found.&apos;);&#xD;            }&#xD;        });&#xD;        executeTwoCallbacks(getDriverPromise, callback, errorCallback);&#xD;        return getDriverPromise;&#xD;    };&#xD;&#xD;    LocalForage.prototype.getSerializer = function getSerializer(callback) {&#xD;        var serializerPromise = Promise$1.resolve(localforageSerializer);&#xD;        executeTwoCallbacks(serializerPromise, callback);&#xD;        return serializerPromise;&#xD;    };&#xD;&#xD;    LocalForage.prototype.ready = function ready(callback) {&#xD;        var self = this;&#xD;&#xD;        var promise = self._driverSet.then(function () {&#xD;            if (self._ready === null) {&#xD;                self._ready = self._initDriver();&#xD;            }&#xD;&#xD;            return self._ready;&#xD;        });&#xD;&#xD;        executeTwoCallbacks(promise, callback, callback);&#xD;        return promise;&#xD;    };&#xD;&#xD;    LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {&#xD;        var self = this;&#xD;&#xD;        if (!isArray(drivers)) {&#xD;            drivers = [drivers];&#xD;        }&#xD;&#xD;        var supportedDrivers = this._getSupportedDrivers(drivers);&#xD;&#xD;        function setDriverToConfig() {&#xD;            self._config.driver = self.driver();&#xD;        }&#xD;&#xD;        function extendSelfWithDriver(driver) {&#xD;            self._extend(driver);&#xD;            setDriverToConfig();&#xD;&#xD;            self._ready = self._initStorage(self._config);&#xD;            return self._ready;&#xD;        }&#xD;&#xD;        function initDriver(supportedDrivers) {&#xD;            return function () {&#xD;                var currentDriverIndex = 0;&#xD;&#xD;                function driverPromiseLoop() {&#xD;                    while (currentDriverIndex &lt; supportedDrivers.length) {&#xD;                        var driverName = supportedDrivers[currentDriverIndex];&#xD;                        currentDriverIndex++;&#xD;&#xD;                        self._dbInfo = null;&#xD;                        self._ready = null;&#xD;&#xD;                        return self.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);&#xD;                    }&#xD;&#xD;                    setDriverToConfig();&#xD;                    var error = new Error(&apos;No available storage method found.&apos;);&#xD;                    self._driverSet = Promise$1.reject(error);&#xD;                    return self._driverSet;&#xD;                }&#xD;&#xD;                return driverPromiseLoop();&#xD;            };&#xD;        }&#xD;&#xD;        // There might be a driver initialization in progress&#xD;        // so wait for it to finish in order to avoid a possible&#xD;        // race condition to set _dbInfo&#xD;        var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function () {&#xD;            return Promise$1.resolve();&#xD;        }) : Promise$1.resolve();&#xD;&#xD;        this._driverSet = oldDriverSetDone.then(function () {&#xD;            var driverName = supportedDrivers[0];&#xD;            self._dbInfo = null;&#xD;            self._ready = null;&#xD;&#xD;            return self.getDriver(driverName).then(function (driver) {&#xD;                self._driver = driver._driver;&#xD;                setDriverToConfig();&#xD;                self._wrapLibraryMethodsWithReady();&#xD;                self._initDriver = initDriver(supportedDrivers);&#xD;            });&#xD;        })["catch"](function () {&#xD;            setDriverToConfig();&#xD;            var error = new Error(&apos;No available storage method found.&apos;);&#xD;            self._driverSet = Promise$1.reject(error);&#xD;            return self._driverSet;&#xD;        });&#xD;&#xD;        executeTwoCallbacks(this._driverSet, callback, errorCallback);&#xD;        return this._driverSet;&#xD;    };&#xD;&#xD;    LocalForage.prototype.supports = function supports(driverName) {&#xD;        return !!driverSupport[driverName];&#xD;    };&#xD;&#xD;    LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {&#xD;        extend(this, libraryMethodsAndProperties);&#xD;    };&#xD;&#xD;    LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {&#xD;        var supportedDrivers = [];&#xD;        for (var i = 0, len = drivers.length; i &lt; len; i++) {&#xD;            var driverName = drivers[i];&#xD;            if (this.supports(driverName)) {&#xD;                supportedDrivers.push(driverName);&#xD;            }&#xD;        }&#xD;        return supportedDrivers;&#xD;    };&#xD;&#xD;    LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {&#xD;        // Add a stub for each driver API method that delays the call to the&#xD;        // corresponding driver method until localForage is ready. These stubs&#xD;        // will be replaced by the driver methods as soon as the driver is&#xD;        // loaded, so there is no performance impact.&#xD;        for (var i = 0; i &lt; LibraryMethods.length; i++) {&#xD;            callWhenReady(this, LibraryMethods[i]);&#xD;        }&#xD;    };&#xD;&#xD;    LocalForage.prototype.createInstance = function createInstance(options) {&#xD;        return new LocalForage(options);&#xD;    };&#xD;&#xD;    return LocalForage;&#xD;}();&#xD;&#xD;// The actual localForage object that we expose as a module or via a&#xD;// global. It&apos;s extended by pulling in one of our other libraries.&#xD;&#xD;&#xD;var localforage_js = new LocalForage();&#xD;&#xD;module.exports = localforage_js;&#xD;&#xD;},{"3":3}]},{},[4])(4)&#xD;});&#xD;&#xD;/***/ }),&#xD;/* 56 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// This is free and unencumbered software released into the public domain.&#xD;// See LICENSE.md for more information.&#xD;&#xD;var encoding = __webpack_require__(58);&#xD;&#xD;module.exports = {&#xD;  TextEncoder: encoding.TextEncoder,&#xD;  TextDecoder: encoding.TextDecoder,&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 57 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;(function(global) {&#xD;  &apos;use strict&apos;;&#xD;&#xD;  if (typeof module !== "undefined" &amp;&amp; module.exports) {&#xD;    module.exports = global;&#xD;  }&#xD;&#xD;  global["encoding-indexes"] =&#xD;{&#xD;  "big5":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,17392,19506,17923,17830,17784,160359,19831,17843,162993,19682,163013,15253,18230,18244,19527,19520,148159,144919,160594,159371,159954,19543,172881,18255,17882,19589,162924,19719,19108,18081,158499,29221,154196,137827,146950,147297,26189,22267,null,32149,22813,166841,15860,38708,162799,23515,138590,23204,13861,171696,23249,23479,23804,26478,34195,170309,29793,29853,14453,138579,145054,155681,16108,153822,15093,31484,40855,147809,166157,143850,133770,143966,17162,33924,40854,37935,18736,34323,22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071,36934,13542,29636,155065,29894,40903,22451,18735,21580,16689,145038,22552,31346,162661,35727,18094,159368,16769,155033,31662,140476,40904,140481,140489,140492,40905,34052,144827,16564,40906,17633,175615,25281,28782,40907,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,12736,12737,12738,12739,12740,131340,12741,131281,131277,12742,12743,131275,139240,12744,131274,12745,12746,12747,12748,131342,12749,12750,256,193,461,192,274,201,282,200,332,211,465,210,null,7870,null,7872,202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,null,7871,null,7873,234,609,9178,9179,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,172969,135493,null,25866,null,null,20029,28381,40270,37343,null,null,161589,25745,20250,20264,20392,20822,20852,20892,20964,21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,36711,36718,29713,31996,32205,26950,31433,21031,null,null,null,null,37260,30904,37214,32956,null,36107,33014,133607,null,null,32927,40647,19661,40393,40460,19518,171510,159758,40458,172339,13761,null,28314,33342,29977,null,18705,39532,39567,40857,31111,164972,138698,132560,142054,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,163204,21797,null,134210,134421,151851,21904,142534,14828,131905,36422,150968,169189,16467,164030,30586,142392,14900,18389,164189,158194,151018,25821,134524,135092,134357,135412,25741,36478,134806,134155,135012,142505,164438,148691,null,134470,170573,164073,18420,151207,142530,39602,14951,169460,16365,13574,152263,169940,161992,142660,40302,38933,null,17369,155813,25780,21731,142668,142282,135287,14843,135279,157402,157462,162208,25834,151634,134211,36456,139681,166732,132913,null,18443,131497,16378,22643,142733,null,148936,132348,155799,134988,134550,21881,16571,17338,null,19124,141926,135325,33194,39157,134556,25465,14846,141173,36288,22177,25724,15939,null,173569,134665,142031,142537,null,135368,145858,14738,14854,164507,13688,155209,139463,22098,134961,142514,169760,13500,27709,151099,null,null,161140,142987,139784,173659,167117,134778,134196,157724,32659,135375,141315,141625,13819,152035,134796,135053,134826,16275,134960,134471,135503,134732,null,134827,134057,134472,135360,135485,16377,140950,25650,135085,144372,161337,142286,134526,134527,142417,142421,14872,134808,135367,134958,173618,158544,167122,167321,167114,38314,21708,33476,21945,null,171715,39974,39606,161630,142830,28992,33133,33004,23580,157042,33076,14231,21343,164029,37302,134906,134671,134775,134907,13789,151019,13833,134358,22191,141237,135369,134672,134776,135288,135496,164359,136277,134777,151120,142756,23124,135197,135198,135413,135414,22428,134673,161428,164557,135093,134779,151934,14083,135094,135552,152280,172733,149978,137274,147831,164476,22681,21096,13850,153405,31666,23400,18432,19244,40743,18919,39967,39821,154484,143677,22011,13810,22153,20008,22786,138177,194680,38737,131206,20059,20155,13630,23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357,149737,32594,31035,31993,32595,156266,13505,null,156491,32770,32896,157202,158033,21341,34916,35265,161970,35744,36125,38021,38264,38271,38376,167439,38886,39029,39118,39134,39267,170000,40060,40479,40644,27503,63751,20023,131207,38429,25143,38050,null,20539,28158,171123,40870,15817,34959,147790,28791,23797,19232,152013,13657,154928,24866,166450,36775,37366,29073,26393,29626,144001,172295,15499,137600,19216,30948,29698,20910,165647,16393,27235,172730,16931,34319,133743,31274,170311,166634,38741,28749,21284,139390,37876,30425,166371,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674,22736,138678,24210,24217,24514,141074,25995,144377,26905,27203,146531,27903,null,29184,148741,29580,16091,150035,23317,29881,35715,154788,153237,31379,31724,31939,32364,33528,34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,167353,136255,16497,17058,23066,null,null,null,39016,26475,17014,22333,null,34262,149883,33471,160013,19585,159092,23931,158485,159678,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,143958,141206,17306,17718,null,23765,146202,35577,23672,15634,144721,23928,40882,29015,17752,147692,138787,19575,14712,13386,131492,158785,35532,20404,131641,22975,33132,38998,170234,24379,134047,null,139713,166253,16642,18107,168057,16135,40883,172469,16632,14294,18167,158790,16764,165554,160767,17773,14548,152730,17761,17691,19849,19579,19830,17898,16328,150287,13921,17630,17597,16877,23870,23880,23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184,28201,28294,166336,28347,28386,28378,40831,28392,28393,28452,28468,15686,147265,28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799,28809,131877,17345,13809,134872,147159,22462,159443,28990,153568,13902,27042,166889,23412,31305,153825,169177,31333,31357,154028,31419,31408,31426,31427,29137,156813,16842,31450,31453,31466,16879,21682,154625,31499,31573,31529,152334,154878,31650,31599,33692,154548,158847,31696,33825,31634,31672,154912,15789,154725,33938,31738,31750,31797,154817,31812,31875,149634,31910,26237,148856,31945,31943,31974,31860,31987,31989,31950,32359,17693,159300,32093,159446,29837,32137,32171,28981,32179,32210,147543,155689,32228,15635,32245,137209,32229,164717,32285,155937,155994,32366,32402,17195,37996,32295,32576,32577,32583,31030,156368,39393,32663,156497,32675,136801,131176,17756,145254,17667,164666,32762,156809,32773,32776,32797,32808,32815,172167,158915,32827,32828,32865,141076,18825,157222,146915,157416,26405,32935,166472,33031,33050,22704,141046,27775,156824,151480,25831,136330,33304,137310,27219,150117,150165,17530,33321,133901,158290,146814,20473,136445,34018,33634,158474,149927,144688,137075,146936,33450,26907,194964,16859,34123,33488,33562,134678,137140,14017,143741,144730,33403,33506,33560,147083,159139,158469,158615,144846,15807,33565,21996,33669,17675,159141,33708,33729,33747,13438,159444,27223,34138,13462,159298,143087,33880,154596,33905,15827,17636,27303,33866,146613,31064,33960,158614,159351,159299,34014,33807,33681,17568,33939,34020,154769,16960,154816,17731,34100,23282,159385,17703,34163,17686,26559,34326,165413,165435,34241,159880,34306,136578,159949,194994,17770,34344,13896,137378,21495,160666,34430,34673,172280,34798,142375,34737,34778,34831,22113,34412,26710,17935,34885,34886,161248,146873,161252,34910,34972,18011,34996,34997,25537,35013,30583,161551,35207,35210,35238,35241,35239,35260,166437,35303,162084,162493,35484,30611,37374,35472,162393,31465,162618,147343,18195,162616,29052,35596,35615,152624,152933,35647,35660,35661,35497,150138,35728,35739,35503,136927,17941,34895,35995,163156,163215,195028,14117,163155,36054,163224,163261,36114,36099,137488,36059,28764,36113,150729,16080,36215,36265,163842,135188,149898,15228,164284,160012,31463,36525,36534,36547,37588,36633,36653,164709,164882,36773,37635,172703,133712,36787,18730,166366,165181,146875,24312,143970,36857,172052,165564,165121,140069,14720,159447,36919,165180,162494,36961,165228,165387,37032,165651,37060,165606,37038,37117,37223,15088,37289,37316,31916,166195,138889,37390,27807,37441,37474,153017,37561,166598,146587,166668,153051,134449,37676,37739,166625,166891,28815,23235,166626,166629,18789,37444,166892,166969,166911,37747,37979,36540,38277,38310,37926,38304,28662,17081,140922,165592,135804,146990,18911,27676,38523,38550,16748,38563,159445,25050,38582,30965,166624,38589,21452,18849,158904,131700,156688,168111,168165,150225,137493,144138,38705,34370,38710,18959,17725,17797,150249,28789,23361,38683,38748,168405,38743,23370,168427,38751,37925,20688,143543,143548,38793,38815,38833,38846,38848,38866,38880,152684,38894,29724,169011,38911,38901,168989,162170,19153,38964,38963,38987,39014,15118,160117,15697,132656,147804,153350,39114,39095,39112,39111,19199,159015,136915,21936,39137,39142,39148,37752,39225,150057,19314,170071,170245,39413,39436,39483,39440,39512,153381,14020,168113,170965,39648,39650,170757,39668,19470,39700,39725,165376,20532,39732,158120,14531,143485,39760,39744,171326,23109,137315,39822,148043,39938,39935,39948,171624,40404,171959,172434,172459,172257,172323,172511,40318,40323,172340,40462,26760,40388,139611,172435,172576,137531,172595,40249,172217,172724,40592,40597,40606,40610,19764,40618,40623,148324,40641,15200,14821,15645,20274,14270,166955,40706,40712,19350,37924,159138,40727,40726,40761,22175,22154,40773,39352,168075,38898,33919,40802,40809,31452,40846,29206,19390,149877,149947,29047,150008,148296,150097,29598,166874,137466,31135,166270,167478,37737,37875,166468,37612,37761,37835,166252,148665,29207,16107,30578,31299,28880,148595,148472,29054,137199,28835,137406,144793,16071,137349,152623,137208,14114,136955,137273,14049,137076,137425,155467,14115,136896,22363,150053,136190,135848,136134,136374,34051,145062,34051,33877,149908,160101,146993,152924,147195,159826,17652,145134,170397,159526,26617,14131,15381,15847,22636,137506,26640,16471,145215,147681,147595,147727,158753,21707,22174,157361,22162,135135,134056,134669,37830,166675,37788,20216,20779,14361,148534,20156,132197,131967,20299,20362,153169,23144,131499,132043,14745,131850,132116,13365,20265,131776,167603,131701,35546,131596,20120,20685,20749,20386,20227,150030,147082,20290,20526,20588,20609,20428,20453,20568,20732,20825,20827,20829,20830,28278,144789,147001,147135,28018,137348,147081,20904,20931,132576,17629,132259,132242,132241,36218,166556,132878,21081,21156,133235,21217,37742,18042,29068,148364,134176,149932,135396,27089,134685,29817,16094,29849,29716,29782,29592,19342,150204,147597,21456,13700,29199,147657,21940,131909,21709,134086,22301,37469,38644,37734,22493,22413,22399,13886,22731,23193,166470,136954,137071,136976,23084,22968,37519,23166,23247,23058,153926,137715,137313,148117,14069,27909,29763,23073,155267,23169,166871,132115,37856,29836,135939,28933,18802,37896,166395,37821,14240,23582,23710,24158,24136,137622,137596,146158,24269,23375,137475,137476,14081,137376,14045,136958,14035,33066,166471,138682,144498,166312,24332,24334,137511,137131,23147,137019,23364,34324,161277,34912,24702,141408,140843,24539,16056,140719,140734,168072,159603,25024,131134,131142,140827,24985,24984,24693,142491,142599,149204,168269,25713,149093,142186,14889,142114,144464,170218,142968,25399,173147,25782,25393,25553,149987,142695,25252,142497,25659,25963,26994,15348,143502,144045,149897,144043,21773,144096,137433,169023,26318,144009,143795,15072,16784,152964,166690,152975,136956,152923,152613,30958,143619,137258,143924,13412,143887,143746,148169,26254,159012,26219,19347,26160,161904,138731,26211,144082,144097,26142,153714,14545,145466,145340,15257,145314,144382,29904,15254,26511,149034,26806,26654,15300,27326,14435,145365,148615,27187,27218,27337,27397,137490,25873,26776,27212,15319,27258,27479,147392,146586,37792,37618,166890,166603,37513,163870,166364,37991,28069,28427,149996,28007,147327,15759,28164,147516,23101,28170,22599,27940,30786,28987,148250,148086,28913,29264,29319,29332,149391,149285,20857,150180,132587,29818,147192,144991,150090,149783,155617,16134,16049,150239,166947,147253,24743,16115,29900,29756,37767,29751,17567,159210,17745,30083,16227,150745,150790,16216,30037,30323,173510,15129,29800,166604,149931,149902,15099,15821,150094,16127,149957,149747,37370,22322,37698,166627,137316,20703,152097,152039,30584,143922,30478,30479,30587,149143,145281,14942,149744,29752,29851,16063,150202,150215,16584,150166,156078,37639,152961,30750,30861,30856,30930,29648,31065,161601,153315,16654,31131,33942,31141,27181,147194,31290,31220,16750,136934,16690,37429,31217,134476,149900,131737,146874,137070,13719,21867,13680,13994,131540,134157,31458,23129,141045,154287,154268,23053,131675,30960,23082,154566,31486,16889,31837,31853,16913,154547,155324,155302,31949,150009,137136,31886,31868,31918,27314,32220,32263,32211,32590,156257,155996,162632,32151,155266,17002,158581,133398,26582,131150,144847,22468,156690,156664,149858,32733,31527,133164,154345,154947,31500,155150,39398,34373,39523,27164,144447,14818,150007,157101,39455,157088,33920,160039,158929,17642,33079,17410,32966,33033,33090,157620,39107,158274,33378,33381,158289,33875,159143,34320,160283,23174,16767,137280,23339,137377,23268,137432,34464,195004,146831,34861,160802,23042,34926,20293,34951,35007,35046,35173,35149,153219,35156,161669,161668,166901,166873,166812,166393,16045,33955,18165,18127,14322,35389,35356,169032,24397,37419,148100,26068,28969,28868,137285,40301,35999,36073,163292,22938,30659,23024,17262,14036,36394,36519,150537,36656,36682,17140,27736,28603,140065,18587,28537,28299,137178,39913,14005,149807,37051,37015,21873,18694,37307,37892,166475,16482,166652,37927,166941,166971,34021,35371,38297,38311,38295,38294,167220,29765,16066,149759,150082,148458,16103,143909,38543,167655,167526,167525,16076,149997,150136,147438,29714,29803,16124,38721,168112,26695,18973,168083,153567,38749,37736,166281,166950,166703,156606,37562,23313,35689,18748,29689,147995,38811,38769,39224,134950,24001,166853,150194,38943,169178,37622,169431,37349,17600,166736,150119,166756,39132,166469,16128,37418,18725,33812,39227,39245,162566,15869,39323,19311,39338,39516,166757,153800,27279,39457,23294,39471,170225,19344,170312,39356,19389,19351,37757,22642,135938,22562,149944,136424,30788,141087,146872,26821,15741,37976,14631,24912,141185,141675,24839,40015,40019,40059,39989,39952,39807,39887,171565,39839,172533,172286,40225,19630,147716,40472,19632,40204,172468,172269,172275,170287,40357,33981,159250,159711,158594,34300,17715,159140,159364,159216,33824,34286,159232,145367,155748,31202,144796,144960,18733,149982,15714,37851,37566,37704,131775,30905,37495,37965,20452,13376,36964,152925,30781,30804,30902,30795,137047,143817,149825,13978,20338,28634,28633,28702,28702,21524,147893,22459,22771,22410,40214,22487,28980,13487,147884,29163,158784,151447,23336,137141,166473,24844,23246,23051,17084,148616,14124,19323,166396,37819,37816,137430,134941,33906,158912,136211,148218,142374,148417,22932,146871,157505,32168,155995,155812,149945,149899,166394,37605,29666,16105,29876,166755,137375,16097,150195,27352,29683,29691,16086,150078,150164,137177,150118,132007,136228,149989,29768,149782,28837,149878,37508,29670,37727,132350,37681,166606,166422,37766,166887,153045,18741,166530,29035,149827,134399,22180,132634,134123,134328,21762,31172,137210,32254,136898,150096,137298,17710,37889,14090,166592,149933,22960,137407,137347,160900,23201,14050,146779,14000,37471,23161,166529,137314,37748,15565,133812,19094,14730,20724,15721,15692,136092,29045,17147,164376,28175,168164,17643,27991,163407,28775,27823,15574,147437,146989,28162,28428,15727,132085,30033,14012,13512,18048,16090,18545,22980,37486,18750,36673,166940,158656,22546,22472,14038,136274,28926,148322,150129,143331,135856,140221,26809,26983,136088,144613,162804,145119,166531,145366,144378,150687,27162,145069,158903,33854,17631,17614,159014,159057,158850,159710,28439,160009,33597,137018,33773,158848,159827,137179,22921,23170,137139,23137,23153,137477,147964,14125,23023,137020,14023,29070,37776,26266,148133,23150,23083,148115,27179,147193,161590,148571,148170,28957,148057,166369,20400,159016,23746,148686,163405,148413,27148,148054,135940,28838,28979,148457,15781,27871,194597,150095,32357,23019,23855,15859,24412,150109,137183,32164,33830,21637,146170,144128,131604,22398,133333,132633,16357,139166,172726,28675,168283,23920,29583,31955,166489,168992,20424,32743,29389,29456,162548,29496,29497,153334,29505,29512,16041,162584,36972,29173,149746,29665,33270,16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,151388,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,30801,30822,33864,152885,31027,26627,31026,16643,16649,31121,31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,134351,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156,17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,34990,35071,35108,35143,35217,162151,35369,35384,35476,35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,19565,39968,14191,138178,40265,39994,40702,22096,40339,40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,131220,131767,132000,26906,38083,22956,132311,22592,38081,14265,132565,132629,132726,136890,22359,29043,133826,133837,134079,21610,194619,134091,21662,134139,134203,134227,134245,134268,24807,134285,22138,134325,134365,134381,134511,134578,134600,26965,39983,34725,134660,134670,134871,135056,134957,134771,23584,135100,24075,135260,135247,135286,26398,135291,135304,135318,13895,135359,135379,135471,135483,21348,33965,135907,136053,135990,35713,136567,136729,137155,137159,20088,28859,137261,137578,137773,137797,138282,138352,138412,138952,25283,138965,139029,29080,26709,139333,27113,14024,139900,140247,140282,141098,141425,141647,33533,141671,141715,142037,35237,142056,36768,142094,38840,142143,38983,39613,142412,null,142472,142519,154600,142600,142610,142775,142741,142914,143220,143308,143411,143462,144159,144350,24497,26184,26303,162425,144743,144883,29185,149946,30679,144922,145174,32391,131910,22709,26382,26904,146087,161367,155618,146961,147129,161278,139418,18640,19128,147737,166554,148206,148237,147515,148276,148374,150085,132554,20946,132625,22943,138920,15294,146687,148484,148694,22408,149108,14747,149295,165352,170441,14178,139715,35678,166734,39382,149522,149755,150037,29193,150208,134264,22885,151205,151430,132985,36570,151596,21135,22335,29041,152217,152601,147274,150183,21948,152646,152686,158546,37332,13427,152895,161330,152926,18200,152930,152934,153543,149823,153693,20582,13563,144332,24798,153859,18300,166216,154286,154505,154630,138640,22433,29009,28598,155906,162834,36950,156082,151450,35682,156674,156746,23899,158711,36662,156804,137500,35562,150006,156808,147439,156946,19392,157119,157365,141083,37989,153569,24981,23079,194765,20411,22201,148769,157436,20074,149812,38486,28047,158909,13848,35191,157593,157806,156689,157790,29151,157895,31554,168128,133649,157990,37124,158009,31301,40432,158202,39462,158253,13919,156777,131105,31107,158260,158555,23852,144665,33743,158621,18128,158884,30011,34917,159150,22710,14108,140685,159819,160205,15444,160384,160389,37505,139642,160395,37680,160486,149968,27705,38047,160848,134904,34855,35061,141606,164979,137137,28344,150058,137248,14756,14009,23568,31203,17727,26294,171181,170148,35139,161740,161880,22230,16607,136714,14753,145199,164072,136133,29101,33638,162269,168360,23143,19639,159919,166315,162301,162314,162571,163174,147834,31555,31102,163849,28597,172767,27139,164632,21410,159239,37823,26678,38749,164207,163875,158133,136173,143919,163912,23941,166960,163971,22293,38947,166217,23979,149896,26046,27093,21458,150181,147329,15377,26422,163984,164084,164142,139169,164175,164233,164271,164378,164614,164655,164746,13770,164968,165546,18682,25574,166230,30728,37461,166328,17394,166375,17375,166376,166726,166868,23032,166921,36619,167877,168172,31569,168208,168252,15863,168286,150218,36816,29327,22155,169191,169449,169392,169400,169778,170193,170313,170346,170435,170536,170766,171354,171419,32415,171768,171811,19620,38215,172691,29090,172799,19857,36882,173515,19868,134300,36798,21953,36794,140464,36793,150163,17673,32383,28502,27313,20202,13540,166700,161949,14138,36480,137205,163876,166764,166809,162366,157359,15851,161365,146615,153141,153942,20122,155265,156248,22207,134765,36366,23405,147080,150686,25566,25296,137206,137339,25904,22061,154698,21530,152337,15814,171416,19581,22050,22046,32585,155352,22901,146752,34672,19996,135146,134473,145082,33047,40286,36120,30267,40005,30286,30649,37701,21554,33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,134813,13774,22021,22001,26353,164578,13869,30004,22000,21946,21655,21874,134209,134294,24272,151880,134774,142434,134818,40619,32090,21982,135285,25245,38765,21652,36045,29174,37238,25596,25529,25598,21865,142147,40050,143027,20890,13535,134567,20903,21581,21790,21779,30310,36397,157834,30129,32950,34820,34694,35015,33206,33820,135361,17644,29444,149254,23440,33547,157843,22139,141044,163119,147875,163187,159440,160438,37232,135641,37384,146684,173737,134828,134905,29286,138402,18254,151490,163833,135147,16634,40029,25887,142752,18675,149472,171388,135148,134666,24674,161187,135149,null,155720,135559,29091,32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,149016,22682,150382,33325,21579,22442,154261,133497,null,14930,140389,29556,171692,19721,39917,146686,171824,19547,151465,169374,171998,33884,146870,160434,157619,145184,25390,32037,147191,146988,14890,36872,21196,15988,13946,17897,132238,30272,23280,134838,30842,163630,22695,16575,22140,39819,23924,30292,173108,40581,19681,30201,14331,24857,143578,148466,null,22109,135849,22439,149859,171526,21044,159918,13741,27722,40316,31830,39737,22494,137068,23635,25811,169168,156469,160100,34477,134440,159010,150242,134513,null,20990,139023,23950,38659,138705,40577,36940,31519,39682,23761,31651,25192,25397,39679,31695,39722,31870,39726,31810,31878,39957,31740,39689,40727,39963,149822,40794,21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856,40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515,38465,27008,20646,30022,137069,39386,21107,null,37209,38529,37212,null,37201,167575,25471,159011,27338,22033,37262,30074,25221,132092,29519,31856,154657,146685,null,149785,30422,39837,20010,134356,33726,34882,null,23626,27072,20717,22394,21023,24053,20174,27697,131570,20281,21660,21722,21146,36226,13822,24332,13811,null,27474,37244,40869,39831,38958,39092,39610,40616,40580,29050,31508,null,27642,34840,32632,null,22048,173642,36471,40787,null,36308,36431,40476,36353,25218,164733,36392,36469,31443,150135,31294,30936,27882,35431,30215,166490,40742,27854,34774,30147,172722,30803,194624,36108,29410,29553,35629,29442,29937,36075,150203,34351,24506,34976,17591,null,137275,159237,null,35454,140571,null,24829,30311,39639,40260,37742,39823,34805,null,34831,36087,29484,38689,39856,13782,29362,19463,31825,39242,155993,24921,19460,40598,24957,null,22367,24943,25254,25145,25294,14940,25058,21418,144373,25444,26626,13778,23895,166850,36826,167481,null,20697,138566,30982,21298,38456,134971,16485,null,30718,null,31938,155418,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,160902,32859,29936,33027,30500,35209,157644,30035,159441,34729,34766,33224,34700,35401,36013,35651,30507,29944,34010,13877,27058,36262,null,35241,29800,28089,34753,147473,29927,15835,29046,24740,24988,15569,29026,24695,null,32625,166701,29264,24809,19326,21024,15384,146631,155351,161366,152881,137540,135934,170243,159196,159917,23745,156077,166415,145015,131310,157766,151310,17762,23327,156492,40784,40614,156267,12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229,65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116,65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735,8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594,8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504,65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,12321,12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19968,20057,19969,19971,20035,20061,20102,20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448,19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,20800,20995,21242,21315,21449,21475,22303,22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981,20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844,20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317,21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903,25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604,27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993,19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182,20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984,21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321,24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410,26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577,29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382,30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051,20073,20121,20132,20134,20133,20223,20233,20249,20234,20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014,21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909,22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030,24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179,25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421,27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739,27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769,32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292,33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136,20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032,21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282,35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448,24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288,25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303,25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515,26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825,27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105,30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354,31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691,21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,27946,27969,27941,27916,27953,27934,27927,27963,27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947,28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408,30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359,31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654,32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993,32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330,35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318,39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486,20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941,20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729,21769,21742,21738,21734,21799,21767,21757,21775,22275,22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421,25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140,30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697,30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946,34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493,38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602,20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248,24246,24245,24254,24373,24375,24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164,30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207,37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958,25954,25955,26001,26000,26031,26222,26224,26228,26230,26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953,28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736,29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332,30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,29014,29242,29266,29495,29509,29503,29502,29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208,30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566,30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871,30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681,32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443,35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647,38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164,39156,39165,39166,39347,39345,39348,39649,40169,40578,40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525,23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931,24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451,28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249,36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509,37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309,38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087,39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182,40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741,20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707,22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283,26292,26289,27171,27167,27112,27137,27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590,28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244,30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071,34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047,34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663,38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283,32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193,33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157,34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105,35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586,35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568,38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960,38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160,22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987,26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882,32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652,30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,40748,20787,22181,22750,22751,22754,23541,40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354,27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371,32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662,35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853,37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184,22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381,32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,28748,29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712,38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186,35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424,24027,12083,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168,710,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,65339,65341,10045,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,131276,20058,131210,20994,17553,40880,20872,40881,161287,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998,12003,null,null,null,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274,21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063,26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186,21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667,24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,32917,32921,32912,32914,32924,33424,33423,33413,33422,33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342,20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043,21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990,22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614,24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295,25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363,25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561,26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571,27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258,29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472,30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725,30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872,31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823,32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,33428,33497,33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522,33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527,20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074,21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752,21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085,23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,26702,26692,26676,26653,26642,26644,26662,26664,26670,26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050,27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055,28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303,29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672,29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489,30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200,31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367,31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,33607,33605,33612,33619,33566,33580,33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884,34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087,37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492,38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858,21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714,24720,24710,24766,24752,24762,24787,24788,24783,24804,24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156,30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525,30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380,31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062,32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720,32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393,34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364,37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,21902,22284,22569,22583,22553,22558,22567,22563,22568,22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240,26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214,28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739,29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820,30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556,31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022,32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272,33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798,33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,35000,35008,35006,34998,35004,34999,35005,34994,35073,35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415,35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595,38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665,25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944,26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013,27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308,28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774,29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841,30873,30848,30870,30843,31100,31106,31101,31097,31249,31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678,32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138,26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450,35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241,36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137,37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915,24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702,25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,27031,27024,27074,27061,27045,27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475,28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198,32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991,33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007,25005,24991,24978,25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537,29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817,29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364,30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742,32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041,34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675,34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268,38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,39382,39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717,22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294,24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018,25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299,26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559,27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126,29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,30621,30625,30620,30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268,32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366,33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692,34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113,35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663,36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342,23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056,25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551,29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967,30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644,30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759,31730,31744,31743,31739,31758,31732,31755,31731,31746,31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247,35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735,37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,39421,39422,39420,39427,39614,39678,39677,39681,39676,39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254,40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374,34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439,36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680,36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579,38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096,39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430,39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789,21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802,23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705,28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349,29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660,30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878,38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,26079,26344,26339,26340,27379,27376,27370,27368,27385,27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378,30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017,31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305,34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839,34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187,37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703,38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257,39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000,39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206,23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739,28740,28746,28744,28745,28741,28742,29213,29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707,36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951,37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738,39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371,23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757,28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381,31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591,32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963,37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259,39502,39507,39508,39500,39503,39496,39498,39497,39506,39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594,28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024,40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424,40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817,40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769,28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309,37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448,40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902,26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851,31990,32410,32408,32411,32409,33248,33249,34374,34375,34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053,40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528,39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777,28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,9584,9583,65517,132423,37595,132575,147397,34124,17077,29679,20917,13897,149826,166372,37700,137691,33518,146632,30780,26436,25311,149811,166314,131744,158643,135941,20395,140525,20488,159017,162436,144896,150193,140563,20521,131966,24484,131968,131911,28379,132127,20605,20737,13434,20750,39020,14147,33814,149924,132231,20832,144308,20842,134143,139516,131813,140592,132494,143923,137603,23426,34685,132531,146585,20914,20920,40244,20937,20943,20945,15580,20947,150182,20915,20962,21314,20973,33741,26942,145197,24443,21003,21030,21052,21173,21079,21140,21177,21189,31765,34114,21216,34317,158483,21253,166622,21833,28377,147328,133460,147436,21299,21316,134114,27851,136998,26651,29653,24650,16042,14540,136936,29149,17570,21357,21364,165547,21374,21375,136598,136723,30694,21395,166555,21408,21419,21422,29607,153458,16217,29596,21441,21445,27721,20041,22526,21465,15019,134031,21472,147435,142755,21494,134263,21523,28793,21803,26199,27995,21613,158547,134516,21853,21647,21668,18342,136973,134877,15796,134477,166332,140952,21831,19693,21551,29719,21894,21929,22021,137431,147514,17746,148533,26291,135348,22071,26317,144010,26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,166758,13859,135759,22342,147877,27758,28811,22338,14001,158846,22502,136214,22531,136276,148323,22566,150517,22620,22698,13665,22752,22748,135740,22779,23551,22339,172368,148088,37843,13729,22815,26790,14019,28249,136766,23076,21843,136850,34053,22985,134478,158849,159018,137180,23001,137211,137138,159142,28017,137256,136917,23033,159301,23211,23139,14054,149929,23159,14088,23190,29797,23251,159649,140628,15749,137489,14130,136888,24195,21200,23414,25992,23420,162318,16388,18525,131588,23509,24928,137780,154060,132517,23539,23453,19728,23557,138052,23571,29646,23572,138405,158504,23625,18653,23685,23785,23791,23947,138745,138807,23824,23832,23878,138916,23738,24023,33532,14381,149761,139337,139635,33415,14390,15298,24110,27274,24181,24186,148668,134355,21414,20151,24272,21416,137073,24073,24308,164994,24313,24315,14496,24316,26686,37915,24333,131521,194708,15070,18606,135994,24378,157832,140240,24408,140401,24419,38845,159342,24434,37696,166454,24487,23990,15711,152144,139114,159992,140904,37334,131742,166441,24625,26245,137335,14691,15815,13881,22416,141236,31089,15936,24734,24740,24755,149890,149903,162387,29860,20705,23200,24932,33828,24898,194726,159442,24961,20980,132694,24967,23466,147383,141407,25043,166813,170333,25040,14642,141696,141505,24611,24924,25886,25483,131352,25285,137072,25301,142861,25452,149983,14871,25656,25592,136078,137212,25744,28554,142902,38932,147596,153373,25825,25829,38011,14950,25658,14935,25933,28438,150056,150051,25989,25965,25951,143486,26037,149824,19255,26065,16600,137257,26080,26083,24543,144384,26136,143863,143864,26180,143780,143781,26187,134773,26215,152038,26227,26228,138813,143921,165364,143816,152339,30661,141559,39332,26370,148380,150049,15147,27130,145346,26462,26471,26466,147917,168173,26583,17641,26658,28240,37436,26625,144358,159136,26717,144495,27105,27147,166623,26995,26819,144845,26881,26880,15666,14849,144956,15232,26540,26977,166474,17148,26934,27032,15265,132041,33635,20624,27129,144985,139562,27205,145155,27293,15347,26545,27336,168348,15373,27421,133411,24798,27445,27508,141261,28341,146139,132021,137560,14144,21537,146266,27617,147196,27612,27703,140427,149745,158545,27738,33318,27769,146876,17605,146877,147876,149772,149760,146633,14053,15595,134450,39811,143865,140433,32655,26679,159013,159137,159211,28054,27996,28284,28420,149887,147589,159346,34099,159604,20935,27804,28189,33838,166689,28207,146991,29779,147330,31180,28239,23185,143435,28664,14093,28573,146992,28410,136343,147517,17749,37872,28484,28508,15694,28532,168304,15675,28575,147780,28627,147601,147797,147513,147440,147380,147775,20959,147798,147799,147776,156125,28747,28798,28839,28801,28876,28885,28886,28895,16644,15848,29108,29078,148087,28971,28997,23176,29002,29038,23708,148325,29007,37730,148161,28972,148570,150055,150050,29114,166888,28861,29198,37954,29205,22801,37955,29220,37697,153093,29230,29248,149876,26813,29269,29271,15957,143428,26637,28477,29314,29482,29483,149539,165931,18669,165892,29480,29486,29647,29610,134202,158254,29641,29769,147938,136935,150052,26147,14021,149943,149901,150011,29687,29717,26883,150054,29753,132547,16087,29788,141485,29792,167602,29767,29668,29814,33721,29804,14128,29812,37873,27180,29826,18771,150156,147807,150137,166799,23366,166915,137374,29896,137608,29966,29929,29982,167641,137803,23511,167596,37765,30029,30026,30055,30062,151426,16132,150803,30094,29789,30110,30132,30210,30252,30289,30287,30319,30326,156661,30352,33263,14328,157969,157966,30369,30373,30391,30412,159647,33890,151709,151933,138780,30494,30502,30528,25775,152096,30552,144044,30639,166244,166248,136897,30708,30729,136054,150034,26826,30895,30919,30931,38565,31022,153056,30935,31028,30897,161292,36792,34948,166699,155779,140828,31110,35072,26882,31104,153687,31133,162617,31036,31145,28202,160038,16040,31174,168205,31188],&#xD;  "euc-kr":[44034,44035,44037,44038,44043,44044,44045,44046,44047,44056,44062,44063,44065,44066,44067,44069,44070,44071,44072,44073,44074,44075,44078,44082,44083,44084,null,null,null,null,null,null,44085,44086,44087,44090,44091,44093,44094,44095,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44108,44110,44111,44112,44113,44114,44115,44117,null,null,null,null,null,null,44118,44119,44121,44122,44123,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44146,44147,44149,44150,44153,44155,44156,44157,44158,44159,44162,44167,44168,44173,44174,44175,44177,44178,44179,44181,44182,44183,44184,44185,44186,44187,44190,44194,44195,44196,44197,44198,44199,44203,44205,44206,44209,44210,44211,44212,44213,44214,44215,44218,44222,44223,44224,44226,44227,44229,44230,44231,44233,44234,44235,44237,44238,44239,44240,44241,44242,44243,44244,44246,44248,44249,44250,44251,44252,44253,44254,44255,44258,44259,44261,44262,44265,44267,44269,44270,44274,44276,44279,44280,44281,44282,44283,44286,44287,44289,44290,44291,44293,44295,44296,44297,44298,44299,44302,44304,44306,44307,44308,44309,44310,44311,44313,44314,44315,44317,44318,44319,44321,44322,44323,44324,44325,44326,44327,44328,44330,44331,44334,44335,44336,44337,44338,44339,null,null,null,null,null,null,44342,44343,44345,44346,44347,44349,44350,44351,44352,44353,44354,44355,44358,44360,44362,44363,44364,44365,44366,44367,44369,44370,44371,44373,44374,44375,null,null,null,null,null,null,44377,44378,44379,44380,44381,44382,44383,44384,44386,44388,44389,44390,44391,44392,44393,44394,44395,44398,44399,44401,44402,44407,44408,44409,44410,44414,44416,44419,44420,44421,44422,44423,44426,44427,44429,44430,44431,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44446,44447,44448,44449,44450,44451,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44472,44473,44474,44475,44476,44477,44478,44479,44482,44483,44485,44486,44487,44489,44490,44491,44492,44493,44494,44495,44498,44500,44501,44502,44503,44504,44505,44506,44507,44509,44510,44511,44513,44514,44515,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44538,44539,44541,44542,44546,44547,44548,44549,44550,44551,44554,44556,44558,44559,44560,44561,44562,44563,44565,44566,44567,44568,44569,44570,44571,44572,null,null,null,null,null,null,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44594,44595,44597,44598,44601,44603,44604,null,null,null,null,null,null,44605,44606,44607,44610,44612,44615,44616,44617,44619,44623,44625,44626,44627,44629,44631,44632,44633,44634,44635,44638,44642,44643,44644,44646,44647,44650,44651,44653,44654,44655,44657,44658,44659,44660,44661,44662,44663,44666,44670,44671,44672,44673,44674,44675,44678,44679,44680,44681,44682,44683,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44735,44737,44738,44739,44741,44742,44743,44744,44745,44746,44747,44750,44754,44755,44756,44757,44758,44759,44762,44763,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44777,44778,44780,44782,44783,44784,44785,44786,44787,44789,44790,44791,44793,44794,44795,44797,44798,44799,44800,44801,44802,44803,44804,44805,null,null,null,null,null,null,44806,44809,44810,44811,44812,44814,44815,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,null,null,null,null,null,null,44836,44837,44838,44839,44840,44841,44842,44843,44846,44847,44849,44851,44853,44854,44855,44856,44857,44858,44859,44862,44864,44868,44869,44870,44871,44874,44875,44876,44877,44878,44879,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44894,44895,44896,44897,44898,44899,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44922,44923,44924,44925,44926,44927,44929,44930,44931,44933,44934,44935,44937,44938,44939,44940,44941,44942,44943,44946,44947,44948,44950,44951,44952,44953,44954,44955,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44986,44987,44989,44990,44991,44993,44994,44995,44996,44997,44998,45002,45004,45007,45008,45009,45010,45011,45013,45014,45015,45016,45017,45018,45019,45021,45022,45023,45024,45025,null,null,null,null,null,null,45026,45027,45028,45029,45030,45031,45034,45035,45036,45037,45038,45039,45042,45043,45045,45046,45047,45049,45050,45051,45052,45053,45054,45055,45058,45059,null,null,null,null,null,null,45061,45062,45063,45064,45065,45066,45067,45069,45070,45071,45073,45074,45075,45077,45078,45079,45080,45081,45082,45083,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45126,45127,45129,45131,45133,45135,45136,45137,45138,45142,45144,45146,45147,45148,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45182,45183,45185,45186,45187,45189,45190,45191,45192,45193,45194,45195,45198,45200,45202,45203,45204,45205,45206,45207,45211,45213,45214,45219,45220,45221,45222,45223,45226,45232,45234,45238,45239,45241,45242,45243,45245,45246,45247,45248,45249,45250,45251,45254,45258,45259,45260,45261,45262,45263,45266,null,null,null,null,null,null,45267,45269,45270,45271,45273,45274,45275,45276,45277,45278,45279,45281,45282,45283,45284,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,null,null,null,null,null,null,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45322,45325,45326,45327,45329,45332,45333,45334,45335,45338,45342,45343,45344,45345,45346,45350,45351,45353,45354,45355,45357,45358,45359,45360,45361,45362,45363,45366,45370,45371,45372,45373,45374,45375,45378,45379,45381,45382,45383,45385,45386,45387,45388,45389,45390,45391,45394,45395,45398,45399,45401,45402,45403,45405,45406,45407,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45434,45435,45437,45438,45439,45441,45443,45444,45445,45446,45447,45450,45452,45454,45455,45456,45457,45461,45462,45463,45465,45466,45467,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,null,null,null,null,null,null,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45517,45518,45519,45521,45522,45523,45525,null,null,null,null,null,null,45526,45527,45528,45529,45530,45531,45534,45536,45537,45538,45539,45540,45541,45542,45543,45546,45547,45549,45550,45551,45553,45554,45555,45556,45557,45558,45559,45560,45562,45564,45566,45567,45568,45569,45570,45571,45574,45575,45577,45578,45581,45582,45583,45584,45585,45586,45587,45590,45592,45594,45595,45596,45597,45598,45599,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45621,45622,45623,45624,45625,45626,45627,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45657,45658,45659,45661,45662,45663,45665,45666,45667,45668,45669,45670,45671,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45686,45687,45688,45689,45690,45691,45693,45694,45695,45696,45697,45698,45699,45702,45703,45704,45706,45707,45708,45709,45710,null,null,null,null,null,null,45711,45714,45715,45717,45718,45719,45723,45724,45725,45726,45727,45730,45732,45735,45736,45737,45739,45741,45742,45743,45745,45746,45747,45749,45750,45751,null,null,null,null,null,null,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45770,45771,45773,45774,45775,45777,45779,45780,45781,45782,45783,45786,45788,45790,45791,45792,45793,45795,45799,45801,45802,45808,45809,45810,45814,45820,45821,45822,45826,45827,45829,45830,45831,45833,45834,45835,45836,45837,45838,45839,45842,45846,45847,45848,45849,45850,45851,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45911,45913,45914,45917,45920,45921,45922,45923,45926,45928,45930,45932,45933,45935,45938,45939,45941,45942,45943,45945,45946,45947,45948,45949,45950,45951,45954,45958,45959,45960,45961,45962,45963,45965,null,null,null,null,null,null,45966,45967,45969,45970,45971,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45986,45987,45988,45989,45990,45991,45993,45994,45995,45997,null,null,null,null,null,null,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46022,46023,46025,46026,46029,46031,46033,46034,46035,46038,46040,46042,46044,46046,46047,46049,46050,46051,46053,46054,46055,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46097,46098,46099,46100,46101,46102,46103,46105,46106,46107,46109,46110,46111,46113,46114,46115,46116,46117,46118,46119,46122,46124,46125,46126,46127,46128,46129,46130,46131,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46162,46163,46165,46166,46167,46169,46170,46171,46172,46173,46174,46175,46178,46180,46182,null,null,null,null,null,null,46183,46184,46185,46186,46187,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46209,46210,null,null,null,null,null,null,46211,46212,46213,46214,46215,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46238,46239,46240,46241,46242,46243,46245,46246,46247,46249,46250,46251,46253,46254,46255,46256,46257,46258,46259,46260,46262,46264,46266,46267,46268,46269,46270,46271,46273,46274,46275,46277,46278,46279,46281,46282,46283,46284,46285,46286,46287,46289,46290,46291,46292,46294,46295,46296,46297,46298,46299,46302,46303,46305,46306,46309,46311,46312,46313,46314,46315,46318,46320,46322,46323,46324,46325,46326,46327,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46358,46359,46361,46362,46365,46366,46367,46368,46369,46370,46371,46374,46379,46380,46381,46382,46383,46386,46387,46389,46390,46391,46393,46394,46395,46396,46397,46398,46399,46402,46406,null,null,null,null,null,null,46407,46408,46409,46410,46414,46415,46417,46418,46419,46421,46422,46423,46424,46425,46426,46427,46430,46434,46435,46436,46437,46438,46439,46440,46441,46442,null,null,null,null,null,null,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46498,46499,46501,46502,46503,46505,46508,46509,46510,46511,46514,46518,46519,46520,46521,46522,46526,46527,46529,46530,46531,46533,46534,46535,46536,46537,46538,46539,46542,46546,46547,46548,46549,46550,46551,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46610,46611,46613,46614,46615,46617,46618,46619,46620,46621,null,null,null,null,null,null,46622,46623,46624,46625,46626,46627,46628,46630,46631,46632,46633,46634,46635,46637,46638,46639,46640,46641,46642,46643,46645,46646,46647,46648,46649,46650,null,null,null,null,null,null,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46693,46694,46695,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46750,46751,46753,46754,46755,46757,46758,46759,46760,46761,46762,46765,46766,46767,46768,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46805,46806,46807,46808,46809,46810,46811,46812,46813,null,null,null,null,null,null,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46833,46834,46835,46837,46838,46839,46841,46842,null,null,null,null,null,null,46843,46844,46845,46846,46847,46850,46851,46852,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46890,46891,46893,46894,46897,46898,46899,46900,46901,46902,46903,46906,46908,46909,46910,46911,46912,46913,46914,46915,46917,46918,46919,46921,46922,46923,46925,46926,46927,46928,46929,46930,46931,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46945,46946,46947,46949,46950,46951,46953,46954,46955,46956,46957,46958,46959,46962,46964,46966,46967,46968,46969,46970,46971,46974,46975,46977,46978,46979,46981,46982,46983,46984,46985,46986,46987,46990,46995,46996,46997,47002,47003,47005,47006,47007,47009,47010,47011,47012,47013,47014,47015,47018,47022,47023,47024,47025,47026,47027,47030,47031,47033,47034,47035,47036,47037,47038,47039,47040,47041,null,null,null,null,null,null,47042,47043,47044,47045,47046,47048,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,null,null,null,null,null,null,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47086,47087,47089,47090,47091,47093,47094,47095,47096,47097,47098,47099,47102,47106,47107,47108,47109,47110,47114,47115,47117,47118,47119,47121,47122,47123,47124,47125,47126,47127,47130,47132,47134,47135,47136,47137,47138,47139,47142,47143,47145,47146,47147,47149,47150,47151,47152,47153,47154,47155,47158,47162,47163,47164,47165,47166,47167,47169,47170,47171,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47186,47188,47189,47190,47191,47192,47193,47194,47195,47198,47199,47201,47202,47203,47205,47206,47207,47208,47209,47210,47211,47214,47216,47218,47219,47220,47221,47222,47223,47225,47226,47227,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,null,null,null,null,null,null,47264,47265,47266,47267,47268,47269,47270,47271,47273,47274,47275,47276,47277,47278,47279,47281,47282,47283,47285,47286,47287,47289,47290,47291,47292,47293,null,null,null,null,null,null,47294,47295,47298,47300,47302,47303,47304,47305,47306,47307,47309,47310,47311,47313,47314,47315,47317,47318,47319,47320,47321,47322,47323,47324,47326,47328,47330,47331,47332,47333,47334,47335,47338,47339,47341,47342,47343,47345,47346,47347,47348,47349,47350,47351,47354,47356,47358,47359,47360,47361,47362,47363,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47385,47386,47387,47388,47389,47390,47391,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47422,47423,47425,47426,47427,47429,47430,47431,47432,47433,47434,47435,47437,47438,47440,47442,47443,47444,47445,47446,47447,47450,47451,47453,47454,47455,47457,47458,47459,47460,47461,47462,47463,47466,47468,47470,47471,47472,47473,47474,47475,47478,47479,47481,47482,47483,47485,null,null,null,null,null,null,47486,47487,47488,47489,47490,47491,47494,47496,47499,47500,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,null,null,null,null,null,null,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47534,47535,47537,47538,47539,47541,47542,47543,47544,47545,47546,47547,47550,47552,47554,47555,47556,47557,47558,47559,47562,47563,47565,47571,47572,47573,47574,47575,47578,47580,47583,47584,47586,47590,47591,47593,47594,47595,47597,47598,47599,47600,47601,47602,47603,47606,47611,47612,47613,47614,47615,47618,47619,47620,47621,47622,47623,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47674,47675,47677,47678,47679,47681,47683,47684,47685,47686,47687,47690,47692,47695,47696,47697,47698,47702,47703,47705,47706,47707,47709,47710,47711,47712,47713,47714,47715,47718,47722,47723,47724,47725,47726,47727,null,null,null,null,null,null,47730,47731,47733,47734,47735,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47750,47752,47753,47754,47755,47757,47758,47759,47760,47761,47762,null,null,null,null,null,null,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47786,47789,47790,47791,47793,47795,47796,47797,47798,47799,47802,47804,47806,47807,47808,47809,47810,47811,47813,47814,47815,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47869,47870,47871,47873,47874,47875,47877,47878,47879,47880,47881,47882,47883,47884,47886,47888,47890,47891,47892,47893,47894,47895,47897,47898,47899,47901,47902,47903,47905,47906,47907,47908,47909,47910,47911,47912,47914,47916,47917,47918,47919,47920,47921,47922,47923,47927,47929,47930,47935,47936,47937,47938,47939,47942,47944,47946,47947,47948,47950,47953,47954,null,null,null,null,null,null,47955,47957,47958,47959,47961,47962,47963,47964,47965,47966,47967,47968,47970,47972,47973,47974,47975,47976,47977,47978,47979,47981,47982,47983,47984,47985,null,null,null,null,null,null,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48009,48010,48011,48013,48014,48015,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48037,48038,48039,48041,48042,48043,48045,48046,48047,48048,48049,48050,48051,48053,48054,48056,48057,48058,48059,48060,48061,48062,48063,48065,48066,48067,48069,48070,48071,48073,48074,48075,48076,48077,48078,48079,48081,48082,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48122,48123,48125,48126,48129,48131,48132,48133,48134,48135,48138,48142,48144,48146,48147,48153,48154,48160,48161,48162,48163,48166,48168,48170,48171,48172,48174,48175,48178,48179,48181,null,null,null,null,null,null,48182,48183,48185,48186,48187,48188,48189,48190,48191,48194,48198,48199,48200,48202,48203,48206,48207,48209,48210,48211,48212,48213,48214,48215,48216,48217,null,null,null,null,null,null,48218,48219,48220,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48262,48263,48265,48266,48269,48271,48272,48273,48274,48275,48278,48280,48283,48284,48285,48286,48287,48290,48291,48293,48294,48297,48298,48299,48300,48301,48302,48303,48306,48310,48311,48312,48313,48314,48315,48318,48319,48321,48322,48323,48325,48326,48327,48328,48329,48330,48331,48332,48334,48338,48339,48340,48342,48343,48345,48346,48347,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48375,48377,48378,48379,48381,48382,48383,48384,48385,48386,48387,48390,48392,48394,48395,48396,48397,48398,48399,48401,48402,48403,48405,48406,48407,48408,48409,48410,48411,48412,48413,null,null,null,null,null,null,48414,48415,48416,48417,48418,48419,48421,48422,48423,48424,48425,48426,48427,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,null,null,null,null,null,null,48442,48443,48444,48445,48446,48447,48449,48450,48451,48452,48453,48454,48455,48458,48459,48461,48462,48463,48465,48466,48467,48468,48469,48470,48471,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48485,48486,48487,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48514,48515,48517,48518,48523,48524,48525,48526,48527,48530,48532,48534,48535,48536,48539,48541,48542,48543,48544,48545,48546,48547,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48561,48562,48563,48564,48565,48566,48567,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48598,48599,48601,48602,48603,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48618,48619,48620,48621,48622,48623,48625,null,null,null,null,null,null,48626,48627,48629,48630,48631,48633,48634,48635,48636,48637,48638,48639,48641,48642,48644,48646,48647,48648,48649,48650,48651,48654,48655,48657,48658,48659,null,null,null,null,null,null,48661,48662,48663,48664,48665,48666,48667,48670,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48710,48711,48713,48714,48715,48717,48719,48720,48721,48722,48723,48726,48728,48732,48733,48734,48735,48738,48739,48741,48742,48743,48745,48747,48748,48749,48750,48751,48754,48758,48759,48760,48761,48762,48766,48767,48769,48770,48771,48773,48774,48775,48776,48777,48778,48779,48782,48786,48787,48788,48789,48790,48791,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48850,48851,null,null,null,null,null,null,48853,48854,48857,48858,48859,48860,48861,48862,48863,48865,48866,48870,48871,48872,48873,48874,48875,48877,48878,48879,48880,48881,48882,48883,48884,48885,null,null,null,null,null,null,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48898,48899,48900,48901,48902,48903,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48922,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48962,48963,48965,48966,48967,48969,48970,48971,48972,48973,48974,48975,48978,48979,48980,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49045,49046,49047,49048,49049,49050,49051,49052,49053,null,null,null,null,null,null,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49073,49074,49075,49076,49077,49078,49079,49080,null,null,null,null,null,null,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49094,49095,49096,49097,49098,49099,49102,49103,49105,49106,49107,49109,49110,49111,49112,49113,49114,49115,49117,49118,49120,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49234,49235,49236,49237,49238,49239,49241,49242,49243,null,null,null,null,null,null,49245,49246,49247,49249,49250,49251,49252,49253,49254,49255,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,null,null,null,null,null,null,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49298,49299,49301,49302,49303,49305,49306,49307,49308,49309,49310,49311,49314,49316,49318,49319,49320,49321,49322,49323,49326,49329,49330,49335,49336,49337,49338,49339,49342,49346,49347,49348,49350,49351,49354,49355,49357,49358,49359,49361,49362,49363,49364,49365,49366,49367,49370,49374,49375,49376,49377,49378,49379,49382,49383,49385,49386,49387,49389,49390,49391,49392,49393,49394,49395,49398,49400,49402,49403,49404,49405,49406,49407,49409,49410,49411,49413,49414,49415,49417,49418,49419,49420,49421,49422,49423,49425,49426,49427,49428,49430,49431,49432,49433,49434,49435,49441,49442,49445,49448,49449,49450,49451,49454,49458,49459,49460,49461,49463,49466,49467,49469,49470,49471,49473,49474,49475,49476,49477,49478,49479,49482,49486,49487,49488,49489,49490,49491,49494,49495,null,null,null,null,null,null,49497,49498,49499,49501,49502,49503,49504,49505,49506,49507,49510,49514,49515,49516,49517,49518,49519,49521,49522,49523,49525,49526,49527,49529,49530,49531,null,null,null,null,null,null,49532,49533,49534,49535,49536,49537,49538,49539,49540,49542,49543,49544,49545,49546,49547,49551,49553,49554,49555,49557,49559,49560,49561,49562,49563,49566,49568,49570,49571,49572,49574,49575,49578,49579,49581,49582,49583,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49598,49599,49600,49601,49602,49603,49605,49606,49607,49609,49610,49611,49613,49614,49615,49616,49617,49618,49619,49621,49622,49625,49626,49627,49628,49629,49630,49631,49633,49634,49635,49637,49638,49639,49641,49642,49643,49644,49645,49646,49647,49650,49652,49653,49654,49655,49656,49657,49658,49659,49662,49663,49665,49666,49667,49669,49670,49671,49672,49673,49674,49675,49678,49680,49682,49683,49684,49685,49686,49687,49690,49691,49693,49694,49697,49698,49699,49700,49701,49702,49703,49706,49708,49710,49712,49715,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,null,null,null,null,null,null,49734,49735,49737,49738,49739,49740,49741,49742,49743,49746,49747,49749,49750,49751,49753,49754,49755,49756,49757,49758,49759,49761,49762,49763,49764,49766,null,null,null,null,null,null,49767,49768,49769,49770,49771,49774,49775,49777,49778,49779,49781,49782,49783,49784,49785,49786,49787,49790,49792,49794,49795,49796,49797,49798,49799,49802,49803,49804,49805,49806,49807,49809,49810,49811,49812,49813,49814,49815,49817,49818,49820,49822,49823,49824,49825,49826,49827,49830,49831,49833,49834,49835,49838,49839,49840,49841,49842,49843,49846,49848,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49886,49887,49889,49890,49893,49894,49895,49896,49897,49898,49902,49904,49906,49907,49908,49909,49911,49914,49917,49918,49919,49921,49922,49923,49924,49925,49926,49927,49930,49931,49934,49935,49936,49937,49938,49942,49943,49945,49946,49947,49949,49950,49951,49952,49953,49954,49955,49958,49959,49962,49963,49964,49965,49966,49967,49968,49969,49970,null,null,null,null,null,null,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49990,49991,49992,49993,49994,49995,49996,49997,null,null,null,null,null,null,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50026,50027,50029,50030,50031,50033,50035,50036,50037,50038,50039,50042,50043,50046,50047,50048,50049,50050,50051,50053,50054,50055,50057,50058,50059,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50138,50139,50141,50142,50145,50147,50148,50149,50150,50151,50154,50155,50156,50158,50159,50160,50161,50162,50163,50166,50167,50169,50170,50171,50172,50173,50174,null,null,null,null,null,null,50175,50176,50177,50178,50179,50180,50181,50182,50183,50185,50186,50187,50188,50189,50190,50191,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,null,null,null,null,null,null,50203,50204,50205,50206,50207,50208,50209,50210,50211,50213,50214,50215,50216,50217,50218,50219,50221,50222,50223,50225,50226,50227,50229,50230,50231,50232,50233,50234,50235,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50278,50279,50281,50282,50283,50285,50286,50287,50288,50289,50290,50291,50294,50295,50296,50298,50299,50300,50301,50302,50303,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50325,50326,50327,50328,50329,50330,50331,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50361,50362,50363,50365,50366,50367,50368,50369,50370,50371,50372,50373,null,null,null,null,null,null,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,null,null,null,null,null,null,50400,50401,50402,50403,50404,50405,50406,50407,50408,50410,50411,50412,50413,50414,50415,50418,50419,50421,50422,50423,50425,50427,50428,50429,50430,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50445,50446,50447,50449,50450,50451,50453,50454,50455,50456,50457,50458,50459,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50474,50475,50477,50478,50479,50481,50482,50483,50484,50485,50486,50487,50490,50492,50494,50495,50496,50497,50498,50499,50502,50503,50507,50511,50512,50513,50514,50518,50522,50523,50524,50527,50530,50531,50533,50534,50535,50537,50538,50539,50540,50541,50542,50543,50546,50550,50551,50552,50553,50554,50555,50558,50559,50561,50562,50563,50565,50566,50568,50569,50570,50571,50574,50576,50578,50579,50580,50582,50585,50586,50587,50589,50590,50591,50593,50594,50595,50596,50597,50598,50599,50600,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50614,null,null,null,null,null,null,50615,50618,50623,50624,50625,50626,50627,50635,50637,50639,50642,50643,50645,50646,50647,50649,50650,50651,50652,50653,50654,50655,50658,50660,50662,50663,null,null,null,null,null,null,50664,50665,50666,50667,50671,50673,50674,50675,50677,50680,50681,50682,50683,50690,50691,50692,50697,50698,50699,50701,50702,50703,50705,50706,50707,50708,50709,50710,50711,50714,50717,50718,50719,50720,50721,50722,50723,50726,50727,50729,50730,50731,50735,50737,50738,50742,50744,50746,50748,50749,50750,50751,50754,50755,50757,50758,50759,50761,50762,50763,50764,50765,50766,50767,50770,50774,50775,50776,50777,50778,50779,50782,50783,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50797,50798,50800,50802,50803,50804,50805,50806,50807,50810,50811,50813,50814,50815,50817,50818,50819,50820,50821,50822,50823,50826,50828,50830,50831,50832,50833,50834,50835,50838,50839,50841,50842,50843,50845,50846,50847,50848,50849,50850,50851,50854,50856,50858,50859,50860,50861,50862,50863,50866,50867,50869,50870,50871,50875,50876,50877,50878,50879,50882,50884,50886,50887,50888,50889,50890,50891,50894,null,null,null,null,null,null,50895,50897,50898,50899,50901,50902,50903,50904,50905,50906,50907,50910,50911,50914,50915,50916,50917,50918,50919,50922,50923,50925,50926,50927,50929,50930,null,null,null,null,null,null,50931,50932,50933,50934,50935,50938,50939,50940,50942,50943,50944,50945,50946,50947,50950,50951,50953,50954,50955,50957,50958,50959,50960,50961,50962,50963,50966,50968,50970,50971,50972,50973,50974,50975,50978,50979,50981,50982,50983,50985,50986,50987,50988,50989,50990,50991,50994,50996,50998,51000,51001,51002,51003,51006,51007,51009,51010,51011,51013,51014,51015,51016,51017,51019,51022,51024,51033,51034,51035,51037,51038,51039,51041,51042,51043,51044,51045,51046,51047,51049,51050,51052,51053,51054,51055,51056,51057,51058,51059,51062,51063,51065,51066,51067,51071,51072,51073,51074,51078,51083,51084,51085,51087,51090,51091,51093,51097,51099,51100,51101,51102,51103,51106,51111,51112,51113,51114,51115,51118,51119,51121,51122,51123,51125,51126,51127,51128,51129,51130,51131,51134,51138,51139,51140,51141,51142,51143,51146,51147,51149,51151,51153,51154,51155,51156,51157,51158,51159,51161,51162,51163,51164,null,null,null,null,null,null,51166,51167,51168,51169,51170,51171,51173,51174,51175,51177,51178,51179,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,null,null,null,null,null,null,51195,51196,51197,51198,51199,51202,51203,51205,51206,51207,51209,51211,51212,51213,51214,51215,51218,51220,51223,51224,51225,51226,51227,51230,51231,51233,51234,51235,51237,51238,51239,51240,51241,51242,51243,51246,51248,51250,51251,51252,51253,51254,51255,51257,51258,51259,51261,51262,51263,51265,51266,51267,51268,51269,51270,51271,51274,51275,51278,51279,51280,51281,51282,51283,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51314,51315,51317,51318,51319,51321,51323,51324,51325,51326,51327,51330,51332,51336,51337,51338,51342,51343,51344,51345,51346,51347,51349,51350,51351,51352,51353,51354,51355,51356,51358,51360,51362,51363,51364,51365,51366,51367,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51390,51391,51392,51393,null,null,null,null,null,null,51394,51395,51397,51398,51399,51401,51402,51403,51405,51406,51407,51408,51409,51410,51411,51414,51416,51418,51419,51420,51421,51422,51423,51426,51427,51429,null,null,null,null,null,null,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51446,51447,51448,51449,51450,51451,51454,51455,51457,51458,51459,51463,51464,51465,51466,51467,51470,12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,8835,8746,8745,8743,8744,65506,51472,51474,51475,51476,51477,51478,51479,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,null,null,null,null,null,null,51501,51502,51503,51504,51505,51506,51507,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,null,null,null,null,null,null,51528,51529,51530,51531,51532,51533,51534,51535,51538,51539,51541,51542,51543,51545,51546,51547,51548,51549,51550,51551,51554,51556,51557,51558,51559,51560,51561,51562,51563,51565,51566,51567,8658,8660,8704,8707,180,65374,711,728,733,730,729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51569,51570,51571,51573,51574,51575,51576,51577,51578,51579,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51594,51595,51597,51598,51599,null,null,null,null,null,null,51601,51602,51603,51604,51605,51606,51607,51610,51612,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,null,null,null,null,null,null,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51650,51651,51653,51654,51657,51659,51660,51661,51662,51663,51666,51668,51671,51672,51675,65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65510,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,51678,51679,51681,51683,51685,51686,51688,51689,51690,51691,51694,51698,51699,51700,51701,51702,51703,51706,51707,51709,51710,51711,51713,51714,51715,51716,null,null,null,null,null,null,51717,51718,51719,51722,51726,51727,51728,51729,51730,51731,51733,51734,51735,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,null,null,null,null,null,null,51750,51751,51752,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,51783,51784,51785,51786,51787,51790,51791,51793,51794,51795,51797,51798,51799,51800,51801,51802,51803,51806,51810,51811,51812,51813,51814,51815,51817,51818,null,null,null,null,null,null,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51838,51839,51840,51841,51842,51843,51845,51846,null,null,null,null,null,null,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,null,null,null,null,null,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51902,51903,51905,51906,51907,51909,null,null,null,null,null,null,51910,51911,51912,51913,51914,51915,51918,51920,51922,51924,51925,51926,51927,51930,51931,51932,51933,51934,51935,51937,51938,51939,51940,51941,51942,51943,null,null,null,null,null,null,51944,51945,51946,51947,51949,51950,51951,51952,51953,51954,51955,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51977,51978,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51979,51980,51981,51982,51983,51985,51986,51987,51989,51990,51991,51993,51994,51995,51996,51997,51998,51999,52002,52003,52004,52005,52006,52007,52008,52009,null,null,null,null,null,null,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52034,52035,52036,null,null,null,null,null,null,52037,52038,52039,52042,52043,52045,52046,52047,52049,52050,52051,52052,52053,52054,52055,52058,52059,52060,52062,52063,52064,52065,52066,52067,52069,52070,52071,52072,52073,52074,52075,52076,13205,13206,13207,8467,13208,13252,13219,13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242,13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249,13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228,13277,13264,13267,13251,13257,13276,13254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,null,null,null,null,null,null,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52125,52126,52127,52128,52129,52130,52131,null,null,null,null,null,null,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,198,208,170,294,null,306,null,319,321,216,338,186,222,358,330,null,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,190,8539,8540,8541,8542,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,null,null,null,null,null,null,52192,52193,52194,52195,52197,52198,52200,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,null,null,null,null,null,null,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52238,52239,52241,52242,52243,52245,52246,52247,52248,52249,52250,52251,52254,52255,52256,52259,52260,230,273,240,295,305,307,312,320,322,248,339,223,254,359,331,329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,185,178,179,8308,8319,8321,8322,8323,8324,52261,52262,52266,52267,52269,52271,52273,52274,52275,52276,52277,52278,52279,52282,52287,52288,52289,52290,52291,52294,52295,52297,52298,52299,52301,52302,null,null,null,null,null,null,52303,52304,52305,52306,52307,52310,52314,52315,52316,52317,52318,52319,52321,52322,52323,52325,52327,52329,52330,52331,52332,52333,52334,52335,52337,52338,null,null,null,null,null,null,52339,52340,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,52372,52373,52374,52375,52378,52379,52381,52382,52383,52385,52386,52387,52388,52389,52390,52391,52394,52398,52399,52400,52401,52402,52403,52406,52407,52409,null,null,null,null,null,null,52410,52411,52413,52414,52415,52416,52417,52418,52419,52422,52424,52426,52427,52428,52429,52430,52431,52433,52434,52435,52437,52438,52439,52440,52441,52442,null,null,null,null,null,null,52443,52444,52445,52446,52447,52448,52449,52450,52451,52453,52454,52455,52456,52457,52458,52459,52461,52462,52463,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,52478,52479,52480,52482,52483,52484,52485,52486,52487,52490,52491,52493,52494,52495,52497,52498,52499,52500,52501,52502,52503,52506,52508,52510,52511,52512,null,null,null,null,null,null,52513,52514,52515,52517,52518,52519,52521,52522,52523,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52538,52539,52540,52541,52542,null,null,null,null,null,null,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52573,52574,52575,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,52577,52578,52579,52581,52582,52583,52584,52585,52586,52587,52590,52592,52594,52595,52596,52597,52598,52599,52601,52602,52603,52604,52605,52606,52607,52608,null,null,null,null,null,null,52609,52610,52611,52612,52613,52614,52615,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52630,52631,52633,52634,52635,52637,52638,52639,null,null,null,null,null,null,52640,52641,52642,52643,52646,52648,52650,52651,52652,52653,52654,52655,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52677,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52678,52679,52680,52681,52682,52683,52685,52686,52687,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,null,null,null,null,null,null,52706,52707,52708,52709,52710,52711,52713,52714,52715,52717,52718,52719,52721,52722,52723,52724,52725,52726,52727,52730,52732,52734,52735,52736,52737,52738,null,null,null,null,null,null,52739,52741,52742,52743,52745,52746,52747,52749,52750,52751,52752,52753,52754,52755,52757,52758,52759,52760,52762,52763,52764,52765,52766,52767,52770,52771,52773,52774,52775,52777,52778,52779,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52780,52781,52782,52783,52786,52788,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,null,null,null,null,null,null,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52826,52827,52829,52830,52834,52835,52836,52837,52838,52839,52842,52844,null,null,null,null,null,null,52846,52847,52848,52849,52850,52851,52854,52855,52857,52858,52859,52861,52862,52863,52864,52865,52866,52867,52870,52872,52874,52875,52876,52877,52878,52879,52882,52883,52885,52886,52887,52889,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52890,52891,52892,52893,52894,52895,52898,52902,52903,52904,52905,52906,52907,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,null,null,null,null,null,null,52923,52924,52925,52926,52927,52928,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,null,null,null,null,null,null,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52966,52967,52969,52970,52973,52974,52975,52976,52977,52978,52979,52982,52986,52987,52988,52989,52990,52991,44032,44033,44036,44039,44040,44041,44042,44048,44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,44064,44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,44116,44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,44165,44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,44200,44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,44232,44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,44273,44275,44277,44278,44284,44285,44288,44292,44294,52994,52995,52997,52998,52999,53001,53002,53003,53004,53005,53006,53007,53010,53012,53014,53015,53016,53017,53018,53019,53021,53022,53023,53025,53026,53027,null,null,null,null,null,null,53029,53030,53031,53032,53033,53034,53035,53038,53042,53043,53044,53045,53046,53047,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,null,null,null,null,null,null,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53078,53079,53081,53082,53083,53085,53086,53087,53088,53089,53090,53091,53094,53096,53098,53099,53100,44300,44301,44303,44305,44312,44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,44361,44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,44411,44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,44471,44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,44540,44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,44600,44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,44630,44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,53101,53102,53103,53106,53107,53109,53110,53111,53113,53114,53115,53116,53117,53118,53119,53121,53122,53123,53124,53126,53127,53128,53129,53130,53131,53133,null,null,null,null,null,null,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53154,53155,53156,53157,53158,53159,53161,null,null,null,null,null,null,53162,53163,53164,53165,53166,53167,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53189,53190,53191,53192,53193,53194,53195,44665,44667,44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,44751,44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,44808,44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,44867,44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,44945,44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,45012,45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,45076,45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,45143,45145,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53218,53219,53221,53222,53223,53225,null,null,null,null,null,null,53226,53227,53228,53229,53230,53231,53234,53236,53238,53239,53240,53241,53242,53243,53245,53246,53247,53249,53250,53251,53253,53254,53255,53256,53257,53258,null,null,null,null,null,null,53259,53260,53261,53262,53263,53264,53266,53267,53268,53269,53270,53271,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,45210,45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,45233,45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,45268,45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,45339,45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,45376,45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,45436,45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,45516,45520,45524,45532,45533,53294,53295,53296,53297,53298,53299,53302,53303,53305,53306,53307,53309,53310,53311,53312,53313,53314,53315,53318,53320,53322,53323,53324,53325,53326,53327,null,null,null,null,null,null,53329,53330,53331,53333,53334,53335,53337,53338,53339,53340,53341,53342,53343,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53358,53359,null,null,null,null,null,null,53361,53362,53363,53365,53366,53367,53368,53369,53370,53371,53374,53375,53376,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,45535,45544,45545,45548,45552,45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,45600,45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,45705,45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,45740,45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,45796,45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,45816,45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,45845,45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53414,53415,53417,53418,53419,53421,53422,53423,53424,53425,53426,null,null,null,null,null,null,53427,53430,53432,53434,53435,53436,53437,53438,53439,53442,53443,53445,53446,53447,53450,53451,53452,53453,53454,53455,53458,53462,53463,53464,53465,53466,null,null,null,null,null,null,53467,53470,53471,53473,53474,53475,53477,53478,53479,53480,53481,53482,53483,53486,53490,53491,53492,53493,53494,53495,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,45927,45929,45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,45968,45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,46036,46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,46112,46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,46356,46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,46388,46392,53509,53510,53511,53512,53513,53514,53515,53516,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,null,null,null,null,null,null,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53554,53555,53557,53558,53559,53561,53563,53564,53565,53566,null,null,null,null,null,null,53567,53570,53574,53575,53576,53577,53578,53579,53582,53583,53585,53586,53587,53589,53590,53591,53592,53593,53594,53595,53598,53600,53602,53603,53604,53605,53606,53607,53609,53610,53611,53613,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,46429,46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,46516,46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,46572,46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,46752,46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,46889,46892,46895,46896,46904,46905,46907,46916,46920,46924,46932,46933,46944,46948,46952,46960,46961,46963,46965,46972,46973,46976,46980,46988,46989,46991,46992,46993,46994,46998,46999,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53629,53630,53631,53632,53633,53634,53635,53637,53638,53639,53641,53642,null,null,null,null,null,null,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53666,53667,53669,53670,53671,null,null,null,null,null,null,53673,53674,53675,53676,53677,53678,53679,53682,53684,53686,53687,53688,53689,53691,53693,53694,53695,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,47000,47001,47004,47008,47016,47017,47019,47020,47021,47028,47029,47032,47047,47049,47084,47085,47088,47092,47100,47101,47103,47104,47105,47111,47112,47113,47116,47120,47128,47129,47131,47133,47140,47141,47144,47148,47156,47157,47159,47160,47161,47168,47172,47185,47187,47196,47197,47200,47204,47212,47213,47215,47217,47224,47228,47245,47272,47280,47284,47288,47296,47297,47299,47301,47308,47312,47316,47325,47327,47329,47336,47337,47340,47344,47352,47353,47355,47357,47364,47384,47392,47420,47421,47424,47428,47436,47439,47441,47448,47449,47452,47456,47464,47465,53712,53713,53714,53715,53716,53717,53718,53719,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,null,null,null,null,null,null,53739,53740,53741,53742,53743,53744,53745,53746,53747,53749,53750,53751,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,null,null,null,null,null,null,53768,53770,53771,53772,53773,53774,53775,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,47467,47469,47476,47477,47480,47484,47492,47493,47495,47497,47498,47501,47502,47532,47533,47536,47540,47548,47549,47551,47553,47560,47561,47564,47566,47567,47568,47569,47570,47576,47577,47579,47581,47582,47585,47587,47588,47589,47592,47596,47604,47605,47607,47608,47609,47610,47616,47617,47624,47637,47672,47673,47676,47680,47682,47688,47689,47691,47693,47694,47699,47700,47701,47704,47708,47716,47717,47719,47720,47721,47728,47729,47732,47736,47747,47748,47749,47751,47756,47784,47785,47787,47788,47792,47794,47800,47801,47803,47805,47812,47816,47832,47833,47868,53802,53803,53806,53807,53809,53810,53811,53813,53814,53815,53816,53817,53818,53819,53822,53824,53826,53827,53828,53829,53830,53831,53833,53834,53835,53836,null,null,null,null,null,null,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53853,53854,53855,53856,53857,53858,53859,53861,53862,53863,53864,null,null,null,null,null,null,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53890,53891,53893,53894,53895,53897,53898,53899,53900,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,47924,47925,47926,47928,47931,47932,47933,47934,47940,47941,47943,47945,47949,47951,47952,47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,48120,48121,48124,48127,48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,48150,48151,48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,48176,48177,48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,48221,48260,48261,48264,48267,48268,48270,48276,48277,48279,53901,53902,53903,53906,53907,53908,53910,53911,53912,53913,53914,53915,53917,53918,53919,53921,53922,53923,53925,53926,53927,53928,53929,53930,53931,53933,null,null,null,null,null,null,53934,53935,53936,53938,53939,53940,53941,53942,53943,53946,53947,53949,53950,53953,53955,53956,53957,53958,53959,53962,53964,53965,53966,53967,53968,53969,null,null,null,null,null,null,53970,53971,53973,53974,53975,53977,53978,53979,53981,53982,53983,53984,53985,53986,53987,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54002,54003,54005,54006,54007,54009,54010,48281,48282,48288,48289,48292,48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,48333,48335,48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,48389,48391,48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,48473,48484,48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,48533,48537,48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,48628,48632,48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,48709,48712,48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,54011,54012,54013,54014,54015,54018,54020,54022,54023,54024,54025,54026,54027,54031,54033,54034,54035,54037,54039,54040,54041,54042,54043,54046,54050,54051,null,null,null,null,null,null,54052,54054,54055,54058,54059,54061,54062,54063,54065,54066,54067,54068,54069,54070,54071,54074,54078,54079,54080,54081,54082,54083,54086,54087,54088,54089,null,null,null,null,null,null,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,48744,48746,48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,48781,48783,48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,48867,48868,48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,48961,48964,48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,49304,49312,49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,49340,49341,49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,49372,49373,49380,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54142,54143,54145,54146,54147,54149,54150,54151,null,null,null,null,null,null,54152,54153,54154,54155,54158,54162,54163,54164,54165,54166,54167,54170,54171,54173,54174,54175,54177,54178,54179,54180,54181,54182,54183,54186,54188,54190,null,null,null,null,null,null,54191,54192,54193,54194,54195,54197,54198,54199,54201,54202,54203,54205,54206,54207,54208,54209,54210,54211,54214,54215,54218,54219,54220,54221,54222,54223,54225,54226,54227,54228,54229,54230,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,49424,49429,49436,49437,49438,49439,49440,49443,49444,49446,49447,49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483,49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524,49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573,49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636,49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688,49689,49692,49695,49696,49704,49705,49707,49709,54231,54233,54234,54235,54236,54237,54238,54239,54240,54242,54244,54245,54246,54247,54248,54249,54250,54251,54254,54255,54257,54258,54259,54261,54262,54263,null,null,null,null,null,null,54264,54265,54266,54267,54270,54272,54274,54275,54276,54277,54278,54279,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,null,null,null,null,null,null,54295,54296,54297,54298,54299,54300,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,49711,49713,49714,49716,49736,49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791,49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844,49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905,49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941,49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040,50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146,50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,54328,54329,54330,54331,54332,54333,54334,54335,54337,54338,54339,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,null,null,null,null,null,null,54356,54357,54358,54359,54360,54361,54362,54363,54365,54366,54367,54369,54370,54371,54373,54374,54375,54376,54377,54378,54379,54380,54382,54384,54385,54386,null,null,null,null,null,null,54387,54388,54389,54390,54391,54394,54395,54397,54398,54401,54403,54404,54405,54406,54407,54410,54412,54414,54415,54416,54417,54418,54419,54421,54422,54423,54424,54425,54426,54427,54428,54429,50228,50236,50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360,50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452,50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505,50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528,50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567,50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616,50617,50619,50620,50621,50622,50628,50629,50630,50631,50632,50633,50634,50636,50638,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,null,null,null,null,null,null,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54477,54478,54479,54481,54482,54483,54485,null,null,null,null,null,null,54486,54487,54488,54489,54490,54491,54493,54494,54496,54497,54498,54499,54500,54501,54502,54503,54505,54506,54507,54509,54510,54511,54513,54514,54515,54516,54517,54518,54519,54521,54522,54524,50640,50641,50644,50648,50656,50657,50659,50661,50668,50669,50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689,50693,50694,50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728,50732,50733,50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756,50760,50768,50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808,50809,50812,50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853,50855,50857,50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892,50893,50896,50900,50908,50909,50912,50913,50920,54526,54527,54528,54529,54530,54531,54533,54534,54535,54537,54538,54539,54541,54542,54543,54544,54545,54546,54547,54550,54552,54553,54554,54555,54556,54557,null,null,null,null,null,null,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,null,null,null,null,null,null,54584,54585,54586,54587,54590,54591,54593,54594,54595,54597,54598,54599,54600,54601,54602,54603,54606,54608,54610,54611,54612,54613,54614,54615,54618,54619,54621,54622,54623,54625,54626,54627,50921,50924,50928,50936,50937,50941,50948,50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984,50992,50993,50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023,51025,51026,51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060,51061,51064,51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086,51088,51089,51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110,51116,51117,51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150,51152,51160,51165,51172,51176,51180,51200,51201,51204,51208,51210,54628,54630,54631,54634,54636,54638,54639,54640,54641,54642,54643,54646,54647,54649,54650,54651,54653,54654,54655,54656,54657,54658,54659,54662,54666,54667,null,null,null,null,null,null,54668,54669,54670,54671,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54694,54695,null,null,null,null,null,null,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,51216,51217,51219,51221,51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260,51264,51272,51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329,51331,51333,51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388,51389,51396,51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452,51453,51456,51460,51461,51462,51468,51469,51471,51473,51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,51564,51568,51572,51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,51649,51652,51655,51656,51658,51664,51665,51667,54730,54731,54733,54734,54735,54737,54739,54740,54741,54742,54743,54746,54748,54750,54751,54752,54753,54754,54755,54758,54759,54761,54762,54763,54765,54766,null,null,null,null,null,null,54767,54768,54769,54770,54771,54774,54776,54778,54779,54780,54781,54782,54783,54786,54787,54789,54790,54791,54793,54794,54795,54796,54797,54798,54799,54802,null,null,null,null,null,null,54806,54807,54808,54809,54810,54811,54813,54814,54815,54817,54818,54819,54821,54822,54823,54824,54825,54826,54827,54828,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54842,54843,51669,51670,51673,51674,51676,51677,51680,51682,51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,51712,51720,51721,51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,51804,51805,51807,51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,51916,51917,51919,51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,51992,52000,52001,52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,52089,52124,52152,52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,52257,52258,52263,52264,52265,52268,52270,52272,52280,52281,52283,54845,54846,54847,54849,54850,54851,54852,54854,54855,54858,54860,54862,54863,54864,54866,54867,54870,54871,54873,54874,54875,54877,54878,54879,54880,54881,null,null,null,null,null,null,54882,54883,54884,54885,54886,54888,54890,54891,54892,54893,54894,54895,54898,54899,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,null,null,null,null,null,null,54913,54914,54916,54918,54919,54920,54921,54922,54923,54926,54927,54929,54930,54931,54933,54934,54935,54936,54937,54938,54939,54940,54942,54944,54946,54947,54948,54949,54950,54951,54953,54954,52284,52285,52286,52292,52293,52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,52328,52336,52341,52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,52405,52408,52412,52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,52488,52489,52492,52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,52576,52580,52588,52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,52645,52647,52649,52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,52733,52740,52744,52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,52789,54955,54957,54958,54959,54961,54962,54963,54964,54965,54966,54967,54968,54970,54972,54973,54974,54975,54976,54977,54978,54979,54982,54983,54985,54986,54987,null,null,null,null,null,null,54989,54990,54991,54992,54994,54995,54997,54998,55000,55002,55003,55004,55005,55006,55007,55009,55010,55011,55013,55014,55015,55017,55018,55019,55020,55021,null,null,null,null,null,null,55022,55023,55025,55026,55027,55028,55030,55031,55032,55033,55034,55035,55038,55039,55041,55042,55043,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55058,55059,55060,52824,52825,52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,52856,52860,52868,52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,52900,52901,52908,52909,52929,52964,52965,52968,52971,52972,52980,52981,52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024,53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093,53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188,53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272,53293,53300,53301,53304,53308,55061,55062,55063,55066,55067,55069,55070,55071,55073,55074,55075,55076,55077,55078,55079,55082,55084,55086,55087,55088,55089,55090,55091,55094,55095,55097,null,null,null,null,null,null,55098,55099,55101,55102,55103,55104,55105,55106,55107,55109,55110,55112,55114,55115,55116,55117,55118,55119,55122,55123,55125,55130,55131,55132,55133,55134,null,null,null,null,null,null,55135,55138,55140,55142,55143,55144,55146,55147,55149,55150,55151,55153,55154,55155,55157,55158,55159,55160,55161,55162,55163,55166,55167,55168,55170,55171,55172,55173,55174,55175,55178,55179,53316,53317,53319,53321,53328,53332,53336,53344,53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429,53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468,53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556,53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597,53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681,53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805,53808,53812,53820,53821,53823,53825,53832,53852,55181,55182,55183,55185,55186,55187,55188,55189,55190,55191,55194,55196,55198,55199,55200,55201,55202,55203,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,53860,53888,53889,53892,53896,53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952,53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008,54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047,54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084,54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172,54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224,54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54280,54301,54336,54340,54364,54368,54372,54381,54383,54392,54393,54396,54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549,54551,54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624,54629,54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664,54665,54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756,54757,54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801,54803,54804,54805,54812,54816,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54820,54829,54840,54841,54844,54848,54853,54856,54857,54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900,54915,54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083,55085,55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127,55128,55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169,55176,55177,55180,55184,55192,55193,55195,55197,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20285,20339,20551,20729,21152,21487,21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21283,23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,25106,26690,26800,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,38799,20018,23521,25096,26524,29916,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31185,33747,35463,35506,36328,36942,37707,38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509,39851,19992,20037,20061,20167,20465,20855,21246,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21312,21475,21477,21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,36020,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,24524,25216,26071,26083,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26398,26399,26462,26827,26820,27231,27450,27683,27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,26976,28275,63778,30007,63779,63780,63781,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32013,63782,63783,34930,22218,23064,63784,63785,63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,24180,25754,31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,24594,63792,63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,33215,36786,24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,63822,63823,63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,63831,33021,63832,63833,23612,27877,21311,28346,22810,33590,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20025,20150,20294,21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,31958,34739,40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,22581,22615,23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,26515,30168,31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,32645,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,24976,25088,25891,28451,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29001,29833,32244,32879,34030,36646,36899,37706,20925,21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,24278,26009,29134,30274,30637,32842,34044,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36988,39719,40845,22744,23105,23650,27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31435,31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,40629,28357,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,21563,21839,25991,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27766,32010,32011,32862,34442,38272,38639,21247,27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,31859,32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,26107,26108,27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30332,36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,30403,32972,32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30887,34327,38370,38713,63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,26381,31119,33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,20472,22857,23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23386,23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,33086,33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,40605,21066,63849,26388,63850,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20632,21034,23665,25955,27733,29642,29987,30109,31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853,31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32997,33298,34223,35199,35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728,28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016,21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,24833,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,36995,37228,37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,36848,37477,23815,23847,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23913,29791,33181,34664,28629,25342,32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,21273,22070,22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,36606,39135,39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,36805,22833,23460,23526,24713,23529,23563,24515,27777,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63858,28145,28683,29978,33455,35574,20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,25105,29273,33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27387,32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,37326,24369,63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,63865,22756,23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,29036,30162,30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,63870,39178,22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,25014,25233,27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,22914,63874,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,36701,63878,39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,30123,32377,35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,63887,63888,25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,28895,28982,29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,32303,63895,34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,24709,28037,63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,28814,28976,29744,33398,33490,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63910,38331,39653,40573,26308,63911,29121,33865,63912,63913,22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,30408,31310,32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,63924,20034,20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034,25942,26111,26212,26791,27738,28595,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28879,29100,29522,31613,34568,35492,39986,40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402,33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931,20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747,25854,63934,26332,63935,27208,63936,29183,29796,63937,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31368,31407,32327,32350,32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854,63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962,26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398,36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020,31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,27943,63946,28216,63947,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28641,29494,29495,63948,29788,30001,63949,30290,63950,63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,33380,34191,34811,34915,35516,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,35696,37291,20108,20197,20234,63965,63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63991,63992,63993,20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,24904,28363,28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,23265,23490,25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,33659,35627,36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,28593,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,37580,37664,38662,38742,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38748,38914,40718,21046,21137,21884,22564,24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121,29742,31278,32066,32156,32305,33131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36394,36405,37758,37912,20304,22352,24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21675,22320,22336,24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,32221,36655,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,20874,26613,31574,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36012,20932,22971,24765,34389,20508,63999,21076,23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,21119,21736,24980,25220,25307,26786,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26898,26970,27189,28818,28966,30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,22618,23541,24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,22684,25277,25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,27784,28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,35351,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,64004,25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,36774,37393,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38442,20843,21485,25420,20329,21764,24726,25943,27803,28031,29260,29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,35961,39111,39108,39491,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21697,31263,26963,35575,35914,39080,39342,24444,25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,64008,64009,38917,20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,28779,30069,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,26313,26783,28045,28102,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29243,32948,37237,39501,20399,20505,21402,21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,28824,30165,21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,29113,29114,29351,31143,31232,32690,35440,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],&#xD;  "gb18030":[19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627,26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654,26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670,26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703,26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732,26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748,26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765,26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801,26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817,26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,26940,26942,26944,26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,26972,26975,26977,26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,26992,26994,26995,26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,27013,27018,27019,27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,27034,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,27052,27054,27055,27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,27070,27071,27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,27087,27089,27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,27119,27120,27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,27164,27165,27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,27181,27182,27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,27199,27200,27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,27214,27215,27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,27231,27232,27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,27262,27263,27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,27277,27279,27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,27297,27298,27299,27300,27301,27302,27303,27304,27306,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,27451,27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,27484,27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,27520,27525,27528,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,28202,28204,28206,28208,28209,28211,28213,28214,28215,28217,28219,28220,28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,28462,28464,28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,28480,28481,28482,28483,28484,28485,28488,28489,28490,28492,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,28512,28513,28515,28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,28529,28531,28533,28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,28547,28549,28550,28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,28581,28582,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28596,28597,28599,28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,28613,28614,28615,28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,28702,28703,28704,28705,28706,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28726,28727,28728,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28749,28750,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,28801,28802,28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,28819,28823,28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,28868,28869,28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,28901,28906,28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,28924,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,28940,28941,28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,28974,28978,28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,29023,29024,29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,29041,29044,29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,29059,29061,29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,29075,29077,29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,29093,29094,29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,29110,29111,29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29135,29136,29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29225,29227,29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249,29250,29251,29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267,29268,29269,29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290,29291,29292,29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309,29314,29315,29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363,29365,29370,29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386,29387,29388,29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567,58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580,58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593,58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606,58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619,58620,58621,58622,58623,58624,58625,58626,58627,58628,58629,58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641,58642,58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654,58655,58656,58657,58658,58659,58660,58661,12288,12289,12290,183,713,711,168,12291,12293,8212,65374,8214,8230,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,8592,8593,8595,12307,58662,58663,58664,58665,58666,58667,58668,58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,58721,58722,58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,58746,58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,59238,59239,59240,59241,59242,59243,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,58766,58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,58779,58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,58792,58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,58805,58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,58818,58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,58831,58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,58844,58845,58846,58847,58848,58849,58850,58851,58852,12288,65281,65282,65283,65509,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,58854,58855,58856,58857,58858,58859,58860,58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871,58872,58873,58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884,58885,58886,58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897,58898,58899,58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910,58911,58912,58913,58914,58915,58916,58917,58918,58919,58920,58921,58922,58923,58924,58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936,58937,58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,59250,59251,59252,59253,59254,59255,59256,59257,59258,59259,59260,58950,58951,58952,58953,58954,58955,58956,58957,58958,58959,58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,58972,58973,58974,58975,58976,58977,58978,58979,58980,58981,58982,58983,58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,59007,59008,59009,59010,59011,59012,59013,59014,59015,59016,59017,59018,59019,59020,59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,59033,59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,59108,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,59134,59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,59270,59271,59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,59277,59278,59279,59280,59281,59282,59283,65077,65078,65081,65082,65087,65088,65085,65086,65089,65090,65091,65092,59284,59285,65083,65084,65079,65080,65073,59286,65075,65076,59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210,59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304,59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314,59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213,8229,8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,9737,8853,12306,12317,12318,59324,59325,59326,59327,59328,59329,59330,59331,59332,59333,59334,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,234,593,7743,324,328,505,609,59337,59338,59339,59340,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,59341,59342,59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,59353,59354,59355,59356,59357,59358,59359,59360,59361,12321,12322,12323,12324,12325,12326,12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,13262,13265,13266,13269,65072,65506,65508,59362,8481,12849,59363,8208,59364,59365,59366,12540,12443,12444,12541,12542,12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,65129,65130,65131,12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12295,59380,59381,59382,59383,59384,59385,59386,59387,59388,59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397,59398,59399,59400,59401,59402,59403,59404,59405,59406,59407,29404,29405,29407,29410,29411,29412,29413,29414,29415,29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,29444,29445,29446,29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,29460,29464,29465,29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,29488,29490,29491,29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29518,29519,29521,29523,29524,29525,29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,57354,57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,57367,57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,57380,57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392,57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405,57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418,57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431,57432,57433,57434,57435,57436,57437,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29567,29568,29569,29570,29571,29573,29574,29576,29578,29580,29581,29583,29584,29586,29587,29588,29589,29591,29592,29593,29594,29596,29597,29598,29600,29601,29603,29604,29605,29606,29607,29608,29610,29612,29613,29617,29620,29621,29622,29624,29625,29628,29629,29630,29631,29633,29635,29636,29637,29638,29639,29643,29644,29646,29650,29651,29652,29653,29654,29655,29656,29658,29659,29660,29661,29663,29665,29666,29667,29668,29670,29672,29674,29675,29676,29678,29679,29680,29681,29683,29684,29685,29686,29687,57438,57439,57440,57441,57442,57443,57444,57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,57470,57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,57483,57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,57496,57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,57509,57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,57522,57523,57524,57525,57526,57527,57528,57529,57530,57531,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29700,29703,29704,29707,29708,29709,29710,29713,29714,29715,29716,29717,29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731,29732,29735,29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755,29757,29758,29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29806,29807,29809,29810,29811,29812,29813,29816,29817,29818,57532,57533,57534,57535,57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547,57548,57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560,57561,57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573,57574,57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586,57587,57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599,57600,57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612,57613,57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625,29819,29820,29821,29823,29826,29828,29829,29830,29832,29833,29834,29836,29837,29839,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29853,29855,29856,29857,29858,29859,29860,29861,29862,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29907,29908,29909,29910,29911,29912,29913,29914,29915,29917,29919,29921,29925,29927,29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,30081,30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,57728,57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741,57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754,57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767,57768,57769,57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,57780,57781,57782,57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,57793,57794,57795,57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,57806,57807,57808,57809,57810,57811,57812,57813,30088,30089,30090,30092,30093,30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,30205,30206,30210,30212,30214,30215,30216,30217,30219,30221,30222,30223,30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,30276,57814,57815,57816,57817,57818,57819,57820,57821,57822,57823,57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,57835,57836,57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,57848,57849,57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,57861,57862,57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,57874,57875,57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,57887,57888,57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,57900,57901,57902,57903,57904,57905,57906,57907,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,30289,30290,30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,30306,30308,30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,30322,30323,30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,30341,30345,30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,30377,30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30400,30401,30403,21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,30404,30407,30409,30411,30412,30419,30421,30425,30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,30440,30441,30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,30461,30463,30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,30500,30501,30503,30506,30507,30508,30510,30512,30513,30514,30515,30516,30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,30552,30553,30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,30570,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30586,30587,30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,30608,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30625,30627,30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,30647,30648,30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,30677,30678,30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711,30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734,30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762,30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787,30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809,30810,30811,30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842,30843,30845,30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607,32928,21378,25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853,30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878,30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901,30902,30903,30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,30918,30919,30920,30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963,30965,30966,30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980,30982,30983,30984,30985,30986,30987,30988,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,23544,30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,21574,27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,30989,30990,30991,30992,30993,30994,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,31047,31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,31065,31073,31075,31076,31078,31081,31082,31083,31084,31086,31088,31089,31090,31091,31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,31110,31111,31112,31113,31115,31116,31117,31118,31120,31121,31122,24608,32829,25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,31124,31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,31196,31197,31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,31256,31257,31259,31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910,36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31345,31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750,21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409,31410,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31447,31448,31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,31466,31467,31468,31470,31472,31473,31474,31475,31476,31477,31478,31479,31480,31483,31484,31486,31488,31489,31490,31493,31495,31497,31500,31501,31502,31504,31506,31507,31510,31511,31512,31514,31516,31517,31519,31521,31522,31523,31527,31529,31533,28014,28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,31551,31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,31575,31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,31615,31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,31631,31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,31651,31652,31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,31675,31676,31677,31678,31679,31680,31682,31683,31684,22466,32831,26775,24037,25915,21151,24685,40858,20379,36524,20844,23467,24339,24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929,25925,39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191,36891,29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,31685,31688,31689,31690,31691,31693,31694,31695,31696,31698,31700,31701,31702,31703,31704,31707,31708,31710,31711,31712,31714,31715,31716,31719,31720,31721,31723,31724,31725,31727,31728,31730,31731,31732,31733,31734,31736,31737,31738,31739,31741,31743,31744,31745,31746,31747,31748,31749,31750,31752,31753,31754,31757,31758,31760,31761,31762,31763,31764,31765,31767,31768,31769,31770,31771,31772,31773,31774,31776,31777,31778,31779,31780,31781,31784,31785,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31801,31802,31803,31804,31805,31806,31810,39608,23401,28023,27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,23506,20989,21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865,31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882,31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904,31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925,31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457,21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940,31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,32038,32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,32054,32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,38190,31661,20214,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,32118,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,20581,33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,32173,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,26087,33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,32325,32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380,25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32412,32413,32414,32430,32436,32443,32444,32470,32484,32492,32505,32522,32528,32542,32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32594,32595,39304,24871,28291,22372,26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,32769,20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,32598,32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,32691,32692,32693,32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,32713,32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,32732,32733,32734,32738,32739,30178,31435,31890,27813,38582,21147,29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,32740,32743,32744,32746,32747,32748,32749,32751,32754,32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,32776,32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,32803,32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,32830,32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,32853,32854,32855,32857,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,32894,32897,32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,33023,33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,33083,33084,33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611,30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496,32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218,24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483,38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,33095,33097,33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121,33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142,33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166,33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185,33186,33188,33189,33191,33193,33195,33196,33197,33198,33199,33200,33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,25721,34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262,33263,33264,33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283,33287,33288,33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304,33305,33306,33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340,33341,33343,33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358,33360,33361,33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374,33376,33377,33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197,38062,32445,33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403,33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429,33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467,33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501,33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526,33528,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,33555,33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33577,33578,33582,33584,33586,33591,33595,33597,21860,33086,30130,30382,21305,30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,31080,25735,30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,33598,33599,33601,33602,33604,33605,33608,33610,33611,33612,33613,33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,33649,33650,33651,33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,33667,33668,33671,33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,33686,33687,33689,33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,33708,33709,33710,33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,33737,33739,33741,33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,33758,33762,33763,33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,33880,33885,33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904,33906,33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920,33921,33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014,34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,34050,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073,26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,29983,29989,29298,21319,32499,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,34062,34063,34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,34080,34082,34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,34117,34118,34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,34150,34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,34166,34167,34168,34172,34173,34175,34176,34177,30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,20160,39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,22763,19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,20365,37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,40736,23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,34178,34179,34182,34184,34185,34186,34187,34188,34189,34190,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217,34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236,34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251,34252,34253,34254,34257,34258,34260,34262,34263,34264,34265,34266,34267,34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700,30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,22905,22612,34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324,34325,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386,34387,34389,34390,34391,34392,34393,34395,34396,34397,34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436,34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455,34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477,34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498,34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525,34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549,34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572,34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351,36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,20129,26505,32593,24448,26106,26395,24536,22916,23041,34585,34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,34679,34680,34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703,34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718,34720,34721,34722,34723,34724,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,34725,34726,34727,34729,34730,34734,34736,34737,34738,34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,34756,34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,34775,34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,34791,34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34810,34811,34812,34813,34815,34816,34817,34818,34820,34821,34822,34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,34836,34839,34840,34841,34842,34844,34845,34846,34847,34848,34851,31232,24687,24076,24713,33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34867,34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,34883,34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,34901,34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,34925,34927,34929,34931,34932,34933,34934,34936,34937,34938,34939,34940,34944,34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,34983,34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515,20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,34996,34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015,35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035,35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054,35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076,35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,35093,35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111,35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,30307,30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,40493,21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,22934,29814,35128,35129,35130,35131,35132,35133,35134,35135,35136,35138,35139,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35168,35169,35170,35171,35172,35173,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35196,35197,35198,35200,35202,35204,35205,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,25671,23591,36965,31377,35875,23002,21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35267,35277,35283,35284,35285,35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304,35305,35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,21360,33521,27185,23156,40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,38080,29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35391,35392,35393,35394,35395,35396,35397,35398,35399,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452,35453,35454,35455,35456,28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,27490,36286,21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,35691,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35756,35761,35771,35783,35792,35818,35849,35870,20303,27880,31069,39547,25235,29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,59408,59409,59410,59411,59412,35896,35897,35898,35899,35900,35901,35902,35903,35904,35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,35920,35921,35922,35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,35935,35936,35939,35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,35952,35953,35954,35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,35969,35971,35972,35974,35975,35976,35979,35981,35982,35983,35984,35985,35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,20109,19980,20800,19984,24319,21317,19989,20120,19998,39730,23404,22121,20008,31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,39319,27603,30590,40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,21310,36188,21350,21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202,36204,36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223,36224,36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242,36243,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257,36258,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296,36297,36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750,35751,35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796,35798,35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830,35833,35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861,35862,35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886,35887,35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313,36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338,36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360,36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378,36379,36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,36415,36419,36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439,36440,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36455,36456,36458,36459,36462,36465,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,21471,29166,30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,22511,22520,22500,22493,36467,36469,36471,36472,36473,36474,36475,36477,36478,36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,36497,36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,36529,36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,33640,33563,33641,33644,33642,33645,33646,33712,33656,33715,33716,33696,33706,33683,33692,33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,33784,33785,33770,33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,33927,33928,33914,33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34000,34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822,36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134,34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908,36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933,36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956,36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975,36976,36977,36978,36979,36982,36983,36984,36985,36986,36987,36988,36990,36993,36996,36997,36998,36999,37001,37002,37004,37005,37006,37007,37008,37010,37012,37014,37016,37018,37020,37022,37023,37024,37028,37029,37031,37032,37033,37035,37037,37042,37047,37052,37053,37055,37056,25722,25783,25784,25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,24331,24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,21586,21587,21588,21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,21658,21659,21636,21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,21715,21716,21618,21667,21717,21691,21695,21708,21721,21722,21724,21673,21674,21668,21725,21711,21726,21787,21735,21792,21757,21780,21747,21794,21795,21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,37077,37078,37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,37100,37102,37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,37119,37120,37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,37148,37149,37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,37179,37180,37181,37182,37183,37184,37185,37186,37188,21815,21846,21877,21878,21879,21811,21808,21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,21949,21950,21908,21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,21981,21956,21999,21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,22105,22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,22163,22191,22228,22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,24123,24124,37189,37191,37192,37201,37203,37204,37205,37206,37208,37209,37211,37212,37215,37216,37222,37223,37224,37227,37229,37235,37242,37243,37244,37248,37249,37250,37251,37252,37254,37256,37258,37262,37263,37267,37268,37269,37270,37271,37272,37273,37276,37277,37278,37279,37280,37281,37284,37285,37286,37287,37288,37289,37291,37292,37296,37297,37298,37299,37302,37303,37304,37305,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37320,37323,37328,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37341,37342,37343,37344,37345,37346,37347,37348,37349,24119,24132,24148,24155,24158,24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,33307,22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,39287,39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,24581,24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586,24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,27825,27859,27887,27902,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,27961,27943,27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,27988,27955,28049,28015,28062,28064,27998,28051,28052,27996,28000,28028,28003,28186,28103,28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255,28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,28486,28487,28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,28617,28583,28601,28598,28610,28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,23424,23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,36897,36917,36918,36909,36911,36932,36945,36946,36944,36968,36952,36962,36955,26297,36980,36989,36994,37000,36995,37003,24400,24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,39739,23662,22913,22915,22925,22953,22954,22947,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,22955,22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,37838,37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449,32450,32457,32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494,32495,32497,32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520,32523,32524,32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547,32548,32549,32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563,32565,24186,30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118,38139,38172,38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,26621,26674,26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,26876,26911,26912,26873,38183,38195,38205,38211,38216,38219,38229,38234,38240,38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,26932,27084,27015,27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,27160,27237,27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,27538,27539,27533,27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,36726,36728,36727,36729,36730,36732,36734,36737,36738,36740,36743,36747,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,38467,38474,38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38535,38537,38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,25908,26094,26095,26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,36157,36160,36165,36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,35276,35278,35279,35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,29323,29325,29327,29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,38550,38554,38555,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570,38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587,38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630,38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699,38700,38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749,38751,38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768,38769,38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785,38786,38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803,38805,38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449,27459,27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315,26000,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,31049,31067,31068,31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,38826,38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,24636,24669,24666,24679,24641,24665,24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,30517,30520,30544,30545,30535,30531,30554,30568,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,30562,30565,30591,30605,30589,30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,39075,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39119,39120,39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,39141,39142,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135,38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159,38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187,38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197,38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232,38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249,38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213,31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180,39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503,40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526,40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554,40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,30131,30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,30232,30229,30233,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,30235,30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,31352,31353,31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,30091,32997,30386,30388,30684,32786,32788,32790,32796,32800,32802,32805,32806,32807,32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39049,39052,39053,39055,39060,39066,39067,39070,39071,39073,39074,39077,39078,34381,34388,34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,34545,34546,34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,34594,34685,34686,34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573,39577,39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605,39609,39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629,39630,39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,39645,39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664,39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679,39680,39681,39682,39684,39685,39686,34758,34696,34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531,31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755,39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,39732,39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,39755,39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,33281,33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,33339,33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,34952,35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,31901,31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,31959,31976,33390,26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,31992,32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,37198,37199,37220,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,35988,26011,35286,35294,35290,35292,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,35301,35307,35311,35390,35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,40123,40124,40125,40132,40133,40134,40135,40138,40139,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40061,40062,40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,40154,40155,40160,40161,40140,40141,40142,40143,40144,40147,40148,40149,40151,40152,40153,40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,39627,39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253,39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711,39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,40607,40667,40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751,40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018,58019,58020,58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031,58032,58033,58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044,58045,58046,58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057,58058,58059,58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070,58071,58072,58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083,58084,58085,58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,58096,58097,58098,58099,58100,58101,58102,58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113,58114,58115,58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126,58127,58128,58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139,58140,58141,58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152,58153,58154,58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165,58166,58167,58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178,58179,58180,58181,58182,58183,58184,58185,58186,58187,58188,58189,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40484,40487,40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532,40534,40537,40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40576,40577,40579,40580,40581,40582,40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599,40600,40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615,40616,40617,40618,58190,58191,58192,58193,58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,58206,58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,40747,40749,40750,40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,58292,58293,58294,58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,58305,58306,58307,58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,58318,58319,58320,58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,58331,58332,58333,58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,58344,58345,58346,58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,58357,58358,58359,58360,58361,58362,58363,58364,58365,58366,58367,58368,58369,58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757,40758,40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,63985,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389,58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402,58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415,58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428,58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441,58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454,58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467,58468,58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427,13383,11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,14963,14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470,16735,11950,17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,59459,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,18847,18843,18871,18870,59476,59477,19619,19615,19616,19617,19575,19618,19731,19732,19733,19734,19735,19736,19737,19886,59492,58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565],&#xD;  "gb18030-ranges":[[0,128],[36,165],[38,169],[45,178],[50,184],[81,216],[89,226],[95,235],[96,238],[100,244],[103,248],[104,251],[105,253],[109,258],[126,276],[133,284],[148,300],[172,325],[175,329],[179,334],[208,364],[306,463],[307,465],[308,467],[309,469],[310,471],[311,473],[312,475],[313,477],[341,506],[428,594],[443,610],[544,712],[545,716],[558,730],[741,930],[742,938],[749,962],[750,970],[805,1026],[819,1104],[820,1106],[7922,8209],[7924,8215],[7925,8218],[7927,8222],[7934,8231],[7943,8241],[7944,8244],[7945,8246],[7950,8252],[8062,8365],[8148,8452],[8149,8454],[8152,8458],[8164,8471],[8174,8482],[8236,8556],[8240,8570],[8262,8596],[8264,8602],[8374,8713],[8380,8720],[8381,8722],[8384,8726],[8388,8731],[8390,8737],[8392,8740],[8393,8742],[8394,8748],[8396,8751],[8401,8760],[8406,8766],[8416,8777],[8419,8781],[8424,8787],[8437,8802],[8439,8808],[8445,8816],[8482,8854],[8485,8858],[8496,8870],[8521,8896],[8603,8979],[8936,9322],[8946,9372],[9046,9548],[9050,9588],[9063,9616],[9066,9622],[9076,9634],[9092,9652],[9100,9662],[9108,9672],[9111,9676],[9113,9680],[9131,9702],[9162,9735],[9164,9738],[9218,9793],[9219,9795],[11329,11906],[11331,11909],[11334,11913],[11336,11917],[11346,11928],[11361,11944],[11363,11947],[11366,11951],[11370,11956],[11372,11960],[11375,11964],[11389,11979],[11682,12284],[11686,12292],[11687,12312],[11692,12319],[11694,12330],[11714,12351],[11716,12436],[11723,12447],[11725,12535],[11730,12543],[11736,12586],[11982,12842],[11989,12850],[12102,12964],[12336,13200],[12348,13215],[12350,13218],[12384,13253],[12393,13263],[12395,13267],[12397,13270],[12510,13384],[12553,13428],[12851,13727],[12962,13839],[12973,13851],[13738,14617],[13823,14703],[13919,14801],[13933,14816],[14080,14964],[14298,15183],[14585,15471],[14698,15585],[15583,16471],[15847,16736],[16318,17208],[16434,17325],[16438,17330],[16481,17374],[16729,17623],[17102,17997],[17122,18018],[17315,18212],[17320,18218],[17402,18301],[17418,18318],[17859,18760],[17909,18811],[17911,18814],[17915,18820],[17916,18823],[17936,18844],[17939,18848],[17961,18872],[18664,19576],[18703,19620],[18814,19738],[18962,19887],[19043,40870],[33469,59244],[33470,59336],[33471,59367],[33484,59413],[33485,59417],[33490,59423],[33497,59431],[33501,59437],[33505,59443],[33513,59452],[33520,59460],[33536,59478],[33550,59493],[37845,63789],[37921,63866],[37948,63894],[38029,63976],[38038,63986],[38064,64016],[38065,64018],[38066,64021],[38069,64025],[38075,64034],[38076,64037],[38078,64042],[39108,65074],[39109,65093],[39113,65107],[39114,65112],[39115,65127],[39116,65132],[39265,65375],[39394,65510],[189000,65536]],&#xD;  "jis0208":[12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,8213,8208,65295,65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,65291,65293,177,215,247,65309,8800,65308,65310,8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,null,null,null,null,null,null,null,null,null,null,null,8712,8715,8838,8839,8834,8835,8746,8745,null,null,null,null,null,null,null,null,8743,8744,65506,8658,8660,8704,8707,null,null,null,null,null,null,null,null,null,null,null,8736,8869,8978,8706,8711,8801,8786,8810,8811,8730,8765,8733,8757,8747,8748,null,null,null,null,null,null,null,8491,8240,9839,9837,9834,8224,8225,182,null,null,null,null,9711,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,null,null,null,null,null,null,null,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,null,null,null,null,null,null,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,null,null,null,null,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,13129,13076,13090,13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,13213,13214,13198,13199,13252,13217,null,null,null,null,null,null,null,null,13179,12317,12319,8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21000,33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,30000,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178,33433,35676,36000,36070,36212,38428,38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38000,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],&#xD;  "jis0212":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,728,711,184,729,733,175,731,730,65374,900,901,null,null,null,null,null,null,null,null,161,166,191,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,186,170,169,174,8482,164,8470,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,902,904,905,906,938,null,908,null,910,939,null,911,null,null,null,null,940,941,942,943,970,912,972,962,973,971,944,974,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1038,1039,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1118,1119,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,198,272,null,294,null,306,null,321,319,null,330,216,338,null,358,222,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,230,273,240,295,305,307,312,322,320,329,331,248,339,223,359,254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,193,192,196,194,258,461,256,260,197,195,262,264,268,199,266,270,201,200,203,202,282,278,274,280,null,284,286,290,288,292,205,204,207,206,463,304,298,302,296,308,310,313,317,315,323,327,325,209,211,210,214,212,465,336,332,213,340,344,342,346,348,352,350,356,354,218,217,220,219,364,467,368,362,370,366,360,471,475,473,469,372,221,376,374,377,381,379,null,null,null,null,null,null,null,225,224,228,226,259,462,257,261,229,227,263,265,269,231,267,271,233,232,235,234,283,279,275,281,501,285,287,null,289,293,237,236,239,238,464,null,299,303,297,309,311,314,318,316,324,328,326,241,243,242,246,244,466,337,333,245,341,345,343,347,349,353,351,357,355,250,249,252,251,365,468,369,363,371,367,361,472,476,474,470,373,253,255,375,378,382,380,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19970,19972,19973,19980,19986,19999,20003,20004,20008,20011,20014,20015,20016,20021,20032,20033,20036,20039,20049,20058,20060,20067,20072,20073,20084,20085,20089,20095,20109,20118,20119,20125,20143,20153,20163,20176,20186,20187,20192,20193,20194,20200,20207,20209,20211,20213,20221,20222,20223,20224,20226,20227,20232,20235,20236,20242,20245,20246,20247,20249,20270,20273,20320,20275,20277,20279,20281,20283,20286,20288,20290,20296,20297,20299,20300,20306,20308,20310,20312,20319,20323,20330,20332,20334,20337,20343,20344,20345,20346,20349,20350,20353,20354,20356,20357,20361,20362,20364,20366,20368,20370,20371,20372,20375,20377,20378,20382,20383,20402,20407,20409,20411,20412,20413,20414,20416,20417,20421,20422,20424,20425,20427,20428,20429,20431,20434,20444,20448,20450,20464,20466,20476,20477,20479,20480,20481,20484,20487,20490,20492,20494,20496,20499,20503,20504,20507,20508,20509,20510,20514,20519,20526,20528,20530,20531,20533,20544,20545,20546,20549,20550,20554,20556,20558,20561,20562,20563,20567,20569,20575,20576,20578,20579,20582,20583,20586,20589,20592,20593,20539,20609,20611,20612,20614,20618,20622,20623,20624,20626,20627,20628,20630,20635,20636,20638,20639,20640,20641,20642,20650,20655,20656,20665,20666,20669,20672,20675,20676,20679,20684,20686,20688,20691,20692,20696,20700,20701,20703,20706,20708,20710,20712,20713,20719,20721,20726,20730,20734,20739,20742,20743,20744,20747,20748,20749,20750,20722,20752,20759,20761,20763,20764,20765,20766,20771,20775,20776,20780,20781,20783,20785,20787,20788,20789,20792,20793,20802,20810,20815,20819,20821,20823,20824,20831,20836,20838,20862,20867,20868,20875,20878,20888,20893,20897,20899,20909,20920,20922,20924,20926,20927,20930,20936,20943,20945,20946,20947,20949,20952,20958,20962,20965,20974,20978,20979,20980,20983,20993,20994,20997,21010,21011,21013,21014,21016,21026,21032,21041,21042,21045,21052,21061,21065,21077,21079,21080,21082,21084,21087,21088,21089,21094,21102,21111,21112,21113,21120,21122,21125,21130,21132,21139,21141,21142,21143,21144,21146,21148,21156,21157,21158,21159,21167,21168,21174,21175,21176,21178,21179,21181,21184,21188,21190,21192,21196,21199,21201,21204,21206,21211,21212,21217,21221,21224,21225,21226,21228,21232,21233,21236,21238,21239,21248,21251,21258,21259,21260,21265,21267,21272,21275,21276,21278,21279,21285,21287,21288,21289,21291,21292,21293,21296,21298,21301,21308,21309,21310,21314,21324,21323,21337,21339,21345,21347,21349,21356,21357,21362,21369,21374,21379,21383,21384,21390,21395,21396,21401,21405,21409,21412,21418,21419,21423,21426,21428,21429,21431,21432,21434,21437,21440,21445,21455,21458,21459,21461,21466,21469,21470,21472,21478,21479,21493,21506,21523,21530,21537,21543,21544,21546,21551,21553,21556,21557,21571,21572,21575,21581,21583,21598,21602,21604,21606,21607,21609,21611,21613,21614,21620,21631,21633,21635,21637,21640,21641,21645,21649,21653,21654,21660,21663,21665,21670,21671,21673,21674,21677,21678,21681,21687,21689,21690,21691,21695,21702,21706,21709,21710,21728,21738,21740,21743,21750,21756,21758,21759,21760,21761,21765,21768,21769,21772,21773,21774,21781,21802,21803,21810,21813,21814,21819,21820,21821,21825,21831,21833,21834,21837,21840,21841,21848,21850,21851,21854,21856,21857,21860,21862,21887,21889,21890,21894,21896,21902,21903,21905,21906,21907,21908,21911,21923,21924,21933,21938,21951,21953,21955,21958,21961,21963,21964,21966,21969,21970,21971,21975,21976,21979,21982,21986,21993,22006,22015,22021,22024,22026,22029,22030,22031,22032,22033,22034,22041,22060,22064,22067,22069,22071,22073,22075,22076,22077,22079,22080,22081,22083,22084,22086,22089,22091,22093,22095,22100,22110,22112,22113,22114,22115,22118,22121,22125,22127,22129,22130,22133,22148,22149,22152,22155,22156,22165,22169,22170,22173,22174,22175,22182,22183,22184,22185,22187,22188,22189,22193,22195,22199,22206,22213,22217,22218,22219,22223,22224,22220,22221,22233,22236,22237,22239,22241,22244,22245,22246,22247,22248,22257,22251,22253,22262,22263,22273,22274,22279,22282,22284,22289,22293,22298,22299,22301,22304,22306,22307,22308,22309,22313,22314,22316,22318,22319,22323,22324,22333,22334,22335,22341,22342,22348,22349,22354,22370,22373,22375,22376,22379,22381,22382,22383,22384,22385,22387,22388,22389,22391,22393,22394,22395,22396,22398,22401,22403,22412,22420,22423,22425,22426,22428,22429,22430,22431,22433,22421,22439,22440,22441,22444,22456,22461,22471,22472,22476,22479,22485,22493,22494,22500,22502,22503,22505,22509,22512,22517,22518,22520,22525,22526,22527,22531,22532,22536,22537,22497,22540,22541,22555,22558,22559,22560,22566,22567,22573,22578,22585,22591,22601,22604,22605,22607,22608,22613,22623,22625,22628,22631,22632,22648,22652,22655,22656,22657,22663,22664,22665,22666,22668,22669,22671,22672,22676,22678,22685,22688,22689,22690,22694,22697,22705,22706,22724,22716,22722,22728,22733,22734,22736,22738,22740,22742,22746,22749,22753,22754,22761,22771,22789,22790,22795,22796,22802,22803,22804,34369,22813,22817,22819,22820,22824,22831,22832,22835,22837,22838,22847,22851,22854,22866,22867,22873,22875,22877,22878,22879,22881,22883,22891,22893,22895,22898,22901,22902,22905,22907,22908,22923,22924,22926,22930,22933,22935,22943,22948,22951,22957,22958,22959,22960,22963,22967,22970,22972,22977,22979,22980,22984,22986,22989,22994,23005,23006,23007,23011,23012,23015,23022,23023,23025,23026,23028,23031,23040,23044,23052,23053,23054,23058,23059,23070,23075,23076,23079,23080,23082,23085,23088,23108,23109,23111,23112,23116,23120,23125,23134,23139,23141,23143,23149,23159,23162,23163,23166,23179,23184,23187,23190,23193,23196,23198,23199,23200,23202,23207,23212,23217,23218,23219,23221,23224,23226,23227,23231,23236,23238,23240,23247,23258,23260,23264,23269,23274,23278,23285,23286,23293,23296,23297,23304,23319,23348,23321,23323,23325,23329,23333,23341,23352,23361,23371,23372,23378,23382,23390,23400,23406,23407,23420,23421,23422,23423,23425,23428,23430,23434,23438,23440,23441,23443,23444,23446,23464,23465,23468,23469,23471,23473,23474,23479,23482,23484,23488,23489,23501,23503,23510,23511,23512,23513,23514,23520,23535,23537,23540,23549,23564,23575,23582,23583,23587,23590,23593,23595,23596,23598,23600,23602,23605,23606,23641,23642,23644,23650,23651,23655,23656,23657,23661,23664,23668,23669,23674,23675,23676,23677,23687,23688,23690,23695,23698,23709,23711,23712,23714,23715,23718,23722,23730,23732,23733,23738,23753,23755,23762,23773,23767,23790,23793,23794,23796,23809,23814,23821,23826,23851,23843,23844,23846,23847,23857,23860,23865,23869,23871,23874,23875,23878,23880,23893,23889,23897,23882,23903,23904,23905,23906,23908,23914,23917,23920,23929,23930,23934,23935,23937,23939,23944,23946,23954,23955,23956,23957,23961,23963,23967,23968,23975,23979,23984,23988,23992,23993,24003,24007,24011,24016,24014,24024,24025,24032,24036,24041,24056,24057,24064,24071,24077,24082,24084,24085,24088,24095,24096,24110,24104,24114,24117,24126,24139,24144,24137,24145,24150,24152,24155,24156,24158,24168,24170,24171,24172,24173,24174,24176,24192,24203,24206,24226,24228,24229,24232,24234,24236,24241,24243,24253,24254,24255,24262,24268,24267,24270,24273,24274,24276,24277,24284,24286,24293,24299,24322,24326,24327,24328,24334,24345,24348,24349,24353,24354,24355,24356,24360,24363,24364,24366,24368,24372,24374,24379,24381,24383,24384,24388,24389,24391,24397,24400,24404,24408,24411,24416,24419,24420,24423,24431,24434,24436,24437,24440,24442,24445,24446,24457,24461,24463,24470,24476,24477,24482,24487,24491,24484,24492,24495,24496,24497,24504,24516,24519,24520,24521,24523,24528,24529,24530,24531,24532,24542,24545,24546,24552,24553,24554,24556,24557,24558,24559,24562,24563,24566,24570,24572,24583,24586,24589,24595,24596,24599,24600,24602,24607,24612,24621,24627,24629,24640,24647,24648,24649,24652,24657,24660,24662,24663,24669,24673,24679,24689,24702,24703,24706,24710,24712,24714,24718,24721,24723,24725,24728,24733,24734,24738,24740,24741,24744,24752,24753,24759,24763,24766,24770,24772,24776,24777,24778,24779,24782,24783,24788,24789,24793,24795,24797,24798,24802,24805,24818,24821,24824,24828,24829,24834,24839,24842,24844,24848,24849,24850,24851,24852,24854,24855,24857,24860,24862,24866,24874,24875,24880,24881,24885,24886,24887,24889,24897,24901,24902,24905,24926,24928,24940,24946,24952,24955,24956,24959,24960,24961,24963,24964,24971,24973,24978,24979,24983,24984,24988,24989,24991,24992,24997,25000,25002,25005,25016,25017,25020,25024,25025,25026,25038,25039,25045,25052,25053,25054,25055,25057,25058,25063,25065,25061,25068,25069,25071,25089,25091,25092,25095,25107,25109,25116,25120,25122,25123,25127,25129,25131,25145,25149,25154,25155,25156,25158,25164,25168,25169,25170,25172,25174,25178,25180,25188,25197,25199,25203,25210,25213,25229,25230,25231,25232,25254,25256,25267,25270,25271,25274,25278,25279,25284,25294,25301,25302,25306,25322,25330,25332,25340,25341,25347,25348,25354,25355,25357,25360,25363,25366,25368,25385,25386,25389,25397,25398,25401,25404,25409,25410,25411,25412,25414,25418,25419,25422,25426,25427,25428,25432,25435,25445,25446,25452,25453,25457,25460,25461,25464,25468,25469,25471,25474,25476,25479,25482,25488,25492,25493,25497,25498,25502,25508,25510,25517,25518,25519,25533,25537,25541,25544,25550,25553,25555,25556,25557,25564,25568,25573,25578,25580,25586,25587,25589,25592,25593,25609,25610,25616,25618,25620,25624,25630,25632,25634,25636,25637,25641,25642,25647,25648,25653,25661,25663,25675,25679,25681,25682,25683,25684,25690,25691,25692,25693,25695,25696,25697,25699,25709,25715,25716,25723,25725,25733,25735,25743,25744,25745,25752,25753,25755,25757,25759,25761,25763,25766,25768,25772,25779,25789,25790,25791,25796,25801,25802,25803,25804,25806,25808,25809,25813,25815,25828,25829,25833,25834,25837,25840,25845,25847,25851,25855,25857,25860,25864,25865,25866,25871,25875,25876,25878,25881,25883,25886,25887,25890,25894,25897,25902,25905,25914,25916,25917,25923,25927,25929,25936,25938,25940,25951,25952,25959,25963,25978,25981,25985,25989,25994,26002,26005,26008,26013,26016,26019,26022,26030,26034,26035,26036,26047,26050,26056,26057,26062,26064,26068,26070,26072,26079,26096,26098,26100,26101,26105,26110,26111,26112,26116,26120,26121,26125,26129,26130,26133,26134,26141,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26161,26163,26169,26167,26176,26181,26182,26186,26188,26193,26190,26199,26200,26201,26203,26204,26208,26209,26363,26218,26219,26220,26238,26227,26229,26239,26231,26232,26233,26235,26240,26236,26251,26252,26253,26256,26258,26265,26266,26267,26268,26271,26272,26276,26285,26289,26290,26293,26299,26303,26304,26306,26307,26312,26316,26318,26319,26324,26331,26335,26344,26347,26348,26350,26362,26373,26375,26382,26387,26393,26396,26400,26402,26419,26430,26437,26439,26440,26444,26452,26453,26461,26470,26476,26478,26484,26486,26491,26497,26500,26510,26511,26513,26515,26518,26520,26521,26523,26544,26545,26546,26549,26555,26556,26557,26617,26560,26562,26563,26565,26568,26569,26578,26583,26585,26588,26593,26598,26608,26610,26614,26615,26706,26644,26649,26653,26655,26664,26663,26668,26669,26671,26672,26673,26675,26683,26687,26692,26693,26698,26700,26709,26711,26712,26715,26731,26734,26735,26736,26737,26738,26741,26745,26746,26747,26748,26754,26756,26758,26760,26774,26776,26778,26780,26785,26787,26789,26793,26794,26798,26802,26811,26821,26824,26828,26831,26832,26833,26835,26838,26841,26844,26845,26853,26856,26858,26859,26860,26861,26864,26865,26869,26870,26875,26876,26877,26886,26889,26890,26896,26897,26899,26902,26903,26929,26931,26933,26936,26939,26946,26949,26953,26958,26967,26971,26979,26980,26981,26982,26984,26985,26988,26992,26993,26994,27002,27003,27007,27008,27021,27026,27030,27032,27041,27045,27046,27048,27051,27053,27055,27063,27064,27066,27068,27077,27080,27089,27094,27095,27106,27109,27118,27119,27121,27123,27125,27134,27136,27137,27139,27151,27153,27157,27162,27165,27168,27172,27176,27184,27186,27188,27191,27195,27198,27199,27205,27206,27209,27210,27214,27216,27217,27218,27221,27222,27227,27236,27239,27242,27249,27251,27262,27265,27267,27270,27271,27273,27275,27281,27291,27293,27294,27295,27301,27307,27311,27312,27313,27316,27325,27326,27327,27334,27337,27336,27340,27344,27348,27349,27350,27356,27357,27364,27367,27372,27376,27377,27378,27388,27389,27394,27395,27398,27399,27401,27407,27408,27409,27415,27419,27422,27428,27432,27435,27436,27439,27445,27446,27451,27455,27462,27466,27469,27474,27478,27480,27485,27488,27495,27499,27502,27504,27509,27517,27518,27522,27525,27543,27547,27551,27552,27554,27555,27560,27561,27564,27565,27566,27568,27576,27577,27581,27582,27587,27588,27593,27596,27606,27610,27617,27619,27622,27623,27630,27633,27639,27641,27647,27650,27652,27653,27657,27661,27662,27664,27666,27673,27679,27686,27687,27688,27692,27694,27699,27701,27702,27706,27707,27711,27722,27723,27725,27727,27730,27732,27737,27739,27740,27755,27757,27759,27764,27766,27768,27769,27771,27781,27782,27783,27785,27796,27797,27799,27800,27804,27807,27824,27826,27828,27842,27846,27853,27855,27856,27857,27858,27860,27862,27866,27868,27872,27879,27881,27883,27884,27886,27890,27892,27908,27911,27914,27918,27919,27921,27923,27930,27942,27943,27944,27751,27950,27951,27953,27961,27964,27967,27991,27998,27999,28001,28005,28007,28015,28016,28028,28034,28039,28049,28050,28052,28054,28055,28056,28074,28076,28084,28087,28089,28093,28095,28100,28104,28106,28110,28111,28118,28123,28125,28127,28128,28130,28133,28137,28143,28144,28148,28150,28156,28160,28164,28190,28194,28199,28210,28214,28217,28219,28220,28228,28229,28232,28233,28235,28239,28241,28242,28243,28244,28247,28252,28253,28254,28258,28259,28264,28275,28283,28285,28301,28307,28313,28320,28327,28333,28334,28337,28339,28347,28351,28352,28353,28355,28359,28360,28362,28365,28366,28367,28395,28397,28398,28409,28411,28413,28420,28424,28426,28428,28429,28438,28440,28442,28443,28454,28457,28458,28463,28464,28467,28470,28475,28476,28461,28495,28497,28498,28499,28503,28505,28506,28509,28510,28513,28514,28520,28524,28541,28542,28547,28551,28552,28555,28556,28557,28560,28562,28563,28564,28566,28570,28575,28576,28581,28582,28583,28584,28590,28591,28592,28597,28598,28604,28613,28615,28616,28618,28634,28638,28648,28649,28656,28661,28665,28668,28669,28672,28677,28678,28679,28685,28695,28704,28707,28719,28724,28727,28729,28732,28739,28740,28744,28745,28746,28747,28756,28757,28765,28766,28750,28772,28773,28780,28782,28789,28790,28798,28801,28805,28806,28820,28821,28822,28823,28824,28827,28836,28843,28848,28849,28852,28855,28874,28881,28883,28884,28885,28886,28888,28892,28900,28922,28931,28932,28933,28934,28935,28939,28940,28943,28958,28960,28971,28973,28975,28976,28977,28984,28993,28997,28998,28999,29002,29003,29008,29010,29015,29018,29020,29022,29024,29032,29049,29056,29061,29063,29068,29074,29082,29083,29088,29090,29103,29104,29106,29107,29114,29119,29120,29121,29124,29131,29132,29139,29142,29145,29146,29148,29176,29182,29184,29191,29192,29193,29203,29207,29210,29213,29215,29220,29227,29231,29236,29240,29241,29249,29250,29251,29253,29262,29263,29264,29267,29269,29270,29274,29276,29278,29280,29283,29288,29291,29294,29295,29297,29303,29304,29307,29308,29311,29316,29321,29325,29326,29331,29339,29352,29357,29358,29361,29364,29374,29377,29383,29385,29388,29397,29398,29400,29407,29413,29427,29428,29434,29435,29438,29442,29444,29445,29447,29451,29453,29458,29459,29464,29465,29470,29474,29476,29479,29480,29484,29489,29490,29493,29498,29499,29501,29507,29517,29520,29522,29526,29528,29533,29534,29535,29536,29542,29543,29545,29547,29548,29550,29551,29553,29559,29561,29564,29568,29569,29571,29573,29574,29582,29584,29587,29589,29591,29592,29596,29598,29599,29600,29602,29605,29606,29610,29611,29613,29621,29623,29625,29628,29629,29631,29637,29638,29641,29643,29644,29647,29650,29651,29654,29657,29661,29665,29667,29670,29671,29673,29684,29685,29687,29689,29690,29691,29693,29695,29696,29697,29700,29703,29706,29713,29722,29723,29732,29734,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29753,29760,29763,29764,29766,29767,29771,29773,29777,29778,29783,29789,29794,29798,29799,29800,29803,29805,29806,29809,29810,29824,29825,29829,29830,29831,29833,29839,29840,29841,29842,29848,29849,29850,29852,29855,29856,29857,29859,29862,29864,29865,29866,29867,29870,29871,29873,29874,29877,29881,29883,29887,29896,29897,29900,29904,29907,29912,29914,29915,29918,29919,29924,29928,29930,29931,29935,29940,29946,29947,29948,29951,29958,29970,29974,29975,29984,29985,29988,29991,29993,29994,29999,30006,30009,30013,30014,30015,30016,30019,30023,30024,30030,30032,30034,30039,30046,30047,30049,30063,30065,30073,30074,30075,30076,30077,30078,30081,30085,30096,30098,30099,30101,30105,30108,30114,30116,30132,30138,30143,30144,30145,30148,30150,30156,30158,30159,30167,30172,30175,30176,30177,30180,30183,30188,30190,30191,30193,30201,30208,30210,30211,30212,30215,30216,30218,30220,30223,30226,30227,30229,30230,30233,30235,30236,30237,30238,30243,30245,30246,30249,30253,30258,30259,30261,30264,30265,30266,30268,30282,30272,30273,30275,30276,30277,30281,30283,30293,30297,30303,30308,30309,30317,30318,30319,30321,30324,30337,30341,30348,30349,30357,30363,30364,30365,30367,30368,30370,30371,30372,30373,30374,30375,30376,30378,30381,30397,30401,30405,30409,30411,30412,30414,30420,30425,30432,30438,30440,30444,30448,30449,30454,30457,30460,30464,30470,30474,30478,30482,30484,30485,30487,30489,30490,30492,30498,30504,30509,30510,30511,30516,30517,30518,30521,30525,30526,30530,30533,30534,30538,30541,30542,30543,30546,30550,30551,30556,30558,30559,30560,30562,30564,30567,30570,30572,30576,30578,30579,30580,30586,30589,30592,30596,30604,30605,30612,30613,30614,30618,30623,30626,30631,30634,30638,30639,30641,30645,30654,30659,30665,30673,30674,30677,30681,30686,30687,30688,30692,30694,30698,30700,30704,30705,30708,30712,30715,30725,30726,30729,30733,30734,30737,30749,30753,30754,30755,30765,30766,30768,30773,30775,30787,30788,30791,30792,30796,30798,30802,30812,30814,30816,30817,30819,30820,30824,30826,30830,30842,30846,30858,30863,30868,30872,30881,30877,30878,30879,30884,30888,30892,30893,30896,30897,30898,30899,30907,30909,30911,30919,30920,30921,30924,30926,30930,30931,30933,30934,30948,30939,30943,30944,30945,30950,30954,30962,30963,30976,30966,30967,30970,30971,30975,30982,30988,30992,31002,31004,31006,31007,31008,31013,31015,31017,31021,31025,31028,31029,31035,31037,31039,31044,31045,31046,31050,31051,31055,31057,31060,31064,31067,31068,31079,31081,31083,31090,31097,31099,31100,31102,31115,31116,31121,31123,31124,31125,31126,31128,31131,31132,31137,31144,31145,31147,31151,31153,31156,31160,31163,31170,31172,31175,31176,31178,31183,31188,31190,31194,31197,31198,31200,31202,31205,31210,31211,31213,31217,31224,31228,31234,31235,31239,31241,31242,31244,31249,31253,31259,31262,31265,31271,31275,31277,31279,31280,31284,31285,31288,31289,31290,31300,31301,31303,31304,31308,31317,31318,31321,31324,31325,31327,31328,31333,31335,31338,31341,31349,31352,31358,31360,31362,31365,31366,31370,31371,31376,31377,31380,31390,31392,31395,31404,31411,31413,31417,31419,31420,31430,31433,31436,31438,31441,31451,31464,31465,31467,31468,31473,31476,31483,31485,31486,31495,31508,31519,31523,31527,31529,31530,31531,31533,31534,31535,31536,31537,31540,31549,31551,31552,31553,31559,31566,31573,31584,31588,31590,31593,31594,31597,31599,31602,31603,31607,31620,31625,31630,31632,31633,31638,31643,31646,31648,31653,31660,31663,31664,31666,31669,31670,31674,31675,31676,31677,31682,31685,31688,31690,31700,31702,31703,31705,31706,31707,31720,31722,31730,31732,31733,31736,31737,31738,31740,31742,31745,31746,31747,31748,31750,31753,31755,31756,31758,31759,31769,31771,31776,31781,31782,31784,31788,31793,31795,31796,31798,31801,31802,31814,31818,31829,31825,31826,31827,31833,31834,31835,31836,31837,31838,31841,31843,31847,31849,31853,31854,31856,31858,31865,31868,31869,31878,31879,31887,31892,31902,31904,31910,31920,31926,31927,31930,31931,31932,31935,31940,31943,31944,31945,31949,31951,31955,31956,31957,31959,31961,31962,31965,31974,31977,31979,31989,32003,32007,32008,32009,32015,32017,32018,32019,32022,32029,32030,32035,32038,32042,32045,32049,32060,32061,32062,32064,32065,32071,32072,32077,32081,32083,32087,32089,32090,32092,32093,32101,32103,32106,32112,32120,32122,32123,32127,32129,32130,32131,32133,32134,32136,32139,32140,32141,32145,32150,32151,32157,32158,32166,32167,32170,32179,32182,32183,32185,32194,32195,32196,32197,32198,32204,32205,32206,32215,32217,32256,32226,32229,32230,32234,32235,32237,32241,32245,32246,32249,32250,32264,32272,32273,32277,32279,32284,32285,32288,32295,32296,32300,32301,32303,32307,32310,32319,32324,32325,32327,32334,32336,32338,32344,32351,32353,32354,32357,32363,32366,32367,32371,32376,32382,32385,32390,32391,32394,32397,32401,32405,32408,32410,32413,32414,32572,32571,32573,32574,32575,32579,32580,32583,32591,32594,32595,32603,32604,32605,32609,32611,32612,32613,32614,32621,32625,32637,32638,32639,32640,32651,32653,32655,32656,32657,32662,32663,32668,32673,32674,32678,32682,32685,32692,32700,32703,32704,32707,32712,32718,32719,32731,32735,32739,32741,32744,32748,32750,32751,32754,32762,32765,32766,32767,32775,32776,32778,32781,32782,32783,32785,32787,32788,32790,32797,32798,32799,32800,32804,32806,32812,32814,32816,32820,32821,32823,32825,32826,32828,32830,32832,32836,32864,32868,32870,32877,32881,32885,32897,32904,32910,32924,32926,32934,32935,32939,32952,32953,32968,32973,32975,32978,32980,32981,32983,32984,32992,33005,33006,33008,33010,33011,33014,33017,33018,33022,33027,33035,33046,33047,33048,33052,33054,33056,33060,33063,33068,33072,33077,33082,33084,33093,33095,33098,33100,33106,33111,33120,33121,33127,33128,33129,33133,33135,33143,33153,33168,33156,33157,33158,33163,33166,33174,33176,33179,33182,33186,33198,33202,33204,33211,33227,33219,33221,33226,33230,33231,33237,33239,33243,33245,33246,33249,33252,33259,33260,33264,33265,33266,33269,33270,33272,33273,33277,33279,33280,33283,33295,33299,33300,33305,33306,33309,33313,33314,33320,33330,33332,33338,33347,33348,33349,33350,33355,33358,33359,33361,33366,33372,33376,33379,33383,33389,33396,33403,33405,33407,33408,33409,33411,33412,33415,33417,33418,33422,33425,33428,33430,33432,33434,33435,33440,33441,33443,33444,33447,33448,33449,33450,33454,33456,33458,33460,33463,33466,33468,33470,33471,33478,33488,33493,33498,33504,33506,33508,33512,33514,33517,33519,33526,33527,33533,33534,33536,33537,33543,33544,33546,33547,33620,33563,33565,33566,33567,33569,33570,33580,33581,33582,33584,33587,33591,33594,33596,33597,33602,33603,33604,33607,33613,33614,33617,33621,33622,33623,33648,33656,33661,33663,33664,33666,33668,33670,33677,33682,33684,33685,33688,33689,33691,33692,33693,33702,33703,33705,33708,33726,33727,33728,33735,33737,33743,33744,33745,33748,33757,33619,33768,33770,33782,33784,33785,33788,33793,33798,33802,33807,33809,33813,33817,33709,33839,33849,33861,33863,33864,33866,33869,33871,33873,33874,33878,33880,33881,33882,33884,33888,33892,33893,33895,33898,33904,33907,33908,33910,33912,33916,33917,33921,33925,33938,33939,33941,33950,33958,33960,33961,33962,33967,33969,33972,33978,33981,33982,33984,33986,33991,33992,33996,33999,34003,34012,34023,34026,34031,34032,34033,34034,34039,34098,34042,34043,34045,34050,34051,34055,34060,34062,34064,34076,34078,34082,34083,34084,34085,34087,34090,34091,34095,34099,34100,34102,34111,34118,34127,34128,34129,34130,34131,34134,34137,34140,34141,34142,34143,34144,34145,34146,34148,34155,34159,34169,34170,34171,34173,34175,34177,34181,34182,34185,34187,34188,34191,34195,34200,34205,34207,34208,34210,34213,34215,34228,34230,34231,34232,34236,34237,34238,34239,34242,34247,34250,34251,34254,34221,34264,34266,34271,34272,34278,34280,34285,34291,34294,34300,34303,34304,34308,34309,34317,34318,34320,34321,34322,34328,34329,34331,34334,34337,34343,34345,34358,34360,34362,34364,34365,34368,34370,34374,34386,34387,34390,34391,34392,34393,34397,34400,34401,34402,34403,34404,34409,34412,34415,34421,34422,34423,34426,34445,34449,34454,34456,34458,34460,34465,34470,34471,34472,34477,34481,34483,34484,34485,34487,34488,34489,34495,34496,34497,34499,34501,34513,34514,34517,34519,34522,34524,34528,34531,34533,34535,34440,34554,34556,34557,34564,34565,34567,34571,34574,34575,34576,34579,34580,34585,34590,34591,34593,34595,34600,34606,34607,34609,34610,34617,34618,34620,34621,34622,34624,34627,34629,34637,34648,34653,34657,34660,34661,34671,34673,34674,34683,34691,34692,34693,34694,34695,34696,34697,34699,34700,34704,34707,34709,34711,34712,34713,34718,34720,34723,34727,34732,34733,34734,34737,34741,34750,34751,34753,34760,34761,34762,34766,34773,34774,34777,34778,34780,34783,34786,34787,34788,34794,34795,34797,34801,34803,34808,34810,34815,34817,34819,34822,34825,34826,34827,34832,34841,34834,34835,34836,34840,34842,34843,34844,34846,34847,34856,34861,34862,34864,34866,34869,34874,34876,34881,34883,34885,34888,34889,34890,34891,34894,34897,34901,34902,34904,34906,34908,34911,34912,34916,34921,34929,34937,34939,34944,34968,34970,34971,34972,34975,34976,34984,34986,35002,35005,35006,35008,35018,35019,35020,35021,35022,35025,35026,35027,35035,35038,35047,35055,35056,35057,35061,35063,35073,35078,35085,35086,35087,35093,35094,35096,35097,35098,35100,35104,35110,35111,35112,35120,35121,35122,35125,35129,35130,35134,35136,35138,35141,35142,35145,35151,35154,35159,35162,35163,35164,35169,35170,35171,35179,35182,35184,35187,35189,35194,35195,35196,35197,35209,35213,35216,35220,35221,35227,35228,35231,35232,35237,35248,35252,35253,35254,35255,35260,35284,35285,35286,35287,35288,35301,35305,35307,35309,35313,35315,35318,35321,35325,35327,35332,35333,35335,35343,35345,35346,35348,35349,35358,35360,35362,35364,35366,35371,35372,35375,35381,35383,35389,35390,35392,35395,35397,35399,35401,35405,35406,35411,35414,35415,35416,35420,35421,35425,35429,35431,35445,35446,35447,35449,35450,35451,35454,35455,35456,35459,35462,35467,35471,35472,35474,35478,35479,35481,35487,35495,35497,35502,35503,35507,35510,35511,35515,35518,35523,35526,35528,35529,35530,35537,35539,35540,35541,35543,35549,35551,35564,35568,35572,35573,35574,35580,35583,35589,35590,35595,35601,35612,35614,35615,35594,35629,35632,35639,35644,35650,35651,35652,35653,35654,35656,35666,35667,35668,35673,35661,35678,35683,35693,35702,35704,35705,35708,35710,35713,35716,35717,35723,35725,35727,35732,35733,35740,35742,35743,35896,35897,35901,35902,35909,35911,35913,35915,35919,35921,35923,35924,35927,35928,35931,35933,35929,35939,35940,35942,35944,35945,35949,35955,35957,35958,35963,35966,35974,35975,35979,35984,35986,35987,35993,35995,35996,36004,36025,36026,36037,36038,36041,36043,36047,36054,36053,36057,36061,36065,36072,36076,36079,36080,36082,36085,36087,36088,36094,36095,36097,36099,36105,36114,36119,36123,36197,36201,36204,36206,36223,36226,36228,36232,36237,36240,36241,36245,36254,36255,36256,36262,36267,36268,36271,36274,36277,36279,36281,36283,36288,36293,36294,36295,36296,36298,36302,36305,36308,36309,36311,36313,36324,36325,36327,36332,36336,36284,36337,36338,36340,36349,36353,36356,36357,36358,36363,36369,36372,36374,36384,36385,36386,36387,36390,36391,36401,36403,36406,36407,36408,36409,36413,36416,36417,36427,36429,36430,36431,36436,36443,36444,36445,36446,36449,36450,36457,36460,36461,36463,36464,36465,36473,36474,36475,36482,36483,36489,36496,36498,36501,36506,36507,36509,36510,36514,36519,36521,36525,36526,36531,36533,36538,36539,36544,36545,36547,36548,36551,36559,36561,36564,36572,36584,36590,36592,36593,36599,36601,36602,36589,36608,36610,36615,36616,36623,36624,36630,36631,36632,36638,36640,36641,36643,36645,36647,36648,36652,36653,36654,36660,36661,36662,36663,36666,36672,36673,36675,36679,36687,36689,36690,36691,36692,36693,36696,36701,36702,36709,36765,36768,36769,36772,36773,36774,36789,36790,36792,36798,36800,36801,36806,36810,36811,36813,36816,36818,36819,36821,36832,36835,36836,36840,36846,36849,36853,36854,36859,36862,36866,36868,36872,36876,36888,36891,36904,36905,36911,36906,36908,36909,36915,36916,36919,36927,36931,36932,36940,36955,36957,36962,36966,36967,36972,36976,36980,36985,36997,37000,37003,37004,37006,37008,37013,37015,37016,37017,37019,37024,37025,37026,37029,37040,37042,37043,37044,37046,37053,37068,37054,37059,37060,37061,37063,37064,37077,37079,37080,37081,37084,37085,37087,37093,37074,37110,37099,37103,37104,37108,37118,37119,37120,37124,37125,37126,37128,37133,37136,37140,37142,37143,37144,37146,37148,37150,37152,37157,37154,37155,37159,37161,37166,37167,37169,37172,37174,37175,37177,37178,37180,37181,37187,37191,37192,37199,37203,37207,37209,37210,37211,37217,37220,37223,37229,37236,37241,37242,37243,37249,37251,37253,37254,37258,37262,37265,37267,37268,37269,37272,37278,37281,37286,37288,37292,37293,37294,37296,37297,37298,37299,37302,37307,37308,37309,37311,37314,37315,37317,37331,37332,37335,37337,37338,37342,37348,37349,37353,37354,37356,37357,37358,37359,37360,37361,37367,37369,37371,37373,37376,37377,37380,37381,37382,37383,37385,37386,37388,37392,37394,37395,37398,37400,37404,37405,37411,37412,37413,37414,37416,37422,37423,37424,37427,37429,37430,37432,37433,37434,37436,37438,37440,37442,37443,37446,37447,37450,37453,37454,37455,37457,37464,37465,37468,37469,37472,37473,37477,37479,37480,37481,37486,37487,37488,37493,37494,37495,37496,37497,37499,37500,37501,37503,37512,37513,37514,37517,37518,37522,37527,37529,37535,37536,37540,37541,37543,37544,37547,37551,37554,37558,37560,37562,37563,37564,37565,37567,37568,37569,37570,37571,37573,37574,37575,37576,37579,37580,37581,37582,37584,37587,37589,37591,37592,37593,37596,37597,37599,37600,37601,37603,37605,37607,37608,37612,37614,37616,37625,37627,37631,37632,37634,37640,37645,37649,37652,37653,37660,37661,37662,37663,37665,37668,37669,37671,37673,37674,37683,37684,37686,37687,37703,37704,37705,37712,37713,37714,37717,37719,37720,37722,37726,37732,37733,37735,37737,37738,37741,37743,37744,37745,37747,37748,37750,37754,37757,37759,37760,37761,37762,37768,37770,37771,37773,37775,37778,37781,37784,37787,37790,37793,37795,37796,37798,37800,37803,37812,37813,37814,37818,37801,37825,37828,37829,37830,37831,37833,37834,37835,37836,37837,37843,37849,37852,37854,37855,37858,37862,37863,37881,37879,37880,37882,37883,37885,37889,37890,37892,37896,37897,37901,37902,37903,37909,37910,37911,37919,37934,37935,37937,37938,37939,37940,37947,37951,37949,37955,37957,37960,37962,37964,37973,37977,37980,37983,37985,37987,37992,37995,37997,37998,37999,38001,38002,38020,38019,38264,38265,38270,38276,38280,38284,38285,38286,38301,38302,38303,38305,38310,38313,38315,38316,38324,38326,38330,38333,38335,38342,38344,38345,38347,38352,38353,38354,38355,38361,38362,38365,38366,38367,38368,38372,38374,38429,38430,38434,38436,38437,38438,38444,38449,38451,38455,38456,38457,38458,38460,38461,38465,38482,38484,38486,38487,38488,38497,38510,38516,38523,38524,38526,38527,38529,38530,38531,38532,38537,38545,38550,38554,38557,38559,38564,38565,38566,38569,38574,38575,38579,38586,38602,38610,23986,38616,38618,38621,38622,38623,38633,38639,38641,38650,38658,38659,38661,38665,38682,38683,38685,38689,38690,38691,38696,38705,38707,38721,38723,38730,38734,38735,38741,38743,38744,38746,38747,38755,38759,38762,38766,38771,38774,38775,38776,38779,38781,38783,38784,38793,38805,38806,38807,38809,38810,38814,38815,38818,38828,38830,38833,38834,38837,38838,38840,38841,38842,38844,38846,38847,38849,38852,38853,38855,38857,38858,38860,38861,38862,38864,38865,38868,38871,38872,38873,38877,38878,38880,38875,38881,38884,38895,38897,38900,38903,38904,38906,38919,38922,38937,38925,38926,38932,38934,38940,38942,38944,38947,38950,38955,38958,38959,38960,38962,38963,38965,38949,38974,38980,38983,38986,38993,38994,38995,38998,38999,39001,39002,39010,39011,39013,39014,39018,39020,39083,39085,39086,39088,39092,39095,39096,39098,39099,39103,39106,39109,39112,39116,39137,39139,39141,39142,39143,39146,39155,39158,39170,39175,39176,39185,39189,39190,39191,39194,39195,39196,39199,39202,39206,39207,39211,39217,39218,39219,39220,39221,39225,39226,39227,39228,39232,39233,39238,39239,39240,39245,39246,39252,39256,39257,39259,39260,39262,39263,39264,39323,39325,39327,39334,39344,39345,39346,39349,39353,39354,39357,39359,39363,39369,39379,39380,39385,39386,39388,39390,39399,39402,39403,39404,39408,39412,39413,39417,39421,39422,39426,39427,39428,39435,39436,39440,39441,39446,39454,39456,39458,39459,39460,39463,39469,39470,39475,39477,39478,39480,39495,39489,39492,39498,39499,39500,39502,39505,39508,39510,39517,39594,39596,39598,39599,39602,39604,39605,39606,39609,39611,39614,39615,39617,39619,39622,39624,39630,39632,39634,39637,39638,39639,39643,39644,39648,39652,39653,39655,39657,39660,39666,39667,39669,39673,39674,39677,39679,39680,39681,39682,39683,39684,39685,39688,39689,39691,39692,39693,39694,39696,39698,39702,39705,39707,39708,39712,39718,39723,39725,39731,39732,39733,39735,39737,39738,39741,39752,39755,39756,39765,39766,39767,39771,39774,39777,39779,39781,39782,39784,39786,39787,39788,39789,39790,39795,39797,39799,39800,39801,39807,39808,39812,39813,39814,39815,39817,39818,39819,39821,39823,39824,39828,39834,39837,39838,39846,39847,39849,39852,39856,39857,39858,39863,39864,39867,39868,39870,39871,39873,39879,39880,39886,39888,39895,39896,39901,39903,39909,39911,39914,39915,39919,39923,39927,39928,39929,39930,39933,39935,39936,39938,39947,39951,39953,39958,39960,39961,39962,39964,39966,39970,39971,39974,39975,39976,39977,39978,39985,39989,39990,39991,39997,40001,40003,40004,40005,40009,40010,40014,40015,40016,40019,40020,40022,40024,40027,40029,40030,40031,40035,40041,40042,40028,40043,40040,40046,40048,40050,40053,40055,40059,40166,40178,40183,40185,40203,40194,40209,40215,40216,40220,40221,40222,40239,40240,40242,40243,40244,40250,40252,40261,40253,40258,40259,40263,40266,40275,40276,40287,40291,40290,40293,40297,40298,40299,40304,40310,40311,40315,40316,40318,40323,40324,40326,40330,40333,40334,40338,40339,40341,40342,40343,40344,40353,40362,40364,40366,40369,40373,40377,40380,40383,40387,40391,40393,40394,40404,40405,40406,40407,40410,40414,40415,40416,40421,40423,40425,40427,40430,40432,40435,40436,40446,40458,40450,40455,40462,40464,40465,40466,40469,40470,40473,40476,40477,40570,40571,40572,40576,40578,40579,40580,40581,40583,40590,40591,40598,40600,40603,40606,40612,40616,40620,40622,40623,40624,40627,40628,40629,40646,40648,40651,40661,40671,40676,40679,40684,40685,40686,40688,40689,40690,40693,40696,40703,40706,40707,40713,40719,40720,40721,40722,40724,40726,40727,40729,40730,40731,40735,40738,40742,40746,40747,40751,40753,40754,40756,40759,40761,40762,40764,40765,40767,40769,40771,40772,40773,40774,40775,40787,40789,40790,40791,40792,40794,40797,40798,40808,40809,40813,40814,40815,40816,40817,40819,40821,40826,40829,40847,40848,40849,40850,40852,40854,40855,40862,40865,40866,40867,40869,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],&#xD;  "ibm866":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1025,1105,1028,1108,1031,1111,1038,1118,176,8729,183,8730,8470,164,9632,160],&#xD;  "iso-8859-2":[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,260,728,321,164,317,346,167,168,352,350,356,377,173,381,379,176,261,731,322,180,318,347,711,184,353,351,357,378,733,382,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],&#xD;  "iso-8859-3":[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,294,728,163,164,null,292,167,168,304,350,286,308,173,null,379,176,295,178,179,180,181,293,183,184,305,351,287,309,189,null,380,192,193,194,null,196,266,264,199,200,201,202,203,204,205,206,207,null,209,210,211,212,288,214,215,284,217,218,219,220,364,348,223,224,225,226,null,228,267,265,231,232,233,234,235,236,237,238,239,null,241,242,243,244,289,246,247,285,249,250,251,252,365,349,729],&#xD;  "iso-8859-4":[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,260,312,342,164,296,315,167,168,352,274,290,358,173,381,175,176,261,731,343,180,297,316,711,184,353,275,291,359,330,382,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,298,272,325,332,310,212,213,214,215,216,370,218,219,220,360,362,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,299,273,326,333,311,244,245,246,247,248,371,250,251,252,361,363,729],&#xD;  "iso-8859-5":[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,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,173,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8470,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,167,1118,1119],&#xD;  "iso-8859-6":[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,null,null,null,164,null,null,null,null,null,null,null,1548,173,null,null,null,null,null,null,null,null,null,null,null,null,null,1563,null,null,null,1567,null,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,null,null,null,null,null,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,null,null,null,null,null,null,null,null,null,null,null,null,null],&#xD;  "iso-8859-7":[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,8216,8217,163,8364,8367,166,167,168,169,890,171,172,173,null,8213,176,177,178,179,900,901,902,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],&#xD;  "iso-8859-8":[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,null,162,163,164,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,8215,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],&#xD;  "iso-8859-10":[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,260,274,290,298,296,310,167,315,272,352,358,381,173,362,330,176,261,275,291,299,297,311,183,316,273,353,359,382,8213,363,331,256,193,194,195,196,197,198,302,268,201,280,203,278,205,206,207,208,325,332,211,212,213,214,360,216,370,218,219,220,221,222,223,257,225,226,227,228,229,230,303,269,233,281,235,279,237,238,239,240,326,333,243,244,245,246,361,248,371,250,251,252,253,254,312],&#xD;  "iso-8859-13":[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,8221,162,163,164,8222,166,167,216,169,342,171,172,173,174,198,176,177,178,179,8220,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,8217],&#xD;  "iso-8859-14":[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,7682,7683,163,266,267,7690,167,7808,169,7810,7691,7922,173,174,376,7710,7711,288,289,7744,7745,182,7766,7809,7767,7811,7776,7923,7812,7813,7777,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,372,209,210,211,212,213,214,7786,216,217,218,219,220,221,374,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,373,241,242,243,244,245,246,7787,248,249,250,251,252,253,375,255],&#xD;  "iso-8859-15":[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,8364,165,352,167,353,169,170,171,172,173,174,175,176,177,178,179,381,181,182,183,382,185,186,187,338,339,376,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],&#xD;  "iso-8859-16":[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,260,261,321,8364,8222,352,167,353,169,536,171,377,173,378,379,176,177,268,322,381,8221,182,183,382,269,537,187,338,339,376,380,192,193,194,258,196,262,198,199,200,201,202,203,204,205,206,207,272,323,210,211,212,336,214,346,368,217,218,219,220,280,538,223,224,225,226,259,228,263,230,231,232,233,234,235,236,237,238,239,273,324,242,243,244,337,246,347,369,249,250,251,252,281,539,255],&#xD;  "koi8-r":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,1025,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],&#xD;  "koi8-u":[9472,9474,9484,9488,9492,9496,9500,9508,9516,9524,9532,9600,9604,9608,9612,9616,9617,9618,9619,8992,9632,8729,8730,8776,8804,8805,160,8993,176,178,183,247,9552,9553,9554,1105,1108,9556,1110,1111,9559,9560,9561,9562,9563,1169,1118,9566,9567,9568,9569,1025,1028,9571,1030,1031,9574,9575,9576,9577,9578,1168,1038,169,1102,1072,1073,1094,1076,1077,1092,1075,1093,1080,1081,1082,1083,1084,1085,1086,1087,1103,1088,1089,1090,1091,1078,1074,1100,1099,1079,1096,1101,1097,1095,1098,1070,1040,1041,1062,1044,1045,1060,1043,1061,1048,1049,1050,1051,1052,1053,1054,1055,1071,1056,1057,1058,1059,1046,1042,1068,1067,1047,1064,1069,1065,1063,1066],&#xD;  "macintosh":[196,197,199,201,209,214,220,225,224,226,228,227,229,231,233,232,234,235,237,236,238,239,241,243,242,244,246,245,250,249,251,252,8224,176,162,163,167,8226,182,223,174,169,8482,180,168,8800,198,216,8734,177,8804,8805,165,181,8706,8721,8719,960,8747,170,186,937,230,248,191,161,172,8730,402,8776,8710,171,187,8230,160,192,195,213,338,339,8211,8212,8220,8221,8216,8217,247,9674,255,376,8260,8364,8249,8250,64257,64258,8225,183,8218,8222,8240,194,202,193,203,200,205,206,207,204,211,212,63743,210,218,219,217,305,710,732,175,728,729,730,184,733,731,711],&#xD;  "windows-874":[8364,129,130,131,132,8230,134,135,136,137,138,139,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,153,154,155,156,157,158,159,160,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,null,null,null,null,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,null,null,null,null],&#xD;  "windows-1250":[8364,129,8218,131,8222,8230,8224,8225,136,8240,352,8249,346,356,381,377,144,8216,8217,8220,8221,8226,8211,8212,152,8482,353,8250,347,357,382,378,160,711,728,321,164,260,166,167,168,169,350,171,172,173,174,379,176,177,731,322,180,181,182,183,184,261,351,187,317,733,318,380,340,193,194,258,196,313,262,199,268,201,280,203,282,205,206,270,272,323,327,211,212,336,214,215,344,366,218,368,220,221,354,223,341,225,226,259,228,314,263,231,269,233,281,235,283,237,238,271,273,324,328,243,244,337,246,247,345,367,250,369,252,253,355,729],&#xD;  "windows-1251":[1026,1027,8218,1107,8222,8230,8224,8225,8364,8240,1033,8249,1034,1036,1035,1039,1106,8216,8217,8220,8221,8226,8211,8212,152,8482,1113,8250,1114,1116,1115,1119,160,1038,1118,1032,164,1168,166,167,1025,169,1028,171,172,173,174,1031,176,177,1030,1110,1169,181,182,183,1105,8470,1108,187,1112,1029,1109,1111,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103],&#xD;  "windows-1252":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376,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],&#xD;  "windows-1253":[8364,129,8218,402,8222,8230,8224,8225,136,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,157,158,159,160,901,902,163,164,165,166,167,168,169,null,171,172,173,174,8213,176,177,178,179,900,181,182,183,904,905,906,187,908,189,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,null,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,null],&#xD;  "windows-1254":[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,158,376,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,286,209,210,211,212,213,214,215,216,217,218,219,220,304,350,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,287,241,242,243,244,245,246,247,248,249,250,251,252,305,351,255],&#xD;  "windows-1255":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,140,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,156,157,158,159,160,161,162,163,8362,165,166,167,168,169,215,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,247,187,188,189,190,191,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1520,1521,1522,1523,1524,null,null,null,null,null,null,null,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,null,null,8206,8207,null],&#xD;  "windows-1256":[8364,1662,8218,402,8222,8230,8224,8225,710,8240,1657,8249,338,1670,1688,1672,1711,8216,8217,8220,8221,8226,8211,8212,1705,8482,1681,8250,339,8204,8205,1722,160,1548,162,163,164,165,166,167,168,169,1726,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,1563,187,188,189,190,1567,1729,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,215,1591,1592,1593,1594,1600,1601,1602,1603,224,1604,226,1605,1606,1607,1608,231,232,233,234,235,1609,1610,238,239,1611,1612,1613,1614,244,1615,1616,247,1617,249,1618,251,252,8206,8207,1746],&#xD;  "windows-1257":[8364,129,8218,131,8222,8230,8224,8225,136,8240,138,8249,140,168,711,184,144,8216,8217,8220,8221,8226,8211,8212,152,8482,154,8250,156,175,731,159,160,null,162,163,164,null,166,167,216,169,342,171,172,173,174,198,176,177,178,179,180,181,182,183,248,185,343,187,188,189,190,230,260,302,256,262,196,197,280,274,268,201,377,278,290,310,298,315,352,323,325,211,332,213,214,215,370,321,346,362,220,379,381,223,261,303,257,263,228,229,281,275,269,233,378,279,291,311,299,316,353,324,326,243,333,245,246,247,371,322,347,363,252,380,382,729],&#xD;  "windows-1258":[8364,129,8218,402,8222,8230,8224,8225,710,8240,138,8249,338,141,142,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,154,8250,339,157,158,376,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,258,196,197,198,199,200,201,202,203,768,205,206,207,272,209,777,211,212,416,214,215,216,217,218,219,220,431,771,223,224,225,226,259,228,229,230,231,232,233,234,235,769,237,238,239,273,241,803,243,244,417,246,247,248,249,250,251,252,432,8363,255],&#xD;  "x-mac-cyrillic":[1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,8224,176,1168,163,167,8226,182,1030,174,169,8482,1026,1106,8800,1027,1107,8734,177,8804,8805,1110,181,1169,1032,1028,1108,1031,1111,1033,1113,1034,1114,1112,1029,172,8730,402,8776,8710,171,187,8230,160,1035,1115,1036,1116,1109,8211,8212,8220,8221,8216,8217,247,8222,1038,1118,1039,1119,8470,1025,1105,1103,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,8364]&#xD;};&#xD;&#xD;// For strict environments where `this` inside the global scope&#xD;// is `undefined`, take a pure object instead&#xD;}(this || {}));&#xD;&#xD;/***/ }),&#xD;/* 58 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// This is free and unencumbered software released into the public domain.&#xD;// See LICENSE.md for more information.&#xD;&#xD;/**&#xD; * @fileoverview Global |this| required for resolving indexes in node.&#xD; * @suppress {globalThis}&#xD; */&#xD;(function(global) {&#xD;  &apos;use strict&apos;;&#xD;&#xD;  // If we&apos;re in node require encoding-indexes and attach it to the global.&#xD;  if (typeof module !== "undefined" &amp;&amp; module.exports &amp;&amp;&#xD;    !global["encoding-indexes"]) {&#xD;    global["encoding-indexes"] =&#xD;      __webpack_require__(57)["encoding-indexes"];&#xD;  }&#xD;&#xD;  //&#xD;  // Utilities&#xD;  //&#xD;&#xD;  /**&#xD;   * @param {number} a The number to test.&#xD;   * @param {number} min The minimum value in the range, inclusive.&#xD;   * @param {number} max The maximum value in the range, inclusive.&#xD;   * @return {boolean} True if a &gt;= min and a &lt;= max.&#xD;   */&#xD;  function inRange(a, min, max) {&#xD;    return min &lt;= a &amp;&amp; a &lt;= max;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {!Array.&lt;*&gt;} array The array to check.&#xD;   * @param {*} item The item to look for in the array.&#xD;   * @return {boolean} True if the item appears in the array.&#xD;   */&#xD;  function includes(array, item) {&#xD;    return array.indexOf(item) !== -1;&#xD;  }&#xD;&#xD;  var floor = Math.floor;&#xD;&#xD;  /**&#xD;   * @param {*} o&#xD;   * @return {Object}&#xD;   */&#xD;  function ToDictionary(o) {&#xD;    if (o === undefined) return {};&#xD;    if (o === Object(o)) return o;&#xD;    throw TypeError(&apos;Could not convert argument to dictionary&apos;);&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {string} string Input string of UTF-16 code units.&#xD;   * @return {!Array.&lt;number&gt;} Code points.&#xD;   */&#xD;  function stringToCodePoints(string) {&#xD;    // https://heycam.github.io/webidl/#dfn-obtain-unicode&#xD;&#xD;    // 1. Let S be the DOMString value.&#xD;    var s = String(string);&#xD;&#xD;    // 2. Let n be the length of S.&#xD;    var n = s.length;&#xD;&#xD;    // 3. Initialize i to 0.&#xD;    var i = 0;&#xD;&#xD;    // 4. Initialize U to be an empty sequence of Unicode characters.&#xD;    var u = [];&#xD;&#xD;    // 5. While i &lt; n:&#xD;    while (i &lt; n) {&#xD;&#xD;      // 1. Let c be the code unit in S at index i.&#xD;      var c = s.charCodeAt(i);&#xD;&#xD;      // 2. Depending on the value of c:&#xD;&#xD;      // c &lt; 0xD800 or c &gt; 0xDFFF&#xD;      if (c &lt; 0xD800 || c &gt; 0xDFFF) {&#xD;        // Append to U the Unicode character with code point c.&#xD;        u.push(c);&#xD;      }&#xD;&#xD;      // 0xDC00 ≤ c ≤ 0xDFFF&#xD;      else if (0xDC00 &lt;= c &amp;&amp; c &lt;= 0xDFFF) {&#xD;        // Append to U a U+FFFD REPLACEMENT CHARACTER.&#xD;        u.push(0xFFFD);&#xD;      }&#xD;&#xD;      // 0xD800 ≤ c ≤ 0xDBFF&#xD;      else if (0xD800 &lt;= c &amp;&amp; c &lt;= 0xDBFF) {&#xD;        // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT&#xD;        // CHARACTER.&#xD;        if (i === n - 1) {&#xD;          u.push(0xFFFD);&#xD;        }&#xD;        // 2. Otherwise, i &lt; n−1:&#xD;        else {&#xD;          // 1. Let d be the code unit in S at index i+1.&#xD;          var d = s.charCodeAt(i + 1);&#xD;&#xD;          // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:&#xD;          if (0xDC00 &lt;= d &amp;&amp; d &lt;= 0xDFFF) {&#xD;            // 1. Let a be c &amp; 0x3FF.&#xD;            var a = c &amp; 0x3FF;&#xD;&#xD;            // 2. Let b be d &amp; 0x3FF.&#xD;            var b = d &amp; 0x3FF;&#xD;&#xD;            // 3. Append to U the Unicode character with code point&#xD;            // 2^16+2^10*a+b.&#xD;            u.push(0x10000 + (a &lt;&lt; 10) + b);&#xD;&#xD;            // 4. Set i to i+1.&#xD;            i += 1;&#xD;          }&#xD;&#xD;          // 3. Otherwise, d &lt; 0xDC00 or d &gt; 0xDFFF. Append to U a&#xD;          // U+FFFD REPLACEMENT CHARACTER.&#xD;          else  {&#xD;            u.push(0xFFFD);&#xD;          }&#xD;        }&#xD;      }&#xD;&#xD;      // 3. Set i to i+1.&#xD;      i += 1;&#xD;    }&#xD;&#xD;    // 6. Return U.&#xD;    return u;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {!Array.&lt;number&gt;} code_points Array of code points.&#xD;   * @return {string} string String of UTF-16 code units.&#xD;   */&#xD;  function codePointsToString(code_points) {&#xD;    var s = &apos;&apos;;&#xD;    for (var i = 0; i &lt; code_points.length; ++i) {&#xD;      var cp = code_points[i];&#xD;      if (cp &lt;= 0xFFFF) {&#xD;        s += String.fromCharCode(cp);&#xD;      } else {&#xD;        cp -= 0x10000;&#xD;        s += String.fromCharCode((cp &gt;&gt; 10) + 0xD800,&#xD;                                 (cp &amp; 0x3FF) + 0xDC00);&#xD;      }&#xD;    }&#xD;    return s;&#xD;  }&#xD;&#xD;&#xD;  //&#xD;  // Implementation of Encoding specification&#xD;  // https://encoding.spec.whatwg.org/&#xD;  //&#xD;&#xD;  //&#xD;  // 4. Terminology&#xD;  //&#xD;&#xD;  /**&#xD;   * An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.&#xD;   * @param {number} a The number to test.&#xD;   * @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.&#xD;   */&#xD;  function isASCIIByte(a) {&#xD;    return 0x00 &lt;= a &amp;&amp; a &lt;= 0x7F;&#xD;  }&#xD;&#xD;  /**&#xD;   * An ASCII code point is a code point in the range U+0000 to&#xD;   * U+007F, inclusive.&#xD;   */&#xD;  var isASCIICodePoint = isASCIIByte;&#xD;&#xD;&#xD;  /**&#xD;   * End-of-stream is a special token that signifies no more tokens&#xD;   * are in the stream.&#xD;   * @const&#xD;   */ var end_of_stream = -1;&#xD;&#xD;  /**&#xD;   * A stream represents an ordered sequence of tokens.&#xD;   *&#xD;   * @constructor&#xD;   * @param {!(Array.&lt;number&gt;|Uint8Array)} tokens Array of tokens that provide&#xD;   * the stream.&#xD;   */&#xD;  function Stream(tokens) {&#xD;    /** @type {!Array.&lt;number&gt;} */&#xD;    this.tokens = [].slice.call(tokens);&#xD;    // Reversed as push/pop is more efficient than shift/unshift.&#xD;    this.tokens.reverse();&#xD;  }&#xD;&#xD;  Stream.prototype = {&#xD;    /**&#xD;     * @return {boolean} True if end-of-stream has been hit.&#xD;     */&#xD;    endOfStream: function() {&#xD;      return !this.tokens.length;&#xD;    },&#xD;&#xD;    /**&#xD;     * When a token is read from a stream, the first token in the&#xD;     * stream must be returned and subsequently removed, and&#xD;     * end-of-stream must be returned otherwise.&#xD;     *&#xD;     * @return {number} Get the next token from the stream, or&#xD;     * end_of_stream.&#xD;     */&#xD;     read: function() {&#xD;      if (!this.tokens.length)&#xD;        return end_of_stream;&#xD;       return this.tokens.pop();&#xD;     },&#xD;&#xD;    /**&#xD;     * When one or more tokens are prepended to a stream, those tokens&#xD;     * must be inserted, in given order, before the first token in the&#xD;     * stream.&#xD;     *&#xD;     * @param {(number|!Array.&lt;number&gt;)} token The token(s) to prepend to the&#xD;     * stream.&#xD;     */&#xD;    prepend: function(token) {&#xD;      if (Array.isArray(token)) {&#xD;        var tokens = /**@type {!Array.&lt;number&gt;}*/(token);&#xD;        while (tokens.length)&#xD;          this.tokens.push(tokens.pop());&#xD;      } else {&#xD;        this.tokens.push(token);&#xD;      }&#xD;    },&#xD;&#xD;    /**&#xD;     * When one or more tokens are pushed to a stream, those tokens&#xD;     * must be inserted, in given order, after the last token in the&#xD;     * stream.&#xD;     *&#xD;     * @param {(number|!Array.&lt;number&gt;)} token The tokens(s) to push to the&#xD;     * stream.&#xD;     */&#xD;    push: function(token) {&#xD;      if (Array.isArray(token)) {&#xD;        var tokens = /**@type {!Array.&lt;number&gt;}*/(token);&#xD;        while (tokens.length)&#xD;          this.tokens.unshift(tokens.shift());&#xD;      } else {&#xD;        this.tokens.unshift(token);&#xD;      }&#xD;    }&#xD;  };&#xD;&#xD;  //&#xD;  // 5. Encodings&#xD;  //&#xD;&#xD;  // 5.1 Encoders and decoders&#xD;&#xD;  /** @const */&#xD;  var finished = -1;&#xD;&#xD;  /**&#xD;   * @param {boolean} fatal If true, decoding errors raise an exception.&#xD;   * @param {number=} opt_code_point Override the standard fallback code point.&#xD;   * @return {number} The code point to insert on a decoding error.&#xD;   */&#xD;  function decoderError(fatal, opt_code_point) {&#xD;    if (fatal)&#xD;      throw TypeError(&apos;Decoder error&apos;);&#xD;    return opt_code_point || 0xFFFD;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {number} code_point The code point that could not be encoded.&#xD;   * @return {number} Always throws, no value is actually returned.&#xD;   */&#xD;  function encoderError(code_point) {&#xD;    throw TypeError(&apos;The code point &apos; + code_point + &apos; could not be encoded.&apos;);&#xD;  }&#xD;&#xD;  /** @interface */&#xD;  function Decoder() {}&#xD;  Decoder.prototype = {&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point, or |finished|.&#xD;     */&#xD;    handler: function(stream, bite) {}&#xD;  };&#xD;&#xD;  /** @interface */&#xD;  function Encoder() {}&#xD;  Encoder.prototype = {&#xD;    /**&#xD;     * @param {Stream} stream The stream of code points being encoded.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit, or |finished|.&#xD;     */&#xD;    handler: function(stream, code_point) {}&#xD;  };&#xD;&#xD;  // 5.2 Names and labels&#xD;&#xD;  // TODO: Define @typedef for Encoding: {name:string,labels:Array.&lt;string&gt;}&#xD;  // https://github.com/google/closure-compiler/issues/247&#xD;&#xD;  /**&#xD;   * @param {string} label The encoding label.&#xD;   * @return {?{name:string,labels:Array.&lt;string&gt;}}&#xD;   */&#xD;  function getEncoding(label) {&#xD;    // 1. Remove any leading and trailing ASCII whitespace from label.&#xD;    label = String(label).trim().toLowerCase();&#xD;&#xD;    // 2. If label is an ASCII case-insensitive match for any of the&#xD;    // labels listed in the table below, return the corresponding&#xD;    // encoding, and failure otherwise.&#xD;    if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {&#xD;      return label_to_encoding[label];&#xD;    }&#xD;    return null;&#xD;  }&#xD;&#xD;  /**&#xD;   * Encodings table: https://encoding.spec.whatwg.org/encodings.json&#xD;   * @const&#xD;   * @type {!Array.&lt;{&#xD;   *          heading: string,&#xD;   *          encodings: Array.&lt;{name:string,labels:Array.&lt;string&gt;}&gt;&#xD;   *        }&gt;}&#xD;   */&#xD;  var encodings = [&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "unicode-1-1-utf-8",&#xD;            "utf-8",&#xD;            "utf8"&#xD;          ],&#xD;          "name": "UTF-8"&#xD;        }&#xD;      ],&#xD;      "heading": "The Encoding"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "866",&#xD;            "cp866",&#xD;            "csibm866",&#xD;            "ibm866"&#xD;          ],&#xD;          "name": "IBM866"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatin2",&#xD;            "iso-8859-2",&#xD;            "iso-ir-101",&#xD;            "iso8859-2",&#xD;            "iso88592",&#xD;            "iso_8859-2",&#xD;            "iso_8859-2:1987",&#xD;            "l2",&#xD;            "latin2"&#xD;          ],&#xD;          "name": "ISO-8859-2"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatin3",&#xD;            "iso-8859-3",&#xD;            "iso-ir-109",&#xD;            "iso8859-3",&#xD;            "iso88593",&#xD;            "iso_8859-3",&#xD;            "iso_8859-3:1988",&#xD;            "l3",&#xD;            "latin3"&#xD;          ],&#xD;          "name": "ISO-8859-3"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatin4",&#xD;            "iso-8859-4",&#xD;            "iso-ir-110",&#xD;            "iso8859-4",&#xD;            "iso88594",&#xD;            "iso_8859-4",&#xD;            "iso_8859-4:1988",&#xD;            "l4",&#xD;            "latin4"&#xD;          ],&#xD;          "name": "ISO-8859-4"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatincyrillic",&#xD;            "cyrillic",&#xD;            "iso-8859-5",&#xD;            "iso-ir-144",&#xD;            "iso8859-5",&#xD;            "iso88595",&#xD;            "iso_8859-5",&#xD;            "iso_8859-5:1988"&#xD;          ],&#xD;          "name": "ISO-8859-5"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "arabic",&#xD;            "asmo-708",&#xD;            "csiso88596e",&#xD;            "csiso88596i",&#xD;            "csisolatinarabic",&#xD;            "ecma-114",&#xD;            "iso-8859-6",&#xD;            "iso-8859-6-e",&#xD;            "iso-8859-6-i",&#xD;            "iso-ir-127",&#xD;            "iso8859-6",&#xD;            "iso88596",&#xD;            "iso_8859-6",&#xD;            "iso_8859-6:1987"&#xD;          ],&#xD;          "name": "ISO-8859-6"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatingreek",&#xD;            "ecma-118",&#xD;            "elot_928",&#xD;            "greek",&#xD;            "greek8",&#xD;            "iso-8859-7",&#xD;            "iso-ir-126",&#xD;            "iso8859-7",&#xD;            "iso88597",&#xD;            "iso_8859-7",&#xD;            "iso_8859-7:1987",&#xD;            "sun_eu_greek"&#xD;          ],&#xD;          "name": "ISO-8859-7"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csiso88598e",&#xD;            "csisolatinhebrew",&#xD;            "hebrew",&#xD;            "iso-8859-8",&#xD;            "iso-8859-8-e",&#xD;            "iso-ir-138",&#xD;            "iso8859-8",&#xD;            "iso88598",&#xD;            "iso_8859-8",&#xD;            "iso_8859-8:1988",&#xD;            "visual"&#xD;          ],&#xD;          "name": "ISO-8859-8"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csiso88598i",&#xD;            "iso-8859-8-i",&#xD;            "logical"&#xD;          ],&#xD;          "name": "ISO-8859-8-I"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatin6",&#xD;            "iso-8859-10",&#xD;            "iso-ir-157",&#xD;            "iso8859-10",&#xD;            "iso885910",&#xD;            "l6",&#xD;            "latin6"&#xD;          ],&#xD;          "name": "ISO-8859-10"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "iso-8859-13",&#xD;            "iso8859-13",&#xD;            "iso885913"&#xD;          ],&#xD;          "name": "ISO-8859-13"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "iso-8859-14",&#xD;            "iso8859-14",&#xD;            "iso885914"&#xD;          ],&#xD;          "name": "ISO-8859-14"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csisolatin9",&#xD;            "iso-8859-15",&#xD;            "iso8859-15",&#xD;            "iso885915",&#xD;            "iso_8859-15",&#xD;            "l9"&#xD;          ],&#xD;          "name": "ISO-8859-15"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "iso-8859-16"&#xD;          ],&#xD;          "name": "ISO-8859-16"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cskoi8r",&#xD;            "koi",&#xD;            "koi8",&#xD;            "koi8-r",&#xD;            "koi8_r"&#xD;          ],&#xD;          "name": "KOI8-R"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "koi8-ru",&#xD;            "koi8-u"&#xD;          ],&#xD;          "name": "KOI8-U"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csmacintosh",&#xD;            "mac",&#xD;            "macintosh",&#xD;            "x-mac-roman"&#xD;          ],&#xD;          "name": "macintosh"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "dos-874",&#xD;            "iso-8859-11",&#xD;            "iso8859-11",&#xD;            "iso885911",&#xD;            "tis-620",&#xD;            "windows-874"&#xD;          ],&#xD;          "name": "windows-874"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1250",&#xD;            "windows-1250",&#xD;            "x-cp1250"&#xD;          ],&#xD;          "name": "windows-1250"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1251",&#xD;            "windows-1251",&#xD;            "x-cp1251"&#xD;          ],&#xD;          "name": "windows-1251"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "ansi_x3.4-1968",&#xD;            "ascii",&#xD;            "cp1252",&#xD;            "cp819",&#xD;            "csisolatin1",&#xD;            "ibm819",&#xD;            "iso-8859-1",&#xD;            "iso-ir-100",&#xD;            "iso8859-1",&#xD;            "iso88591",&#xD;            "iso_8859-1",&#xD;            "iso_8859-1:1987",&#xD;            "l1",&#xD;            "latin1",&#xD;            "us-ascii",&#xD;            "windows-1252",&#xD;            "x-cp1252"&#xD;          ],&#xD;          "name": "windows-1252"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1253",&#xD;            "windows-1253",&#xD;            "x-cp1253"&#xD;          ],&#xD;          "name": "windows-1253"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1254",&#xD;            "csisolatin5",&#xD;            "iso-8859-9",&#xD;            "iso-ir-148",&#xD;            "iso8859-9",&#xD;            "iso88599",&#xD;            "iso_8859-9",&#xD;            "iso_8859-9:1989",&#xD;            "l5",&#xD;            "latin5",&#xD;            "windows-1254",&#xD;            "x-cp1254"&#xD;          ],&#xD;          "name": "windows-1254"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1255",&#xD;            "windows-1255",&#xD;            "x-cp1255"&#xD;          ],&#xD;          "name": "windows-1255"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1256",&#xD;            "windows-1256",&#xD;            "x-cp1256"&#xD;          ],&#xD;          "name": "windows-1256"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1257",&#xD;            "windows-1257",&#xD;            "x-cp1257"&#xD;          ],&#xD;          "name": "windows-1257"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "cp1258",&#xD;            "windows-1258",&#xD;            "x-cp1258"&#xD;          ],&#xD;          "name": "windows-1258"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "x-mac-cyrillic",&#xD;            "x-mac-ukrainian"&#xD;          ],&#xD;          "name": "x-mac-cyrillic"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy single-byte encodings"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "chinese",&#xD;            "csgb2312",&#xD;            "csiso58gb231280",&#xD;            "gb2312",&#xD;            "gb_2312",&#xD;            "gb_2312-80",&#xD;            "gbk",&#xD;            "iso-ir-58",&#xD;            "x-gbk"&#xD;          ],&#xD;          "name": "GBK"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "gb18030"&#xD;          ],&#xD;          "name": "gb18030"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy multi-byte Chinese (simplified) encodings"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "big5",&#xD;            "big5-hkscs",&#xD;            "cn-big5",&#xD;            "csbig5",&#xD;            "x-x-big5"&#xD;          ],&#xD;          "name": "Big5"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy multi-byte Chinese (traditional) encodings"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "cseucpkdfmtjapanese",&#xD;            "euc-jp",&#xD;            "x-euc-jp"&#xD;          ],&#xD;          "name": "EUC-JP"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csiso2022jp",&#xD;            "iso-2022-jp"&#xD;          ],&#xD;          "name": "ISO-2022-JP"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "csshiftjis",&#xD;            "ms932",&#xD;            "ms_kanji",&#xD;            "shift-jis",&#xD;            "shift_jis",&#xD;            "sjis",&#xD;            "windows-31j",&#xD;            "x-sjis"&#xD;          ],&#xD;          "name": "Shift_JIS"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy multi-byte Japanese encodings"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "cseuckr",&#xD;            "csksc56011987",&#xD;            "euc-kr",&#xD;            "iso-ir-149",&#xD;            "korean",&#xD;            "ks_c_5601-1987",&#xD;            "ks_c_5601-1989",&#xD;            "ksc5601",&#xD;            "ksc_5601",&#xD;            "windows-949"&#xD;          ],&#xD;          "name": "EUC-KR"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy multi-byte Korean encodings"&#xD;    },&#xD;    {&#xD;      "encodings": [&#xD;        {&#xD;          "labels": [&#xD;            "csiso2022kr",&#xD;            "hz-gb-2312",&#xD;            "iso-2022-cn",&#xD;            "iso-2022-cn-ext",&#xD;            "iso-2022-kr"&#xD;          ],&#xD;          "name": "replacement"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "utf-16be"&#xD;          ],&#xD;          "name": "UTF-16BE"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "utf-16",&#xD;            "utf-16le"&#xD;          ],&#xD;          "name": "UTF-16LE"&#xD;        },&#xD;        {&#xD;          "labels": [&#xD;            "x-user-defined"&#xD;          ],&#xD;          "name": "x-user-defined"&#xD;        }&#xD;      ],&#xD;      "heading": "Legacy miscellaneous encodings"&#xD;    }&#xD;  ];&#xD;&#xD;  // Label to encoding registry.&#xD;  /** @type {Object.&lt;string,{name:string,labels:Array.&lt;string&gt;}&gt;} */&#xD;  var label_to_encoding = {};&#xD;  encodings.forEach(function(category) {&#xD;    category.encodings.forEach(function(encoding) {&#xD;      encoding.labels.forEach(function(label) {&#xD;        label_to_encoding[label] = encoding;&#xD;      });&#xD;    });&#xD;  });&#xD;&#xD;  // Registry of of encoder/decoder factories, by encoding name.&#xD;  /** @type {Object.&lt;string, function({fatal:boolean}): Encoder&gt;} */&#xD;  var encoders = {};&#xD;  /** @type {Object.&lt;string, function({fatal:boolean}): Decoder&gt;} */&#xD;  var decoders = {};&#xD;&#xD;  //&#xD;  // 6. Indexes&#xD;  //&#xD;&#xD;  /**&#xD;   * @param {number} pointer The |pointer| to search for.&#xD;   * @param {(!Array.&lt;?number&gt;|undefined)} index The |index| to search within.&#xD;   * @return {?number} The code point corresponding to |pointer| in |index|,&#xD;   *     or null if |code point| is not in |index|.&#xD;   */&#xD;  function indexCodePointFor(pointer, index) {&#xD;    if (!index) return null;&#xD;    return index[pointer] || null;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {number} code_point The |code point| to search for.&#xD;   * @param {!Array.&lt;?number&gt;} index The |index| to search within.&#xD;   * @return {?number} The first pointer corresponding to |code point| in&#xD;   *     |index|, or null if |code point| is not in |index|.&#xD;   */&#xD;  function indexPointerFor(code_point, index) {&#xD;    var pointer = index.indexOf(code_point);&#xD;    return pointer === -1 ? null : pointer;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {string} name Name of the index.&#xD;   * @return {(!Array.&lt;number&gt;|!Array.&lt;Array.&lt;number&gt;&gt;)}&#xD;   *  */&#xD;  function index(name) {&#xD;    if (!(&apos;encoding-indexes&apos; in global)) {&#xD;      throw Error("Indexes missing." +&#xD;                  " Did you forget to include encoding-indexes.js first?");&#xD;    }&#xD;    return global[&apos;encoding-indexes&apos;][name];&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {number} pointer The |pointer| to search for in the gb18030 index.&#xD;   * @return {?number} The code point corresponding to |pointer| in |index|,&#xD;   *     or null if |code point| is not in the gb18030 index.&#xD;   */&#xD;  function indexGB18030RangesCodePointFor(pointer) {&#xD;    // 1. If pointer is greater than 39419 and less than 189000, or&#xD;    // pointer is greater than 1237575, return null.&#xD;    if ((pointer &gt; 39419 &amp;&amp; pointer &lt; 189000) || (pointer &gt; 1237575))&#xD;      return null;&#xD;&#xD;    // 2. If pointer is 7457, return code point U+E7C7.&#xD;    if (pointer === 7457) return 0xE7C7;&#xD;&#xD;    // 3. Let offset be the last pointer in index gb18030 ranges that&#xD;    // is equal to or less than pointer and let code point offset be&#xD;    // its corresponding code point.&#xD;    var offset = 0;&#xD;    var code_point_offset = 0;&#xD;    var idx = index(&apos;gb18030-ranges&apos;);&#xD;    var i;&#xD;    for (i = 0; i &lt; idx.length; ++i) {&#xD;      /** @type {!Array.&lt;number&gt;} */&#xD;      var entry = idx[i];&#xD;      if (entry[0] &lt;= pointer) {&#xD;        offset = entry[0];&#xD;        code_point_offset = entry[1];&#xD;      } else {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    // 4. Return a code point whose value is code point offset +&#xD;    // pointer − offset.&#xD;    return code_point_offset + pointer - offset;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {number} code_point The |code point| to locate in the gb18030 index.&#xD;   * @return {number} The first pointer corresponding to |code point| in the&#xD;   *     gb18030 index.&#xD;   */&#xD;  function indexGB18030RangesPointerFor(code_point) {&#xD;    // 1. If code point is U+E7C7, return pointer 7457.&#xD;    if (code_point === 0xE7C7) return 7457;&#xD;&#xD;    // 2. Let offset be the last code point in index gb18030 ranges&#xD;    // that is equal to or less than code point and let pointer offset&#xD;    // be its corresponding pointer.&#xD;    var offset = 0;&#xD;    var pointer_offset = 0;&#xD;    var idx = index(&apos;gb18030-ranges&apos;);&#xD;    var i;&#xD;    for (i = 0; i &lt; idx.length; ++i) {&#xD;      /** @type {!Array.&lt;number&gt;} */&#xD;      var entry = idx[i];&#xD;      if (entry[1] &lt;= code_point) {&#xD;        offset = entry[1];&#xD;        pointer_offset = entry[0];&#xD;      } else {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    // 3. Return a pointer whose value is pointer offset + code point&#xD;    // − offset.&#xD;    return pointer_offset + code_point - offset;&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {number} code_point The |code_point| to search for in the Shift_JIS&#xD;   *     index.&#xD;   * @return {?number} The code point corresponding to |pointer| in |index|,&#xD;   *     or null if |code point| is not in the Shift_JIS index.&#xD;   */&#xD;  function indexShiftJISPointerFor(code_point) {&#xD;    // 1. Let index be index jis0208 excluding all entries whose&#xD;    // pointer is in the range 8272 to 8835, inclusive.&#xD;    shift_jis_index = shift_jis_index ||&#xD;      index(&apos;jis0208&apos;).map(function(code_point, pointer) {&#xD;        return inRange(pointer, 8272, 8835) ? null : code_point;&#xD;      });&#xD;    var index_ = shift_jis_index;&#xD;&#xD;    // 2. Return the index pointer for code point in index.&#xD;    return index_.indexOf(code_point);&#xD;  }&#xD;  var shift_jis_index;&#xD;&#xD;  /**&#xD;   * @param {number} code_point The |code_point| to search for in the big5&#xD;   *     index.&#xD;   * @return {?number} The code point corresponding to |pointer| in |index|,&#xD;   *     or null if |code point| is not in the big5 index.&#xD;   */&#xD;  function indexBig5PointerFor(code_point) {&#xD;    // 1. Let index be index Big5 excluding all entries whose pointer&#xD;    big5_index_no_hkscs = big5_index_no_hkscs ||&#xD;      index(&apos;big5&apos;).map(function(code_point, pointer) {&#xD;        return (pointer &lt; (0xA1 - 0x81) * 157) ? null : code_point;&#xD;      });&#xD;    var index_ = big5_index_no_hkscs;&#xD;&#xD;    // 2. If code point is U+2550, U+255E, U+2561, U+256A, U+5341, or&#xD;    // U+5345, return the last pointer corresponding to code point in&#xD;    // index.&#xD;    if (code_point === 0x2550 || code_point === 0x255E ||&#xD;        code_point === 0x2561 || code_point === 0x256A ||&#xD;        code_point === 0x5341 || code_point === 0x5345) {&#xD;      return index_.lastIndexOf(code_point);&#xD;    }&#xD;&#xD;    // 3. Return the index pointer for code point in index.&#xD;    return indexPointerFor(code_point, index_);&#xD;  }&#xD;  var big5_index_no_hkscs;&#xD;&#xD;  //&#xD;  // 8. API&#xD;  //&#xD;&#xD;  /** @const */ var DEFAULT_ENCODING = &apos;utf-8&apos;;&#xD;&#xD;  // 8.1 Interface TextDecoder&#xD;&#xD;  /**&#xD;   * @constructor&#xD;   * @param {string=} label The label of the encoding;&#xD;   *     defaults to &apos;utf-8&apos;.&#xD;   * @param {Object=} options&#xD;   */&#xD;  function TextDecoder(label, options) {&#xD;    // Web IDL conventions&#xD;    if (!(this instanceof TextDecoder))&#xD;      throw TypeError(&apos;Called as a function. Did you forget \&apos;new\&apos;?&apos;);&#xD;    label = label !== undefined ? String(label) : DEFAULT_ENCODING;&#xD;    options = ToDictionary(options);&#xD;&#xD;    // A TextDecoder object has an associated encoding, decoder,&#xD;    // stream, ignore BOM flag (initially unset), BOM seen flag&#xD;    // (initially unset), error mode (initially replacement), and do&#xD;    // not flush flag (initially unset).&#xD;&#xD;    /** @private */&#xD;    this._encoding = null;&#xD;    /** @private @type {?Decoder} */&#xD;    this._decoder = null;&#xD;    /** @private @type {boolean} */&#xD;    this._ignoreBOM = false;&#xD;    /** @private @type {boolean} */&#xD;    this._BOMseen = false;&#xD;    /** @private @type {string} */&#xD;    this._error_mode = &apos;replacement&apos;;&#xD;    /** @private @type {boolean} */&#xD;    this._do_not_flush = false;&#xD;&#xD;&#xD;    // 1. Let encoding be the result of getting an encoding from&#xD;    // label.&#xD;    var encoding = getEncoding(label);&#xD;&#xD;    // 2. If encoding is failure or replacement, throw a RangeError.&#xD;    if (encoding === null || encoding.name === &apos;replacement&apos;)&#xD;      throw RangeError(&apos;Unknown encoding: &apos; + label);&#xD;    if (!decoders[encoding.name]) {&#xD;      throw Error(&apos;Decoder not present.&apos; +&#xD;                  &apos; Did you forget to include encoding-indexes.js first?&apos;);&#xD;    }&#xD;&#xD;    // 3. Let dec be a new TextDecoder object.&#xD;    var dec = this;&#xD;&#xD;    // 4. Set dec&apos;s encoding to encoding.&#xD;    dec._encoding = encoding;&#xD;&#xD;    // 5. If options&apos;s fatal member is true, set dec&apos;s error mode to&#xD;    // fatal.&#xD;    if (Boolean(options[&apos;fatal&apos;]))&#xD;      dec._error_mode = &apos;fatal&apos;;&#xD;&#xD;    // 6. If options&apos;s ignoreBOM member is true, set dec&apos;s ignore BOM&#xD;    // flag.&#xD;    if (Boolean(options[&apos;ignoreBOM&apos;]))&#xD;      dec._ignoreBOM = true;&#xD;&#xD;    // For pre-ES5 runtimes:&#xD;    if (!Object.defineProperty) {&#xD;      this.encoding = dec._encoding.name.toLowerCase();&#xD;      this.fatal = dec._error_mode === &apos;fatal&apos;;&#xD;      this.ignoreBOM = dec._ignoreBOM;&#xD;    }&#xD;&#xD;    // 7. Return dec.&#xD;    return dec;&#xD;  }&#xD;&#xD;  if (Object.defineProperty) {&#xD;    // The encoding attribute&apos;s getter must return encoding&apos;s name.&#xD;    Object.defineProperty(TextDecoder.prototype, &apos;encoding&apos;, {&#xD;      /** @this {TextDecoder} */&#xD;      get: function() { return this._encoding.name.toLowerCase(); }&#xD;    });&#xD;&#xD;    // The fatal attribute&apos;s getter must return true if error mode&#xD;    // is fatal, and false otherwise.&#xD;    Object.defineProperty(TextDecoder.prototype, &apos;fatal&apos;, {&#xD;      /** @this {TextDecoder} */&#xD;      get: function() { return this._error_mode === &apos;fatal&apos;; }&#xD;    });&#xD;&#xD;    // The ignoreBOM attribute&apos;s getter must return true if ignore&#xD;    // BOM flag is set, and false otherwise.&#xD;    Object.defineProperty(TextDecoder.prototype, &apos;ignoreBOM&apos;, {&#xD;      /** @this {TextDecoder} */&#xD;      get: function() { return this._ignoreBOM; }&#xD;    });&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {BufferSource=} input The buffer of bytes to decode.&#xD;   * @param {Object=} options&#xD;   * @return {string} The decoded string.&#xD;   */&#xD;  TextDecoder.prototype.decode = function decode(input, options) {&#xD;    var bytes;&#xD;    if (typeof input === &apos;object&apos; &amp;&amp; input instanceof ArrayBuffer) {&#xD;      bytes = new Uint8Array(input);&#xD;    } else if (typeof input === &apos;object&apos; &amp;&amp; &apos;buffer&apos; in input &amp;&amp;&#xD;               input.buffer instanceof ArrayBuffer) {&#xD;      bytes = new Uint8Array(input.buffer,&#xD;                             input.byteOffset,&#xD;                             input.byteLength);&#xD;    } else {&#xD;      bytes = new Uint8Array(0);&#xD;    }&#xD;&#xD;    options = ToDictionary(options);&#xD;&#xD;    // 1. If the do not flush flag is unset, set decoder to a new&#xD;    // encoding&apos;s decoder, set stream to a new stream, and unset the&#xD;    // BOM seen flag.&#xD;    if (!this._do_not_flush) {&#xD;      this._decoder = decoders[this._encoding.name]({&#xD;        fatal: this._error_mode === &apos;fatal&apos;});&#xD;      this._BOMseen = false;&#xD;    }&#xD;&#xD;    // 2. If options&apos;s stream is true, set the do not flush flag, and&#xD;    // unset the do not flush flag otherwise.&#xD;    this._do_not_flush = Boolean(options[&apos;stream&apos;]);&#xD;&#xD;    // 3. If input is given, push a copy of input to stream.&#xD;    // TODO: Align with spec algorithm - maintain stream on instance.&#xD;    var input_stream = new Stream(bytes);&#xD;&#xD;    // 4. Let output be a new stream.&#xD;    var output = [];&#xD;&#xD;    /** @type {?(number|!Array.&lt;number&gt;)} */&#xD;    var result;&#xD;&#xD;    // 5. While true:&#xD;    while (true) {&#xD;      // 1. Let token be the result of reading from stream.&#xD;      var token = input_stream.read();&#xD;&#xD;      // 2. If token is end-of-stream and the do not flush flag is&#xD;      // set, return output, serialized.&#xD;      // TODO: Align with spec algorithm.&#xD;      if (token === end_of_stream)&#xD;        break;&#xD;&#xD;      // 3. Otherwise, run these subsubsteps:&#xD;&#xD;      // 1. Let result be the result of processing token for decoder,&#xD;      // stream, output, and error mode.&#xD;      result = this._decoder.handler(input_stream, token);&#xD;&#xD;      // 2. If result is finished, return output, serialized.&#xD;      if (result === finished)&#xD;        break;&#xD;&#xD;      if (result !== null) {&#xD;        if (Array.isArray(result))&#xD;          output.push.apply(output, /**@type {!Array.&lt;number&gt;}*/(result));&#xD;        else&#xD;          output.push(result);&#xD;      }&#xD;&#xD;      // 3. Otherwise, if result is error, throw a TypeError.&#xD;      // (Thrown in handler)&#xD;&#xD;      // 4. Otherwise, do nothing.&#xD;    }&#xD;    // TODO: Align with spec algorithm.&#xD;    if (!this._do_not_flush) {&#xD;      do {&#xD;        result = this._decoder.handler(input_stream, input_stream.read());&#xD;        if (result === finished)&#xD;          break;&#xD;        if (result === null)&#xD;          continue;&#xD;        if (Array.isArray(result))&#xD;          output.push.apply(output, /**@type {!Array.&lt;number&gt;}*/(result));&#xD;        else&#xD;          output.push(result);&#xD;      } while (!input_stream.endOfStream());&#xD;      this._decoder = null;&#xD;    }&#xD;&#xD;    // A TextDecoder object also has an associated serialize stream&#xD;    // algorithm...&#xD;    /**&#xD;     * @param {!Array.&lt;number&gt;} stream&#xD;     * @return {string}&#xD;     * @this {TextDecoder}&#xD;     */&#xD;    function serializeStream(stream) {&#xD;      // 1. Let token be the result of reading from stream.&#xD;      // (Done in-place on array, rather than as a stream)&#xD;&#xD;      // 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore&#xD;      // BOM flag and BOM seen flag are unset, run these subsubsteps:&#xD;      if (includes([&apos;UTF-8&apos;, &apos;UTF-16LE&apos;, &apos;UTF-16BE&apos;], this._encoding.name) &amp;&amp;&#xD;          !this._ignoreBOM &amp;&amp; !this._BOMseen) {&#xD;        if (stream.length &gt; 0 &amp;&amp; stream[0] === 0xFEFF) {&#xD;          // 1. If token is U+FEFF, set BOM seen flag.&#xD;          this._BOMseen = true;&#xD;          stream.shift();&#xD;        } else if (stream.length &gt; 0) {&#xD;          // 2. Otherwise, if token is not end-of-stream, set BOM seen&#xD;          // flag and append token to stream.&#xD;          this._BOMseen = true;&#xD;        } else {&#xD;          // 3. Otherwise, if token is not end-of-stream, append token&#xD;          // to output.&#xD;          // (no-op)&#xD;        }&#xD;      }&#xD;      // 4. Otherwise, return output.&#xD;      return codePointsToString(stream);&#xD;    }&#xD;&#xD;    return serializeStream.call(this, output);&#xD;  };&#xD;&#xD;  // 8.2 Interface TextEncoder&#xD;&#xD;  /**&#xD;   * @constructor&#xD;   * @param {string=} label The label of the encoding. NONSTANDARD.&#xD;   * @param {Object=} options NONSTANDARD.&#xD;   */&#xD;  function TextEncoder(label, options) {&#xD;    // Web IDL conventions&#xD;    if (!(this instanceof TextEncoder))&#xD;      throw TypeError(&apos;Called as a function. Did you forget \&apos;new\&apos;?&apos;);&#xD;    options = ToDictionary(options);&#xD;&#xD;    // A TextEncoder object has an associated encoding and encoder.&#xD;&#xD;    /** @private */&#xD;    this._encoding = null;&#xD;    /** @private @type {?Encoder} */&#xD;    this._encoder = null;&#xD;&#xD;    // Non-standard&#xD;    /** @private @type {boolean} */&#xD;    this._do_not_flush = false;&#xD;    /** @private @type {string} */&#xD;    this._fatal = Boolean(options[&apos;fatal&apos;]) ? &apos;fatal&apos; : &apos;replacement&apos;;&#xD;&#xD;    // 1. Let enc be a new TextEncoder object.&#xD;    var enc = this;&#xD;&#xD;    // 2. Set enc&apos;s encoding to UTF-8&apos;s encoder.&#xD;    if (Boolean(options[&apos;NONSTANDARD_allowLegacyEncoding&apos;])) {&#xD;      // NONSTANDARD behavior.&#xD;      label = label !== undefined ? String(label) : DEFAULT_ENCODING;&#xD;      var encoding = getEncoding(label);&#xD;      if (encoding === null || encoding.name === &apos;replacement&apos;)&#xD;        throw RangeError(&apos;Unknown encoding: &apos; + label);&#xD;      if (!encoders[encoding.name]) {&#xD;        throw Error(&apos;Encoder not present.&apos; +&#xD;                    &apos; Did you forget to include encoding-indexes.js first?&apos;);&#xD;      }&#xD;      enc._encoding = encoding;&#xD;    } else {&#xD;      // Standard behavior.&#xD;      enc._encoding = getEncoding(&apos;utf-8&apos;);&#xD;&#xD;      if (label !== undefined &amp;&amp; &apos;console&apos; in global) {&#xD;        console.warn(&apos;TextEncoder constructor called with encoding label, &apos;&#xD;                     + &apos;which is ignored.&apos;);&#xD;      }&#xD;    }&#xD;&#xD;    // For pre-ES5 runtimes:&#xD;    if (!Object.defineProperty)&#xD;      this.encoding = enc._encoding.name.toLowerCase();&#xD;&#xD;    // 3. Return enc.&#xD;    return enc;&#xD;  }&#xD;&#xD;  if (Object.defineProperty) {&#xD;    // The encoding attribute&apos;s getter must return encoding&apos;s name.&#xD;    Object.defineProperty(TextEncoder.prototype, &apos;encoding&apos;, {&#xD;      /** @this {TextEncoder} */&#xD;      get: function() { return this._encoding.name.toLowerCase(); }&#xD;    });&#xD;  }&#xD;&#xD;  /**&#xD;   * @param {string=} opt_string The string to encode.&#xD;   * @param {Object=} options&#xD;   * @return {!Uint8Array} Encoded bytes, as a Uint8Array.&#xD;   */&#xD;  TextEncoder.prototype.encode = function encode(opt_string, options) {&#xD;    opt_string = opt_string === undefined ? &apos;&apos; : String(opt_string);&#xD;    options = ToDictionary(options);&#xD;&#xD;    // NOTE: This option is nonstandard. None of the encodings&#xD;    // permitted for encoding (i.e. UTF-8, UTF-16) are stateful when&#xD;    // the input is a USVString so streaming is not necessary.&#xD;    if (!this._do_not_flush)&#xD;      this._encoder = encoders[this._encoding.name]({&#xD;        fatal: this._fatal === &apos;fatal&apos;});&#xD;    this._do_not_flush = Boolean(options[&apos;stream&apos;]);&#xD;&#xD;    // 1. Convert input to a stream.&#xD;    var input = new Stream(stringToCodePoints(opt_string));&#xD;&#xD;    // 2. Let output be a new stream&#xD;    var output = [];&#xD;&#xD;    /** @type {?(number|!Array.&lt;number&gt;)} */&#xD;    var result;&#xD;    // 3. While true, run these substeps:&#xD;    while (true) {&#xD;      // 1. Let token be the result of reading from input.&#xD;      var token = input.read();&#xD;      if (token === end_of_stream)&#xD;        break;&#xD;      // 2. Let result be the result of processing token for encoder,&#xD;      // input, output.&#xD;      result = this._encoder.handler(input, token);&#xD;      if (result === finished)&#xD;        break;&#xD;      if (Array.isArray(result))&#xD;        output.push.apply(output, /**@type {!Array.&lt;number&gt;}*/(result));&#xD;      else&#xD;        output.push(result);&#xD;    }&#xD;    // TODO: Align with spec algorithm.&#xD;    if (!this._do_not_flush) {&#xD;      while (true) {&#xD;        result = this._encoder.handler(input, input.read());&#xD;        if (result === finished)&#xD;          break;&#xD;        if (Array.isArray(result))&#xD;          output.push.apply(output, /**@type {!Array.&lt;number&gt;}*/(result));&#xD;        else&#xD;          output.push(result);&#xD;      }&#xD;      this._encoder = null;&#xD;    }&#xD;    // 3. If result is finished, convert output into a byte sequence,&#xD;    // and then return a Uint8Array object wrapping an ArrayBuffer&#xD;    // containing output.&#xD;    return new Uint8Array(output);&#xD;  };&#xD;&#xD;&#xD;  //&#xD;  // 9. The encoding&#xD;  //&#xD;&#xD;  // 9.1 utf-8&#xD;&#xD;  // 9.1.1 utf-8 decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function UTF8Decoder(options) {&#xD;    var fatal = options.fatal;&#xD;&#xD;    // utf-8&apos;s decoder&apos;s has an associated utf-8 code point, utf-8&#xD;    // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8&#xD;    // lower boundary (initially 0x80), and a utf-8 upper boundary&#xD;    // (initially 0xBF).&#xD;    var /** @type {number} */ utf8_code_point = 0,&#xD;        /** @type {number} */ utf8_bytes_seen = 0,&#xD;        /** @type {number} */ utf8_bytes_needed = 0,&#xD;        /** @type {number} */ utf8_lower_boundary = 0x80,&#xD;        /** @type {number} */ utf8_upper_boundary = 0xBF;&#xD;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,&#xD;      // set utf-8 bytes needed to 0 and return error.&#xD;      if (bite === end_of_stream &amp;&amp; utf8_bytes_needed !== 0) {&#xD;        utf8_bytes_needed = 0;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream, return finished.&#xD;      if (bite === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 3. If utf-8 bytes needed is 0, based on byte:&#xD;      if (utf8_bytes_needed === 0) {&#xD;&#xD;        // 0x00 to 0x7F&#xD;        if (inRange(bite, 0x00, 0x7F)) {&#xD;          // Return a code point whose value is byte.&#xD;          return bite;&#xD;        }&#xD;&#xD;        // 0xC2 to 0xDF&#xD;        else if (inRange(bite, 0xC2, 0xDF)) {&#xD;          // 1. Set utf-8 bytes needed to 1.&#xD;          utf8_bytes_needed = 1;&#xD;&#xD;          // 2. Set UTF-8 code point to byte &amp; 0x1F.&#xD;          utf8_code_point = bite &amp; 0x1F;&#xD;        }&#xD;&#xD;        // 0xE0 to 0xEF&#xD;        else if (inRange(bite, 0xE0, 0xEF)) {&#xD;          // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.&#xD;          if (bite === 0xE0)&#xD;            utf8_lower_boundary = 0xA0;&#xD;          // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.&#xD;          if (bite === 0xED)&#xD;            utf8_upper_boundary = 0x9F;&#xD;          // 3. Set utf-8 bytes needed to 2.&#xD;          utf8_bytes_needed = 2;&#xD;          // 4. Set UTF-8 code point to byte &amp; 0xF.&#xD;          utf8_code_point = bite &amp; 0xF;&#xD;        }&#xD;&#xD;        // 0xF0 to 0xF4&#xD;        else if (inRange(bite, 0xF0, 0xF4)) {&#xD;          // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.&#xD;          if (bite === 0xF0)&#xD;            utf8_lower_boundary = 0x90;&#xD;          // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.&#xD;          if (bite === 0xF4)&#xD;            utf8_upper_boundary = 0x8F;&#xD;          // 3. Set utf-8 bytes needed to 3.&#xD;          utf8_bytes_needed = 3;&#xD;          // 4. Set UTF-8 code point to byte &amp; 0x7.&#xD;          utf8_code_point = bite &amp; 0x7;&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        else {&#xD;          // Return error.&#xD;          return decoderError(fatal);&#xD;        }&#xD;&#xD;        // Return continue.&#xD;        return null;&#xD;      }&#xD;&#xD;      // 4. If byte is not in the range utf-8 lower boundary to utf-8&#xD;      // upper boundary, inclusive, run these substeps:&#xD;      if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {&#xD;&#xD;        // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8&#xD;        // bytes seen to 0, set utf-8 lower boundary to 0x80, and set&#xD;        // utf-8 upper boundary to 0xBF.&#xD;        utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;&#xD;        utf8_lower_boundary = 0x80;&#xD;        utf8_upper_boundary = 0xBF;&#xD;&#xD;        // 2. Prepend byte to stream.&#xD;        stream.prepend(bite);&#xD;&#xD;        // 3. Return error.&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary&#xD;      // to 0xBF.&#xD;      utf8_lower_boundary = 0x80;&#xD;      utf8_upper_boundary = 0xBF;&#xD;&#xD;      // 6. Set UTF-8 code point to (UTF-8 code point &lt;&lt; 6) | (byte &amp;&#xD;      // 0x3F)&#xD;      utf8_code_point = (utf8_code_point &lt;&lt; 6) | (bite &amp; 0x3F);&#xD;&#xD;      // 7. Increase utf-8 bytes seen by one.&#xD;      utf8_bytes_seen += 1;&#xD;&#xD;      // 8. If utf-8 bytes seen is not equal to utf-8 bytes needed,&#xD;      // continue.&#xD;      if (utf8_bytes_seen !== utf8_bytes_needed)&#xD;        return null;&#xD;&#xD;      // 9. Let code point be utf-8 code point.&#xD;      var code_point = utf8_code_point;&#xD;&#xD;      // 10. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes&#xD;      // seen to 0.&#xD;      utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;&#xD;&#xD;      // 11. Return a code point whose value is code point.&#xD;      return code_point;&#xD;    };&#xD;  }&#xD;&#xD;  // 9.1.2 utf-8 encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function UTF8Encoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. Set count and offset based on the range code point is in:&#xD;      var count, offset;&#xD;      // U+0080 to U+07FF, inclusive:&#xD;      if (inRange(code_point, 0x0080, 0x07FF)) {&#xD;        // 1 and 0xC0&#xD;        count = 1;&#xD;        offset = 0xC0;&#xD;      }&#xD;      // U+0800 to U+FFFF, inclusive:&#xD;      else if (inRange(code_point, 0x0800, 0xFFFF)) {&#xD;        // 2 and 0xE0&#xD;        count = 2;&#xD;        offset = 0xE0;&#xD;      }&#xD;      // U+10000 to U+10FFFF, inclusive:&#xD;      else if (inRange(code_point, 0x10000, 0x10FFFF)) {&#xD;        // 3 and 0xF0&#xD;        count = 3;&#xD;        offset = 0xF0;&#xD;      }&#xD;&#xD;      // 4. Let bytes be a byte sequence whose first byte is (code&#xD;      // point &gt;&gt; (6 × count)) + offset.&#xD;      var bytes = [(code_point &gt;&gt; (6 * count)) + offset];&#xD;&#xD;      // 5. Run these substeps while count is greater than 0:&#xD;      while (count &gt; 0) {&#xD;&#xD;        // 1. Set temp to code point &gt;&gt; (6 × (count − 1)).&#xD;        var temp = code_point &gt;&gt; (6 * (count - 1));&#xD;&#xD;        // 2. Append to bytes 0x80 | (temp &amp; 0x3F).&#xD;        bytes.push(0x80 | (temp &amp; 0x3F));&#xD;&#xD;        // 3. Decrease count by one.&#xD;        count -= 1;&#xD;      }&#xD;&#xD;      // 6. Return bytes bytes, in order.&#xD;      return bytes;&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;UTF-8&apos;] = function(options) {&#xD;    return new UTF8Encoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;UTF-8&apos;] = function(options) {&#xD;    return new UTF8Decoder(options);&#xD;  };&#xD;&#xD;  //&#xD;  // 10. Legacy single-byte encodings&#xD;  //&#xD;&#xD;  // 10.1 single-byte decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {!Array.&lt;number&gt;} index The encoding index.&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function SingleByteDecoder(index, options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream, return finished.&#xD;      if (bite === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 3. Let code point be the index code point for byte − 0x80 in&#xD;      // index single-byte.&#xD;      var code_point = index[bite - 0x80];&#xD;&#xD;      // 4. If code point is null, return error.&#xD;      if (code_point === null)&#xD;        return decoderError(fatal);&#xD;&#xD;      // 5. Return a code point whose value is code point.&#xD;      return code_point;&#xD;    };&#xD;  }&#xD;&#xD;  // 10.2 single-byte encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {!Array.&lt;?number&gt;} index The encoding index.&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function SingleByteEncoder(index, options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. Let pointer be the index pointer for code point in index&#xD;      // single-byte.&#xD;      var pointer = indexPointerFor(code_point, index);&#xD;&#xD;      // 4. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        encoderError(code_point);&#xD;&#xD;      // 5. Return a byte whose value is pointer + 0x80.&#xD;      return pointer + 0x80;&#xD;    };&#xD;  }&#xD;&#xD;  (function() {&#xD;    if (!(&apos;encoding-indexes&apos; in global))&#xD;      return;&#xD;    encodings.forEach(function(category) {&#xD;      if (category.heading !== &apos;Legacy single-byte encodings&apos;)&#xD;        return;&#xD;      category.encodings.forEach(function(encoding) {&#xD;        var name = encoding.name;&#xD;        var idx = index(name.toLowerCase());&#xD;        /** @param {{fatal: boolean}} options */&#xD;        decoders[name] = function(options) {&#xD;          return new SingleByteDecoder(idx, options);&#xD;        };&#xD;        /** @param {{fatal: boolean}} options */&#xD;        encoders[name] = function(options) {&#xD;          return new SingleByteEncoder(idx, options);&#xD;        };&#xD;      });&#xD;    });&#xD;  }());&#xD;&#xD;  //&#xD;  // 11. Legacy multi-byte Chinese (simplified) encodings&#xD;  //&#xD;&#xD;  // 11.1 gbk&#xD;&#xD;  // 11.1.1 gbk decoder&#xD;  // gbk&apos;s decoder is gb18030&apos;s decoder.&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;GBK&apos;] = function(options) {&#xD;    return new GB18030Decoder(options);&#xD;  };&#xD;&#xD;  // 11.1.2 gbk encoder&#xD;  // gbk&apos;s encoder is gb18030&apos;s encoder with its gbk flag set.&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;GBK&apos;] = function(options) {&#xD;    return new GB18030Encoder(options, true);&#xD;  };&#xD;&#xD;  // 11.2 gb18030&#xD;&#xD;  // 11.2.1 gb18030 decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function GB18030Decoder(options) {&#xD;    var fatal = options.fatal;&#xD;    // gb18030&apos;s decoder has an associated gb18030 first, gb18030&#xD;    // second, and gb18030 third (all initially 0x00).&#xD;    var /** @type {number} */ gb18030_first = 0x00,&#xD;        /** @type {number} */ gb18030_second = 0x00,&#xD;        /** @type {number} */ gb18030_third = 0x00;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and gb18030 first, gb18030&#xD;      // second, and gb18030 third are 0x00, return finished.&#xD;      if (bite === end_of_stream &amp;&amp; gb18030_first === 0x00 &amp;&amp;&#xD;          gb18030_second === 0x00 &amp;&amp; gb18030_third === 0x00) {&#xD;        return finished;&#xD;      }&#xD;      // 2. If byte is end-of-stream, and gb18030 first, gb18030&#xD;      // second, or gb18030 third is not 0x00, set gb18030 first,&#xD;      // gb18030 second, and gb18030 third to 0x00, and return error.&#xD;      if (bite === end_of_stream &amp;&amp;&#xD;          (gb18030_first !== 0x00 || gb18030_second !== 0x00 ||&#xD;           gb18030_third !== 0x00)) {&#xD;        gb18030_first = 0x00;&#xD;        gb18030_second = 0x00;&#xD;        gb18030_third = 0x00;&#xD;        decoderError(fatal);&#xD;      }&#xD;      var code_point;&#xD;      // 3. If gb18030 third is not 0x00, run these substeps:&#xD;      if (gb18030_third !== 0x00) {&#xD;        // 1. Let code point be null.&#xD;        code_point = null;&#xD;        // 2. If byte is in the range 0x30 to 0x39, inclusive, set&#xD;        // code point to the index gb18030 ranges code point for&#xD;        // (((gb18030 first − 0x81) × 10 + gb18030 second − 0x30) ×&#xD;        // 126 + gb18030 third − 0x81) × 10 + byte − 0x30.&#xD;        if (inRange(bite, 0x30, 0x39)) {&#xD;          code_point = indexGB18030RangesCodePointFor(&#xD;              (((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 +&#xD;               gb18030_third - 0x81) * 10 + bite - 0x30);&#xD;        }&#xD;&#xD;        // 3. Let buffer be a byte sequence consisting of gb18030&#xD;        // second, gb18030 third, and byte, in order.&#xD;        var buffer = [gb18030_second, gb18030_third, bite];&#xD;&#xD;        // 4. Set gb18030 first, gb18030 second, and gb18030 third to&#xD;        // 0x00.&#xD;        gb18030_first = 0x00;&#xD;        gb18030_second = 0x00;&#xD;        gb18030_third = 0x00;&#xD;&#xD;        // 5. If code point is null, prepend buffer to stream and&#xD;        // return error.&#xD;        if (code_point === null) {&#xD;          stream.prepend(buffer);&#xD;          return decoderError(fatal);&#xD;        }&#xD;&#xD;        // 6. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 4. If gb18030 second is not 0x00, run these substeps:&#xD;      if (gb18030_second !== 0x00) {&#xD;&#xD;        // 1. If byte is in the range 0x81 to 0xFE, inclusive, set&#xD;        // gb18030 third to byte and return continue.&#xD;        if (inRange(bite, 0x81, 0xFE)) {&#xD;          gb18030_third = bite;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 2. Prepend gb18030 second followed by byte to stream, set&#xD;        // gb18030 first and gb18030 second to 0x00, and return error.&#xD;        stream.prepend([gb18030_second, bite]);&#xD;        gb18030_first = 0x00;&#xD;        gb18030_second = 0x00;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 5. If gb18030 first is not 0x00, run these substeps:&#xD;      if (gb18030_first !== 0x00) {&#xD;&#xD;        // 1. If byte is in the range 0x30 to 0x39, inclusive, set&#xD;        // gb18030 second to byte and return continue.&#xD;        if (inRange(bite, 0x30, 0x39)) {&#xD;          gb18030_second = bite;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 2. Let lead be gb18030 first, let pointer be null, and set&#xD;        // gb18030 first to 0x00.&#xD;        var lead = gb18030_first;&#xD;        var pointer = null;&#xD;        gb18030_first = 0x00;&#xD;&#xD;        // 3. Let offset be 0x40 if byte is less than 0x7F and 0x41&#xD;        // otherwise.&#xD;        var offset = bite &lt; 0x7F ? 0x40 : 0x41;&#xD;&#xD;        // 4. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80&#xD;        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 190 +&#xD;        // (byte − offset).&#xD;        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFE))&#xD;          pointer = (lead - 0x81) * 190 + (bite - offset);&#xD;&#xD;        // 5. Let code point be null if pointer is null and the index&#xD;        // code point for pointer in index gb18030 otherwise.&#xD;        code_point = pointer === null ? null :&#xD;            indexCodePointFor(pointer, index(&apos;gb18030&apos;));&#xD;&#xD;        // 6. If code point is null and byte is an ASCII byte, prepend&#xD;        // byte to stream.&#xD;        if (code_point === null &amp;&amp; isASCIIByte(bite))&#xD;          stream.prepend(bite);&#xD;&#xD;        // 7. If code point is null, return error.&#xD;        if (code_point === null)&#xD;          return decoderError(fatal);&#xD;&#xD;        // 8. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 6. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 7. If byte is 0x80, return code point U+20AC.&#xD;      if (bite === 0x80)&#xD;        return 0x20AC;&#xD;&#xD;      // 8. If byte is in the range 0x81 to 0xFE, inclusive, set&#xD;      // gb18030 first to byte and return continue.&#xD;      if (inRange(bite, 0x81, 0xFE)) {&#xD;        gb18030_first = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 9. Return error.&#xD;      return decoderError(fatal);&#xD;    };&#xD;  }&#xD;&#xD;  // 11.2.2 gb18030 encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   * @param {boolean=} gbk_flag&#xD;   */&#xD;  function GB18030Encoder(options, gbk_flag) {&#xD;    var fatal = options.fatal;&#xD;    // gb18030&apos;s decoder has an associated gbk flag (initially unset).&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. If code point is U+E5E5, return error with code point.&#xD;      if (code_point === 0xE5E5)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 4. If the gbk flag is set and code point is U+20AC, return&#xD;      // byte 0x80.&#xD;      if (gbk_flag &amp;&amp; code_point === 0x20AC)&#xD;        return 0x80;&#xD;&#xD;      // 5. Let pointer be the index pointer for code point in index&#xD;      // gb18030.&#xD;      var pointer = indexPointerFor(code_point, index(&apos;gb18030&apos;));&#xD;&#xD;      // 6. If pointer is not null, run these substeps:&#xD;      if (pointer !== null) {&#xD;&#xD;        // 1. Let lead be floor(pointer / 190) + 0x81.&#xD;        var lead = floor(pointer / 190) + 0x81;&#xD;&#xD;        // 2. Let trail be pointer % 190.&#xD;        var trail = pointer % 190;&#xD;&#xD;        // 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.&#xD;        var offset = trail &lt; 0x3F ? 0x40 : 0x41;&#xD;&#xD;        // 4. Return two bytes whose values are lead and trail + offset.&#xD;        return [lead, trail + offset];&#xD;      }&#xD;&#xD;      // 7. If gbk flag is set, return error with code point.&#xD;      if (gbk_flag)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 8. Set pointer to the index gb18030 ranges pointer for code&#xD;      // point.&#xD;      pointer = indexGB18030RangesPointerFor(code_point);&#xD;&#xD;      // 9. Let byte1 be floor(pointer / 10 / 126 / 10).&#xD;      var byte1 = floor(pointer / 10 / 126 / 10);&#xD;&#xD;      // 10. Set pointer to pointer − byte1 × 10 × 126 × 10.&#xD;      pointer = pointer - byte1 * 10 * 126 * 10;&#xD;&#xD;      // 11. Let byte2 be floor(pointer / 10 / 126).&#xD;      var byte2 = floor(pointer / 10 / 126);&#xD;&#xD;      // 12. Set pointer to pointer − byte2 × 10 × 126.&#xD;      pointer = pointer - byte2 * 10 * 126;&#xD;&#xD;      // 13. Let byte3 be floor(pointer / 10).&#xD;      var byte3 = floor(pointer / 10);&#xD;&#xD;      // 14. Let byte4 be pointer − byte3 × 10.&#xD;      var byte4 = pointer - byte3 * 10;&#xD;&#xD;      // 15. Return four bytes whose values are byte1 + 0x81, byte2 +&#xD;      // 0x30, byte3 + 0x81, byte4 + 0x30.&#xD;      return [byte1 + 0x81,&#xD;              byte2 + 0x30,&#xD;              byte3 + 0x81,&#xD;              byte4 + 0x30];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;gb18030&apos;] = function(options) {&#xD;    return new GB18030Encoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;gb18030&apos;] = function(options) {&#xD;    return new GB18030Decoder(options);&#xD;  };&#xD;&#xD;&#xD;  //&#xD;  // 12. Legacy multi-byte Chinese (traditional) encodings&#xD;  //&#xD;&#xD;  // 12.1 Big5&#xD;&#xD;  // 12.1.1 Big5 decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function Big5Decoder(options) {&#xD;    var fatal = options.fatal;&#xD;    // Big5&apos;s decoder has an associated Big5 lead (initially 0x00).&#xD;    var /** @type {number} */ Big5_lead = 0x00;&#xD;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and Big5 lead is not 0x00, set&#xD;      // Big5 lead to 0x00 and return error.&#xD;      if (bite === end_of_stream &amp;&amp; Big5_lead !== 0x00) {&#xD;        Big5_lead = 0x00;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream and Big5 lead is 0x00, return&#xD;      // finished.&#xD;      if (bite === end_of_stream &amp;&amp; Big5_lead === 0x00)&#xD;        return finished;&#xD;&#xD;      // 3. If Big5 lead is not 0x00, let lead be Big5 lead, let&#xD;      // pointer be null, set Big5 lead to 0x00, and then run these&#xD;      // substeps:&#xD;      if (Big5_lead !== 0x00) {&#xD;        var lead = Big5_lead;&#xD;        var pointer = null;&#xD;        Big5_lead = 0x00;&#xD;&#xD;        // 1. Let offset be 0x40 if byte is less than 0x7F and 0x62&#xD;        // otherwise.&#xD;        var offset = bite &lt; 0x7F ? 0x40 : 0x62;&#xD;&#xD;        // 2. If byte is in the range 0x40 to 0x7E, inclusive, or 0xA1&#xD;        // to 0xFE, inclusive, set pointer to (lead − 0x81) × 157 +&#xD;        // (byte − offset).&#xD;        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0xA1, 0xFE))&#xD;          pointer = (lead - 0x81) * 157 + (bite - offset);&#xD;&#xD;        // 3. If there is a row in the table below whose first column&#xD;        // is pointer, return the two code points listed in its second&#xD;        // column&#xD;        // Pointer | Code points&#xD;        // --------+--------------&#xD;        // 1133    | U+00CA U+0304&#xD;        // 1135    | U+00CA U+030C&#xD;        // 1164    | U+00EA U+0304&#xD;        // 1166    | U+00EA U+030C&#xD;        switch (pointer) {&#xD;          case 1133: return [0x00CA, 0x0304];&#xD;          case 1135: return [0x00CA, 0x030C];&#xD;          case 1164: return [0x00EA, 0x0304];&#xD;          case 1166: return [0x00EA, 0x030C];&#xD;        }&#xD;&#xD;        // 4. Let code point be null if pointer is null and the index&#xD;        // code point for pointer in index Big5 otherwise.&#xD;        var code_point = (pointer === null) ? null :&#xD;            indexCodePointFor(pointer, index(&apos;big5&apos;));&#xD;&#xD;        // 5. If code point is null and byte is an ASCII byte, prepend&#xD;        // byte to stream.&#xD;        if (code_point === null &amp;&amp; isASCIIByte(bite))&#xD;          stream.prepend(bite);&#xD;&#xD;        // 6. If code point is null, return error.&#xD;        if (code_point === null)&#xD;          return decoderError(fatal);&#xD;&#xD;        // 7. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 4. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set Big5&#xD;      // lead to byte and return continue.&#xD;      if (inRange(bite, 0x81, 0xFE)) {&#xD;        Big5_lead = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 6. Return error.&#xD;      return decoderError(fatal);&#xD;    };&#xD;  }&#xD;&#xD;  // 12.1.2 Big5 encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function Big5Encoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. Let pointer be the index Big5 pointer for code point.&#xD;      var pointer = indexBig5PointerFor(code_point);&#xD;&#xD;      // 4. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 5. Let lead be floor(pointer / 157) + 0x81.&#xD;      var lead = floor(pointer / 157) + 0x81;&#xD;&#xD;      // 6. If lead is less than 0xA1, return error with code point.&#xD;      if (lead &lt; 0xA1)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 7. Let trail be pointer % 157.&#xD;      var trail = pointer % 157;&#xD;&#xD;      // 8. Let offset be 0x40 if trail is less than 0x3F and 0x62&#xD;      // otherwise.&#xD;      var offset = trail &lt; 0x3F ? 0x40 : 0x62;&#xD;&#xD;      // Return two bytes whose values are lead and trail + offset.&#xD;      return [lead, trail + offset];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;Big5&apos;] = function(options) {&#xD;    return new Big5Encoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;Big5&apos;] = function(options) {&#xD;    return new Big5Decoder(options);&#xD;  };&#xD;&#xD;&#xD;  //&#xD;  // 13. Legacy multi-byte Japanese encodings&#xD;  //&#xD;&#xD;  // 13.1 euc-jp&#xD;&#xD;  // 13.1.1 euc-jp decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function EUCJPDecoder(options) {&#xD;    var fatal = options.fatal;&#xD;&#xD;    // euc-jp&apos;s decoder has an associated euc-jp jis0212 flag&#xD;    // (initially unset) and euc-jp lead (initially 0x00).&#xD;    var /** @type {boolean} */ eucjp_jis0212_flag = false,&#xD;        /** @type {number} */ eucjp_lead = 0x00;&#xD;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and euc-jp lead is not 0x00, set&#xD;      // euc-jp lead to 0x00, and return error.&#xD;      if (bite === end_of_stream &amp;&amp; eucjp_lead !== 0x00) {&#xD;        eucjp_lead = 0x00;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream and euc-jp lead is 0x00, return&#xD;      // finished.&#xD;      if (bite === end_of_stream &amp;&amp; eucjp_lead === 0x00)&#xD;        return finished;&#xD;&#xD;      // 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to&#xD;      // 0xDF, inclusive, set euc-jp lead to 0x00 and return a code&#xD;      // point whose value is 0xFF61 − 0xA1 + byte.&#xD;      if (eucjp_lead === 0x8E &amp;&amp; inRange(bite, 0xA1, 0xDF)) {&#xD;        eucjp_lead = 0x00;&#xD;        return 0xFF61 - 0xA1 + bite;&#xD;      }&#xD;&#xD;      // 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to&#xD;      // 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead&#xD;      // to byte, and return continue.&#xD;      if (eucjp_lead === 0x8F &amp;&amp; inRange(bite, 0xA1, 0xFE)) {&#xD;        eucjp_jis0212_flag = true;&#xD;        eucjp_lead = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set&#xD;      // euc-jp lead to 0x00, and run these substeps:&#xD;      if (eucjp_lead !== 0x00) {&#xD;        var lead = eucjp_lead;&#xD;        eucjp_lead = 0x00;&#xD;&#xD;        // 1. Let code point be null.&#xD;        var code_point = null;&#xD;&#xD;        // 2. If lead and byte are both in the range 0xA1 to 0xFE,&#xD;        // inclusive, set code point to the index code point for (lead&#xD;        // − 0xA1) × 94 + byte − 0xA1 in index jis0208 if the euc-jp&#xD;        // jis0212 flag is unset and in index jis0212 otherwise.&#xD;        if (inRange(lead, 0xA1, 0xFE) &amp;&amp; inRange(bite, 0xA1, 0xFE)) {&#xD;          code_point = indexCodePointFor(&#xD;            (lead - 0xA1) * 94 + (bite - 0xA1),&#xD;            index(!eucjp_jis0212_flag ? &apos;jis0208&apos; : &apos;jis0212&apos;));&#xD;        }&#xD;&#xD;        // 3. Unset the euc-jp jis0212 flag.&#xD;        eucjp_jis0212_flag = false;&#xD;&#xD;        // 4. If byte is not in the range 0xA1 to 0xFE, inclusive,&#xD;        // prepend byte to stream.&#xD;        if (!inRange(bite, 0xA1, 0xFE))&#xD;          stream.prepend(bite);&#xD;&#xD;        // 5. If code point is null, return error.&#xD;        if (code_point === null)&#xD;          return decoderError(fatal);&#xD;&#xD;        // 6. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 6. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,&#xD;      // inclusive, set euc-jp lead to byte and return continue.&#xD;      if (bite === 0x8E || bite === 0x8F || inRange(bite, 0xA1, 0xFE)) {&#xD;        eucjp_lead = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 8. Return error.&#xD;      return decoderError(fatal);&#xD;    };&#xD;  }&#xD;&#xD;  // 13.1.2 euc-jp encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function EUCJPEncoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. If code point is U+00A5, return byte 0x5C.&#xD;      if (code_point === 0x00A5)&#xD;        return 0x5C;&#xD;&#xD;      // 4. If code point is U+203E, return byte 0x7E.&#xD;      if (code_point === 0x203E)&#xD;        return 0x7E;&#xD;&#xD;      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,&#xD;      // return two bytes whose values are 0x8E and code point −&#xD;      // 0xFF61 + 0xA1.&#xD;      if (inRange(code_point, 0xFF61, 0xFF9F))&#xD;        return [0x8E, code_point - 0xFF61 + 0xA1];&#xD;&#xD;      // 6. If code point is U+2212, set it to U+FF0D.&#xD;      if (code_point === 0x2212)&#xD;        code_point = 0xFF0D;&#xD;&#xD;      // 7. Let pointer be the index pointer for code point in index&#xD;      // jis0208.&#xD;      var pointer = indexPointerFor(code_point, index(&apos;jis0208&apos;));&#xD;&#xD;      // 8. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 9. Let lead be floor(pointer / 94) + 0xA1.&#xD;      var lead = floor(pointer / 94) + 0xA1;&#xD;&#xD;      // 10. Let trail be pointer % 94 + 0xA1.&#xD;      var trail = pointer % 94 + 0xA1;&#xD;&#xD;      // 11. Return two bytes whose values are lead and trail.&#xD;      return [lead, trail];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;EUC-JP&apos;] = function(options) {&#xD;    return new EUCJPEncoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;EUC-JP&apos;] = function(options) {&#xD;    return new EUCJPDecoder(options);&#xD;  };&#xD;&#xD;  // 13.2 iso-2022-jp&#xD;&#xD;  // 13.2.1 iso-2022-jp decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function ISO2022JPDecoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /** @enum */&#xD;    var states = {&#xD;      ASCII: 0,&#xD;      Roman: 1,&#xD;      Katakana: 2,&#xD;      LeadByte: 3,&#xD;      TrailByte: 4,&#xD;      EscapeStart: 5,&#xD;      Escape: 6&#xD;    };&#xD;    // iso-2022-jp&apos;s decoder has an associated iso-2022-jp decoder&#xD;    // state (initially ASCII), iso-2022-jp decoder output state&#xD;    // (initially ASCII), iso-2022-jp lead (initially 0x00), and&#xD;    // iso-2022-jp output flag (initially unset).&#xD;    var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,&#xD;        /** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,&#xD;        /** @type {number} */ iso2022jp_lead = 0x00,&#xD;        /** @type {boolean} */ iso2022jp_output_flag = false;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // switching on iso-2022-jp decoder state:&#xD;      switch (iso2022jp_decoder_state) {&#xD;      default:&#xD;      case states.ASCII:&#xD;        // ASCII&#xD;        // Based on byte:&#xD;&#xD;        // 0x1B&#xD;        if (bite === 0x1B) {&#xD;          // Set iso-2022-jp decoder state to escape start and return&#xD;          // continue.&#xD;          iso2022jp_decoder_state = states.EscapeStart;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B&#xD;        if (inRange(bite, 0x00, 0x7F) &amp;&amp; bite !== 0x0E&#xD;            &amp;&amp; bite !== 0x0F &amp;&amp; bite !== 0x1B) {&#xD;          // Unset the iso-2022-jp output flag and return a code point&#xD;          // whose value is byte.&#xD;          iso2022jp_output_flag = false;&#xD;          return bite;&#xD;        }&#xD;&#xD;        // end-of-stream&#xD;        if (bite === end_of_stream) {&#xD;          // Return finished.&#xD;          return finished;&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        // Unset the iso-2022-jp output flag and return error.&#xD;        iso2022jp_output_flag = false;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.Roman:&#xD;        // Roman&#xD;        // Based on byte:&#xD;&#xD;        // 0x1B&#xD;        if (bite === 0x1B) {&#xD;          // Set iso-2022-jp decoder state to escape start and return&#xD;          // continue.&#xD;          iso2022jp_decoder_state = states.EscapeStart;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 0x5C&#xD;        if (bite === 0x5C) {&#xD;          // Unset the iso-2022-jp output flag and return code point&#xD;          // U+00A5.&#xD;          iso2022jp_output_flag = false;&#xD;          return 0x00A5;&#xD;        }&#xD;&#xD;        // 0x7E&#xD;        if (bite === 0x7E) {&#xD;          // Unset the iso-2022-jp output flag and return code point&#xD;          // U+203E.&#xD;          iso2022jp_output_flag = false;&#xD;          return 0x203E;&#xD;        }&#xD;&#xD;        // 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E&#xD;        if (inRange(bite, 0x00, 0x7F) &amp;&amp; bite !== 0x0E &amp;&amp; bite !== 0x0F&#xD;            &amp;&amp; bite !== 0x1B &amp;&amp; bite !== 0x5C &amp;&amp; bite !== 0x7E) {&#xD;          // Unset the iso-2022-jp output flag and return a code point&#xD;          // whose value is byte.&#xD;          iso2022jp_output_flag = false;&#xD;          return bite;&#xD;        }&#xD;&#xD;        // end-of-stream&#xD;        if (bite === end_of_stream) {&#xD;          // Return finished.&#xD;          return finished;&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        // Unset the iso-2022-jp output flag and return error.&#xD;        iso2022jp_output_flag = false;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.Katakana:&#xD;        // Katakana&#xD;        // Based on byte:&#xD;&#xD;        // 0x1B&#xD;        if (bite === 0x1B) {&#xD;          // Set iso-2022-jp decoder state to escape start and return&#xD;          // continue.&#xD;          iso2022jp_decoder_state = states.EscapeStart;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 0x21 to 0x5F&#xD;        if (inRange(bite, 0x21, 0x5F)) {&#xD;          // Unset the iso-2022-jp output flag and return a code point&#xD;          // whose value is 0xFF61 − 0x21 + byte.&#xD;          iso2022jp_output_flag = false;&#xD;          return 0xFF61 - 0x21 + bite;&#xD;        }&#xD;&#xD;        // end-of-stream&#xD;        if (bite === end_of_stream) {&#xD;          // Return finished.&#xD;          return finished;&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        // Unset the iso-2022-jp output flag and return error.&#xD;        iso2022jp_output_flag = false;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.LeadByte:&#xD;        // Lead byte&#xD;        // Based on byte:&#xD;&#xD;        // 0x1B&#xD;        if (bite === 0x1B) {&#xD;          // Set iso-2022-jp decoder state to escape start and return&#xD;          // continue.&#xD;          iso2022jp_decoder_state = states.EscapeStart;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 0x21 to 0x7E&#xD;        if (inRange(bite, 0x21, 0x7E)) {&#xD;          // Unset the iso-2022-jp output flag, set iso-2022-jp lead&#xD;          // to byte, iso-2022-jp decoder state to trail byte, and&#xD;          // return continue.&#xD;          iso2022jp_output_flag = false;&#xD;          iso2022jp_lead = bite;&#xD;          iso2022jp_decoder_state = states.TrailByte;&#xD;          return null;&#xD;        }&#xD;&#xD;        // end-of-stream&#xD;        if (bite === end_of_stream) {&#xD;          // Return finished.&#xD;          return finished;&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        // Unset the iso-2022-jp output flag and return error.&#xD;        iso2022jp_output_flag = false;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.TrailByte:&#xD;        // Trail byte&#xD;        // Based on byte:&#xD;&#xD;        // 0x1B&#xD;        if (bite === 0x1B) {&#xD;          // Set iso-2022-jp decoder state to escape start and return&#xD;          // continue.&#xD;          iso2022jp_decoder_state = states.EscapeStart;&#xD;          return decoderError(fatal);&#xD;        }&#xD;&#xD;        // 0x21 to 0x7E&#xD;        if (inRange(bite, 0x21, 0x7E)) {&#xD;          // 1. Set the iso-2022-jp decoder state to lead byte.&#xD;          iso2022jp_decoder_state = states.LeadByte;&#xD;&#xD;          // 2. Let pointer be (iso-2022-jp lead − 0x21) × 94 + byte − 0x21.&#xD;          var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;&#xD;&#xD;          // 3. Let code point be the index code point for pointer in&#xD;          // index jis0208.&#xD;          var code_point = indexCodePointFor(pointer, index(&apos;jis0208&apos;));&#xD;&#xD;          // 4. If code point is null, return error.&#xD;          if (code_point === null)&#xD;            return decoderError(fatal);&#xD;&#xD;          // 5. Return a code point whose value is code point.&#xD;          return code_point;&#xD;        }&#xD;&#xD;        // end-of-stream&#xD;        if (bite === end_of_stream) {&#xD;          // Set the iso-2022-jp decoder state to lead byte, prepend&#xD;          // byte to stream, and return error.&#xD;          iso2022jp_decoder_state = states.LeadByte;&#xD;          stream.prepend(bite);&#xD;          return decoderError(fatal);&#xD;        }&#xD;&#xD;        // Otherwise&#xD;        // Set iso-2022-jp decoder state to lead byte and return&#xD;        // error.&#xD;        iso2022jp_decoder_state = states.LeadByte;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.EscapeStart:&#xD;        // Escape start&#xD;&#xD;        // 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to&#xD;        // byte, iso-2022-jp decoder state to escape, and return&#xD;        // continue.&#xD;        if (bite === 0x24 || bite === 0x28) {&#xD;          iso2022jp_lead = bite;&#xD;          iso2022jp_decoder_state = states.Escape;&#xD;          return null;&#xD;        }&#xD;&#xD;        // 2. Prepend byte to stream.&#xD;        stream.prepend(bite);&#xD;&#xD;        // 3. Unset the iso-2022-jp output flag, set iso-2022-jp&#xD;        // decoder state to iso-2022-jp decoder output state, and&#xD;        // return error.&#xD;        iso2022jp_output_flag = false;&#xD;        iso2022jp_decoder_state = iso2022jp_decoder_output_state;&#xD;        return decoderError(fatal);&#xD;&#xD;      case states.Escape:&#xD;        // Escape&#xD;&#xD;        // 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to&#xD;        // 0x00.&#xD;        var lead = iso2022jp_lead;&#xD;        iso2022jp_lead = 0x00;&#xD;&#xD;        // 2. Let state be null.&#xD;        var state = null;&#xD;&#xD;        // 3. If lead is 0x28 and byte is 0x42, set state to ASCII.&#xD;        if (lead === 0x28 &amp;&amp; bite === 0x42)&#xD;          state = states.ASCII;&#xD;&#xD;        // 4. If lead is 0x28 and byte is 0x4A, set state to Roman.&#xD;        if (lead === 0x28 &amp;&amp; bite === 0x4A)&#xD;          state = states.Roman;&#xD;&#xD;        // 5. If lead is 0x28 and byte is 0x49, set state to Katakana.&#xD;        if (lead === 0x28 &amp;&amp; bite === 0x49)&#xD;          state = states.Katakana;&#xD;&#xD;        // 6. If lead is 0x24 and byte is either 0x40 or 0x42, set&#xD;        // state to lead byte.&#xD;        if (lead === 0x24 &amp;&amp; (bite === 0x40 || bite === 0x42))&#xD;          state = states.LeadByte;&#xD;&#xD;        // 7. If state is non-null, run these substeps:&#xD;        if (state !== null) {&#xD;          // 1. Set iso-2022-jp decoder state and iso-2022-jp decoder&#xD;          // output state to states.&#xD;          iso2022jp_decoder_state = iso2022jp_decoder_state = state;&#xD;&#xD;          // 2. Let output flag be the iso-2022-jp output flag.&#xD;          var output_flag = iso2022jp_output_flag;&#xD;&#xD;          // 3. Set the iso-2022-jp output flag.&#xD;          iso2022jp_output_flag = true;&#xD;&#xD;          // 4. Return continue, if output flag is unset, and error&#xD;          // otherwise.&#xD;          return !output_flag ? null : decoderError(fatal);&#xD;        }&#xD;&#xD;        // 8. Prepend lead and byte to stream.&#xD;        stream.prepend([lead, bite]);&#xD;&#xD;        // 9. Unset the iso-2022-jp output flag, set iso-2022-jp&#xD;        // decoder state to iso-2022-jp decoder output state and&#xD;        // return error.&#xD;        iso2022jp_output_flag = false;&#xD;        iso2022jp_decoder_state = iso2022jp_decoder_output_state;&#xD;        return decoderError(fatal);&#xD;      }&#xD;    };&#xD;  }&#xD;&#xD;  // 13.2.2 iso-2022-jp encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function ISO2022JPEncoder(options) {&#xD;    var fatal = options.fatal;&#xD;    // iso-2022-jp&apos;s encoder has an associated iso-2022-jp encoder&#xD;    // state which is one of ASCII, Roman, and jis0208 (initially&#xD;    // ASCII).&#xD;    /** @enum */&#xD;    var states = {&#xD;      ASCII: 0,&#xD;      Roman: 1,&#xD;      jis0208: 2&#xD;    };&#xD;    var /** @type {number} */ iso2022jp_state = states.ASCII;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream and iso-2022-jp encoder&#xD;      // state is not ASCII, prepend code point to stream, set&#xD;      // iso-2022-jp encoder state to ASCII, and return three bytes&#xD;      // 0x1B 0x28 0x42.&#xD;      if (code_point === end_of_stream &amp;&amp;&#xD;          iso2022jp_state !== states.ASCII) {&#xD;        stream.prepend(code_point);&#xD;        iso2022jp_state = states.ASCII;&#xD;        return [0x1B, 0x28, 0x42];&#xD;      }&#xD;&#xD;      // 2. If code point is end-of-stream and iso-2022-jp encoder&#xD;      // state is ASCII, return finished.&#xD;      if (code_point === end_of_stream &amp;&amp; iso2022jp_state === states.ASCII)&#xD;        return finished;&#xD;&#xD;      // 3. If ISO-2022-JP encoder state is ASCII or Roman, and code&#xD;      // point is U+000E, U+000F, or U+001B, return error with U+FFFD.&#xD;      if ((iso2022jp_state === states.ASCII ||&#xD;           iso2022jp_state === states.Roman) &amp;&amp;&#xD;          (code_point === 0x000E || code_point === 0x000F ||&#xD;           code_point === 0x001B)) {&#xD;        return encoderError(0xFFFD);&#xD;      }&#xD;&#xD;      // 4. If iso-2022-jp encoder state is ASCII and code point is an&#xD;      // ASCII code point, return a byte whose value is code point.&#xD;      if (iso2022jp_state === states.ASCII &amp;&amp;&#xD;          isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 5. If iso-2022-jp encoder state is Roman and code point is an&#xD;      // ASCII code point, excluding U+005C and U+007E, or is U+00A5&#xD;      // or U+203E, run these substeps:&#xD;      if (iso2022jp_state === states.Roman &amp;&amp;&#xD;          ((isASCIICodePoint(code_point) &amp;&amp;&#xD;           code_point !== 0x005C &amp;&amp; code_point !== 0x007E) ||&#xD;          (code_point == 0x00A5 || code_point == 0x203E))) {&#xD;&#xD;        // 1. If code point is an ASCII code point, return a byte&#xD;        // whose value is code point.&#xD;        if (isASCIICodePoint(code_point))&#xD;          return code_point;&#xD;&#xD;        // 2. If code point is U+00A5, return byte 0x5C.&#xD;        if (code_point === 0x00A5)&#xD;          return 0x5C;&#xD;&#xD;        // 3. If code point is U+203E, return byte 0x7E.&#xD;        if (code_point === 0x203E)&#xD;          return 0x7E;&#xD;      }&#xD;&#xD;      // 6. If code point is an ASCII code point, and iso-2022-jp&#xD;      // encoder state is not ASCII, prepend code point to stream, set&#xD;      // iso-2022-jp encoder state to ASCII, and return three bytes&#xD;      // 0x1B 0x28 0x42.&#xD;      if (isASCIICodePoint(code_point) &amp;&amp;&#xD;          iso2022jp_state !== states.ASCII) {&#xD;        stream.prepend(code_point);&#xD;        iso2022jp_state = states.ASCII;&#xD;        return [0x1B, 0x28, 0x42];&#xD;      }&#xD;&#xD;      // 7. If code point is either U+00A5 or U+203E, and iso-2022-jp&#xD;      // encoder state is not Roman, prepend code point to stream, set&#xD;      // iso-2022-jp encoder state to Roman, and return three bytes&#xD;      // 0x1B 0x28 0x4A.&#xD;      if ((code_point === 0x00A5 || code_point === 0x203E) &amp;&amp;&#xD;          iso2022jp_state !== states.Roman) {&#xD;        stream.prepend(code_point);&#xD;        iso2022jp_state = states.Roman;&#xD;        return [0x1B, 0x28, 0x4A];&#xD;      }&#xD;&#xD;      // 8. If code point is U+2212, set it to U+FF0D.&#xD;      if (code_point === 0x2212)&#xD;        code_point = 0xFF0D;&#xD;&#xD;      // 9. Let pointer be the index pointer for code point in index&#xD;      // jis0208.&#xD;      var pointer = indexPointerFor(code_point, index(&apos;jis0208&apos;));&#xD;&#xD;      // 10. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 11. If iso-2022-jp encoder state is not jis0208, prepend code&#xD;      // point to stream, set iso-2022-jp encoder state to jis0208,&#xD;      // and return three bytes 0x1B 0x24 0x42.&#xD;      if (iso2022jp_state !== states.jis0208) {&#xD;        stream.prepend(code_point);&#xD;        iso2022jp_state = states.jis0208;&#xD;        return [0x1B, 0x24, 0x42];&#xD;      }&#xD;&#xD;      // 12. Let lead be floor(pointer / 94) + 0x21.&#xD;      var lead = floor(pointer / 94) + 0x21;&#xD;&#xD;      // 13. Let trail be pointer % 94 + 0x21.&#xD;      var trail = pointer % 94 + 0x21;&#xD;&#xD;      // 14. Return two bytes whose values are lead and trail.&#xD;      return [lead, trail];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;ISO-2022-JP&apos;] = function(options) {&#xD;    return new ISO2022JPEncoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;ISO-2022-JP&apos;] = function(options) {&#xD;    return new ISO2022JPDecoder(options);&#xD;  };&#xD;&#xD;  // 13.3 Shift_JIS&#xD;&#xD;  // 13.3.1 Shift_JIS decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function ShiftJISDecoder(options) {&#xD;    var fatal = options.fatal;&#xD;    // Shift_JIS&apos;s decoder has an associated Shift_JIS lead (initially&#xD;    // 0x00).&#xD;    var /** @type {number} */ Shift_JIS_lead = 0x00;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,&#xD;      // set Shift_JIS lead to 0x00 and return error.&#xD;      if (bite === end_of_stream &amp;&amp; Shift_JIS_lead !== 0x00) {&#xD;        Shift_JIS_lead = 0x00;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream and Shift_JIS lead is 0x00,&#xD;      // return finished.&#xD;      if (bite === end_of_stream &amp;&amp; Shift_JIS_lead === 0x00)&#xD;        return finished;&#xD;&#xD;      // 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,&#xD;      // let pointer be null, set Shift_JIS lead to 0x00, and then run&#xD;      // these substeps:&#xD;      if (Shift_JIS_lead !== 0x00) {&#xD;        var lead = Shift_JIS_lead;&#xD;        var pointer = null;&#xD;        Shift_JIS_lead = 0x00;&#xD;&#xD;        // 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41&#xD;        // otherwise.&#xD;        var offset = (bite &lt; 0x7F) ? 0x40 : 0x41;&#xD;&#xD;        // 2. Let lead offset be 0x81, if lead is less than 0xA0, and&#xD;        // 0xC1 otherwise.&#xD;        var lead_offset = (lead &lt; 0xA0) ? 0x81 : 0xC1;&#xD;&#xD;        // 3. If byte is in the range 0x40 to 0x7E, inclusive, or 0x80&#xD;        // to 0xFC, inclusive, set pointer to (lead − lead offset) ×&#xD;        // 188 + byte − offset.&#xD;        if (inRange(bite, 0x40, 0x7E) || inRange(bite, 0x80, 0xFC))&#xD;          pointer = (lead - lead_offset) * 188 + bite - offset;&#xD;&#xD;        // 4. If pointer is in the range 8836 to 10715, inclusive,&#xD;        // return a code point whose value is 0xE000 − 8836 + pointer.&#xD;        if (inRange(pointer, 8836, 10715))&#xD;          return 0xE000 - 8836 + pointer;&#xD;&#xD;        // 5. Let code point be null, if pointer is null, and the&#xD;        // index code point for pointer in index jis0208 otherwise.&#xD;        var code_point = (pointer === null) ? null :&#xD;              indexCodePointFor(pointer, index(&apos;jis0208&apos;));&#xD;&#xD;        // 6. If code point is null and byte is an ASCII byte, prepend&#xD;        // byte to stream.&#xD;        if (code_point === null &amp;&amp; isASCIIByte(bite))&#xD;          stream.prepend(bite);&#xD;&#xD;        // 7. If code point is null, return error.&#xD;        if (code_point === null)&#xD;          return decoderError(fatal);&#xD;&#xD;        // 8. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 4. If byte is an ASCII byte or 0x80, return a code point&#xD;      // whose value is byte.&#xD;      if (isASCIIByte(bite) || bite === 0x80)&#xD;        return bite;&#xD;&#xD;      // 5. If byte is in the range 0xA1 to 0xDF, inclusive, return a&#xD;      // code point whose value is 0xFF61 − 0xA1 + byte.&#xD;      if (inRange(bite, 0xA1, 0xDF))&#xD;        return 0xFF61 - 0xA1 + bite;&#xD;&#xD;      // 6. If byte is in the range 0x81 to 0x9F, inclusive, or 0xE0&#xD;      // to 0xFC, inclusive, set Shift_JIS lead to byte and return&#xD;      // continue.&#xD;      if (inRange(bite, 0x81, 0x9F) || inRange(bite, 0xE0, 0xFC)) {&#xD;        Shift_JIS_lead = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 7. Return error.&#xD;      return decoderError(fatal);&#xD;    };&#xD;  }&#xD;&#xD;  // 13.3.2 Shift_JIS encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function ShiftJISEncoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point or U+0080, return a&#xD;      // byte whose value is code point.&#xD;      if (isASCIICodePoint(code_point) || code_point === 0x0080)&#xD;        return code_point;&#xD;&#xD;      // 3. If code point is U+00A5, return byte 0x5C.&#xD;      if (code_point === 0x00A5)&#xD;        return 0x5C;&#xD;&#xD;      // 4. If code point is U+203E, return byte 0x7E.&#xD;      if (code_point === 0x203E)&#xD;        return 0x7E;&#xD;&#xD;      // 5. If code point is in the range U+FF61 to U+FF9F, inclusive,&#xD;      // return a byte whose value is code point − 0xFF61 + 0xA1.&#xD;      if (inRange(code_point, 0xFF61, 0xFF9F))&#xD;        return code_point - 0xFF61 + 0xA1;&#xD;&#xD;      // 6. If code point is U+2212, set it to U+FF0D.&#xD;      if (code_point === 0x2212)&#xD;        code_point = 0xFF0D;&#xD;&#xD;      // 7. Let pointer be the index Shift_JIS pointer for code point.&#xD;      var pointer = indexShiftJISPointerFor(code_point);&#xD;&#xD;      // 8. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 9. Let lead be floor(pointer / 188).&#xD;      var lead = floor(pointer / 188);&#xD;&#xD;      // 10. Let lead offset be 0x81, if lead is less than 0x1F, and&#xD;      // 0xC1 otherwise.&#xD;      var lead_offset = (lead &lt; 0x1F) ? 0x81 : 0xC1;&#xD;&#xD;      // 11. Let trail be pointer % 188.&#xD;      var trail = pointer % 188;&#xD;&#xD;      // 12. Let offset be 0x40, if trail is less than 0x3F, and 0x41&#xD;      // otherwise.&#xD;      var offset = (trail &lt; 0x3F) ? 0x40 : 0x41;&#xD;&#xD;      // 13. Return two bytes whose values are lead + lead offset and&#xD;      // trail + offset.&#xD;      return [lead + lead_offset, trail + offset];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;Shift_JIS&apos;] = function(options) {&#xD;    return new ShiftJISEncoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;Shift_JIS&apos;] = function(options) {&#xD;    return new ShiftJISDecoder(options);&#xD;  };&#xD;&#xD;  //&#xD;  // 14. Legacy multi-byte Korean encodings&#xD;  //&#xD;&#xD;  // 14.1 euc-kr&#xD;&#xD;  // 14.1.1 euc-kr decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function EUCKRDecoder(options) {&#xD;    var fatal = options.fatal;&#xD;&#xD;    // euc-kr&apos;s decoder has an associated euc-kr lead (initially 0x00).&#xD;    var /** @type {number} */ euckr_lead = 0x00;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and euc-kr lead is not 0x00, set&#xD;      // euc-kr lead to 0x00 and return error.&#xD;      if (bite === end_of_stream &amp;&amp; euckr_lead !== 0) {&#xD;        euckr_lead = 0x00;&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream and euc-kr lead is 0x00, return&#xD;      // finished.&#xD;      if (bite === end_of_stream &amp;&amp; euckr_lead === 0)&#xD;        return finished;&#xD;&#xD;      // 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let&#xD;      // pointer be null, set euc-kr lead to 0x00, and then run these&#xD;      // substeps:&#xD;      if (euckr_lead !== 0x00) {&#xD;        var lead = euckr_lead;&#xD;        var pointer = null;&#xD;        euckr_lead = 0x00;&#xD;&#xD;        // 1. If byte is in the range 0x41 to 0xFE, inclusive, set&#xD;        // pointer to (lead − 0x81) × 190 + (byte − 0x41).&#xD;        if (inRange(bite, 0x41, 0xFE))&#xD;          pointer = (lead - 0x81) * 190 + (bite - 0x41);&#xD;&#xD;        // 2. Let code point be null, if pointer is null, and the&#xD;        // index code point for pointer in index euc-kr otherwise.&#xD;        var code_point = (pointer === null)&#xD;              ? null : indexCodePointFor(pointer, index(&apos;euc-kr&apos;));&#xD;&#xD;        // 3. If code point is null and byte is an ASCII byte, prepend&#xD;        // byte to stream.&#xD;        if (pointer === null &amp;&amp; isASCIIByte(bite))&#xD;          stream.prepend(bite);&#xD;&#xD;        // 4. If code point is null, return error.&#xD;        if (code_point === null)&#xD;          return decoderError(fatal);&#xD;&#xD;        // 5. Return a code point whose value is code point.&#xD;        return code_point;&#xD;      }&#xD;&#xD;      // 4. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 5. If byte is in the range 0x81 to 0xFE, inclusive, set&#xD;      // euc-kr lead to byte and return continue.&#xD;      if (inRange(bite, 0x81, 0xFE)) {&#xD;        euckr_lead = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 6. Return error.&#xD;      return decoderError(fatal);&#xD;    };&#xD;  }&#xD;&#xD;  // 14.1.2 euc-kr encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function EUCKREncoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. Let pointer be the index pointer for code point in index&#xD;      // euc-kr.&#xD;      var pointer = indexPointerFor(code_point, index(&apos;euc-kr&apos;));&#xD;&#xD;      // 4. If pointer is null, return error with code point.&#xD;      if (pointer === null)&#xD;        return encoderError(code_point);&#xD;&#xD;      // 5. Let lead be floor(pointer / 190) + 0x81.&#xD;      var lead = floor(pointer / 190) + 0x81;&#xD;&#xD;      // 6. Let trail be pointer % 190 + 0x41.&#xD;      var trail = (pointer % 190) + 0x41;&#xD;&#xD;      // 7. Return two bytes whose values are lead and trail.&#xD;      return [lead, trail];&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;EUC-KR&apos;] = function(options) {&#xD;    return new EUCKREncoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;EUC-KR&apos;] = function(options) {&#xD;    return new EUCKRDecoder(options);&#xD;  };&#xD;&#xD;&#xD;  //&#xD;  // 15. Legacy miscellaneous encodings&#xD;  //&#xD;&#xD;  // 15.1 replacement&#xD;&#xD;  // Not needed - API throws RangeError&#xD;&#xD;  // 15.2 Common infrastructure for utf-16be and utf-16le&#xD;&#xD;  /**&#xD;   * @param {number} code_unit&#xD;   * @param {boolean} utf16be&#xD;   * @return {!Array.&lt;number&gt;} bytes&#xD;   */&#xD;  function convertCodeUnitToBytes(code_unit, utf16be) {&#xD;    // 1. Let byte1 be code unit &gt;&gt; 8.&#xD;    var byte1 = code_unit &gt;&gt; 8;&#xD;&#xD;    // 2. Let byte2 be code unit &amp; 0x00FF.&#xD;    var byte2 = code_unit &amp; 0x00FF;&#xD;&#xD;    // 3. Then return the bytes in order:&#xD;        // utf-16be flag is set: byte1, then byte2.&#xD;    if (utf16be)&#xD;      return [byte1, byte2];&#xD;    // utf-16be flag is unset: byte2, then byte1.&#xD;    return [byte2, byte1];&#xD;  }&#xD;&#xD;  // 15.2.1 shared utf-16 decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {boolean} utf16_be True if big-endian, false if little-endian.&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function UTF16Decoder(utf16_be, options) {&#xD;    var fatal = options.fatal;&#xD;    var /** @type {?number} */ utf16_lead_byte = null,&#xD;        /** @type {?number} */ utf16_lead_surrogate = null;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream and either utf-16 lead byte or&#xD;      // utf-16 lead surrogate is not null, set utf-16 lead byte and&#xD;      // utf-16 lead surrogate to null, and return error.&#xD;      if (bite === end_of_stream &amp;&amp; (utf16_lead_byte !== null ||&#xD;                                utf16_lead_surrogate !== null)) {&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 2. If byte is end-of-stream and utf-16 lead byte and utf-16&#xD;      // lead surrogate are null, return finished.&#xD;      if (bite === end_of_stream &amp;&amp; utf16_lead_byte === null &amp;&amp;&#xD;          utf16_lead_surrogate === null) {&#xD;        return finished;&#xD;      }&#xD;&#xD;      // 3. If utf-16 lead byte is null, set utf-16 lead byte to byte&#xD;      // and return continue.&#xD;      if (utf16_lead_byte === null) {&#xD;        utf16_lead_byte = bite;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 4. Let code unit be the result of:&#xD;      var code_unit;&#xD;      if (utf16_be) {&#xD;        // utf-16be decoder flag is set&#xD;        //   (utf-16 lead byte &lt;&lt; 8) + byte.&#xD;        code_unit = (utf16_lead_byte &lt;&lt; 8) + bite;&#xD;      } else {&#xD;        // utf-16be decoder flag is unset&#xD;        //   (byte &lt;&lt; 8) + utf-16 lead byte.&#xD;        code_unit = (bite &lt;&lt; 8) + utf16_lead_byte;&#xD;      }&#xD;      // Then set utf-16 lead byte to null.&#xD;      utf16_lead_byte = null;&#xD;&#xD;      // 5. If utf-16 lead surrogate is not null, let lead surrogate&#xD;      // be utf-16 lead surrogate, set utf-16 lead surrogate to null,&#xD;      // and then run these substeps:&#xD;      if (utf16_lead_surrogate !== null) {&#xD;        var lead_surrogate = utf16_lead_surrogate;&#xD;        utf16_lead_surrogate = null;&#xD;&#xD;        // 1. If code unit is in the range U+DC00 to U+DFFF,&#xD;        // inclusive, return a code point whose value is 0x10000 +&#xD;        // ((lead surrogate − 0xD800) &lt;&lt; 10) + (code unit − 0xDC00).&#xD;        if (inRange(code_unit, 0xDC00, 0xDFFF)) {&#xD;          return 0x10000 + (lead_surrogate - 0xD800) * 0x400 +&#xD;              (code_unit - 0xDC00);&#xD;        }&#xD;&#xD;        // 2. Prepend the sequence resulting of converting code unit&#xD;        // to bytes using utf-16be decoder flag to stream and return&#xD;        // error.&#xD;        stream.prepend(convertCodeUnitToBytes(code_unit, utf16_be));&#xD;        return decoderError(fatal);&#xD;      }&#xD;&#xD;      // 6. If code unit is in the range U+D800 to U+DBFF, inclusive,&#xD;      // set utf-16 lead surrogate to code unit and return continue.&#xD;      if (inRange(code_unit, 0xD800, 0xDBFF)) {&#xD;        utf16_lead_surrogate = code_unit;&#xD;        return null;&#xD;      }&#xD;&#xD;      // 7. If code unit is in the range U+DC00 to U+DFFF, inclusive,&#xD;      // return error.&#xD;      if (inRange(code_unit, 0xDC00, 0xDFFF))&#xD;        return decoderError(fatal);&#xD;&#xD;      // 8. Return code point code unit.&#xD;      return code_unit;&#xD;    };&#xD;  }&#xD;&#xD;  // 15.2.2 shared utf-16 encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {boolean} utf16_be True if big-endian, false if little-endian.&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function UTF16Encoder(utf16_be, options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1. If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is in the range U+0000 to U+FFFF, inclusive,&#xD;      // return the sequence resulting of converting code point to&#xD;      // bytes using utf-16be encoder flag.&#xD;      if (inRange(code_point, 0x0000, 0xFFFF))&#xD;        return convertCodeUnitToBytes(code_point, utf16_be);&#xD;&#xD;      // 3. Let lead be ((code point − 0x10000) &gt;&gt; 10) + 0xD800,&#xD;      // converted to bytes using utf-16be encoder flag.&#xD;      var lead = convertCodeUnitToBytes(&#xD;        ((code_point - 0x10000) &gt;&gt; 10) + 0xD800, utf16_be);&#xD;&#xD;      // 4. Let trail be ((code point − 0x10000) &amp; 0x3FF) + 0xDC00,&#xD;      // converted to bytes using utf-16be encoder flag.&#xD;      var trail = convertCodeUnitToBytes(&#xD;        ((code_point - 0x10000) &amp; 0x3FF) + 0xDC00, utf16_be);&#xD;&#xD;      // 5. Return a byte sequence of lead followed by trail.&#xD;      return lead.concat(trail);&#xD;    };&#xD;  }&#xD;&#xD;  // 15.3 utf-16be&#xD;  // 15.3.1 utf-16be decoder&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;UTF-16BE&apos;] = function(options) {&#xD;    return new UTF16Encoder(true, options);&#xD;  };&#xD;  // 15.3.2 utf-16be encoder&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;UTF-16BE&apos;] = function(options) {&#xD;    return new UTF16Decoder(true, options);&#xD;  };&#xD;&#xD;  // 15.4 utf-16le&#xD;  // 15.4.1 utf-16le decoder&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;UTF-16LE&apos;] = function(options) {&#xD;    return new UTF16Encoder(false, options);&#xD;  };&#xD;  // 15.4.2 utf-16le encoder&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;UTF-16LE&apos;] = function(options) {&#xD;    return new UTF16Decoder(false, options);&#xD;  };&#xD;&#xD;  // 15.5 x-user-defined&#xD;&#xD;  // 15.5.1 x-user-defined decoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Decoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function XUserDefinedDecoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream The stream of bytes being decoded.&#xD;     * @param {number} bite The next byte read from the stream.&#xD;     * @return {?(number|!Array.&lt;number&gt;)} The next code point(s)&#xD;     *     decoded, or null if not enough data exists in the input&#xD;     *     stream to decode a complete code point.&#xD;     */&#xD;    this.handler = function(stream, bite) {&#xD;      // 1. If byte is end-of-stream, return finished.&#xD;      if (bite === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If byte is an ASCII byte, return a code point whose value&#xD;      // is byte.&#xD;      if (isASCIIByte(bite))&#xD;        return bite;&#xD;&#xD;      // 3. Return a code point whose value is 0xF780 + byte − 0x80.&#xD;      return 0xF780 + bite - 0x80;&#xD;    };&#xD;  }&#xD;&#xD;  // 15.5.2 x-user-defined encoder&#xD;  /**&#xD;   * @constructor&#xD;   * @implements {Encoder}&#xD;   * @param {{fatal: boolean}} options&#xD;   */&#xD;  function XUserDefinedEncoder(options) {&#xD;    var fatal = options.fatal;&#xD;    /**&#xD;     * @param {Stream} stream Input stream.&#xD;     * @param {number} code_point Next code point read from the stream.&#xD;     * @return {(number|!Array.&lt;number&gt;)} Byte(s) to emit.&#xD;     */&#xD;    this.handler = function(stream, code_point) {&#xD;      // 1.If code point is end-of-stream, return finished.&#xD;      if (code_point === end_of_stream)&#xD;        return finished;&#xD;&#xD;      // 2. If code point is an ASCII code point, return a byte whose&#xD;      // value is code point.&#xD;      if (isASCIICodePoint(code_point))&#xD;        return code_point;&#xD;&#xD;      // 3. If code point is in the range U+F780 to U+F7FF, inclusive,&#xD;      // return a byte whose value is code point − 0xF780 + 0x80.&#xD;      if (inRange(code_point, 0xF780, 0xF7FF))&#xD;        return code_point - 0xF780 + 0x80;&#xD;&#xD;      // 4. Return error with code point.&#xD;      return encoderError(code_point);&#xD;    };&#xD;  }&#xD;&#xD;  /** @param {{fatal: boolean}} options */&#xD;  encoders[&apos;x-user-defined&apos;] = function(options) {&#xD;    return new XUserDefinedEncoder(options);&#xD;  };&#xD;  /** @param {{fatal: boolean}} options */&#xD;  decoders[&apos;x-user-defined&apos;] = function(options) {&#xD;    return new XUserDefinedDecoder(options);&#xD;  };&#xD;&#xD;  if (!global[&apos;TextEncoder&apos;])&#xD;    global[&apos;TextEncoder&apos;] = TextEncoder;&#xD;  if (!global[&apos;TextDecoder&apos;])&#xD;    global[&apos;TextDecoder&apos;] = TextDecoder;&#xD;&#xD;  if (typeof module !== "undefined" &amp;&amp; module.exports) {&#xD;    module.exports = {&#xD;      TextEncoder: global[&apos;TextEncoder&apos;],&#xD;      TextDecoder: global[&apos;TextDecoder&apos;],&#xD;      EncodingIndexes: global["encoding-indexes"]&#xD;    };&#xD;  }&#xD;&#xD;// For strict environments where `this` inside the global scope&#xD;// is `undefined`, take a pure object instead&#xD;}(this || {}));&#xD;&#xD;/***/ }),&#xD;/* 59 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(275);&#xD;&#xD;/***/ }),&#xD;/* 60 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(197);&#xD;&#xD;/***/ }),&#xD;/* 61 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(348);&#xD;&#xD;/***/ }),&#xD;/* 62 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(153);&#xD;&#xD;/***/ }),&#xD;/* 63 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = __webpack_require__(270);&#xD;&#xD;/***/ }),&#xD;/* 64 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;var ScratchStorage = __webpack_require__(21);&#xD;&#xD;/**&#xD; * Export for use with NPM &amp; Node.js.&#xD; * @type {ScratchStorage}&#xD; */&#xD;module.exports = ScratchStorage;&#xD;&#xD;/***/ })&#xD;/******/ ]);&#xD;//# sourceMappingURL=scratch-storage.js.map&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(13), __webpack_require__(14), __webpack_require__(106).setImmediate))&#xD;&#xD;/***/ }),&#xD;/* 509 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {&#xD;    "use strict";&#xD;&#xD;    if (global.setImmediate) {&#xD;        return;&#xD;    }&#xD;&#xD;    var nextHandle = 1; // Spec says greater than zero&#xD;    var tasksByHandle = {};&#xD;    var currentlyRunningATask = false;&#xD;    var doc = global.document;&#xD;    var registerImmediate;&#xD;&#xD;    function setImmediate(callback) {&#xD;      // Callback can either be a function or a string&#xD;      if (typeof callback !== "function") {&#xD;        callback = new Function("" + callback);&#xD;      }&#xD;      // Copy function arguments&#xD;      var args = new Array(arguments.length - 1);&#xD;      for (var i = 0; i &lt; args.length; i++) {&#xD;          args[i] = arguments[i + 1];&#xD;      }&#xD;      // Store and register the task&#xD;      var task = { callback: callback, args: args };&#xD;      tasksByHandle[nextHandle] = task;&#xD;      registerImmediate(nextHandle);&#xD;      return nextHandle++;&#xD;    }&#xD;&#xD;    function clearImmediate(handle) {&#xD;        delete tasksByHandle[handle];&#xD;    }&#xD;&#xD;    function run(task) {&#xD;        var callback = task.callback;&#xD;        var args = task.args;&#xD;        switch (args.length) {&#xD;        case 0:&#xD;            callback();&#xD;            break;&#xD;        case 1:&#xD;            callback(args[0]);&#xD;            break;&#xD;        case 2:&#xD;            callback(args[0], args[1]);&#xD;            break;&#xD;        case 3:&#xD;            callback(args[0], args[1], args[2]);&#xD;            break;&#xD;        default:&#xD;            callback.apply(undefined, args);&#xD;            break;&#xD;        }&#xD;    }&#xD;&#xD;    function runIfPresent(handle) {&#xD;        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."&#xD;        // So if we&apos;re currently running a task, we&apos;ll need to delay this invocation.&#xD;        if (currentlyRunningATask) {&#xD;            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a&#xD;            // "too much recursion" error.&#xD;            setTimeout(runIfPresent, 0, handle);&#xD;        } else {&#xD;            var task = tasksByHandle[handle];&#xD;            if (task) {&#xD;                currentlyRunningATask = true;&#xD;                try {&#xD;                    run(task);&#xD;                } finally {&#xD;                    clearImmediate(handle);&#xD;                    currentlyRunningATask = false;&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;&#xD;    function installNextTickImplementation() {&#xD;        registerImmediate = function(handle) {&#xD;            process.nextTick(function () { runIfPresent(handle); });&#xD;        };&#xD;    }&#xD;&#xD;    function canUsePostMessage() {&#xD;        // The test against `importScripts` prevents this implementation from being installed inside a web worker,&#xD;        // where `global.postMessage` means something completely different and can&apos;t be used for this purpose.&#xD;        if (global.postMessage &amp;&amp; !global.importScripts) {&#xD;            var postMessageIsAsynchronous = true;&#xD;            var oldOnMessage = global.onmessage;&#xD;            global.onmessage = function() {&#xD;                postMessageIsAsynchronous = false;&#xD;            };&#xD;            global.postMessage("", "*");&#xD;            global.onmessage = oldOnMessage;&#xD;            return postMessageIsAsynchronous;&#xD;        }&#xD;    }&#xD;&#xD;    function installPostMessageImplementation() {&#xD;        // Installs an event handler on `global` for the `message` event: see&#xD;        // * https://developer.mozilla.org/en/DOM/window.postMessage&#xD;        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages&#xD;&#xD;        var messagePrefix = "setImmediate$" + Math.random() + "$";&#xD;        var onGlobalMessage = function(event) {&#xD;            if (event.source === global &amp;&amp;&#xD;                typeof event.data === "string" &amp;&amp;&#xD;                event.data.indexOf(messagePrefix) === 0) {&#xD;                runIfPresent(+event.data.slice(messagePrefix.length));&#xD;            }&#xD;        };&#xD;&#xD;        if (global.addEventListener) {&#xD;            global.addEventListener("message", onGlobalMessage, false);&#xD;        } else {&#xD;            global.attachEvent("onmessage", onGlobalMessage);&#xD;        }&#xD;&#xD;        registerImmediate = function(handle) {&#xD;            global.postMessage(messagePrefix + handle, "*");&#xD;        };&#xD;    }&#xD;&#xD;    function installMessageChannelImplementation() {&#xD;        var channel = new MessageChannel();&#xD;        channel.port1.onmessage = function(event) {&#xD;            var handle = event.data;&#xD;            runIfPresent(handle);&#xD;        };&#xD;&#xD;        registerImmediate = function(handle) {&#xD;            channel.port2.postMessage(handle);&#xD;        };&#xD;    }&#xD;&#xD;    function installReadyStateChangeImplementation() {&#xD;        var html = doc.documentElement;&#xD;        registerImmediate = function(handle) {&#xD;            // Create a &lt;script&gt; element; its readystatechange event will be fired asynchronously once it is inserted&#xD;            // into the document. Do so, thus queuing up the task. Remember to clean up once it&apos;s been called.&#xD;            var script = doc.createElement("script");&#xD;            script.onreadystatechange = function () {&#xD;                runIfPresent(handle);&#xD;                script.onreadystatechange = null;&#xD;                html.removeChild(script);&#xD;                script = null;&#xD;            };&#xD;            html.appendChild(script);&#xD;        };&#xD;    }&#xD;&#xD;    function installSetTimeoutImplementation() {&#xD;        registerImmediate = function(handle) {&#xD;            setTimeout(runIfPresent, 0, handle);&#xD;        };&#xD;    }&#xD;&#xD;    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.&#xD;    var attachTo = Object.getPrototypeOf &amp;&amp; Object.getPrototypeOf(global);&#xD;    attachTo = attachTo &amp;&amp; attachTo.setTimeout ? attachTo : global;&#xD;&#xD;    // Don&apos;t get fooled by e.g. browserify environments.&#xD;    if ({}.toString.call(global.process) === "[object process]") {&#xD;        // For Node.js before 0.9&#xD;        installNextTickImplementation();&#xD;&#xD;    } else if (canUsePostMessage()) {&#xD;        // For non-IE10 modern browsers&#xD;        installPostMessageImplementation();&#xD;&#xD;    } else if (global.MessageChannel) {&#xD;        // For web workers, where supported&#xD;        installMessageChannelImplementation();&#xD;&#xD;    } else if (doc &amp;&amp; "onreadystatechange" in doc.createElement("script")) {&#xD;        // For IE 6–8&#xD;        installReadyStateChangeImplementation();&#xD;&#xD;    } else {&#xD;        // For older browsers&#xD;        installSetTimeoutImplementation();&#xD;    }&#xD;&#xD;    attachTo.setImmediate = setImmediate;&#xD;    attachTo.clearImmediate = clearImmediate;&#xD;}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13), __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 510 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var exports = module.exports = function SHA (algorithm) {&#xD;  algorithm = algorithm.toLowerCase()&#xD;&#xD;  var Algorithm = exports[algorithm]&#xD;  if (!Algorithm) throw new Error(algorithm + &apos; is not supported (we accept pull requests)&apos;)&#xD;&#xD;  return new Algorithm()&#xD;}&#xD;&#xD;exports.sha = __webpack_require__(511)&#xD;exports.sha1 = __webpack_require__(512)&#xD;exports.sha224 = __webpack_require__(513)&#xD;exports.sha256 = __webpack_require__(195)&#xD;exports.sha384 = __webpack_require__(514)&#xD;exports.sha512 = __webpack_require__(196)&#xD;&#xD;&#xD;/***/ }),&#xD;/* 511 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {/*&#xD; * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined&#xD; * in FIPS PUB 180-1&#xD; * This source code is derived from sha1.js of the same repository.&#xD; * The difference between SHA-0 and SHA-1 is just a bitwise rotate left&#xD; * operation was added.&#xD; */&#xD;&#xD;var inherits = __webpack_require__(5)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var K = [&#xD;  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0&#xD;]&#xD;&#xD;var W = new Array(80)&#xD;&#xD;function Sha () {&#xD;  this.init()&#xD;  this._w = W&#xD;&#xD;  Hash.call(this, 64, 56)&#xD;}&#xD;&#xD;inherits(Sha, Hash)&#xD;&#xD;Sha.prototype.init = function () {&#xD;  this._a = 0x67452301&#xD;  this._b = 0xefcdab89&#xD;  this._c = 0x98badcfe&#xD;  this._d = 0x10325476&#xD;  this._e = 0xc3d2e1f0&#xD;&#xD;  return this&#xD;}&#xD;&#xD;function rotl5 (num) {&#xD;  return (num &lt;&lt; 5) | (num &gt;&gt;&gt; 27)&#xD;}&#xD;&#xD;function rotl30 (num) {&#xD;  return (num &lt;&lt; 30) | (num &gt;&gt;&gt; 2)&#xD;}&#xD;&#xD;function ft (s, b, c, d) {&#xD;  if (s === 0) return (b &amp; c) | ((&#126;b) &amp; d)&#xD;  if (s === 2) return (b &amp; c) | (b &amp; d) | (c &amp; d)&#xD;  return b ^ c ^ d&#xD;}&#xD;&#xD;Sha.prototype._update = function (M) {&#xD;  var W = this._w&#xD;&#xD;  var a = this._a | 0&#xD;  var b = this._b | 0&#xD;  var c = this._c | 0&#xD;  var d = this._d | 0&#xD;  var e = this._e | 0&#xD;&#xD;  for (var i = 0; i &lt; 16; ++i) W[i] = M.readInt32BE(i * 4)&#xD;  for (; i &lt; 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]&#xD;&#xD;  for (var j = 0; j &lt; 80; ++j) {&#xD;    var s = &#126;&#126;(j / 20)&#xD;    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0&#xD;&#xD;    e = d&#xD;    d = c&#xD;    c = rotl30(b)&#xD;    b = a&#xD;    a = t&#xD;  }&#xD;&#xD;  this._a = (a + this._a) | 0&#xD;  this._b = (b + this._b) | 0&#xD;  this._c = (c + this._c) | 0&#xD;  this._d = (d + this._d) | 0&#xD;  this._e = (e + this._e) | 0&#xD;}&#xD;&#xD;Sha.prototype._hash = function () {&#xD;  var H = new Buffer(20)&#xD;&#xD;  H.writeInt32BE(this._a | 0, 0)&#xD;  H.writeInt32BE(this._b | 0, 4)&#xD;  H.writeInt32BE(this._c | 0, 8)&#xD;  H.writeInt32BE(this._d | 0, 12)&#xD;  H.writeInt32BE(this._e | 0, 16)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 512 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {/*&#xD; * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined&#xD; * in FIPS PUB 180-1&#xD; * Version 2.1a Copyright Paul Johnston 2000 - 2002.&#xD; * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&#xD; * Distributed under the BSD License&#xD; * See http://pajhome.org.uk/crypt/md5 for details.&#xD; */&#xD;&#xD;var inherits = __webpack_require__(5)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var K = [&#xD;  0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0&#xD;]&#xD;&#xD;var W = new Array(80)&#xD;&#xD;function Sha1 () {&#xD;  this.init()&#xD;  this._w = W&#xD;&#xD;  Hash.call(this, 64, 56)&#xD;}&#xD;&#xD;inherits(Sha1, Hash)&#xD;&#xD;Sha1.prototype.init = function () {&#xD;  this._a = 0x67452301&#xD;  this._b = 0xefcdab89&#xD;  this._c = 0x98badcfe&#xD;  this._d = 0x10325476&#xD;  this._e = 0xc3d2e1f0&#xD;&#xD;  return this&#xD;}&#xD;&#xD;function rotl1 (num) {&#xD;  return (num &lt;&lt; 1) | (num &gt;&gt;&gt; 31)&#xD;}&#xD;&#xD;function rotl5 (num) {&#xD;  return (num &lt;&lt; 5) | (num &gt;&gt;&gt; 27)&#xD;}&#xD;&#xD;function rotl30 (num) {&#xD;  return (num &lt;&lt; 30) | (num &gt;&gt;&gt; 2)&#xD;}&#xD;&#xD;function ft (s, b, c, d) {&#xD;  if (s === 0) return (b &amp; c) | ((&#126;b) &amp; d)&#xD;  if (s === 2) return (b &amp; c) | (b &amp; d) | (c &amp; d)&#xD;  return b ^ c ^ d&#xD;}&#xD;&#xD;Sha1.prototype._update = function (M) {&#xD;  var W = this._w&#xD;&#xD;  var a = this._a | 0&#xD;  var b = this._b | 0&#xD;  var c = this._c | 0&#xD;  var d = this._d | 0&#xD;  var e = this._e | 0&#xD;&#xD;  for (var i = 0; i &lt; 16; ++i) W[i] = M.readInt32BE(i * 4)&#xD;  for (; i &lt; 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])&#xD;&#xD;  for (var j = 0; j &lt; 80; ++j) {&#xD;    var s = &#126;&#126;(j / 20)&#xD;    var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0&#xD;&#xD;    e = d&#xD;    d = c&#xD;    c = rotl30(b)&#xD;    b = a&#xD;    a = t&#xD;  }&#xD;&#xD;  this._a = (a + this._a) | 0&#xD;  this._b = (b + this._b) | 0&#xD;  this._c = (c + this._c) | 0&#xD;  this._d = (d + this._d) | 0&#xD;  this._e = (e + this._e) | 0&#xD;}&#xD;&#xD;Sha1.prototype._hash = function () {&#xD;  var H = new Buffer(20)&#xD;&#xD;  H.writeInt32BE(this._a | 0, 0)&#xD;  H.writeInt32BE(this._b | 0, 4)&#xD;  H.writeInt32BE(this._c | 0, 8)&#xD;  H.writeInt32BE(this._d | 0, 12)&#xD;  H.writeInt32BE(this._e | 0, 16)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha1&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 513 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {/**&#xD; * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined&#xD; * in FIPS 180-2&#xD; * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.&#xD; * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet&#xD; *&#xD; */&#xD;&#xD;var inherits = __webpack_require__(5)&#xD;var Sha256 = __webpack_require__(195)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var W = new Array(64)&#xD;&#xD;function Sha224 () {&#xD;  this.init()&#xD;&#xD;  this._w = W // new Array(64)&#xD;&#xD;  Hash.call(this, 64, 56)&#xD;}&#xD;&#xD;inherits(Sha224, Sha256)&#xD;&#xD;Sha224.prototype.init = function () {&#xD;  this._a = 0xc1059ed8&#xD;  this._b = 0x367cd507&#xD;  this._c = 0x3070dd17&#xD;  this._d = 0xf70e5939&#xD;  this._e = 0xffc00b31&#xD;  this._f = 0x68581511&#xD;  this._g = 0x64f98fa7&#xD;  this._h = 0xbefa4fa4&#xD;&#xD;  return this&#xD;}&#xD;&#xD;Sha224.prototype._hash = function () {&#xD;  var H = new Buffer(28)&#xD;&#xD;  H.writeInt32BE(this._a, 0)&#xD;  H.writeInt32BE(this._b, 4)&#xD;  H.writeInt32BE(this._c, 8)&#xD;  H.writeInt32BE(this._d, 12)&#xD;  H.writeInt32BE(this._e, 16)&#xD;  H.writeInt32BE(this._f, 20)&#xD;  H.writeInt32BE(this._g, 24)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha224&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 514 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer) {var inherits = __webpack_require__(5)&#xD;var SHA512 = __webpack_require__(196)&#xD;var Hash = __webpack_require__(44)&#xD;&#xD;var W = new Array(160)&#xD;&#xD;function Sha384 () {&#xD;  this.init()&#xD;  this._w = W&#xD;&#xD;  Hash.call(this, 128, 112)&#xD;}&#xD;&#xD;inherits(Sha384, SHA512)&#xD;&#xD;Sha384.prototype.init = function () {&#xD;  this._ah = 0xcbbb9d5d&#xD;  this._bh = 0x629a292a&#xD;  this._ch = 0x9159015a&#xD;  this._dh = 0x152fecd8&#xD;  this._eh = 0x67332667&#xD;  this._fh = 0x8eb44a87&#xD;  this._gh = 0xdb0c2e0d&#xD;  this._hh = 0x47b5481d&#xD;&#xD;  this._al = 0xc1059ed8&#xD;  this._bl = 0x367cd507&#xD;  this._cl = 0x3070dd17&#xD;  this._dl = 0xf70e5939&#xD;  this._el = 0xffc00b31&#xD;  this._fl = 0x68581511&#xD;  this._gl = 0x64f98fa7&#xD;  this._hl = 0xbefa4fa4&#xD;&#xD;  return this&#xD;}&#xD;&#xD;Sha384.prototype._hash = function () {&#xD;  var H = new Buffer(48)&#xD;&#xD;  function writeInt64BE (h, l, offset) {&#xD;    H.writeInt32BE(h, offset)&#xD;    H.writeInt32BE(l, offset + 4)&#xD;  }&#xD;&#xD;  writeInt64BE(this._ah, this._al, 0)&#xD;  writeInt64BE(this._bh, this._bl, 8)&#xD;  writeInt64BE(this._ch, this._cl, 16)&#xD;  writeInt64BE(this._dh, this._dl, 24)&#xD;  writeInt64BE(this._eh, this._el, 32)&#xD;  writeInt64BE(this._fh, this._fl, 40)&#xD;&#xD;  return H&#xD;}&#xD;&#xD;module.exports = Sha384&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer))&#xD;&#xD;/***/ }),&#xD;/* 515 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(Buffer, global, process) {var capability = __webpack_require__(198)&#xD;var inherits = __webpack_require__(5)&#xD;var response = __webpack_require__(516)&#xD;var stream = __webpack_require__(105)&#xD;var toArrayBuffer = __webpack_require__(555)&#xD;&#xD;var IncomingMessage = response.IncomingMessage&#xD;var rStates = response.readyStates&#xD;&#xD;function decideMode (preferBinary, useFetch) {&#xD;	if (capability.fetch &amp;&amp; useFetch) {&#xD;		return &apos;fetch&apos;&#xD;	} else if (capability.mozchunkedarraybuffer) {&#xD;		return &apos;moz-chunked-arraybuffer&apos;&#xD;	} else if (capability.msstream) {&#xD;		return &apos;ms-stream&apos;&#xD;	} else if (capability.arraybuffer &amp;&amp; preferBinary) {&#xD;		return &apos;arraybuffer&apos;&#xD;	} else if (capability.vbArray &amp;&amp; preferBinary) {&#xD;		return &apos;text:vbarray&apos;&#xD;	} else {&#xD;		return &apos;text&apos;&#xD;	}&#xD;}&#xD;&#xD;var ClientRequest = module.exports = function (opts) {&#xD;	var self = this&#xD;	stream.Writable.call(self)&#xD;&#xD;	self._opts = opts&#xD;	self._body = []&#xD;	self._headers = {}&#xD;	if (opts.auth)&#xD;		self.setHeader(&apos;Authorization&apos;, &apos;Basic &apos; + new Buffer(opts.auth).toString(&apos;base64&apos;))&#xD;	Object.keys(opts.headers).forEach(function (name) {&#xD;		self.setHeader(name, opts.headers[name])&#xD;	})&#xD;&#xD;	var preferBinary&#xD;	var useFetch = true&#xD;	if (opts.mode === &apos;disable-fetch&apos; || &apos;timeout&apos; in opts) {&#xD;		// If the use of XHR should be preferred and includes preserving the &apos;content-type&apos; header.&#xD;		// Force XHR to be used since the Fetch API does not yet support timeouts.&#xD;		useFetch = false&#xD;		preferBinary = true&#xD;	} else if (opts.mode === &apos;prefer-streaming&apos;) {&#xD;		// If streaming is a high priority but binary compatibility and&#xD;		// the accuracy of the &apos;content-type&apos; header aren&apos;t&#xD;		preferBinary = false&#xD;	} else if (opts.mode === &apos;allow-wrong-content-type&apos;) {&#xD;		// If streaming is more important than preserving the &apos;content-type&apos; header&#xD;		preferBinary = !capability.overrideMimeType&#xD;	} else if (!opts.mode || opts.mode === &apos;default&apos; || opts.mode === &apos;prefer-fast&apos;) {&#xD;		// Use binary if text streaming may corrupt data or the content-type header, or for speed&#xD;		preferBinary = true&#xD;	} else {&#xD;		throw new Error(&apos;Invalid value for opts.mode&apos;)&#xD;	}&#xD;	self._mode = decideMode(preferBinary, useFetch)&#xD;&#xD;	self.on(&apos;finish&apos;, function () {&#xD;		self._onFinish()&#xD;	})&#xD;}&#xD;&#xD;inherits(ClientRequest, stream.Writable)&#xD;&#xD;ClientRequest.prototype.setHeader = function (name, value) {&#xD;	var self = this&#xD;	var lowerName = name.toLowerCase()&#xD;	// This check is not necessary, but it prevents warnings from browsers about setting unsafe&#xD;	// headers. To be honest I&apos;m not entirely sure hiding these warnings is a good thing, but&#xD;	// http-browserify did it, so I will too.&#xD;	if (unsafeHeaders.indexOf(lowerName) !== -1)&#xD;		return&#xD;&#xD;	self._headers[lowerName] = {&#xD;		name: name,&#xD;		value: value&#xD;	}&#xD;}&#xD;&#xD;ClientRequest.prototype.getHeader = function (name) {&#xD;	var self = this&#xD;	return self._headers[name.toLowerCase()].value&#xD;}&#xD;&#xD;ClientRequest.prototype.removeHeader = function (name) {&#xD;	var self = this&#xD;	delete self._headers[name.toLowerCase()]&#xD;}&#xD;&#xD;ClientRequest.prototype._onFinish = function () {&#xD;	var self = this&#xD;&#xD;	if (self._destroyed)&#xD;		return&#xD;	var opts = self._opts&#xD;&#xD;	var headersObj = self._headers&#xD;	var body = null&#xD;	if (opts.method === &apos;POST&apos; || opts.method === &apos;PUT&apos; || opts.method === &apos;PATCH&apos; || opts.method === &apos;MERGE&apos;) {&#xD;		if (capability.blobConstructor) {&#xD;			body = new global.Blob(self._body.map(function (buffer) {&#xD;				return toArrayBuffer(buffer)&#xD;			}), {&#xD;				type: (headersObj[&apos;content-type&apos;] || {}).value || &apos;&apos;&#xD;			})&#xD;		} else {&#xD;			// get utf8 string&#xD;			body = Buffer.concat(self._body).toString()&#xD;		}&#xD;	}&#xD;&#xD;	if (self._mode === &apos;fetch&apos;) {&#xD;		var headers = Object.keys(headersObj).map(function (name) {&#xD;			return [headersObj[name].name, headersObj[name].value]&#xD;		})&#xD;&#xD;		global.fetch(self._opts.url, {&#xD;			method: self._opts.method,&#xD;			headers: headers,&#xD;			body: body || undefined,&#xD;			mode: &apos;cors&apos;,&#xD;			credentials: opts.withCredentials ? &apos;include&apos; : &apos;same-origin&apos;&#xD;		}).then(function (response) {&#xD;			self._fetchResponse = response&#xD;			self._connect()&#xD;		}, function (reason) {&#xD;			self.emit(&apos;error&apos;, reason)&#xD;		})&#xD;	} else {&#xD;		var xhr = self._xhr = new global.XMLHttpRequest()&#xD;		try {&#xD;			xhr.open(self._opts.method, self._opts.url, true)&#xD;		} catch (err) {&#xD;			process.nextTick(function () {&#xD;				self.emit(&apos;error&apos;, err)&#xD;			})&#xD;			return&#xD;		}&#xD;&#xD;		// Can&apos;t set responseType on really old browsers&#xD;		if (&apos;responseType&apos; in xhr)&#xD;			xhr.responseType = self._mode.split(&apos;:&apos;)[0]&#xD;&#xD;		if (&apos;withCredentials&apos; in xhr)&#xD;			xhr.withCredentials = !!opts.withCredentials&#xD;&#xD;		if (self._mode === &apos;text&apos; &amp;&amp; &apos;overrideMimeType&apos; in xhr)&#xD;			xhr.overrideMimeType(&apos;text/plain; charset=x-user-defined&apos;)&#xD;&#xD;		if (&apos;timeout&apos; in opts) {&#xD;			xhr.timeout = opts.timeout&#xD;			xhr.ontimeout = function () {&#xD;				self.emit(&apos;timeout&apos;)&#xD;			}&#xD;		}&#xD;&#xD;		Object.keys(headersObj).forEach(function (name) {&#xD;			xhr.setRequestHeader(headersObj[name].name, headersObj[name].value)&#xD;		})&#xD;&#xD;		self._response = null&#xD;		xhr.onreadystatechange = function () {&#xD;			switch (xhr.readyState) {&#xD;				case rStates.LOADING:&#xD;				case rStates.DONE:&#xD;					self._onXHRProgress()&#xD;					break&#xD;			}&#xD;		}&#xD;		// Necessary for streaming in Firefox, since xhr.response is ONLY defined&#xD;		// in onprogress, not in onreadystatechange with xhr.readyState = 3&#xD;		if (self._mode === &apos;moz-chunked-arraybuffer&apos;) {&#xD;			xhr.onprogress = function () {&#xD;				self._onXHRProgress()&#xD;			}&#xD;		}&#xD;&#xD;		xhr.onerror = function () {&#xD;			if (self._destroyed)&#xD;				return&#xD;			self.emit(&apos;error&apos;, new Error(&apos;XHR error&apos;))&#xD;		}&#xD;&#xD;		try {&#xD;			xhr.send(body)&#xD;		} catch (err) {&#xD;			process.nextTick(function () {&#xD;				self.emit(&apos;error&apos;, err)&#xD;			})&#xD;			return&#xD;		}&#xD;	}&#xD;}&#xD;&#xD;/**&#xD; * Checks if xhr.status is readable and non-zero, indicating no error.&#xD; * Even though the spec says it should be available in readyState 3,&#xD; * accessing it throws an exception in IE8&#xD; */&#xD;function statusValid (xhr) {&#xD;	try {&#xD;		var status = xhr.status&#xD;		return (status !== null &amp;&amp; status !== 0)&#xD;	} catch (e) {&#xD;		return false&#xD;	}&#xD;}&#xD;&#xD;ClientRequest.prototype._onXHRProgress = function () {&#xD;	var self = this&#xD;&#xD;	if (!statusValid(self._xhr) || self._destroyed)&#xD;		return&#xD;&#xD;	if (!self._response)&#xD;		self._connect()&#xD;&#xD;	self._response._onXHRProgress()&#xD;}&#xD;&#xD;ClientRequest.prototype._connect = function () {&#xD;	var self = this&#xD;&#xD;	if (self._destroyed)&#xD;		return&#xD;&#xD;	self._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode)&#xD;	self._response.on(&apos;error&apos;, function(err) {&#xD;		self.emit(&apos;error&apos;, err)&#xD;	})&#xD;&#xD;	self.emit(&apos;response&apos;, self._response)&#xD;}&#xD;&#xD;ClientRequest.prototype._write = function (chunk, encoding, cb) {&#xD;	var self = this&#xD;&#xD;	self._body.push(chunk)&#xD;	cb()&#xD;}&#xD;&#xD;ClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {&#xD;	var self = this&#xD;	self._destroyed = true&#xD;	if (self._response)&#xD;		self._response._destroyed = true&#xD;	if (self._xhr)&#xD;		self._xhr.abort()&#xD;	// Currently, there isn&apos;t a way to truly abort a fetch.&#xD;	// If you like bikeshedding, see https://github.com/whatwg/fetch/issues/27&#xD;}&#xD;&#xD;ClientRequest.prototype.end = function (data, encoding, cb) {&#xD;	var self = this&#xD;	if (typeof data === &apos;function&apos;) {&#xD;		cb = data&#xD;		data = undefined&#xD;	}&#xD;&#xD;	stream.Writable.prototype.end.call(self, data, encoding, cb)&#xD;}&#xD;&#xD;ClientRequest.prototype.flushHeaders = function () {}&#xD;ClientRequest.prototype.setTimeout = function () {}&#xD;ClientRequest.prototype.setNoDelay = function () {}&#xD;ClientRequest.prototype.setSocketKeepAlive = function () {}&#xD;&#xD;// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method&#xD;var unsafeHeaders = [&#xD;	&apos;accept-charset&apos;,&#xD;	&apos;accept-encoding&apos;,&#xD;	&apos;access-control-request-headers&apos;,&#xD;	&apos;access-control-request-method&apos;,&#xD;	&apos;connection&apos;,&#xD;	&apos;content-length&apos;,&#xD;	&apos;cookie&apos;,&#xD;	&apos;cookie2&apos;,&#xD;	&apos;date&apos;,&#xD;	&apos;dnt&apos;,&#xD;	&apos;expect&apos;,&#xD;	&apos;host&apos;,&#xD;	&apos;keep-alive&apos;,&#xD;	&apos;origin&apos;,&#xD;	&apos;referer&apos;,&#xD;	&apos;te&apos;,&#xD;	&apos;trailer&apos;,&#xD;	&apos;transfer-encoding&apos;,&#xD;	&apos;upgrade&apos;,&#xD;	&apos;user-agent&apos;,&#xD;	&apos;via&apos;&#xD;]&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer, __webpack_require__(13), __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 516 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(process, Buffer, global) {var capability = __webpack_require__(198)&#xD;var inherits = __webpack_require__(5)&#xD;var stream = __webpack_require__(105)&#xD;&#xD;var rStates = exports.readyStates = {&#xD;	UNSENT: 0,&#xD;	OPENED: 1,&#xD;	HEADERS_RECEIVED: 2,&#xD;	LOADING: 3,&#xD;	DONE: 4&#xD;}&#xD;&#xD;var IncomingMessage = exports.IncomingMessage = function (xhr, response, mode) {&#xD;	var self = this&#xD;	stream.Readable.call(self)&#xD;&#xD;	self._mode = mode&#xD;	self.headers = {}&#xD;	self.rawHeaders = []&#xD;	self.trailers = {}&#xD;	self.rawTrailers = []&#xD;&#xD;	// Fake the &apos;close&apos; event, but only once &apos;end&apos; fires&#xD;	self.on(&apos;end&apos;, function () {&#xD;		// The nextTick is necessary to prevent the &apos;request&apos; module from causing an infinite loop&#xD;		process.nextTick(function () {&#xD;			self.emit(&apos;close&apos;)&#xD;		})&#xD;	})&#xD;&#xD;	if (mode === &apos;fetch&apos;) {&#xD;		self._fetchResponse = response&#xD;&#xD;		self.url = response.url&#xD;		self.statusCode = response.status&#xD;		self.statusMessage = response.statusText&#xD;		&#xD;		response.headers.forEach(function(header, key){&#xD;			self.headers[key.toLowerCase()] = header&#xD;			self.rawHeaders.push(key, header)&#xD;		})&#xD;&#xD;&#xD;		// TODO: this doesn&apos;t respect backpressure. Once WritableStream is available, this can be fixed&#xD;		var reader = response.body.getReader()&#xD;		function read () {&#xD;			reader.read().then(function (result) {&#xD;				if (self._destroyed)&#xD;					return&#xD;				if (result.done) {&#xD;					self.push(null)&#xD;					return&#xD;				}&#xD;				self.push(new Buffer(result.value))&#xD;				read()&#xD;			}).catch(function(err) {&#xD;				self.emit(&apos;error&apos;, err)&#xD;			})&#xD;		}&#xD;		read()&#xD;&#xD;	} else {&#xD;		self._xhr = xhr&#xD;		self._pos = 0&#xD;&#xD;		self.url = xhr.responseURL&#xD;		self.statusCode = xhr.status&#xD;		self.statusMessage = xhr.statusText&#xD;		var headers = xhr.getAllResponseHeaders().split(/\r?\n/)&#xD;		headers.forEach(function (header) {&#xD;			var matches = header.match(/^([^:]+):\s*(.*)/)&#xD;			if (matches) {&#xD;				var key = matches[1].toLowerCase()&#xD;				if (key === &apos;set-cookie&apos;) {&#xD;					if (self.headers[key] === undefined) {&#xD;						self.headers[key] = []&#xD;					}&#xD;					self.headers[key].push(matches[2])&#xD;				} else if (self.headers[key] !== undefined) {&#xD;					self.headers[key] += &apos;, &apos; + matches[2]&#xD;				} else {&#xD;					self.headers[key] = matches[2]&#xD;				}&#xD;				self.rawHeaders.push(matches[1], matches[2])&#xD;			}&#xD;		})&#xD;&#xD;		self._charset = &apos;x-user-defined&apos;&#xD;		if (!capability.overrideMimeType) {&#xD;			var mimeType = self.rawHeaders[&apos;mime-type&apos;]&#xD;			if (mimeType) {&#xD;				var charsetMatch = mimeType.match(/;\s*charset=([^;])(;|$)/)&#xD;				if (charsetMatch) {&#xD;					self._charset = charsetMatch[1].toLowerCase()&#xD;				}&#xD;			}&#xD;			if (!self._charset)&#xD;				self._charset = &apos;utf-8&apos; // best guess&#xD;		}&#xD;	}&#xD;}&#xD;&#xD;inherits(IncomingMessage, stream.Readable)&#xD;&#xD;IncomingMessage.prototype._read = function () {}&#xD;&#xD;IncomingMessage.prototype._onXHRProgress = function () {&#xD;	var self = this&#xD;&#xD;	var xhr = self._xhr&#xD;&#xD;	var response = null&#xD;	switch (self._mode) {&#xD;		case &apos;text:vbarray&apos;: // For IE9&#xD;			if (xhr.readyState !== rStates.DONE)&#xD;				break&#xD;			try {&#xD;				// This fails in IE8&#xD;				response = new global.VBArray(xhr.responseBody).toArray()&#xD;			} catch (e) {}&#xD;			if (response !== null) {&#xD;				self.push(new Buffer(response))&#xD;				break&#xD;			}&#xD;			// Falls through in IE8	&#xD;		case &apos;text&apos;:&#xD;			try { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4&#xD;				response = xhr.responseText&#xD;			} catch (e) {&#xD;				self._mode = &apos;text:vbarray&apos;&#xD;				break&#xD;			}&#xD;			if (response.length &gt; self._pos) {&#xD;				var newData = response.substr(self._pos)&#xD;				if (self._charset === &apos;x-user-defined&apos;) {&#xD;					var buffer = new Buffer(newData.length)&#xD;					for (var i = 0; i &lt; newData.length; i++)&#xD;						buffer[i] = newData.charCodeAt(i) &amp; 0xff&#xD;&#xD;					self.push(buffer)&#xD;				} else {&#xD;					self.push(newData, self._charset)&#xD;				}&#xD;				self._pos = response.length&#xD;			}&#xD;			break&#xD;		case &apos;arraybuffer&apos;:&#xD;			if (xhr.readyState !== rStates.DONE || !xhr.response)&#xD;				break&#xD;			response = xhr.response&#xD;			self.push(new Buffer(new Uint8Array(response)))&#xD;			break&#xD;		case &apos;moz-chunked-arraybuffer&apos;: // take whole&#xD;			response = xhr.response&#xD;			if (xhr.readyState !== rStates.LOADING || !response)&#xD;				break&#xD;			self.push(new Buffer(new Uint8Array(response)))&#xD;			break&#xD;		case &apos;ms-stream&apos;:&#xD;			response = xhr.response&#xD;			if (xhr.readyState !== rStates.LOADING)&#xD;				break&#xD;			var reader = new global.MSStreamReader()&#xD;			reader.onprogress = function () {&#xD;				if (reader.result.byteLength &gt; self._pos) {&#xD;					self.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))&#xD;					self._pos = reader.result.byteLength&#xD;				}&#xD;			}&#xD;			reader.onload = function () {&#xD;				self.push(null)&#xD;			}&#xD;			// reader.onerror = ??? // TODO: this&#xD;			reader.readAsArrayBuffer(response)&#xD;			break&#xD;	}&#xD;&#xD;	// The ms-stream case handles end separately in reader.onload()&#xD;	if (self._xhr.readyState === rStates.DONE &amp;&amp; self._mode !== &apos;ms-stream&apos;) {&#xD;		self.push(null)&#xD;	}&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14), __webpack_require__(1).Buffer, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 517 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;&#xD;/**&#xD; * When source maps are enabled, `style-loader` uses a link element with a data-uri to&#xD; * embed the css on the page. This breaks all relative urls because now they are relative to a&#xD; * bundle instead of the current page.&#xD; *&#xD; * One solution is to only use full urls, but that may be impossible.&#xD; *&#xD; * Instead, this function "fixes" the relative urls to be absolute according to the current page location.&#xD; *&#xD; * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.&#xD; *&#xD; */&#xD;&#xD;module.exports = function (css) {&#xD;  // get current location&#xD;  var location = typeof window !== "undefined" &amp;&amp; window.location;&#xD;&#xD;  if (!location) {&#xD;    throw new Error("fixUrls requires window.location");&#xD;  }&#xD;&#xD;	// blank or null?&#xD;	if (!css || typeof css !== "string") {&#xD;	  return css;&#xD;  }&#xD;&#xD;  var baseUrl = location.protocol + "//" + location.host;&#xD;  var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");&#xD;&#xD;	// convert each url(...)&#xD;	/*&#xD;	This regular expression is just a way to recursively match brackets within&#xD;	a string.&#xD;&#xD;	 /url\s*\(  = Match on the word "url" with any whitespace after it and then a parens&#xD;	   (  = Start a capturing group&#xD;	     (?:  = Start a non-capturing group&#xD;	         [^)(]  = Match anything that isn&apos;t a parentheses&#xD;	         |  = OR&#xD;	         \(  = Match a start parentheses&#xD;	             (?:  = Start another non-capturing groups&#xD;	                 [^)(]+  = Match anything that isn&apos;t a parentheses&#xD;	                 |  = OR&#xD;	                 \(  = Match a start parentheses&#xD;	                     [^)(]*  = Match anything that isn&apos;t a parentheses&#xD;	                 \)  = Match a end parentheses&#xD;	             )  = End Group&#xD;              *\) = Match anything and then a close parens&#xD;          )  = Close non-capturing group&#xD;          *  = Match anything&#xD;       )  = Close capturing group&#xD;	 \)  = Match a close parens&#xD;&#xD;	 /gi  = Get all matches, not the first.  Be case insensitive.&#xD;	 */&#xD;	var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(fullMatch, origUrl) {&#xD;		// strip quotes (if they exist)&#xD;		var unquotedOrigUrl = origUrl&#xD;			.trim()&#xD;			.replace(/^"(.*)"$/, function(o, $1){ return $1; })&#xD;			.replace(/^&apos;(.*)&apos;$/, function(o, $1){ return $1; });&#xD;&#xD;		// already a full url? no change&#xD;		if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(unquotedOrigUrl)) {&#xD;		  return fullMatch;&#xD;		}&#xD;&#xD;		// convert the url to a full url&#xD;		var newUrl;&#xD;&#xD;		if (unquotedOrigUrl.indexOf("//") === 0) {&#xD;		  	//TODO: should we add protocol?&#xD;			newUrl = unquotedOrigUrl;&#xD;		} else if (unquotedOrigUrl.indexOf("/") === 0) {&#xD;			// path should be relative to the base url&#xD;			newUrl = baseUrl + unquotedOrigUrl; // already starts with &apos;/&apos;&#xD;		} else {&#xD;			// path should be relative to current directory&#xD;			newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading &apos;./&apos;&#xD;		}&#xD;&#xD;		// send back the fixed url(...)&#xD;		return "url(" + JSON.stringify(newUrl) + ")";&#xD;	});&#xD;&#xD;	// send back the fixed css&#xD;	return fixedCss;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 518 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(276);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../css-loader/index.js??ref--1-1!../../postcss-loader/lib/index.js??postcss!./react-tabs.css", function() {&#xD;			var newContent = require("!!../../css-loader/index.js??ref--1-1!../../postcss-loader/lib/index.js??postcss!./react-tabs.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 519 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(277);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./asset-panel.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./asset-panel.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 520 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(278);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./selector.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./selector.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 521 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(279);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./blocks.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./blocks.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 522 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(280);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./box.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./box.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 523 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(281);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./button.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./button.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 524 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(282);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./close-button.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./close-button.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 525 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(283);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./green-flag.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./green-flag.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 526 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(284);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./gui.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./gui.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 527 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(285);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./library-item.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./library-item.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 528 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(286);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./library.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./library.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 529 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(287);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./load-button.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./load-button.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 530 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(288);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./menu-bar.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./menu-bar.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 531 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(289);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./modal.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./modal.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 532 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(290);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./monitor-list.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./monitor-list.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 533 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(291);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./monitor.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./monitor.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 534 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(292);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./prompt.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./prompt.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 535 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(293);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-info.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-info.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 536 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(294);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-selector-item.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-selector-item.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 537 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(295);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-selector.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./sprite-selector.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 538 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(296);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stage-selector.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stage-selector.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 539 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(297);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stage.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stage.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 540 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(298);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stop-all.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./stop-all.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 541 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;// style-loader: Adds some css to the DOM by adding a &lt;style&gt; tag&#xD;&#xD;// load the styles&#xD;var content = __webpack_require__(299);&#xD;if(typeof content === &apos;string&apos;) content = [[module.i, content, &apos;&apos;]];&#xD;// Prepare cssTransformation&#xD;var transform;&#xD;&#xD;var options = {}&#xD;options.transform = transform&#xD;// add the styles to the DOM&#xD;var update = __webpack_require__(8)(content, options);&#xD;if(content.locals) module.exports = content.locals;&#xD;// Hot Module Replacement&#xD;if(false) {&#xD;	// When the styles change, update the &lt;style&gt; tags&#xD;	if(!content.locals) {&#xD;		module.hot.accept("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./target-pane.css", function() {&#xD;			var newContent = require("!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??postcss!./target-pane.css");&#xD;			if(typeof newContent === &apos;string&apos;) newContent = [[module.id, newContent, &apos;&apos;]];&#xD;			update(newContent);&#xD;		});&#xD;	}&#xD;	// When the module is disposed, remove the &lt;style&gt; tags&#xD;	module.hot.dispose(function() { update(); });&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 542 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(process) {var loadImage = __webpack_require__(352)&#xD;var noop = function () {}&#xD;&#xD;module.exports = svgToImage&#xD;function svgToImage (svg, opt, cb) {&#xD;  if (typeof opt === &apos;function&apos;) {&#xD;    cb = opt&#xD;    opt = {}&#xD;  }&#xD;  cb = cb || noop&#xD;  opt = opt || {}&#xD;&#xD;  if (typeof window === &apos;undefined&apos;) {&#xD;    return bail(&apos;window global is undefined; not in a browser&apos;)&#xD;  }&#xD;&#xD;  var DOMURL = getURL()&#xD;  if (!DOMURL ||&#xD;    typeof DOMURL.createObjectURL !== &apos;function&apos; ||&#xD;    typeof DOMURL.revokeObjectURL !== &apos;function&apos;) {&#xD;    return bail(&apos;browser does not support URL.createObjectURL&apos;)&#xD;  }&#xD;&#xD;  if (typeof window.Blob === &apos;undefined&apos;) {&#xD;    return bail(&apos;browser does not support Blob constructor&apos;)&#xD;  }&#xD;&#xD;  if (!Array.isArray(svg)) {&#xD;    svg = [ svg ]&#xD;  }&#xD;&#xD;  var blob&#xD;  try {&#xD;    blob = new window.Blob(svg, {&#xD;      type: &apos;image/svg+xml;charset=utf-8&apos;&#xD;    })&#xD;  } catch (e) {&#xD;    return bail(e)&#xD;  }&#xD;&#xD;  var url = DOMURL.createObjectURL(blob)&#xD;  loadImage(url, opt, function (err, img) {&#xD;    DOMURL.revokeObjectURL(url)&#xD;    if (err) {&#xD;      // try again for Safari 8.0, using simple encodeURIComponent&#xD;      // this will fail with DOM content but at least it works with SVG&#xD;      var url2 = &apos;data:image/svg+xml,&apos; + encodeURIComponent(svg.join(&apos;&apos;))&#xD;      return loadImage(url2, opt, cb)&#xD;    }&#xD;&#xD;    cb(err, img)&#xD;  })&#xD;&#xD;  function bail (msg) {&#xD;    process.nextTick(function () {&#xD;      cb(new Error(msg))&#xD;    })&#xD;  }&#xD;}&#xD;&#xD;function getURL () {&#xD;  return window.URL ||&#xD;  window.webkitURL ||&#xD;  window.mozURL ||&#xD;  window.msURL&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 543 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; data-name=&apos;Layer 1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 7.48 7.48&apos;%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;stroke:%23fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3Eicon--add%3C/title%3E%3Cline class=&apos;cls-1&apos; x1=&apos;3.74&apos; y1=&apos;6.48&apos; x2=&apos;3.74&apos; y2=&apos;1&apos;/%3E%3Cline class=&apos;cls-1&apos; x1=&apos;1&apos; y1=&apos;3.74&apos; x2=&apos;6.48&apos; y2=&apos;3.74&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 544 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; data-name=&apos;Layer 1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16.63 17.5&apos;%3E%3Cdefs%3E%3Cstyle%3E.cls-1,.cls-2%7Bfill:%234cbf56;stroke:%2345993d;stroke-linecap:round;stroke-linejoin:round;%7D.cls-2%7Bstroke-width:1.5px;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3Eicon--green-flag%3C/title%3E%3Cpath class=&apos;cls-1&apos; d=&apos;M.75,2A6.44,6.44,0,0,1,8.44,2h0a6.44,6.44,0,0,0,7.69,0V12.4a6.44,6.44,0,0,1-7.69,0h0a6.44,6.44,0,0,0-7.69,0&apos;/%3E%3Cline class=&apos;cls-2&apos; x1=&apos;0.75&apos; y1=&apos;16.75&apos; x2=&apos;0.75&apos; y2=&apos;0.75&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 545 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3C?xml version=&apos;1.0&apos; encoding=&apos;utf-8&apos;?%3E %3C!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E %3C!DOCTYPE svg PUBLIC &apos;-//W3C//DTD SVG 1.1//EN&apos; &apos;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&apos; %5B %3C!ENTITY ns_extend &apos;http://ns.adobe.com/Extensibility/1.0/&apos;%3E %3C!ENTITY ns_ai &apos;http://ns.adobe.com/AdobeIllustrator/10.0/&apos;%3E %3C!ENTITY ns_graphs &apos;http://ns.adobe.com/Graphs/1.0/&apos;%3E %3C!ENTITY ns_vars &apos;http://ns.adobe.com/Variables/1.0/&apos;%3E %3C!ENTITY ns_imrep &apos;http://ns.adobe.com/ImageReplacement/1.0/&apos;%3E %3C!ENTITY ns_sfw &apos;http://ns.adobe.com/SaveForWeb/1.0/&apos;%3E %3C!ENTITY ns_custom &apos;http://ns.adobe.com/GenericCustomNamespace/1.0/&apos;%3E %3C!ENTITY ns_adobe_xpath &apos;http://ns.adobe.com/XPath/1.0/&apos;%3E %5D%3E %3Csvg version=&apos;1.1&apos; id=&apos;Layer_1&apos; xmlns:x=&apos;&amp;ns_extend;&apos; xmlns:i=&apos;&amp;ns_ai;&apos; xmlns:graph=&apos;&amp;ns_graphs;&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; xmlns:xlink=&apos;http://www.w3.org/1999/xlink&apos; x=&apos;0px&apos; y=&apos;0px&apos; viewBox=&apos;0 0 66.1 24.7&apos; style=&apos;enable-background:new 0 0 66.1 24.7;&apos; xml:space=&apos;preserve&apos;%3E %3Cstyle type=&apos;text/css&apos;%3E .st0%7Bfill:%23FFFFFF;%7D .st1%7Bfill:%23F9A83A;%7D %3C/style%3E %3Cswitch%3E %3CforeignObject requiredExtensions=&apos;&amp;ns_ai;&apos; x=&apos;0&apos; y=&apos;0&apos; width=&apos;1&apos; height=&apos;1&apos;%3E %3Ci:pgfRef xlink:href=&apos;%23adobe_illustrator_pgf&apos;%3E %3C/i:pgfRef%3E %3C/foreignObject%3E %3Cg i:extraneous=&apos;self&apos;%3E %3Cg%3E %3Cg%3E %3Cpath class=&apos;st0&apos; d=&apos;M60.2,24.1c-0.8,0.1-1.3,0.1-1.5,0.2c-0.4,0.2-1.3,0.4-2.4,0.4c-1.4,0-2.7-0.5-3.8-1.3l-0.8,0 c-0.3,0-0.5,0-0.8-0.1c-1.1,0.4-2.1,0.4-2.7,0.4l-0.2,0c-1.4,0.1-2.8-0.2-4-0.8c-0.6,0.2-1.1,0.3-1.7,0.3l-3.7,0.1 c-1.7,0-3.2-0.6-4.4-1.7c-0.5,0-1-0.1-1.4-0.2c-0.6,0.7-1.4,1.3-2.4,1.8c-1.9,0.9-4,1-6,0.2c-0.2-0.1-0.5-0.2-0.7-0.3l-2.3,0.3 c0,0-0.1,0-0.1,0c-0.2,0-0.4,0-0.6,0c-0.3,0.1-0.5,0.3-0.7,0.4c-1.5,0.7-2.9,0.7-3.5,0.7l-0.2,0c-0.1,0-0.2,0-0.3,0 c-1.7,0-3.4-0.5-4.7-1.4c-0.4,0.1-0.9,0.2-1.3,0.2c-0.9,0.6-2,1-3.2,1.1c-0.1,0-0.2,0-0.4,0c-3.3,0-6-2.5-6.3-5.8v0 c0,0,0-0.1,0-0.1c0-0.5-0.1-1.6,0-2.8c0-0.6,0.1-1.5,0.1-1.7V14c0-0.8,0.2-1.6,0.5-2.4C0.5,10.8,0.6,10,0.7,9.2l0-0.3 c0.1-0.7,0.3-2.1,1-3.5C3,3,5.4,1.5,8.1,1.5C9,1,9.9,0.8,10.9,0.8c0.1,0,0.2,0,0.3,0c2,0.1,3.8,1.1,4.9,2.7 c0.9-0.8,2-1.3,3.2-1.5c2.4-0.3,4.4-0.4,6.1-0.1c0.9-0.8,2.1-1.4,3.3-1.5l2.6-0.4C31.6,0,31.9,0,32.1,0c1.5,0,3,0.6,4.2,1.6 c0.1,0,0.1,0,0.2,0l3.8-0.1c1.6,0,3-0.1,3.3-0.1c0.1,0,0.2,0,0.3,0c0.1,0,0.2,0,0.2,0c1.4,0,2.9,0.5,4,1.4 c1.1-0.8,2.4-1.2,3.8-1.2h1.3c1-0.6,2.1-1,3.3-1l3.2-0.1h0.1c3.4,0,6.2,2.8,6.3,6.2c0,1.6-0.5,3-1.5,4.2l0,2.9 c0.9,1,1.4,2.3,1.5,3.7C66.3,20.9,63.7,23.8,60.2,24.1z&apos;/%3E %3C/g%3E %3Cpath class=&apos;st1&apos; d=&apos;M60,20.5c-1.3,0.1-2.1,0.2-2.3,0.3l-0.1,0.1c-0.3,0.1-0.7,0.3-1.2,0.3c-0.6,0-1.3-0.2-1.8-0.7 c-0.2-0.2-0.4-0.4-0.5-0.6l-2.3,0c-0.4,0-0.8-0.1-1.1-0.3c-0.1,0.1-0.3,0.1-0.4,0.2c-0.8,0.4-1.5,0.4-2,0.4l-0.3,0 c-0.1,0-0.1,0-0.2,0c-1.5,0-2.7-0.5-3.5-1.4l0,0c-0.5,0.5-1.2,0.8-1.9,0.8l-3.7,0.1c-1.3,0-2.5-1-2.7-2.2c-0.5,0.3-1,0.5-1.6,0.5 c-0.6,0-1.2-0.2-1.7-0.5c-0.1-0.1-0.2-0.2-0.3-0.2c-0.3,0.2-0.7,0.2-1.1,0.2H31c-0.4,1.2-1.1,2-2.2,2.5c-0.5,0.2-1.1,0.4-1.6,0.4 c-0.5,0-1.1-0.1-1.6-0.3c-0.5-0.2-0.9-0.5-1.2-0.8c-0.2,0.1-0.4,0.1-0.6,0.2l-2.9,0.4c-0.1,0-0.3,0-0.4,0c-0.3,0-0.5,0-0.8-0.1 c-0.4,0.4-0.9,0.6-1.3,0.8c-0.8,0.4-1.5,0.4-2,0.4l-0.3,0c-0.1,0-0.1,0-0.2,0c-1.8,0-3.2-0.8-4-1.9c-0.8,0.5-1.8,0.8-2.7,0.8 c-0.2,0-0.4,0-0.6,0c0,0.1-0.1,0.1-0.1,0.2c-0.5,0.5-1.2,0.9-1.9,0.9c0,0-0.1,0-0.2,0c-1.4,0-2.6-1.1-2.7-2.6l0-0.1 c0-0.5-0.1-1.4,0-2.4c0-0.7,0.1-1.8,0.1-1.8v0c0-0.7,0.3-1.3,0.7-1.8C4.1,11.5,4,10.6,4.2,9.6l0-0.2c0.1-0.6,0.2-1.5,0.6-2.4 C5.5,5.7,6.8,5,8.3,5c0.1,0,0.2,0,0.3,0C8.7,5,8.9,5,9,5c0.5-0.4,1.1-0.7,1.8-0.7l0,0c1.5,0,2.7,1.3,2.7,2.8v0c0,0,0,0.5,0,1.1 c0.5-0.2,1.1-0.3,1.7-0.3c0.3,0,0.5,0,0.8,0.1c0.4-0.5,1-0.8,1.6-0.9c0.1-0.2,0.2-0.3,0.3-0.5c0.4-0.6,1.1-1,1.8-1.1 c0.6-0.1,1.8-0.2,3.2-0.2c1.6,0,2.9,0.2,3.9,0.7c0.3-1.1,1.1-1.9,2.3-2.1l2.6-0.4c0.1,0,0.2,0,0.4,0c0.8,0,1.5,0.3,2,0.9 c0.2,0.2,0.5,0.6,0.6,0.9l0.1,0.3c0.5-0.3,1-0.5,1.6-0.5L40.3,5c1.9,0,3.6-0.1,3.6-0.2l0,0c0.1,0,0.1,0,0.2,0 c0.7,0,1.5,0.3,2,0.8c0.4,0.4,0.7,0.9,0.8,1.5c0.1,0,0.2,0,0.2,0c0.3,0,0.5,0,0.8,0.1c0.4-0.5,1-0.8,1.6-0.9 C50,5.6,50.9,5,51.9,5h2.6c0.5-0.6,1.2-1,2.1-1L59.8,4c1.5,0,2.7,1.2,2.8,2.7c0,1.1-0.6,2.1-1.5,2.5c0,3,0,4.9,0,6.1 c0.8,0.4,1.4,1.3,1.5,2.3C62.7,19.1,61.5,20.4,60,20.5z&apos;/%3E %3Cpolygon class=&apos;st1&apos; points=&apos;32.3,8.5 31.6,12.1 33.6,11.8 &apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M8.4,12c-0.7-0.1-1.1-0.6-0.9-2l0-0.2c0.2-1.2,0.3-1.5,0.9-1.5c0.2,0,0.4,0.1,0.6,0.3 c0.2,0.2,0.6,0.5,0.8,1.1c0.2,0.4,0.2,0.7,0.3,1l0,0.4v0c0,0.2,0.2,0.4,0.5,0.5c0.3,0.1,0.6-0.2,0.7-0.5c0,0,0.2-3.8,0.2-3.9 c0-0.3-0.3-0.6-0.6-0.6c-0.3,0-0.6,0.3-0.6,0.6c0,0,0,0.5,0,1.1c-0.5-0.5-1.1-1-1.8-1C6.6,7,6.4,8.7,6.3,9.7l0,0.2 c-0.2,1.9,0.4,3.1,1.9,3.4c1.6,0.3,2.7,0.6,2.7,1.6c0,0.4-0.2,0.8-0.6,1.1c-0.4,0.4-1,0.5-1.6,0.4c-0.2,0-0.3-0.1-0.5-0.1 c-0.2-0.1-0.8-0.4-1-0.8C7.1,15.1,7,14.6,7,14.3c0-0.1,0-0.2,0-0.2c0-0.3-0.3-0.6-0.6-0.6c-0.3,0-0.6,0.3-0.6,0.6 c0,0,0,1.2-0.1,1.9c-0.1,1.2,0,2.1,0,2.2c0,0.3,0.3,0.6,0.6,0.6c0.3,0,0.6-0.3,0.6-0.6c0,0,0-0.5,0-1.1c0.4,0.3,1,0.6,1.7,0.7 c0.9,0.2,1.8-0.1,2.5-0.7c0.6-0.5,1-1.3,1-2C12.1,12.6,9.6,12.2,8.4,12&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M25.2,10.3c-0.1,0.1-0.2,0.2-0.4,0.3c-0.1,0.1-0.4,0.2-0.5,0.2L24,10.9c-0.4,0.2-1,0.3-1.6,0.4l0-2.8 c1.6,0,3,0.1,3.3,0.6c0,0,0,0.1,0,0.2C25.7,9.5,25.5,9.9,25.2,10.3 M28.7,15.7c-0.3-0.1-0.7,0.1-0.8,0.4 c-0.2,0.7-0.4,0.7-0.5,0.8c-0.1,0.1-0.3,0-0.6-0.1c0,0-0.1-0.2-0.2-0.3c-0.1-0.2-0.2-1-0.2-1.5c0-1.8-0.4-2.8-0.9-3.3 c0.3-0.2,0.6-0.5,0.6-0.5l0,0c0.7-1,0.9-1.8,0.5-2.5c-1-1.7-5.3-1.2-6.7-1c-0.3,0-0.6,0.4-0.5,0.7c0,0.3,0.4,0.6,0.7,0.5 c0.3,0,0.6-0.1,0.9-0.1l0,2.8c-0.1,0-0.2,0-0.3,0c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6c0.1,0,0.2,0,0.3,0l0,3.5 l-0.8,0.1c-0.3,0-0.6,0.4-0.5,0.7c0,0.3,0.4,0.6,0.7,0.5l2.9-0.4c0.3,0,0.6-0.4,0.5-0.7c0-0.3-0.4-0.6-0.7-0.5l-0.9,0.1l0-3.5 c0.6-0.1,1.1-0.2,1.6-0.4c0,0,0.1,0,0.2,0c0.2,0,0.4,0.1,0.5,0.3c0.2,0.3,0.4,0.9,0.5,2.4c0,0.3,0.1,1.5,0.3,2 c0.1,0.2,0.4,0.7,0.9,0.9c0.4,0.1,0.9,0.3,1.5,0c0.5-0.3,0.9-0.6,1.1-1.5C29.2,16.1,29,15.8,28.7,15.7&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M50.5,13.8c-0.3,0-0.6,0.3-0.6,0.6l0,0.2c0,0,0,0.5,0,0.6c0,0.3-0.1,0.7-0.2,0.8c-0.1,0.2-0.2,0.3-0.4,0.5 c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.3,0.1-0.7,0.1l-0.4,0c-1.6,0.1-1.8-1.2-1.8-1.5l0-1l0-1.6c0.1-1,0.3-1.7,0.7-2 c0.3-0.2,0.7-0.1,1.4,0.1c0.8,0.3,1.3,1.2,1.4,1.2c0.1,0.2,0.4,0.3,0.7,0.3c0.3-0.1,0.4-0.3,0.4-0.6V9.1c0-0.3-0.3-0.6-0.6-0.6 c-0.3,0-0.6,0.3-0.6,0.6v1.1c-0.2-0.2-0.5-0.3-0.8-0.5C48.2,9.5,47,9,46.1,9.6c-0.7,0.5-1.2,1.4-1.3,2.9l0,1.7l0,1.1 c0.1,0.9,0.8,2.7,3,2.7l0.3,0c0.4,0,0.8,0,1.2-0.2c0.3-0.1,0.6-0.3,0.9-0.6c0.2-0.2,0.3-0.4,0.5-0.7c0.2-0.4,0.3-1.1,0.4-1.3 l0-0.7l0-0.3C51.1,14,50.8,13.8,50.5,13.8&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M60.4,17.8c0-0.3-0.3-0.6-0.6-0.6c-0.2,0-0.5,0-0.8,0.1c0-1,0-3.1-0.1-9.9l0.9,0c0.3,0,0.6-0.3,0.6-0.6 c0-0.3-0.3-0.6-0.6-0.6l-3.2,0.1c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6l1,0c0,1.3,0,2.8,0,4.2l-3.6,0.6l0-3.8h1 c0.3,0,0.6-0.3,0.6-0.6c0-0.3-0.3-0.6-0.6-0.6h-3.2c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6h1l0,8.1l-1,0 c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6l3.3,0.1c0.3,0,0.6-0.3,0.6-0.6c0-0.3-0.3-0.6-0.6-0.6l-1,0l0-3.1l3.6-0.6 c0,2.3,0,3.8,0,4.6c-0.8,0.2-1.4,0.2-1.7,0.6c-0.2,0.2-0.2,0.6,0.1,0.8c0.2,0.2,0.5,0.1,0.9,0l0,0c0.3-0.2,1.5-0.3,2.9-0.4 C60.2,18.4,60.4,18.1,60.4,17.8&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M31.6,12.1l0.7-3.6l1.3,3.3L31.6,12.1z M36.9,13.1c-0.2,0.1-0.5,0.2-1.1,0.5L35,11.7l-2.3-5.5 c0-0.1-0.1-0.3-0.2-0.3c-0.1-0.1-0.3-0.2-0.5-0.2L29.4,6c-0.3,0-0.6,0.3-0.5,0.7c0,0.3,0.3,0.6,0.7,0.5c0,0,1-0.1,1.8-0.2 c-0.2,1.1-1.1,5.6-1.4,7l-1.8-0.1c-0.3,0-0.6,0.2-0.6,0.6c0,0.3,0.2,0.6,0.6,0.6l3,0.1c0.3,0,0.6-0.2,0.6-0.6 c0-0.3-0.2-0.6-0.6-0.6l0.1-0.9l2.8-0.5l0.6,1.5c-0.5,0.3-0.7,0.4-1,0.7c-0.2,0.3-0.1,0.6,0.1,0.8c0.3,0.2,0.7,0.1,0.9-0.1 c0.3-0.4,1.4-0.9,2.5-1.3c0.3-0.1,0.5-0.5,0.4-0.8C37.5,13.2,37.2,13,36.9,13.1&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M44.1,7c0,0-1.8,0.1-3.8,0.2l-3.9,0.1c-0.2,0-0.3,0.1-0.5,0.2c-0.1,0.1-0.2,0.3-0.1,0.5l0.5,3 c0,0.3,0.4,0.6,0.7,0.5c0.3,0,0.5-0.3,0.5-0.6c0,0-0.2-1.6-0.4-2.4c0.2,0,2.6,0,2.6,0l0,7.9l-1.3,0c-0.3,0-0.6,0.3-0.6,0.6 c0,0.3,0.3,0.6,0.6,0.6l3.7-0.1c0.3,0,0.6-0.3,0.6-0.6c0-0.3-0.3-0.6-0.6-0.6l-1.2,0l0-7.9c1,0,1.9-0.1,2.5-0.1 c0,0.5,0,0.9,0,1.2c0,0.6,0.1,0.8,0.1,0.9c0.2,0.3,0.5,0.4,0.8,0.2c0.2-0.1,0.3-0.4,0.3-0.6c0,0,0-1.4,0.1-2.2 c0-0.2,0-0.3-0.2-0.5C44.5,7.1,44.3,7,44.1,7&apos;/%3E %3Cpath class=&apos;st0&apos; d=&apos;M18.6,14.4c-0.3,0-0.6,0.3-0.6,0.6l0,0.3c0,0,0,0.5,0,0.6c0,0.2-0.1,0.6-0.2,0.8c-0.1,0.2-0.2,0.3-0.4,0.5 c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.3,0.1-0.7,0.1l-0.4,0c-1.6,0-1.8-1.2-1.8-1.5l0-1l0-1.6c0.1-1,0.3-1.7,0.7-2 c0.3-0.2,0.7-0.1,1.4,0.1c0.8,0.3,1.4,1.2,1.4,1.2c0.1,0.2,0.4,0.3,0.7,0.3c0.3-0.1,0.4-0.3,0.4-0.6V9.8c0-0.3-0.3-0.6-0.6-0.6 c-0.3,0-0.6,0.3-0.6,0.6v1.1c-0.2-0.2-0.5-0.4-0.8-0.5c-0.4-0.2-1.5-0.6-2.5-0.1c-0.7,0.5-1.2,1.4-1.3,2.9l0,0l0,1.7v0l0,1.1l0,0 c0.1,0.9,0.8,2.7,3.1,2.7l0.3,0c0.4,0,0.8,0,1.2-0.2c0.3-0.1,0.6-0.3,0.9-0.6c0.2-0.2,0.3-0.4,0.5-0.7c0.2-0.4,0.3-1.1,0.4-1.3 l0-0.7l0-0.3C19.2,14.7,18.9,14.4,18.6,14.4&apos;/%3E %3C/g%3E %3C/g%3E %3C/switch%3E %3Ci:pgf id=&apos;adobe_illustrator_pgf&apos;%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B u9iuuaBrVc0FnTdAtRfwjIpdMhKNCcLv2l7AKxazTCOrm9BmthdQ520IWxWJMoC3rfYCGtbUfyDj lJi4sRd09vpqL+jM69UGQBceNEV7uluCMVobDKj2BzMyf0ajNvbUbCeof6/NA/WzzipAH54ojscc AfWBrVpfXJMFb2ckHKfbNw/QLp089S+B9/deP91KtuaBh9e6NQJHNeTReVR0r3vmgb5Vq5IXq6gc XnBwTIPdqfX5AbgtApfxKrX75gGx1Toq0aie3LEOcCqzM5x97Hnedd1QuhZ7mvSdVo1GvhtKq9Tv 32jPONDPTN9PtwbdUB5apf1QhO/fncmHcrE78CrU1NMJSNSoVCZPhXPuWyXV+UbwX0kCuXxxn6aG OskEqAIzg8RbpdRExaLcgTfIfYvq+iSBG5GguFRx9v1Q4DJs4emf0Q+kqW9ep16RmzaTWvki1WOT XkrbUYBXnkhLGNwgmtHubdoW1fNqMyl9N928dkN5aH0+xeAHyysjkqGACJkl6DCpcjDS3dIXO5MN R4rFVGGC0unFpQKiHx2uAnB26gaFZzBuIYpnGvOG0DMNF7pydQRMI1dHv3ER4Xi5TFSIV49EPsnR ddU7UGvaQujThVuJ2wZEyAhXIKKoV8RT2XiZpzmKCKMRSpgxhxYE/U6yVpbOxNh3IRRXeKqXrbiB B7y3FzFIbwT8NfJBEhlljURGiXsKNd0cLKHgksmiBJLd6WknovBF+4EnwcQXU0VRYPwdxsP4O6/W DOZdoZIai+Mp/tNK52jpMPStTPIk3jN8EgEIxStf/Y6o0wi62xzB8bDbaPwq3kyU0g1bgRenOxYk OTE9RYsrORdv3GzEz9bSf5QSUKYZLOLsqr9uKo4jI+F4kugCsHtpusi+hvONYEcszR2YDzrrMZhE rGmRyD5U1o+iXBERgCplfhucjhGtHj3TqHMwdYYM+SGcP09dPEXSaHQeaXyLSTnjTKdwyGbYrVFc w7ixxQE8UZnsKJ4kORlGDM5pVONOSLgJbDUBYTijmrUMNfcB3BW9xyAsM/iA/rURnBK+xO2TxDUC h5eGjWBE4RFBKWgQIcwUFq3YLsTtzqEVxCSvESgigDD7mcQHOfrjcE9iFp2EBHs1JjCEB7fw4eGT 2GjlLY1kFA0ZZEwtPnqExDeyx8Rz8Gq/VTHV0RLlrBMLBUSyyLONM6dRQ5DfKJNjsFSn08xB2QCC rBcXyLaFnlxXwipxxlLaaUXhheSBwouxLu6NpWvRvJM+qWtFZ0ojirpppE2qH4tVUQK7lUC1e+/U tKjUqJmbrp9ufruxPLROn5x6BQdMY4n4URQ2POl2BsOPR5at1baaxoJl5I0K9I5KFJsZiEpeTre4 YKpa3EQ4/DkcR1tcMUkEstA7jGfKEgJsjVdgKVGuEHVtEr67XD6KyZ/UUhAZPYxdlIThNKpn4N08 VryOMR81AxJBxKNyehLwQUv3ZNWgKAP3OHBilKWiVpWZVqOYSD8lNs4U83LToAZZKW0CjR25+7pu 0qS8QiCMloTCTUVrOhGVVsMDNMgKO2WMOy1UdVJVOSMDcuNOP97rlDPtlXwAQqSUieZ1mn27FqDM RaFNp4U0M0jbVsmpsidQnjJqyRc5AjeJkRM1MfeGFYopmqRAW2/Sy0y/qkCtxbOxhCMGkl8etVyU dWjqhCeLddIY0SZeB1MZKDaMKMjzWFbHc6+EvkW9JTW+0Y6Qjndaqe8KQ0lwjVJpTtcVkDP6Y2S6 W7ALHYrFGaP2bipa70A3hupKimtdQ/KI2heDaBdV/QWJS+Z+KlsbfIARP3UGx4jiCqKzxpVKHAI9 l4ks6ORiLS0yrdULRRwhs5AiBgmuo6s1sRIJfixoS2VqsFSWR447WV+a975VSoaX85N4flj1U1Ef H3B4eNT8pHIRJzq2ix9riKo5lVX2jKc0Gsel6wd5gPodjkmHkI04tpKYFvsKQQjKVUrfAAZkEWOA bukSFOHoUu5cpjeBKcYK76nM8MpO0TZHdmoUzwZT3xVrRm7VlTkjdqMr2jeyAoJ+4FKWKFYxZYiP Rkwy3o4KWiFXFBXBejJ890E62VzZJEsSUo/dYHSGxQ+ChI379dVuI7DJGTMo0ANGERjAYmWGPmbe MNz2tAtw29O1SzhX2Z7g16wp4cSbFkpwsfmIYeyDQLvv9ZMYnMBofnKAe0NpGzQvpM9pG4UjsTPp vERN+2FnILSGB56/FJ03ey/UtNAHdRPT9dPObTeUB1Zo9kQHUVP3bQaFUEERsrLsoJqZsSWv9ltN xZmHIUNOA5HVPxwckuOhiJKqkNTXM7GuuFAlnDC0QMeub6BxYYYxrPQeMurS0XeDS0kAN+k0TAte P5SuRfNK9UlNq6RaMBqzg4SQtmNh9AQdgiK9dJzpX6ltoA9qZ6bvppvdbigPrdK8ntjaIIX0hIPw UOxoY6IGSgyqBfOha0UBK4kxDYw+NVm8gshkUAwIajXMlMwJIW7ozpWyBJ51FfUSBBmXIG5LN7Gd r3um5aMbF1mDvRF0Ldo30Sd1rSjikyt1TO3nD/1YGAlHebu+Qflb79TmtWvbflrbxzw48XWJ6OCU aSogRzsKj8SAEjpWUAq1hSvtW3kq1ERg816kdpxxT+F1omic5aYSjR+IS8wEbBzpCO5E9Kbs0rfQ 652GVPp1iY1sp5VEmjNEzjNzQN2x67HstGjeSZ/UtbKqSwnMaEcJqB8LHS9dcbwUX7junZoWz8rs NXPT9dPNbzOWh9dpXlHHGBi6ZYEVsBrILMgx4HwSBBJd0LYR/Tio60lg1+naSdZGOWSryo5ElQF5 HgbKMZmDl7wWqW/xrEjIEuqFFlG4vb4fBtdRW4s9G0e/M4SuRfsmVZpsWhVzaBKfwkM/FLBMKZmd NykV6qJZ3r827ma1ecpDs/7pmdk6ACZyr+KQjguMCWP3EbDIplMhQ05fMkJ1UFhkr6lhwalFx9TC tJhYNGRSzYAZCnTyLcekQceiclOcPinxGbMDk0UQq0AnDtxPRKTo8bIg5jBolY60uJxMnHenOMNS bJvCDJzFRRfjDThRmhY6AC1+cebAWgAtsb16OqnRtBp7IC0Rxp3qwIw4dLeIWuSU3HQBUYvzjL85 z/Sldz20Fh0kZLwBWycUb9v7l7jlpbfAUfxb9PFUyzAiYQ91i7pj7l38PU6Oq9LiVYkkFeWMqtNV B3fVtXhWt94KLGunmwZma2cobYv2jarWummVdYO0I8C4JTQE4zZUf/Yv0raoWpjthPT9tBNfB/DA guzb0X5oSC/xMrdiBiB6S97F9qKzDsMuOxwsHnNLp2ocpiyR5y2MVtdCLaQNCtdOPw2A1zKErqJ5 AX1A1woyVuSlDBkrV5PrdghJHcdo+/eik+pepWlRjb3NlHT9tJPZDeWBJZn5BbprMSJAbhnq50C3 mIp64kVtvC16ybYVxP8wiiM1GE1qR8BiFswnMtV0OKHKTwIVRnpduJxpfe5bKDXFPevplzwy5dlO N25UDBRvmIDI7wyga9G+SL3Yt63oqZHdKJ4aIaiP2GYoJAKeLqyS3TDvvFHbQlUhOh/dt7uZ7Abw 4Ip8ikbPDrKJ5DqoRxnBqcwG+02UD7imRPkgF1ODAUfSGwiixNRmRjjgBgyOqmdBOvNJQtlmdcUG FU5c+vXGG61g/7fwcBStmV6D3Hi2gm3Q4MR1LVSUVsC4/ustBhy1eaq0i7RbuZ0Wk6mazkRn4aKH bloJg2SFQWIr04PKibJGdKHiSLSDLkd+SDWdZvRTNXG2MHMM6pLxuMyUKFMPIsc9KjocWg/GMe20 iLRFRkZfzFbbvhEkZmKxTSByyYceZI4x3hKkRvwYAQZoQea6FiqJb0Hm+m5adDiQRo3+cyO2qzM7 LaoZk4oS66qGvWtljhJS24LLWXGGpsaLbuPUkLfgcozWjjJjkf5B1fzcgMvROVV8L+h6JpiALbgc nUoZrIS1wemQ7dWAy1HHKrvAhSV9Q4Mtx9AxCbt0dG+UALMGW040tVhd0dSG4HuUOY5VVLfMbUjM 5vmIrlHmGCBIr4QOXI6bVbkrw7Q8pkeZIwtsGIpH3bGrsJ8t3BxNZBK01cLNkUWXd/T8M+Qed64j Yo07Wot3xnOBX7iGeMMx7iPQcYVAnThzYMG471voNVmhKXXAbfXzemw3sG/LlxrAuJ3ndS2acesD ulbFCEDDfaKeshsCEQfEABCZCnLnBdoG+qD29ftuuinshvLQUsxqyRbUjHAMntZksIkVW7iDe2sb dYhxJJriruswci92za5FUORNR3DIYjHYaUUXBRxEHnAC9+wMhdo8yxbOmeB7mLauhT6pgXvb6adB jNsZS9di9526Vt3cdGNpp/eBRZpXswVP4ylP8nCCCcVpH4FOrBT0QQq44UR118K2mczrdhJDR+Ct 3YK+tQ0qV7CBjOt6acHm+oH0LZoXejbsgNaJzpemYgZXmjH16HViiuIiBE/P6L0X2jbQC66blraX bmbbgTy4Qg8qx354nLtdqIgKeNdBRHTIdx1ERAeBt4sR0WHhdRgRHShehxHR+cPvgkR0MHkdSESH l9eBRHTAebsgER2CXgcS0UHpdSARFVNvFxuiA9frwCE6mL0WHKJz398Fh+hQ9DpwiA6ArwOH6PvY A4fooga6me3Q+TqUiBmmbwccosXr67AhOuC+FiSiQ/Bbg0R0CH4dSERF8uuwIWZIvz1IiBnbr0WC qCB/HQBEhfvbBYCouH8d8EMFAOzwHioU4C7MQ8UE7NAdKjhgB+pQUAJ3oRw6uMAWyqHCBnYIDh1+ 4BrCocMP7CAcOiDBPqKqhRTcxXCo2IIdekMHMtihN7Rog7vgDS3sYIfd0OIPdhgODxP9Nhilgdbb xXDYadUAJ3Sgfh34QgsJuIvh0AEK9t20WIT9UPoWO4AHO60a4IRuLB34QvtKuxAO3czsdNPNbjuU B1dpzUpu8P12MRx2WjWYChVQsIIwdOiDa+iGDrNw+VaDcrjznK7FDgzCTqstmkI/goLD0I97hd4w v+TcuJuW9jEPze6eMaOPgaCTRYRIQuHBpuKg0Lei3Y88BbZYoPrFTkeKoCA5IwUtebmJ+sQQHeEN RBlADQuVAaB7U99CzXKV1aPmZLJ7/eCuBi0Vw11wZm8sXYvmnWYD4LYVSLXwbeD5p6y2+GYsRRgD swSKlffeqWmhT+rmpu2nn992LA+u00w7v3fzVJPwVxT8zksQuBfnCkNTLuMIaNi2xeLRtzJE1rWy XdV4TI9O2eajk23OfBqitRK5C8KPiTb1Lar5WLhg2pbHMe/1YzS+GHdUnk/3egBdffMaz4qnR9PK aWIJLxYOe9gZCZhWWlY8RSK6ZPZv1LTQJ9UJ6b7ezWQ3hIdWZNk8379hg+EJo6BYBNoM1NU6CZSB GelT8Gq/FV0RqLjFQY6S0Y6wgV5iZbM4ZGYckEwHaGY1V4gIRR7Bi0kEZ9tCdeijZg== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B PQFiG6EGVEJsiC2z7i53dcI9bdyIA4CxjZFpgUvkb52LwAilFTMUCHKyn668gqwy+RUamveM9xU6 YoZb7roJCTNykjo1scrEVbPKaMJeiDdEkklS/MNOjPYcHiO8innbJ5SwQ9j6zAHVTAuqeergUoB9 7LPoDjPnzoPpVFV+Nv1mnVhDmEnmKAEdYL4bIptrFeDX5gr3Ah+UJXMwGxN8kX6sNZvtZQ7oyyDM 41MOPjEx/n0C6dz5M0tTszNQGYNFsSDKKxCuzAbodrrqpDi7kFrsXZqbA29UnO1Yzx7HsyGlPxJA eSlk8jNwxhlwXpk2yR34QKgSwaZH62BzZUDgm4gnLj0jwOhXrLpiBQCYwVuDTh9AvRF1hTL4zHU3 BBiHWSS9OhPSImRJYYW93ligVDYdGXgcgodNhZZ7D5MdtSXoUy1cLUixoKk/gEYBxtdkZQW4rUSl acZIGQywkng3zqlEfhS2cJrzxDmW9Bh7Piar2XDiKRWGwpcNqnVol7VcW86Ni8XFhjlpvvxI8AEP MMLkOMhxjgN7O6l0HPE1vpKcTYuOHkmUjUa8LiGMbZDFxt/K/D3eBsKEMMM+FFRw0wOucMT3COPg joLA8VmCvGsC/CrrLbMM7OL4qUj0YKQXsbnTc6a0ijrMnKIKqc+zBnbXa6slNrWkc3gz3DYo01JC 0Ww2XEfsG4L0RAOVEBoQKWMP0HZ4VwWh0liBI9EoUDs+xe2GS9jca4gy8AJYMAqCrEi+1sisx+la LHAFn5+0/K0ZDBAlsw2VxBNTQMCOPhvm1tWiSJzus7GsXHZd8j7zIg6NTlJIJGVlKA6u7kSn8G6I l3RtAwtakLiQ7U+VlcCqZuEd9x3+8ncDqqU7G/nZeLZAaWRxJFzEBaN24auZQj5fUvAtV93gTiQg eJEaZXm9pc18QpF00i5VaOkvNq3qxZGjmUuv+DjQ4Cb79roCLK6ISIRTdf2K1F4PNBw+DZARKaPM BstzYtTE9KFH6Xi8JZOcMU7IezZ6tuYnWGg46nNh9OSYX+TLchwgBUPuXqGYhS9VFeueuSyBzw3R YCOsAY0YzTqn1zMA0mtel/AuCHhjc5lkDobpHOIkv+aHSfM3XqYsoDRbT0cFFCqd2OQUeMzAI7vt qgE53s+CpbuKB6RGIB5ZsTnW+kAkumHlsCkAFcCECDaqEJ6s3eBRNnhi/0jzCzpWZMKGS0JqE38C htmAQY0wO9Z7UmIUDBG3klTBygGgKGyPa0TdUuxmfDqjYl8RtSKZ5qo2CI30DVEzh19jWBJsdcPf ja2rrKQCfzkonbHhnnfnCDXMeb1BOotQFdx4IXDslKRj/boWvyVDG5PSERMyFDiZnGAzFSRA9Aly ZOnjlOupyKn43jN2WLmn+/3V9w9tmhEQ4PmWE6dDX+h+9rxCJ/cQkDDDPdKyNpDqgJ1XNg6Y3a84 4MUa96vhZMDoDAYsCSUhuqkVK3VnZG4hjoW9wbHuelYPzh5W34qQ2oD55hfrMgoOoEJ7sJCitkW6 q8bGJiMzwUjBMgt0gMnNOa6O3COc3vSEjzawvKeYZBjNbFtgZrDAz3/XtbDNc7z6qwVe+HCp80Pd S6CV5//ul4BCuyjMBI9m9eJyy4aGJpjTxYbYxrBxTZFriFSZ2OQQyZEIS1HpXi3KLqvOHU7Vw7Qu X0EnySBZXpROZo/eztXD4TLjRxSQpU+y8iomWwNF3AVEJ4beLiqOhfrIYBICoIvkAWjkE2tHCsYu NXPOaebiMToZ/qbuQivPyL17wd8oxC/mXZDMVpdwkbgANVBrpEvgxyLXqGmTqSC4iiYEgeZcily4 pIXONPutKwlVXw13cc/qNGFZH69PHXlXCqlYDZVYlKvuM0gF3/Pdg+zRBWd2hlF5A+e/e1EwB0HP 5mPVJCv8EYp8jqW8JooUVJq/nIz5ayaA1H1JwvTJ4nd9oZh+wgAwherd3D6dul8T8rSQGhG7PrcF /qrYAIZ+lDjlOU+XUMUI/ykzmyEzh47L3PAqGh5KTigGhAbJGeIU0DOCGd6XLv55YEbzK8KgbYwM UIHt/AnP8FeIR4ZJqggqCh3LM5WcIVrkc0CGHH+5T4G2BW2k2h7nGMsBFRV0QLDri6OBMs7AEZzT lXtL6xX14JmLg8zbBTYFsw0+MRlBCL0C5NSJVMuDxTArb8G23tuFPIna/x1RHfE/dVGoNQaS2H0u M0LENyVFgOxKr1y+IobO9EYSv8zTLrfWQ+FCBEip+DHVj7zMFkaYLfAIi8oeW9KoLWRZOtQE1FNR f4IZJaKDoylNWDZQFKcsdmtuci0FqFixsEofqVSd889p6vWLzuWK59Bkgo/CkmchKtSbD5NmqfNs nFRIC7/YMtdXSe1LtxBpqyIgfT4yhngKm9s4GxxM3reM5OyMOJZmDpwASCjzA3M3UUEDRg2ttihh digIxLYWKfbZ6nJMm6u+pWmVKMIgGNVYCvxzHwo46AoMX00BrAClPPcdv0KwfwO660L2d5aFiq1G OwLih86K/gBINODtCdFkyfaEiGXN6pIzedxS1bZmjYozIjsgOq3YcRkqpswAgOfGDTespGWwKHTx IsKaWr2VB6kFFjUAyQBfv/7uADXZcmA/5nqHgtH9kiAVmZv1zKFKmsmU23NhTSoYm4Z42Fx2+1jl RLVqz+6k0pcAYChggy9FRpsiK/W7rax4LhwBDCAywLvKh9gizg1tlBBUdWMZMsP+VOB8WdfgqHXv 041T3C6BLiIzL2xuoBzIpfFI+yrEW5jTSUEaW1qe0HfZT3rBnPO1OBlrZtUbIIU3AGqLqLXo6dFW PDeEyUdhtjoR5LzcfMm7We2br0AJIdAzkBNHzJRAW3nRcn5UIE+IutzEWvQNolEAM8B1NlINp+Re 4lPXalAmGarq6QW8dG+AbYvfnxtNJvlMvpNXgAYsQWgY0pJ/ixiC0+l6ME835KgCzNhIAmpzlmCD Kn1tCdPtpXwOd+FGyle4BGsQcrD/DjHUsmdUJDkVxceClYw3NzeF7GYQJ+YIq0Ijw6gSzHHT8Pkw 417yK0crHlrzg7kKzr2/jaqciaIuSjgz4OZxMY0BFe8LKj4nwJIjf38XXU82FJTdqggnRSa/BKHL rrKPpeQPktw1qkT5KgZYWiX4a4ZOc7iWvhzgPkVuS6TLQoFz1FDgJGZeeA5vXL2C9Tjvypxmmggr yQwUvcEHItyaRGCUpTzrSo/2t4isM5KC+9IUuaOczTajbIVrYAKCuOeqQFRWVirPT+hwcWHcmBSN 5cfcp2MMcDqSRYX08bGMQSSmz/3dmf1UETSPLi7wmivE/W/MBNFlR1Lv8izk3sOGXJN0dK/KQhQq H32eSleXwKtIrIpRlgNoa7Q/v9cZGWAAPIys90132LUlqw0blDcQiAfRORPheewZu0f6j3eghK9t qE/VvgxsZxTaPJ41x60LJtXL3OYX9RAlyeyzvdkW0RiCXksPfDbM9aRRn3Srw3FS+539G6j4Ebn9 OBtlA1CQ81ehNtNk6YdaqYXAuUjqm13zAsDXJabfIUgRL5xBmY9RxvzlxZHpLEqAjtCOi/Cp4oVz RR2d8KnUmCy7wKEeF7exIkCYtG3GgT175WZtaTDHPhsu6Ag0uKzQwLJNAJyOaMh7mJUVt89G8il+ l8q8yAZr/ttjaaZhX52Y4I4d+2E92HXtH1dwZ3Jy/jA2uIBqlhhSXm/UdWhcwWZ6ER1dnAbMgapW oOL4no1tmHqB82cxcmgs8mtDp0Xfp+tcf6P4kQqKHb/KqiPtszQ2ezT2kCNUCtEGaouzYU4Cnn4J mgLwZuuW4MBkG14XNUI6HaMLkP6FYmsOFSPrjPMnKrSrY7fao2AvCdVPXp3xSx3fY6127NOLULKm iW8+VpxK9Mz0W7bCaw+VhUGR6Awu0C56uB8DRCG6uokjVX6amKKJlg9AGn/z2g+U6YXiXf2+T1KU 1N9Cg0AFRuMRTu7qMWr8Jb1odmMbG8c3YQXcJzQgJKxqnAOBB/dC4TFNrXO4SCDAoZKTgnIo9iCp vWFwe2vlfe7Qu4BxnCumSYKNuAgrRSVwm7K+DwummOmIT32FOrAkzhwpIxEUG6pFA5ET1HEmR2UW 89LGAe5KQztDYvHW9VQ4h2B9NpZoLNKQyDvxvo+IPAXJnkt3Rg7QwFs8LsDCwb5zsd2Zaws8nbmZ AsMUuyxD6U5BW1XzQEyp31yGgsvkDnj3yF3GLquvl76p0sOdU6pWu24W5E6ROXQeizvAFvJMzHTU rM1M7LgOYHNXHe+sXcOLhTJMJUqxA+eRFMbMeflmhZBoo+TFr3ltdagCn+rzzBEUP/XQHcwqcPVv p1X+Vlh43khJ8WdMafssVZhsCHr4dxW20Q+Vl881wn4vF/BXTTiwKjOPNoh6WKjWqKKH7eJ8ZXwr 5hw791HUPeLSPv3kRguFZGX2ZSNf1K2t06ovGqHBEbuuJn2+WU1UUJgipXRKhllTsDq0GPuSySS9 eCEA3B7K4cg1G+njjQjos93q/CViLebUy2tou8GA/KKQ7dmkpe6LW15h1T0iuF3VADFJkLOK0nvW mta6lfBEjazmAsBkhJrI5lYIdEQblT0P0ehGJwBHzO4ohqgcivBNWT/Kx+X1d2D1jmWNQkI9jGOi 8zXiAdS5ZjJPjZBEBdxn/hy8GkABJGLasZWtrtjga4M3L/RMK3bhU+rvXE00DJVBMCuodCjixi7h 8ni5I2QUPcyjoql5RKOgHQCGLDQBrq33p2wQMYfg/KXJct4geHB2pldY8kgIjb7UX68cmXrEQLN6 O6Yw9Jl3tzmDeOR+xtNPZJxrBzHfU4jv96c4rfRutzdVnyATo58NZ32e7qMRULz7xDNiV6D1WXOz FunOVmbIhM/Xaoi92BnQB/jS4BnvT11H1OahgyEPhziTashfDceL3vXVeG7XeerE8uERezksV8ZO 6Nx2DERIPJn8wKqeJeZrpK6J807NCU4/BQwXE2s9HD3dXGtx0LNw97Z9Lctkp3SYmJbT8/qUVBw0 XnL1u0M1mosanq6F2WZ+ARD4KSrAN+SLc3yKB6AGGxzr+cXqd4AxV4Af/qQGdDOuAox0LqiObyU+ SN0yX6QarvLbNgU1N6VkFjtzFe4dHTfrw8ZQWqB+F0PHDTgNgoYTuR2Ox6qOy6ZgfYEzlln7PRle JWoJszEf8am++J/iDJtFCo2sLF3LGPXhpUA/8zW38dO7KRZoJ1CdTBPLpo2wKkW1jHIGr3U6llKd k+WMV4ntLBAcVBQtnIwbBAvmniVp662FCBZOSkPFHlX7abCSNBswVF1e73GNaRUaaArQguGsJ4Ns wMnm9kXQBAlJGtzrVSbiOfudSz15n07QbqjU2Ua6R422Q4BFk4CTQ/sHyTZoVLoP3iAlNIatP0AO Fcblmiwm2qXgBP7XDR7n6CJOhV3R4pm7lqHGkaN0oTLOfMLXdraTcoNHXIN+0CKRrQ== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B vvm8EoMIZ1/2rpDkfak6YqM5bZ9XsFSxns94JK25YLur0qjWHR5y2Pps69ekeSVBaT6OoHmEyLXe dNyteRx/t6f1azQSrMxGcoLb+tWvKSocYHJw3tavNGR4WWDrAS48rV/ZoAXKbE56IGS29WsoCORQ EGBjuKxf2XloBo2ZRsybt/NryFyw3Zkv/VFu49f55StELzPCOs/bARZiqQw7WAuU254WsLJOlT7I qGmM2wKWBieJ2ZDVCwsLWI+rIpJZ0sabF6yNAu54cXq5vWCD3Cq/dr5YI6bSNy9YrxIo++xxlhLl 1C8z2GC1/mACy161GNbPCXIEpl0T2C+C6tME1n2xTCgmFTGnHyawPDpZH5TLNzvszQQW1vaRIgz4 8n6lMVX18A/lj75MYOkhI50hfeRvM1g7oHlKh9Svn81g7SWRjmi49y8zWK/E+SQdgbb+NIOFnC2P a/bAh+pnM1ieQOw4Wdl45z/NYA2g3UJ0qFoBHHizg2UPBszk6QIrAj8mnPmO94hA3lxgOa/snI6U 0hGP4s0FlscpORI2xzh/NoGFTq3JCmJ6gST/MIHlXXY2+/R+TVapGPsYy2zL1g/rV2U5hKwe8D7b t/UrPRbqd7TAMX1Yv5oPUrzrQD2jvVm/prYE1zsmO/UH69fo8W34+hfTTHc+igiBCZ7whfz20/E1 5H/zbfRKxCBdlnV2HG07vca7xEgGDE8G7WH5aiM70aH6Wb4tX/nqoKsWVOhe3q80BMG1YtB7vnm/ Crs7x2356t8REgLgOG/v12gQH4ekaH7zfuWiwI9ty1entrnCbqdX4qQZRz6dXoWkIGoB3o55bFu+ igxKL89WVrczivu3wSvLJvm6fQyXgnHkbefaWZEo5T18XDlGRnHZt/KnhlHh2grZ8WW7uvqXI+xe LTJ1y7hpd+FPUApPQ9ZOvvaqtw8rpiVHu61UR4+a+sN1VffRq+5DkHnAKGyT1f33w1z1PrRMVU8j 0vO2R8XWk4Ts00J1tCiY3n3YW4yXc+r++2GYeh9aPqnz2gHnbHvUE729cDLdqJfwnB23GerJOpPO 2wP1POJ+Ps1P+YzZ5OV5ei4g67Y6PVX5yW8Op/PHCAbbxqbCQqI6o7EpIq7oTTz9TLWMpNCzEvdh IXnd9qXUXnt9My3l0HWl27SUv4EBba/SEbagT4fScSwQzjImpR5LBmz7kVqfzf3Nh7QbyKbbh5TX 8FRMMrZDI0cZ/mk/GsYe5+062snWtHSbjfYc8LmHx6iHSr6tRfmIdpfLURQvAsE/L0dRPE3KuH1E wfGk8G7OiiUjBfdmGyr1o/TbLRRMkrjWZRJqgZuH+fAGBeKJD/K2BO2RLNlGoF2jk/zm/+mF1Nv1 s5uDvL0+uxWfd49PlVkYicvbUxkXUELL0vM+xcvIsy9oy/bvHAsvcNwvcbh1Iv4L2AeTTuakpLBT iIxAkWXD/bTkBE+uHt/uc0WKZBtw6g4CuOPhu6nyL9IMgaLgz1B8C5fNc0H9ni6bZw2s0zbXhJ0L ymJ7amI9iqbHw0nzsqpZbgNN0lZAGbZv5v77YZd5H1oumYiEA6DY5pgkjRRSenhiXiqOX7cVJskR bexGLRYgtxWmAqgCMMvKxjysMGmMzTEJ6nJtK0whk1Q45vGjq0W1lQl6BCYPB0yNDUbAt4Ncvhww xXVnRVNnnD3ybYXpJ4J/eESa8WGFyRJ4ieVEUDJUnXTqYGfy8r88S4yYp+0lSQnEV7bbpVfr5nu+ 3nMxv90uDXdUYlDAtLzZXhrpeMfYsKfb9TKCHIWj5htypNv1koZQRkmYgJ5vrpcrwMkR4ORyu17S oNHEgMkSXpnBREolJOkGaVCkiR++l8a6VISIdVkOtu+loqlsvgZZfaaCZYD5u5HUH/7m/3MOmJaB 0LCnDIQl8cMA0zZrf6BoW7kNMKMyVKJUBGphO15ayalWmeYuBfjWwwrTPHIJv6Se41OqMKgXyzUw /niDlxXmpfTluwMm9zYUVLAp7/l2wPzK7GwHTMooCScIh18rbw6YFpMI7PsJIu+6rTBt8LfjHnVc txWmDdbt5n1atuuvWlXI524HzKjgUGMD8B4xiCgPdXrQA4LTrxH6wwLTCoCv49zbkU/eFpgmLA9V eY/EOrW9ME3LRuQ79zPATB6mmF+h+nLF9I0MbVII/uV2xYy9C8lj9i55vLli/tRogT8t1aWRgoyw XTGVZ0WJfTbgffY0xZT9iRoy/h5Hvj0xk96obi87Ome3J+bSws2hhRsWm7cnphQNNVX1amq3KWaY m8hXIHt23aaYDDzzBIRShFFPU0wI8pB1thcmahdXui0wIRxRBHlaXwKf7qoOxy6JvQSa0dvx0jy9 ElRYigai43a8NKfbF+8jvDxDyjTYSrkEW0nb5JiAbXDN4EI1AHtoH9hYzTgn0SHL8dLvae6GUtXq 5djiRNm19Wl0adWmiYqHoppuo0szNXKNdV8Z2+jStL6WWi9/S5LTQAW2rSVOChAQtpulnPBc30ws EaGgiLC9KwfIj9Fvy8qh9kh7c6rkWAlPag0qlQAJnUQtFUaPrdzTlxII/pWv7Uc5ws9u21AOq2j5 zX1yYNl2ltt0cozQvVpWk2SAyQQ9HSYHdTICneUw2dkUhM2qzpJ9FTiehpJo4FOb2j6SPcom2z1S 7Xykah+mkRwjQllekZzhWj6NZ0C/RfU+rSEFs4K5WVJYg6JDGbcRJFfOsvA0goS/DC5++z8qTZfz bfuIVwIT8NPukS1OjmsSF1SRU4ufobljVRynv5k6kmsYIa/jhqKuiHtbOPK3BJeHcyPgWRlwy7AR IDfJ1O3TiPUfIN2nPSMyQm6xlitja9FnmzEC4oWF+PRg5Bhbt+3BCPiX1Wi7JgIO1nft4b3YatCJ tuViq0FAenwGSaw3g0UU76iTb4PFvenaBotQs+EnPn0VEUDle7adIuyJEuAlVzAo7EiMPV0UOcar s80Tm4vpeXsmch0lGEg3LA2+IFPCskoEOzVeRAYkGEsdb76I/NJrcVThM7GZZcBuF0T0lJDwepof Xms3u80P1edo9TY9hEXFRvzpdQg3Bpz9tjiUcX5dt7MhjLAcThS7MBTEsdvI8BoBzN7+hfy9v2Xb FlodVe2vKn6yXQt3+XKbFcKSxzDh6VGIzIoph2VNqK3DqLcj4TVi/DyNCCnXqp0xf2chqOq7fLZk 24C88vA2XSe07iWWzTWypzcnQhut7SZw/eftRJh0Ocs25BSA9xV011DfpOhHz6cTIY2XmmiHepq3 EyHRzBEjRwdC/0ZBXrerOP0tD/H1DcuBkAZloUdK2GHcDoSyQamykPSmyPR0ICQkDP4cK3TA+dzX CNCqaJnMqJNr2A6EC552BjwtBCxfNrqEw1UlGCLtfjsQClGyrDSfKU7d24Hw94LrnXL96xkQXqIb rm+p+3+JxiZh9NNukPLO5tQ+XQaJW9IqF3yZC17aYUTR4s1TkAbSZl9WgpzOLe1PDoIqyMTe7M03 8LoWVfbT5i9ywr/jEhgMVK+4nfETPj+eUjg0zV94Cmv7dAn8RhA8XALd9AHItKhZ4nLeXALd4QOs mxMmmhS/Pl0CTYMvrZMv7z5T4fGSzx3EsTwAV3ZbfTRS4XlBOt7MAd0aFWO1o5qq+b0v6DXooG+e gMFiN/6c+7NSf315AtoDlTJgZ2kZF36aAnpeJ52s9P7tCuijcYeQG9zt7Qr4dfzpCmgZCWgg9ldp 1dGD/dnCOnkgVJfO2xVQvAYyY2j1vXsCWkDE0BYnSsjd2xOQhpwZfJU4rd/mgG6ssrANlFXevAGN gPPLEpCyp2IFywnQdociGNPwDrydAL18n+ZcPw68sJYToCRv/C9wFcyRJFYuWH7qqWZBPfWUe1gB 2ujsO+cjErfbCtAGhxNYstxvK0AXr6DVIvFc36wAjfrjZ1fExm8rQBpUhZoNWTPcZQVIA8polxPd db1ZAZoU8k7gkXWMbQUoLNZEDbyKejsBOtufMvaxKbrenADNFfms4Ou02xGQCQQ26zYCDLhPCbjP Vd58ANUSTS2gZy8XwIDeUToEetfO2wWQ2uVaLwoF0DcXQPVmm7i/OeJLuV0AaSA7u83/ogIq9CNj pPDmAihEVa1jXGCWZbRlQRpEH5xKKi8TQE+mKuRJyeBpAQiKJLSjkQfP+bYA1HBFmewLQFO+LQD5 hA+iXxnRmzcLQMCs7I2385+Qk/Pl6wemXGgTQU4KAPzN3MTeQPQQ1lYKTO9PEdGGNzyV1nRb/1Gz dpzDV2DgP63/aKy6oxy8a31Z/yEmrsXUXDFyWRxdzUZq22rd851q55v1n0YUJob0A8q39R8NhwrS +GGV2/nP47oyzEHBnPx0/lOxm3lnNp4Mmm39F1Leh34X4pW39Z+n0yJlfs0M157Of0lCIggWfBnn NLCd/5A3iipxAqZdb+c//Sz8mvlm1vQ0/hNmka4Fsziv2/jPO4DUHkDzHL5tOv9hLKLK4sPwj2Nx SdrYj9vwLykoXfXCWpWAQJhz/BBKP9APe/P7o1HnCYoKQBO235+f8ia34Xjbfn9+vyhx/CjiE7ff H+AZFy+KBlRFt98fo1NXgI6LebzsUXP+bHj6/X03Lr8/LiJSotg3gYJazn1J2iJQi7lUIj/y9PsD 7aRbaUd563iZAQKAIHmwbf7uvx/ufvvYNvVLWij4TVUxuG3q9/UiPk39hCOBRetlzow136Z+ClKB b1OHbq5n29RP4IO60se6cw9TPxuveH2vGs82pkpwDlk/g4Gb423qJw4hfB1vGraTgMD6g4zsMvNT AItyPdoDbB2XmZ+98SnguLpCDzM/PQOoySMHSOV6u/qJD4EpAGc9LVDrm6ufSevzepj56b2DzUVA OGLdGzGdqKFH7rv+4OXn/OROgA1MaW9eflo9HGq6Kbm+vfw43gNhMrcyPd1mfjTEbuS4EtiTp5kf jSFQBp5zvMz8bOhKQONJN24zPxuOQLJc9Hy6+jkMArSEht657f3EQskeQDrkWtWth70ftJpMQh5M lsYiP9n7MYilFX26+qkfqOb4Beiu3K5+UjSGGG8ijfZm6ydQEuQyQEn0GretHzu7QCqhlElZ4NPW j3ex6n4Ey6iEVvqHvx999OfsGIMIwf4w+LOHw20u7dKiPp3+7BH8m6MEjeMHpz+vpirkiHrd2sA9 nf7kCflCgbKvAfJ6c/qjR1QZ5nZgrG/aAuhWMKXCzPBhIcMjX79ketW8X+pCb5Z/8lXM9B9z6hr5 afn31fZl+Wf4hQ/F/PX9XAbzb5Z/PvkTltR88mNBr768/+gVry9KnVf/tb3/aAivi/lU2soRvHn/ +VEZWSfQtvPXj95/9nL8Ivi1WAdP67/wk2DaQexWzcoP6z9ZLS69l7DZH53/JBG5GiINmyNgfXP+ A0zsojO3Grkcd7Xj5fyngGNWBBIYYhDLPp3/LH+GQwVpivHt/Kd0EDQa8Jpyz5aJnw== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B qkAv7VZAbsiuNCEX0e2+gvn7jHmbRL7EH6grq+Sy7wRXiGWOagir22BgH2AdsglQjwPiquPPGbsc bHPs7Nftp8NB1mUccAw27jbQHmS5bv2OUaw9pALYeq9j2yPPT1W0uqxlhOeihhklQOy8m3C/K9To NEH1G/dDv81jhO1b4HEQJXDBvek1X/UFZuXfmrtKwsrddj95c0NkfBBOAXgF0KxTuqLuWm7lWAIm S7FIBx2UaFaT6eRQcZYyq6AbcN5vHWjxB9r57/aRRZenRAz4hJTzPtiZxZDItHfvh7+i4x2lQuWa ifHSbuWWqPCUfZ7NE5k2h8Qyp0Drd5p7wYwo4neYMP7xgLYzV2wMPh5ETUOyGvdjHgBp/r2WvQ5Q y9JfsJK1JBVcttq8wrqX+HWK7K0AlcoC1jXsmCsIMAQsXL/5cEDXejHpPZ8P3mxMlhUZ90v/+udl HlXHVCeyZ3lQb59CnL1VuXRbbsmQYPfI5oaphelypRPSUwPWDdU70l3oedhfDiwe2IHSJRS0RmDY oUrDQBrKB0wduJnbn9iJohWaHm4MZyx1cVFpKAUlukWXFortUfmdIS2ONWxM/OmAhgNvSRTBQUvO OIClKi+fmwJJ3sx0idQ8gTOjmAYLnC/vHrERf9JcDRXl9qb25ksUM32/J6TIhOooelPEvcIH5Q55 ijtdC29hRNVXKPv70Up9d1Nh+KcmuQozvObfBir9iWrnDpFAM8DSF4iBA4/J+XpijCITRrgp5dCo rGv93LbJ2qsVXr9vMvoWBnU41KJYJq5/THpk7sU2603ZQd8cFhveZOI7qakCqNifFxO7BN/JFLGG E+s3q6maUfMEeJJ73SOdoIPFiBU7naLbANufrNTyXwH4e1rs1p4wHRjkOdZLlFXodQArKOiCaGmW eDXlQjB7eSUKi2d1VkNgzEK4drCyDs9P4M4qS1dJz2ER/4gmIE06Uq3QefguSN3oqV6EKysKnFe5 SLHqjsn2deigdVqv/V/7t55IK3Fg33ukw4HcdwvTkg3d+6wUYeFKEKaGpCaE51Wl08GFsNa28KCE IroDbdqlSVGdHmXwypYraxRXkSr6tGAFYlyPbtcj4T5ynUKxIqyw5vtfEeZ7t88ZmdQ74cr9sssU jDV4IbfweqGGzfanPZdykzkjfzqg28UbsaZlxoVUlWv9ZJazNnftoebZEHjs+GF6Gf14IKZk26x/ PAhmnKQX1R17vWs5uS03QyQOuIWNS0PIIOI40G640XGQpDr/lkIcSoxNyjfiM9UW1ctG1S6FdC5o CbYhUP4CRXlE+1mFoA3pANsE1LzRigDcJ/tw/YXkKO/UO5+CPMx4JVa8Ens6mFcYu7e0AtjPWky5 PFBD+AmTnOtlKhEHiznqUtyD4xdWepIdlBbf/rr6pcReFbLcTktLQuUrdnizyeKVycXq40DP95mj AZh+3wZzq7xccEhskNtUulSdrzWoBZnEUdpFRUlgfhQl0VIgqWOtOyy19Hhb5Q6R9qklCqG8/rv/ FZMOeaXSXGz1OeyfAuJJNso2C+Hq1QHq4QF6e8ZVAVegGCK4tJItjjyoI8vzE5UM4nbs6kYITxM8 wn5tzs36FS/XUSBq4Y8umGyVDzbbAl2HnvL1hKT6fPBTgFtop3Hy7OB4eCxPeF9pVyRGwnIBbB+E J/LmFKOh6MpGASwGtKGk5DIIXoRWCBUl1lXSmRQYPr0CHJD1lDSCu/4KYVsdMDJheUnCuLlGgIyf Yl6/pxm2LjuWNd7utkQpbO5+q5z9cUfxzZ9wtyKBiz/FQD8zTnn787/84Yd/evuzv/jrv/nVjz9+ //vffffX//Ldf/jVb3733Tc//PN//+6Hf/zur379mx///e9/+Nd//sl4z9uf/bu3v/svPz/yuN7+ /G+//9VPhmaoH37/3f/0m99+9zff//4fvv/dj9/9b9//d4/b3/78r3/341d68/9+9X//0/c+oW9/ +IfX3xTJj4PvR018z/I/94v/6Tf77//Lb37943/zH46f+7G/+f33/+9vvv+3/Vv/9C/xG5/v0LvL 2Of0m+//5d0Z/Wzvb7//xx+/27f1f/79D7/78Y91/k8//PPHvh/Um/7glf4v3//mv/63H/9/Xurf /vBv//LVR/tXv/gf/uKv23d/9btfx1/y78G/v/uPP/zub/Y79+N+7X75Szf/5ff/dZ/xuwO/+I// zJHbR/7y9//6L/8tx/mz/+N3v/vVb7//9dv6d7+43v5i/+/f/dsvJOPyr6//V17qKtfb/7r/w/+z m/7trb/9h7f/8/+63n7NX/3tL34JAvcLCoFvLDNfdHN+u5sryirMGa/mbz8078gSX+BvPwzyM81n kN+9zvF//wU71Bu5/CoLyxupGYhfs6EoMTRtgotEJJr8U8HcBoMz5nWSTh1FRHIfbFT6owQt6lcQ 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B SfmRAkUuCyed+qBrnO/AjNWKAdb9PqGRzZnVf4VJGuAsIYF2ABnWc96RjOO53J65iyuSbjTW3Klk RMaoGb+23FfKFzqVku58NONQYKd1AH5pFNvKQKJeB+0130VDYpB+G82jne82lGCeedKO3Ll4kV4U CT2PvK5lm5M4sdwIPO+BIOSC3Ca2VN6ZEo2vmPLQFdU8TzSD6bEbnyM5xItK289LT8zrLLhHu2KU XGpkOBaNZ4DnbOR3893zvFbNLRzmoC0nyr139C1/ThX3tenH8vck95RQ+SYGWK2c79HFdXCWLxmH nKTYnJ6Iv/R3A9z5Nazi7QUDnJhwRhmDxlZOhJPw0+tku44+l+CjM6OOy9muPyBEIYM337BAcYvv nynaco8cIKEo09NNDpDzJFPffQCwa54z2Gf797/46hBG0F4jk7TVS7PUCZ7cqPa83/RNIPQ4LG/I 96cw0OdKuO9XxS3au6yl5IXd2A8A65qB122wr87afgDH7V3uJEre7nvUs0LnCBz0fXoevhDWukeH BTvU6PsqY+Mv/Oae/eR4D6aI5gSfHN0qjXp0pJQ/Cij4qcZdq75Q3z3wiMPpqcCh11xC9tKdQPY6 chWWCYYHGAebq7gppSPGIRGNzIrTuE5gHrh9HvOZOXryFi5etWwOaJv7Hhmq/4+wrwCLI9naniBx 92yMZOOKDQNrcSOCzbT3AMHd3d3d3QkB4i4b3417QogAcbfVa9/9+OvUTPdwd/d+/+4zD6Toqe6u OnXO+55z6hSAfUJ9rbEYNcHOR3Uyv4Hgh8RRE1WjsYFAk41kpsIsyFRLWy21qk1M0CjmQ2AsrmoU 8s2kKve60IHGC6iv3tquL+vjazfW1xeewER0ThrLDGViBzJD0Y1opE48V6fsG/XxWMLeBX1R0eF0 BqEDYf+gVBWMEbY0mIq4Wqrirnj7g4GRuBqMhL0WhqYaZS9qBHBFalSSVL2NEmojy8xE1qQeXVMx 0d1E3H6nb4ZPKVU3wiY1Vb8QqhPG1ky9BweOkBaDQfhIAHWjkaFoSFXFIKCssljCTyx/Bc1mYpEq M0M1IIPNJZpKcvqq7TLAhAQXk5Fadxjoq1KFVI2m+sJ+FX1VwSv14ldpBAN9sXCEWqWoGoVoKQyL uIVHX+VKVzcbSNXXaqCPTL3XADWamgizoNkXAteaiYZMqnkFM2GFCRu8DPoyPDNxYwL0K9bKVBdH hH04wu5UE1WRGFWjpowiBmyqDgzEUlRgi1X3MhTTeMSie0b4fFHhDaSmYvkvI7FbMIOq9QwnbYm2 UR38w/udpMKdpOJOWANjcbgAdRgJ5bQ0QitV7+iDRkEIxW1QUpGGmahy/1SNQiDLRNMiKg2M3FXf NhHLxEhVeTab1M2GhoI6UlNsXBJNXyB8JirwjxsNRSWrmVYTUSVLhXo++GaiDBkamqnbjGRCmUW8 r0T8voHIxk2lwvelBgLXMVLVxIJGYb898HZhv4mBibgdT6raiSC8mJlIlzDOVTcaCGYN4U3VDOJE GqFgnalMGDCcTaR+MDhxQ9xMh2upqK4W9s1BXVJBYoXiE/jwXsGXhzcAq/qF4oTC7dRRf2gUEuJh FI2FXoWdAlKV8lV1AHBOmEm1txg2Ggq0wkxtAFGTqZFRXyyIvw5bHUW1hzfnb1I3a0iI1EC9rdJA jJRKhaAZNArRMTWHUfVrIGbVSDVbjA1UldxUN1M5m3GjaBeNRXNpaCCiHqlQWgoapaJ4CVU5VAce C9zIQDCBhgZ91ieOmKvezFDl9VXJjVTcxWoicnR1NUjYG2toIEaBTIQZg2bRnygUfTE0EndJS1X1 zBarducairUP9cV9sJpNu1KVttikbjZV+9I0UmOIExNF8dAXdjMbaNC+Zgu6SR/uj4CJ6lrYVSs8 mFRd78pQE82TqtabqgNN4V6pKi6hvtZUIMRqjwI0moguCZzYIHQgg4OWjUTatli1CV4TW1ZxCNyo DsqC1AjfNxN3ZkqF4pKqZgNjAQmooyTQKNU3EOXeQLiXEOCXqspTCP2aaqbXSFAKRvp9QgFCUSao siDVKEx1aS7DPlUdcWoL7hcKPYhOQgGLQFEIqaZRKBShKWFqIoQocLOobnGuoOq5jFRZ26q3MFLX DIHt28LcqoovGYFTxVQUOmHpoSuF5Bxpn/3ncHKdSMUMpOoKC8Z9Sy2rtz8bAQIXvD2iFwaacV0U tWoVy1JgNSmsdDWuNQIwbKiZMtXN4GBwIXKCU3lU/QIlEIs0GpmYCNdKBfeUsbr8F5wtI4yB4CuG Rk0lWCPh/rI+ASgDdbUrON5GjNXi/CFVB7I+eQ5GBirUAeeciLJhIlXf31Tct6rmNqoOTPsYPVwk cpO6WeNKMzVT16SARpGPCvUzBLYjZN3iqi1i+VZ9qQqgQaPIZcUaGaZiyBPYhrAUjcxEd5E60xKa NCkLhvpiKRmpGBrFNxK+bixKJq7KqKmGI5biVReWhEZ9Mf4mNRKe1VQm68u3cL9QfEcmOoxUIVdo NNYkwKh31BoDnxfjM5oqP/pitROpqvqHqhGOKFffTD3S+ABhMfomIh9j/T5EUADfxvqqPbeqXtWF OqBR1BqakTU2EFOURWeNqviQAL4N1ezB2KBvBo+ZwIygWXQxmqlZlLFmvxyMrLFQP0lfVAQYEQgd aOpSYqOuajSUidU5VXlB+Fn1NRjVVPMEmmYBdECvRgK+kKp3+sKVIkwzFGsC4WsFko/JtvppzUQ3 s3q7NlRwMhCBpr5Yzs5Q3OwrVW3HVDcai0BTrTpxCSjhSQWYCI2GQpQO7wvdpG7W2ASpiaHQgVTU koJ+Qo1C+RJAQ2bGYr8yI2MR/8qEawWlJ1WX/DLsE0PRVHMz7BMBEdS2sZGIxHBJVlWTpgwq3r+q +jp4aYS1heN6qkYhZVodaPhjB5ryGNAsExen5l4GokNJtcUMGoXTB9QFtYXvG4pQ0NRYvPYPYW3c ZCTgLY0WxM0CEBSLERqJ8eP/7EAM6mCnh9CBUEKiz7WGfYC7UBFGddaqmEnQRyrMxHC5UIMHehV9 fUIBLjwrQixSUysLBsZETM8Tak4aiTXIVHkr0CIVdy5i2yd8W2OI1Ek7UC6tjy/J1Egs7SaeJCA1 NtAUd5OJ42IiVMjr63VSh4OhUSYe56ApjQFV78RtLIbGBsK1ZmKimeDJgUZNzoRY3Rs60PgfhbUC D64RN7FsnkwzsSLohsPZDUVvktoWQI0+M0G7CnYLqvmZiGkywtdlfZIb9WUqU2xs0qdwsagv8eZM ca6FqkLGJmJ1KRAtUTHgcikCrZSaCsVExQxAQS7M+iZRGIka20zcqKlxOEOjVPCm4bxRdaPmdAaR M0BZUplUFFjV2pAaqPwhRirHmQoKSPuyCzFjA5o1cMhUrVug0cxYfCwVf0WNppqkQKngsIFmTeRC SEQ3khqLQXlwGumbis0yqeBZFbQelKAXw4hSda0iKZZq0VsrYEVoFqZWIDhS9VJT4w+VH1uKE6eE BzBRibfURNx5rU4bVXWK82kEaK52r0OjTEwYMzYSekU6X/DGCXEp3CzuvMLzqHowKLtgJjiijQWw I5X1GV5DI/X8wB4LMVRjqLL+Upm4X1Gqcl6vUndgJuvDl1XXmoq7lkzE8p5QVd9QkDtDYVs6rsFv qDm1RcXopKZi9RUTsQqR1LRPyrfUQJz1/3oKAPjkoVk85wYahT38qtgefn6xnJepEKTG42Iq1BXS 8AApwGixCBzQT6FZJhaLwWXHNYMrFDZTlzCDHjSV0VTMXAq7X8Q6nAYCc5LKxFikptykVCaeZ9On oC9sGBN2iZmZiCcvwP5BoZYTTuPfpG6Wie8m01f5r6TgPBK2wwplJOFKTSFPIXFdJXlCBQ515gru QFMHU12nFjWaaPbeimXNQJ7FParY9qsbzcR60WqyK4UogKaioECipSaqHBTVE5joi9eK9RxMjUyE Xo3EPVZisByaNRWg1Yk6sHhNxVqJogaTiomZIBOCJ1wqFedWptrVqNYe4uZdqboC4/9xLIZYDkrA slJjVTRc9br66nLLxn1KZ+H9DavU+stMrRRMhW3l0NinEqaa2UOjulSYqapqgqguTcQqf+pABehm Y2H/rpmgsAGLaARU1PiGUE5fmAWp+kozscKngI+h0UjYJ2sqcm2pJgtVJmIxOFNc3FeO2ILQaGwq 1qCUGWs6MBbXLnY3qho1u/3VIWUwQ6ZieRqc+6jqwEB0u8vU4Wv8fZmmEL1aDMGMCRWeDGSiloBT ljXF2tQSZ9C3SqxUBfGkBn3KcOKnEjrQbI40NRQ7MBJrzsjUHFZqIB5VYqoqjCF0oNntJzUWn7ZP 7SpjoRC4qViDxUQ4DQyaNaVscKVb9bUGQs0/ddEJXEncRKyiJxWXsvooLVOx3vSfy5PTw5yHGeit VsNXjVY2Bkvp9RfNIivq22hq+BeNZhpeotm2rU68+M/KuvjUtsX/wZ/UJaAdhA7E1+tzrWb3bZ9e //AK6hL2mDAKkoc37Xmpm2XipmVjdRFZYwMxL0emuoeqEYcGNVdquLS+sN1XrRjxtUKRF0NDA7FX E02jWALbQNylKFPtgFI/lrhV1shYJnTwh1cQ3s1IJQjYzOMtTMK8mZkJnlchFAKNordGvWEXN4oO O1xZfdWfOlAXsIGb6YtAUGoisixc881IpMMaQiUkxKm3zuFGY4E6Cx5l3CigThNhX726A8M/30xM 85UaiDz1D2MAg7NAMUxfLdt/opxeQrOY3GuqxjK4UfTWqtMVoNH4PzJ3RMamOS5F7bLGNxOyh8wE AfqvlM9QxGhCYAiTXpHKykQe+F9Yq6GJpllmKN5MpEzGmlf4I+0WToX7w76M//vMPiMhBC/sTtCH AKi4ndJQ3Knxl5sy/ry5QlOtRZ1V8IdGmUw4ee5P20ec1W5sTTlZTCu9xOY/VzE27HPKG4aXm/66 j03iOW9/KDohnPMGx2qqm9XJe7K+RSdwpXZ1o1gI3ahPzQnhqEW41Fgmfl+s/KLeuvHnB1glnvz2 h4IJwslvUhFmGAnVOKFZU75LqGcFjeKGdiOhhMFfFGJQ3RAcPOLOZ8FA4Gax2JeRUMDDSGSnogr7 78URNJX/jNS55fj7YhGBvo1iFQSDvh3853Nt0pyH9J+13ITzkISNxtAsFRJaNXhaTNGEsJpYUFhm YqLaUAepo2LhBbVTSJXQKpaq1DcTkm//VE1Oteb+VCfKS90sE99Q2JBmKhN3fMhUabvqRnEvv5Av B1+XCeWADE3U23FkYlaDTJV68pf373OcjXqVmaqyajVHOgnVEQVvw39cKxyK8d/rKArBD1MhpRM3 mvS5cvFfH3vzl4+1STwEVFN31RAqlAiHgOqLRxqo7SreYiKWIBa2qf63gTQzEQozqU047lOEn0IV kD/fXzjyCEMxsSydgXC2GtZFQqk3oYq6qlk8kFK9txg3CoItFeo1yPpUxxDPL/iL2w== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 3w94DsQHgA8D9yP8soeDXrRi3bTWryMlq7/aKFn57XrJxs2UBHytNm6Ih4VXjqeykL4NzR0DMSzo BzAwzD/mr8hmgr/QhnHVAv6GfYHAyxGPYOOqp4DNBEwOdgM4LxuP+DsaF6rohL6i5fEq+d53G9Ca khKcl/b6b1ZJLDZYSEjKth98bEhaQjigcUb8n0WYD2K3m8xJyaaNhIR2jRqoDC0aD/oa+yddQwfC fOO4hoO3Lv7p7KsLY8V6IvuDdCDjEzWEcAnGeghji+LvpWzVD99gvQiYE3ydCCPTxScNqfJzJoAz 6UjAnsgOIt1Aln9viH320fkTcRw1qUYP4qigh+niowZ060NzBeLRoLchhqIMQ7o8vXEW23xnPd/6 yIbb/syCbHmxVlFz15RMapsO64TO3D1HUX0eYb8zxmTVDTOq5v53wJ8h32LjFlvJFtZHi4prmUoV nF4Kfig+Y8c8PqVmBuKAM2ENKRPKER/NmQC4VhmdOwn4oa1v0gjKBc2Fc1B/0s5Nm2DdtTDehZgw svNk1c2v6YorZjTCndhnkLV7HugRzDkjyiZwKfvmUo3PVtPbX5sTTR9WgF+aTdz1JRNdO5lse7GW aHq0HHPeQGQzgC9Bfhj6QNwS6YuROC8ivGgc8HLwHwFXB/5LFx3VB/wHPjTOOXQg75OOcH7YYIh9 MinbZ5Il16V0zPYpCq/UIWRI0WgisGAkyKc156a1bo2FZMWqdZIN66wkFrQ7jocC7iQb7i0j6hAP DS0dBz4sGwLZGhe//phP5B0zhJwvkFHSNag/jbg0vDvXeHMdVXxByiHbhn3v4bljcfwPcjniKiYD r1Q0dHxLb3u2gWx7uY4qOLIIZEbBbNViHH11Oa+wwZyL7wDePXAgH10zlSvYu4Qp+t6QC0wfBb41 G7SeCMg9QViTj66czEMuFOBGl9AB4GuzVvASaqunDhdSMI6DfAnIuUhumQW6CuQV6yG0btiKs2ZM 8XmZMr5RD+YT/O8s5JwhncKl1s9EOGSxvPKEPrW7x4LZ3r0R5pey99LBurb65jK+/bY103BnNV1+ 1gR0A9X+wJzO3j0XfJc4HyQsdyzkkAAPAP4NMTsquVWPSts7iyo5Y0jU3/+OaXllzrY9sSDa369T bO9aTqe1zYIYD+EaM0DuGtZf4Z40iEw/MkfR8OAbsqbrGw7xMtBTfEbTbC5v7xI+sXAKtu/IljEF exYxRaeMuax9CzEOBjyAbAfO7UH6HuaKrL3yDVN3ZxXdeHMV2XhrOcwv+J7J4guGELthY+qnsCl7 5yhqH35NFF3Up9KOzCHzTi3COir70Hyq8IwBlbVrDmA6jM0hDgF4H8kA5KrQlTe/oWvvLgfOQ0aU jwfeAPF64D14fQCWh7w9JBNM+RlTtqFzPdX+dCN/8J49v6eHIXNPLiTDayeQQYWjFf7ZwyEGYePg q2NF2fWzQnIKHIRCOACtl5mg1xi0vsEXBfEiC3NCAteBbgBcyGceXqJM2T4b45mArFGQr0HWIlte d2sVU3DeCOczQMwO6Vch1svE1UymEXeA+VFUXpBSJd8bcOl753HhFdgHAT4AyDlSJlfO4NOaZ/M5 R5ZCTocK0zRMxb538AMFp4/CPvbo8i+Aj2MfRlDmKLSmR+AYT1j6aPCDg2+Fr+5Yw1Ze+1bF2ZH9 joD8jv0L+NRts8Fnz/hFDVHFobNHgw+ADk8dReftnE/t6tzMnOlwVJ646UFnHp6/cd0miaU1J8G5 bE03VvMtnVuY7ffMFfXnTUGnUK3d68jSKyZMQst0JhK9D/jco0onAUYA/z+Ox6I5RZxqPMRFFZWI myIczu1+RCi2P10hb7zxFZm/ex6V3DxdFZ/YNpUIyB9JhpaOpTJPL2DSvl+A1voYzKNyWueBz4tL qpkONhNjCvDPlh83ocovmIINA38eH4T4QEKjHnAh4KlM4XED+DvdcHcF3dS5BvOTxu4VEDOhCk/r U+n75xDFRxcR1Z1mVOaJBXRM4xTQ34qKK8ZU88s1kPezxZqUgK1U5RnUTWchrwHun3dkCVt1eznb 1LWOLLxoAOMAsoNjQu6IU0MsFTg6+NLAHiKOxO7tJOxP/ODDH+9wtN75ZgWsBTL/7BIqrH4CFZA0 DLgm8CUcBw7IHYl1cVzdVEXteVOy6fEqkHdzhAfNV2+SWMh5iTWL7Duy85x39BAl2BGE0ymPoAGg 33n/HJxXzCYVTwHbhWNHkFsGOT/ILjI5hxeyWUcX8vEtMyAmBPgXMA0DMUqIr6C5hFwx0DmAD5Sh yD76JY3Avn7XmEFsUAni0btmsQUnjED/cdFonoJSRgKuxfw15whwlykgu3R4Fvarg99EWftwPYXm g4mpnQycBHxRkO9jG1owwc4vfgQXmT2ezWidg2y0PuhamFtFW/dq5bEbTnYXLoVTBx/LIU612Vwu AduE+Rr4dpJbvqRyDy1AnN6IbH66htp2bw3Z8GgZXXLBhM04MJ9NafsS9DGO+UcUTwAfHeWTPAzH YLN3zyOqLsnIhq5lBOKvOC6UXIf49JGlwCfk1TdkTMIOPcIrabDCM20IkpEpVMr+2UzuwUXAQeik WsRVKqaBn5XNR2sc7ATk4xXsW0xWnJGCzeZT2mcD9hP8q5jTZrbOoWqvL+Pq7q5l6++uJrfdx/Er 8K+ADlU0PlvO7Oy2Ire/WAv3B18krBWq4cEKdl8XBXmYeI2B/wjJIsJti5jcXfOBd0PuLuQd0kUn DajcgwvolN1fQo4AE5w/ho4qnYDlP/fUEia6YTLIBegD4GZUS886OnvXXCa2bgqVvHsmlYDWZVjZ WCK6eBz4WiAXhowoG2fjFKQLMTMG2XLAUey2ro0Mworge1IwLlqQDwu4D+STRnaOsPdGnMhXF/yZ tAfCHuCPB5kMUuWqYR94ZMlEOv/YYuynQPqCSdk7m4kpVuV8AE8BzI54Bs7RhVzGnCOL6Zx983F+ EMQbII6yNUQX4lQQ34PYEPgoIFeBS2rQw3nliAfinNvMvTBO88CnRHoFDsA5MsgeAq8BvYF1CHBG +ERXT+YRfgVfLZ9QOpXL2rUA8nupslPGGDODrG7rMGf2dRHylmfLcI6Cd9JQyDGEHBXsd6y58xX4 TJjkFj2s24ETw/pK2z0X5/yB3gc+i2QKcw/IXYmrnILXKsK84BOnCo4uZhObVO+UsG0GVXRwiaK5 4ztFzQ0ZmbFnNhleNg5yIuiQkrF0Gvp35SVTHP9JqJkGOZxc4rYZuG+kO0FGIAZEVJ6TKsrPGmC/ SVr7LMgXAT8yyAmTfXgRVXPhaz5z9wKc0wd54JC7CGsnfd9sYtvr1Uzru81MyuG5OL8GfTAuS2+f jTiDAZvSqAf3xzoY8Qq0FqWAX/DagDgqcErg3ZEVE+CDc/qLEL4BrIv0ExNbOxninhDzo1wisN2H OSY9Qwfi3NaYhikQowXuQwQmD8MxUL+0YdZ23trAk6xtXbQU7ghLx7fpMfnXjAF3MNHNU7Bt9kkc huPxvKc2xmHekUM4ZA9BX6nyJZKwvxffB3gr+FLT987FfCP3yELIe4L1DLoPYtM4jxL4DbJXIB9c 3lEDNvvIYphbiFlDrJ6KRGsI/JgQvwR/IeT4gp8/qXUm9gtBzBTpXhzLBx8WfA/hDDo0bRTWo6Ho OSDWDDJacEwf2cS52J8Oca7kJiTj5VOxvi48YcwWHTYAHqfyJ1ZPJ5o7V1Ltz80Vzd3L6LQDc5jg vNGUT8wQeGaEY75lWro2MGDTggvH4neF90HcAGQX9Av4tgmkTxWNd5eBXwW/Uxx6tux98+h8JD/F Z4zhGjrv8CLUNh84G+SHkRU/mpAtj1cr2h6vAl8olbx9Op20TQ/yrMDXo6i9ZcbknjPAfmm0NiBf D/g2xrk5e+ZBrFjRcPdrovaqGegGkG3Y7wH5IqiPRUz6HpwvC/EFiPOCTwPycciyi8Zk++sN8rpO MyYwdxTh4IZzJcGnCLFrWO9M+v55bFTdZDYwezQXUTIRfEVoDczGcaDoIrxvBMf+Q4sgpjEFuDCX uWM+tv2Yf9RMwX/3SBpCu6fgD85Rd4sfDLko4EeT27qrcuodfHTAt2Rj66MNPmOFd8xghUt4fwXk 0vgkDKXjG6dShecNyYpbMlgLCtsgHcTrtWyQjgVcDLm5gDtwvCwqfzwdUzUJ8lLogrMGqjEomwQ2 FT8z5CDlnFxClt6WEdV3sB+YQ7oV5BryRG2TGr7EvBTwf1wt9n2yGUcXQkxR5Q/YPovN3DGPyzq6 mC65aIIxK+Cw8OIJ+IPz5A4vxDgI/MLIXmK9EF8/DeSFLjxrRFZdMsP+SyT3aFznsTmHFiE9ICMb 768g6q5/TZacMMQxFBjvnG2zsU8QYkIQdwSfcUrjdIyfkD0jGm99R1aekeK4lU/qcD6scDzE+dn8 g0vBn0YVnTUiqq7KwPYTVRdNyMqLMqrkiD7oZaIa6Wls65ANzGhDNnv3fIxpkc2GnE8ma/98bPtb X6yXt3Qto9JaZ8C14D+U1/d8AzEpsuCiAfAXRU2HGdP6eAvZ+no9UffoGyz3+ceWkBWXTYi6218j m2UCehjiqIgfG4PPm03ZMQv0D9gcLvPQQrro2FLsA216sore9ciSqL39FZnROhPy7iAeQ7h762J7 hzg20fxyJdH0ejlVdEMK4wj6EXJYqaLLRmRo2Vgqsm4inbrrS7Lp6Uq2pXszUdfxNfY3wr4u4CAQ 8wQ8DP6CxO16EAekXJMG470q8btncrHbpkMOGcTdkW1fgnOSQQfnHUE44pQ+xhyJu/XopD0zqZwj 8xXl6L6AWcOrxiuCikYR0fUTyYSd0xWlN40Uuz6vJ/e822Kz65c18iP/3EL88Kstcf7TVvLoe5rc 8Xmjou3zaqL1wxp63ysb7mS3C//DAz/uxy5v6vgLjmp5vY6uvPq1bVr9bKVX5BDwS+DcVTRmZPZ+ JJPok3dKn27sWqXc8YCwb7/Nbm2+rbBvumnNVl1ZBjLIB+WPVcbU4jEGXknU3fsG/DNs/hkjyMsg 6u99g2RZhjknwvZ02/NNVPubjVTzuzVUw9OVEDeBD1l7+xus55p7lpEtL9bIm7q/U1TexH5pOv/7 paA/idZna0C3UPU9yxGvWM22PdgCcsZl7l2Afak4X/TAfNBj8JNO3T2bLDq5lCy/bqJoeb6SaO5e SbZ2r2fbuy2Y1kebyKaelYqGh9/CM4L/Bp5dUXv3K5ATkGui6dlyyB0hd7wxp/b2WDOHHzHUwecK m+a338lrnnylaP9tLXXqtS175XkAfemFF3eqx4U6/IRi9qIPupY/0GlL7++Ws/u70feeKNgjXXb0 4ZcUUXjDgCi8qq+ofGRq3f7TMvLoS5o/1enBH73nAFiG39mpIFvfbJC3PVkBXIkFzJ7QOJ0qv2LG 1d5ZzRx+wtD7X8upqrtf4XyYtLY5VMPjlfLSy/qEX8Yw4N1kQ88y20N3HW0P3HMiWw== %5D%5D%3E %3C!%5BCDATA%5B fllLFlzSZ1OOzGOzTi8BvE3VPliGY1oZ3y8Ce4z9nU7h/YEP0kVXTMCGYhxSfsOUzTyxGPJflM0P LNnm1xvAB0WlHZqD+NNEMr5tKpm4Y7oi5ehMy+oHBpaHetfIT/1TTpz7lVdc+rs9eeFXZ/n1/9lq c7vXgXzycxTz+nk69fhzDHnnjR998Z0njJ3y9s1E7k5nDHPmrTN54gNLnnrPcWceeipP3veyPXjP QdnSac3XdKzh6x+spxq7VyPd8zXMK1FwchFV/2Q5t73Hym77A4Ktf7qWzT65BLiiXWLtTD46f5Jd QOpo26TW2UwxxI7PSgGbIXn7DuJ0YB+p3c8sqD3vregjT2n6yGOGPvVsK3vygQtz9qkzu+sZQbR9 WEvUPfxa3vJyOb37mTV98ClFoTlUHPxgoTjwyxZqzycr4sAHK/rAM5I8+MqGPv6YZQ/1cPzRTke7 s9cC2GN37ahtz9bKG+9/o9j2agX6LAeZowp+1Ae5BBkjt79cy7Q8MYd4LdP+DGRzi3JHJ6Hcc4eh WjrXEk3dy0H30c1I/9V3L4OYhaL5+TJF65uVNjs/riZ3vNtA7nm1WbH/wyZi76fNxP5PFtT375X0 qbdID7ymiTOfePqHN67s0Zdb2X3oHQ88JZijD5XcsZ6t9LHHHHnwpTX4mG0O/7JZfuSXLYoTP5H0 +U8u8kv/tlOc+YVhbj4J4m7ejbL74Wqw3cmr3vyBu0pqR89mqu3NBng2uvi8MdgCbFcQPiLOfuKZ I695uun9Whrpgq27rtnR9U9XWW/10rZyCNJR+OYMh1io7YVLYcrTt33Zg69tmSNvldzeZyzf/oTg dzwkmeYec7bt9Ra69bU5nfX9QiqifDydcXAuWXrNBPw/6J5SwC9sOlrnhdek7LZn5mzz8w1k0+tV Nu0/r5DXvDez3vbrt9bt/1xmealXYd3d6yF/869Q7v39XOb9ywxF588+RM/PYdS7T0nku18T+I/X 8h3fHCp1f7qnkvvwII99/Txb+eJhvt3LW6WuT8/W8g/upqBx5Mgff9nKnH/tzl17GKE898ifPfCY V+7vtLM/estr67nzYfbHr/lxh+4pFW0/r5HXPfmK2fXSRnm005Xe+1ZBVN0zA/8f+IyZtsdbkB6y VG6/J7ffd9fJds89JfBNsvnZGhpkoeXFOnL/Y2vuSLcde/a+O3/2kZf8wD82KY7/LCdPvlcyl576 MedfuVOn3irJ4+9o5vQzB/rCU3fq/Gcn8tJ7F+rGaz/q+ltf6vJPbsTFfzgRP/5qKz/3M0Nc/GxP 3Xrlyz+9mcE/u57J3r0VRZ1+bk8eeCMn2z9uUDQ8/VbR8nk1rAfq0AuSPvaM445229OHHtFU+5ON itYXq5i2JxbK43dcQL6VJ295MPsfU+S+V1bkrhebmf1PSe5wlz1z6qk9secXc8WBT5vpvU8VxJFn Norjrwji7Dslef4XJ/rqa1/61osA6vorH+rO80Dq7gt/4swHjjr6igLbRJx5yxKHnssVx9/JmUM9 DHmh25F6+DiIedmdavv+ejH38VGevKfX17qz15l49FMw9fBFBPXjWydi5+cNZBGyoZEVE4GXQUwT 63KES8E+gL/KuujeYutd/17FHHnB85duhzh/fzaEr7m/lso/vshm72/rFPt+3Sg/9xOlOPGBtGn/ 2wp55VsTm7pfv2IbPm5Qtj1W2B/scFdeuhJue/NKwtbrl5Lszt+I5M50evL7ulm2/ZkVxirb364D nkYiO0dve78BYUITLmr7VHl1p0x+9HdLxbVfHci3P8Vxn6/nch9v5DKfn2fRv7/KZD4/yqJ/eZdO fXiXzH24me/+pL3Up6e5PPV2bnXxrbRK1xd7y4kPf4/n3nXnuzw/XGX3+nop9+ZxLv+sO5u8/yIE jacv9eNHZ/rcRyd5228rFc0flvNnu3ztLt6KVX7/2J354Y0LefgjQZ18xXHXu8LsHl/L4272RDE/ 9nix154E8FfuhvM3OmLsOi6ksdd7gvhz933Zy/d9ufNd/vS5F87kjy+3cmcfInm848VfuOHHXbzr h3SerVXLq69ssg/Ptq7qNLTe/79rrE/2WhFX3rmwTx+mKl/dKlC+6yhgX3VlMO96MrjXXTnkk+eR Njf+x97mxr/sFDd+d5bf+dmNfP4pivn4KJP/3FHo/OpYJfe5O4+889yfPPdaSe1+a6EouqxPFvyw lCi7b0Ls+rQR2tjTj5xtz90OVp695as8cseJP/DIVnm4w8H2QIc9dfwpR594rlScekXT5x47sxce +XBnH3hzJ564sd8/c1Ac+G2z4tgHawrZX/rcE2fuzp0o9v69eGX33Qz7V1dK3J8fqPN6sqvO9eXh aqd35yrZD/cyucd3UtmbnWHkD+/s6OtP/Oiee/F2ry+XOL49W+HxdG+tb09zddDDuurg+9Xl/l0N VR5P2sttP5wvoD6+SZZ3/u5pfewfm8H/wwUUjmHjWqcTjc+XkTs+mNPb35uDbgPbJY8/Pd2y8ZMJ dfGjq92zywUOT8+X2t+/mO304lSF44sfKpiO7kj5ld/stxzuXWGTcnqmtWNk/83mthKSdNZiY/fM 4I48cHB48UO519N99UFd27a5PT5WZ/vwWibYNXpfD8Hu6LJij6Bx+vF6sN2D81nKH+4E0Lu6Lfl9 j1nQM/SzrkTPp+2VSOYqa6+nlGfdyK4AGXR6fbDM9uOFIv7zpQKHN8dKox6UYplsvxFfdvBGXNm2 60nlvj2NFTySW6dXR8rcnu6t5N/fzefe9+Q4vjxXTj36EG59tHcT0f7bOnndq6+p5BNzyO0/r7c7 2RnIn3jhpmj912pF/vUl1iUdS+Snf6WUTzqynF+crnZ9dqLG9m1HMfP4USL38mHG1tdXy/iXHTnU tRde8oufbW2+/4el/NRrgrr6xJO68yRI3vmrK/XqQTzMiePLE+XsvZtRVkf+ts6i5Z6RZdsHsy2H /rlsy/nejdbd/3D3etxa1XQ7sbL2TlJ1TmdGbVJnfl1gT2Od86vDlfzPd4q4n57kMZ+f5rC/Pslx fH2sLKCrscb9yc5y+3ffF9vc+6er5f5/rKJ2/2zBHXmC7PyHdUzmsYV0wRUjwK5U++uN2OYeeswz uxH+2/VYYdv6QM43PDWna+98R1RcNSF2fFrHnXviZXvnZiJ/804sc+KNvbztbyvlJdeWKvIvLbYu vb5UcfKjgr9/M8n1+alal1ena5QvbuayzztTbT/eLAnuqqtLuZ9bn3w/t66hI6Eq9X5uE//4Wjr5 4Gmg/furpQmPChvTH2ZUFD9KrGjtiCtt74wp3nMntgS9b1n67azynOtZZTl3MspDH1ZWbH1zrIR+ 8yaZvPHehzr9wZ4/9ciTP/fIl790L4Q79ciNPthD0rt7rNhPXVk2H3vD6V9epnv17Kzx79ne4Nuz o96rZ28D/+JeFnntJw/rG//Dyzv/6aa4+293i8u9lpvP9q61aH4ltdz+6Sv26pPgrW+ulTu+PltO PX4TRV176U3deOaH8LMb19JtSe18vok93Klkrt72t3v0Y5bb0/3Vjs9OlLk/PVwX1N28LbKrtCr1 XnZZ9MP8kry7qSWtt+NL99+PLjl/P6zwZldI/pWOiKKLdyKLbnSGFdy9F1ZwE/379t3wohs3ooqP 3owpab2ZUJZ3M7PK91Fzpe37HwrYD53ZDq9OlCoe/MvP5kSvNXH4f22o/b/aUMfesuzxF1uZHZ8s qcZf1nA7XpLUoV9J5uaLYP5tdx7z8nEq/fJ5Mv/+fiH3+XYh+eFNIvPTsyzl+xtFdm/vllKPX0bb nP67jeLUcwV7odNT2X09nX/fUWD3/nJpYmd+Q87DjKbAnrbtji9Pl/Nvr2Q6vT5d6frqQLXLq70V 4Y9LKgvuJZcf7IguvXI/vOjio7DCH7rCCi+hn+cfhBeevx9eeKojquQIWndNdxPKt91KKG+4nVie ejenUvn5Qr7FzV7GsujGfJsdvSuYQx9Y7uj7rfyhVw7cpR5/uxvXkuweXcm1f3athL3c5Sdv/7BK 0fJuFdfeLeeOP3XiL3UFcxeRTT73swPfeT8l5052U9y90ib7J1dKmfNPPBS7/25uU/dQJt/x81rq xFuW6e5KDOpqaPR8srfe7u0VpAvPV9i9u1bC/fKwwPH1kfKI7vK62vvxVZX3k+p8H7c18O+vF9Av HiS4vThQk9SdW5v8MLuq+n586Z6O6GL4HLgbXfI9mqdzt6JKz16Lqzp1Lbb8wI3Y0qqbyWXuz3aW sZ8e5zDPulOV9zrSmAtPvbgb98PY64/CuNv3omBtlF5LQ3KdXZ51O6si6XZhVXxHYVX9teTKnNvZ deTLN/FWP/baWHf1ursi/ZR3K7Om6kpqxbYryeXRD8qQfNXXF97JqHdHz0Z8+Bi3+XLvZosfezfL e37zg769uvY3FXTk7sy9l7fT98neFueXRyroR7cjmNu3ApPuF7bCPMHn3N3Ikj33Ykq23Y4vOdgZ VXLlUVhR06OYCpfXByqJ318nWL7pdbN6979e1r/1hih++xxn9/5EfkxHSVXO3YzKmhtJZa1Xksui 7pZV+D1sKPN/2Fjh3tNeqnxzKd/h9alS/k1XAf+8K5fveZLFHP/dkdjz743M6d+dHLpvlvl3tzX5 9LTXujw/ULn17ZkyxzenKphPzzIUb/4WTr19ncj+2pHn8mJfucO746VWz3o9rHo+upDP70W6vDhU lfCwZIftg/NpFj/0btzS9qt0S/aJ6VvC60dbxNSP3dLQbWB1+x8s8fZljMfLHVWFXUlV1fcSy51f 7S21+ltv4OaXvbab3vRyG9/38hvf9TLm73upzR97Hax+6fW3+mdvEP1rRwr9W0eK4uefYzc/7uU2 lXXPtTzcu464/E9H7lpPhN29jkz3xwfrYu6VNZbdTq9rvZVYFdFV1cS/vpvDPOyKpx88i2Qf3E3g 3z7K93/UUh/XUVIXcbeqds/FpPLjl+NKwh5WI519ukr5/naxw+uLFc6vjlQG99Q3ZT/IaorvLK7z fNpWSf39VRr54kUM87oL6c7bxc6vj1Z6PW2vDu6pqqp8mFiV+iC7lvnck0W8+imKePFrpPX9Xoct V3q3bDz00WxTYdXEjfk7p2y41rvC+uVv3uzvd/PS72RXNl9LLEV2r3TPlcTS1Js5JV7dLSXOL3aX UO8/JNMP30RQP3x2Qnbche56Eev27EBN8r28uoOX4kvPXY8uOXIpoXz/5QT03YTSk5fjSrddTa5w eols7LsrxWBfs+5kV528Glt64Vp0UTvSWTfuhhd87A7J+4Q+V5CuS36QXSn/x6e4DY97ra1+6w1y ebm3fPuj2Mor3aGFJx5Flh55FFmW353awP52K5f97W4O2EP7j5dKbd7/LXjj6d7lW6LzR6xz9dVe bReo9a0NJzFdaS4x/uo7iYnZSomhyQqJvvG3ksUmyyX6JhaSZYqYfmuiToxa0/Y/8w== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 Htihf/eHsn4Bp8Nr/uP4ydasuLQK99jESo/4wFrfRI/akKRzLalJ5t33YiVfKsPFn9uChZ/aA0Xf 2gIP9dyPPtuUmnC8LVdm2vcwgl/z46jhrT/UmGtfDMR5bajOD2gK/e6vYkOLNwF2ZXJ6dHDNvdsq EV5D+O9qK2mcVS+QpLRrs4mVe6mYt1upKx81xS/aThpXlrlLyiqdhY8+mAqyf9sniCxZR4a8XsOL ereOfDxISurKPI6+f5J4pPtpgrSzLEj0vtbbeLAs8nxTUpJXXVCyZ11QUkq1W5x3XVCapLXEh65v P2fa/zbKrTEs1afBNyai0T0mq9olKqfWKeJ6pXMkut5onwp/WeA7/+jASl/ZxYbYmIMf7keyHz54 0qX9p5mnA6aSJ40nJC8aLSWvay6InzQeY++00Oy1FiPRxyZ//iBny37t8jnZkptwpuVyimXLleST LTdSJJ01/nTJZwte6d8kgtofx8iqvx83eMMZ6j3nNAzSu7cYXv64U/S27fzBDyWyQz3PZUzrBwem pOsUU9phhfDzMXFmsyGT+15XdK9WKnxbccak8ZX/sfZb8Yc6HkUfb7+XZN2cnmHfFBXnXRMQ7dgQ Ehlc5R2ZVeEadavOMbKgziasrOlCSHG1XXhRpX14aa1NaFWNTWgZ+rmiyja8tNQhIr/MKTKrzC06 uMwvzrIxPda4/2WoaKA2wKz7URRZ/6cV/xHHo+79g8/c+sZn7veKRA86DwqvfDRkUr+qi6900czd b7SwrPO8pLc5WNjV6s12vfeU9NeFiT9VhNEDH9yFnzv8pf2l4Sa9VVFMa5cj/+nvfPLJe1JUWHtC 2vzOR9JfHWrS/ybKvTYkJbDBN+1cS/blQ11PZZLeYr/DPU9jj3bfjj/SfSPGtjUyNrTGU3an2jGq uM42vKjRJuxlk03Ya/S1oN42rKDONuxJtUNkHpp3aVVusoxyN1lKhbvMuyowVvqpMMSgjBMahpeu 4F/hVIV3B0Ti/P6DkrvdZuLXLWdMSks8TBqLg0w7SiJFb5qsBDkDamRmn5o4p1kgftB+WPK66by4 CNXkF1/MJLV1XoGVAWkuNVFppm3FUcKCNgvy2u/a/KSGbYIrXzSYR70iYXOTu3VTSuqJthvJJr3F KBcWxJj0lUSKvzaEHurJk9k1y5IS61zjYus8kixbs1Mk/e9C2c56t2OdtxM8moMSPRsC4uLrXKOu VztGwHG7yjHyIRqnF+UOUc9LXOKelDjLbpc6R8WVeUYf78iNFn1sDRR2NHtLa6ovCQvbT4pL62xE 7xptxBU1DjA3okouobgOkPlX+Md4VITFuVaHxSWXeMYGVgQk0V0fXI1ecXxeE3f8KMpPweV+CXHF 3jEZxZ4yx/poFF/JyWGVvsnH0blRA4Muem84PYNXnJ6g5bsV/Nsnm26lhVYH5QbVBOdatt3INO/K i2EbK+yEFeXnPOrCsmCc4HhRZR95vcYpMqPCNfJOrUNkcaNNeFqjU8yRntux1K89boYfuGNGff84 yfvOXSC/f3Ix6X8U4lQdGRdY5RubUOoRnVXsGe1QFR1j1ZASfaYhNeZ4S06U9MPrELOeJ1GSD02h kvdNQZKWNn/hg18PUdf/riN8+uths+ay6DPN2WmnW3ISj7y/HXuw91n0oQ9PYoQfO3zJD7/ZMr09 7qJv1cFHOm/KzPoeRBl1cBZGLYNH6Pc19kc678a5NUReMa4vuGTwktPRz/62RT/g0Xx92+SpBk7J 0/VTmjcYVfwhonq7nCy6rsSFNXnExde4y8y7b0QZ/cad0+vijHU/cGKdfk6i08cJtQ== %5D%5D%3E %3C!%5BCDATA%5B +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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 3Zpdm7ZoDnp4kQ6xl97PjDOEWxAXJ7Z0jBIUYcWz9wr+izGq2AG6W4a4PAc5NnMUZoaloUcHDFfv B6gXXhq5+veX6dM7nbmmj1dqh37dwRednwVWl7caYc4xW1WufnNIvfjSwA/8bQ+uI9fwwXIhv3ca n1o7Tiw9NQfagdy1X328rv7HHp+L/9zjc+nfd/uc+sc2XcX5WdrCs9N0GW3j9dHFdrgvHuCPeSsa zOYzW3fmy67O4xIqHGD3XPGFWZgr1R1Os/ZgeZi7l0GjV5IshNzeqXzr15vEthc7oJsNPSPSE7r4 nNef+XUvZruEtvubuYFnrtzQi12YF+eZTxFyO6eKybXj+OTqsXxak5P+GIvzw7/t0HU+2uBz+tcd +su/enPv/dkovPNnA3/nZz/pg29DuKu/6rTn/3Mvf/NXRXvmf+zkIovsDkr+Zt5+sRaY3+KH/+5m uPkkzPfex3nGz+9mCe/+bPC+8v/s1b39X55eVR/P2acL0SyZMEez2H4G+zxVs/eAqNGGplnrwtKs fQJiLbmgZGudMcFyx849mm3Mf25bt4l4bFx8hYMQk2On9Q82R6yQo5Ns1cQSR2JGhabaSAHRlnJk kg20EuSTT73VC09V4eIPPlxx61Q+pcpR1/dkkzDw533QNRSSK8fKmbUThL4nuww3Pg0O+ORmXujD txr8bt+NFwZ+3YcZNCn//Cyh6fF6oeryQrGkx4Wvv7NCqL6wkOUJC7Un/7FDe/yz5T7pxxy1eYOT vSvfna2Lbxm7aw+rF9Zs1mxZt0vjumm/5qA20AxzltqIYps185ZqZts6aebYj9MsGTNVs5XlH8iv fHO7Ziq1l5ZjJs9w9NpSqeXBVt/iUwtlv2hLrV7WiMZwS9IiBAsjvmiMkt8wRTp2bbXQ/fE2fff9 zSyXXor7r2t9sEZ38e9u0oWfeN3Ay63gKAhx5aPBXeDrby7j2p9s5jqfbBb7f95Pa736wgKhtH8m d+LuWvHcKx/hrVd63Fvhve/9xQ9fBfHX/yywmLiJKxiepososPHiw8337RU0e3d4abygcx+aO5KP qx3DZ/ZNhm4UH5w9wksIZb4jypw/0jCW2cJ0oYB9VH+4DHMrwsnfPMSyi/O5iGwbLq5wlJDbw+L5 BZYPHncWUptMPrL6ymKu88vNQveLncKZ7z3Es9958cM/7iG97fN/9hTe+lGHOQ199/Mt+sbbS7Wn ft2BOSDUsjjzLbzzq1HX/5et2saPl2p7/7kZr59PKRqtj860ESouzdcP/ebKDfxlJ3QzucoL87iy t+bqmz5doe39cZP3mX/frktqcdzn6a9ZPX+FZqnTLM36Ocs1m1es0uzevVvjdsBTs3s/i20sP3b3 kTTunoJm/14vzX53b413QLSFPqXBEdqD8C+Y0YbWIrT+RD7AnNMy38MFmRM/7sT766Se57v53heu 0OzmYnLthIrhOeLp556Gc/cV2K5YNjRbymmZDE0s+cxXeuXqE4N85aUqnPvJixv66x5u+B/7MBPG tz7aiGso59VN4isGZuvaP10jnP/ZR775TaDu3P/cp626s0BfdXeJd8/P6316ftmkKz4zwzsw08pb jjV31weaeR9KtuRiah20YRnWG1eu1yyfPk+zee1Ozb7tB5jf1GnAiIQ2vFp6eoGh89O9SvOX28Bd gw4d9Aq1eqPGx0vQEA8zp2ESZv2h+yKX98/DHCmLA9OFrKYJQkHHNH3n88382b94cKf+upevu7VU TGudILAP6MWLSZWONJOX1TKZ8pvGP60kXcGKKwu5Y7dX8A03lwnFp2byZefn6Aa+38Zd/MlTuPij N9f/j11c6aXZ0MvQGuMsvITD5lq/VEsuvMzOB9wGmfnnmAI7aOrp/FKtoLMH/Uf+cN5IMatrilh2 ZQF34qt1sC9o/rK8YroQVzmajy1z4CNzbLmIjJHQjhQLz83Wtz/dSDPIdW8v1Xd9sRGzlSz++Rqu PgiUrzw1GN+9Hy2//+Qwf/EnH33z56tFFvv1NW8vxGwi5teE978N0J76p6suq3OCLr5hjD6/b6pu 6N926E7+uhP5DrPNnbrhf+yEFpg+JM4KPQ0vNdCcdFpa7q7Wdn+1ns/unezjl2K5c4uHZsuSjZrd m/czu9RqPHW8RqcGmOuDWG0ZkzeKj0m31YbEWYJBSRovgUlWfEqjk1RxYwk0faDrakxqcFZDUkb6 hqTaKFKguSEkxcaY1ztLbL27GVpP0Mbgs5on8GXDs7jep9uE7sc7xOGX7phzlSpPL4CeIN/7zFU5 81gnXHiu1Q3/7Ko9+/ed/PVfBOWjZ1HK7eeHxTN/9tINP90hlg7NFnMaJ3J1lxbpz/3FjWaXr/+o 6i/+X6zueLxKl9QwlktqdOR6ft2m7/tlO3/s0zX68ktz+eyOSbqSy7P0yc3jXF09NeuXrdHs3XpA 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B zHxIRcOzpOyeqdCyFqjnfHshsbPACkE/q4LZZ0kve0/s/YKdVWBiZ8nH3l4rtry/ATGC+q0s5huy W6ZRrsn8PpgtyIeFEzfXyHXsfZd0z5SLemYSa75oaK7aeGOtdOK9DcS1xZ5LfPFYYzarD8DwKzu5 QOq86yp3P9jDd9/dyrez31V9ZTF4duB8gPekll9bZkhtniQER1rJ1WcXo6ehnnnEIy+i3kbf8x1c 24friO/EaiyqNcovL5FbP90mH/9oE/IkL62/hjcmWkr+ydbo+aixeQ7goKrhKbaGpHInqeuLXb49 97yJJZNW54xcgGf1kI83q9f1zLYFgwYMI/SNwaNBX4NyMOKcZtgaslqmgt2Fmk/O6ZwG5oZcNDgL MybUZ8o/OVuEvaJ/GZ1lK8fmjEIeRgwYZktK5fnF2M8gxntUnr0YmEz5PnIwpfjifPHEp5vQE1GK emeB+Y34LTIfB7YQrivqUfKL+SemgllNcy71H60lXlBqJTFQDSkV44nBzO4N8lC5nsVtVqMh3yeO DfKiom4XkV17qo3Aw01l75PZ6e9Md3up5tIS9DTUi1+rhov3jWLPg52Sb5SlXitrsH9FjJqchsnE +ALnDXlYZMEo6if8CztLbHx3NdVteS1T5bprK5GP6zsebkT9rg9OtdazHF9MbnUGK00p+Z3Fyeo+ to5nSK/ZWYWdM8E2krCmmm8TY10tGJht+r0902EPVAuCQ105PF+qu7RUbLmzntnYRqnxXcpZqGdV eXIhfgex4YqZ3bO/h1yAfBu4U2yNilWslu95uF0595Dnz33nwXXe3YQzdthzVyuuLaNzkyk5o+Vz j3T+1z4JC756Iybg/MfBxsH7PkLfvZ2sHnLFa4YvUrM6prF7yd4Du/alvXNx1k0KyR6pFJ+bRzVz y51NSmqDs84YZi6wnJoY1nl9LuBuicx+YON6MdRcr/dluaFOo9MaNUJw6gjkx3hfwok/rUVfgtWT I3ScwYxYnuxvKaW9s8G3wvklYhJV3ljGH/98LZgjYMrRnAOrZdGLEkMirMDawvVUqt9eLla9tRi9 fMRoMTTLhjPEWoKjjD10pfj8fOKj0F4vmFRtM8BZQ28bs2Ry3btrsGdFzEP0MGEXJdcWqYWn54JD bcjtcsH5G6npjim3pHU0NM9Q8dZS2D3da/SbwOPKb52O3rXc+9id+e9lUlyuvRyabiMeirNSkurH 41yPeOYbT8P5rxVl4GsvseX+ZmL2oIdA3OkrK8SOz7dKbZ9vU0uH5xPTHMxblvNRzlp5fiHOF8IH KLknpoCBJR67uZofeL6La/l4LfZ3sd9Ms44RhXYUkyrOLoKfRy6lpBSOpTwl89hkQ0GHC+0JMf/O t9xZyx27vhzXB5x11PM6JdIc/ApiqrC4Qj6vuANnWOYTNwjvm+WPFCPYuherzi4QWX7O6pbVyCe0 EvNPLA8VQjJG4HXj7Jk4+GI/GIA8+tbt97aITe+txlpA/BLL+2aLXU934qynevZrQax/fw356oxa Z+Ss+L3kY9i9xNlL8J5wLoDiHnpXqPs7PnGFT6W9af8gC9S9iLH4/UJQtBXOZKAXDk6R6HfESqf1 NTER049PBFMF7wl7Y0JwmOVBdzeW0yoa+QizC+wxJ9eMM/HM316mVJxZiB4q9iCRMypx+Q7ExGIx GjkSXpuh+OR8pfH2OvRnlGJmf+z1qSWXFkopDeNxJkKMzLJVUsCxZL8f/iuzbTLipAKWfXSmHfqX csM7a8E8In4QWFtgw6WfmIg6m/aRs9j9BYMMvLy6C0uRjxC3Gsz2ov7ZrEYhPgf2zuHLicXT8dkm sIvwHKr3UKsyu0UOBAYE3/l8G9/+cDN8nlLBcglwlRBray4u5XueuarDD3XgxGCvnlhfiWWOdPYE vUacASo7u0AqZnkt+Mb4f/gncJd7Hm7Vd3y+gW+6s4r2dJJZ7IDtsDVm4hu3TqF9QPQjcHY449gk U47cOh3nCLiOjyl3kkuG5nABKVZ6wxEL1BLgViHnABNOTK9lcaZpgszyTxnnrcqG56p5TVNor6zp 6kqx87NtUtN767FPLwRkWntJYWbcYRbLCvtduNaP1+P3035NJrOHnI4pWGNSUZ8LX3t2Adf56Sau 5aN13IkP1mAWVYzIsAEfU4xMsVFK++cSHw5nSPKGZ8lhLIZG5tmpKccngFWogKXN8lGpsp/50HOL YZOs5hqFvTf4F/CmlJhUO/FIiYOSVDlOzu9lPqpjKvX5WM1E9QZ7Hq4R+NJeHlqNj47TII9GbYJ6 F9cdeRL2WyVms1JUqg3ZNhjT7Jop+Z3TcZZHjsqwVRHPG6+vRb4CnhbqQZzZUov6ZuPsBtYVXgf2 i5XkE86oneG/kUcSNz2h3JHOHIEFn1zjxOKYE8V58F6ZT5FSG53BdCaeMM4rZrUSs1tF7gPOLXq0 aWXjiNVEPvjtlcR5Rc+E5aFY41LtNZM/AvuU+TjiXIEViz47W2NKErt2+czOWH2CvAg2yGqg1ULj OytxH5ETCq3vrJOr2e9g75N4YuCHgj+MPg/65MklY2mvlOVE4LMp/U8OYo5OSGb5Ns7SFrPrdvTU PLDoiFeGfbr0cifUSWDXYW3TdYB/qLm8mM4Dl5+Zg/Ou4CaCQYjzglhflCOwawt/ZcjpmE5xqfLi UmKCs/csHe2aRXZaNjibr7mxmK+8tlBMbnRCPkfvDede2j7fhPVEjK2QGCtwwrUnv92mf+s7T+nk dweloZcefPXZ+UJIkjXmQ5D/sXs3F5weFgcW0noEezC6xIFeN63rq8v/683jzePN483jzePN483j zePN483jzePN483jzePN483jzePN483jzePN483jzePN483jzePN483jzePN483jzePN483jzePN 483jzePN483j/+fH3Ll7ogJ3+8f724v77ee6uq31Zf+v9T8SHxRn72k/13e5a1z87tCA+NDoKP+4 FJdN+JJ48ADntttlk8uCA/4pQXG+K3xXrvBd6LLZZYGrG/sXewb79kKXJexnVyxbtcZluTbIP8Jl gem3urBvu3jFhYaERrEv6gL8I4JMP7qZfdgvXb9y48plq1auWOuyft2q1cvWrFq/3iWSfXnVyg3L Vq9Yv+5fvhyBL6+g/8GXV9MPmL78L7/k//Dl//4lh+0F+yh7H/uNLgsWuoiC/QoX1yD7WNO12Bsa EbTJ9M+dQewV/35h2A+udBH32S/fHZQYGhC066Dk4SJ62isuK1zoDZv+4/LHy1vP/uDKFcvWbXAx uKxk/123in1XPPz/7QnsR14/6fdPG1zWsL+/cgP7zwr2Tzxzhf3cufQKcSs3uaxZuW7denvRzXa/ m6DZs+ugxu2goDmoCzTzFkLM8XFQPmTuxfmbefoEmB30Cjbb7yFr9u7Watw9FI1Wf9hMF5RtjTFH fXCmtT44w1obmGjlrcaa73H10mzfsl/jtlfSePLhZp7GWHNPfbj5XndRs9vVR7N/r7cGEmjehsPm 2qAjVj7+MRZcZJ6tPqzI1iso1cpD66s56HVIA9knXUC8pT6oYITWL9nSw8eX/ra7j4H9Dp1mz3Y3 9lmr8ZFCzDH2gCPqBw740c/4SKFmfHCKNaRMDKmV4yFZZMxpnY5Reoy6kkxvRK4dRp5ptOVIxViM l2I8GEePMY5pKGiZgVETjEPyh2ItFYxHQ/IkIt0W0rA0Yll9aQXGMjFCJkdm2pIEBfushKXaKDGQ KKmfADkpkibBz2ME6XDySDn4iLUxqtDBEMf+fkK5IyRJhJhMO5JGCEq11mGkmDeacUqAOeSIIC0g BMZaYaQQY8NSUJw1pLK1nKTh/CMspLiasRin4UMTrPmQOJKQgQSXFJ5hg3FJSKjq9H5mOvmQmYhx /HD2/qNTbdWM6glq2amFhpyeGRhF9lFDzYSABCtIK9B7Lxmca8CY7WH2ezAWiusZd3QsSRhldUxT 8gdnSlmtk4WEYgcxvpp9vW6clFLnJITkjPQxRFlAtlWKyR5FkhmZJybRMXCSrCkaS9cEowM5JyZj lAnH5+m4OqQa2N/hfcMteMnPHPKI3oYQc8hoQ4bZyyfYzFvrb+bhrWoguaTDaIIUQXKOBw8omoPA GezXazA+qlMiLfTs/fAB7Jqy/4cU5p7dBzQYL4WsqxBaZMuFltjqDyVbQbrbC/KlXv4avTHMAtKX 7p46DcanxSPVY30CYi3cD8qanfu8NAcx3uqfYi1HVY2W4mvGipGFo/RitDkQDT7GeAs39nNuuyDN 62cGqSK8DkgS6XwTLQVDjKUQnGythuXYGSKzRykJxWN8s+pgczOU9DpnHDfXs/fLXoO5klzrpGa2 TzHkdrtAysCQVOkEeUaSs0opc4L9SBFJNnxokrWa1jqZXd8pCmQpsk5MVZvubFTqbqwxZFVNws9I zHakqGQbjBSQNEl+B43JmyQJWmfA5n1T6ycZYzPsDXHJdobkcidIFpAkw5E8B0hGCP5HrCA/CBkY 3jfUQgiIsiJZyPBsWzEuaxTGKY2Zx6dizFeOz3dQgjNtSCIo59gUjFypyVVOckSmrXD4iDVkuWgU h9k+HxJlKQbFWkHyQUlmtpFYPBYj84ays4uVqkvLDEnHnOXILDsxOtMWdo4xPsgRYRSExvRSGp1p zCGiYBRsU83pnkGyV8c+3CC33N2CMUYpyyQVIcTmj9IZ2L1g9kCjx/HMnjF+W9Q7C1IKhHOLyrCl UZPUQkdDbscMKaFkjBSWNJJGSTD2yu4bjeMFR1hJGV1TpMh8O285yHzvDnfmI/dqtAJbb4ZES60c Y6GXw9m9jLfk2IdWDjM/6ClrPD1EE8LGGGVBkjFBSWzNB5h5c0YN5Fbx+iDXKgZmjcD4jRBZPAoS fPg93lygmY8QYkYyyuw9YGRZSmwYJ4Xk2egMcRb4G5ClwAiyEp5rB1kIuj9hGNUzjVZDbhK4IzE8 ZaQSVminV2MsdCrzo77RlkpYnp2aXDveEFfhqEZm2KnhKTYYRTWmVjlLARh1SLXGmKuUUUOjYpDM wKg8uz+2hMZg94HkeZIrnNT4MkeMHpKUXmLjeLpPGU0T5arryzHqiFFsjKIqKey6QoKC+V6MixiK Ty8w1FxbZTh6eqFKUg798wwZGInPGUU+kPlP09gu88nMZ2JUBnZFY6nsXonhqSMxdg6bMSQVjMXo Ko0fY7Qkv38WRntoPDWheCzZG/PLhsSKcWp8yVglLscefg6/i2SxcM/Tq2h0lMa8jw7MNRSenIu1 phb1z4HElWm8b2g2jYcV9sxQs9umQmrHmDc4m/4WZA1is0fJOa1TMWpG487FvbMUjPRhLCSrcZKc Vjee5H8h3x2RZUvYGJIabpuGUTU5s26CkpA3Gusbsq7wq5D+wmvljexewh4xrsN8BuwT8hRiSKQV Rt0gCwG7ct/rpXE/oNVAwkkvMlvcz2sOHjBq9DJ7PvNJfECcld4QbA7/Q7IDIckjYA== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B JKe9p9Cn3CahPcNUTr2R5EGNpfhOhxSLerNR6JI2C5O938LPGVbH/W8vRVpdPPFxeQzaquhBl4W4 oEOCX/2kjfoRiy7aRPhkLcCdI1TIS/nLETsQezhswn3wi7ZJwVdtk7vfD5nkfzkoCL69lO93c4HA NXmm8GTARDQuhkh/jCcCaG8+tPVZeOCDldi54CnI7rGAO0vRvlLBkQtjDGEeZsCVAKHIUYHwypqP JzXvJZPb1RE3G/GMWJ5QQRsuvDGsg/Z2Eck1+7CrrRpYTrsW2i+OQ59CeKXNJ89HqODnw6bjF2Qz hLEwzueOqAvS6nebXB9WF94f5mGv+6TE8z4J/mrQjCrqPow9GBbwb//QwZ8Oi/g3ftXE7PwnGlPm cjyzUwpo/xae+1lf8rTpqGn1e29peaU78XJQwiv8h47gEcPhhr5fris4DNarLgfrJi+Cj/OBjhEJ +LYXxgiOXhhjYnlKEbM+P0YgPaeorqkNDkL/eXDnXlaPDTsbPIWw95zIN7eRR7GCPuk4QexwUZnV jLJ1Hk9ZnlSk7RzHI1YCndfCE99pERMFvSZYQNJ83ClUWZDdtJe42qeLuIbE+ZDptFuEKpHdpCV5 UmpjWfLU27buXrTZi8qzxNVhXbQHjfK5vZSQNewiQu+vIS9mLsajXm0mwu6sgXnCGn7eF3V+XNkm E5dYZb73tbm8kJfLBGcTp2tpw3ph+z6wf6cW0NirB4z5VnJonyX/eMD47Ss3gGUTZoDlk1XA+mnz wQGYf6D8ytQrfYko4u4mtCdPcvnhBiqx9oBpQP4a2uykIl9IA1J6TJFlESItjLP+00Q+0fOo2Ifb iIz3B4UZNftgLr0Bjb8gqXa7oOCzPnVnABdc7TiAdBSI00FTke4CHvV0I5bStA9La9pHXhnUY+d6 2J3VxKUrS7D4yh3krU4T4l6nEI0t8brHnHzbaY0/7iNgTNyL+eYuEBz3Hc/Fj8nr6hBAR50LuIhz b+s1Dj8dMQ13y56LuFG4jcdYLmELfccJefxM9HRoCwsJX3iEvd2I9q0QeSOGZGDBKuy4x3jstN8k wisTxvM7MB+Mm0U4y376yLDCdVha1T4io12TuNFjSN78wMVz+7VZ3vbtPg5xr1+A9mkIM9r2C2Ne bODnD6ujfUColkXXfBPPh6WCK6MH+DHvN/Czvu5D5487+U8VnnQbTwTfXSXMGdHAro5qIm4mFnJn JRZ4b4VQVrqZn9W/l3fju5rAMVFZl2MOtq3aDDbMWAp2Ld8E9m3eCg4dOgT0jTjgkB6MbTA/NjCh gAGHAHo6XKBnwAM8y5MKQqdoZcQeRP4F7dFGrEXE+iNxS3mMD30PZi3P6sfFv9lJZbYdwrPaNRCz G7P3mkgE5y4nr7dxJLdqRMh2ycCcZZRn4lzExKJvNApFD5okdGGHmLg1wMVyPmpjuV900Z4wPKl+ D+pD2jtyDh58dZkgpXQ7cXvQhH7aZSW49ZsuP/TVamFo5Xpe5uAuk8yhvYKAG4t4Vm5KPPqUvIHQ So5ncV4Rs4+Ywj/qOmbPll1g08KVYN8OTaCrZgT9pgAgjUjEhhdfur5aklaqI0qoOoh01xCHDvEK +UIpMOESgNXD9Iyeg/b6I+4LHXRlJdpHCuPAQsJdpkr4pi4QprXtw2+OGmL5H3XwyGcbyAtJqgQ8 EC+edAxRZvfkuSfOZfObmHdbWK5gcOEaLPbFZjz66UYiIH8JHnh7ueBqz0GsYIBDFPTzsCtftLBL d5chXgZfelqBSxyR55s5K2LHAieaIN0GGvpne9+JiKknMHNWQpw9xH/Ej3iPI93T55GBhaux+Mad yL4Q8xfmFQuJ0yFT8VOBU3A7zwnYcddxiB1J+t1aJkxp2cPuQY58tEGYXrEH7a2E8c9U8qDWii5s kUhf1pyk3zQdwQsGTIQJ5dtIGPuF4Y/WoL2JaP8a8abbkp//VUPgnqYqOBs9TeiTPV+Q801dkDes ifIdaJuagtwvmogFJjx8WgmtaXDFVvIspyWxchs/o3EX7pE118TMSVFzvyHYv34POLRPD9olH3AE OBCILeWF1rC2tPeehNu7TOAfPq2INChZxouVoxLuFDODCn6yHjF9ENdV6hg9S3zYaZzpYefxIspK XnLYabzUO2spmVS5D7GeEBsDd09QxQNzl2JZLQeJjAZ1MrfDAO1zpUKur0Y8QTyrVUN0o0FA3Gnj C3IHNfg3P2vij4cIUXHrCdGLtiPkjT6uILdFnbyUs4z0jJmNRd5dK7w1qs/uXX7cLxYW/AHrjoat Asfo6ZhjjDKWOXxQmD2khseWbhcG3V2Be6TOEVy8v1R4PkFFQ4MDdm3cDnQOGAGk44m0vgQC+Ahj j0BqLc8yP/yvsYxO4rjjWMRMZe0S+k0yumADkdOti2VVHqAd/aZR9i4Tab+EBXjM001kxJONuAz+ f3kftQXXetUor8R5xIXIGZT/7eVIawN3iZpBusSpojhJeibMYZk6F2A9eB7m4r5XF5EeCXNYlqRz zEz8pMt4/KTvRJa3E/RoNfvoEDEdO+w6FrHm0WfQPnzEqBIccRmD9kkj3h4V9GANHfJsI27vO8kE s5LjCEwBsmfshM9EyiNtHpovgvyPWoJbw7rYtX5NLGdEW5jRfoC6dHslYrsjTgGR3aWFGGuIPYQn /GRYY3k9ulROpzFZ0CEkH3dKiEcdlODasAYR/mgd4s6huCFMeLcNuzNkjN36pC+MLduKuWfOQetq Qqc4FTwE+szM9gMoh8CS6/eg/eOI54/YkQIxnGsWdgrYhQgVtDYgzOo6gMtKtmGHfccZ6NKwDtIB RoY0oM4GTaMuZS9FbErKN3sR7MtZ1PmYGaiPBcfdxglMzynyLU8oIM0OPLlmL9LqQUwgUUjeWiry 2VbE1kG8T5Zx7ZW1CLFHWZY2jBWCpOJtgqzW/XA+7iXiHm8hE9/uxlMr99FX6g0keY0CKrtKl7hS q03kDujht3s51JNuU7qu3kXaURYsbXzvh/bfmxe9dKIetIiQzyXc42bDubuduDFohPbi4jd/GArc 8+Zo6+Lg4C41ILQLnkRk9GqSOb36iC+GeWXOFQYWLhc6xCujXFRHE2m2mgLEt2G5kQG5K1k9Rmu3 sfSpkGms1sMF2SzElEe6SkgPD8U66YPSw/StBgHiwhAWh+HrAdMQEx2/PmQguDaogdhmWELTLjS+ iEWHNAuI47CuPHVxCuGVPo/wgXEW1hck9BWEq2wW5Rw+g3CNnYV5wfrIIXw64RChTJyLnE6f8JmE n/KfjMMYjHRxkW4IqwMqPiFPOkXNQPtbsexhDSy7Sx1xPCif9IWsVlEYrHMSS3chfTGkj4d0eZE2 E2IMkQ5+UxHDhbjZbUQ/bBWL7zZLqJuNAlQjIGY0WjthGULBN1aTF9MXI9YTLnu9FbFnkDYIDusk PH9EH8sf1RVkduxDcwYxzCikP3PacxLlk7wA5S3Y1f5DpP+tZUh31wTWMqgmQxpAZOC1pchGEUMD O+E+nsOXIJ8gj5jvwqOOY4THPMbh3vkL4dxWpy7dXcXhWQLtg7rAyIQGmKWDEu2bshBxxBEHiDjh NRFpYCE+IWF/cbLAxkFJ15ACxqStHOyLBYg9hJiuuPlpRcSSIVl+9rVlLEsFPV7KW0kHZq+gQ+6s Y1kpQXdWYbEvt7CaIld6dMU3GjHLe29tbR6+OGt+t9yaym7RZ3kUcKyp+22EuLjZXtJVccm8qygS 7ZVDrBLx7XoS7ctHegxC2bONQliDCFPKdwmyBg4IQ56v4h/1H6elwQP71+0G+rAmQEwnNm6e8ptk hPSIJSfleRZnFQ25ltBvWgLS0mkMYk9ZJb4xME0qOsSy0475TkSsKKRbghj6pFPkDPyow1gUtyX3 qqUW98uPUVGPNyMuHWIqYYmvtxEFI3zi7hcB7+qXvYR/wTLEsCdCYE4Z/Wwz6RCpYiK2lkO5Hhlw cxmKs6iuFlicUERsf+zMpcmIEYidC5smOOEBfabPRNIO+jrHIGUa8SadE2cLDzsqGRvDGCikAOIk sxpr0J6QjhVae8QQSwjGoZ8ap0nzkY4B5egzlb4QqIK4jKhdSAcVsbjpwBurEK8OxjCNn4ysq0sR 6w7pFrHMKIfQGYhjiFgfwqzmg0hfgNWCRXqqMa+2obyLutvBjgN+2nuS0MxWATM7/lO3ETGWYawU ptTsJh3jZ3BFdvImJPSNhLUcaeM8FsUQ0j1xDu4QOJVnasdqSAus7Nh+QJpnJmZH5VnOhk/mAhQj UI7C4dEAtzilhPSLYJ0yi/aMmoM0sVA8RzqsuJ3reLROxqOPycMcQU5o5TKGOBc6nTjsMlZAHWM5 RRRi5btHq1KBV5fDul0NcRPJK416REa1OhX9cAvLvAu/twFpdiLtPvH1BqHF8zfnrF88czK9WSNl 2ZAxr7ehOSpMfLMdxXL6ebsFXdJxEu3TQzU84rgSZubQlx1VIByjYXxMn0+cDp2K1qpwl4RZqEYw ElrKqe83AntW7QbaasaAb3VeSSCxV9CHtauWHg/m0jCHFNmy+ts8obkcYnIj/jTilyL2P255VkmA H5bHLc4o0U5hM4jgW6uQD0TcJjy2bIfkZiMtud5O0KH31rPsQr/kRfj1HkP6cacp/vQXyuQOo4Nf ur+CjTtIn8wlcTZ25KySEY8PkO4s2lePNOD4h13G6OrzAfKLrE4ZzANI10gY0z0mIG1O3Pq4IuJi snqV0L4QE4oroAFhcUyRPg1tzMFvGnkaziWPpHlIjwCxi0ThBRtYLjPMoUkLeyWWVxVWuEkcensD 4nIhzSrS9uQYxKkjE9/voUNvrkN8w5/6hh6TxKcvTUN63UhfA08t20tm1Wqh3AwxQ1ndbM/4eYiD KbrTIpI+qTsqut1E4kmlu9EcRtoEGOxLpJuKmKmEc/QMwi5gotDqnBLSyqAcolmNTWRjaF7yKAs5 7KjTGFZLyC9jMXEmYArfDOYn0N8h9i8Baz02ljtGqiDWu9gnbxmrN+ObOB/pPrGarqj9sG5BrHSk 1SWAMQLpbRFnLk8lzkersBoGXmkLxBdvrWZ5UmidM+bBJjqrRkd8rYEnSq/XIWVPtyK7pOGBvjNH 8ZxIKNpNpldooHpQlNPJwbJa1Si3JNhP0TOQpowwtWUPlvtZBzEnBGnte/BLeUtoj+R56Nz0D+nA +UQC4pj/ROyo13gT0Ql5zMZpDHYc9YWjkj6XgjWPFti1cgfYs2En0NZAXE4LOZ75cQXcMUqZuHxz OeEQOh1x4hFLldURdgxUFrtFIu2+6UjPnMsRAcR9YvXZEJ8K+ld0PQqKeYgtRGXUaSEWM+ubTrtN EqZV7WX5Py8GzYnHn0RYctdepDlG2AdPgXND3hDWXsYmOEA2iGd3aAljXm1EflJXVwj09LgA6V2x Y+AYNgPpTrE6TkiTWWouj3jHJpgYCGgLecTyZhnRJ10nUfbnx2Pm55RYpjz0h1Ry8Q== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 Lk8PFG9/ebLA9t3VPPHDo3ipsyFarGv2Ya+9s+TvP/XgOx6FWr6+k2Xz9kqu07PDRe4dFQVeLcUF ux4X5Hi2leY7Pa3JsfhwI437+CZS1vyHs9mZvxmi/iPtSB8uhlRNUJQ9X8Xu+6DP732vD9+G2CUL vTTBpOzTUu7Wx+2WXXfSrJ/dUFs9vpVo++Jirs2La7lCU7u/7O7vVkYnu9eYR12aaGbj39tQ34Jh WTtNMfjQd9KpJ9bWL67luDw7UuLVtmePQ+eZYouW2njENf5Ih0Lc12YqniL36fr9XZZPbiSorjXs 4A+0myiPdIrwM3xXW7jzs5o8YnN5RfejchIeJObCBm1fH8+2+HgzQ/n5dpr1mzPqgCdqapM1D0Kz jz8Iyd5zPyLHvaMsV0ns1vbVqWyHZ4fzlO8bU6X3HUk2L6/mcK0ffM1Od29V1Py+SVb86gcu8vxU du8vmy0vNO9Unn/hIK/6l/Xy1PtzzbKa5sou/capnjYl2L24VLC963yhxdumTKGzNVx62RK37fW9 bOXLpiSu9oWL7NZnC/NzfzORXXyt4O49deYannrJmn/bzr16EooxsXl5Pkd8VBdgeuovm4wrHy0y qf6w3OjE31cZ3eg2MGv/m6NLZ1V+eX14XlFDREFSc1xRRHNq8c6OsmK7VyfzlL80ZEg/P00RPj9L En97mmTz+kz2jrayQsen+3Os3p3LNH/09+0mR/+2jjv4i7F06imJ8x82CfFnZvFpdxcBu3I1rw1o zD3RqRQOEvx3oFNuUfVEpix9ps8XNfykyL23VLHv0ybp6lMXi4a6cGVdQ7Bw/o2VrPova2VZtfPk qbfnmKnvz5Nf+ChXPq6L2P78YpH9q0uFqhd1yeLz5miLj3VZu9qKi6MeJ5dEPk4uLm0Ky49+nFyu 7KyNZZ8822n1/p46rDW9LLYlLjezNTy3qilEXdMclHmoITiLXG92bH1CTtL9hOykhrgc75a83G1v zmTxb95Esg/eu3GXPlgpL7Y6K6+2uitvP9otXWx14I93sPzBDlPxU1uC+cduX/7Xl7EuHfsLPTv2 lrp37Ctx6ThcqnzxKIGt/dnJ7MG/KmXNf3eQN/6bo/GdbhPDK90bjSteLTHZ+2mFeO/prm1vanNs Xl/J4TrfBHC1L125B10eBD87SJXtJtz+51vFk80q4V69p2Xr9QSHZ0cLbLrOZzs+O1ns1V6xx79N nR/9KDE7sCU1K6UxOquqPlR99HFg1o3HPul1bbtT7zb5Zdxq8M940OyT1vjIJ62O/Fzf6Jvx4EFA 5um6oKyqurDslLr4fPfWijyL99fSxA/NidavzqvlT/7Fw/x8t5ni5L+bc0d/M+fOvBXFsy+2Cfs+ mXBlv26Q9r1kuRO/sULdi13Kt+0pwsvOaP7l80jl+8fp0uf6dPbDm3Dh564E1fsHGZZvG9Vc58tA 80t/NZdffC4XbzY7q9rvxyrfN6VZvr+jDm9OLU1qiSvf2VG91+blpRzl27vxtq8v5W1/dazA/tXh XN/OrLy0R5E5x5sC1Xcf+2bcavVJv9bmk36bfL3xxDf9xmPf9ItNAVmnyLwrbwzL2fMwLKe0Pjwn ujEpT/X5ZqpxXbdgkvFghvm+7jXCiQ+idPr9NuWJV9bS7Q5Pywe1EZatd5OtumqzxDttHrKaD+vk le/WSTXtMunsM1vl7bZd0i0Sk6/+Yq1sfhyV1JBYHvJIXW719K5auPHUSX7wr/rmxS3LZPt+2cid fysK7W3hXm2lZc5PD5dYvr1LfOGNXMt3tVnSry1pNq9P5fi15xQXPQ7Nz3scUezeWQ== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 3CG2TZpFYvNJ5zGkHi87pkhw2AmbUVIcD8kkeNIv4ULyveTfAd4KudQrtxYTvuGTvZyoljhBHzje /6vQa4XjLPAbUNHB9iH1zVkr8cpeCXsLNWuo1RPVCMhjQv0S8oXQ4wt5fpe0eSQvBDVT7HtJLR9y WPD/YZzBXbw8gfhRUEeCWjPYqP+DNUQpAPLpUOdyTZxPlMnAXwc83iAJvL8WeNxAPjFqDijAsxkf dKikBhVQbxSf953InrQbBa8Z45idoPgqhph2PmAyWSusB3MDsF3wL5DbprE/pRLKVSCvQtbkgF8b KL/7YfsJer6BKGD73l+Bv7cUOBv0h4EyDZPStIdKb1KHXCjrmjqHc0lWhj4ryPVQMSVbxT4v15K8 ND4b0K8HfJvgXO+bS6BWTJTZY95tBd8Atg3Pe0C/CP4bK8RXbpJ+WagvQJ0XchrQj8OE5m9gMjq1 RbFVW8VnfSbQ5odJryTkFKF2DeddfOXOEsml2JlElcU6eBrkivAZWEjqQLaB5LkRUvu/GDiZqDhj /yb1uLaUxH7CP6JnkZ8fdRnFHXEjF+lRP+w4EnpRII8mMjky0FNvfnIw5JaEJicVIWdMnbAbSR20 GgoK4qBQwjkmzGYDctcx4SWb4SyA8hjm9QpC7GMBF0NvLlGfg3rZJb+poOoEfSmc/4u1A/cgdDrE VPKaoQfJ+8kqJqR0M6jGEj6PfSvYNfSJmrjEzye8FPA/KH5gTiy5mrMcaooD+YDUBaCGJfXMWckF 528imBVwmFWQErlIn9z95QQHQV4Yx0viFxzjfgJ74QJerAcVLpK/xHaP7+sSUAYFRR1QIwF1MSb4 8TpSQ4H77Z28kOQEoSYEdUfIGbslzCH4CcczOqFkFxPxfCOpW510HwsqZ1Dnl/jdXQ35NDbwxXpQ UyVq9JH5m4hyX3D2GvDLdBT20yTW4Rh4NR3H7BtLCaYFhQlQCvK8s5TE/rS2vaKUehX2ctpc+F3I H4riGndATYrxz18L/IWKrtgqTmsyYNI699KxdTuI3fs9ALW3TXRs6XYcszaBH4Y6KubHGyDnLXG7 tgD8D8Qcqce95Vzgg9UkBwoK09frjOiY0m3M1bR5ROUBclVHTgwh8Q7UW5Lad9OJnapsYNFGuI/g H6GHlQ18u565GDqZtYmdxrlfn88ktuyWpDTogzI6yTfCc13AQaDmCXgY8gXOqcpQB2QPuYwkz6o4 3pgntU+eAz1kRPUH1DmgJxl8sG82xhFP1xDM4XxDmXO5OY/1zl5KheF/FzCrVeRU6lzgBNo2bhrj lDmHCileT13/tJe52WMgvP5VQ5T9w4B+9c2Ezv24j8np5Zhrn3Sp9E976LQ+De52h1D6pOGg7FXN aenr+hPswzYpm9KpxUW8225yOW6h/LjNKMhLkN5VfM9A7RGf08Vi36druIR6dfm1Gtoso1SyL6mU MkssFkgiC1SIMvE5v8lyuxhyj4FX0rGVOyA/I/F7vh76Mui4yh2g+kM4J8b2XPoHPTajS5dN6tFg 41t2Q90ELlAqIn4uqVGFATXQxIZdVEQxyUtzfo9Wg/+k01o1wLewcY2qoPAICjlgZ1KPW8tILpX0 i2YtBT8GHzn3GwuZwCermbD3m6iUD7vppIbdTFrDXklGg6E4rU4PFB6p+Nqd8BohfwOvnYop3wZ2 AnZNJ7aqQu8Ic61Lh73VKACVaPbuB0qY1L1LFN28jcr4rsk+7TSRFHz4mXvTdlz6tPEge7+ZFd/C F/5dWVaVCXenQSS504D/v2ZKkl1vyt1vZ+mAorV0wLs1VETdFkHGZxUmp52TPa06KsupNAcsI8us opi0Lm1RerMacCVQQYJeAzasYKs0pmyP+H6zmLvTKWIjy7cNKIymL2Ljm3aLQt6uoU9fHQO8m4lv VDG5V77fJKvyAJPyVZPxf7MGFHAlns9WEfW1mBoVUtO6+mgFxGOS7zxgNRT4IBdYsAliKMEhYUVb JB6PV0L/izypxkiS1KkNOSj28r1FmD9NYxzTZzPO1+ZQbjnzjKJq1hrd4zVET3+I6JffZNSb38yY vG8Wovd/2ycs5c2Z5i+XxJ0frrBNn+yYsq7TXH7PMbh38tJiZ2lZlZ34ebcF87hPwjztlUqf1x6T P6k+bnK30lyeUiWQRVdoyOJq9rIJDXuw79kO+0r7P1nBxjWrSlMbjU1Ta2hJXIumxOvJKuCKps4x 82S2ftNNf3afaOKStlAcBLXjF0SpCRQ8oU4H8ZG90WrI3uw15rJbOC67Scw9bd0neVJzUPyixUJy vZWm0/s06dja7aKUdlXuRquAu9vCsngPqbt9hlTWVwP25kdjOqvPmMtqZZi7HULuYZNEcq9RKsup 2m/6ovBnyYNyUza5VVOUUL2DSu5Qw5cq2Bzr/3oN2CXYGJParilOadaBeq04oxVs00B+rYqW3ywT sylVmnRigyr4Pi4J+7+4BhWoWVBJH1SotK7dwsz+Pcy1Hm3mZoc+dadPj771UZ++89GQfdQr5552 Yz/QydHPP8q4V12HJDnt+yS38RqzWmhxTq1c+qBxH/egScrcbRdAjll4/6u+KPurAfX4M8Plfjwo evN3U+r5V7G4uPmctLj8kumrd+dNn7w7Icsql7PXGvXZ9C5teG1cUO4GiAUkrmB8RL/4KBNnd8q4 xF5NDvuCfdcLTbm4FnXBvuOKxubnBoP6JNRCTfLeWMqflZ6S3O00EWd3y6W3WiWyjGZadq2WESc1 6kjSOw24tE4dzvPRclCz4q7eXcyEFG4iCqJBuRsBv0iu4HMeULhRktyqI0n6oM0kdqoLM76oiaJ7 twqSv+0UZPxQMXrDU4IG/qio64+L0t5qH3Fv+1Wq6stJuvGLJdvz0YXp+eYk6y/02991L+RIy80I aV+Nr6Tzg5e8rdbPtL0k5FDLixhZTbkbvo9S5vXXfeLcziPSwlpr+cu6M5KsJpn8TpWpWU7J8X0v cy3NHhaelt6rlFPpXzREsc3bxNfbhfKcqkPcrW6KjqzcCvk/yBmL05sMsB8ykqdWisxulx8wuVkp B77JJLVqcGALKW1azJ0mgTS7wVTyovqI7EXdcVHW73rUwy8i5kmvXPym5bQ4t+MI+7Rbzjzs4cTP Ws25vJYjbO6nA8yb3oNsUedp9n33Kfbt58N0/u8H6NffTEQvv4jp/E9mbEnHKVlL8VVZ63sPSXnJ JfbZBzMmq0vEZPRrU/EtO6mUT3vgPLD32hjuQatUmtNgxt2r49iMZl0qrU1dnN5sKH9YdhDsW/6k 5Kj4ThPL3O4wZq636YvvtDDS+/Vm4qctZvTNrzpU1kd97lYLRWe3CqmHHTT9okfO5H49wL3rPMWV tP3Mvu84yZZ9OMuWt52hn/dJ2ZwOFmIT/bxbQt/7IKIe9ojE9xrFTF7Dfra26Zy4vcHdpPd9kLS/ zlfUyJ8SVPEWdN3n82xtmzX7uvsAnflJmwnEMdQmfBrwMqhpEl+OcSnEB8hXCQIrVwqu/11dnN0m k70pvWDx6MUFWXS1Juv3cIXw1nct6vY3XdHLzyz1uI8RZvyqJoro3iSM/bZNEt+vLU9voszuVhyR vymwMikucNr3/o2LaW6RjfR51THZ7QaJJKPVmGCV1G4t4GkMjnNccq82xoSbpJdSZ4uiqjaLcn4x ogq/mTPdnx2kn977SPuLfMSfPnhyv3R4iD/VeXJfe66wfT2u0r5ivyPNGSEnG5PC3Et9ooJKLkcc arsVRvf95ijtafA7+OF+pGnn+xBpV5OPrLXBi6luu4Dv5yn2db8F97L/gCj9+24qqU9V9qL+lGl+ ib38UdMR8auug8z9fpp90iGVvq+3NG0q9JUWN14Sv248Lils/llWUG4lK6qwM63Iuyx533hO9rL6 lORt9Slpbv0Z7mWbBfO6fZ/0RS22x7Ljsryi09L88tPY55kYp3RsE3rdXyiIrFonuPMPDcET3pgu 6Dkoaal1l3eU+Mt7KvwlHfVXxT2NV6Wd9d5M8wcbYdHfzIRFf5hSRb9YiMq+HGY+fLwk7q/zkH2q CLDoeBAh/dTgy5R9OMO87JSzN7oNqcC3axj/V6vp0OpN9PWPuvA9ybM6C5OXpeflL0pOybPLDsiy 6kzk9yvMTbIqzNiHLVLu8Qc59bSD4142WUjy6k5KX9SckD5uPix51GpOZX3Xpx70CVgcf7mXzRbS srJLkupKR3lD+VWzjoLgIx+yYo83X4891H4/6kDPywhJX6WHtKnMXVJcZcm86jHl3jef5horHU07 3wbv734RfrTlVsypxqSoc7WxUeero8LO1MdHHm3OCDPpy/Vn+7tcRVW/HBM8+F0f8j/SnwMmSRzS 5tAJH1SYa306XGqvDvg2iF0ix2dzjBI+bmLz+w+Ztr71N2/JDTGrzvc60PY0fH/bq3BxRYONqOC7 mcF9Xk3o9myeYL/NUH0dE8QwFgoS+5tzpdk15uZtr8KOt9yOO1efnHy46UGsSW2hB8Q17nYjLblW byzJxvfp9fvzpjW5nvJXZT9z1xuMZLebJOBnuNZ652MtGRHY5iJi3ruFeRZ5hYMNHui8G2rSnxco +/TG37zrQcilmhBikxlFjqF3ixxCk9+7hJ1qTAiXYbs90JEderjlVoSst9xP2tvovb/9ZRhb12cl yOH16IzvWqLYju2s6+NFTOqXvaZPqs7KHrcdptL+2EP5vV8lCK5YJXr2jZU3V3hatD2LOtT6ONqk uyJI3FTnLG2vvbqv812orL3Cmy1sOy7K/2QifPS7kehpJ82+az7GljWfE1V9O8R21DjCnuxvfxwm qSy+ZJz9q5ZhSuV6o/S+rQb3fqgY5PK6gobfjxxvSotMLHWOiClzifKuuhrjUuUXe7YxIdai436E 7EtZoPRzs6/4U4u35Fuz9/7OB6E/1ydEH2nODDPreRQkrPxxyOjO7+rsjS+G0uxmHOf7tMQeD5Zz /gXrAbuyGZ26JObea5KJb2D8d72JMkmrEcniW3S4mLJddPi7TfS1j1rSl83HTcqKnWXFZfbix11m ovRfd4uCC1dTfm9WCkLer6ae9FOy6mKXQx+exhzseBYtbyv2kXyocjfpLw4+Xx8b61btE+da7RMb X+EU6V7tkyhrKrzC1LScNet9F+JUF5BwpfZqeFCdc3hahUNIRpVd0M0y+2C83tArpZ5h3u89Q73L roZdrI0I39f1IJjr6nJlinpPss/6zGRP647JXtadkr2pvCB9WneYu9vIcDcajSUf6z2F/bwV97X9 yvHGzOgzjanxpxqvxR1vvBUva6v0ZAo/HxUU/U0mqvpxmCr/+xHDt7yR/gte0zCpY6NR6sdtknfN 5/d1FYbt73wRxjZ1XWIL20+wRa2nMX4+LE1pMGIzP+hJ7lfJxe9Kz5jWvfY83HInan/r49AjLfdj zzUkJdvUh0S6V3qF2tb6BfuWuwenlTqG3Km2Dc6ttgworr/gV1BhHZhfZhNYVGXpXw== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B WKOfNGzQEkEwWmOSorDVo3mc6mN+qWEvf0jc8cb+58J4H5fc4MCnD67GVjxzi6957Zacm+sYBpzB r8Qj8lx9dGQ+5gm1JZdIHlLy8eVl1Tv8wunTV//bsXwwwVqAEXH0Goxj2Shl7PvnI6XB87Cfn4Mt cgqxzUn4fbLCVLy+uWjaqPlo0qi52Dfia/wyNHUy9v/zdZDySjOkvMoCzV17DC3Y6YAWGASjuTre aKXFbYXN7tWjdt3m56nX8aoYBx+XtT53O1mZ5Bfwyif09nPXkLJXTmG1eG1FuQ5BT4psgz9UWAV8 qraJ7m20iS+ptI2NK3IJNv7ReX6lxPL/umcDGPg/vv7Llwxg4RF4t0bhszYZ7+F0ck1W/AkpjVtN 9kpptjq2QV00A9vhT+tk6Kc1LPYpBmjmAh2kNEMNKc3VREprTNGcbfjMGfugdUezFDf6143Zdo2f rlLGr1Mr4zcbff3jmEX9taseBV5B0XmXw7DvjHiFsTS20fDGCruY9irbuO4a2/jPNZfiOssdEtrK 7CCXFKLdxBvOV97yb+2b4r/4xwH/MRavBaOP0UuR8k9qaK6yNl6HKpo+Rx37ChU0dRr2H9M2Y5+J zxk+a7Om70AzZ+xCs5VU0ax5hmj2YgbNW3cYLdFwQqtECWj1oRyFdc4lw9cGNI7c9oj/aUfSjxm7 8/l1Wh28oehzo41JywN3t9dBQX4vfENKc92SC/Idwh+/dg4TFn/fZ/iM1zG+j/lF/vd9XGuzs3Eb f1yziN+leqVgktKYef/jugZi2wiCDsFLjiQoCyL0DDQB79PUcSvQTByPF661QMs0LdHCzeZo4VIB mjdnJ5qN/eXMiSvxBTFvPZo1YwvGlIZo7goGzV0jQYvUzqBVBj5oFROJNhx6qrguoG30lof8DLVe XkX9A7/boJ+3MOzmj3JdPW4HG28FHq9JD9/ffj/4eH1GZOKrK5Fxr69Gnmi4FmPWVRjqWB2cWFJi 7d9TZhUQXegaureHp9fqnf4f1zaUrGcMic3jkRLxH6MI5h9FPgIGAX85echsjEFm4fOohCYOgUsZ TR67Ek2fq4vmq2B8fPr54J0BPVN2XufnqDzllwCeVHnEL94R/7fp20K6J23x75iw1bFk9NaLj4bv 9CydoJbDL91TzasZf+LPGH3iT4q/FLib9Tz0O1MfHQJ8Djg5YM1HwF3zHcOevbMLLi66FNTw3ja0 r8whruq9fRT1pcFW3eH9JPAR4N//Hdsc8WcsB/sEZKw0bCaaNWEVmrdcF63UOo2W0FZosUUgWmGb M3ilx9uh6zzfj1jv+nb46ouPB6+2ezFko3vJyI1ejaM3etSO3mj3bvgmy9xh21zLxux+xK/cXc3v ULnJz1f1bZyqnskv1qrmtXRreZFeCy/Ra+DFwn7+4oXKiGDALLCuDIydHcoDIwwZI6StvxvBPA3Z jQYxnf1FZOh6e4aK+MKg+Yt3/g92qUD2DPz6FCWMh6epoqlzNJDSEiO0ePdptIpyRyuoy2i1JACt P3pdcbNv1dgd1/jZKi/w/pTzG3eX81vB/233rpmw6XC64mqJF9ogDx209fj1ITsdi8fu8miapBbx ddaeR/w6jE/26v7Cmwp+9J/nvhS46Hby4r3eRbP1QhuWGPkXLKHv/mEkLuo8K3n27RB9+w8DUfLf 1LjMfxhLHnw34558NhNnd8vkjyoPS/OazkC/k0EBb6wq9VacrPg/xz3Ih8BJmzh8Lsb669BPygI0 d7kpmr/5GFqkaYVWCtzQir3n0Kqdh9HyDTRavEIDLVmiiVZsEqNNlPegLWcfDdtqXTByd9Lf52lW 8Oo6NbyxfjdvRn35bm/RejNQ8vndZeG3b5aizz9sdJt4bm/6ryt04jtW6N7gN+gX80aGRTwjKOPN RHV9J7n6alvuQ6XT/u6n4eYdL8MkH1u9meo+S8F7XiYq/3GEa292danwjy0rtvZ3LfMNV4/rnztP edO/YZcKwNow9sDnDK9z0qgFaObMTWjhemO0Tus42ky5oq20Ldp+LHbw1qB3E1Te8Ms0f/ACI77/ Z8mnJ47Ur2U2xv/4+rPo90orwR8Nlga/80c0v/OGWp95ge53Xqb3ld/Pfupw1e/gTff65M3SPR48 QsvCd6hePq8jLOH3G2T+scXI4fo04QPemGnrdTzaciPqYNudyLP1SfFHW+/EGhjpI3b/0SFs4PO1 0sxamn3SLTVK+rRR81zsqAVLtxOe9t+9jcX79pPSZrRopRDj3Cto8/FXQ7Z4to7dlsArYdvbsvcz T+v9yu/X+8Ef0PnOS3c38NvUSvj1Gp28hv7v/CGr6uCQzBKH4Mgy5xDHSt9gSf9LZ8ih6GDb03zJ b9Z6wG/YW8JrGjbwZoIO/rSo749L0m+VvtyXD1f0H/CqBiZHFdTWb0E6mhoInqOEPkYqqV6VCXq1 VmKTMkt6InCC2CFnPpPxu644p8+ETv+sxbjcmiu0SVfStfAZtmKdEZo5ZsF/yQX9h20qYpyFMda4 JWjBRjHaYBKnsMO3ZRL4vz2fyXnZZ/SdP270C3/K4BN/QLcO+4JqnjIo4Sm997y+US1vLurjbYzb +WOGJTxn8JzfaxTSstLINWu2YWLnBmHZ7weYni5H4UfeUtDCH9XL/GOTkUe2siCmeiN97fNe5mE/ J4woWksFPF9Bxb7YxNytMpbkvJPKSgoumdXmeYsft5txcf172KCyzazPm9VsTgNr1vDSW9ZZ4mNY zLNrt9P/7bpGYr84TnEWGj98Npo4di7m0RvR3GW6aLW+Fdp87NbgzVdKR++49fef1Mv57fg8Ge59 ye/c6/Zcae/xxJF6jveV9F7xmmxDqc3RDzei5f15fmxfvYuop9vaIJ83NPQMVTI8eWiw4c/nhho6 uI3VC8uZr1fA64g76t24+iZbo8tZP2kLJMhgn+Vgo+t/20Vd/6EtOuU7VrTPZggbVLNFfLddIn3V cJx70WLOFTQek74vvmCc0bdLdP2bBpXepk6nftQQP/6wj879sk/3Oa+65+eMUXMX7yI8+1/fJuKY sWK1CG3lPAep2b0Yt6ecV9X9yMuNP/Nn9Hp5E+yvpUY47tJfvjnT3/pd9LBv0La+NmGLqhbatHUt Mjh1dojx/e69kvp3Dqeb0hMtGyLj93fnhNEf+5wMy3ixTtrHVboer2frP+RVDV/xBgaJbeuMgp4s Mnr4Yy/9tJWl7vUYi+78pk1diJgkNDmjqGssQpT8mCKZkwTz9x0TZjPRddvZ698M5K/rL8jzqy4I E/q3i05eGWVsGTVR70zo6B36Z9Dc6RtIjFYk+fRBf9rlEDReEce1aevR4s0itEXuPUg1rHOG2nN+ hXotv0vnV14u+vHhEv1Hiwv3W62nWd+LYKj9cb1Nrkx1zwX67bcD1KvfpGxB/wlpdb2LrLjRgcvp k1LWcVN11XSR9ratiBWyCPrfBdHFG4we/0PLKPrdasFFz7HwHLQoIncdldGrydztEYoiKjeK7KOm cW7xP0k9kxZxkcU7TNJrGPmbIivT4gI3+fPqE+LsVqk4s1lApbfvoSKLNgq9bs7TPRs6GuptkweP IbmDf32DvZw6fin6aZk6WqF7Cu04dWvYnnv8cu0unsH88hDk6HT6eE6vgxcbVfGm+rf/tk3vgN0Q bT1TtFddiIwFpoijTBX2HbUZbe6UsEgcXrST836w0kBPgDbPnYG2LZiJdsC1dAbS3L0ZUZG5GySv ao4wT9o4YXjeWvqs1zjSf57Zo0d6oo/ajWDMLYfCLFlxfJuGOKFDkw18sY5J7FCX3mzg2IqOc5KC hjNU2m97qMBXK4V3v+rQ+f0HmNru84bt/H7NMl5N5WrRxK0HkxW3HMoYvONQxhC1o5nDNC8+GKfh 9HjS3oyvK5n+PmfoxXGoDIyhur9e0r/PqxhFdKwxSv6yxfA+r2F87ccu4wtRE3bsUEWrlWegdTNn ItFeLbTvxOmRFtZ2U/bbXp4Bz4kZ3/2iwbxtOSwtK7MVPvxFILz7i47w5q8aIu/7i0S2XhOpgLRF 9J16Q9Kj+bzL3PjOHxpCr5eLaOvkaSJzu6FC8/NDRIfPDCHPvWR0GJo+Lj1tkltzgXrexwrC3q8R eD9aaJjUv8kgtmeNjmPO1N1SB4U1qnK0CMfmGctV0Dw1M7RhX+AgNb8qJc0sfqXWa36XVi6+7mO/ n9i1SNPl1iSts6EjDZxSpxr7X5tr7J042yj49gLDpOoNhte6tgl9XyylbBKn0ecjJnFWcdMYu+uz GZsbs5gTXmP2qmsjjR27kEAHxyuBEZLKzBREcjMFxjlqpjAif60wMm+dMCZvAx3xcL0o5vVGKq1b nb3fwtHPWsWkr/Jq9FzWKX42fa1PS/ak8ohJcZmTeelrb5OiQgdZbuU54fV+DXiugroUPNnw/JVR Oi7pUzSvvpi+y9xdccV2Ck0Zo4wmDcd8APPQJWsMkZpD/niNBn6PThfP0l8+OtO9vzoIXvOs8Q1e zcg+arLxIXwvz7uNEQU+WUa7JszGfmAwc8JtNMwU1FfVQJobNyMDFQ0kZo+SZ4XI7DjnjPmmlkHT xIZCtBf/3Bj7DcYlehYVWbyR8s1ZwnhmLWav3F0sSW7UMU+vkHHhxdu4S35T4BkMxvvWYjqpbTcT XbWDDniySpT2UV2W2cpIuyq95Q0lXsY3/64mck6YKYwuXk896WdNGgo9TPvehnDf6zyFP3grwa/8 eRzPTmi38ZR2Nr9F+2LmeFXDfUhLemiQfnTdCra+01pc0naBefyNE50Nn7BHRRsZCcwQeUbD4+kS yuvxEh2hDG1ZuBztWrYeGexWQ6ZSc8X95+0nWpy1n7TvtMN4uY3vNDruzXbo8xU/qjWlcloFVOZn LUFGxy7R5aTZlFfmfOZWmyH01YpufNMURLSsF0V93Ezf+LueILxsLW0dp0SduDSCsQmeIkys287c 6NOjMvs0BXFlGwWBr5caJnVuMsrhNY3u8nsMMn9s1bvx90161/kNmnn8Nq1e3kDnF16q1c/r69Ty enrveF2Dl7yucSHPGb7gdfX8nijrn3QYamB+StF430lFHW0ttHXZHLR782akY2iA6P0XhrJnHEbD DE3QEQF9EcG+s4PBX7C2iTMpfG9pj5S5ZB6IR9IimZ2XEnvSeTRrGT5FlFC9nYpv2sm4pyozDlHT Gcew6SLsC2UvSo/tK3ruTj9vl4ou35kntPGfSLvdXyB93LRfVl7qDH2Q8nfvbJg7vUJhQuNWxv3G POZc0ESR97MlRvm8gOr/Yge4SPsJv0PT9vEEjVMZI7UuZI/TPJsxWvs+v1Hwkb8IvXyCct7cwDF9 6l5dE6Shqo/XpIHUt6qg3Vu3I9EpmxHs9RYDcWadEZ3coCo67TDSSChH8Ey6gBYj+UnbMfAsGpta o21ys1BKnsN1SVSGGRiilAYVOHOU9/WF9NmrYykrv4mMb/YyeP5EllhnAM8ecJn1hg== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 Fm9LOGhglRE67M6+K/YIg5aWZFCQYhIrPAn67+mgp+yFXzXofvO8SdlD6PS2WpUPyi3Gdi6/6OKg zMpK70IvNsf3QyHlgWHP7WoAz2ZFryBVaz+qp3Yucfah/zTUPfNLT1ekmDd9Mhnpvg2s92im+5Qp pno+4WljvMphqpnKs/D8boXBV+vNlsHT3ntX/+mlffQp7r7W8/BhQP/p9XL4rf+0cZdISE9XIMY0 voo5/beb9cm17tPZwscJQq38qMGT725jv8LzFzWhMXef+aX+0/vD2qHB0+iLS4KYxvPKV0H/6VPk 2av/9HXoupaerkLszRV+0H/77fOtr/sUhHs6rfWUhxgbvvO39d8+CXzc6j/NJcJh/adX6dDEAGLs 9W/yWPdp8mg6aek+tR958xHhaWu2AjH74WV6KDzvqHmfnWMKP8qnU5UFhmymLhqhR7yVlJ66U1Pg T5djnvm06zn+0/v5qWgdVE6ahSGbzwXP7wsH/fNG4dTbaMb99qMlfCrXMsGFM196eCn1JOsNOjhw SlJMZgAfBAcnHTds434ROPppXcH7Zvuc86Tmp7oX2jmylaYPQk7o+/yHsFa0cx7l+g== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B aB5dk0sjrs+47tvOisjpBk+L2rjllMFj04oqq+vTik/GYm3GtQasTymoOkfeGOgWQimt0suxaR0V jYhm8TiN1/p2mE2nniH6nbf2w6xk02nZAYJlsbtsOi2Hl6IW506y6bRczho3T26ZTacVAKKOUdw+ m04rl07vrpvNs+mse623yabT6Ird7oYQrWw6rVw64xjFTbLptM5pqNd6l9l0WnazUlbuIptOBiyR jWqdvW6XTaeVS6eXM7J5Np1kVcvvH9t1Np3W7kr2/q6y6bRy6VZOE7bOptPKpSMcZqfZdFr7R+hl p9l0JprSjrLptLrSPeHdOJtOqyvzmsLrZtPtDGKmOuE6ENssm04HYjvOptPKpbOcY2U5m06LL9p2 nk2nlUtnMy3juG42nX7OyC6z6bRyv2TW646y6Uxund1RNp3WDoka7M6y6SzalVtm0xmcvO8wm06L yg3vINJRSnFKkbV2SNCTlRGV3Ou8E1AagGdrXt2kayVB32P7GgxHN/GpqE6cNdEuNqhXp6XwGGkX m9Wr09EuTOvVWYWTU3dKsrMkK3AyVyw0UWC1fuXr/Muyn8JkSiIr0LrT3gwvlVOyQsyyzBSjSZlp ACZTEjgMTMoyOZtNqRp+schh5CxTaRGdLNQWESZVmZ1XWnODbVfmjoeYcaG7dVRyzTJ3JnVG9MC/ Zpk7nWpZykJ3GyY9SiS8eXzyOmXuDOKTpUJ3W6Qp0TJ3W3sULZW5s1kKQ9m2zJ0YC8e/o1nobutg D6r1Xaj9BhsgQ/JG3wm2Zp5F6PQ2ZiH5Va1ya56LXeiGAK+zNLdBrMIaiXRKzXujWGvY8/661/Br pdGpz/g2LFBnJQPWJCvtQjfscK0gMqLzY5rhGhW2zPKJ2i2nylCmtdLcxqu2JugwPVCH6taKTq/9 7DAaCjrbVTRU7cdiNJRxmke7ZaU2pIXMR/fWyb15ks3h9mzdD0PqHJlwS4v9+DacjapOottKdTIL kV3YVcASt7SYWOtelXsPzR3eCgidWcw3sVnIOGlaZGZy2aUEpWJfekecpTo5MkPSMJFBvIpZPgr8 mjQ+3rPm+ivfqe6p3SwzBcSbyZrNom6UnVkqLWutguF8qB/Garlqkfre440zH9dQJ/SjOm93cbhL etnBLQGknzUTGbSiO0g/2sW1Nkhk8GSP1TUgzFIZTMhwNa4CM/HyUxP7xSIZmlW4s5ZfuW2FO3Xu myXKWbvC3aba+HoV7gwzHzcnQ0UvmFu9i37M8omsVsrbLp9IqpSnT4bbV7jT5DAWK1hbr3C3wa3m mP1Ut3A5hhkfu99dYu09UXMU9LJ5Yu29sVVttdbzy+8291PJMh/9O0ishV60vFlrxlzRftb2YK74 xmk/2yfWQi+G98Ktl9+O5fL0D6L50BoaqWIxjak1WyVD+M3cr2VzWCBDWNWzbqF1K0lMSimWdFm8 Nt1CElNrpt6XjS+eI52Zm+02i4Z7a2bJTa3rt1RCLLobuxJ28s6/hl2pw7ge1kpi4kcxnNT2F+nL rCQnl3t49KtzXNUXHW+kGPKV8naX4/qoleEqWRbr5rjmHobGQbOyExt+X/RzXNVRGxtdTcXfcwWd LSxoZhZ0mEetDNeNK+VZLfdoeHsDVqTbSblHISN1FzmuksKO4bXVuWYMCa9HYqKS3XNxzJIkPUzr a9h9rV7T7mlmo/ipxuf2XbQiTPBhGOMFz8lkKJ+c4F2SMqcwWzBld+kXf4vXgowcnsoyd87DyVQu 6BR12Fydw/pQbokrU9NejCrOvfl1B2VKuei11qA2By10Nw4dt/TS8N4MBi3bI/qDlsuzR5nnSp2G d/AbXb7opaYZ5MPFbzJ12aBiahpAjGQ5Ho9u9dLwIl+ezL1nqpeEp5/5B+D9ZBRSTJ3791rRSziM HjiGwbuO3qBtrUFJZj0BMJPUWiufRPp5fqA7qP3lIHqrB14fGVSWwa1c69mRaleRNP1kePJJSMFc 9iy0sznm8euDvpUe969P7BbazZatoUPmP6GYvKJ2CqQLb/tcKtFpZD5d1zWknaqigUpbrR39qM6D VnynW1Qxm64ZMqSf/SO/Wk2zipnVKl+mFWOEgy56yqOf2rRWaJWupkvuGz8yCTC16kkCONU0A9A0 IyEN4eQ0rd1gOSttvdAqgwQwr1lW2hr4dOwzXp/V2B5McdMJ2bSwPkWOFUwqsD7QtaekiPhQ3di2 HtCZXdGLVpyWyLhutWNjVczq0TdeqZlCvMw78DE/+tT5Lxv4YItrObeMaz+9FXdzbk2za/ct2Kwm SzO8y8aif+zRN93GryXUSC2+FKwc7ppW1NP2LMu4pbUswI0uoVXKSgDMrq5sxK7EKC0NP4zVktxi BcrVu+JKqpBpzdNqSxymvf+w3JGNXNrNLYvEz48pd/pRc+s5AkpaV+HLq8tZcNopj9u8qwEEvbLW rQsqP7/V7La4fpVeS3dEyIKP1d7KzRPJVu8f2yL9SFd5k9+jKPnwDLITF6fnekLNgjaunJSC35uk AhomAh6a5+9bTuUcm+RQ8b5xS6mcOok6FpBBncFd9iorG2+Voig6UPXri63T2aNx/e71IGaWy7MW xExOLtdZJM/RdgOxvi6PyMjPX2hn+vqhThagVWOW0MvGWYBWcwAt3aqh14XlinpifeSNsgDX8ydv mgUojmeSA6iswL5uFqDVHECbY5ssQKs5gLatsgCtwpNI5I2zAK3mAKpt5PWyAA2URd3TN+MsQH42 q6uyUJRPXQXg31OUT4nJJllbGxflU1gW/7aifJpeuJ0X5TOr876bonzkhvbCQmma7rwon64XbqdF +TRzRnZelG8n9StNi/Kp7hs3mpSB7kxnY3o31NZ1/Yyr+u0gk2tnd0OZ1/WzfjfUNnX9pKXt4G4o 3bp+xl4htZ68aV0/46p+G90NpVHXz9hdppdfuW5dP+OqflYw2VLIomFVP81bmjeo67dtJtcuohX5 TK4dJSLpVfVbr36lfl2/NfyWW9T1U+65xeoMa9f1Wz9CdZO6flrpiOaxcOvW9TPD5N3U9TMWdDaT ozWrdf0sZKXtoK6fkL+lXdVP7efftK7f+ji2SV0/rXTEXeS8K+v6GfdiXo9v21K2Qj2+XdT1M058 F0+stqzrZxzmpn0Lzfp1/YwttdVY683q+mlTtFDVzzzv1VpdP2NQSieJ29X1Mw64tq2YKZvV9Vsn K21XeQ/qqn66uuWadf22oX3rdf0M0yS9sozUrfoxvsVjjXp8O6hj1d+yrp/Ui9axlWglbVnXz7iq H6X97ev6GfsKbI7d1PXTQ3Za1c8wY2iNun7G582afGyDun7rRBFsXtdPHkG9WtVv83p86xTXNKrH twUZynpBItzy9gaxrp+B/0uSL8aqvYW6fuvdqLNpXT9jg1rkMFvW9RPztzQTTOTWq1WXtFZdP2M1 h8Rb7qCun3FVv93U4zPLwrVaj287b5ZUj2+7un5CL9pZuGvFXGnU9bOWDK/pG9+grp9xMjytl7R9 XT8dyc1X9dPjY+vW9TOu6ic7ed+qrp+x2a69L+vX9TOu6reF31IJMWuRkFvW9dPKedLPSdy0rp/m lETr2+y2eat1/VYVQ3lVP91c0TXr+mlsrIwV2By60XVyUJrW9TNOiFXpYxvX9dPKRZPcx4YexTXq +pln1+6irp/x4YL83p5t6vqJ9KlZ1U8v3nLdun5GGCHzjhoWfV29gjgPv33qZ3VTwhUjPmTcUuXa ZTRcu89Grl2DwHvqt1QmLpZUUcJ5uQ/r3TFSkD2qbGIMMWXMPAjcEliILVabSBBV2aKY+1aJ++1H y+J97t4OvzWmfJNWPz+bnXC59O3ro8vuGMfCdmeSKdk9k8aNnUs2Lr3Ho2TOmz6ZYTz/7cWXkyle TUNMKVHMMKXX1wpT9i3rTDWWe2aqz09d5tIzDzCNY2eEabROc8ztd6fH3DnHX8xdlf1l7qbnh8z9 aafAvF4PL5jXReCBaZ35x8y7p+5g3lNvbsyvvPI7Z/Psa3Q2nxydzZbJxfP8YJr7CISq8SWf2fk5 qaWjTvvlbc7BxVxtZ792cPfUTB+OZ8HSERduXTnfG8n4fvO86/c2SzVn+ibVj3rFRECbw1npvxT9 serRN2yJt4Rpb377bPAadFwPLutE3dcge3l2qXswSti9o/CNogRkdU6qCHpTKX8SpJgWsAg4YMFH zPul68Z4pd7jbhjeZU7TTKl5X2LKB5PabB6/75FMUjEjNexuek+CflKNcp/mJBaL38HZ/GVyjL8d qBR2SiUS+aRPpg6ZZ5WcAvDe1mpCYb9oQcLzWlpibcwHWj7Td3n/YHf52/uYYnuOf46xpGbN7g8e vSHY0lhr8wULaSZwchK3PxKi0/uLTJzsVvZnUp1nL+7v37wFn2NZclXOzsAC/XkptdzPF0DTjxHU OA6Rw4DB/X7gp5ZTOvIyx69BnhNHKk7xE1ZnSJeWI/QGYVmdiofm/YLE9uFXH/81Hwjg14D4YtBb vHuo4GxeQqd301x+0A6yTDAddpWK3CVO+MItTRO1vsSinTmu2mf4yCtbga/q7YoP/PIHb7G++EAa 7xUkzWdWGO+alcBCNCXHiAmWTzzSr6wnzx7zzct5n+xB+zB/Ijw4C2BypAdg9+JFYLmBg34v4UGd JV9Dp7d2+FrLeGwOsYsWEYnwa4nA2wPk088RtEEGGEeMiQP5XM+gyXUQr5bzkThJ+HpLuvWEDhM/ C/j6HApeNoYheLfp9aYPUgdkLQdeGCDwwwQfq35x0HdhlHeAcvTJXwi2U0fJz7HztpQqhr8lucDz 7vLDjdxxJHiPxNMEwGqY4zi/mx5Jf5wzvV8Q+nOf2xzxm0S8XMo4+83CWY/PbIVVPbACsjQ5aeM5 96h1UOwOfxPQpB0WF96GURYJfsM6134EkA+AGhvD19sgf/IOnx8YtlM9c8OnZ5bK+GDnjUsnzjjY q047JHzqhUkX/NYO66RHP1HA4OtDkH93+MwIn95Y2e53QBWrpvn5DHsh2YM3e6hFqfL98tfBr2X4 EyWSJpSLh+LH/Tf3R/4rWrrOjeIHcRkbQXLks9LogqQ/1OsgOAqY4OIhIA7a5VFl8cawZTbjgk9t VvjU46R2wCjqsL7Fd5jXxuXziSzuSh53+jh259+/LL1fOhJEVIeOWvMYc172RmCvXqM8LT4wBzLF QakpAChredELx1WT8tNsi3zTffXkAkbpBL65TJJLCip2n/u0qcE3D2V68hHlm3TLTh5dhCkC0WRd hOQEFtaY8k3avxjB+QiWUy2MwHIhq2stBNREbomB4P3vvpfw5Iqbpjl/OH8xcaYCfx4nAezbyTkz 9ley8cgyfcRsBy07dRYcPCwC1A8x8CW9ROYAHyuea/uUgKVeXah2Hx/dwigx4CbpmFvc0FeeBNIn Xtlv7f0zEInpPMFpF6qIw9xof1ySuCpZywVoeLG7Sv59mO3J+Xg56UbcuMStiwFmxQ== %5D%5D%3E %3C!%5BCDATA%5B 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 if/b2Lnsapbk1vkJ8h1y0oAtQAc77hFDuyQBBsqwBxYkj4xGqtw2kC0ZLVmG397rW2Sc7szzp6sF Dbr+5NmX2AxykVxkzNb3GTtERpmDK81zqkXq2eusUufYLUXG3GOfsp7ZPv+kO/U3XXSvrb/UhUJo PeuM1s+zFtfpb087ez9jP/vpiDT9Wt9Or8/aTb/3Eb9+0QXL25i1lWfu08q40s9bbevU/dTe7qP0 suY6z7ORWOdND9XmqaO2VhEpb1Nvs7QGT9NK6WnXfmuDd26rtWen0B5azPHUOffnny2kF5p7r7r3 KFfomWMdLWovutl623Xs2nWzp9+bjdH3WHrvbYkx9Vn0P/Q8PSXqU1ttu/U5/TjzrZexl76MniY/ wqPF4766lhZvjbfe9tEr6cc9U6TsRz/2pTWRiD6BvpiUoRUteYrU5o+gdey+VX+bWpYqHWGNrtAu 9Sm61fGLt7datp5vr+eUK3PakCK1/qATq7xtPdjQm9en5drspwyplj7/kWatR++p/9CjTL1siNS+ pB/P04Z0jcd53h5uMtcq5eTy9NKkDuO0vnSded761vdtT9EC5bcaT+96xjMHn2Hutw== %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 %5D%5D%3E %3C!%5BCDATA%5B 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 yRX/zW/++j/9zaf/B/HwhVQ= %5D%5D%3E %3C/i:pgf%3E %3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 546 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cstyle%3E.st0%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10%7D%3C/style%3E%3Cpath class=&apos;st0&apos; d=&apos;M14.5 8s-2.9 4-6.5 4-6.5-4-6.5-4S4.4 4 8 4s6.5 4 6.5 4z&apos;/%3E%3Ccircle class=&apos;st0&apos; cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;2&apos;/%3E%3Cpath class=&apos;st0&apos; d=&apos;M3 13L13 3&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 547 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; data-name=&apos;Layer 1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round%7D%3C/style%3E%3C/defs%3E%3Ctitle%3Eshow%3C/title%3E%3Cpath class=&apos;cls-1&apos; d=&apos;M14.5 8s-2.91 4-6.5 4-6.5-4-6.5-4S4.41 4 8 4s6.5 4 6.5 4z&apos;/%3E%3Ccircle class=&apos;cls-1&apos; cx=&apos;8&apos; cy=&apos;8&apos; r=&apos;2&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 548 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cstyle%3E.st0%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10%7D.st1%7Bfill:%23575e75%7D%3C/style%3E%3Cpath class=&apos;st0&apos; d=&apos;M3 8h10M11.2 6.2L13 8l-1.8 1.8M4.8 9.8L3 8l1.8-1.8&apos;/%3E%3Cpath class=&apos;st1&apos; d=&apos;M7.5 14c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5zm0-2c0-.3.2-.5.5-.5s.5.2.5.5-.2.5-.5.5-.5-.2-.5-.5z&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 549 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; data-name=&apos;Layer 1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 16 16&apos;%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;stroke:%23575e75;stroke-linecap:round;stroke-linejoin:round%7D.cls-2%7Bfill:%23575e75%7D%3C/style%3E%3C/defs%3E%3Ctitle%3Eicon--y%3C/title%3E%3Cpath class=&apos;cls-1&apos; d=&apos;M8 13V3M6.23 4.77L8 3l1.77 1.77M9.77 11.23L8 13l-1.77-1.77&apos;/%3E%3Cpath class=&apos;cls-2&apos; d=&apos;M13.5 8a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5zm-2 0a.49.49 0 0 1 .5-.5.5.5 0 0 1 .5.5.5.5 0 0 1-.5.5.5.5 0 0 1-.5-.5z&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 550 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3C?xml version=&apos;1.0&apos; encoding=&apos;utf-8&apos;?%3E %3C!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E %3Csvg version=&apos;1.1&apos; id=&apos;Layer_1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; xmlns:xlink=&apos;http://www.w3.org/1999/xlink&apos; x=&apos;0px&apos; y=&apos;0px&apos; viewBox=&apos;0 0 14 14&apos; style=&apos;enable-background:new 0 0 14 14;&apos; xml:space=&apos;preserve&apos;%3E %3Cstyle type=&apos;text/css&apos;%3E .st0%7Bfill:%23EC5959;stroke:%23B84848;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;%7D %3C/style%3E %3Cpolygon class=&apos;st0&apos; points=&apos;4.3,0.5 9.7,0.5 13.5,4.3 13.5,9.7 9.7,13.5 4.3,13.5 0.5,9.7 0.5,4.3 &apos;/%3E %3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 551 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = "data:image/svg+xml,%3Csvg id=&apos;Layer_1&apos; data-name=&apos;Layer 1&apos; xmlns=&apos;http://www.w3.org/2000/svg&apos; viewBox=&apos;0 0 7.48 7.48&apos;%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;stroke:%23fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3Eicon--add%3C/title%3E%3Cline class=&apos;cls-1&apos; x1=&apos;3.74&apos; y1=&apos;6.48&apos; x2=&apos;3.74&apos; y2=&apos;1&apos;/%3E%3Cline class=&apos;cls-1&apos; x1=&apos;1&apos; y1=&apos;3.74&apos; x2=&apos;6.48&apos; y2=&apos;3.74&apos;/%3E%3C/svg%3E"&#xD;&#xD;/***/ }),&#xD;/* 552 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;module.exports = __webpack_require__(553);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 553 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(global, module) {&#xD;&#xD;Object.defineProperty(exports, "__esModule", {&#xD;  value: true&#xD;});&#xD;&#xD;var _ponyfill = __webpack_require__(554);&#xD;&#xD;var _ponyfill2 = _interopRequireDefault(_ponyfill);&#xD;&#xD;function _interopRequireDefault(obj) { return obj &amp;&amp; obj.__esModule ? obj : { &apos;default&apos;: obj }; }&#xD;&#xD;var root; /* global window */&#xD;&#xD;&#xD;if (typeof self !== &apos;undefined&apos;) {&#xD;  root = self;&#xD;} else if (typeof window !== &apos;undefined&apos;) {&#xD;  root = window;&#xD;} else if (typeof global !== &apos;undefined&apos;) {&#xD;  root = global;&#xD;} else if (true) {&#xD;  root = module;&#xD;} else {&#xD;  root = Function(&apos;return this&apos;)();&#xD;}&#xD;&#xD;var result = (0, _ponyfill2[&apos;default&apos;])(root);&#xD;exports[&apos;default&apos;] = result;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13), __webpack_require__(75)(module)))&#xD;&#xD;/***/ }),&#xD;/* 554 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;Object.defineProperty(exports, "__esModule", {&#xD;	value: true&#xD;});&#xD;exports[&apos;default&apos;] = symbolObservablePonyfill;&#xD;function symbolObservablePonyfill(root) {&#xD;	var result;&#xD;	var _Symbol = root.Symbol;&#xD;&#xD;	if (typeof _Symbol === &apos;function&apos;) {&#xD;		if (_Symbol.observable) {&#xD;			result = _Symbol.observable;&#xD;		} else {&#xD;			result = _Symbol(&apos;observable&apos;);&#xD;			_Symbol.observable = result;&#xD;		}&#xD;	} else {&#xD;		result = &apos;@@observable&apos;;&#xD;	}&#xD;&#xD;	return result;&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 555 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var Buffer = __webpack_require__(1).Buffer&#xD;&#xD;module.exports = function (buf) {&#xD;	// If the buffer is backed by a Uint8Array, a faster version will work&#xD;	if (buf instanceof Uint8Array) {&#xD;		// If the buffer isn&apos;t a subarray, return the underlying ArrayBuffer&#xD;		if (buf.byteOffset === 0 &amp;&amp; buf.byteLength === buf.buffer.byteLength) {&#xD;			return buf.buffer&#xD;		} else if (typeof buf.buffer.slice === &apos;function&apos;) {&#xD;			// Otherwise we need to get a proper copy&#xD;			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)&#xD;		}&#xD;	}&#xD;&#xD;	if (Buffer.isBuffer(buf)) {&#xD;		// This is the slow version that will work with any Buffer&#xD;		// implementation (even in old browsers)&#xD;		var arrayCopy = new Uint8Array(buf.length)&#xD;		var len = buf.length&#xD;		for (var i = 0; i &lt; len; i++) {&#xD;			arrayCopy[i] = buf[i]&#xD;		}&#xD;		return arrayCopy.buffer&#xD;	} else {&#xD;		throw new Error(&apos;Argument must be a Buffer&apos;)&#xD;	}&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 556 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;&#xD;exports = module.exports = trim;&#xD;&#xD;function trim(str){&#xD;  return str.replace(/^\s*|\s*$/g, &apos;&apos;);&#xD;}&#xD;&#xD;exports.left = function(str){&#xD;  return str.replace(/^\s*/, &apos;&apos;);&#xD;};&#xD;&#xD;exports.right = function(str){&#xD;  return str.replace(/\s*$/, &apos;&apos;);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 557 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = {&#xD;  isString: function(arg) {&#xD;    return typeof(arg) === &apos;string&apos;;&#xD;  },&#xD;  isObject: function(arg) {&#xD;    return typeof(arg) === &apos;object&apos; &amp;&amp; arg !== null;&#xD;  },&#xD;  isNull: function(arg) {&#xD;    return arg === null;&#xD;  },&#xD;  isNullOrUndefined: function(arg) {&#xD;    return arg == null;&#xD;  }&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 558 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;/* WEBPACK VAR INJECTION */(function(global) {&#xD;/**&#xD; * Module exports.&#xD; */&#xD;&#xD;module.exports = deprecate;&#xD;&#xD;/**&#xD; * Mark that a method should not be used.&#xD; * Returns a modified function which warns once by default.&#xD; *&#xD; * If `localStorage.noDeprecation = true` is set, then it is a no-op.&#xD; *&#xD; * If `localStorage.throwDeprecation = true` is set, then deprecated functions&#xD; * will throw an Error when invoked.&#xD; *&#xD; * If `localStorage.traceDeprecation = true` is set, then deprecated functions&#xD; * will invoke `console.trace()` instead of `console.error()`.&#xD; *&#xD; * @param {Function} fn - the function to deprecate&#xD; * @param {String} msg - the string to print to the console when `fn` is invoked&#xD; * @returns {Function} a new "deprecated" version of `fn`&#xD; * @api public&#xD; */&#xD;&#xD;function deprecate (fn, msg) {&#xD;  if (config(&apos;noDeprecation&apos;)) {&#xD;    return fn;&#xD;  }&#xD;&#xD;  var warned = false;&#xD;  function deprecated() {&#xD;    if (!warned) {&#xD;      if (config(&apos;throwDeprecation&apos;)) {&#xD;        throw new Error(msg);&#xD;      } else if (config(&apos;traceDeprecation&apos;)) {&#xD;        console.trace(msg);&#xD;      } else {&#xD;        console.warn(msg);&#xD;      }&#xD;      warned = true;&#xD;    }&#xD;    return fn.apply(this, arguments);&#xD;  }&#xD;&#xD;  return deprecated;&#xD;}&#xD;&#xD;/**&#xD; * Checks `localStorage` for boolean values for the given `name`.&#xD; *&#xD; * @param {String} name&#xD; * @returns {Boolean}&#xD; * @api private&#xD; */&#xD;&#xD;function config (name) {&#xD;  // accessing global.localStorage can trigger a DOMException in sandboxed iframes&#xD;  try {&#xD;    if (!global.localStorage) return false;&#xD;  } catch (_) {&#xD;    return false;&#xD;  }&#xD;  var val = global.localStorage[name];&#xD;  if (null == val) return false;&#xD;  return String(val).toLowerCase() === &apos;true&apos;;&#xD;}&#xD;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13)))&#xD;&#xD;/***/ }),&#xD;/* 559 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;if (typeof Object.create === &apos;function&apos;) {&#xD;  // implementation from standard node.js &apos;util&apos; module&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    ctor.prototype = Object.create(superCtor.prototype, {&#xD;      constructor: {&#xD;        value: ctor,&#xD;        enumerable: false,&#xD;        writable: true,&#xD;        configurable: true&#xD;      }&#xD;    });&#xD;  };&#xD;} else {&#xD;  // old school shim for old browsers&#xD;  module.exports = function inherits(ctor, superCtor) {&#xD;    ctor.super_ = superCtor&#xD;    var TempCtor = function () {}&#xD;    TempCtor.prototype = superCtor.prototype&#xD;    ctor.prototype = new TempCtor()&#xD;    ctor.prototype.constructor = ctor&#xD;  }&#xD;}&#xD;&#xD;&#xD;/***/ }),&#xD;/* 560 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = function isBuffer(arg) {&#xD;  return arg &amp;&amp; typeof arg === &apos;object&apos;&#xD;    &amp;&amp; typeof arg.copy === &apos;function&apos;&#xD;    &amp;&amp; typeof arg.fill === &apos;function&apos;&#xD;    &amp;&amp; typeof arg.readUInt8 === &apos;function&apos;;&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 561 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;var indexOf = __webpack_require__(350);&#xD;&#xD;var Object_keys = function (obj) {&#xD;    if (Object.keys) return Object.keys(obj)&#xD;    else {&#xD;        var res = [];&#xD;        for (var key in obj) res.push(key)&#xD;        return res;&#xD;    }&#xD;};&#xD;&#xD;var forEach = function (xs, fn) {&#xD;    if (xs.forEach) return xs.forEach(fn)&#xD;    else for (var i = 0; i &lt; xs.length; i++) {&#xD;        fn(xs[i], i, xs);&#xD;    }&#xD;};&#xD;&#xD;var defineProp = (function() {&#xD;    try {&#xD;        Object.defineProperty({}, &apos;_&apos;, {});&#xD;        return function(obj, name, value) {&#xD;            Object.defineProperty(obj, name, {&#xD;                writable: true,&#xD;                enumerable: false,&#xD;                configurable: true,&#xD;                value: value&#xD;            })&#xD;        };&#xD;    } catch(e) {&#xD;        return function(obj, name, value) {&#xD;            obj[name] = value;&#xD;        };&#xD;    }&#xD;}());&#xD;&#xD;var globals = [&apos;Array&apos;, &apos;Boolean&apos;, &apos;Date&apos;, &apos;Error&apos;, &apos;EvalError&apos;, &apos;Function&apos;,&#xD;&apos;Infinity&apos;, &apos;JSON&apos;, &apos;Math&apos;, &apos;NaN&apos;, &apos;Number&apos;, &apos;Object&apos;, &apos;RangeError&apos;,&#xD;&apos;ReferenceError&apos;, &apos;RegExp&apos;, &apos;String&apos;, &apos;SyntaxError&apos;, &apos;TypeError&apos;, &apos;URIError&apos;,&#xD;&apos;decodeURI&apos;, &apos;decodeURIComponent&apos;, &apos;encodeURI&apos;, &apos;encodeURIComponent&apos;, &apos;escape&apos;,&#xD;&apos;eval&apos;, &apos;isFinite&apos;, &apos;isNaN&apos;, &apos;parseFloat&apos;, &apos;parseInt&apos;, &apos;undefined&apos;, &apos;unescape&apos;];&#xD;&#xD;function Context() {}&#xD;Context.prototype = {};&#xD;&#xD;var Script = exports.Script = function NodeScript (code) {&#xD;    if (!(this instanceof Script)) return new Script(code);&#xD;    this.code = code;&#xD;};&#xD;&#xD;Script.prototype.runInContext = function (context) {&#xD;    if (!(context instanceof Context)) {&#xD;        throw new TypeError("needs a &apos;context&apos; argument.");&#xD;    }&#xD;    &#xD;    var iframe = document.createElement(&apos;iframe&apos;);&#xD;    if (!iframe.style) iframe.style = {};&#xD;    iframe.style.display = &apos;none&apos;;&#xD;    &#xD;    document.body.appendChild(iframe);&#xD;    &#xD;    var win = iframe.contentWindow;&#xD;    var wEval = win.eval, wExecScript = win.execScript;&#xD;&#xD;    if (!wEval &amp;&amp; wExecScript) {&#xD;        // win.eval() magically appears when this is called in IE:&#xD;        wExecScript.call(win, &apos;null&apos;);&#xD;        wEval = win.eval;&#xD;    }&#xD;    &#xD;    forEach(Object_keys(context), function (key) {&#xD;        win[key] = context[key];&#xD;    });&#xD;    forEach(globals, function (key) {&#xD;        if (context[key]) {&#xD;            win[key] = context[key];&#xD;        }&#xD;    });&#xD;    &#xD;    var winKeys = Object_keys(win);&#xD;&#xD;    var res = wEval.call(win, this.code);&#xD;    &#xD;    forEach(Object_keys(win), function (key) {&#xD;        // Avoid copying circular objects like `top` and `window` by only&#xD;        // updating existing context properties or new properties in the `win`&#xD;        // that was only introduced after the eval.&#xD;        if (key in context || indexOf(winKeys, key) === -1) {&#xD;            context[key] = win[key];&#xD;        }&#xD;    });&#xD;&#xD;    forEach(globals, function (key) {&#xD;        if (!(key in context)) {&#xD;            defineProp(context, key, win[key]);&#xD;        }&#xD;    });&#xD;    &#xD;    document.body.removeChild(iframe);&#xD;    &#xD;    return res;&#xD;};&#xD;&#xD;Script.prototype.runInThisContext = function () {&#xD;    return eval(this.code); // maybe...&#xD;};&#xD;&#xD;Script.prototype.runInNewContext = function (context) {&#xD;    var ctx = Script.createContext(context);&#xD;    var res = this.runInContext(ctx);&#xD;&#xD;    forEach(Object_keys(ctx), function (key) {&#xD;        context[key] = ctx[key];&#xD;    });&#xD;&#xD;    return res;&#xD;};&#xD;&#xD;forEach(Object_keys(Script.prototype), function (name) {&#xD;    exports[name] = Script[name] = function (code) {&#xD;        var s = Script(code);&#xD;        return s[name].apply(s, [].slice.call(arguments, 1));&#xD;    };&#xD;});&#xD;&#xD;exports.createScript = function (code) {&#xD;    return exports.Script(code);&#xD;};&#xD;&#xD;exports.createContext = Script.createContext = function (context) {&#xD;    var copy = new Context();&#xD;    if(typeof context === &apos;object&apos;) {&#xD;        forEach(Object_keys(context), function (key) {&#xD;            copy[key] = context[key];&#xD;        });&#xD;    }&#xD;    return copy;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 562 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = {&#xD;	"objName": "Stage",&#xD;	"sounds": [&#xD;		{&#xD;			"soundName": "pop",&#xD;			"soundID": 1,&#xD;			"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;			"sampleCount": 258,&#xD;			"rate": 11025,&#xD;			"format": ""&#xD;		}&#xD;	],&#xD;	"costumes": [&#xD;		{&#xD;			"costumeName": "backdrop1",&#xD;			"baseLayerID": 2,&#xD;			"baseLayerMD5": "739b5e2a2435f6e1ec2993791b423146.png",&#xD;			"bitmapResolution": 1,&#xD;			"rotationCenterX": 240,&#xD;			"rotationCenterY": 180&#xD;		}&#xD;	],&#xD;	"currentCostumeIndex": 0,&#xD;	"penLayerMD5": "5c81a336fab8be57adc039a8a2b33ca9.png",&#xD;	"penLayerID": -1,&#xD;	"tempoBPM": 60,&#xD;	"videoAlpha": 0.5,&#xD;	"children": [&#xD;		{&#xD;			"objName": "Sprite1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": 0,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "costume1",&#xD;					"baseLayerID": 0,&#xD;					"baseLayerMD5": "09dc888b0b7df19f70d81588ae73420e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				},&#xD;				{&#xD;					"costumeName": "costume2",&#xD;					"baseLayerID": 1,&#xD;					"baseLayerMD5": "3696356a03a8d938318876a593572843.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 1,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	]&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 563 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = [&#xD;	{&#xD;		"name": "atom playground",&#xD;		"md5": "dd85f581a3ba8d590543bd6e87d6fd14.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "baseball-field",&#xD;		"md5": "6b3d87ba2a7f89be703163b6c1d4c964.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			960,&#xD;			720,&#xD;			2&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "basketball-court1-a",&#xD;		"md5": "c3464cbe80c4d3adb225383d9e84b5d4.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "basketball-court1-b",&#xD;		"md5": "2dbde2ae53f2744b87be09581281610f.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "beach malibu",&#xD;		"md5": "fd66e7be2200f27f6475b8673c8214ab.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"underwater",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "beach rio",&#xD;		"md5": "968f0ede6e70e1dbb763d6fd4c5003e0.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			960,&#xD;			720&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "bedroom1",&#xD;		"md5": "4230e474051a8ec30fa766871489e330.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "bedroom2",&#xD;		"md5": "181916364097d7e7e24a761534a64a48.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "bench with view",&#xD;		"md5": "38fd6334f8cfdbc80619adcb006a2da5.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "berkeley mural",&#xD;		"md5": "e79adb9aba060af11c37b4781f91feb9.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "blue sky",&#xD;		"md5": "32c395c60534db0e100c962cdbb1d7a7.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"flying",&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			492,&#xD;			367&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "blue sky2",&#xD;		"md5": "d4db494dcf0e5ddbac875a437c2f166a.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"flying",&#xD;			"outdoors",&#xD;			"nature",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "blue sky3",&#xD;		"md5": "5a0159578408d7da9bac6d2379cabfe1.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"flying",&#xD;			"outdoors",&#xD;			"nature",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "boardwalk",&#xD;		"md5": "acbae935194a383f9200b99bbc0697bf.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"music-and-dance",&#xD;			"outdoors",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "brick wall and stairs",&#xD;		"md5": "31b49fc0b7593aadb804a0bd5c069fc5.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "brick wall1",&#xD;		"md5": "4f234884958b11023d44abc010ad50ec.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "brick wall2",&#xD;		"md5": "900041259dd4cf03d5d1e15e928b5dbf.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "building at mit",&#xD;		"md5": "fe5e3566965f9de793beeffce377d054.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "canyon",&#xD;		"md5": "e9d5577287db24f92b6447c7fbd8fcc0.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "castle1",&#xD;		"md5": "033f926829a446a28970f59302b0572d.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"castle"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "castle2",&#xD;		"md5": "e70cff23d246dff3174903b42353848c.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"castle"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "castle3",&#xD;		"md5": "e2730c93885bf3f61b0d8cd79050f556.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"castle"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			359,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "castle4",&#xD;		"md5": "392fd702b7ad08c467fa96dfc732feb3.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"castle"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "castle5",&#xD;		"md5": "a4d3b1643090c8d28e85b8a3bb3f344c.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"castle"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "chalkboard",&#xD;		"md5": "56db999ade99274a76ae7717eb256e06.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "circles",&#xD;		"md5": "4e29033ec2b891a8f1ca21242811d403.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			364,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "city with water",&#xD;		"md5": "a1b28b2a48a3609b5b0562a53bc797bd.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "city with water2",&#xD;		"md5": "35a49599b015bdb0d77e389471b1146a.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "clothing store",&#xD;		"md5": "0ad4262c47875748b626dc41aad4c10b.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "desert",&#xD;		"md5": "5e012b80c8c2c99be0bff0e24e9d6342.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "doily",&#xD;		"md5": "074ee3f137e955fbf169bcf3cfbd8a8f.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "driveway",&#xD;		"md5": "16c84de201792c1ce1954686ceb8f4eb.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "flower bed",&#xD;		"md5": "4b6314596a007a6a9ddb0430458c5133.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "flowers",&#xD;		"md5": "63499cf8a5dc32a78ed8ba6b114f0a4b.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "forest",&#xD;		"md5": "2c6429f7d3be6415851ff9915cc0e7b7.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "garden rock",&#xD;		"md5": "7a70c9cd40754733cde1db6cf83eef49.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "gingerbread",&#xD;		"md5": "a4fa918fb6ac923835dc1b4f3cce317c.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "goal1",&#xD;		"md5": "7aad07c010c0df9f2682701463d98c37.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "goal2",&#xD;		"md5": "ddd4f56b8de53c46638089726fdd354c.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "graffiti",&#xD;		"md5": "ff2749b1ac5d35011576dabfee7cb7fa.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"music-and-dance",&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "grand canyon",&#xD;		"md5": "9792b60aeb8005f2191d6c84abfdc61b.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "gravel desert",&#xD;		"md5": "245a2c52dbbedeea390c3e22d49430c0.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "greek theater",&#xD;		"md5": "34d1a90d0075b4c057c8bce42a7c2463.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hall",&#xD;		"md5": "5da017ab11b920a262f2553a4186e23e.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hallway outdoors",&#xD;		"md5": "9e7c48d569daeb76d976f7a674198528.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hay field",&#xD;		"md5": "d1b761a18f525a2a20caa2a5da12bbf1.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hearts1",&#xD;		"md5": "4bfd6a761ff985e342acbf2e07f63526.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			362,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hearts2",&#xD;		"md5": "b6602e32d55ed75eaea1b646f61b6c17.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			362,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "hill",&#xD;		"md5": "857b121a567626fe88159215c5373742.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"flying"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			362,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "houses",&#xD;		"md5": "7d5dda5b40d6d8217f3b3cd9d71755b1.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "kitchen",&#xD;		"md5": "586e4724e1af9fddec64f83d90997c4a.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "lake",&#xD;		"md5": "07338ae08528c6d7ca542f9da016c025.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "light",&#xD;		"md5": "4b98c07876ed8997c3762e75790507b4.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			494,&#xD;			372,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "metro1",&#xD;		"md5": "a532a0529ba13c17e3c8fd32d25693ae.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "moon",&#xD;		"md5": "98758dc52f937a33a565c933f8eb9358.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"other",&#xD;			"space"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "neon tunnel",&#xD;		"md5": "7f7b9943a3824c6bd2576f8768f286b1.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"space",&#xD;			"sports",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			495,&#xD;			376,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "night city with street",&#xD;		"md5": "03a38fe7e5ce233f145e3a5b6b96b4bf.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "night city",&#xD;		"md5": "761f9ed01b0f96650fcc77b4c6cc8219.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "parking-ramp",&#xD;		"md5": "9f523828fb41da9a040623e25a7df6ea.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "party",&#xD;		"md5": "108160d0e44d1c340182e31c9dc0758a.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"holiday",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			503,&#xD;			380,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "party room",&#xD;		"md5": "30e8c3fd0be6f40b37785d83b8153b21.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "pathway",&#xD;		"md5": "a944ac0c1fc3e3b8feef0ddf691de726.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "playing-field",&#xD;		"md5": "2de108f3098e92f5c5976cf75d38e99d.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			960,&#xD;			720,&#xD;			2&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "pool",&#xD;		"md5": "6d92c738150a821531061bcc9743c44c.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "purple",&#xD;		"md5": "b16a7870ab4287f0f46816b3c5061c9f.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"flying",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "rays",&#xD;		"md5": "87e963282db9e020e8c4d075891ea12b.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "room1",&#xD;		"md5": "c283de2416525f69cd8655053022d34a.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "room2",&#xD;		"md5": "7c1afda6967294c8256b389516c83dfc.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "room3",&#xD;		"md5": "61e3239fe9e0600cf11218b89f94a051.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "route66",&#xD;		"md5": "943ed51116fbbf4d4cd18a5f08274a18.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "school1",&#xD;		"md5": "52d676e1f3e1cd8995e7040af39b9667.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "school2",&#xD;		"md5": "85fda24ae18655fed894f2017914dca2.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "slopes",&#xD;		"md5": "a22b84c4cfd6b108eebf69398473c9cb.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "space",&#xD;		"md5": "b579aeeb143e79c47e2e65cbd3c0fe36.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"flying",&#xD;			"space"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "sparkling",&#xD;		"md5": "a2c28220872e715ef729c82fd12c2668.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "spotlight-stage",&#xD;		"md5": "871a93bbd5547e3ad3a95eaa1d63c5e8.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "spotlight-stage2",&#xD;		"md5": "12288218b23a264c84bd3c22bd03e90a.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			496,&#xD;			364,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "stage1",&#xD;		"md5": "99c5e811cfdac4d08ff9b9b0d4404412.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "stage2",&#xD;		"md5": "350ae82c294d50f64bf75964d4a0cd2d.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"music-and-dance"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "stars",&#xD;		"md5": "552e05774979b3ec52fd1251e01eb032.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"space"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "stripes",&#xD;		"md5": "a6a21f5c08d586e8daaebde37c97fb6f.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			495,&#xD;			369&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "the movies inside",&#xD;		"md5": "fb64c872492a50bd0e0b17157fbb098d.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"indoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "the movies outside",&#xD;		"md5": "df281f3cc7f437c31d0ad45b72315d81.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "track",&#xD;		"md5": "4588d5d6560068fc7d4204c911cdc8d5.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "train tracks1",&#xD;		"md5": "4641f5115f12b7b7be000915af958048.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "train tracks2",&#xD;		"md5": "642b12186c7f9488a0bf509c4d6572cd.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "tree",&#xD;		"md5": "e770d073f62fe8ce28e25b54bdb2122a.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "tree-gifts",&#xD;		"md5": "e058f6d1246f6b94bbc67c5fd04fb25f.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "underwater1",&#xD;		"md5": "efad1bcdc7a2945871136e14ba1f9838.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"underwater"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "underwater2",&#xD;		"md5": "ae3aac79accf4fa93ffbe3296dd3730d.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"underwater"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "underwater3",&#xD;		"md5": "be203c37c3ea07b39a5519d1a55214ff.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"underwater"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "urban1",&#xD;		"md5": "d8c6128aeb2e84ff751f7efef3eb0d03.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "urban2",&#xD;		"md5": "afd61866da06305f09ea3aa42e6705db.png",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"city"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "village",&#xD;		"md5": "47dd0064409d8c4db9da24fe7989034c.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "water and rocks",&#xD;		"md5": "b19ad0e0046cee5282d3f6ff311f37bf.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "wave",&#xD;		"md5": "989c99466d14ca77424e7dd8b1fb9bee.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature",&#xD;			"underwater"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "winter",&#xD;		"md5": "5fa9385a60b904672d0e46e9d768bb32.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday",&#xD;			"nature",&#xD;			"outdoors"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "winter-lights",&#xD;		"md5": "381f471693238611a1b54da4e771637a.svg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"holiday"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "woods and bench",&#xD;		"md5": "10cdd2d4cf5359debb2b4d4bd6edd5a1.jpg",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "woods",&#xD;		"md5": "82a2fd67a3e7449bd9e9d2a9757119fa.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"outdoors",&#xD;			"nature"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	},&#xD;	{&#xD;		"name": "xy-grid",&#xD;		"md5": "c7170e868695b784217edac305bb791d.gif",&#xD;		"type": "backdrop",&#xD;		"tags": [&#xD;			"other"&#xD;		],&#xD;		"info": [&#xD;			480,&#xD;			360,&#xD;			1&#xD;		]&#xD;	}&#xD;];&#xD;&#xD;/***/ }),&#xD;/* 564 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = [&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			100&#xD;		],&#xD;		"md5": "afab2d2141e9811bd89e385e9628cb5f.svg",&#xD;		"type": "costume",&#xD;		"name": "abby-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			100&#xD;		],&#xD;		"md5": "1e0116c7c2e5e80c679d0b33f1f5cfb7.svg",&#xD;		"type": "costume",&#xD;		"name": "abby-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			100&#xD;		],&#xD;		"md5": "b6e23922f23b49ddc6f62f675e77417c.svg",&#xD;		"type": "costume",&#xD;		"name": "abby-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			100&#xD;		],&#xD;		"md5": "2193cf08f74b8354f7c4fac37a06ea24.svg",&#xD;		"type": "costume",&#xD;		"name": "abby-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			32,&#xD;			1&#xD;		],&#xD;		"md5": "58bcb130f226bda9017f1a443360a78a.png",&#xD;		"type": "costume",&#xD;		"name": "airplane2",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"flying",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			87,&#xD;			81,&#xD;			1&#xD;		],&#xD;		"md5": "8d508770c1991fe05959c9b3b5167036.gif",&#xD;		"type": "costume",&#xD;		"name": "amon",&#xD;		"tags": [&#xD;			"people",&#xD;			"flying",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "6d01c961449223f9e61dda9281100806.png",&#xD;		"type": "costume",&#xD;		"name": "anina stance",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			280,&#xD;			2&#xD;		],&#xD;		"md5": "34d6362cb4030d92be6fec73300f0aec.png",&#xD;		"type": "costume",&#xD;		"name": "anina top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			248,&#xD;			272,&#xD;			2&#xD;		],&#xD;		"md5": "0477f7105d02b9a902382eca080476dc.png",&#xD;		"type": "costume",&#xD;		"name": "anina top R step",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			228,&#xD;			274,&#xD;			2&#xD;		],&#xD;		"md5": "62a89d8c6f7680e342132fcde59b2a5d.png",&#xD;		"type": "costume",&#xD;		"name": "anina top L step",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			110,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "dd67565519bdebea1b931deb19621384.png",&#xD;		"type": "costume",&#xD;		"name": "anina top freeze",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			126,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "22f3ca23b2f0ac67f8ebc36a8c3116a0.png",&#xD;		"type": "costume",&#xD;		"name": "anina R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			270,&#xD;			2&#xD;		],&#xD;		"md5": "c163f1002f61421816386e52522b9133.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop front",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			156,&#xD;			2&#xD;		],&#xD;		"md5": "e9e54ff1fa61c71507e25540d0326177.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop down",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			238,&#xD;			266,&#xD;			2&#xD;		],&#xD;		"md5": "9fda30f66d51b2ad5f6fe11d57e199d6.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop left",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "cc2594e9278494e82f725be34369f178.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop right",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			274,&#xD;			2&#xD;		],&#xD;		"md5": "843bff4a5ee3d61fd8cbd419cb2797a3.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			276,&#xD;			2&#xD;		],&#xD;		"md5": "de7cab2c8d567d49a5a1f378b5709bb4.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			88,&#xD;			272,&#xD;			2&#xD;		],&#xD;		"md5": "e7e1a86233b7ad28d6ee9970b152be20.png",&#xD;		"type": "costume",&#xD;		"name": "anina pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			87,&#xD;			1&#xD;		],&#xD;		"md5": "23ab3e9be3be672fa2c43571e92b2b3e.png",&#xD;		"type": "costume",&#xD;		"name": "anna-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			57,&#xD;			110,&#xD;			1&#xD;		],&#xD;		"md5": "25b8d4f7eae0add3bc24c20f5f17ada9.png",&#xD;		"type": "costume",&#xD;		"name": "anna-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			190,&#xD;			2&#xD;		],&#xD;		"md5": "74b5e9c882deb81d88c175d548b8ff66.png",&#xD;		"type": "costume",&#xD;		"name": "anna01",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			132,&#xD;			260,&#xD;			2&#xD;		],&#xD;		"md5": "ece557e1c4500b30fd0e22b0d693cf4c.png",&#xD;		"type": "costume",&#xD;		"name": "anna02",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			138,&#xD;			242,&#xD;			2&#xD;		],&#xD;		"md5": "2e97d9d9d6bc1f174d3fc897638e8a46.png",&#xD;		"type": "costume",&#xD;		"name": "anna03",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			138,&#xD;			70,&#xD;			2&#xD;		],&#xD;		"md5": "69da72a9a29181425944e7963eb4f32a.png",&#xD;		"type": "costume",&#xD;		"name": "anna04",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			134,&#xD;			246,&#xD;			2&#xD;		],&#xD;		"md5": "1b396abf1336bceddb01166d975dad3b.png",&#xD;		"type": "costume",&#xD;		"name": "anna05",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			118,&#xD;			224,&#xD;			2&#xD;		],&#xD;		"md5": "d32ac2b2e9c8fa2f7b251275d8eec8c9.png",&#xD;		"type": "costume",&#xD;		"name": "anna06",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			124,&#xD;			224,&#xD;			2&#xD;		],&#xD;		"md5": "c0961caabfa8545b6080ea7825d6fc66.png",&#xD;		"type": "costume",&#xD;		"name": "anna07",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			202,&#xD;			224,&#xD;			2&#xD;		],&#xD;		"md5": "c21f0ef20be25af3b7c1ed42e974c75f.png",&#xD;		"type": "costume",&#xD;		"name": "anna07b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			218,&#xD;			2&#xD;		],&#xD;		"md5": "54ed739e6ea31d128c319e8a3401af71.png",&#xD;		"type": "costume",&#xD;		"name": "anna07c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			126,&#xD;			212,&#xD;			2&#xD;		],&#xD;		"md5": "2d9bffdb6cda1ce0c77cfb3e001598f3.png",&#xD;		"type": "costume",&#xD;		"name": "anna08",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			130,&#xD;			220,&#xD;			2&#xD;		],&#xD;		"md5": "91f689627fa18d43ff6362ef872d90e2.png",&#xD;		"type": "costume",&#xD;		"name": "anna09",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			148,&#xD;			260,&#xD;			2&#xD;		],&#xD;		"md5": "eab5b5e2c4be253de024dd3deab68a66.png",&#xD;		"type": "costume",&#xD;		"name": "anna10",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			46,&#xD;			278,&#xD;			2&#xD;		],&#xD;		"md5": "859f95864d28fdb49d4170ce30fdd031.png",&#xD;		"type": "costume",&#xD;		"name": "anna11",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			42,&#xD;			206,&#xD;			2&#xD;		],&#xD;		"md5": "66133f695a23f669cc0fa6f06f275ab7.png",&#xD;		"type": "costume",&#xD;		"name": "anna12",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			31&#xD;		],&#xD;		"md5": "831ccd4741a7a56d85f6698a21f4ca69.svg",&#xD;		"type": "costume",&#xD;		"name": "apple",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			23&#xD;		],&#xD;		"md5": "62f8794dd120e9b4ead4d098d50fc64b.svg",&#xD;		"type": "costume",&#xD;		"name": "arrow1-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			23&#xD;		],&#xD;		"md5": "a157dc7e33d7c7a048af933de999e397.svg",&#xD;		"type": "costume",&#xD;		"name": "arrow1-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			28&#xD;		],&#xD;		"md5": "d3b389e91f7beb22b2b1a80af09990ee.svg",&#xD;		"type": "costume",&#xD;		"name": "arrow1-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			28&#xD;		],&#xD;		"md5": "412717ff731e9f19003a5840054057eb.svg",&#xD;		"type": "costume",&#xD;		"name": "arrow1-d",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			94&#xD;		],&#xD;		"md5": "21393c9114c7d34b1df7ccd12c793672.svg",&#xD;		"type": "costume",&#xD;		"name": "avery-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			94&#xD;		],&#xD;		"md5": "cc55f2f09599edc4ae0876e8b3d187d0.svg",&#xD;		"type": "costume",&#xD;		"name": "avery-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			95&#xD;		],&#xD;		"md5": "ed334e546806dfbf26d2591d7ddb12d0.svg",&#xD;		"type": "costume",&#xD;		"name": "avery walking-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			102&#xD;		],&#xD;		"md5": "c295731e8666ad2e1575fb4b4f82988d.svg",&#xD;		"type": "costume",&#xD;		"name": "avery walking-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			95&#xD;		],&#xD;		"md5": "597a834225c9949e419dff7db1bc2453.svg",&#xD;		"type": "costume",&#xD;		"name": "avery walking-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			101&#xD;		],&#xD;		"md5": "ce9622d11d24607eec7988196b38c3c6.svg",&#xD;		"type": "costume",&#xD;		"name": "avery walking-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			278,&#xD;			2&#xD;		],&#xD;		"md5": "e64363afc7f1e6951cb7967f50de2ba7.png",&#xD;		"type": "costume",&#xD;		"name": "AZ stance",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			274,&#xD;			2&#xD;		],&#xD;		"md5": "75b370524c92025cfa6f9071a6333e00.png",&#xD;		"type": "costume",&#xD;		"name": "AZ top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			200,&#xD;			270,&#xD;			2&#xD;		],&#xD;		"md5": "3769dbe6e19b0e19ebf9416ba8660b88.png",&#xD;		"type": "costume",&#xD;		"name": "AZ top R step",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			144,&#xD;			266,&#xD;			2&#xD;		],&#xD;		"md5": "3d618085bce1a68829fa2cd5deab7871.png",&#xD;		"type": "costume",&#xD;		"name": "AZ top L step",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			258,&#xD;			2&#xD;		],&#xD;		"md5": "ea33d5c631d8308b47685f1963becd4c.png",&#xD;		"type": "costume",&#xD;		"name": "AZ top freeze",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			206,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "44216804569454067953fdd5c6b72928.png",&#xD;		"type": "costume",&#xD;		"name": "AZ top R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			266,&#xD;			2&#xD;		],&#xD;		"md5": "97c14e52551ae65679d61de6c94f0ec8.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop front",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			188,&#xD;			2&#xD;		],&#xD;		"md5": "2f8d07b568c8c67a0d211b5de09295d3.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop down",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			184,&#xD;			266,&#xD;			2&#xD;		],&#xD;		"md5": "4e7e43a86f1f09f1194e3579e7f385f5.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop left",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			276,&#xD;			2&#xD;		],&#xD;		"md5": "15a9d503613c649ca3a55829dbd98869.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop right",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			280,&#xD;			2&#xD;		],&#xD;		"md5": "0f6462025c20ac346a7f54164832d495.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			92,&#xD;			280,&#xD;			2&#xD;		],&#xD;		"md5": "34b67b9e4db3aacbae735ade6a0539c2.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			278,&#xD;			2&#xD;		],&#xD;		"md5": "129472ac2779eb6bc2dd9bfbf0d33f56.png",&#xD;		"type": "costume",&#xD;		"name": "AZ pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			22&#xD;		],&#xD;		"md5": "10117ddaefa98d819f2b1df93805622f.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			22&#xD;		],&#xD;		"md5": "6e6330cad7750ea7e9dc88402661deb8.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			22&#xD;		],&#xD;		"md5": "bb45ed5db278f15c17c012c34a6b160f.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			22&#xD;		],&#xD;		"md5": "5d494659deae5c0de06b5885f5524276.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-d",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			22&#xD;		],&#xD;		"md5": "e80c98bc62fd32e8df81642af11ffb1a.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-e",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			34&#xD;		],&#xD;		"md5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;		"type": "costume",&#xD;		"name": "ball-soccer",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "6051bb7008cf17c8853a6f81f04c8a0f.svg",&#xD;		"type": "costume",&#xD;		"name": "ballerina-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "8bc5e47fb1439e29e11e9e3f2e20c6de.svg",&#xD;		"type": "costume",&#xD;		"name": "ballerina-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "6d3a07761b294f705987b0af58f8e335.svg",&#xD;		"type": "costume",&#xD;		"name": "ballerina-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "c3164795edf39e436272f425b4f5e487.svg",&#xD;		"type": "costume",&#xD;		"name": "ballerina-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			94&#xD;		],&#xD;		"md5": "bc96a1fb5fe794377acd44807e421ce2.svg",&#xD;		"type": "costume",&#xD;		"name": "balloon1-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			94&#xD;		],&#xD;		"md5": "d7bb51d9c38af6314bd2b4058d2a592d.svg",&#xD;		"type": "costume",&#xD;		"name": "balloon1-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			94&#xD;		],&#xD;		"md5": "247cef27b665d77d9efaca69327cae77.svg",&#xD;		"type": "costume",&#xD;		"name": "balloon1-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			37&#xD;		],&#xD;		"md5": "40bb8a1afe88cec78254f6fcfee98242.svg",&#xD;		"type": "costume",&#xD;		"name": "bananas",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			34,&#xD;			31&#xD;		],&#xD;		"md5": "6e13ef53885d2cfca9a54cc5c3f6c20f.svg",&#xD;		"type": "costume",&#xD;		"name": "baseball",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			39&#xD;		],&#xD;		"md5": "ac3432618ac868309f502024aa78423c.svg",&#xD;		"type": "costume",&#xD;		"name": "basketball",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			60,&#xD;			110&#xD;		],&#xD;		"md5": "bdbd2876847e54309a5ff3ee0895d724.svg",&#xD;		"type": "costume",&#xD;		"name": "bass",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "7ad915f8e0884f497a24d5bb61ea8a4a.svg",&#xD;		"type": "costume",&#xD;		"name": "bat1-a ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "f127434672b872a902346ef3c1af45f2.svg",&#xD;		"type": "costume",&#xD;		"name": "bat1-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "647d4bd53163f94a7dabf623ccab7fd3.svg",&#xD;		"type": "costume",&#xD;		"name": "bat2-a ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "8aa1d20e4f7761becbe9bafa75290465.svg",&#xD;		"type": "costume",&#xD;		"name": "bat2-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			34,&#xD;			33&#xD;		],&#xD;		"md5": "87d64cab74c64b31498cc85f07510ee4.svg",&#xD;		"type": "costume",&#xD;		"name": "beachball",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			56,&#xD;			93&#xD;		],&#xD;		"md5": "598722f70e86e6f9b23ef97680baaa9c.svg",&#xD;		"type": "costume",&#xD;		"name": "bear1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			56,&#xD;			93&#xD;		],&#xD;		"md5": "76ceb0de4409f42713b50cbc1fb45af5.svg",&#xD;		"type": "costume",&#xD;		"name": "bear1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			42&#xD;		],&#xD;		"md5": "3eb8e16a983ff23c418374389c81bd30.svg",&#xD;		"type": "costume",&#xD;		"name": "bear2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			51,&#xD;			42&#xD;		],&#xD;		"md5": "12bb6960ac01b65ae9b5e5e7f79700ac.svg",&#xD;		"type": "costume",&#xD;		"name": "bear2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			43,&#xD;			38&#xD;		],&#xD;		"md5": "e1ce8f153f011fdd52486c91c6ed594d.svg",&#xD;		"type": "costume",&#xD;		"name": "beetle",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			69&#xD;		],&#xD;		"md5": "f35056c772395455d703773657e1da6e.svg",&#xD;		"type": "costume",&#xD;		"name": "bell1",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			53,&#xD;			51&#xD;		],&#xD;		"md5": "1f151bee966df3f0c41138941713280e.svg",&#xD;		"type": "costume",&#xD;		"name": "bells-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			31&#xD;		],&#xD;		"md5": "5b3879a162881aed93169bf0a6680f45.svg",&#xD;		"type": "costume",&#xD;		"name": "bells-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			15&#xD;		],&#xD;		"md5": "86f616639846f06fef29931e6b9b59de.svg",&#xD;		"type": "costume",&#xD;		"name": "bowl-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			11,&#xD;			4&#xD;		],&#xD;		"md5": "534d9924d2f9bfe240f041e3ce55ccf5.svg",&#xD;		"type": "costume",&#xD;		"name": "bowtie-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			11,&#xD;			4&#xD;		],&#xD;		"md5": "8be1e90e19cd1faced8a2e83c2b5c90d.svg",&#xD;		"type": "costume",&#xD;		"name": "bowtie-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			113,&#xD;			90,&#xD;			1&#xD;		],&#xD;		"md5": "cafd225b63d3aeeedc8df926fe5b6ab4.png",&#xD;		"type": "costume",&#xD;		"name": "breakdancer1-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			90,&#xD;			1&#xD;		],&#xD;		"md5": "84bcb1be206e8653a7d97549733c3db5.png",&#xD;		"type": "costume",&#xD;		"name": "breakdancer1-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			90,&#xD;			1&#xD;		],&#xD;		"md5": "b345babf9f78b5e88a288a4b13a7ca29.png",&#xD;		"type": "costume",&#xD;		"name": "breakdancer1-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			30&#xD;		],&#xD;		"md5": "d713270e235851e5962becd73a951771.svg",&#xD;		"type": "costume",&#xD;		"name": "building-a",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			46,&#xD;			-11&#xD;		],&#xD;		"md5": "8c2d59c50a97d33b096f629258f02be6.svg",&#xD;		"type": "costume",&#xD;		"name": "building-b",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			17&#xD;		],&#xD;		"md5": "7f3f51f495c39809bed95991dfa1f80d.svg",&#xD;		"type": "costume",&#xD;		"name": "building-c",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			-10&#xD;		],&#xD;		"md5": "61ba83d6bded299dd91168eb24cd379f.svg",&#xD;		"type": "costume",&#xD;		"name": "building-d",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			55&#xD;		],&#xD;		"md5": "1beeb8f034a1128c9a799297b0b7fc26.svg",&#xD;		"type": "costume",&#xD;		"name": "building-e",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			27&#xD;		],&#xD;		"md5": "451e0a565e95d945fe2addfe609ee9df.svg",&#xD;		"type": "costume",&#xD;		"name": "building-f",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			-65&#xD;		],&#xD;		"md5": "58b3c9b7a41dde698fa2b427b502c1fa.svg",&#xD;		"type": "costume",&#xD;		"name": "building-g",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			136&#xD;		],&#xD;		"md5": "e952c8b14eeac894302d07d37a45ed99.svg",&#xD;		"type": "costume",&#xD;		"name": "building-h",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			-12&#xD;		],&#xD;		"md5": "b00b1123e3bfcb600242528d059ffcfb.svg",&#xD;		"type": "costume",&#xD;		"name": "building-i",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			33&#xD;		],&#xD;		"md5": "e08fd1a7397efcfe0e3691f945693cb4.svg",&#xD;		"type": "costume",&#xD;		"name": "building-j",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			120,&#xD;			35,&#xD;			1&#xD;		],&#xD;		"md5": "66895930177178ea01d9e610917f8acf.png",&#xD;		"type": "costume",&#xD;		"name": "bus",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "836d4cc7889f4a1cbcb0303934f31f79.svg",&#xD;		"type": "costume",&#xD;		"name": "butterfly1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "55dd0671a359d7c35f7b78f4176660e8.svg",&#xD;		"type": "costume",&#xD;		"name": "butterfly1-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "a0216895beade6afc6d42bd5bb43faea.svg",&#xD;		"type": "costume",&#xD;		"name": "butterfly2 ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "8907a43cf08b0a9134969023be2074c5.svg",&#xD;		"type": "costume",&#xD;		"name": "butterfly3 ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "7ef67c5bc8cf7df64fdb3b1d6b250f71.svg",&#xD;		"type": "costume",&#xD;		"name": "button1",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "c0051ff23e9aae78295964206793c1e3.svg",&#xD;		"type": "costume",&#xD;		"name": "button2-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "712a561dc0ad66e348b8247e566b50ef.svg",&#xD;		"type": "costume",&#xD;		"name": "button2-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "ffb2a9c21084c58fdb677c8d12a97519.svg",&#xD;		"type": "costume",&#xD;		"name": "button3-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "7a9ccb55e4da36f48811ab125d2492e0.svg",&#xD;		"type": "costume",&#xD;		"name": "button3-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			34&#xD;		],&#xD;		"md5": "8782b457cdf4a10ca016ff1ec0c744ef.svg",&#xD;		"type": "costume",&#xD;		"name": "button4-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			34&#xD;		],&#xD;		"md5": "840f4ef01849e459fd84f5470a3b0080.svg",&#xD;		"type": "costume",&#xD;		"name": "button4-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "71e97245b7be4fd6fe3ba8cdeecadaf1.svg",&#xD;		"type": "costume",&#xD;		"name": "button5-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "54cd55512f7571060e6e64168e541222.svg",&#xD;		"type": "costume",&#xD;		"name": "button5-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			50&#xD;		],&#xD;		"md5": "97ab3596dc06510e963fa29795e663bf.svg",&#xD;		"type": "costume",&#xD;		"name": "cake-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			42&#xD;		],&#xD;		"md5": "61d5481955a2f42cb843d09506f6744e.svg",&#xD;		"type": "costume",&#xD;		"name": "cake-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			108,&#xD;			1&#xD;		],&#xD;		"md5": "82b2f97fec9083cad502a781fe88929b.png",&#xD;		"type": "costume",&#xD;		"name": "calvrett jumping",&#xD;		"tags": [&#xD;			"people",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			85,&#xD;			1&#xD;		],&#xD;		"md5": "b8d2409e58b663020353c08fb029b7e6.png",&#xD;		"type": "costume",&#xD;		"name": "calvrett thinking",&#xD;		"tags": [&#xD;			"people",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			32&#xD;		],&#xD;		"md5": "9bb90825b1d7c360aa47ee18883cd3cd.svg",&#xD;		"type": "costume",&#xD;		"name": "candle1-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			32&#xD;		],&#xD;		"md5": "4f2ab7fc559ecbbc61721f76639a4e44.svg",&#xD;		"type": "costume",&#xD;		"name": "candle1-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			37&#xD;		],&#xD;		"md5": "b8432a2c0d04408b3ba58ec3b01582f0.svg",&#xD;		"type": "costume",&#xD;		"name": "candles1",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			79&#xD;		],&#xD;		"md5": "76a9de5efb140fe287dc0f197a0e8d4c.svg",&#xD;		"type": "costume",&#xD;		"name": "candles2",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			39,&#xD;			1&#xD;		],&#xD;		"md5": "c0b7d099a815f58ff6d92538856f08c1.png",&#xD;		"type": "costume",&#xD;		"name": "car-bug",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			43,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "db4e1ee1f9102e3da5e06f2d17881df5.png",&#xD;		"type": "costume",&#xD;		"name": "cassy-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "2f6f57d1ab69fc18a38fd30572530437.png",&#xD;		"type": "costume",&#xD;		"name": "cassy-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			58,&#xD;			1&#xD;		],&#xD;		"md5": "662752d56bb77544f3e79ee8c16b3f2d.png",&#xD;		"type": "costume",&#xD;		"name": "cassy-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "24e9dac390ae4e5b0c17e7d922eb033b.png",&#xD;		"type": "costume",&#xD;		"name": "cassy-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			104,&#xD;			192,&#xD;			2&#xD;		],&#xD;		"md5": "6cb3686db1fa658b6541cc9fa3ccfcc7.png",&#xD;		"type": "costume",&#xD;		"name": "cassy dance-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			140,&#xD;			192,&#xD;			2&#xD;		],&#xD;		"md5": "086dc4312d3bf4595d6b3fd4b1021b35.png",&#xD;		"type": "costume",&#xD;		"name": "cassy dance-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			188,&#xD;			2&#xD;		],&#xD;		"md5": "dffbfb382641655dbd698559ed49fd99.png",&#xD;		"type": "costume",&#xD;		"name": "cassy dance-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			94,&#xD;			180,&#xD;			2&#xD;		],&#xD;		"md5": "d0e98431c4744f684a13e8331d838203.png",&#xD;		"type": "costume",&#xD;		"name": "cassy dance-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			50&#xD;		],&#xD;		"md5": "f88bf1935daea28f8ca098462a31dbb0.svg",&#xD;		"type": "costume",&#xD;		"name": "cat1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			55&#xD;		],&#xD;		"md5": "6e8bd9ae68fdb02b7e1e3df656a75635.svg",&#xD;		"type": "costume",&#xD;		"name": "cat1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			67,&#xD;			48&#xD;		],&#xD;		"md5": "1e81725d2d2c7de4a2dd4a145198a43c.svg",&#xD;		"type": "costume",&#xD;		"name": "cat1 flying-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			42,&#xD;			44&#xD;		],&#xD;		"md5": "0d192725870ef0eda50d91cab0e3c9c5.svg",&#xD;		"type": "costume",&#xD;		"name": "cat1 flying-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			87,&#xD;			39&#xD;		],&#xD;		"md5": "01ae57fd339529445cb890978ef8a054.svg",&#xD;		"type": "costume",&#xD;		"name": "cat2",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			123,&#xD;			2&#xD;		],&#xD;		"md5": "7f7684029e9726376aaaae1158439f3e.png",&#xD;		"type": "costume",&#xD;		"name": "catherine-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			179,&#xD;			133,&#xD;			2&#xD;		],&#xD;		"md5": "79052da8d59a6a16a0f6d09cd94237ae.png",&#xD;		"type": "costume",&#xD;		"name": "catherine-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			103,&#xD;			28,&#xD;			2&#xD;		],&#xD;		"md5": "6e34f695da1e18d53e6c050d95ba0e4a.png",&#xD;		"type": "costume",&#xD;		"name": "catherine-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			121,&#xD;			113,&#xD;			2&#xD;		],&#xD;		"md5": "feff7824a6fd6747391012dcfe9ac4f0.png",&#xD;		"type": "costume",&#xD;		"name": "catherine-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			248,&#xD;			306,&#xD;			2&#xD;		],&#xD;		"md5": "b940c99d8e677ac5773cb4d592b16734.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			164,&#xD;			290,&#xD;			2&#xD;		],&#xD;		"md5": "2ebc7632bc9e665d9eeea93190fad7ad.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			152,&#xD;			270,&#xD;			2&#xD;		],&#xD;		"md5": "bfcff80b0044c644c555ba24f2484106.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			188,&#xD;			260,&#xD;			2&#xD;		],&#xD;		"md5": "34de53e52a768d60a96e3ae0c030dfc5.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			190,&#xD;			248,&#xD;			2&#xD;		],&#xD;		"md5": "0cb685bf8584df9caf124da929ab3453.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-e",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			114,&#xD;			250,&#xD;			2&#xD;		],&#xD;		"md5": "516d30b29aed8145718db421f4737953.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-f",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			132,&#xD;			258,&#xD;			2&#xD;		],&#xD;		"md5": "49e0edcb319527d936981f06b4111d53.png",&#xD;		"type": "costume",&#xD;		"name": "champ99-g",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			87,&#xD;			72,&#xD;			2&#xD;		],&#xD;		"md5": "4c99a77ba72abaf6c961e8684f8a8a9f.png",&#xD;		"type": "costume",&#xD;		"name": "cheesy-puffs",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			71,&#xD;			45&#xD;		],&#xD;		"md5": "47005a1f20309f577a03a67abbb6b94e.svg",&#xD;		"type": "costume",&#xD;		"name": "cloud",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			19&#xD;		],&#xD;		"md5": "c7d7de8e29179407f03b054fa640f4d0.svg",&#xD;		"type": "costume",&#xD;		"name": "cloud-a",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			101,&#xD;			20&#xD;		],&#xD;		"md5": "d8595350ebb460494c9189dabb968336.svg",&#xD;		"type": "costume",&#xD;		"name": "cloud-b",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			97,&#xD;			9&#xD;		],&#xD;		"md5": "395fc991e64ac0a4aa46758ab4bc65cb.svg",&#xD;		"type": "costume",&#xD;		"name": "cloud-c",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			87,&#xD;			21&#xD;		],&#xD;		"md5": "1767e704acb11ffa409f77cc79ba7e86.svg",&#xD;		"type": "costume",&#xD;		"name": "cloud-d",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			226,&#xD;			2&#xD;		],&#xD;		"md5": "db291ec7e061ecd4d797875e3aec0a09.png",&#xD;		"type": "costume",&#xD;		"name": "cm top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			90,&#xD;			240,&#xD;			2&#xD;		],&#xD;		"md5": "b5cfa26a969dc001fb38d29c5ef8f1bf.png",&#xD;		"type": "costume",&#xD;		"name": "cm top R leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			116,&#xD;			238,&#xD;			2&#xD;		],&#xD;		"md5": "9b3224263e7c828c54326d9b4f22a74b.png",&#xD;		"type": "costume",&#xD;		"name": "cm top L leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			180,&#xD;			2&#xD;		],&#xD;		"md5": "ab97d9c6e3c0efe27bfd9e44ac3af497.png",&#xD;		"type": "costume",&#xD;		"name": "cm top ready",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			122,&#xD;			162,&#xD;			2&#xD;		],&#xD;		"md5": "3b0538ba8b6fcc0f938013b912e34305.png",&#xD;		"type": "costume",&#xD;		"name": "cm top L cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			156,&#xD;			164,&#xD;			2&#xD;		],&#xD;		"md5": "00716f8ab864ae479db3017146d28c64.png",&#xD;		"type": "costume",&#xD;		"name": "cm top R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			136,&#xD;			243,&#xD;			2&#xD;		],&#xD;		"md5": "ce0928c8dbc625661b44c3503debae7e.png",&#xD;		"type": "costume",&#xD;		"name": "cm pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			79,&#xD;			229,&#xD;			2&#xD;		],&#xD;		"md5": "e5555af183c643c7006632b26d851a32.png",&#xD;		"type": "costume",&#xD;		"name": "cm pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			110,&#xD;			27,&#xD;			1&#xD;		],&#xD;		"md5": "099953d710d842e592084765c17bda82.png",&#xD;		"type": "costume",&#xD;		"name": "convertible1",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			90,&#xD;			22,&#xD;			1&#xD;		],&#xD;		"md5": "2091f1f3fc578189bced6b257f353995.png",&#xD;		"type": "costume",&#xD;		"name": "convertible2",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "b6ac3c9e1789cba2302d2ef82d62d019.svg",&#xD;		"type": "costume",&#xD;		"name": "convertible3",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			30&#xD;		],&#xD;		"md5": "3b00920b17d43986685f3855bcb6afe7.svg",&#xD;		"type": "costume",&#xD;		"name": "cowbell",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "114249a5660f7948663d95de575cfd8d.svg",&#xD;		"type": "costume",&#xD;		"name": "crab-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "9bf050664e68c10d2616e85f2873be09.svg",&#xD;		"type": "costume",&#xD;		"name": "crab-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			80&#xD;		],&#xD;		"md5": "a560c6eab2e1de2462bdaeb1d698736c.svg",&#xD;		"type": "costume",&#xD;		"name": "creature1-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			60,&#xD;			78&#xD;		],&#xD;		"md5": "8042b71fc2ae322151c0a3a163701333.svg",&#xD;		"type": "costume",&#xD;		"name": "creature1-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			63,&#xD;			164&#xD;		],&#xD;		"md5": "e12a83c8f1c0545b59fe8673e9fac79c.svg",&#xD;		"type": "costume",&#xD;		"name": "creature1-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			34,&#xD;			60&#xD;		],&#xD;		"md5": "532860ee3ecfd05d5f473dbe3ea69c8e.svg",&#xD;		"type": "costume",&#xD;		"name": "cymbal-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			73&#xD;		],&#xD;		"md5": "ae5b19022fa882ff95790b25279b9a3f.svg",&#xD;		"type": "costume",&#xD;		"name": "cymbal-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			55,&#xD;			119&#xD;		],&#xD;		"md5": "b30a60d31aebead577b73affd22bf30f.svg",&#xD;		"type": "costume",&#xD;		"name": "dm stance",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			244,&#xD;			2&#xD;		],&#xD;		"md5": "cbf035d39d0a0bb070d2eb998cebd60d.png",&#xD;		"type": "costume",&#xD;		"name": "dm top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			218,&#xD;			232,&#xD;			2&#xD;		],&#xD;		"md5": "fcb8c2b6cf9b7e6ce9df521b2486deb3.png",&#xD;		"type": "costume",&#xD;		"name": "dm top R leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			230,&#xD;			240,&#xD;			2&#xD;		],&#xD;		"md5": "fd8bb9665fe078d2d95dbc35bccf4046.png",&#xD;		"type": "costume",&#xD;		"name": "dm top L leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			220,&#xD;			234,&#xD;			2&#xD;		],&#xD;		"md5": "31e687f186b19ea120cd5cfc9dea2a3f.png",&#xD;		"type": "costume",&#xD;		"name": "dm freeze",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			92,&#xD;			234,&#xD;			2&#xD;		],&#xD;		"md5": "0b2fb609d6d10decfdd5a1c3b58369b4.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop front",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			74,&#xD;			2&#xD;		],&#xD;		"md5": "3b65ce3551f9c111794f7f1fb8f325be.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop down",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			204,&#xD;			250,&#xD;			2&#xD;		],&#xD;		"md5": "f636510e8ef231d7c0e72a572ce91c99.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop left",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			238,&#xD;			2&#xD;		],&#xD;		"md5": "36b32430e45e071071052ef33c637f48.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop right",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			90,&#xD;			238,&#xD;			2&#xD;		],&#xD;		"md5": "426e1520efc34fef45be0596fd5f7120.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			244,&#xD;			2&#xD;		],&#xD;		"md5": "370cc57b40f1f1d6e52d6330b73d207f.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			80,&#xD;			240,&#xD;			2&#xD;		],&#xD;		"md5": "56fe91d2cf3ecb9d1b94006aee9eff79.png",&#xD;		"type": "costume",&#xD;		"name": "dm pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			218,&#xD;			232,&#xD;			2&#xD;		],&#xD;		"md5": "fcb8c2b6cf9b7e6ce9df521b2486deb3.png",&#xD;		"type": "costume",&#xD;		"name": "dm top R leg2",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "1baa5b126e0e14d6070a997c0deefab5.png",&#xD;		"type": "costume",&#xD;		"name": "dan-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "74be10ac815fd090cb42b92801002bb1.png",&#xD;		"type": "costume",&#xD;		"name": "dan-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			115&#xD;		],&#xD;		"md5": "f3038fb0f4a00806b02081c6789dd8cf.svg",&#xD;		"type": "costume",&#xD;		"name": "dani-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"people",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			115&#xD;		],&#xD;		"md5": "e5c7dd4905a78e1d54087b7165dd1e8c.svg",&#xD;		"type": "costume",&#xD;		"name": "dani-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"people",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			113&#xD;		],&#xD;		"md5": "cbc5f9c67022af201d498bc9b35608b8.svg",&#xD;		"type": "costume",&#xD;		"name": "dani-c",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"people",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			99&#xD;		],&#xD;		"md5": "aa239b7ccdce6bddf06900c709525764.svg",&#xD;		"type": "costume",&#xD;		"name": "dee-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			99&#xD;		],&#xD;		"md5": "62b4ac1b735599e21af77c390b178095.svg",&#xD;		"type": "costume",&#xD;		"name": "dee-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			102&#xD;		],&#xD;		"md5": "6aa6196ce3245e93b8d1299f33adffcd.svg",&#xD;		"type": "costume",&#xD;		"name": "dee-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			99&#xD;		],&#xD;		"md5": "2159a6be8f7ff450d0b5e938ca34a3f4.svg",&#xD;		"type": "costume",&#xD;		"name": "dee-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			99&#xD;		],&#xD;		"md5": "e358d2a7e3a0a680928657161ce81a0a.svg",&#xD;		"type": "costume",&#xD;		"name": "dee-e",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			95&#xD;		],&#xD;		"md5": "b1897e56265470b55fa65fabe2423c55.svg",&#xD;		"type": "costume",&#xD;		"name": "devin-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			96&#xD;		],&#xD;		"md5": "873fbd641768c8f753a6568da97633e7.svg",&#xD;		"type": "costume",&#xD;		"name": "devin-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			95&#xD;		],&#xD;		"md5": "eac3c03d86cebb42c8f30e373cb7f623.svg",&#xD;		"type": "costume",&#xD;		"name": "devin-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			95&#xD;		],&#xD;		"md5": "fa6a75afb0e4b822b91d8bb20d40c68f.svg",&#xD;		"type": "costume",&#xD;		"name": "devin-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			84&#xD;		],&#xD;		"md5": "286094ffce382c8383519ab896711989.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			116,&#xD;			79&#xD;		],&#xD;		"md5": "d9eca17b8569f2cde20ef7d3ed0fe19f.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			65,&#xD;			89&#xD;		],&#xD;		"md5": "ade3d2ec5029693ecdcca17974bad5fd.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-c",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			45,&#xD;			87&#xD;		],&#xD;		"md5": "2aa7257a3e0a19ee315b23eaf7f56933.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-d",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			84&#xD;		],&#xD;		"md5": "ed46ee11478715f7596d01fb0f98aa3f.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-e",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			76&#xD;		],&#xD;		"md5": "39caf2473b1eee55edb688cfa3c240c7.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-f",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			72&#xD;		],&#xD;		"md5": "f0f2aa4e8e015de497050d8d44bbfbf1.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur1-g",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "ae724a0a6d6e0a2b33dded4140219fb0.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			67,&#xD;			67&#xD;		],&#xD;		"md5": "a01d31caaab3b14b9bb0e2cd5a86c70c.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "79bb51bbf809b412147f2a196f8c9292.svg",&#xD;		"type": "costume",&#xD;		"name": "dinosaur3",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "853803d5600b66538474909c5438c8ee.svg",&#xD;		"type": "costume",&#xD;		"name": "diver1",&#xD;		"tags": [&#xD;			"people",&#xD;			"underwater",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "248d3e69ada69a64b1077149ef6a931a.svg",&#xD;		"type": "costume",&#xD;		"name": "diver2",&#xD;		"tags": [&#xD;			"people",&#xD;			"underwater",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			83,&#xD;			80&#xD;		],&#xD;		"md5": "39ddefa0cc58f3b1b06474d63d81ef56.svg",&#xD;		"type": "costume",&#xD;		"name": "dog1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			83,&#xD;			80&#xD;		],&#xD;		"md5": "598f4aa3d8f671375d1d2b3acf753416.svg",&#xD;		"type": "costume",&#xD;		"name": "dog1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "e921f865b19b27cd99e16a341dbf09c2.svg",&#xD;		"type": "costume",&#xD;		"name": "dog2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "891f2fb7daf79ba8b224a9173eeb0a63.svg",&#xD;		"type": "costume",&#xD;		"name": "dog2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "cd236d5eef4431dea82983ac9eec406b.svg",&#xD;		"type": "costume",&#xD;		"name": "dog2-c",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			107,&#xD;			103,&#xD;			2&#xD;		],&#xD;		"md5": "fd6c2d1d10a163bc5b7458f7275750f0.png",&#xD;		"type": "costume",&#xD;		"name": "dog puppy right",&#xD;		"tags": [&#xD;			"animals",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			87,&#xD;			112,&#xD;			2&#xD;		],&#xD;		"md5": "00b1589467f939b9c61f666bca2d25d1.png",&#xD;		"type": "costume",&#xD;		"name": "dog puppy sit",&#xD;		"tags": [&#xD;			"animals",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			104,&#xD;			114,&#xD;			2&#xD;		],&#xD;		"md5": "63c3d6718943ecbf48f94b3b131ae8a4.png",&#xD;		"type": "costume",&#xD;		"name": "dog puppy side",&#xD;		"tags": [&#xD;			"animals",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			234,&#xD;			94,&#xD;			2&#xD;		],&#xD;		"md5": "88559ad0334a8a51aca31035068682f6.png",&#xD;		"type": "costume",&#xD;		"name": "dog puppy back",&#xD;		"tags": [&#xD;			"animals",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			15&#xD;		],&#xD;		"md5": "9e7b4d153421dae04a24571d7e079e85.svg",&#xD;		"type": "costume",&#xD;		"name": "donut",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			86,&#xD;			59&#xD;		],&#xD;		"md5": "6dde2b880ad6ddeaea2a53821befb86d.svg",&#xD;		"type": "costume",&#xD;		"name": "dove1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			88,&#xD;			57&#xD;		],&#xD;		"md5": "1c0bc118044d7f6033bc9cd1ef555590.svg",&#xD;		"type": "costume",&#xD;		"name": "dove1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			99,&#xD;			83&#xD;		],&#xD;		"md5": "42251c2649a073052eb4261d644281bb.svg",&#xD;		"type": "costume",&#xD;		"name": "dove2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			82&#xD;		],&#xD;		"md5": "469eb55a437364d831b80937c4ee1ab9.svg",&#xD;		"type": "costume",&#xD;		"name": "dove2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			65,&#xD;			60&#xD;		],&#xD;		"md5": "ee0082b436d6d5dc3de33047166e7bf2.svg",&#xD;		"type": "costume",&#xD;		"name": "dragon1-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"flying",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			56&#xD;		],&#xD;		"md5": "bb58ce36997fa205a86a085f202837fd.svg",&#xD;		"type": "costume",&#xD;		"name": "dragon1-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"flying",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			46&#xD;		],&#xD;		"md5": "3308e038214f5a4adc53076a9fee9021.svg",&#xD;		"type": "costume",&#xD;		"name": "drum bass-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			46&#xD;		],&#xD;		"md5": "5febb3df727fb6624946e807a665b866.svg",&#xD;		"type": "costume",&#xD;		"name": "drum bass-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			51,&#xD;			51&#xD;		],&#xD;		"md5": "b3da94523b6d3df2dd30602399599ab4.svg",&#xD;		"type": "costume",&#xD;		"name": "drums conga-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			79&#xD;		],&#xD;		"md5": "d4398062ed6e09927ab52823255186d3.svg",&#xD;		"type": "costume",&#xD;		"name": "drums conga-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			51,&#xD;			37&#xD;		],&#xD;		"md5": "868f700de73a35c4d6fa4c93507c348d.svg",&#xD;		"type": "costume",&#xD;		"name": "drum snare-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			57,&#xD;			59&#xD;		],&#xD;		"md5": "93738cb485ef57cbd4b9bff386d0bba2.svg",&#xD;		"type": "costume",&#xD;		"name": "drum snare-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			45&#xD;		],&#xD;		"md5": "68ce53b53fcc68744584c28d20144c4f.svg",&#xD;		"type": "costume",&#xD;		"name": "tabla-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			48&#xD;		],&#xD;		"md5": "01b6ffb8691d32be10fabc77ddfb55b0.svg",&#xD;		"type": "costume",&#xD;		"name": "tabla-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			44&#xD;		],&#xD;		"md5": "daad8bc865f55200844dbce476d2f1e9.svg",&#xD;		"type": "costume",&#xD;		"name": "drum1-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			60,&#xD;			61&#xD;		],&#xD;		"md5": "8a2e9596b02ecdc195d76c1f34a48f76.svg",&#xD;		"type": "costume",&#xD;		"name": "drum1-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			39&#xD;		],&#xD;		"md5": "68baa189ac7afb9426db1818aa88be8e.svg",&#xD;		"type": "costume",&#xD;		"name": "drum2-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			54&#xD;		],&#xD;		"md5": "4a58fe0f173104aab03aaccdd3ce5280.svg",&#xD;		"type": "costume",&#xD;		"name": "drum2-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			61,&#xD;			59&#xD;		],&#xD;		"md5": "c3baf7eedfbdac8cd1e4f1f1f779dc0c.svg",&#xD;		"type": "costume",&#xD;		"name": "duck",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "814197522984a302972998b1a7f92d91.svg",&#xD;		"type": "costume",&#xD;		"name": "earth",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			107,&#xD;			33&#xD;		],&#xD;		"md5": "b3515b3805938b0fae4e527aa0b4524e.svg",&#xD;		"type": "costume",&#xD;		"name": "elephant-a ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			95,&#xD;			40&#xD;		],&#xD;		"md5": "bce91fa266220d3679a4c19c4e38b1f7.svg",&#xD;		"type": "costume",&#xD;		"name": "elephant-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			83,&#xD;			1&#xD;		],&#xD;		"md5": "5542c53bb0ba87b39eba6ff743b8115c.png",&#xD;		"type": "costume",&#xD;		"name": "fire hydrant",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "df78f8195f72372846d96dc70cb0ad95.svg",&#xD;		"type": "costume",&#xD;		"name": "fish1",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "f3dd9cb79cce497a90900241cf726367.svg",&#xD;		"type": "costume",&#xD;		"name": "fish2",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "aec949cefb15ddd1330f3b633734d4d3.svg",&#xD;		"type": "costume",&#xD;		"name": "fish3",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			41&#xD;		],&#xD;		"md5": "7905272bf89ee61cd9d3680a67732815.svg",&#xD;		"type": "costume",&#xD;		"name": "flower shape",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "422b34b6e5a2fdb8d0ac00aca91ec714.png",&#xD;		"type": "costume",&#xD;		"name": "football running",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "1f57154842f68aa55577edc90a6f2b32.png",&#xD;		"type": "costume",&#xD;		"name": "football standing",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			31,&#xD;			1&#xD;		],&#xD;		"md5": "d47f0be24acf78130af2e03572a3f9d3.png",&#xD;		"type": "costume",&#xD;		"name": "fortunecookie",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "dd19959dc4d453813299f496124d50ff.svg",&#xD;		"type": "costume",&#xD;		"name": "fox",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			30&#xD;		],&#xD;		"md5": "285483a688eed2ff8010c65112f99c41.svg",&#xD;		"type": "costume",&#xD;		"name": "frog",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			40,&#xD;			1&#xD;		],&#xD;		"md5": "c6e2f673debcff91de8e3749ddf674b9.png",&#xD;		"type": "costume",&#xD;		"name": "fruit_platter",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			22&#xD;		],&#xD;		"md5": "dbf8cc34f7ca18b4a008d2890dba56b7.svg",&#xD;		"type": "costume",&#xD;		"name": "fruitsalad",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			60,&#xD;			63&#xD;		],&#xD;		"md5": "c88579c578f2d171de78612f2ff9c9d9.svg",&#xD;		"type": "costume",&#xD;		"name": "ghost1 ",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "607be245da950af1a4e4d79acfda46e3.svg",&#xD;		"type": "costume",&#xD;		"name": "ghost2-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "b9e2ebbe17c617ac182abd8bc1627693.svg",&#xD;		"type": "costume",&#xD;		"name": "ghost2-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "70ef3e78079cf4a1c9abf32b5d982b71.svg",&#xD;		"type": "costume",&#xD;		"name": "ghoul-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "6e962f1248f7a7201eb24d376d804093.svg",&#xD;		"type": "costume",&#xD;		"name": "ghoul-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			25&#xD;		],&#xD;		"md5": "abeae2217b3ce67b1ff761cd7a89274d.svg",&#xD;		"type": "costume",&#xD;		"name": "gift-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			26&#xD;		],&#xD;		"md5": "5cae973c98f2d98b51e6c6b3c9602f8c.svg",&#xD;		"type": "costume",&#xD;		"name": "gift-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			96&#xD;		],&#xD;		"md5": "93cb048a1d199f92424b9c097fa5fa38.svg",&#xD;		"type": "costume",&#xD;		"name": "giga-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			96&#xD;		],&#xD;		"md5": "528613711a7eae3a929025be04db081c.svg",&#xD;		"type": "costume",&#xD;		"name": "giga-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			96&#xD;		],&#xD;		"md5": "ee4dd21d7ca6d1b889ee25d245cbcc66.svg",&#xD;		"type": "costume",&#xD;		"name": "giga-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			96&#xD;		],&#xD;		"md5": "7708e2d9f83a01476ee6d17aa540ddf1.svg",&#xD;		"type": "costume",&#xD;		"name": "giga-d",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			107&#xD;		],&#xD;		"md5": "f76bc420011db2cdb2de378c1536f6da.svg",&#xD;		"type": "costume",&#xD;		"name": "Giga walk1",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			71,&#xD;			107&#xD;		],&#xD;		"md5": "43b5874e8a54f93bd02727f0abf6905b.svg",&#xD;		"type": "costume",&#xD;		"name": "Giga walk2",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			71,&#xD;			107&#xD;		],&#xD;		"md5": "9aab3bbb375765391978be4f6d478ab3.svg",&#xD;		"type": "costume",&#xD;		"name": "Giga walk3",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			110&#xD;		],&#xD;		"md5": "22e4ae40919cf0fe6b4d7649d14a6e71.svg",&#xD;		"type": "costume",&#xD;		"name": "Giga walk4",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			48&#xD;		],&#xD;		"md5": "c364b9e1f4bcdc61705032d89eaaa0a1.svg",&#xD;		"type": "costume",&#xD;		"name": "glass water-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			48&#xD;		],&#xD;		"md5": "bc07ce6a2004ac91ce704531a1c526e5.svg",&#xD;		"type": "costume",&#xD;		"name": "glass water-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			16,&#xD;			9&#xD;		],&#xD;		"md5": "5fcf716b53f223bc86b10ab0eca3e162.svg",&#xD;		"type": "costume",&#xD;		"name": "glasses",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			55&#xD;		],&#xD;		"md5": "1f5ea0d12f85aed2e471cdd21b0bd6d7.svg",&#xD;		"type": "costume",&#xD;		"name": "gobo-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			55&#xD;		],&#xD;		"md5": "73e493e4abd5d0954b677b97abcb7116.svg",&#xD;		"type": "costume",&#xD;		"name": "gobo-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			55&#xD;		],&#xD;		"md5": "bc68a6bdf300df7b53d73b38f74c844e.svg",&#xD;		"type": "costume",&#xD;		"name": "gobo-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			30&#xD;		],&#xD;		"md5": "173e20ac537d2c278ed621be3db3fc87.svg",&#xD;		"type": "costume",&#xD;		"name": "green flag",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			98&#xD;		],&#xD;		"md5": "dfa85e2a962b725ee53f61cea2edc1fb.svg",&#xD;		"type": "costume",&#xD;		"name": "guitar",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			53,&#xD;			145&#xD;		],&#xD;		"md5": "83cf122ec4a291e2a17910f718b583a5.svg",&#xD;		"type": "costume",&#xD;		"name": "guitar bass",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			114&#xD;		],&#xD;		"md5": "18d7b47368ba1ead0d1ca436b8369211.svg",&#xD;		"type": "costume",&#xD;		"name": "guitar electric",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			138,&#xD;			126,&#xD;			2&#xD;		],&#xD;		"md5": "b983d99560313e38b4b3cd36cbd5f0d1.png",&#xD;		"type": "costume",&#xD;		"name": "hannah-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap",&#xD;			"sports"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			160,&#xD;			2&#xD;		],&#xD;		"md5": "d0c3b4b24fbf1152de3ebb68f6b875ae.png",&#xD;		"type": "costume",&#xD;		"name": "hannah-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap",&#xD;			"sports"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			170,&#xD;			130,&#xD;			2&#xD;		],&#xD;		"md5": "5fdce07935156bbcf943793fa84e826c.png",&#xD;		"type": "costume",&#xD;		"name": "hannah-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap",&#xD;			"sports"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			60&#xD;		],&#xD;		"md5": "b3beb1f52d371428d70b65a0c4c5c001.svg",&#xD;		"type": "costume",&#xD;		"name": "Hat",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			19&#xD;		],&#xD;		"md5": "3271da33e4108ed08a303c2244739fbf.svg",&#xD;		"type": "costume",&#xD;		"name": "hat beanie",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "70a7f535d8857cf9175492415361c361.svg",&#xD;		"type": "costume",&#xD;		"name": "partyhat1",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "9b7a84fe3e50621752917e4e484a1e2f.svg",&#xD;		"type": "costume",&#xD;		"name": "hat party2-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			101&#xD;		],&#xD;		"md5": "6c2ee1b97f6ec2b3457a25a3975a2009.svg",&#xD;		"type": "costume",&#xD;		"name": "hat winter",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			69&#xD;		],&#xD;		"md5": "581571e8c8f5adeb01565e12b1b77b58.svg",&#xD;		"type": "costume",&#xD;		"name": "hat wizard",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"fantasy",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			53,&#xD;			43&#xD;		],&#xD;		"md5": "961148d1605a1bd8ce80ed8d39e831c2.svg",&#xD;		"type": "costume",&#xD;		"name": "headband",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			65,&#xD;			56&#xD;		],&#xD;		"md5": "6e79e087c866a016f99ee482e1aeba47.svg",&#xD;		"type": "costume",&#xD;		"name": "heart red",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			62&#xD;		],&#xD;		"md5": "b15362bb6b02a59e364db9081ccf19aa.svg",&#xD;		"type": "costume",&#xD;		"name": "heart purple",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			61&#xD;		],&#xD;		"md5": "d448acd247f10f32bef7823cd433f928.svg",&#xD;		"type": "costume",&#xD;		"name": "heart love it",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			61&#xD;		],&#xD;		"md5": "497c5df9e02467202ff93096dccaf91f.svg",&#xD;		"type": "costume",&#xD;		"name": "heart code",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			61&#xD;		],&#xD;		"md5": "a39d78d33b051e8b12a4b2a10d77b249.svg",&#xD;		"type": "costume",&#xD;		"name": "heart sweet",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			61&#xD;		],&#xD;		"md5": "74a8f75d139d330b715787edbbacd83d.svg",&#xD;		"type": "costume",&#xD;		"name": "heart smile",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			52&#xD;		],&#xD;		"md5": "4ab84263da32069cf97cc0fa52729a0d.svg",&#xD;		"type": "costume",&#xD;		"name": "heart face",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			81,&#xD;			77&#xD;		],&#xD;		"md5": "2bfa5c3b41d4be160ab0c157ce0f96a9.svg",&#xD;		"type": "costume",&#xD;		"name": "heart scratch",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			90,&#xD;			64,&#xD;			1&#xD;		],&#xD;		"md5": "8847e2d3383906dbabbf7ffa98945a7b.png",&#xD;		"type": "costume",&#xD;		"name": "helicopter",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"flying",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			65&#xD;		],&#xD;		"md5": "c1353c4a5eec5e6f32ed053e6f6e8f99.svg",&#xD;		"type": "costume",&#xD;		"name": "hippo1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"flying",&#xD;			"fantasy",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			68&#xD;		],&#xD;		"md5": "e65ed93bbb9cccf698fc7e774ab609a6.svg",&#xD;		"type": "costume",&#xD;		"name": "hippo1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"flying",&#xD;			"fantasy",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			44&#xD;		],&#xD;		"md5": "1d8583ca1b5c687f3de004c27110a130.svg",&#xD;		"type": "costume",&#xD;		"name": "holly1",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			42&#xD;		],&#xD;		"md5": "4b23f1d694ae8b400f1d7216dd8e49bc.svg",&#xD;		"type": "costume",&#xD;		"name": "holly2",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "1bac530a0701a8fc88bb0802ae6787a3.svg",&#xD;		"type": "costume",&#xD;		"name": "home button",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			119,&#xD;			83&#xD;		],&#xD;		"md5": "32f4d80477cd070cb0848e555d374060.svg",&#xD;		"type": "costume",&#xD;		"name": "horse1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"transportation",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			103,&#xD;			97&#xD;		],&#xD;		"md5": "ffa6431c5ef2a4e975ecffacdb0efea7.svg",&#xD;		"type": "costume",&#xD;		"name": "horse1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"transportation",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			154,&#xD;			2&#xD;		],&#xD;		"md5": "3ddc912edef87ae29121f57294fa0cb5.png",&#xD;		"type": "costume",&#xD;		"name": "jaime-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			154,&#xD;			2&#xD;		],&#xD;		"md5": "5a683f4536abca0f83a77bc341df4c9a.png",&#xD;		"type": "costume",&#xD;		"name": "jaime-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			106,&#xD;			172,&#xD;			2&#xD;		],&#xD;		"md5": "d6cc9814f7a6640e4c2b1a4276987dc5.png",&#xD;		"type": "costume",&#xD;		"name": "jaime walking-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			52,&#xD;			176,&#xD;			2&#xD;		],&#xD;		"md5": "7fb579a98d6db257f1b16109d3c4609a.png",&#xD;		"type": "costume",&#xD;		"name": "jaime walking-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			88,&#xD;			170,&#xD;			2&#xD;		],&#xD;		"md5": "5883bdefba451aaeac8d77c798d41eb0.png",&#xD;		"type": "costume",&#xD;		"name": "jaime walking-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			46,&#xD;			174,&#xD;			2&#xD;		],&#xD;		"md5": "4b9d2162e30dbb924840575ed35fddb0.png",&#xD;		"type": "costume",&#xD;		"name": "jaime walking-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			172,&#xD;			2&#xD;		],&#xD;		"md5": "63e56d28cc3e3d9b735e1f1d51248cc0.png",&#xD;		"type": "costume",&#xD;		"name": "jaime walking-e",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "cf32a87b2c9d7c2553f5a1ed17966504.gif",&#xD;		"type": "costume",&#xD;		"name": "jay",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			25&#xD;		],&#xD;		"md5": "4e283da8c59bcbb9803bdc0016b14c21.svg",&#xD;		"type": "costume",&#xD;		"name": "jeans-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			25&#xD;		],&#xD;		"md5": "01732aa03a48482093fbed3ea402c4a9.svg",&#xD;		"type": "costume",&#xD;		"name": "jeans-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			75,&#xD;			1&#xD;		],&#xD;		"md5": "a8ae8b69caa6a837f49aa950055ef29a.gif",&#xD;		"type": "costume",&#xD;		"name": "jodi",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			94,&#xD;			240,&#xD;			2&#xD;		],&#xD;		"md5": "cb4bf65491eaa9e8aeb1c1fdfe37e84a.png",&#xD;		"type": "costume",&#xD;		"name": "jo stance",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			260,&#xD;			2&#xD;		],&#xD;		"md5": "a91fe6e180b524d27688aa0cd82cd629.png",&#xD;		"type": "costume",&#xD;		"name": "jo top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			218,&#xD;			262,&#xD;			2&#xD;		],&#xD;		"md5": "de64c526a57355af5fd6ff28f27b67ea.png",&#xD;		"type": "costume",&#xD;		"name": "jo top R leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			208,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "987a667cd7984d9e5429c26b8a4cab2d.png",&#xD;		"type": "costume",&#xD;		"name": "jo top L leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			144,&#xD;			270,&#xD;			2&#xD;		],&#xD;		"md5": "ddbd8751df020cc32231ecb4e7b5388d.png",&#xD;		"type": "costume",&#xD;		"name": "jo top R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "33660046a3d37fa762f4a634ee3df75d.png",&#xD;		"type": "costume",&#xD;		"name": "jo top L cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			228,&#xD;			2&#xD;		],&#xD;		"md5": "0503f4d712bc3184cf1b5f830d0df993.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop front",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			74,&#xD;			2&#xD;		],&#xD;		"md5": "95a0f1bb3d8055a283aecc6bcb6303c9.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop down",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			196,&#xD;			226,&#xD;			2&#xD;		],&#xD;		"md5": "98e8c2f9869f9356204ed19e43ae01cc.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop left",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			242,&#xD;			2&#xD;		],&#xD;		"md5": "7bf1600ee75facb510c2922f899fb97c.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop right",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			108,&#xD;			258,&#xD;			2&#xD;		],&#xD;		"md5": "2a907e6edf8a101addb2c27d0568896a.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			262,&#xD;			2&#xD;		],&#xD;		"md5": "361d1884737ef734f6a39fd66fc269ec.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			108,&#xD;			260,&#xD;			2&#xD;		],&#xD;		"md5": "e633eb002deb20108bb5100d4b3a8fc5.png",&#xD;		"type": "costume",&#xD;		"name": "jo pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			160,&#xD;			2&#xD;		],&#xD;		"md5": "6e007fde15e49c66ee7996561f80b452.png",&#xD;		"type": "costume",&#xD;		"name": "kai-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			158,&#xD;			2&#xD;		],&#xD;		"md5": "c1e1149f6d7e308e3e4eba14ccc8a751.png",&#xD;		"type": "costume",&#xD;		"name": "kai-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			42,&#xD;			27&#xD;		],&#xD;		"md5": "af35300cef35803e11f4ed744dc5e818.svg",&#xD;		"type": "costume",&#xD;		"name": "key",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			79,&#xD;			101,&#xD;			2&#xD;		],&#xD;		"md5": "d0018780c7458f002b6fec6d1fea3570.png",&#xD;		"type": "costume",&#xD;		"name": "khalid-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			103,&#xD;			2&#xD;		],&#xD;		"md5": "88023269142bfc3ecab5b13cc8cbddb9.png",&#xD;		"type": "costume",&#xD;		"name": "Khalid-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			109,&#xD;			2&#xD;		],&#xD;		"md5": "30dbce950a2d2dddc0ea53d1462d116b.png",&#xD;		"type": "costume",&#xD;		"name": "khalid-c",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			63,&#xD;			2&#xD;		],&#xD;		"md5": "e189aec22f4cb57a90f75457615fbbd8.png",&#xD;		"type": "costume",&#xD;		"name": "khalid-d",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "f2c5e8bc24d001b81566879dbf2f1a13.svg",&#xD;		"type": "costume",&#xD;		"name": "knight",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			43&#xD;		],&#xD;		"md5": "f16a1ccc69a4a8190a927f1595aa7bfa.svg",&#xD;		"type": "costume",&#xD;		"name": "ladybug2",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			28&#xD;		],&#xD;		"md5": "c018a3eed966d5f92c69f2188dfd2aae.svg",&#xD;		"type": "costume",&#xD;		"name": "ladybug2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			28&#xD;		],&#xD;		"md5": "a2bb15ace808e070a2b815502952b292.svg",&#xD;		"type": "costume",&#xD;		"name": "ladybug2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			41,&#xD;			1&#xD;		],&#xD;		"md5": "4885678710301cda511018ad7e420c9c.png",&#xD;		"type": "costume",&#xD;		"name": "lamp",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "76f456b30b98eeefd7c942b27b524e31.svg",&#xD;		"type": "costume",&#xD;		"name": "laptop",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			244,&#xD;			2&#xD;		],&#xD;		"md5": "61b464a77536f75490d8891fb877819a.png",&#xD;		"type": "costume",&#xD;		"name": "lb stance",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			70,&#xD;			248,&#xD;			2&#xD;		],&#xD;		"md5": "dfe3628ddf46a67dcc21c63be65a8e40.png",&#xD;		"type": "costume",&#xD;		"name": "lb top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			244,&#xD;			250,&#xD;			2&#xD;		],&#xD;		"md5": "e824768a109691b5a3c577d3506ed70c.png",&#xD;		"type": "costume",&#xD;		"name": "lb top R leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			234,&#xD;			286,&#xD;			2&#xD;		],&#xD;		"md5": "350472368e2310efe6fa734b79f0ff41.png",&#xD;		"type": "costume",&#xD;		"name": "lb top L leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			148,&#xD;			258,&#xD;			2&#xD;		],&#xD;		"md5": "5a151c4d4e2e2f870d9096d5fce6ed48.png",&#xD;		"type": "costume",&#xD;		"name": "lb top L cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			174,&#xD;			256,&#xD;			2&#xD;		],&#xD;		"md5": "99acf468000c6fcbaf344e4531725efc.png",&#xD;		"type": "costume",&#xD;		"name": "lb top R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			272,&#xD;			2&#xD;		],&#xD;		"md5": "e34a166807a3ffbf8d147b12aa49dd19.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop front",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			56,&#xD;			90,&#xD;			2&#xD;		],&#xD;		"md5": "8e41de92cb932a6898782a39a0d7d300.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop down",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			198,&#xD;			266,&#xD;			2&#xD;		],&#xD;		"md5": "ff1b96d1047d4be459a4614ce7c7c94c.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop left",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			264,&#xD;			2&#xD;		],&#xD;		"md5": "d6d5534c628ac5d5fe3cbf1b76b71252.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop right",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			262,&#xD;			2&#xD;		],&#xD;		"md5": "c1fd31607619b8c98a286a650f248511.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			268,&#xD;			2&#xD;		],&#xD;		"md5": "51fe5962fe4d2af7f6fad7abaa692069.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			78,&#xD;			258,&#xD;			2&#xD;		],&#xD;		"md5": "aa57575fde5ff8b13041e3a7b1499fe0.png",&#xD;		"type": "costume",&#xD;		"name": "lb pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			83&#xD;		],&#xD;		"md5": "c2d636ab2b491e591536afc3d49cbecd.svg",&#xD;		"type": "costume",&#xD;		"name": "lightning",&#xD;		"tags": [&#xD;			"things",&#xD;			"castle",&#xD;			"nature",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "692a3c84366bf8ae4d16858e20e792f5.svg",&#xD;		"type": "costume",&#xD;		"name": "lion-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "a519ef168a345a2846d0201bf092a6d0.svg",&#xD;		"type": "costume",&#xD;		"name": "lion-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "8b5f49d4f91f61fbdcb4abac53ab5c7c.svg",&#xD;		"type": "costume",&#xD;		"name": "lioness",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			71,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "bf911c597995031014bbf32a8eb9d997.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz01",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			120,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "a1fb3946afc4c064503656d5d8ed0def.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz02",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			125,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "1da2ed229f84c1e6d1693bce3bf2d27f.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz03",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			124,&#xD;			109,&#xD;			2&#xD;		],&#xD;		"md5": "6b798489bdf2c48337ccb2d31fc64c5f.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz04",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			141,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "dc4e7a7e84f20802d4c1b12423738f62.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz05",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			132,&#xD;			250,&#xD;			2&#xD;		],&#xD;		"md5": "92db5fdd19b29f32890926d808e764af.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz06",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			121,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "6b65c2e80daf820d0f277af4f7352cbc.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz07",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			115,&#xD;			252,&#xD;			2&#xD;		],&#xD;		"md5": "97ef7f1f07248305725f74a0cc127eba.png",&#xD;		"type": "costume",&#xD;		"name": "lorenz07b",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			90,&#xD;			31,&#xD;			1&#xD;		],&#xD;		"md5": "66b74069378c828cb21d2dbe2227a31a.png",&#xD;		"type": "costume",&#xD;		"name": "magiccarpet",&#xD;		"tags": [&#xD;			"transportation",&#xD;			" fantasy",&#xD;			"flying",&#xD;			"castle",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			18&#xD;		],&#xD;		"md5": "3db9bfe57d561557795633c5cda44e8c.svg",&#xD;		"type": "costume",&#xD;		"name": "magicwand",&#xD;		"tags": [&#xD;			"things",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			138,&#xD;			2&#xD;		],&#xD;		"md5": "8b7ff2f1190825367112c2c076e34af3.png",&#xD;		"type": "costume",&#xD;		"name": "maya",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			68,&#xD;			1&#xD;		],&#xD;		"md5": "53608adfaea6e927dc11b53f604e2a1e.png",&#xD;		"type": "costume",&#xD;		"name": "marble-building",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			31&#xD;		],&#xD;		"md5": "59109aefada55997b9497c6266695830.svg",&#xD;		"type": "costume",&#xD;		"name": "microphone",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			57,&#xD;			55&#xD;		],&#xD;		"md5": "fe85f2d5a94d27b6d793361c3fddcf77.svg",&#xD;		"type": "costume",&#xD;		"name": "microphonestand",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			44,&#xD;			45&#xD;		],&#xD;		"md5": "d0819570ed955416190eab2e020071ca.svg",&#xD;		"type": "costume",&#xD;		"name": "monkey1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			51,&#xD;			46&#xD;		],&#xD;		"md5": "dc361fc5c8645e68c7bab9db3df6bc9d.svg",&#xD;		"type": "costume",&#xD;		"name": "monkey1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			99&#xD;		],&#xD;		"md5": "6e4de762dbd52cd2b6356694a9668211.svg",&#xD;		"type": "costume",&#xD;		"name": "monkey2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			99&#xD;		],&#xD;		"md5": "7662a3a0f4c6fa21fdf2de33bd80fe5f.svg",&#xD;		"type": "costume",&#xD;		"name": "monkey2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			68,&#xD;			99&#xD;		],&#xD;		"md5": "db8eb50b948047181922310bb94511fb.svg",&#xD;		"type": "costume",&#xD;		"name": "monkey2-c",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			42,&#xD;			160,&#xD;			2&#xD;		],&#xD;		"md5": "350a86adb24247003cc7e047bdba3c1d.png",&#xD;		"type": "costume",&#xD;		"name": "mori",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			27&#xD;		],&#xD;		"md5": "e1f0c26afecbe9d4b9923d8e6bf489a8.svg",&#xD;		"type": "costume",&#xD;		"name": "mouse1-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			65,&#xD;			21&#xD;		],&#xD;		"md5": "f5e477a3f94fc98ba3cd927228405646.svg",&#xD;		"type": "costume",&#xD;		"name": "mouse1-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			85,&#xD;			48&#xD;		],&#xD;		"md5": "e00161f08c77d10e72e44b6e01243e63.svg",&#xD;		"type": "costume",&#xD;		"name": "muffin-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			85,&#xD;			48&#xD;		],&#xD;		"md5": "fb60c3f8d6a892813299daa33b91df23.svg",&#xD;		"type": "costume",&#xD;		"name": "muffin-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			61,&#xD;			60&#xD;		],&#xD;		"md5": "02c5433118f508038484bbc5b111e187.svg",&#xD;		"type": "costume",&#xD;		"name": "nano-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			61,&#xD;			60&#xD;		],&#xD;		"md5": "10d6d9130618cd092ae02158cde2e113.svg",&#xD;		"type": "costume",&#xD;		"name": "nano-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			61,&#xD;			60&#xD;		],&#xD;		"md5": "85e762d45bc626ca2edb3472c7cfaa32.svg",&#xD;		"type": "costume",&#xD;		"name": "nano-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			61,&#xD;			60&#xD;		],&#xD;		"md5": "b10925346da8080443f27e7dfaeff6f7.svg",&#xD;		"type": "costume",&#xD;		"name": "nano-d",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			78&#xD;		],&#xD;		"md5": "176c4fb4df80df899ca28a48bd1f0edf.svg",&#xD;		"type": "costume",&#xD;		"name": "neigh pony",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "bb68d2e29d8572ef9de06f8033e668d9.svg",&#xD;		"type": "costume",&#xD;		"name": "octopus-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector",&#xD;			"underwater"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "b52bd3bc12553bb31b1395516c3cec4d.svg",&#xD;		"type": "costume",&#xD;		"name": "octopus-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector",&#xD;			"underwater"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			18&#xD;		],&#xD;		"md5": "780ee2ef342f79a81b4c353725331138.svg",&#xD;		"type": "costume",&#xD;		"name": "orange",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			24&#xD;		],&#xD;		"md5": "89b11d2a404c3972b65743f743cc968a.svg",&#xD;		"type": "costume",&#xD;		"name": "orange2-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			27&#xD;		],&#xD;		"md5": "5f7998e007dfa70e70bbd8d43199ebba.svg",&#xD;		"type": "costume",&#xD;		"name": "orange2-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			33&#xD;		],&#xD;		"md5": "466e9e2d62ee135a2dabd5593e6f8407.svg",&#xD;		"type": "costume",&#xD;		"name": "orange2-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			8&#xD;		],&#xD;		"md5": "5cda5ed5ffabc3d06322551656427b06.svg",&#xD;		"type": "costume",&#xD;		"name": "paddle",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "6d9c18c296edc8a01e4c611b573b5723.gif",&#xD;		"type": "costume",&#xD;		"name": "palmtree",&#xD;		"tags": [&#xD;			"things",&#xD;			"nature",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			86,&#xD;			106&#xD;		],&#xD;		"md5": "098570b8e1aa85b32f9b4eb07bea3af2.svg",&#xD;		"type": "costume",&#xD;		"name": "parrot-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			31&#xD;		],&#xD;		"md5": "721255a0733c9d8d2ba518ff09b3b7cb.svg",&#xD;		"type": "costume",&#xD;		"name": "parrot-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			106,&#xD;			66&#xD;		],&#xD;		"md5": "aba6f5539a5ac21863a3495d89947e66.svg",&#xD;		"type": "costume",&#xD;		"name": "parrot2-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			83,&#xD;			13&#xD;		],&#xD;		"md5": "9f0aac24e6b600b542613ab5c1461ae8.svg",&#xD;		"type": "costume",&#xD;		"name": "parrot2-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "4092b43b067ef01ce76a395637fe020a.gif",&#xD;		"type": "costume",&#xD;		"name": "paul",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			54&#xD;		],&#xD;		"md5": "4495fcb0443cebc5d43e66243a88f1ac.svg",&#xD;		"type": "costume",&#xD;		"name": "pencil-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			68&#xD;		],&#xD;		"md5": "21088922dbe127f6d2e58e2e83fb632e.svg",&#xD;		"type": "costume",&#xD;		"name": "pencil-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			61&#xD;		],&#xD;		"md5": "c17d9e4bdb59c574e0c34aa70af516da.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin1",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			62&#xD;		],&#xD;		"md5": "35fec7aa5f60cca945fe0615413f1f08.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin1 talk-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			61&#xD;		],&#xD;		"md5": "18fa51a64ebd5518f0c5c465525346e5.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin1 talk-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			79&#xD;		],&#xD;		"md5": "eaaaa7068e78a51d73ba437f1ec5763e.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin2",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			45,&#xD;			79&#xD;		],&#xD;		"md5": "5a80f4b2fd20d43e4f7cb4189c08d99c.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin2 talk-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			78&#xD;		],&#xD;		"md5": "394e79f5f9a462064ece2a9a6606a07d.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin2 talk-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			98&#xD;		],&#xD;		"md5": "3f1173e00f664fca5f493b408e1e6d69.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin3-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			57,&#xD;			97&#xD;		],&#xD;		"md5": "814c2ea372e64b98d5de97b75773f54b.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin3-b",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			98&#xD;		],&#xD;		"md5": "e28cd8b76b23db393d06c3a057e2dc68.svg",&#xD;		"type": "costume",&#xD;		"name": "penguin3-c",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			142,&#xD;			88&#xD;		],&#xD;		"md5": "a79a9794c290e5aa533230cc3d13795b.svg",&#xD;		"type": "costume",&#xD;		"name": "piano",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			88,&#xD;			24&#xD;		],&#xD;		"md5": "337368e789abc17beb1a2bacbb9d3bdc.svg",&#xD;		"type": "costume",&#xD;		"name": "keyboard-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			89,&#xD;			24&#xD;		],&#xD;		"md5": "290216dfdf0cffea57743d91f130b2c7.svg",&#xD;		"type": "costume",&#xD;		"name": "keyboard-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			89,&#xD;			24&#xD;		],&#xD;		"md5": "750cbbcd66cb893cd5a66ee0a663e486.svg",&#xD;		"type": "costume",&#xD;		"name": "keyboard-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			89,&#xD;			24&#xD;		],&#xD;		"md5": "46b0d833ad845d88585fbd0cb4b070ee.svg",&#xD;		"type": "costume",&#xD;		"name": "keyboard-d",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			55,&#xD;			66&#xD;		],&#xD;		"md5": "0579fe60bb3717c49dfd7743caa84ada.svg",&#xD;		"type": "costume",&#xD;		"name": "pico-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			55,&#xD;			66&#xD;		],&#xD;		"md5": "26c688d7544757225ff51cd2fb1519b5.svg",&#xD;		"type": "costume",&#xD;		"name": "pico-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			55,&#xD;			66&#xD;		],&#xD;		"md5": "adf61e2090f8060e1e8b2b0604d03751.svg",&#xD;		"type": "costume",&#xD;		"name": "pico-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			55,&#xD;			66&#xD;		],&#xD;		"md5": "594704bf12e3c4d9e83bb91661ad709a.svg",&#xD;		"type": "costume",&#xD;		"name": "pico-d",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			71&#xD;		],&#xD;		"md5": "8eab5fe20dd249bf22964298b1d377eb.svg",&#xD;		"type": "costume",&#xD;		"name": "Pico walk1",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			71&#xD;		],&#xD;		"md5": "39ecd3c38d3f2cd81e3a17ee6c25699f.svg",&#xD;		"type": "costume",&#xD;		"name": "Pico walk2",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			70&#xD;		],&#xD;		"md5": "43f7d92dcf9eadf77c07a6fc1eb4104f.svg",&#xD;		"type": "costume",&#xD;		"name": "Pico walk3",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			70&#xD;		],&#xD;		"md5": "2582d012d57bca59bc0315c5c5954958.svg",&#xD;		"type": "costume",&#xD;		"name": "Pico walk4",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "978784738c1d9dd4b1d397fd18bdf406.svg",&#xD;		"type": "costume",&#xD;		"name": "planet2",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "a760bed1cfc28a30b2dc7fd045c90792.svg",&#xD;		"type": "costume",&#xD;		"name": "prince",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "75c96829e4b9f89378dfde0dee78db5f.svg",&#xD;		"type": "costume",&#xD;		"name": "princess",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			36&#xD;		],&#xD;		"md5": "680a806bd87a28c8b25b5f9b6347f022.svg",&#xD;		"type": "costume",&#xD;		"name": "rainbow",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			41,&#xD;			100,&#xD;			1&#xD;		],&#xD;		"md5": "b510bc924622795216154727e18dd38e.gif",&#xD;		"type": "costume",&#xD;		"name": "referee",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			70&#xD;		],&#xD;		"md5": "0fff0b181cc4d9250b5b985cc283b049.svg",&#xD;		"type": "costume",&#xD;		"name": "reindeer",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "882919259f26462d74106e11d7c7e5c0.svg",&#xD;		"type": "costume",&#xD;		"name": "robot1",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"space",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			15&#xD;		],&#xD;		"md5": "82c79fdb6a7d9c49ab7f70ee79a3d7f8.svg",&#xD;		"type": "costume",&#xD;		"name": "rocks",&#xD;		"tags": [&#xD;			"things",&#xD;			"nature",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			160,&#xD;			2&#xD;		],&#xD;		"md5": "7cca95c0a56646dd65771247ea288612.png",&#xD;		"type": "costume",&#xD;		"name": "rory",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			172,&#xD;			2&#xD;		],&#xD;		"md5": "c30210e8f719c3a4d2c7cc6917a39300.png",&#xD;		"type": "costume",&#xD;		"name": "ruby-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			142,&#xD;			2&#xD;		],&#xD;		"md5": "fc15fdbcc535473f6140cab28197f3be.png",&#xD;		"type": "costume",&#xD;		"name": "ruby-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			112,&#xD;			91,&#xD;			1&#xD;		],&#xD;		"md5": "8f8d0ea2f0ab5ca533f33f0da1eecfa6.png",&#xD;		"type": "costume",&#xD;		"name": "sail-boat",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			90,&#xD;			1&#xD;		],&#xD;		"md5": "1d33952fec0abe4ef6adee9fd065d3a8.gif",&#xD;		"type": "costume",&#xD;		"name": "sam",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			80&#xD;		],&#xD;		"md5": "a09b114b0652006ac66def94548073a9.svg",&#xD;		"type": "costume",&#xD;		"name": "saxophone-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			80&#xD;		],&#xD;		"md5": "366c42cc65497f5007c9377a2d4d854b.svg",&#xD;		"type": "costume",&#xD;		"name": "saxophone-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			36&#xD;		],&#xD;		"md5": "9db18d2a2b3c9859654fc1b4832e6076.svg",&#xD;		"type": "costume",&#xD;		"name": "scarf1",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			16&#xD;		],&#xD;		"md5": "ce66662165e2756070f1b12e0a7cb5db.svg",&#xD;		"type": "costume",&#xD;		"name": "scarf2",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			85,&#xD;			26&#xD;		],&#xD;		"md5": "978b16d68fa7834dfb327fa3e2c4ba3b.svg",&#xD;		"type": "costume",&#xD;		"name": "scratch logo",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "7c0a907eae79462f69f8e2af8e7df828.svg",&#xD;		"type": "costume",&#xD;		"name": "shark-a ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "cff9ae87a93294693a0650b38a7a33d2.svg",&#xD;		"type": "costume",&#xD;		"name": "shark-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			77,&#xD;			37&#xD;		],&#xD;		"md5": "afeae3f998598424f7c50918507f6ce6.svg",&#xD;		"type": "costume",&#xD;		"name": "shark-c ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			48&#xD;		],&#xD;		"md5": "dbb0eaa9d7af0f5971afdee0192c8b51.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			48,&#xD;			48&#xD;		],&#xD;		"md5": "92d009fb104990da9798378ae5e4e1cb.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			48&#xD;		],&#xD;		"md5": "5946e7a1e36c6d97ae47d41dd8595a41.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt2-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			48&#xD;		],&#xD;		"md5": "5b78ab09592126b6bbe2d4907d203909.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt2-a2",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			28&#xD;		],&#xD;		"md5": "918a507af6bbae9e7f36f0d949900838.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt blouse",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			57&#xD;		],&#xD;		"md5": "b7ecf6503e27e9ab5c086eaf07d22b94.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt collar-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			57&#xD;		],&#xD;		"md5": "f1b20c3350e8a7e92a2fb1925ad4158b.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt collar-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			57&#xD;		],&#xD;		"md5": "5f04b99416a794e04d0855f446780f18.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt collar-c",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			39,&#xD;			28&#xD;		],&#xD;		"md5": "5d7fa4f1788f03d2962f1624d6eac800.svg",&#xD;		"type": "costume",&#xD;		"name": "shirt-t",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			23&#xD;		],&#xD;		"md5": "ffab4cc284070b50ac317e515f59f7d8.svg",&#xD;		"type": "costume",&#xD;		"name": "shoes1",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			8&#xD;		],&#xD;		"md5": "1dc5d568d98405c370b91a230397a7f9.svg",&#xD;		"type": "costume",&#xD;		"name": "shoes2",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "e47ef1af3b925e5ac9e3b3f809d440b3.svg",&#xD;		"type": "costume",&#xD;		"name": "Singer1",&#xD;		"tags": [&#xD;			"people",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			44,&#xD;			-21&#xD;		],&#xD;		"md5": "00e5e173400662875a26bb7d6556346a.svg",&#xD;		"type": "costume",&#xD;		"name": "skates",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			64,&#xD;			233,&#xD;			2&#xD;		],&#xD;		"md5": "2d2b577a12a51aa4448ad3e7e2a07079.png",&#xD;		"type": "costume",&#xD;		"name": "sl top stand",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			230,&#xD;			2&#xD;		],&#xD;		"md5": "ba01e9c4448285b7b8a63e98d89ac1d7.png",&#xD;		"type": "costume",&#xD;		"name": "sl top R leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			149,&#xD;			245,&#xD;			2&#xD;		],&#xD;		"md5": "b274db2a4fa913555dae028f327e7423.png",&#xD;		"type": "costume",&#xD;		"name": "sl top L leg",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			198,&#xD;			2&#xD;		],&#xD;		"md5": "3df3afb72314807fc6c58075da124b84.png",&#xD;		"type": "costume",&#xD;		"name": "sl top ready",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			214,&#xD;			2&#xD;		],&#xD;		"md5": "f26ea2f0d0baaa5aaed3cd96d7843206.png",&#xD;		"type": "costume",&#xD;		"name": "sl top L cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			110,&#xD;			200,&#xD;			2&#xD;		],&#xD;		"md5": "b46163522a53150fdb6a44461738e9ae.png",&#xD;		"type": "costume",&#xD;		"name": "sl top R cross",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			145,&#xD;			174,&#xD;			2&#xD;		],&#xD;		"md5": "48fcc33505fbd3c65d1f7bfbb4745a13.png",&#xD;		"type": "costume",&#xD;		"name": "sl pop L arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			66,&#xD;			237,&#xD;			2&#xD;		],&#xD;		"md5": "ffae2eb189d6efc97efc91e93ed4d8bf.png",&#xD;		"type": "costume",&#xD;		"name": "sl pop R arm",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			104,&#xD;			103&#xD;		],&#xD;		"md5": "67de2af723246de37d7379b76800ee0b.svg",&#xD;		"type": "costume",&#xD;		"name": "snowflake",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "56c71c31c17b9bc66a2aab0342cf94b2.svg",&#xD;		"type": "costume",&#xD;		"name": "snowman",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			34&#xD;		],&#xD;		"md5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;		"type": "costume",&#xD;		"name": "soccer ball",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			84&#xD;		],&#xD;		"md5": "028b6d5210a4a94d5cd3d2001fd3d74d.svg",&#xD;		"type": "costume",&#xD;		"name": "spaceship-a",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"space",&#xD;			"fantasy",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			62,&#xD;			83&#xD;		],&#xD;		"md5": "55e3d48245934393402ab214c122ed8f.svg",&#xD;		"type": "costume",&#xD;		"name": "spaceship-b",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"space",&#xD;			"fantasy",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			53,&#xD;			79&#xD;		],&#xD;		"md5": "44dc3a2ec161999545914d1f77332d76.svg",&#xD;		"type": "costume",&#xD;		"name": "speaker",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			158,&#xD;			146,&#xD;			2&#xD;		],&#xD;		"md5": "7e24c99c1b853e52f8e7f9004416fa34.png",&#xD;		"type": "costume",&#xD;		"name": "squirrel1",&#xD;		"tags": [&#xD;			"animals",&#xD;			"bitmap",&#xD;			"photo"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			19&#xD;		],&#xD;		"md5": "ab0914e53e360477275e58b83ec4d423.svg",&#xD;		"type": "costume",&#xD;		"name": "star1",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			27&#xD;		],&#xD;		"md5": "0a0ef50bb5a59be1785c8bb12cdacae6.svg",&#xD;		"type": "costume",&#xD;		"name": "star2",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			54,&#xD;			55&#xD;		],&#xD;		"md5": "04da262057dfe130860086031e5018ef.svg",&#xD;		"type": "costume",&#xD;		"name": "star3-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			34&#xD;		],&#xD;		"md5": "a082be13c0e5d17230f448dd55029a7d.svg",&#xD;		"type": "costume",&#xD;		"name": "star3-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "3d1101bbc24ae292a36356af325f660c.svg",&#xD;		"type": "costume",&#xD;		"name": "starfish-a",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			53,&#xD;			60&#xD;		],&#xD;		"md5": "ad8007f4e63693984d4adc466ffa3ad2.svg",&#xD;		"type": "costume",&#xD;		"name": "starfish-b ",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			25&#xD;		],&#xD;		"md5": "5b9e3e8edffb0bd4914113609eec5e04.svg",&#xD;		"type": "costume",&#xD;		"name": "stop",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			59,&#xD;			1&#xD;		],&#xD;		"md5": "e3699b3f2f7d67a9f48ea9b71fd3733a.png",&#xD;		"type": "costume",&#xD;		"name": "street-cleaner-mit",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			72,&#xD;			72&#xD;		],&#xD;		"md5": "55c931c65456822c0c56a2b30e3e550d.svg",&#xD;		"type": "costume",&#xD;		"name": "sun",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			14&#xD;		],&#xD;		"md5": "424393e8705aeadcfecb8559ce4dcea2.svg",&#xD;		"type": "costume",&#xD;		"name": "sunglasses1",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			10&#xD;		],&#xD;		"md5": "3185d2295bbf2c5ebd0688c9e4f13076.svg",&#xD;		"type": "costume",&#xD;		"name": "sunglasses2",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			15&#xD;		],&#xD;		"md5": "d224b30c54bd4d6000c935938c7f5d7e.svg",&#xD;		"type": "costume",&#xD;		"name": "taco-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			56,&#xD;			15&#xD;		],&#xD;		"md5": "6dee4f866d79e6475d9824ba11973037.svg",&#xD;		"type": "costume",&#xD;		"name": "taco-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			15,&#xD;			15,&#xD;			1&#xD;		],&#xD;		"md5": "38d3048bf7ec9f4ec3fd24dc38a03eea.png",&#xD;		"type": "costume",&#xD;		"name": "tennisball",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			63&#xD;		],&#xD;		"md5": "b54a4a9087435863ab6f6c908f1cac99.svg",&#xD;		"type": "costume",&#xD;		"name": "tera-a",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			64&#xD;		],&#xD;		"md5": "1e6b3a29351cda80d1a70a3cc0e499f2.svg",&#xD;		"type": "costume",&#xD;		"name": "tera-b",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			63&#xD;		],&#xD;		"md5": "7edf116cbb7111292361431521ae699e.svg",&#xD;		"type": "costume",&#xD;		"name": "tera-c",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			63&#xD;		],&#xD;		"md5": "7c3c9c8b5f4ac77de2036175712a777a.svg",&#xD;		"type": "costume",&#xD;		"name": "tera-d",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			109,&#xD;			32&#xD;		],&#xD;		"md5": "5ebbfead1d5728f6e93a4259b699f2e9.svg",&#xD;		"type": "costume",&#xD;		"name": "text awesome",&#xD;		"tags": [&#xD;			"letters",&#xD;			"things",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			135,&#xD;			24&#xD;		],&#xD;		"md5": "b3de9a77e2c1bb2f3e29f29a03d869ea.svg",&#xD;		"type": "costume",&#xD;		"name": "text keep scratching",&#xD;		"tags": [&#xD;			"letters",&#xD;			"things",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			172,&#xD;			30&#xD;		],&#xD;		"md5": "a765b830814192ab323b5893a65cabfa.svg",&#xD;		"type": "costume",&#xD;		"name": "text valentine&apos;s day",&#xD;		"tags": [&#xD;			"letters",&#xD;			"things",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			165,&#xD;			34&#xD;		],&#xD;		"md5": "7aee725d72bc077424690a0acce8589b.svg",&#xD;		"type": "costume",&#xD;		"name": "text Halloween",&#xD;		"tags": [&#xD;			"letters",&#xD;			"things",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			100,&#xD;			41,&#xD;			1&#xD;		],&#xD;		"md5": "20b16bcb61396df304cad5e8886ceb46.png",&#xD;		"type": "costume",&#xD;		"name": "trampoline",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			77,&#xD;			126&#xD;		],&#xD;		"md5": "8c40e2662c55d17bc384f47165ac43c1.svg",&#xD;		"type": "costume",&#xD;		"name": "tree1",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			82,&#xD;			104&#xD;		],&#xD;		"md5": "d4cafdb83f5ff518383f7174817243e6.svg",&#xD;		"type": "costume",&#xD;		"name": "tree2",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			59,&#xD;			77&#xD;		],&#xD;		"md5": "177682396be2961367a50289a5552314.svg",&#xD;		"type": "costume",&#xD;		"name": "tree-lights-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			58,&#xD;			76&#xD;		],&#xD;		"md5": "b0282c029046fd1ed0541675911fe8bb.svg",&#xD;		"type": "costume",&#xD;		"name": "tree-lights-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			94&#xD;		],&#xD;		"md5": "866ed2c2971bb04157e14e935ac8521c.svg",&#xD;		"type": "costume",&#xD;		"name": "trees-a",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			87&#xD;		],&#xD;		"md5": "f1393dde1bb0fc512577995b27616d86.svg",&#xD;		"type": "costume",&#xD;		"name": "trees-b",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			43&#xD;		],&#xD;		"md5": "7d7098a45ab54def8d919141e90db4c5.svg",&#xD;		"type": "costume",&#xD;		"name": "trombone-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			73,&#xD;			43&#xD;		],&#xD;		"md5": "08edef976dbc09e8b62bce0f4607ea4a.svg",&#xD;		"type": "costume",&#xD;		"name": "trombone-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			25&#xD;		],&#xD;		"md5": "3bcbd84df7924b6f97a2fa5d9bce56c8.svg",&#xD;		"type": "costume",&#xD;		"name": "trumpet-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			84,&#xD;			25&#xD;		],&#xD;		"md5": "5c0db80c63a72e8ab07d047183575378.svg",&#xD;		"type": "costume",&#xD;		"name": "trumpet-a2",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			78&#xD;		],&#xD;		"md5": "39215565394d6280c6c81e7ad86c7ca0.svg",&#xD;		"type": "costume",&#xD;		"name": "ukulele",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			85,&#xD;			62,&#xD;			1&#xD;		],&#xD;		"md5": "2ae6d0c3a8cb500e63c11a95eee80fa7.png",&#xD;		"type": "costume",&#xD;		"name": "umbrella",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			75,&#xD;			75&#xD;		],&#xD;		"md5": "a04def38351e7fd805226345cac4fbfe.svg",&#xD;		"type": "costume",&#xD;		"name": "unicorn",&#xD;		"tags": [&#xD;			"flying",&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			62&#xD;		],&#xD;		"md5": "f8285ca9564451c62a0e3d75b8a714e8.svg",&#xD;		"type": "costume",&#xD;		"name": "vest-a",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			62&#xD;		],&#xD;		"md5": "77d553eea3910ab8f5bac3d2da601061.svg",&#xD;		"type": "costume",&#xD;		"name": "vest-b",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			49,&#xD;			68&#xD;		],&#xD;		"md5": "450bc8fbd5ab6bc2e83576aad58cd07c.svg",&#xD;		"type": "costume",&#xD;		"name": "wanda",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			27&#xD;		],&#xD;		"md5": "26fecef75cf3b6e0d98bff5c06475036.svg",&#xD;		"type": "costume",&#xD;		"name": "watermelon-a",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			27&#xD;		],&#xD;		"md5": "fbdaf4d1d349edd3ddf3a1c4528aa9ec.svg",&#xD;		"type": "costume",&#xD;		"name": "watermelon-b",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			15&#xD;		],&#xD;		"md5": "5976c10412306fc093c1d1930fa05119.svg",&#xD;		"type": "costume",&#xD;		"name": "watermelon-c",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			74,&#xD;			59&#xD;		],&#xD;		"md5": "c991196a708294535a1dbdce7189c23c.svg",&#xD;		"type": "costume",&#xD;		"name": "witch",&#xD;		"tags": [&#xD;			"flying",&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			76,&#xD;			86&#xD;		],&#xD;		"md5": "4df1dd733f6ee4a2d8842478ac2c4661.svg",&#xD;		"type": "costume",&#xD;		"name": "wizard",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			134,&#xD;			153&#xD;		],&#xD;		"md5": "e085c97691d16f0cc8a595ce1137e26c.svg",&#xD;		"type": "costume",&#xD;		"name": "wizard1",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			69,&#xD;			93&#xD;		],&#xD;		"md5": "6db4d9e4229dc50a1b1c91c3c8311d40.svg",&#xD;		"type": "costume",&#xD;		"name": "wizard2",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			50,&#xD;			170,&#xD;			2&#xD;		],&#xD;		"md5": "ad7b145d46e933125bd9c928d784fcdc.png",&#xD;		"type": "costume",&#xD;		"name": "zara-a",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			86,&#xD;			168,&#xD;			2&#xD;		],&#xD;		"md5": "6fba793b512069a67096a82aa85a5c12.png",&#xD;		"type": "costume",&#xD;		"name": "zara-b",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			38&#xD;		],&#xD;		"md5": "602a16930a8050e1298e1a0ae844363e.svg",&#xD;		"type": "costume",&#xD;		"name": "a-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			42&#xD;		],&#xD;		"md5": "f8c683cf71660e8ac1f8855599857a25.svg",&#xD;		"type": "costume",&#xD;		"name": "b-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			43&#xD;		],&#xD;		"md5": "f8f4cc686ffc5a4113a99f70b09abd32.svg",&#xD;		"type": "costume",&#xD;		"name": "c-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			41&#xD;		],&#xD;		"md5": "aee2d71ef0293b33479bff9423d16b67.svg",&#xD;		"type": "costume",&#xD;		"name": "d-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			39&#xD;		],&#xD;		"md5": "16c6257316ff94cc7539ccdfc24e5fb8.svg",&#xD;		"type": "costume",&#xD;		"name": "e-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			40&#xD;		],&#xD;		"md5": "34c090c1f573c569332ead68cb99b595.svg",&#xD;		"type": "costume",&#xD;		"name": "f-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			39&#xD;		],&#xD;		"md5": "8bb2382627004eb08ff10ea8171cc724.svg",&#xD;		"type": "costume",&#xD;		"name": "g-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			38&#xD;		],&#xD;		"md5": "f1578807d4a124fc02b639a8febeaab3.svg",&#xD;		"type": "costume",&#xD;		"name": "h-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			39&#xD;		],&#xD;		"md5": "341bc70442886d6fdf959f2a97a63554.svg",&#xD;		"type": "costume",&#xD;		"name": "i-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			41&#xD;		],&#xD;		"md5": "4b420cce964beedf2c1dc43faa59fdec.svg",&#xD;		"type": "costume",&#xD;		"name": "j-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			40&#xD;		],&#xD;		"md5": "19601cc33449813aa93a47c63167e5c1.svg",&#xD;		"type": "costume",&#xD;		"name": "k-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			40&#xD;		],&#xD;		"md5": "87358e3c9b9f5be4376253ce08d0192d.svg",&#xD;		"type": "costume",&#xD;		"name": "l-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			37&#xD;		],&#xD;		"md5": "7ba0642be1f0080c0d273ea96e29b1e8.svg",&#xD;		"type": "costume",&#xD;		"name": "m-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			37&#xD;		],&#xD;		"md5": "6c1fbc57821744bd9356ce9a21ed70f7.svg",&#xD;		"type": "costume",&#xD;		"name": "n-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			40&#xD;		],&#xD;		"md5": "e88638200a73e167d0e266a343019cec.svg",&#xD;		"type": "costume",&#xD;		"name": "o-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			33&#xD;		],&#xD;		"md5": "ad2fc3a1c6538678915633a11ab6ec73.svg",&#xD;		"type": "costume",&#xD;		"name": "p-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			33&#xD;		],&#xD;		"md5": "64da9da8684c74deb567dbdb661d3a52.svg",&#xD;		"type": "costume",&#xD;		"name": "q-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			33&#xD;		],&#xD;		"md5": "73e8d46f7475476d8cb4cfcfc75ee50d.svg",&#xD;		"type": "costume",&#xD;		"name": "r-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			30&#xD;		],&#xD;		"md5": "9feb5593fed51e88dbb3128cfc290d29.svg",&#xD;		"type": "costume",&#xD;		"name": "s-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			33&#xD;		],&#xD;		"md5": "d29c1caf5cf195740c38f279e82a77a4.svg",&#xD;		"type": "costume",&#xD;		"name": "t-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			41&#xD;		],&#xD;		"md5": "faef46b7bf589c36300142f6f03c5d32.svg",&#xD;		"type": "costume",&#xD;		"name": "u-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			41&#xD;		],&#xD;		"md5": "65e2f4821ab084827e22920acb61c92b.svg",&#xD;		"type": "costume",&#xD;		"name": "v-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			47,&#xD;			39&#xD;		],&#xD;		"md5": "5ab197b4f70b2f98a3658c7ccdc3351d.svg",&#xD;		"type": "costume",&#xD;		"name": "w-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			32&#xD;		],&#xD;		"md5": "cb9dff35f05e823d954e47e4a717a48c.svg",&#xD;		"type": "costume",&#xD;		"name": "x-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			33&#xD;		],&#xD;		"md5": "4c13c440bcb35c8c3aa6226374fced3f.svg",&#xD;		"type": "costume",&#xD;		"name": "y-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			38&#xD;		],&#xD;		"md5": "0ccff1898f1bf1b25333d581db09fae2.svg",&#xD;		"type": "costume",&#xD;		"name": "z-block",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			36,&#xD;			37&#xD;		],&#xD;		"md5": "d5aa299350c24c747200a64b63b1aa52.svg",&#xD;		"type": "costume",&#xD;		"name": "A-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			35&#xD;		],&#xD;		"md5": "a2e95f268a6cab03f3e94b3b0b792d83.svg",&#xD;		"type": "costume",&#xD;		"name": "B-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			35&#xD;		],&#xD;		"md5": "9779a4a40934f04a4bf84920b258d7c9.svg",&#xD;		"type": "costume",&#xD;		"name": "C-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			35&#xD;		],&#xD;		"md5": "3555b8bbbbcdc00354bf6fa81ac7042f.svg",&#xD;		"type": "costume",&#xD;		"name": "D-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			34,&#xD;			38&#xD;		],&#xD;		"md5": "44dbc655d5ac9f13618473848e23484e.svg",&#xD;		"type": "costume",&#xD;		"name": "E-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			41&#xD;		],&#xD;		"md5": "dec417e749e43d7de3985155f5f5a7a0.svg",&#xD;		"type": "costume",&#xD;		"name": "F-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			39&#xD;		],&#xD;		"md5": "cf4aa465cd8fb7049cc571d7546a7eb1.svg",&#xD;		"type": "costume",&#xD;		"name": "G-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			46&#xD;		],&#xD;		"md5": "8d9bd5f00ea1ac6f92d0f97ee491b0f3.svg",&#xD;		"type": "costume",&#xD;		"name": "H-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			38&#xD;		],&#xD;		"md5": "0e86de55840103dcd50199ab2b765de7.svg",&#xD;		"type": "costume",&#xD;		"name": "I-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			39&#xD;		],&#xD;		"md5": "b3832145eacc39f91bd3a9a6673fa05c.svg",&#xD;		"type": "costume",&#xD;		"name": "J-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			38,&#xD;			36&#xD;		],&#xD;		"md5": "f4e37a7552ba05e995613211a7146de5.svg",&#xD;		"type": "costume",&#xD;		"name": "K-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			35&#xD;		],&#xD;		"md5": "a75e45773ea6afaf8ae44f79f936fc82.svg",&#xD;		"type": "costume",&#xD;		"name": "L-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			42,&#xD;			39&#xD;		],&#xD;		"md5": "219b06faa5b816347165450d148213b4.svg",&#xD;		"type": "costume",&#xD;		"name": "M-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			39&#xD;		],&#xD;		"md5": "4b724479fb3b2184fd8be6f83fb20e54.svg",&#xD;		"type": "costume",&#xD;		"name": "N-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			39&#xD;		],&#xD;		"md5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;		"type": "costume",&#xD;		"name": "O-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			32,&#xD;			39&#xD;		],&#xD;		"md5": "1cfa849cc967069730b7e9d0809c9dc1.svg",&#xD;		"type": "costume",&#xD;		"name": "P-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			43&#xD;		],&#xD;		"md5": "9d35979e9404ac234301269fcd7de288.svg",&#xD;		"type": "costume",&#xD;		"name": "Q-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			38&#xD;		],&#xD;		"md5": "fc067ee076ecaba8430ccd54d9414c1b.svg",&#xD;		"type": "costume",&#xD;		"name": "R-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			40&#xD;		],&#xD;		"md5": "19a93db8a294ccaec4d6eef4020a446f.svg",&#xD;		"type": "costume",&#xD;		"name": "S-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			38&#xD;		],&#xD;		"md5": "d7bcda522a1e9504dafcf2fa0fcde39b.svg",&#xD;		"type": "costume",&#xD;		"name": "T-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			37&#xD;		],&#xD;		"md5": "790482a3c3691a1e96ef34eee7303872.svg",&#xD;		"type": "costume",&#xD;		"name": "U-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			35,&#xD;			42&#xD;		],&#xD;		"md5": "6a00388d8dc6be645b843cef9c22681c.svg",&#xD;		"type": "costume",&#xD;		"name": "V-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			45,&#xD;			41&#xD;		],&#xD;		"md5": "1a9ea7305a85b271c1de79beafe16cb4.svg",&#xD;		"type": "costume",&#xD;		"name": "W-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			40,&#xD;			39&#xD;		],&#xD;		"md5": "ec4e65b9ae475a676973128f4205df5f.svg",&#xD;		"type": "costume",&#xD;		"name": "X-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			38,&#xD;			41&#xD;		],&#xD;		"md5": "683cd093bb3b254733a15df6f843464c.svg",&#xD;		"type": "costume",&#xD;		"name": "Y-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			39&#xD;		],&#xD;		"md5": "db89a4c9b123123542e0b7556ed3ff9f.svg",&#xD;		"type": "costume",&#xD;		"name": "Z-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			29,&#xD;			39&#xD;		],&#xD;		"md5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;		"type": "costume",&#xD;		"name": "0-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			39&#xD;		],&#xD;		"md5": "2c88706210672655401fe09edd8ff6a7.svg",&#xD;		"type": "costume",&#xD;		"name": "1-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			41&#xD;		],&#xD;		"md5": "b9faa5708a799a1607f0325a7af2561c.svg",&#xD;		"type": "costume",&#xD;		"name": "2-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			33,&#xD;			42&#xD;		],&#xD;		"md5": "cf42a50552ce26032ead712ac4f36c23.svg",&#xD;		"type": "costume",&#xD;		"name": "3-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			38&#xD;		],&#xD;		"md5": "3ffa6aee373e28fc36b9395ac4d0467e.svg",&#xD;		"type": "costume",&#xD;		"name": "4-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			38&#xD;		],&#xD;		"md5": "85d87d32e7e9e6be122c905b0d2e7e33.svg",&#xD;		"type": "costume",&#xD;		"name": "5-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			37&#xD;		],&#xD;		"md5": "62cc2a6def27f19d11ed56e86e95aac5.svg",&#xD;		"type": "costume",&#xD;		"name": "6-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			42&#xD;		],&#xD;		"md5": "8887983eb4df2e62a2ed4770a1d98d60.svg",&#xD;		"type": "costume",&#xD;		"name": "7-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			31,&#xD;			37&#xD;		],&#xD;		"md5": "4c42c4cb0c1e090d0f9570416d3c80c8.svg",&#xD;		"type": "costume",&#xD;		"name": "8-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			28,&#xD;			36&#xD;		],&#xD;		"md5": "7bcb7e2e48f5cb770c83d4267922fec0.svg",&#xD;		"type": "costume",&#xD;		"name": "9-glow",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "a54da6be420c9e8e7cb02e2a568f3442.svg",&#xD;		"type": "costume",&#xD;		"name": "A-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			18&#xD;		],&#xD;		"md5": "e47682020873e276f550421f0d854523.svg",&#xD;		"type": "costume",&#xD;		"name": "B-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			20&#xD;		],&#xD;		"md5": "ee1958ffbae4e0fd836622ae183b55bd.svg",&#xD;		"type": "costume",&#xD;		"name": "C-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			20&#xD;		],&#xD;		"md5": "d759df99f347d9b7d59e1f703e8e1438.svg",&#xD;		"type": "costume",&#xD;		"name": "D-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			11,&#xD;			19&#xD;		],&#xD;		"md5": "059a64a90014dc69c510b562cdf94df7.svg",&#xD;		"type": "costume",&#xD;		"name": "E-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			10,&#xD;			20&#xD;		],&#xD;		"md5": "ebbc6dc0f7d1a89b159aac3f76fe52f4.svg",&#xD;		"type": "costume",&#xD;		"name": "F-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			15,&#xD;			22&#xD;		],&#xD;		"md5": "203dfa253635f0e52059e835c51fa6f8.svg",&#xD;		"type": "costume",&#xD;		"name": "G-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			15,&#xD;			20&#xD;		],&#xD;		"md5": "d9a94d9b9abc9e26eb91d22d197a1556.svg",&#xD;		"type": "costume",&#xD;		"name": "H-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			9,&#xD;			21&#xD;		],&#xD;		"md5": "aeb851adc39da9582a379af1ed6d0efe.svg",&#xD;		"type": "costume",&#xD;		"name": "I-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			20&#xD;		],&#xD;		"md5": "c18906f764b2889a8fc0b3c16db28bf0.svg",&#xD;		"type": "costume",&#xD;		"name": "J-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			20&#xD;		],&#xD;		"md5": "4483633d2ae26987d0efe359aaf1357b.svg",&#xD;		"type": "costume",&#xD;		"name": "K-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			11,&#xD;			18&#xD;		],&#xD;		"md5": "0625b64705d62748c6105e969859fe0d.svg",&#xD;		"type": "costume",&#xD;		"name": "L-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			16&#xD;		],&#xD;		"md5": "46ccf731f158b9dda75f4e71a5bcd282.svg",&#xD;		"type": "costume",&#xD;		"name": "M-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "f9d3b49b5962ff4070fae186b8b71e39.svg",&#xD;		"type": "costume",&#xD;		"name": "N-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			19&#xD;		],&#xD;		"md5": "668b21968078f3b7b1a9ccd74407fa1e.svg",&#xD;		"type": "costume",&#xD;		"name": "O-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			19&#xD;		],&#xD;		"md5": "02011265d2597175c7496da667265f4a.svg",&#xD;		"type": "costume",&#xD;		"name": "P-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			21&#xD;		],&#xD;		"md5": "8c77c87dd0ed2613873cff0795ffc701.svg",&#xD;		"type": "costume",&#xD;		"name": "Q-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			19&#xD;		],&#xD;		"md5": "c94daea3bd1e8cec36e1aa4e0b1d3f2b.svg",&#xD;		"type": "costume",&#xD;		"name": "R-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			20&#xD;		],&#xD;		"md5": "2fedb1b52f4a4500938a3a52085344e6.svg",&#xD;		"type": "costume",&#xD;		"name": "S-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			20&#xD;		],&#xD;		"md5": "3f481b967f82014c7cf6dd14d438c32d.svg",&#xD;		"type": "costume",&#xD;		"name": "T-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "a207644e4adb613f410f80a7e123db60.svg",&#xD;		"type": "costume",&#xD;		"name": "U-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			20&#xD;		],&#xD;		"md5": "1bb20febe562fa291bea94be1e2d44ba.svg",&#xD;		"type": "costume",&#xD;		"name": "V-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			19&#xD;		],&#xD;		"md5": "34b628e8c84cc551a1fa740b85afb750.svg",&#xD;		"type": "costume",&#xD;		"name": "W-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "4cc2d68ceb08176481e882ed39e4f5d5.svg",&#xD;		"type": "costume",&#xD;		"name": "X-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			18&#xD;		],&#xD;		"md5": "e6c377982c023761796eaed1047169e6.svg",&#xD;		"type": "costume",&#xD;		"name": "Y-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			18&#xD;		],&#xD;		"md5": "ecadc3a562c9aa963717fcdf07ec96b4.svg",&#xD;		"type": "costume",&#xD;		"name": "Z-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			13,&#xD;			18&#xD;		],&#xD;		"md5": "cd1f984997b44de464bbf86fc073b280.svg",&#xD;		"type": "costume",&#xD;		"name": "0-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			7,&#xD;			20&#xD;		],&#xD;		"md5": "4ec3d6c4ef14112ed7c6ba6b9549da3b.svg",&#xD;		"type": "costume",&#xD;		"name": "1-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			17&#xD;		],&#xD;		"md5": "d0136e77a646a3ad719aaa7f8f95a7ff.svg",&#xD;		"type": "costume",&#xD;		"name": "2-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			18&#xD;		],&#xD;		"md5": "7c1700f0dcfb418662d29ba6faa114e7.svg",&#xD;		"type": "costume",&#xD;		"name": "3-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "6238b9b95fad7f7aa9cef9bde5bde474.svg",&#xD;		"type": "costume",&#xD;		"name": "4-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			19&#xD;		],&#xD;		"md5": "aef915acf1d49deed46692411e6c6039.svg",&#xD;		"type": "costume",&#xD;		"name": "5-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			17&#xD;		],&#xD;		"md5": "e6ad1d1fe44a1c63c8f99c0bbb893a44.svg",&#xD;		"type": "costume",&#xD;		"name": "6-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			19&#xD;		],&#xD;		"md5": "469b4fb6f6f8721e2c244ae9c71a7e66.svg",&#xD;		"type": "costume",&#xD;		"name": "7-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			19&#xD;		],&#xD;		"md5": "5bfcf2c715b81ae380ae2983bb4c5bb2.svg",&#xD;		"type": "costume",&#xD;		"name": "8-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			20&#xD;		],&#xD;		"md5": "8014a66c758f1bc389194c988badb382.svg",&#xD;		"type": "costume",&#xD;		"name": "9-pixel",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			26&#xD;		],&#xD;		"md5": "5406b37278d819d4787a588b9c91f68e.svg",&#xD;		"type": "costume",&#xD;		"name": "A-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			26&#xD;		],&#xD;		"md5": "f277943adf8d79b41b9b568321a786ee.svg",&#xD;		"type": "costume",&#xD;		"name": "A-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			24&#xD;		],&#xD;		"md5": "cc0cc7ae3240eab7d040e148cc663325.svg",&#xD;		"type": "costume",&#xD;		"name": "A-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			25&#xD;		],&#xD;		"md5": "2a8fac3c82d95f13203843a597b5757b.svg",&#xD;		"type": "costume",&#xD;		"name": "B-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			25&#xD;		],&#xD;		"md5": "07fa4ebc421d84743b6ced189dd2f9cf.svg",&#xD;		"type": "costume",&#xD;		"name": "B-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			23&#xD;		],&#xD;		"md5": "6c9a9203155f93f24f31b30e3bd76b6d.svg",&#xD;		"type": "costume",&#xD;		"name": "B-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "144845715016910e88e2a223ed4d3df1.svg",&#xD;		"type": "costume",&#xD;		"name": "C-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "1045c56c4be3d8d0650579864417fbc7.svg",&#xD;		"type": "costume",&#xD;		"name": "C-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			24&#xD;		],&#xD;		"md5": "c8fd35294d17a369fecb6d6e4725d04a.svg",&#xD;		"type": "costume",&#xD;		"name": "C-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			26&#xD;		],&#xD;		"md5": "dfd362f2da975c20aa7849a8fa2fb4df.svg",&#xD;		"type": "costume",&#xD;		"name": "D-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			26&#xD;		],&#xD;		"md5": "3e4cc4cff08bb42bc690eff66dffbbe9.svg",&#xD;		"type": "costume",&#xD;		"name": "D-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			23&#xD;		],&#xD;		"md5": "bd7f984fe82d9d0fdcff0a87b3c0f9e0.svg",&#xD;		"type": "costume",&#xD;		"name": "D-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			25&#xD;		],&#xD;		"md5": "56473bacbdf6f0dbca1afb04e5aebaf7.svg",&#xD;		"type": "costume",&#xD;		"name": "E-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			25&#xD;		],&#xD;		"md5": "8bba14966fe35f0dccb66ef06a9843ca.svg",&#xD;		"type": "costume",&#xD;		"name": "E-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			23&#xD;		],&#xD;		"md5": "e8cfc63375f6d6c2a580823489427f38.svg",&#xD;		"type": "costume",&#xD;		"name": "E-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			26&#xD;		],&#xD;		"md5": "5844ff29fc8663c8613f12169d2f07ef.svg",&#xD;		"type": "costume",&#xD;		"name": "F-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			18,&#xD;			25&#xD;		],&#xD;		"md5": "0dbe4a064abea1a9a3bc0d2732643e6b.svg",&#xD;		"type": "costume",&#xD;		"name": "F-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			16,&#xD;			23&#xD;		],&#xD;		"md5": "3db373f4482e391e66d1b06335a96144.svg",&#xD;		"type": "costume",&#xD;		"name": "F-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			25&#xD;		],&#xD;		"md5": "ee6454d15fbbe93e908a2ebbfad483a0.svg",&#xD;		"type": "costume",&#xD;		"name": "G-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			23,&#xD;			25&#xD;		],&#xD;		"md5": "991023d303f79ce092f070392ffbd69f.svg",&#xD;		"type": "costume",&#xD;		"name": "G-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			24&#xD;		],&#xD;		"md5": "38f22c0d8dbe541bde409ba1f241d4c1.svg",&#xD;		"type": "costume",&#xD;		"name": "G-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			25&#xD;		],&#xD;		"md5": "2a0e1308d6cb806818af696a89b21863.svg",&#xD;		"type": "costume",&#xD;		"name": "H-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			25&#xD;		],&#xD;		"md5": "ca33be5270308a695c9b88af73f590dc.svg",&#xD;		"type": "costume",&#xD;		"name": "H-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			24&#xD;		],&#xD;		"md5": "668ba2b891f82ce78d8590f0287632b1.svg",&#xD;		"type": "costume",&#xD;		"name": "H-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			9,&#xD;			26&#xD;		],&#xD;		"md5": "705297637ea83af5b94b6fe2e34aeef4.svg",&#xD;		"type": "costume",&#xD;		"name": "I-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			9,&#xD;			26&#xD;		],&#xD;		"md5": "7b3ae96764795727fa1cb0be68a9ca5e.svg",&#xD;		"type": "costume",&#xD;		"name": "I-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			7,&#xD;			23&#xD;		],&#xD;		"md5": "3475aa570304accb7e6dbd2516234135.svg",&#xD;		"type": "costume",&#xD;		"name": "I-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			25&#xD;		],&#xD;		"md5": "ac2e7eaecb80c5501e5e56802d03af00.svg",&#xD;		"type": "costume",&#xD;		"name": "J-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			25&#xD;		],&#xD;		"md5": "0ab9a94fc2e32160efc113a8e5ffb984.svg",&#xD;		"type": "costume",&#xD;		"name": "J-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			12,&#xD;			24&#xD;		],&#xD;		"md5": "c9356a022cfbc25be6c484e9781e4637.svg",&#xD;		"type": "costume",&#xD;		"name": "J-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			26&#xD;		],&#xD;		"md5": "62dcc92dc3c6cb0271244190320c4f71.svg",&#xD;		"type": "costume",&#xD;		"name": "K-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			26&#xD;		],&#xD;		"md5": "ef02339e8a0382367f0b5a414915b885.svg",&#xD;		"type": "costume",&#xD;		"name": "K-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			24&#xD;		],&#xD;		"md5": "07977708617d12381b22d1ee0f4926a3.svg",&#xD;		"type": "costume",&#xD;		"name": "K-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			26&#xD;		],&#xD;		"md5": "7ce306e9c9c0dd0a24279606301f1d05.svg",&#xD;		"type": "costume",&#xD;		"name": "L-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			26&#xD;		],&#xD;		"md5": "067c21a9b2f91ed33e07131ce5a59210.svg",&#xD;		"type": "costume",&#xD;		"name": "L-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			17,&#xD;			23&#xD;		],&#xD;		"md5": "488d66f17c0089a7796d44cfc70792e8.svg",&#xD;		"type": "costume",&#xD;		"name": "L-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			25&#xD;		],&#xD;		"md5": "b27f166f9ab4a3fb93a50a77c58c3df3.svg",&#xD;		"type": "costume",&#xD;		"name": "M-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			30,&#xD;			25&#xD;		],&#xD;		"md5": "55f00a23d0f5cc57be9533f126a7ac8c.svg",&#xD;		"type": "costume",&#xD;		"name": "M-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			27,&#xD;			24&#xD;		],&#xD;		"md5": "613df2bd97784a239ab992f7a95458a0.svg",&#xD;		"type": "costume",&#xD;		"name": "M-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			25&#xD;		],&#xD;		"md5": "293589fd5bbc358a20c165ab49c19833.svg",&#xD;		"type": "costume",&#xD;		"name": "N-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			26,&#xD;			25&#xD;		],&#xD;		"md5": "5e07ee61cb20bc575720774584dfec53.svg",&#xD;		"type": "costume",&#xD;		"name": "N-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			23&#xD;		],&#xD;		"md5": "435697335345f946d943c1d89fdb459a.svg",&#xD;		"type": "costume",&#xD;		"name": "N-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			25&#xD;		],&#xD;		"md5": "088beed7ce0dff554da06f54d0558bc0.svg",&#xD;		"type": "costume",&#xD;		"name": "O-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			25&#xD;		],&#xD;		"md5": "e8fa671bb1ca53c044bfb27225321c25.svg",&#xD;		"type": "costume",&#xD;		"name": "O-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			24&#xD;		],&#xD;		"md5": "a132bf3d4084ef8ca9e0797f64c0f082.svg",&#xD;		"type": "costume",&#xD;		"name": "O-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			25&#xD;		],&#xD;		"md5": "ad4a101b83f28ced16849be3e393caa9.svg",&#xD;		"type": "costume",&#xD;		"name": "P-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			25&#xD;		],&#xD;		"md5": "781c42f9da36bbc0ee3775f18ac98124.svg",&#xD;		"type": "costume",&#xD;		"name": "P-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			17,&#xD;			24&#xD;		],&#xD;		"md5": "bcaec7c778920d8d74c275c1aff634fe.svg",&#xD;		"type": "costume",&#xD;		"name": "P-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			30&#xD;		],&#xD;		"md5": "484e44f908e84d795c87cf994364e722.svg",&#xD;		"type": "costume",&#xD;		"name": "Q-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			30&#xD;		],&#xD;		"md5": "31f28be74dc7de42a5c4a38504d666ca.svg",&#xD;		"type": "costume",&#xD;		"name": "Q-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			29&#xD;		],&#xD;		"md5": "aef19097378515308e934a79f147032e.svg",&#xD;		"type": "costume",&#xD;		"name": "Q-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "55999cb6783ef8351d841294d75af942.svg",&#xD;		"type": "costume",&#xD;		"name": "R-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "926f8ff770cb15b42b12f209fd02d98c.svg",&#xD;		"type": "costume",&#xD;		"name": "R-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			23&#xD;		],&#xD;		"md5": "a66d8f0ba6d40c624873edc8df58c014.svg",&#xD;		"type": "costume",&#xD;		"name": "R-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			16,&#xD;			25&#xD;		],&#xD;		"md5": "fca1555f335392f1c4ef620bf098c0de.svg",&#xD;		"type": "costume",&#xD;		"name": "S-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			16,&#xD;			25&#xD;		],&#xD;		"md5": "c529ed7b40f4a949539f8f454e3fe475.svg",&#xD;		"type": "costume",&#xD;		"name": "S-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			14,&#xD;			23&#xD;		],&#xD;		"md5": "e96388c9197733bdadbad3ce014c0e59.svg",&#xD;		"type": "costume",&#xD;		"name": "S-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			27&#xD;		],&#xD;		"md5": "d3b342c795a620b69639c02a419e8535.svg",&#xD;		"type": "costume",&#xD;		"name": "T-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			27&#xD;		],&#xD;		"md5": "eeb0fd25c9273747ac38766d1959ba2b.svg",&#xD;		"type": "costume",&#xD;		"name": "T-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			24&#xD;		],&#xD;		"md5": "a9683d4946b08a76864a51bd21d811cb.svg",&#xD;		"type": "costume",&#xD;		"name": "T-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			26&#xD;		],&#xD;		"md5": "fcf99b6e8aeb2d504e1e9b2194640916.svg",&#xD;		"type": "costume",&#xD;		"name": "U-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			24,&#xD;			26&#xD;		],&#xD;		"md5": "f442802f17225d6506ac9718810f179e.svg",&#xD;		"type": "costume",&#xD;		"name": "U-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			21,&#xD;			24&#xD;		],&#xD;		"md5": "0779f03a6589c60352b1d4806a4a61c0.svg",&#xD;		"type": "costume",&#xD;		"name": "U-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			25&#xD;		],&#xD;		"md5": "750b47f1de2143f76354239b27e1e5f0.svg",&#xD;		"type": "costume",&#xD;		"name": "V-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			25,&#xD;			25&#xD;		],&#xD;		"md5": "03de7add77e31799ca568a9c671012b4.svg",&#xD;		"type": "costume",&#xD;		"name": "V-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			23&#xD;		],&#xD;		"md5": "29befe20b105b69471f5507d025ec3e0.svg",&#xD;		"type": "costume",&#xD;		"name": "V-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			25&#xD;		],&#xD;		"md5": "7d9d4c0da9bd1a3ddf253d1bea26f4e9.svg",&#xD;		"type": "costume",&#xD;		"name": "W-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			37,&#xD;			25&#xD;		],&#xD;		"md5": "c0f48eb69cae4a611d3e7b7e06b0d1c1.svg",&#xD;		"type": "costume",&#xD;		"name": "W-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			34,&#xD;			24&#xD;		],&#xD;		"md5": "d1c922c9e9d53d2f6f36ca637e85de6b.svg",&#xD;		"type": "costume",&#xD;		"name": "W-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "92c452555b3d5a4993f107810043ea03.svg",&#xD;		"type": "costume",&#xD;		"name": "X-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			26&#xD;		],&#xD;		"md5": "f688425da41c2b7f80d4b8752de69bc9.svg",&#xD;		"type": "costume",&#xD;		"name": "X-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			24&#xD;		],&#xD;		"md5": "ec90479a0ce3c7706f1916daef0f3c67.svg",&#xD;		"type": "costume",&#xD;		"name": "X-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			27&#xD;		],&#xD;		"md5": "b3c252450d413fc75be0eafdbe4490dc.svg",&#xD;		"type": "costume",&#xD;		"name": "Y-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			22,&#xD;			27&#xD;		],&#xD;		"md5": "1cfa161ae5d60ea163e4e0aa34d08f02.svg",&#xD;		"type": "costume",&#xD;		"name": "Y-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			20,&#xD;			24&#xD;		],&#xD;		"md5": "a1fc3c0fa304255364c0f98547e0e448.svg",&#xD;		"type": "costume",&#xD;		"name": "Y-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			26&#xD;		],&#xD;		"md5": "86326c9180c485b557a075f4794939d7.svg",&#xD;		"type": "costume",&#xD;		"name": "Z-story-1",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			19,&#xD;			26&#xD;		],&#xD;		"md5": "e10b203e47bbb41edab78be59e628449.svg",&#xD;		"type": "costume",&#xD;		"name": "Z-story-2",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	},&#xD;	{&#xD;		"info": [&#xD;			17,&#xD;			23&#xD;		],&#xD;		"md5": "0788df7b1d9cf02dfdebc021d4f30ce4.svg",&#xD;		"type": "costume",&#xD;		"name": "Z-story-3",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		]&#xD;	}&#xD;];&#xD;&#xD;/***/ }),&#xD;/* 565 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = [&#xD;	{&#xD;		"name": "boing",&#xD;		"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;		"sampleCount": 6804,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "chomp",&#xD;		"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;		"sampleCount": 2912,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "gong",&#xD;		"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;		"sampleCount": 46848,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "pop",&#xD;		"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;		"sampleCount": 258,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "space ripple",&#xD;		"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;		"sampleCount": 41149,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "beeps",&#xD;		"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;		"sampleCount": 9536,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "woof",&#xD;		"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;		"sampleCount": 3168,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "squawk",&#xD;		"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;		"sampleCount": 8208,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "cheer",&#xD;		"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;		"sampleCount": 62528,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "wub",&#xD;		"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;		"sampleCount": 7392,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hey",&#xD;		"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;		"sampleCount": 5414,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "C major ukulele",&#xD;		"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;		"sampleCount": 18203,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "dance loop",&#xD;		"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;		"sampleCount": 92800,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "funky loop",&#xD;		"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;		"sampleCount": 44748,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "dance celebrate",&#xD;		"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;		"sampleCount": 176401,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "odesong-b",&#xD;		"md5": "2c41921491b1da2bfa1ebcaba34265ca.wav",&#xD;		"sampleCount": 212553,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "C bass",&#xD;		"md5": "c3566ec797b483acde28f790994cc409.wav",&#xD;		"sampleCount": 44608,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D bass",&#xD;		"md5": "5a3ae8a2665f50fdc38cc301fbac79ba.wav",&#xD;		"sampleCount": 40192,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E bass",&#xD;		"md5": "0657e39bae81a232b01a18f727d3b891.wav",&#xD;		"sampleCount": 36160,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F bass",&#xD;		"md5": "ea21bdae86f70d60b28f1dddcf50d104.wav",&#xD;		"sampleCount": 34368,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G bass",&#xD;		"md5": "05c192194e8f1944514dce3833e33439.wav",&#xD;		"sampleCount": 30976,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A bass",&#xD;		"md5": "c04ebf21e5e19342fa1535e4efcdb43b.wav",&#xD;		"sampleCount": 28160,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B bass",&#xD;		"md5": "e31dcaf7bcdf58ac2a26533c48936c45.wav",&#xD;		"sampleCount": 25792,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 bass",&#xD;		"md5": "667d6c527b79321d398e85b526f15b99.wav",&#xD;		"sampleCount": 24128,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "plunge",&#xD;		"md5": "c09455ee9da0e7eeead42d4e73c2555d.wav",&#xD;		"sampleCount": 22400,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "meow",&#xD;		"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;		"sampleCount": 18688,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "xylo1",&#xD;		"md5": "6ac484e97c1c1fe1384642e26a125e70.wav",&#xD;		"sampleCount": 238232,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "bell toll",&#xD;		"md5": "25d61e79cbeba4041eebeaebd7bf9598.wav",&#xD;		"sampleCount": 45168,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "water drop",&#xD;		"md5": "aa488de9e2c871e9d4faecd246ed737a.wav",&#xD;		"sampleCount": 8136,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "strum",&#xD;		"md5": "b92de59d992a655c1b542223a784cda6.wav",&#xD;		"sampleCount": 11247,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "meow2",&#xD;		"md5": "cf51a0c4088942d95bcc20af13202710.wav",&#xD;		"sampleCount": 6512,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "ripples",&#xD;		"md5": "4da8a805673c288965e1e5535c3f7f2b.wav",&#xD;		"sampleCount": 10144,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "dance snare beat",&#xD;		"md5": "562587bdb75e3a8124cdaa46ba0f648b.wav",&#xD;		"sampleCount": 176401,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "small cowbell",&#xD;		"md5": "e29154f53f56f96f8a3292bdcddcec54.wav",&#xD;		"sampleCount": 9718,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "large cowbell",&#xD;		"md5": "006316650ffc673dc02d36aa55881327.wav",&#xD;		"sampleCount": 20856,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "crash cymbal",&#xD;		"md5": "f2c47a46f614f467a7ac802ed9ec3d8e.wav",&#xD;		"sampleCount": 25220,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hihat cymbal",&#xD;		"md5": "2d01f60d0f20ab39facbf707899c6b2a.wav",&#xD;		"sampleCount": 2752,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "splash cymbal",&#xD;		"md5": "9d63ed5be96c43b06492e8b4a9cea8d8.wav",&#xD;		"sampleCount": 9600,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "roll cymbal",&#xD;		"md5": "da8355d753cd2a5ddd19cb2bb41c1547.wav",&#xD;		"sampleCount": 26432,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "bell cymbal",&#xD;		"md5": "efddec047de95492f775a1b5b2e8d19e.wav",&#xD;		"sampleCount": 19328,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "dog1",&#xD;		"md5": "b15adefc3c12f758b6dc6a045362532f.wav",&#xD;		"sampleCount": 3672,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "dog2",&#xD;		"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;		"sampleCount": 3168,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "bird",&#xD;		"md5": "18bd4b634a3f992a16b30344c7d810e0.wav",&#xD;		"sampleCount": 3840,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "drum bass1",&#xD;		"md5": "48328c874353617451e4c7902cc82817.wav",&#xD;		"sampleCount": 6528,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "drum bass2",&#xD;		"md5": "711a1270d1cf2e5de9b145ee539213e4.wav",&#xD;		"sampleCount": 3791,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "drum bass3",&#xD;		"md5": "c21704337b16359ea631b5f8eb48f765.wav",&#xD;		"sampleCount": 8576,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "high conga",&#xD;		"md5": "16144544de90e98a92a265d4fc3241ea.wav",&#xD;		"sampleCount": 8192,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "low conga",&#xD;		"md5": "0b6f94487cd8a1cf0bb77e15966656c3.wav",&#xD;		"sampleCount": 8384,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "muted conga",&#xD;		"md5": "1d4abbe3c9bfe198a88badb10762de75.wav",&#xD;		"sampleCount": 4544,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "tap conga",&#xD;		"md5": "fd9a67157f57f9cc6fe3cdce38a6d4a8.wav",&#xD;		"sampleCount": 6880,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "tap snare",&#xD;		"md5": "d55b3954d72c6275917f375e49b502f3.wav",&#xD;		"sampleCount": 3296,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "sidestick snare",&#xD;		"md5": "f6868ee5cf626fc4ef3ca1119dc95592.wav",&#xD;		"sampleCount": 2336,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "flam snare",&#xD;		"md5": "3b6cce9f8c56c0537ca61eee3945cd1d.wav",&#xD;		"sampleCount": 4416,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hi na tabla",&#xD;		"md5": "35b42d98c43404a5b1b52fb232a62bd7.wav",&#xD;		"sampleCount": 4096,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hi tun tabla",&#xD;		"md5": "da734693dfa6a9a7eccdc7f9a0ca9840.wav",&#xD;		"sampleCount": 18656,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "lo gliss tabla",&#xD;		"md5": "d7cd24689737569c93e7ea7344ba6b0e.wav",&#xD;		"sampleCount": 7008,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "lo geh tabla",&#xD;		"md5": "9205359ab69d042ed3da8a160a651690.wav",&#xD;		"sampleCount": 30784,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "high tom",&#xD;		"md5": "d623f99b3c8d33932eb2c6c9cfd817c5.wav",&#xD;		"sampleCount": 12320,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "low tom",&#xD;		"md5": "1569bbbd8952b0575e5a5cb5aefb50ba.wav",&#xD;		"sampleCount": 20000,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "duck",&#xD;		"md5": "af5b039e1b05e0ccb12944f648a8884e.wav",&#xD;		"sampleCount": 5792,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C guitar",&#xD;		"md5": "22baa07795a9a524614075cdea543793.wav",&#xD;		"sampleCount": 44864,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D guitar",&#xD;		"md5": "2dbcfae6a55738f94bbb40aa5fcbf7ce.wav",&#xD;		"sampleCount": 41120,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E guitar",&#xD;		"md5": "4b5d1da83e59bf35578324573c991666.wav",&#xD;		"sampleCount": 38400,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F guitar",&#xD;		"md5": "b51d086aeb1921ec405561df52ecbc50.wav",&#xD;		"sampleCount": 36416,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G guitar",&#xD;		"md5": "98a835713ecea2f3ef9f4f442d52ad20.wav",&#xD;		"sampleCount": 33600,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A guitar",&#xD;		"md5": "ee753e87d212d4b2fb650ca660f1e839.wav",&#xD;		"sampleCount": 31872,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B guitar",&#xD;		"md5": "2ae2d67de62df8ca54d638b4ad2466c3.wav",&#xD;		"sampleCount": 29504,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 guitar",&#xD;		"md5": "c8d2851bd99d8e0ce6c1f05e4acc7f34.wav",&#xD;		"sampleCount": 27712,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C elec bass",&#xD;		"md5": "69eee3d038ea0f1c34ec9156a789236d.wav",&#xD;		"sampleCount": 5216,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D elec bass",&#xD;		"md5": "67a6d1aa68233a2fa641aee88c7f051f.wav",&#xD;		"sampleCount": 5568,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E elec bass",&#xD;		"md5": "0704b8ceabe54f1dcedda8c98f1119fd.wav",&#xD;		"sampleCount": 5691,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F elec bass",&#xD;		"md5": "45eedb4ce62a9cbbd2207824b94a4641.wav",&#xD;		"sampleCount": 5312,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G elec bass",&#xD;		"md5": "97b187d72219b994a6ef6a5a6b09605c.wav",&#xD;		"sampleCount": 5568,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A elec bass",&#xD;		"md5": "5cb46ddd903fc2c9976ff881df9273c9.wav",&#xD;		"sampleCount": 5920,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B elec bass",&#xD;		"md5": "5a0701d0a914223b5288300ac94e90e4.wav",&#xD;		"sampleCount": 6208,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 elec bass",&#xD;		"md5": "56fc995b8860e713c5948ecd1c2ae572.wav",&#xD;		"sampleCount": 5792,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C elec guitar",&#xD;		"md5": "0d340de02e14bebaf8dfa0e43eb3f1f9.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D elec guitar",&#xD;		"md5": "1b5de9866801eb2f9d4f57c7c3b473f5.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E elec guitar",&#xD;		"md5": "2e6a6ae3e0f72bf78c74def8130f459a.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F elec guitar",&#xD;		"md5": "5eb00f15f21f734986aa45156d44478d.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G elec guitar",&#xD;		"md5": "cd0d0e7dad415b2ffa2ba7a61860eaf8.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A elec guitar",&#xD;		"md5": "fa5f7fea601e9368dd68449d9a54c995.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B elec guitar",&#xD;		"md5": "81f142d0b00189703d7fe9b1f13f6f87.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 elec guitar",&#xD;		"md5": "3a8ed3129f22cba5b0810bc030d16b5f.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "xylo3",&#xD;		"md5": "3395cade6d7c0cc9ce73a8c12f40319b.wav",&#xD;		"sampleCount": 209502,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "tom drum",&#xD;		"md5": "ca350a536d60bb8ed50f24677d65eed8.wav",&#xD;		"sampleCount": 33920,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "dance celebrate2",&#xD;		"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;		"sampleCount": 176401,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "bass beatbox",&#xD;		"md5": "28153621d293c86da0b246d314458faf.wav",&#xD;		"sampleCount": 6720,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hi beatbox",&#xD;		"md5": "5a07847bf246c227204728b05a3fc8f3.wav",&#xD;		"sampleCount": 5856,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "snare beatbox",&#xD;		"md5": "c642c4c00135d890998f351faec55498.wav",&#xD;		"sampleCount": 5630,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "scratching beatbox",&#xD;		"md5": "859249563a7b1fc0f6e92e36d1db81c7.wav",&#xD;		"sampleCount": 11552,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "crash beatbox",&#xD;		"md5": "725e29369e9138a43f11e0e5eb3eb562.wav",&#xD;		"sampleCount": 26883,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "wub beatbox",&#xD;		"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;		"sampleCount": 7392,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "hihat beatbox",&#xD;		"md5": "0c77025e2e874f05cd3c7d850874d56d.wav",&#xD;		"sampleCount": 4274,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "rim beatbox",&#xD;		"md5": "7ede1382b578d8fc32850b48d082d914.wav",&#xD;		"sampleCount": 4960,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "clap beatbox",&#xD;		"md5": "abc70bb390f8e55f22f32265500d814a.wav",&#xD;		"sampleCount": 4224,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "wah beatbox",&#xD;		"md5": "9021b7bb06f2399f18e2db4fb87095dc.wav",&#xD;		"sampleCount": 6624,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "chee chee",&#xD;		"md5": "25f4826cdd61e0a1c623ec2324c16ca0.wav",&#xD;		"sampleCount": 34560,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "horse",&#xD;		"md5": "45ffcf97ee2edca0199ff5aa71a5b72e.wav",&#xD;		"sampleCount": 14464,&#xD;		"rate": 11025,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C piano",&#xD;		"md5": "d27ed8d953fe8f03c00f4d733d31d2cc.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D piano",&#xD;		"md5": "51381ac422605ee8c7d64cfcbfd75efc.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E piano",&#xD;		"md5": "c818fdfaf8a0efcb562e24e794700a57.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F piano",&#xD;		"md5": "cdab3cce84f74ecf53e3941c6a003b5e.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G piano",&#xD;		"md5": "42bb2ed28e7023e111b33220e1594a6f.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A piano",&#xD;		"md5": "0727959edb2ea0525feed9b0c816991c.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B piano",&#xD;		"md5": "86826c6022a46370ed1afae69f1ab1b9.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 piano",&#xD;		"md5": "75d7d2c9b5d40dd4e1cb268111abf1a2.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C elec piano",&#xD;		"md5": "8366ee963cc57ad24a8a35a26f722c2b.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D elec piano",&#xD;		"md5": "835f136ca8d346a17b4d4baf8405be37.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E elec piano",&#xD;		"md5": "ab3c198f8e36efff14f0a5bad35fa3cd.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F elec piano",&#xD;		"md5": "dc5e368fc0d0dad1da609bfc3e29aa15.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G elec piano",&#xD;		"md5": "39525f6545d62a95d05153f92d63301a.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A elec piano",&#xD;		"md5": "0cfa8e84d6a5cd63afa31d541625a9ef.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B elec piano",&#xD;		"md5": "9cc77167419f228503dd57fddaa5b2a6.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 elec piano",&#xD;		"md5": "366c7edbd4dd5cca68bf62902999bd66.wav",&#xD;		"sampleCount": 44100,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C sax",&#xD;		"md5": "4d2c939d6953b5f241a27a62cf72de64.wav",&#xD;		"sampleCount": 9491,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D sax",&#xD;		"md5": "39f41954a73c0e15d842061e1a4c5e1d.wav",&#xD;		"sampleCount": 9555,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E sax",&#xD;		"md5": "3568b7dfe173fab6877a9ff1dcbcf1aa.wav",&#xD;		"sampleCount": 7489,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F sax",&#xD;		"md5": "2ae3083817bcd595e26ea2884b6684d5.wav",&#xD;		"sampleCount": 7361,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "G sax",&#xD;		"md5": "cefba5de46adfe5702485e0934bb1e13.wav",&#xD;		"sampleCount": 7349,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "A sax",&#xD;		"md5": "420991e0d6d99292c6d736963842536a.wav",&#xD;		"sampleCount": 6472,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B sax",&#xD;		"md5": "653ebe92d491b49ad5d8101d629f567b.wav",&#xD;		"sampleCount": 9555,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 sax",&#xD;		"md5": "ea8d34b18c3d8fe328cea201666458bf.wav",&#xD;		"sampleCount": 7349,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "drive around",&#xD;		"md5": "a3a85fb8564b0266f50a9c091087b7aa.wav",&#xD;		"sampleCount": 44096,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "scratchy beat",&#xD;		"md5": "289dc558e076971e74dd1a0bd55719b1.wav",&#xD;		"sampleCount": 44096,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "drum jam",&#xD;		"md5": "8b5486ccc806e97e83049d25b071f7e4.wav",&#xD;		"sampleCount": 44288,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "cymbal echo",&#xD;		"md5": "bb243badd1201b2607bf2513df10cd97.wav",&#xD;		"sampleCount": 44326,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "drum satellite",&#xD;		"md5": "079067d7909f791b29f8be1c00fc2131.wav",&#xD;		"sampleCount": 44096,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "kick back",&#xD;		"md5": "9cd340d9d568b1479f731e69e103b3ce.wav",&#xD;		"sampleCount": 44748,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "drum funky",&#xD;		"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;		"sampleCount": 44748,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "C trombone",&#xD;		"md5": "821b23a489201a0f21f47ba8528ba47f.wav",&#xD;		"sampleCount": 19053,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D trombone",&#xD;		"md5": "f3afca380ba74372d611d3f518c2f35b.wav",&#xD;		"sampleCount": 17339,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E trombone",&#xD;		"md5": "c859fb0954acaa25c4b329df5fb76434.wav",&#xD;		"sampleCount": 16699,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F trombone",&#xD;		"md5": "d6758470457aac2aa712717a676a5163.wav",&#xD;		"sampleCount": 19373,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G trombone",&#xD;		"md5": "9436fd7a0eacb4a6067e7db14236dde1.wav",&#xD;		"sampleCount": 17179,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A trombone",&#xD;		"md5": "863ccc8ba66e6dabbce2a1261c22be0f.wav",&#xD;		"sampleCount": 17227,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "B trombone",&#xD;		"md5": "85b663229525b73d9f6647f78eb23e0a.wav",&#xD;		"sampleCount": 15522,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 trombone",&#xD;		"md5": "68aec107bd3633b2ee40c532eedc3897.wav",&#xD;		"sampleCount": 13904,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C trumpet",&#xD;		"md5": "8970afcdc4e47bb54959a81fe27522bd.wav",&#xD;		"sampleCount": 13118,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "D trumpet",&#xD;		"md5": "0b1345b8fe2ba3076fedb4f3ae48748a.wav",&#xD;		"sampleCount": 12702,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "E trumpet",&#xD;		"md5": "494295a92314cadb220945a6711c568c.wav",&#xD;		"sampleCount": 8680,&#xD;		"rate": 22050,&#xD;		"format": "adpcm"&#xD;	},&#xD;	{&#xD;		"name": "F trumpet",&#xD;		"md5": "5fa3108b119ca266029b4caa340a7cd0.wav",&#xD;		"sampleCount": 12766,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G trumpet",&#xD;		"md5": "e84afda25975f14b364118591538ccf4.wav",&#xD;		"sampleCount": 14640,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A trumpet",&#xD;		"md5": "d2dd6b4372ca17411965dc92d52b2172.wav",&#xD;		"sampleCount": 13911,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "B trumpet",&#xD;		"md5": "cad2bc57729942ed9b605145fc9ea65d.wav",&#xD;		"sampleCount": 14704,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "C2 trumpet",&#xD;		"md5": "df08249ed5446cc5e10b7ac62faac89b.wav",&#xD;		"sampleCount": 15849,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "F major ukulele",&#xD;		"md5": "cd0ab5d1b0120c6ed92a1654ccf81376.wav",&#xD;		"sampleCount": 18235,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "A minor ukulele",&#xD;		"md5": "69d25af0fd065da39c71439174efc589.wav",&#xD;		"sampleCount": 18267,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	},&#xD;	{&#xD;		"name": "G ukulele",&#xD;		"md5": "d20218f92ee606277658959005538e2d.wav",&#xD;		"sampleCount": 18235,&#xD;		"rate": 22050,&#xD;		"format": ""&#xD;	}&#xD;];&#xD;&#xD;/***/ }),&#xD;/* 566 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;module.exports = [&#xD;	{&#xD;		"name": "A-block",&#xD;		"md5": "602a16930a8050e1298e1a0ae844363e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "A-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "a-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "602a16930a8050e1298e1a0ae844363e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "B-block",&#xD;		"md5": "f8c683cf71660e8ac1f8855599857a25.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "B-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "b-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f8c683cf71660e8ac1f8855599857a25.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "C-block",&#xD;		"md5": "f8f4cc686ffc5a4113a99f70b09abd32.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "C-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "c-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f8f4cc686ffc5a4113a99f70b09abd32.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 43&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "D-block",&#xD;		"md5": "aee2d71ef0293b33479bff9423d16b67.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "D-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "d-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aee2d71ef0293b33479bff9423d16b67.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "E-block",&#xD;		"md5": "16c6257316ff94cc7539ccdfc24e5fb8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "E-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "e-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "16c6257316ff94cc7539ccdfc24e5fb8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "F-block",&#xD;		"md5": "34c090c1f573c569332ead68cb99b595.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "F-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "f-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "34c090c1f573c569332ead68cb99b595.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "G-block",&#xD;		"md5": "8bb2382627004eb08ff10ea8171cc724.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "G-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "g-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8bb2382627004eb08ff10ea8171cc724.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "H-block",&#xD;		"md5": "f1578807d4a124fc02b639a8febeaab3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "H-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "h-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f1578807d4a124fc02b639a8febeaab3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "I-block",&#xD;		"md5": "341bc70442886d6fdf959f2a97a63554.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "I-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "i-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "341bc70442886d6fdf959f2a97a63554.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "J-block",&#xD;		"md5": "4b420cce964beedf2c1dc43faa59fdec.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "J-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "j-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4b420cce964beedf2c1dc43faa59fdec.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "K-block",&#xD;		"md5": "19601cc33449813aa93a47c63167e5c1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "K-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "k-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "19601cc33449813aa93a47c63167e5c1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "L-block",&#xD;		"md5": "87358e3c9b9f5be4376253ce08d0192d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "L-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "l-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "87358e3c9b9f5be4376253ce08d0192d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "M-block",&#xD;		"md5": "7ba0642be1f0080c0d273ea96e29b1e8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "M-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "m-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7ba0642be1f0080c0d273ea96e29b1e8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "N-block",&#xD;		"md5": "6c1fbc57821744bd9356ce9a21ed70f7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "N-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "n-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6c1fbc57821744bd9356ce9a21ed70f7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "O-block",&#xD;		"md5": "e88638200a73e167d0e266a343019cec.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "O-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "o-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e88638200a73e167d0e266a343019cec.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "P-block",&#xD;		"md5": "ad2fc3a1c6538678915633a11ab6ec73.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "P-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "p-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ad2fc3a1c6538678915633a11ab6ec73.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Q-block",&#xD;		"md5": "64da9da8684c74deb567dbdb661d3a52.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Q-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "q-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "64da9da8684c74deb567dbdb661d3a52.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "R-block",&#xD;		"md5": "73e8d46f7475476d8cb4cfcfc75ee50d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "R-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "r-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "73e8d46f7475476d8cb4cfcfc75ee50d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "S-block",&#xD;		"md5": "9feb5593fed51e88dbb3128cfc290d29.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "S-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "s-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9feb5593fed51e88dbb3128cfc290d29.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 30&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "T-block",&#xD;		"md5": "d29c1caf5cf195740c38f279e82a77a4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "T-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "t-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d29c1caf5cf195740c38f279e82a77a4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "U-block",&#xD;		"md5": "faef46b7bf589c36300142f6f03c5d32.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "U-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "u-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "faef46b7bf589c36300142f6f03c5d32.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "V-block",&#xD;		"md5": "65e2f4821ab084827e22920acb61c92b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "V-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "v-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "65e2f4821ab084827e22920acb61c92b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "W-block",&#xD;		"md5": "5ab197b4f70b2f98a3658c7ccdc3351d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "W-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "w-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5ab197b4f70b2f98a3658c7ccdc3351d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "X-block",&#xD;		"md5": "cb9dff35f05e823d954e47e4a717a48c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "X-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "x-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cb9dff35f05e823d954e47e4a717a48c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 32&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Y-block",&#xD;		"md5": "4c13c440bcb35c8c3aa6226374fced3f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Y-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "y-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4c13c440bcb35c8c3aa6226374fced3f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Z-block",&#xD;		"md5": "0ccff1898f1bf1b25333d581db09fae2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Z-block",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "z-block",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0ccff1898f1bf1b25333d581db09fae2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "A-Glow",&#xD;		"md5": "d5aa299350c24c747200a64b63b1aa52.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "A-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "A-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d5aa299350c24c747200a64b63b1aa52.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "B-Glow",&#xD;		"md5": "a2e95f268a6cab03f3e94b3b0b792d83.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "B-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "B-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a2e95f268a6cab03f3e94b3b0b792d83.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 35&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "C-Glow",&#xD;		"md5": "9779a4a40934f04a4bf84920b258d7c9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "C-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "C-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9779a4a40934f04a4bf84920b258d7c9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 35&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "D-Glow",&#xD;		"md5": "3555b8bbbbcdc00354bf6fa81ac7042f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "D-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "D-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3555b8bbbbcdc00354bf6fa81ac7042f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 35&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "E-Glow",&#xD;		"md5": "44dbc655d5ac9f13618473848e23484e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "E-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "E-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "44dbc655d5ac9f13618473848e23484e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 34,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "F-Glow",&#xD;		"md5": "dec417e749e43d7de3985155f5f5a7a0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "F-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "F-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dec417e749e43d7de3985155f5f5a7a0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "G-Glow",&#xD;		"md5": "cf4aa465cd8fb7049cc571d7546a7eb1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "G-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "G-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cf4aa465cd8fb7049cc571d7546a7eb1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "H-Glow",&#xD;		"md5": "8d9bd5f00ea1ac6f92d0f97ee491b0f3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "H-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "H-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8d9bd5f00ea1ac6f92d0f97ee491b0f3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 46&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "I-Glow",&#xD;		"md5": "0e86de55840103dcd50199ab2b765de7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "I-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "I-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0e86de55840103dcd50199ab2b765de7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "J-Glow",&#xD;		"md5": "b3832145eacc39f91bd3a9a6673fa05c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "J-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "J-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b3832145eacc39f91bd3a9a6673fa05c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "K-Glow",&#xD;		"md5": "f4e37a7552ba05e995613211a7146de5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "K-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "K-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f4e37a7552ba05e995613211a7146de5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 38,&#xD;					"rotationCenterY": 36&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "L-Glow",&#xD;		"md5": "a75e45773ea6afaf8ae44f79f936fc82.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "L-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "L-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a75e45773ea6afaf8ae44f79f936fc82.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 35&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "M-Glow",&#xD;		"md5": "219b06faa5b816347165450d148213b4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "M-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "M-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "219b06faa5b816347165450d148213b4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 42,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "N-Glow",&#xD;		"md5": "4b724479fb3b2184fd8be6f83fb20e54.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "N-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "N-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4b724479fb3b2184fd8be6f83fb20e54.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "O-Glow",&#xD;		"md5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "O-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "O-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "P-Glow",&#xD;		"md5": "1cfa849cc967069730b7e9d0809c9dc1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "P-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "P-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1cfa849cc967069730b7e9d0809c9dc1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Q-Glow",&#xD;		"md5": "9d35979e9404ac234301269fcd7de288.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Q-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Q-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9d35979e9404ac234301269fcd7de288.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 43&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "R-Glow",&#xD;		"md5": "fc067ee076ecaba8430ccd54d9414c1b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "R-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "R-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fc067ee076ecaba8430ccd54d9414c1b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "S-Glow",&#xD;		"md5": "19a93db8a294ccaec4d6eef4020a446f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "S-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "S-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "19a93db8a294ccaec4d6eef4020a446f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "T-Glow",&#xD;		"md5": "d7bcda522a1e9504dafcf2fa0fcde39b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "T-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "T-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d7bcda522a1e9504dafcf2fa0fcde39b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "U-Glow",&#xD;		"md5": "790482a3c3691a1e96ef34eee7303872.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "U-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "U-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "790482a3c3691a1e96ef34eee7303872.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "V-Glow",&#xD;		"md5": "6a00388d8dc6be645b843cef9c22681c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "V-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "V-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6a00388d8dc6be645b843cef9c22681c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "W-Glow",&#xD;		"md5": "1a9ea7305a85b271c1de79beafe16cb4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "W-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "W-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1a9ea7305a85b271c1de79beafe16cb4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 45,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "X-Glow",&#xD;		"md5": "ec4e65b9ae475a676973128f4205df5f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "X-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "X-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ec4e65b9ae475a676973128f4205df5f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Y-Glow",&#xD;		"md5": "683cd093bb3b254733a15df6f843464c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Y-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Y-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "683cd093bb3b254733a15df6f843464c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 38,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Z-Glow",&#xD;		"md5": "db89a4c9b123123542e0b7556ed3ff9f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Z-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Z-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "db89a4c9b123123542e0b7556ed3ff9f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "0-Glow",&#xD;		"md5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "0-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "0-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "38b2b342659adc6fa289090975e0e71d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "1-Glow",&#xD;		"md5": "2c88706210672655401fe09edd8ff6a7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "1-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "1-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2c88706210672655401fe09edd8ff6a7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "2-Glow",&#xD;		"md5": "b9faa5708a799a1607f0325a7af2561c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "2-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "2-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b9faa5708a799a1607f0325a7af2561c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "3-Glow",&#xD;		"md5": "cf42a50552ce26032ead712ac4f36c23.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "3-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "3-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cf42a50552ce26032ead712ac4f36c23.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "4-Glow",&#xD;		"md5": "3ffa6aee373e28fc36b9395ac4d0467e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "4-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "4-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3ffa6aee373e28fc36b9395ac4d0467e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "5-Glow",&#xD;		"md5": "85d87d32e7e9e6be122c905b0d2e7e33.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "5-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "5-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "85d87d32e7e9e6be122c905b0d2e7e33.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "6-Glow",&#xD;		"md5": "62cc2a6def27f19d11ed56e86e95aac5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "6-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "6-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "62cc2a6def27f19d11ed56e86e95aac5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "7-Glow",&#xD;		"md5": "8887983eb4df2e62a2ed4770a1d98d60.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "7-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "7-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8887983eb4df2e62a2ed4770a1d98d60.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "8-Glow",&#xD;		"md5": "4c42c4cb0c1e090d0f9570416d3c80c8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "8-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "8-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4c42c4cb0c1e090d0f9570416d3c80c8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "9-Glow",&#xD;		"md5": "7bcb7e2e48f5cb770c83d4267922fec0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "9-Glow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "9-glow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7bcb7e2e48f5cb770c83d4267922fec0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 36&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "A-Pixel",&#xD;		"md5": "a54da6be420c9e8e7cb02e2a568f3442.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "A-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "A-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a54da6be420c9e8e7cb02e2a568f3442.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "B-Pixel",&#xD;		"md5": "e47682020873e276f550421f0d854523.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "B-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "B-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e47682020873e276f550421f0d854523.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "C-Pixel",&#xD;		"md5": "ee1958ffbae4e0fd836622ae183b55bd.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "C-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "C-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ee1958ffbae4e0fd836622ae183b55bd.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "D-Pixel",&#xD;		"md5": "d759df99f347d9b7d59e1f703e8e1438.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "D-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "D-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d759df99f347d9b7d59e1f703e8e1438.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "E-Pixel",&#xD;		"md5": "059a64a90014dc69c510b562cdf94df7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "E-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "E-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "059a64a90014dc69c510b562cdf94df7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 11,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "F-Pixel",&#xD;		"md5": "ebbc6dc0f7d1a89b159aac3f76fe52f4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "F-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "F-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ebbc6dc0f7d1a89b159aac3f76fe52f4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 10,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "G-Pixel",&#xD;		"md5": "203dfa253635f0e52059e835c51fa6f8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "G-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "G-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "203dfa253635f0e52059e835c51fa6f8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 15,&#xD;					"rotationCenterY": 22&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "H-Pixel",&#xD;		"md5": "d9a94d9b9abc9e26eb91d22d197a1556.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "H-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "H-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d9a94d9b9abc9e26eb91d22d197a1556.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 15,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "I-Pixel",&#xD;		"md5": "aeb851adc39da9582a379af1ed6d0efe.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "I-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "I-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aeb851adc39da9582a379af1ed6d0efe.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 9,&#xD;					"rotationCenterY": 21&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "J-Pixel",&#xD;		"md5": "c18906f764b2889a8fc0b3c16db28bf0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "J-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "J-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c18906f764b2889a8fc0b3c16db28bf0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "K-Pixel",&#xD;		"md5": "4483633d2ae26987d0efe359aaf1357b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "K-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "K-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4483633d2ae26987d0efe359aaf1357b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "L-Pixel",&#xD;		"md5": "0625b64705d62748c6105e969859fe0d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "L-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "L-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0625b64705d62748c6105e969859fe0d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 11,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "M-Pixel",&#xD;		"md5": "46ccf731f158b9dda75f4e71a5bcd282.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "M-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "M-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "46ccf731f158b9dda75f4e71a5bcd282.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 16&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "N-Pixel",&#xD;		"md5": "f9d3b49b5962ff4070fae186b8b71e39.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "N-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "N-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f9d3b49b5962ff4070fae186b8b71e39.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "O-Pixel",&#xD;		"md5": "668b21968078f3b7b1a9ccd74407fa1e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "O-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "O-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "668b21968078f3b7b1a9ccd74407fa1e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "P-Pixel",&#xD;		"md5": "02011265d2597175c7496da667265f4a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "P-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "P-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "02011265d2597175c7496da667265f4a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Q-Pixel",&#xD;		"md5": "8c77c87dd0ed2613873cff0795ffc701.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Q-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Q-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8c77c87dd0ed2613873cff0795ffc701.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 21&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "R-Pixel",&#xD;		"md5": "c94daea3bd1e8cec36e1aa4e0b1d3f2b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "R-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "R-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c94daea3bd1e8cec36e1aa4e0b1d3f2b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "S-Pixel",&#xD;		"md5": "2fedb1b52f4a4500938a3a52085344e6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "S-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "S-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2fedb1b52f4a4500938a3a52085344e6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "T-Pixel",&#xD;		"md5": "3f481b967f82014c7cf6dd14d438c32d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "T-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "T-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3f481b967f82014c7cf6dd14d438c32d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "U-Pixel",&#xD;		"md5": "a207644e4adb613f410f80a7e123db60.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "U-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "U-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a207644e4adb613f410f80a7e123db60.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "V-Pixel",&#xD;		"md5": "1bb20febe562fa291bea94be1e2d44ba.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "V-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "V-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1bb20febe562fa291bea94be1e2d44ba.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "W-Pixel",&#xD;		"md5": "34b628e8c84cc551a1fa740b85afb750.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "W-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "W-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "34b628e8c84cc551a1fa740b85afb750.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "X-Pixel",&#xD;		"md5": "4cc2d68ceb08176481e882ed39e4f5d5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "X-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "X-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4cc2d68ceb08176481e882ed39e4f5d5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Y-Pixel",&#xD;		"md5": "e6c377982c023761796eaed1047169e6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Y-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Y-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e6c377982c023761796eaed1047169e6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Z-Pixel",&#xD;		"md5": "ecadc3a562c9aa963717fcdf07ec96b4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Z-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Z-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ecadc3a562c9aa963717fcdf07ec96b4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "0-Pixel",&#xD;		"md5": "cd1f984997b44de464bbf86fc073b280.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "0-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "0-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cd1f984997b44de464bbf86fc073b280.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 13,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "1-Pixel",&#xD;		"md5": "4ec3d6c4ef14112ed7c6ba6b9549da3b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "1-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "1-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4ec3d6c4ef14112ed7c6ba6b9549da3b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 7,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "2-Pixel",&#xD;		"md5": "d0136e77a646a3ad719aaa7f8f95a7ff.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "2-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "2-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d0136e77a646a3ad719aaa7f8f95a7ff.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 17&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "3-Pixel",&#xD;		"md5": "7c1700f0dcfb418662d29ba6faa114e7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "3-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "3-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7c1700f0dcfb418662d29ba6faa114e7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "4-Pixel",&#xD;		"md5": "6238b9b95fad7f7aa9cef9bde5bde474.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "4-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "4-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6238b9b95fad7f7aa9cef9bde5bde474.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "5-Pixel",&#xD;		"md5": "aef915acf1d49deed46692411e6c6039.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "5-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "5-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aef915acf1d49deed46692411e6c6039.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "6-Pixel",&#xD;		"md5": "e6ad1d1fe44a1c63c8f99c0bbb893a44.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "6-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "6-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e6ad1d1fe44a1c63c8f99c0bbb893a44.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 17&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "7-Pixel",&#xD;		"md5": "469b4fb6f6f8721e2c244ae9c71a7e66.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "7-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "7-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "469b4fb6f6f8721e2c244ae9c71a7e66.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "8-Pixel",&#xD;		"md5": "5bfcf2c715b81ae380ae2983bb4c5bb2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "8-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "8-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5bfcf2c715b81ae380ae2983bb4c5bb2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "9-Pixel",&#xD;		"md5": "8014a66c758f1bc389194c988badb382.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "9-Pixel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "9-pixel",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8014a66c758f1bc389194c988badb382.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 20&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "A-Story",&#xD;		"md5": "a541431ea1b67b2100b2ef59927df0d7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "A-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "A-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a541431ea1b67b2100b2ef59927df0d7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "A-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f277943adf8d79b41b9b568321a786ee.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "A-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cc0cc7ae3240eab7d040e148cc663325.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "B-Story",&#xD;		"md5": "3f3b274d161bae432bd5966a33114fd0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "B-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "B-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3f3b274d161bae432bd5966a33114fd0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "B-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "07fa4ebc421d84743b6ced189dd2f9cf.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "B-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6c9a9203155f93f24f31b30e3bd76b6d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "C-Story",&#xD;		"md5": "786383a7baf7ff58bdcbd55d8a7395a1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "C-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "C-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "786383a7baf7ff58bdcbd55d8a7395a1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "C-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1045c56c4be3d8d0650579864417fbc7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "C-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c8fd35294d17a369fecb6d6e4725d04a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "D-Story",&#xD;		"md5": "ec60df3b4dfde735f72d3a641b737800.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "D-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "D-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ec60df3b4dfde735f72d3a641b737800.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "D-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3e4cc4cff08bb42bc690eff66dffbbe9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "D-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bd7f984fe82d9d0fdcff0a87b3c0f9e0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "E-Story",&#xD;		"md5": "c227b91edab98c183bb0700acf00764f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "E-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "E-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c227b91edab98c183bb0700acf00764f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "E-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8bba14966fe35f0dccb66ef06a9843ca.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "E-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e8cfc63375f6d6c2a580823489427f38.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "F-Story",&#xD;		"md5": "0ffc2ff1c96a596a72552c85c9a5be1a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "F-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "F-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0ffc2ff1c96a596a72552c85c9a5be1a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "F-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0dbe4a064abea1a9a3bc0d2732643e6b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "F-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3db373f4482e391e66d1b06335a96144.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 16,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "G-Story",&#xD;		"md5": "d39a8a56ea511a40d3b98300dbd19f9b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "G-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "G-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d39a8a56ea511a40d3b98300dbd19f9b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "G-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "991023d303f79ce092f070392ffbd69f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "G-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "38f22c0d8dbe541bde409ba1f241d4c1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "H-Story",&#xD;		"md5": "28461ea7b94a55ce4ecf54241a0b7523.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "H-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "H-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "28461ea7b94a55ce4ecf54241a0b7523.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "H-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ca33be5270308a695c9b88af73f590dc.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "H-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "668ba2b891f82ce78d8590f0287632b1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "I-Story",&#xD;		"md5": "cdf36c8bd803819996a392089b040c3d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "I-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "I-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cdf36c8bd803819996a392089b040c3d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 9,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "I-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7b3ae96764795727fa1cb0be68a9ca5e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 9,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "I-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3475aa570304accb7e6dbd2516234135.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 7,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "J-Story",&#xD;		"md5": "6a10a69d1ce075a24abc8073bb402ab6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "J-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "J-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6a10a69d1ce075a24abc8073bb402ab6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "J-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0ab9a94fc2e32160efc113a8e5ffb984.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "J-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c9356a022cfbc25be6c484e9781e4637.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "K-Story",&#xD;		"md5": "76812d04542ffbd8aa77d593f1bced44.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "K-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "K-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "76812d04542ffbd8aa77d593f1bced44.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "K-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ef02339e8a0382367f0b5a414915b885.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "K-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "07977708617d12381b22d1ee0f4926a3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "L-Story",&#xD;		"md5": "444e9ceca500ef96a92879678109ef38.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "L-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "L-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "444e9ceca500ef96a92879678109ef38.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "L-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "067c21a9b2f91ed33e07131ce5a59210.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "L-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "488d66f17c0089a7796d44cfc70792e8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 17,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "M-Story",&#xD;		"md5": "9197a1edb925c94fc912367a2943bc69.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "M-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "M-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9197a1edb925c94fc912367a2943bc69.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "M-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "55f00a23d0f5cc57be9533f126a7ac8c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "M-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "613df2bd97784a239ab992f7a95458a0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "N-Story",&#xD;		"md5": "d604d95ad1367813fdc67c362bb9d298.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "N-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "N-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d604d95ad1367813fdc67c362bb9d298.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "N-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5e07ee61cb20bc575720774584dfec53.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "N-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "435697335345f946d943c1d89fdb459a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "O-Story",&#xD;		"md5": "46173e0ec42c17d22b29c88929c49f2c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "O-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "O-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "46173e0ec42c17d22b29c88929c49f2c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "O-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e8fa671bb1ca53c044bfb27225321c25.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "O-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a132bf3d4084ef8ca9e0797f64c0f082.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "P-Story",&#xD;		"md5": "e6e5ccc4bd44680b4c21fabefc009e4f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "P-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "P-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e6e5ccc4bd44680b4c21fabefc009e4f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "P-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "781c42f9da36bbc0ee3775f18ac98124.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "P-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bcaec7c778920d8d74c275c1aff634fe.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 17,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Q-Story",&#xD;		"md5": "24c5beac46f4452bffe23e3c4e8a4a4c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Q-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Q-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "24c5beac46f4452bffe23e3c4e8a4a4c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 30&#xD;				},&#xD;				{&#xD;					"costumeName": "Q-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "31f28be74dc7de42a5c4a38504d666ca.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 30&#xD;				},&#xD;				{&#xD;					"costumeName": "Q-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aef19097378515308e934a79f147032e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 29&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "R-Story",&#xD;		"md5": "ef26045ebaccbf271ca2370ed95c73ab.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "R-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "R-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ef26045ebaccbf271ca2370ed95c73ab.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "R-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "926f8ff770cb15b42b12f209fd02d98c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "R-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a66d8f0ba6d40c624873edc8df58c014.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "S-Story",&#xD;		"md5": "dccb5c52aa6e674d7747e172f9c52cb6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "S-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "S-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dccb5c52aa6e674d7747e172f9c52cb6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 16,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "S-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c529ed7b40f4a949539f8f454e3fe475.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 16,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "S-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e96388c9197733bdadbad3ce014c0e59.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 14,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1.05,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "T-Story",&#xD;		"md5": "0333054ad39b919687a53924b4849be9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "T-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "T-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0333054ad39b919687a53924b4849be9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "T-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "eeb0fd25c9273747ac38766d1959ba2b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "T-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a9683d4946b08a76864a51bd21d811cb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "U-Story",&#xD;		"md5": "57a7bbdd3cd819e62363ef0f151bcea0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "U-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "U-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "57a7bbdd3cd819e62363ef0f151bcea0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "U-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f442802f17225d6506ac9718810f179e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 24,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "U-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0779f03a6589c60352b1d4806a4a61c0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "V-Story",&#xD;		"md5": "3895ca10e7ae39bc513ba285d07cba69.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "V-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "V-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3895ca10e7ae39bc513ba285d07cba69.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "V-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "03de7add77e31799ca568a9c671012b4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "V-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "29befe20b105b69471f5507d025ec3e0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "W-Story",&#xD;		"md5": "e691a91fd45b0c302f3d954515ed164a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "W-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "W-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e691a91fd45b0c302f3d954515ed164a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "W-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c0f48eb69cae4a611d3e7b7e06b0d1c1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "W-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d1c922c9e9d53d2f6f36ca637e85de6b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 34,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "X-Story",&#xD;		"md5": "2370b2a2fd153d18d1ad0ef64565b620.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "X-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "X-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2370b2a2fd153d18d1ad0ef64565b620.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "X-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f688425da41c2b7f80d4b8752de69bc9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "X-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ec90479a0ce3c7706f1916daef0f3c67.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Y-Story",&#xD;		"md5": "850386477f82d80fb0e79e5c675dd906.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Y-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Y-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "850386477f82d80fb0e79e5c675dd906.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "Y-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1cfa161ae5d60ea163e4e0aa34d08f02.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "Y-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a1fc3c0fa304255364c0f98547e0e448.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Z-Story",&#xD;		"md5": "9a0a64558a53fde1af44dad5fb021199.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Z-Story",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Z-story-1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9a0a64558a53fde1af44dad5fb021199.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "Z-story-2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e10b203e47bbb41edab78be59e628449.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 26&#xD;				},&#xD;				{&#xD;					"costumeName": "Z-story-3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0788df7b1d9cf02dfdebc021d4f30ce4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 17,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Abby",&#xD;		"md5": "afab2d2141e9811bd89e385e9628cb5f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Abby",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "abby-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "afab2d2141e9811bd89e385e9628cb5f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "abby-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1e0116c7c2e5e80c679d0b33f1f5cfb7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "abby-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b6e23922f23b49ddc6f62f675e77417c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "abby-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2193cf08f74b8354f7c4fac37a06ea24.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Airplane",&#xD;		"md5": "58bcb130f226bda9017f1a443360a78a.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"flying",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Airplane",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "airplane2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "58bcb130f226bda9017f1a443360a78a.png",&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 32&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Amon",&#xD;		"md5": "8d508770c1991fe05959c9b3b5167036.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"flying",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Amon",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "amon",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8d508770c1991fe05959c9b3b5167036.gif",&#xD;					"rotationCenterX": 87,&#xD;					"rotationCenterY": 81&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Anina Hip-Hop",&#xD;		"md5": "6d01c961449223f9e61dda9281100806.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			13,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Anina Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "anina stance",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6d01c961449223f9e61dda9281100806.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "anina top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "34d6362cb4030d92be6fec73300f0aec.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 280&#xD;				},&#xD;				{&#xD;					"costumeName": "anina top R step",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0477f7105d02b9a902382eca080476dc.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 248,&#xD;					"rotationCenterY": 272&#xD;				},&#xD;				{&#xD;					"costumeName": "anina top L step",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "62a89d8c6f7680e342132fcde59b2a5d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 228,&#xD;					"rotationCenterY": 274&#xD;				},&#xD;				{&#xD;					"costumeName": "anina top freeze",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dd67565519bdebea1b931deb19621384.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 110,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "anina R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "22f3ca23b2f0ac67f8ebc36a8c3116a0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 126,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop front",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c163f1002f61421816386e52522b9133.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 270&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop down",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e9e54ff1fa61c71507e25540d0326177.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 156&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop left",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9fda30f66d51b2ad5f6fe11d57e199d6.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 238,&#xD;					"rotationCenterY": 266&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cc2594e9278494e82f725be34369f178.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "843bff4a5ee3d61fd8cbd419cb2797a3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 274&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "de7cab2c8d567d49a5a1f378b5709bb4.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 276&#xD;				},&#xD;				{&#xD;					"costumeName": "anina pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e7e1a86233b7ad28d6ee9970b152be20.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 88,&#xD;					"rotationCenterY": 272&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Anna",&#xD;		"md5": "23ab3e9be3be672fa2c43571e92b2b3e.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Anna",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "anna-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "23ab3e9be3be672fa2c43571e92b2b3e.png",&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 87&#xD;				},&#xD;				{&#xD;					"costumeName": "anna-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "25b8d4f7eae0add3bc24c20f5f17ada9.png",&#xD;					"rotationCenterX": 57,&#xD;					"rotationCenterY": 110&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Anna Ode to Code",&#xD;		"md5": "74b5e9c882deb81d88c175d548b8ff66.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			1,&#xD;			14,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Anna Ode to Code",&#xD;			"scripts": [&#xD;				[&#xD;					8,&#xD;					77.65,&#xD;					[&#xD;						[&#xD;							"whenKeyPressed",&#xD;							"space"&#xD;						],&#xD;						[&#xD;							"nextCostume"&#xD;						]&#xD;					]&#xD;				]&#xD;			],&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "odesong-b",&#xD;					"soundID": -1,&#xD;					"md5": "2c41921491b1da2bfa1ebcaba34265ca.wav",&#xD;					"sampleCount": 212553,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "anna01",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "74b5e9c882deb81d88c175d548b8ff66.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 190&#xD;				},&#xD;				{&#xD;					"costumeName": "anna02",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ece557e1c4500b30fd0e22b0d693cf4c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 132,&#xD;					"rotationCenterY": 260&#xD;				},&#xD;				{&#xD;					"costumeName": "anna03",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2e97d9d9d6bc1f174d3fc897638e8a46.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 138,&#xD;					"rotationCenterY": 242&#xD;				},&#xD;				{&#xD;					"costumeName": "anna04",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "69da72a9a29181425944e7963eb4f32a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 138,&#xD;					"rotationCenterY": 70&#xD;				},&#xD;				{&#xD;					"costumeName": "anna05",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1b396abf1336bceddb01166d975dad3b.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 134,&#xD;					"rotationCenterY": 246&#xD;				},&#xD;				{&#xD;					"costumeName": "anna06",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d32ac2b2e9c8fa2f7b251275d8eec8c9.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 118,&#xD;					"rotationCenterY": 224&#xD;				},&#xD;				{&#xD;					"costumeName": "anna07",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c0961caabfa8545b6080ea7825d6fc66.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 124,&#xD;					"rotationCenterY": 224&#xD;				},&#xD;				{&#xD;					"costumeName": "anna07b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c21f0ef20be25af3b7c1ed42e974c75f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 202,&#xD;					"rotationCenterY": 224&#xD;				},&#xD;				{&#xD;					"costumeName": "anna07c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "54ed739e6ea31d128c319e8a3401af71.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 218&#xD;				},&#xD;				{&#xD;					"costumeName": "anna08",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2d9bffdb6cda1ce0c77cfb3e001598f3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 126,&#xD;					"rotationCenterY": 212&#xD;				},&#xD;				{&#xD;					"costumeName": "anna09",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "91f689627fa18d43ff6362ef872d90e2.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 130,&#xD;					"rotationCenterY": 220&#xD;				},&#xD;				{&#xD;					"costumeName": "anna10",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "eab5b5e2c4be253de024dd3deab68a66.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 148,&#xD;					"rotationCenterY": 260&#xD;				},&#xD;				{&#xD;					"costumeName": "anna11",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "859f95864d28fdb49d4170ce30fdd031.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 46,&#xD;					"rotationCenterY": 278&#xD;				},&#xD;				{&#xD;					"costumeName": "anna12",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "66133f695a23f669cc0fa6f06f275ab7.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 42,&#xD;					"rotationCenterY": 206&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 13,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Apple",&#xD;		"md5": "831ccd4741a7a56d85f6698a21f4ca69.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Apple",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "apple",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "831ccd4741a7a56d85f6698a21f4ca69.svg",&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Arrow1",&#xD;		"md5": "62f8794dd120e9b4ead4d098d50fc64b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Arrow1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "arrow1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "62f8794dd120e9b4ead4d098d50fc64b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 23&#xD;				},&#xD;				{&#xD;					"costumeName": "arrow1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a157dc7e33d7c7a048af933de999e397.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 23&#xD;				},&#xD;				{&#xD;					"costumeName": "arrow1-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d3b389e91f7beb22b2b1a80af09990ee.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 28&#xD;				},&#xD;				{&#xD;					"costumeName": "arrow1-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "412717ff731e9f19003a5840054057eb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 28&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Avery",&#xD;		"md5": "21393c9114c7d34b1df7ccd12c793672.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Avery",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "avery-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "21393c9114c7d34b1df7ccd12c793672.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 94&#xD;				},&#xD;				{&#xD;					"costumeName": "avery-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cc55f2f09599edc4ae0876e8b3d187d0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 94&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Avery Walking",&#xD;		"md5": "ed334e546806dfbf26d2591d7ddb12d0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Avery Walking",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "avery walking-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ed334e546806dfbf26d2591d7ddb12d0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 95&#xD;				},&#xD;				{&#xD;					"costumeName": "avery walking-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c295731e8666ad2e1575fb4b4f82988d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 102&#xD;				},&#xD;				{&#xD;					"costumeName": "avery walking-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "597a834225c9949e419dff7db1bc2453.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 95&#xD;				},&#xD;				{&#xD;					"costumeName": "avery walking-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ce9622d11d24607eec7988196b38c3c6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 101&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "leftRight",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "AZ Hip-Hop",&#xD;		"md5": "e64363afc7f1e6951cb7967f50de2ba7.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			13,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "AZ Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "AZ stance",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e64363afc7f1e6951cb7967f50de2ba7.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 278&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "75b370524c92025cfa6f9071a6333e00.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 274&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ top R step",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3769dbe6e19b0e19ebf9416ba8660b88.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 200,&#xD;					"rotationCenterY": 270&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ top L step",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3d618085bce1a68829fa2cd5deab7871.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 144,&#xD;					"rotationCenterY": 266&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ top freeze",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ea33d5c631d8308b47685f1963becd4c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 258&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ top R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "44216804569454067953fdd5c6b72928.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 206,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop front",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "97c14e52551ae65679d61de6c94f0ec8.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 266&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop down",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2f8d07b568c8c67a0d211b5de09295d3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 188&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop left",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4e7e43a86f1f09f1194e3579e7f385f5.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 184,&#xD;					"rotationCenterY": 266&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "15a9d503613c649ca3a55829dbd98869.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 276&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0f6462025c20ac346a7f54164832d495.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 280&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "34b67b9e4db3aacbae735ade6a0539c2.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 92,&#xD;					"rotationCenterY": 280&#xD;				},&#xD;				{&#xD;					"costumeName": "AZ pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "129472ac2779eb6bc2dd9bfbf0d33f56.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 278&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ball",&#xD;		"md5": "10117ddaefa98d819f2b1df93805622f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			5,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ball",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ball-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "10117ddaefa98d819f2b1df93805622f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 22&#xD;				},&#xD;				{&#xD;					"costumeName": "ball-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e6330cad7750ea7e9dc88402661deb8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 22&#xD;				},&#xD;				{&#xD;					"costumeName": "ball-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bb45ed5db278f15c17c012c34a6b160f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 22&#xD;				},&#xD;				{&#xD;					"costumeName": "ball-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5d494659deae5c0de06b5885f5524276.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 22&#xD;				},&#xD;				{&#xD;					"costumeName": "ball-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e80c98bc62fd32e8df81642af11ffb1a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 22&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ball-Soccer",&#xD;		"md5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"sports",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ball-Soccer",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ball-soccer",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 34&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ballerina",&#xD;		"md5": "6051bb7008cf17c8853a6f81f04c8a0f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ballerina",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ballerina-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6051bb7008cf17c8853a6f81f04c8a0f.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "ballerina-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8bc5e47fb1439e29e11e9e3f2e20c6de.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "ballerina-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6d3a07761b294f705987b0af58f8e335.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "ballerina-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c3164795edf39e436272f425b4f5e487.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 3,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Balloon1",&#xD;		"md5": "bc96a1fb5fe794377acd44807e421ce2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Balloon1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "balloon1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bc96a1fb5fe794377acd44807e421ce2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 94&#xD;				},&#xD;				{&#xD;					"costumeName": "balloon1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d7bb51d9c38af6314bd2b4058d2a592d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 94&#xD;				},&#xD;				{&#xD;					"costumeName": "balloon1-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "247cef27b665d77d9efaca69327cae77.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": 94&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 2,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bananas",&#xD;		"md5": "40bb8a1afe88cec78254f6fcfee98242.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bananas",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bananas",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "40bb8a1afe88cec78254f6fcfee98242.svg",&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Baseball",&#xD;		"md5": "6e13ef53885d2cfca9a54cc5c3f6c20f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Baseball",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "baseball",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e13ef53885d2cfca9a54cc5c3f6c20f.svg",&#xD;					"rotationCenterX": 34,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Basketball",&#xD;		"md5": "ac3432618ac868309f502024aa78423c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Basketball",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "basketball",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ac3432618ac868309f502024aa78423c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bass",&#xD;		"md5": "bdbd2876847e54309a5ff3ee0895d724.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bass",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C bass",&#xD;					"soundID": -1,&#xD;					"md5": "c3566ec797b483acde28f790994cc409.wav",&#xD;					"sampleCount": 44608,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D bass",&#xD;					"soundID": -1,&#xD;					"md5": "5a3ae8a2665f50fdc38cc301fbac79ba.wav",&#xD;					"sampleCount": 40192,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E bass",&#xD;					"soundID": -1,&#xD;					"md5": "0657e39bae81a232b01a18f727d3b891.wav",&#xD;					"sampleCount": 36160,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F bass",&#xD;					"soundID": -1,&#xD;					"md5": "ea21bdae86f70d60b28f1dddcf50d104.wav",&#xD;					"sampleCount": 34368,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G bass",&#xD;					"soundID": -1,&#xD;					"md5": "05c192194e8f1944514dce3833e33439.wav",&#xD;					"sampleCount": 30976,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A bass",&#xD;					"soundID": -1,&#xD;					"md5": "c04ebf21e5e19342fa1535e4efcdb43b.wav",&#xD;					"sampleCount": 28160,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B bass",&#xD;					"soundID": -1,&#xD;					"md5": "e31dcaf7bcdf58ac2a26533c48936c45.wav",&#xD;					"sampleCount": 25792,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 bass",&#xD;					"soundID": -1,&#xD;					"md5": "667d6c527b79321d398e85b526f15b99.wav",&#xD;					"sampleCount": 24128,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bass",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bdbd2876847e54309a5ff3ee0895d724.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 60,&#xD;					"rotationCenterY": 110&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bat1",&#xD;		"md5": "7ad915f8e0884f497a24d5bb61ea8a4a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bat1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bat1-a ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7ad915f8e0884f497a24d5bb61ea8a4a.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "bat1-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f127434672b872a902346ef3c1af45f2.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bat2",&#xD;		"md5": "647d4bd53163f94a7dabf623ccab7fd3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bat2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bat2-a ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "647d4bd53163f94a7dabf623ccab7fd3.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "bat2-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8aa1d20e4f7761becbe9bafa75290465.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Beachball",&#xD;		"md5": "87d64cab74c64b31498cc85f07510ee4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Beachball",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "beachball",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "87d64cab74c64b31498cc85f07510ee4.svg",&#xD;					"rotationCenterX": 34,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bear1",&#xD;		"md5": "598722f70e86e6f9b23ef97680baaa9c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bear1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "plunge",&#xD;					"soundID": -1,&#xD;					"md5": "c09455ee9da0e7eeead42d4e73c2555d.wav",&#xD;					"sampleCount": 22400,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bear1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "598722f70e86e6f9b23ef97680baaa9c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 56,&#xD;					"rotationCenterY": 93&#xD;				},&#xD;				{&#xD;					"costumeName": "bear1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "76ceb0de4409f42713b50cbc1fb45af5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 56,&#xD;					"rotationCenterY": 93&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bear2",&#xD;		"md5": "3eb8e16a983ff23c418374389c81bd30.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bear2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bear2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3eb8e16a983ff23c418374389c81bd30.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 42&#xD;				},&#xD;				{&#xD;					"costumeName": "bear2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "12bb6960ac01b65ae9b5e5e7f79700ac.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 51,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Beetle",&#xD;		"md5": "e1ce8f153f011fdd52486c91c6ed594d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Beetle",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "beetle",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e1ce8f153f011fdd52486c91c6ed594d.svg",&#xD;					"rotationCenterX": 43,&#xD;					"rotationCenterY": 38&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bell",&#xD;		"md5": "f35056c772395455d703773657e1da6e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bell",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "xylo1",&#xD;					"soundID": -1,&#xD;					"md5": "6ac484e97c1c1fe1384642e26a125e70.wav",&#xD;					"sampleCount": 238232,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "bell toll",&#xD;					"soundID": -1,&#xD;					"md5": "25d61e79cbeba4041eebeaebd7bf9598.wav",&#xD;					"sampleCount": 45168,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bell1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f35056c772395455d703773657e1da6e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 69&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bells",&#xD;		"md5": "1f151bee966df3f0c41138941713280e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bells",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "xylo1",&#xD;					"soundID": -1,&#xD;					"md5": "5c6964021197fdd4ff46a0f107e6d624.wav",&#xD;					"sampleCount": 238995,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bells-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1f151bee966df3f0c41138941713280e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 53,&#xD;					"rotationCenterY": 51&#xD;				},&#xD;				{&#xD;					"costumeName": "bells-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5b3879a162881aed93169bf0a6680f45.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bowl",&#xD;		"md5": "86f616639846f06fef29931e6b9b59de.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bowl",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": -1,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "water drop",&#xD;					"soundID": -1,&#xD;					"md5": "aa488de9e2c871e9d4faecd246ed737a.wav",&#xD;					"sampleCount": 8136,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bowl-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "86f616639846f06fef29931e6b9b59de.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1.2500000000000002,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bowtie",&#xD;		"md5": "534d9924d2f9bfe240f041e3ce55ccf5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bowtie",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bowtie-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "534d9924d2f9bfe240f041e3ce55ccf5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 11,&#xD;					"rotationCenterY": 4&#xD;				},&#xD;				{&#xD;					"costumeName": "bowtie-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8be1e90e19cd1faced8a2e83c2b5c90d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 11,&#xD;					"rotationCenterY": 4&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1.6,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Breakdancer1",&#xD;		"md5": "cafd225b63d3aeeedc8df926fe5b6ab4.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Breakdancer1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "breakdancer1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cafd225b63d3aeeedc8df926fe5b6ab4.png",&#xD;					"rotationCenterX": 113,&#xD;					"rotationCenterY": 90&#xD;				},&#xD;				{&#xD;					"costumeName": "breakdancer1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "84bcb1be206e8653a7d97549733c3db5.png",&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 90&#xD;				},&#xD;				{&#xD;					"costumeName": "breakdancer1-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b345babf9f78b5e88a288a4b13a7ca29.png",&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 90&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 2,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Buildings",&#xD;		"md5": "d713270e235851e5962becd73a951771.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			10,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Buildings",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "building-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d713270e235851e5962becd73a951771.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 30&#xD;				},&#xD;				{&#xD;					"costumeName": "building-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8c2d59c50a97d33b096f629258f02be6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 46,&#xD;					"rotationCenterY": -11&#xD;				},&#xD;				{&#xD;					"costumeName": "building-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7f3f51f495c39809bed95991dfa1f80d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 17&#xD;				},&#xD;				{&#xD;					"costumeName": "building-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "61ba83d6bded299dd91168eb24cd379f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": -10&#xD;				},&#xD;				{&#xD;					"costumeName": "building-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1beeb8f034a1128c9a799297b0b7fc26.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 55&#xD;				},&#xD;				{&#xD;					"costumeName": "building-f",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "451e0a565e95d945fe2addfe609ee9df.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "building-g",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "58b3c9b7a41dde698fa2b427b502c1fa.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": -65&#xD;				},&#xD;				{&#xD;					"costumeName": "building-h",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e952c8b14eeac894302d07d37a45ed99.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 136&#xD;				},&#xD;				{&#xD;					"costumeName": "building-i",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b00b1123e3bfcb600242528d059ffcfb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 31,&#xD;					"rotationCenterY": -12&#xD;				},&#xD;				{&#xD;					"costumeName": "building-j",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e08fd1a7397efcfe0e3691f945693cb4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Bus",&#xD;		"md5": "66895930177178ea01d9e610917f8acf.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Bus",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "bus",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "66895930177178ea01d9e610917f8acf.png",&#xD;					"rotationCenterX": 120,&#xD;					"rotationCenterY": 35&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Butterfly1",&#xD;		"md5": "836d4cc7889f4a1cbcb0303934f31f79.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Butterfly1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "butterfly1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "836d4cc7889f4a1cbcb0303934f31f79.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "butterfly1-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "55dd0671a359d7c35f7b78f4176660e8.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Butterfly2",&#xD;		"md5": "a0216895beade6afc6d42bd5bb43faea.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Butterfly2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "butterfly2 ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a0216895beade6afc6d42bd5bb43faea.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Butterfly3",&#xD;		"md5": "8907a43cf08b0a9134969023be2074c5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Butterfly3",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "butterfly3 ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8907a43cf08b0a9134969023be2074c5.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Button1",&#xD;		"md5": "7ef67c5bc8cf7df64fdb3b1d6b250f71.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Button1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "button1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7ef67c5bc8cf7df64fdb3b1d6b250f71.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Button2",&#xD;		"md5": "c0051ff23e9aae78295964206793c1e3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Button2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "button2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c0051ff23e9aae78295964206793c1e3.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				},&#xD;				{&#xD;					"costumeName": "button2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "712a561dc0ad66e348b8247e566b50ef.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Button3",&#xD;		"md5": "ffb2a9c21084c58fdb677c8d12a97519.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Button3",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "button3-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ffb2a9c21084c58fdb677c8d12a97519.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				},&#xD;				{&#xD;					"costumeName": "button3-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7a9ccb55e4da36f48811ab125d2492e0.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Button4",&#xD;		"md5": "8782b457cdf4a10ca016ff1ec0c744ef.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Button4",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "button4-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8782b457cdf4a10ca016ff1ec0c744ef.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 34&#xD;				},&#xD;				{&#xD;					"costumeName": "button4-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "840f4ef01849e459fd84f5470a3b0080.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 34&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Button5",&#xD;		"md5": "71e97245b7be4fd6fe3ba8cdeecadaf1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Button5",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "button5-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "71e97245b7be4fd6fe3ba8cdeecadaf1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				},&#xD;				{&#xD;					"costumeName": "button5-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "54cd55512f7571060e6e64168e541222.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cake",&#xD;		"md5": "97ab3596dc06510e963fa29795e663bf.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cake",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cake-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "97ab3596dc06510e963fa29795e663bf.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": 50&#xD;				},&#xD;				{&#xD;					"costumeName": "cake-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "61d5481955a2f42cb843d09506f6744e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Calvrett",&#xD;		"md5": "82b2f97fec9083cad502a781fe88929b.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Calvrett",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "calvrett jumping",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "82b2f97fec9083cad502a781fe88929b.png",&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 108&#xD;				},&#xD;				{&#xD;					"costumeName": "calvrett thinking",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b8d2409e58b663020353c08fb029b7e6.png",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 85&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Candle",&#xD;		"md5": "9bb90825b1d7c360aa47ee18883cd3cd.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Candle",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "candle1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9bb90825b1d7c360aa47ee18883cd3cd.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 32&#xD;				},&#xD;				{&#xD;					"costumeName": "candle1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4f2ab7fc559ecbbc61721f76639a4e44.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 12,&#xD;					"rotationCenterY": 32&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.75,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Candles1",&#xD;		"md5": "b8432a2c0d04408b3ba58ec3b01582f0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Candles1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "strum",&#xD;					"soundID": -1,&#xD;					"md5": "b92de59d992a655c1b542223a784cda6.wav",&#xD;					"sampleCount": 11247,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "candles1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b8432a2c0d04408b3ba58ec3b01582f0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Candles2",&#xD;		"md5": "76a9de5efb140fe287dc0f197a0e8d4c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Candles2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "strum",&#xD;					"soundID": -1,&#xD;					"md5": "b92de59d992a655c1b542223a784cda6.wav",&#xD;					"sampleCount": 11247,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "candles2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "76a9de5efb140fe287dc0f197a0e8d4c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 79&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Car-Bug",&#xD;		"md5": "c0b7d099a815f58ff6d92538856f08c1.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Car-Bug",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "car-bug",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c0b7d099a815f58ff6d92538856f08c1.png",&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cassy",&#xD;		"md5": "db4e1ee1f9102e3da5e06f2d17881df5.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cassy",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cassy-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "db4e1ee1f9102e3da5e06f2d17881df5.png",&#xD;					"rotationCenterX": 43,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2f6f57d1ab69fc18a38fd30572530437.png",&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "662752d56bb77544f3e79ee8c16b3f2d.png",&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 58&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "24e9dac390ae4e5b0c17e7d922eb033b.png",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cassy Dance",&#xD;		"md5": "6cb3686db1fa658b6541cc9fa3ccfcc7.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cassy Dance",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cassy dance-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6cb3686db1fa658b6541cc9fa3ccfcc7.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 104,&#xD;					"rotationCenterY": 192&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy dance-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "086dc4312d3bf4595d6b3fd4b1021b35.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 140,&#xD;					"rotationCenterY": 192&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy dance-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dffbfb382641655dbd698559ed49fd99.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 188&#xD;				},&#xD;				{&#xD;					"costumeName": "cassy dance-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d0e98431c4744f684a13e8331d838203.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 94,&#xD;					"rotationCenterY": 180&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cat1",&#xD;		"md5": "f88bf1935daea28f8ca098462a31dbb0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cat1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cat1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f88bf1935daea28f8ca098462a31dbb0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 50&#xD;				},&#xD;				{&#xD;					"costumeName": "cat1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e8bd9ae68fdb02b7e1e3df656a75635.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cat1 Flying",&#xD;		"md5": "1e81725d2d2c7de4a2dd4a145198a43c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cat1 Flying",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cat1 flying-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1e81725d2d2c7de4a2dd4a145198a43c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 67,&#xD;					"rotationCenterY": 48&#xD;				},&#xD;				{&#xD;					"costumeName": "cat1 flying-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0d192725870ef0eda50d91cab0e3c9c5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 42,&#xD;					"rotationCenterY": 44&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cat2",&#xD;		"md5": "01ae57fd339529445cb890978ef8a054.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cat2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow2",&#xD;					"soundID": -1,&#xD;					"md5": "cf51a0c4088942d95bcc20af13202710.wav",&#xD;					"sampleCount": 6512,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cat2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "01ae57fd339529445cb890978ef8a054.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 87,&#xD;					"rotationCenterY": 39&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Catherine Dance",&#xD;		"md5": "7f7684029e9726376aaaae1158439f3e.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Catherine Dance",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "catherine-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7f7684029e9726376aaaae1158439f3e.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 123&#xD;				},&#xD;				{&#xD;					"costumeName": "catherine-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "79052da8d59a6a16a0f6d09cd94237ae.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 179,&#xD;					"rotationCenterY": 133&#xD;				},&#xD;				{&#xD;					"costumeName": "catherine-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e34f695da1e18d53e6c050d95ba0e4a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 103,&#xD;					"rotationCenterY": 28&#xD;				},&#xD;				{&#xD;					"costumeName": "catherine-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "feff7824a6fd6747391012dcfe9ac4f0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 121,&#xD;					"rotationCenterY": 113&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Champ99",&#xD;		"md5": "b940c99d8e677ac5773cb4d592b16734.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			7,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Champ99",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "champ99-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b940c99d8e677ac5773cb4d592b16734.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 248,&#xD;					"rotationCenterY": 306&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2ebc7632bc9e665d9eeea93190fad7ad.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 164,&#xD;					"rotationCenterY": 290&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bfcff80b0044c644c555ba24f2484106.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 152,&#xD;					"rotationCenterY": 270&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "34de53e52a768d60a96e3ae0c030dfc5.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 188,&#xD;					"rotationCenterY": 260&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0cb685bf8584df9caf124da929ab3453.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 190,&#xD;					"rotationCenterY": 248&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-f",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "516d30b29aed8145718db421f4737953.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 114,&#xD;					"rotationCenterY": 250&#xD;				},&#xD;				{&#xD;					"costumeName": "champ99-g",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "49e0edcb319527d936981f06b4111d53.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 132,&#xD;					"rotationCenterY": 258&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cheesy-Puffs",&#xD;		"md5": "4c99a77ba72abaf6c961e8684f8a8a9f.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cheesy-Puffs",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cheesy-puffs",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4c99a77ba72abaf6c961e8684f8a8a9f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 87,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cloud",&#xD;		"md5": "47005a1f20309f577a03a67abbb6b94e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cloud",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "ripples",&#xD;					"soundID": -1,&#xD;					"md5": "4da8a805673c288965e1e5535c3f7f2b.wav",&#xD;					"sampleCount": 10144,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cloud",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "47005a1f20309f577a03a67abbb6b94e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 71,&#xD;					"rotationCenterY": 45&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Clouds",&#xD;		"md5": "c7d7de8e29179407f03b054fa640f4d0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"flying",&#xD;			"city",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Clouds",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cloud-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c7d7de8e29179407f03b054fa640f4d0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 19&#xD;				},&#xD;				{&#xD;					"costumeName": "cloud-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d8595350ebb460494c9189dabb968336.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 101,&#xD;					"rotationCenterY": 20&#xD;				},&#xD;				{&#xD;					"costumeName": "cloud-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "395fc991e64ac0a4aa46758ab4bc65cb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 97,&#xD;					"rotationCenterY": 9&#xD;				},&#xD;				{&#xD;					"costumeName": "cloud-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1767e704acb11ffa409f77cc79ba7e86.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 87,&#xD;					"rotationCenterY": 21&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "CM Hip-Hop",&#xD;		"md5": "db291ec7e061ecd4d797875e3aec0a09.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			8,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "CM Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance snare beat",&#xD;					"soundID": -1,&#xD;					"md5": "562587bdb75e3a8124cdaa46ba0f648b.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cm top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "db291ec7e061ecd4d797875e3aec0a09.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 226&#xD;				},&#xD;				{&#xD;					"costumeName": "cm top R leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b5cfa26a969dc001fb38d29c5ef8f1bf.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 90,&#xD;					"rotationCenterY": 240&#xD;				},&#xD;				{&#xD;					"costumeName": "cm top L leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9b3224263e7c828c54326d9b4f22a74b.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 116,&#xD;					"rotationCenterY": 238&#xD;				},&#xD;				{&#xD;					"costumeName": "cm top ready",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ab97d9c6e3c0efe27bfd9e44ac3af497.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 180&#xD;				},&#xD;				{&#xD;					"costumeName": "cm top L cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3b0538ba8b6fcc0f938013b912e34305.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 122,&#xD;					"rotationCenterY": 162&#xD;				},&#xD;				{&#xD;					"costumeName": "cm top R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "00716f8ab864ae479db3017146d28c64.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 156,&#xD;					"rotationCenterY": 164&#xD;				},&#xD;				{&#xD;					"costumeName": "cm pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ce0928c8dbc625661b44c3503debae7e.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 136,&#xD;					"rotationCenterY": 243&#xD;				},&#xD;				{&#xD;					"costumeName": "cm pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e5555af183c643c7006632b26d851a32.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 79,&#xD;					"rotationCenterY": 229&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Convertible1",&#xD;		"md5": "099953d710d842e592084765c17bda82.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Convertible1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "convertible1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "099953d710d842e592084765c17bda82.png",&#xD;					"rotationCenterX": 110,&#xD;					"rotationCenterY": 27&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Convertible2",&#xD;		"md5": "2091f1f3fc578189bced6b257f353995.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Convertible2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "convertible2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2091f1f3fc578189bced6b257f353995.png",&#xD;					"rotationCenterX": 90,&#xD;					"rotationCenterY": 22&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Convertible3",&#xD;		"md5": "b6ac3c9e1789cba2302d2ef82d62d019.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Convertible3",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "convertible3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b6ac3c9e1789cba2302d2ef82d62d019.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cowbell",&#xD;		"md5": "3b00920b17d43986685f3855bcb6afe7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cowbell",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "small cowbell",&#xD;					"soundID": -1,&#xD;					"md5": "e29154f53f56f96f8a3292bdcddcec54.wav",&#xD;					"sampleCount": 9718,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "large cowbell",&#xD;					"soundID": -1,&#xD;					"md5": "006316650ffc673dc02d36aa55881327.wav",&#xD;					"sampleCount": 20856,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cowbell",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3b00920b17d43986685f3855bcb6afe7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 30&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Crab",&#xD;		"md5": "114249a5660f7948663d95de575cfd8d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Crab",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "crab-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "114249a5660f7948663d95de575cfd8d.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "crab-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9bf050664e68c10d2616e85f2873be09.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Creature1",&#xD;		"md5": "a560c6eab2e1de2462bdaeb1d698736c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Creature1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "creature1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a560c6eab2e1de2462bdaeb1d698736c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 80&#xD;				},&#xD;				{&#xD;					"costumeName": "creature1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8042b71fc2ae322151c0a3a163701333.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 60,&#xD;					"rotationCenterY": 78&#xD;				},&#xD;				{&#xD;					"costumeName": "creature1-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e12a83c8f1c0545b59fe8673e9fac79c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 63,&#xD;					"rotationCenterY": 164&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Cymbal",&#xD;		"md5": "532860ee3ecfd05d5f473dbe3ea69c8e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			5&#xD;		],&#xD;		"json": {&#xD;			"objName": "Cymbal",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "crash cymbal",&#xD;					"soundID": -1,&#xD;					"md5": "f2c47a46f614f467a7ac802ed9ec3d8e.wav",&#xD;					"sampleCount": 25220,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hihat cymbal",&#xD;					"soundID": -1,&#xD;					"md5": "2d01f60d0f20ab39facbf707899c6b2a.wav",&#xD;					"sampleCount": 2752,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "splash cymbal",&#xD;					"soundID": -1,&#xD;					"md5": "9d63ed5be96c43b06492e8b4a9cea8d8.wav",&#xD;					"sampleCount": 9600,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "roll cymbal",&#xD;					"soundID": -1,&#xD;					"md5": "da8355d753cd2a5ddd19cb2bb41c1547.wav",&#xD;					"sampleCount": 26432,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "bell cymbal",&#xD;					"soundID": -1,&#xD;					"md5": "efddec047de95492f775a1b5b2e8d19e.wav",&#xD;					"sampleCount": 19328,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "cymbal-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "532860ee3ecfd05d5f473dbe3ea69c8e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 34,&#xD;					"rotationCenterY": 60&#xD;				},&#xD;				{&#xD;					"costumeName": "cymbal-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ae5b19022fa882ff95790b25279b9a3f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 73&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "D-Money Hip-Hop",&#xD;		"md5": "b30a60d31aebead577b73affd22bf30f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			13,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "D-Money Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dm stance",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b30a60d31aebead577b73affd22bf30f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 55,&#xD;					"rotationCenterY": 119&#xD;				},&#xD;				{&#xD;					"costumeName": "dm top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cbf035d39d0a0bb070d2eb998cebd60d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 244&#xD;				},&#xD;				{&#xD;					"costumeName": "dm top R leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fcb8c2b6cf9b7e6ce9df521b2486deb3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 218,&#xD;					"rotationCenterY": 232&#xD;				},&#xD;				{&#xD;					"costumeName": "dm top L leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fd8bb9665fe078d2d95dbc35bccf4046.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 230,&#xD;					"rotationCenterY": 240&#xD;				},&#xD;				{&#xD;					"costumeName": "dm freeze",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "31e687f186b19ea120cd5cfc9dea2a3f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 220,&#xD;					"rotationCenterY": 234&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop front",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0b2fb609d6d10decfdd5a1c3b58369b4.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 92,&#xD;					"rotationCenterY": 234&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop down",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3b65ce3551f9c111794f7f1fb8f325be.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": 74&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop left",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f636510e8ef231d7c0e72a572ce91c99.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 204,&#xD;					"rotationCenterY": 250&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "36b32430e45e071071052ef33c637f48.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 238&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "426e1520efc34fef45be0596fd5f7120.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 90,&#xD;					"rotationCenterY": 238&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "370cc57b40f1f1d6e52d6330b73d207f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 244&#xD;				},&#xD;				{&#xD;					"costumeName": "dm pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "56fe91d2cf3ecb9d1b94006aee9eff79.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 80,&#xD;					"rotationCenterY": 240&#xD;				},&#xD;				{&#xD;					"costumeName": "dm top R leg2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fcb8c2b6cf9b7e6ce9df521b2486deb3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 218,&#xD;					"rotationCenterY": 232&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dan",&#xD;		"md5": "1baa5b126e0e14d6070a997c0deefab5.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dan",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dan-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1baa5b126e0e14d6070a997c0deefab5.png",&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "dan-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "74be10ac815fd090cb42b92801002bb1.png",&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dani",&#xD;		"md5": "f3038fb0f4a00806b02081c6789dd8cf.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"people",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dani",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dani-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f3038fb0f4a00806b02081c6789dd8cf.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 115&#xD;				},&#xD;				{&#xD;					"costumeName": "dani-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e5c7dd4905a78e1d54087b7165dd1e8c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 115&#xD;				},&#xD;				{&#xD;					"costumeName": "dani-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cbc5f9c67022af201d498bc9b35608b8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 113&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dee",&#xD;		"md5": "aa239b7ccdce6bddf06900c709525764.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			5,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dee",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dee-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aa239b7ccdce6bddf06900c709525764.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 99&#xD;				},&#xD;				{&#xD;					"costumeName": "dee-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "62b4ac1b735599e21af77c390b178095.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 99&#xD;				},&#xD;				{&#xD;					"costumeName": "dee-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6aa6196ce3245e93b8d1299f33adffcd.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 102&#xD;				},&#xD;				{&#xD;					"costumeName": "dee-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2159a6be8f7ff450d0b5e938ca34a3f4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 99&#xD;				},&#xD;				{&#xD;					"costumeName": "dee-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e358d2a7e3a0a680928657161ce81a0a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 99&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Devin",&#xD;		"md5": "b1897e56265470b55fa65fabe2423c55.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Devin",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "devin-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b1897e56265470b55fa65fabe2423c55.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 95&#xD;				},&#xD;				{&#xD;					"costumeName": "devin-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "873fbd641768c8f753a6568da97633e7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 96&#xD;				},&#xD;				{&#xD;					"costumeName": "devin-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "eac3c03d86cebb42c8f30e373cb7f623.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 95&#xD;				},&#xD;				{&#xD;					"costumeName": "devin-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fa6a75afb0e4b822b91d8bb20d40c68f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 95&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dinosaur1",&#xD;		"md5": "286094ffce382c8383519ab896711989.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			7,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dinoaur1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dinosaur1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "286094ffce382c8383519ab896711989.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 84&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d9eca17b8569f2cde20ef7d3ed0fe19f.svg",&#xD;					"rotationCenterX": 116,&#xD;					"rotationCenterY": 79&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ade3d2ec5029693ecdcca17974bad5fd.svg",&#xD;					"rotationCenterX": 65,&#xD;					"rotationCenterY": 89&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2aa7257a3e0a19ee315b23eaf7f56933.svg",&#xD;					"rotationCenterX": 45,&#xD;					"rotationCenterY": 87&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ed46ee11478715f7596d01fb0f98aa3f.svg",&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 84&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-f",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "39caf2473b1eee55edb688cfa3c240c7.svg",&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 76&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur1-g",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f0f2aa4e8e015de497050d8d44bbfbf1.svg",&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dinosaur2",&#xD;		"md5": "ae724a0a6d6e0a2b33dded4140219fb0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dinosaur2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dinosaur2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ae724a0a6d6e0a2b33dded4140219fb0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "dinosaur2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a01d31caaab3b14b9bb0e2cd5a86c70c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 67,&#xD;					"rotationCenterY": 67&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dinosaur3",&#xD;		"md5": "79bb51bbf809b412147f2a196f8c9292.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dinosaur3",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dinosaur3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "79bb51bbf809b412147f2a196f8c9292.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Diver1",&#xD;		"md5": "853803d5600b66538474909c5438c8ee.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"underwater",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Diver1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "diver1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "853803d5600b66538474909c5438c8ee.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Diver2",&#xD;		"md5": "248d3e69ada69a64b1077149ef6a931a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"underwater",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Diver2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "diver2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "248d3e69ada69a64b1077149ef6a931a.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dog1",&#xD;		"md5": "39ddefa0cc58f3b1b06474d63d81ef56.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dog1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dog1",&#xD;					"soundID": -1,&#xD;					"md5": "b15adefc3c12f758b6dc6a045362532f.wav",&#xD;					"sampleCount": 3672,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dog1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "39ddefa0cc58f3b1b06474d63d81ef56.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 83,&#xD;					"rotationCenterY": 80&#xD;				},&#xD;				{&#xD;					"costumeName": "dog1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "598f4aa3d8f671375d1d2b3acf753416.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 83,&#xD;					"rotationCenterY": 80&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dog2",&#xD;		"md5": "e921f865b19b27cd99e16a341dbf09c2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dog2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dog1",&#xD;					"soundID": -1,&#xD;					"md5": "b15adefc3c12f758b6dc6a045362532f.wav",&#xD;					"sampleCount": 3672,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dog2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e921f865b19b27cd99e16a341dbf09c2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "dog2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "891f2fb7daf79ba8b224a9173eeb0a63.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "dog2-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cd236d5eef4431dea82983ac9eec406b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.75,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dog Puppy",&#xD;		"md5": "fd6c2d1d10a163bc5b7458f7275750f0.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dog Puppy",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dog2",&#xD;					"soundID": -1,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dog puppy right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fd6c2d1d10a163bc5b7458f7275750f0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 107,&#xD;					"rotationCenterY": 103&#xD;				},&#xD;				{&#xD;					"costumeName": "dog puppy sit",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "00b1589467f939b9c61f666bca2d25d1.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 87,&#xD;					"rotationCenterY": 112&#xD;				},&#xD;				{&#xD;					"costumeName": "dog puppy side",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "63c3d6718943ecbf48f94b3b131ae8a4.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 104,&#xD;					"rotationCenterY": 114&#xD;				},&#xD;				{&#xD;					"costumeName": "dog puppy back",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "88559ad0334a8a51aca31035068682f6.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 234,&#xD;					"rotationCenterY": 94&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Donut",&#xD;		"md5": "9e7b4d153421dae04a24571d7e079e85.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Donut",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "donut",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9e7b4d153421dae04a24571d7e079e85.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dove1",&#xD;		"md5": "6dde2b880ad6ddeaea2a53821befb86d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dove1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "bird",&#xD;					"soundID": -1,&#xD;					"md5": "18bd4b634a3f992a16b30344c7d810e0.wav",&#xD;					"sampleCount": 3840,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dove1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6dde2b880ad6ddeaea2a53821befb86d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 86,&#xD;					"rotationCenterY": 59&#xD;				},&#xD;				{&#xD;					"costumeName": "dove1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1c0bc118044d7f6033bc9cd1ef555590.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 88,&#xD;					"rotationCenterY": 57&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dove2",&#xD;		"md5": "42251c2649a073052eb4261d644281bb.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dove2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "bird",&#xD;					"soundID": -1,&#xD;					"md5": "18bd4b634a3f992a16b30344c7d810e0.wav",&#xD;					"sampleCount": 3840,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dove2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "42251c2649a073052eb4261d644281bb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 99,&#xD;					"rotationCenterY": 83&#xD;				},&#xD;				{&#xD;					"costumeName": "dove2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "469eb55a437364d831b80937c4ee1ab9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 82&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Dragon",&#xD;		"md5": "ee0082b436d6d5dc3de33047166e7bf2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"flying",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Dragon",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "dragon1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ee0082b436d6d5dc3de33047166e7bf2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 65,&#xD;					"rotationCenterY": 60&#xD;				},&#xD;				{&#xD;					"costumeName": "dragon1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bb58ce36997fa205a86a085f202837fd.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 56&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum-Bass",&#xD;		"md5": "3308e038214f5a4adc53076a9fee9021.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			3&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum-Bass",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "drum bass1",&#xD;					"soundID": -1,&#xD;					"md5": "48328c874353617451e4c7902cc82817.wav",&#xD;					"sampleCount": 6528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "drum bass2",&#xD;					"soundID": -1,&#xD;					"md5": "711a1270d1cf2e5de9b145ee539213e4.wav",&#xD;					"sampleCount": 3791,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "drum bass3",&#xD;					"soundID": -1,&#xD;					"md5": "c21704337b16359ea631b5f8eb48f765.wav",&#xD;					"sampleCount": 8576,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "drum bass-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3308e038214f5a4adc53076a9fee9021.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 46&#xD;				},&#xD;				{&#xD;					"costumeName": "drum bass-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5febb3df727fb6624946e807a665b866.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 46&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum-Conga",&#xD;		"md5": "b3da94523b6d3df2dd30602399599ab4.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			4&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum-Conga",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "high conga",&#xD;					"soundID": -1,&#xD;					"md5": "16144544de90e98a92a265d4fc3241ea.wav",&#xD;					"sampleCount": 8192,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "low conga",&#xD;					"soundID": -1,&#xD;					"md5": "0b6f94487cd8a1cf0bb77e15966656c3.wav",&#xD;					"sampleCount": 8384,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "muted conga",&#xD;					"soundID": -1,&#xD;					"md5": "1d4abbe3c9bfe198a88badb10762de75.wav",&#xD;					"sampleCount": 4544,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "tap conga",&#xD;					"soundID": -1,&#xD;					"md5": "fd9a67157f57f9cc6fe3cdce38a6d4a8.wav",&#xD;					"sampleCount": 6880,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "drums conga-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b3da94523b6d3df2dd30602399599ab4.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 51,&#xD;					"rotationCenterY": 51&#xD;				},&#xD;				{&#xD;					"costumeName": "drums conga-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d4398062ed6e09927ab52823255186d3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 79&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum-Snare",&#xD;		"md5": "868f700de73a35c4d6fa4c93507c348d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			3&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum-Snare",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "tap snare",&#xD;					"soundID": -1,&#xD;					"md5": "d55b3954d72c6275917f375e49b502f3.wav",&#xD;					"sampleCount": 3296,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "sidestick snare",&#xD;					"soundID": -1,&#xD;					"md5": "f6868ee5cf626fc4ef3ca1119dc95592.wav",&#xD;					"sampleCount": 2336,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "flam snare",&#xD;					"soundID": -1,&#xD;					"md5": "3b6cce9f8c56c0537ca61eee3945cd1d.wav",&#xD;					"sampleCount": 4416,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "drum snare-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "868f700de73a35c4d6fa4c93507c348d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 51,&#xD;					"rotationCenterY": 37&#xD;				},&#xD;				{&#xD;					"costumeName": "drum snare-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "93738cb485ef57cbd4b9bff386d0bba2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 57,&#xD;					"rotationCenterY": 59&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum-Tabla",&#xD;		"md5": "68ce53b53fcc68744584c28d20144c4f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			4&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum-Tabla",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "hi na tabla",&#xD;					"soundID": -1,&#xD;					"md5": "35b42d98c43404a5b1b52fb232a62bd7.wav",&#xD;					"sampleCount": 4096,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hi tun tabla",&#xD;					"soundID": -1,&#xD;					"md5": "da734693dfa6a9a7eccdc7f9a0ca9840.wav",&#xD;					"sampleCount": 18656,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "lo gliss tabla",&#xD;					"soundID": -1,&#xD;					"md5": "d7cd24689737569c93e7ea7344ba6b0e.wav",&#xD;					"sampleCount": 7008,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "lo geh tabla",&#xD;					"soundID": -1,&#xD;					"md5": "9205359ab69d042ed3da8a160a651690.wav",&#xD;					"sampleCount": 30784,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tabla-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "68ce53b53fcc68744584c28d20144c4f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 45&#xD;				},&#xD;				{&#xD;					"costumeName": "tabla-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "01b6ffb8691d32be10fabc77ddfb55b0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 48&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum1",&#xD;		"md5": "daad8bc865f55200844dbce476d2f1e9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "high tom",&#xD;					"soundID": -1,&#xD;					"md5": "d623f99b3c8d33932eb2c6c9cfd817c5.wav",&#xD;					"sampleCount": 12320,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "low tom",&#xD;					"soundID": -1,&#xD;					"md5": "1569bbbd8952b0575e5a5cb5aefb50ba.wav",&#xD;					"sampleCount": 20000,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "drum1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "daad8bc865f55200844dbce476d2f1e9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 44&#xD;				},&#xD;				{&#xD;					"costumeName": "drum1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8a2e9596b02ecdc195d76c1f34a48f76.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 60,&#xD;					"rotationCenterY": 61&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Drum2",&#xD;		"md5": "68baa189ac7afb9426db1818aa88be8e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Drum2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "high tom",&#xD;					"soundID": -1,&#xD;					"md5": "d623f99b3c8d33932eb2c6c9cfd817c5.wav",&#xD;					"sampleCount": 12320,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "low tom",&#xD;					"soundID": -1,&#xD;					"md5": "1569bbbd8952b0575e5a5cb5aefb50ba.wav",&#xD;					"sampleCount": 20000,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "drum2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "68baa189ac7afb9426db1818aa88be8e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 39&#xD;				},&#xD;				{&#xD;					"costumeName": "drum2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4a58fe0f173104aab03aaccdd3ce5280.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 54&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Duck",&#xD;		"md5": "c3baf7eedfbdac8cd1e4f1f1f779dc0c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Duck",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "duck",&#xD;					"soundID": -1,&#xD;					"md5": "af5b039e1b05e0ccb12944f648a8884e.wav",&#xD;					"sampleCount": 5792,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "duck",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c3baf7eedfbdac8cd1e4f1f1f779dc0c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 61,&#xD;					"rotationCenterY": 59&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Earth",&#xD;		"md5": "814197522984a302972998b1a7f92d91.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Earth",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "earth",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "814197522984a302972998b1a7f92d91.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Elephant",&#xD;		"md5": "b3515b3805938b0fae4e527aa0b4524e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"nature",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Elephant",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "elephant-a ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b3515b3805938b0fae4e527aa0b4524e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 107,&#xD;					"rotationCenterY": 33&#xD;				},&#xD;				{&#xD;					"costumeName": "elephant-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bce91fa266220d3679a4c19c4e38b1f7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 95,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fire hydrant",&#xD;		"md5": "5542c53bb0ba87b39eba6ff743b8115c.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fire hydrant",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fire hydrant",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5542c53bb0ba87b39eba6ff743b8115c.png",&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 83&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fish1",&#xD;		"md5": "df78f8195f72372846d96dc70cb0ad95.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fish1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fish1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "df78f8195f72372846d96dc70cb0ad95.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fish2",&#xD;		"md5": "f3dd9cb79cce497a90900241cf726367.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fish2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fish2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f3dd9cb79cce497a90900241cf726367.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fish3",&#xD;		"md5": "aec949cefb15ddd1330f3b633734d4d3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fish3",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fish3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aec949cefb15ddd1330f3b633734d4d3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Flower Shape",&#xD;		"md5": "7905272bf89ee61cd9d3680a67732815.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Flower Shape",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "flower shape",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7905272bf89ee61cd9d3680a67732815.svg",&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Football",&#xD;		"md5": "422b34b6e5a2fdb8d0ac00aca91ec714.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Football",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "football running",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "422b34b6e5a2fdb8d0ac00aca91ec714.png",&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 100&#xD;				},&#xD;				{&#xD;					"costumeName": "football standing",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1f57154842f68aa55577edc90a6f2b32.png",&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fortune Cookie",&#xD;		"md5": "d47f0be24acf78130af2e03572a3f9d3.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fortune Cookie",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fortunecookie",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d47f0be24acf78130af2e03572a3f9d3.png",&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fox",&#xD;		"md5": "dd19959dc4d453813299f496124d50ff.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fox",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fox",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dd19959dc4d453813299f496124d50ff.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Frog",&#xD;		"md5": "285483a688eed2ff8010c65112f99c41.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Frog",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "frog",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "285483a688eed2ff8010c65112f99c41.svg",&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 30&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fruit Platter",&#xD;		"md5": "c6e2f673debcff91de8e3749ddf674b9.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fruit Platter",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fruit_platter",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c6e2f673debcff91de8e3749ddf674b9.png",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 40&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Fruit Salad",&#xD;		"md5": "dbf8cc34f7ca18b4a008d2890dba56b7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Fruit Salad",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "fruitsalad",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dbf8cc34f7ca18b4a008d2890dba56b7.svg",&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 22&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ghost1",&#xD;		"md5": "c88579c578f2d171de78612f2ff9c9d9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ghost1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ghost1 ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c88579c578f2d171de78612f2ff9c9d9.svg",&#xD;					"rotationCenterX": 60,&#xD;					"rotationCenterY": 63&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ghost2",&#xD;		"md5": "607be245da950af1a4e4d79acfda46e3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ghost2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ghost2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "607be245da950af1a4e4d79acfda46e3.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "ghost2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b9e2ebbe17c617ac182abd8bc1627693.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ghoul",&#xD;		"md5": "70ef3e78079cf4a1c9abf32b5d982b71.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ghoul",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ghoul-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "70ef3e78079cf4a1c9abf32b5d982b71.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "ghoul-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e962f1248f7a7201eb24d376d804093.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Gift",&#xD;		"md5": "abeae2217b3ce67b1ff761cd7a89274d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Gift",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "gift-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "abeae2217b3ce67b1ff761cd7a89274d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "gift-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5cae973c98f2d98b51e6c6b3c9602f8c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 26&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Giga",&#xD;		"md5": "93cb048a1d199f92424b9c097fa5fa38.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Giga",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "giga-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "93cb048a1d199f92424b9c097fa5fa38.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 96&#xD;				},&#xD;				{&#xD;					"costumeName": "giga-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "528613711a7eae3a929025be04db081c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 96&#xD;				},&#xD;				{&#xD;					"costumeName": "giga-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ee4dd21d7ca6d1b889ee25d245cbcc66.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 96&#xD;				},&#xD;				{&#xD;					"costumeName": "giga-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7708e2d9f83a01476ee6d17aa540ddf1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 96&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Giga walking",&#xD;		"md5": "f76bc420011db2cdb2de378c1536f6da.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Giga walking",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Giga walk1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f76bc420011db2cdb2de378c1536f6da.svg",&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 107&#xD;				},&#xD;				{&#xD;					"costumeName": "Giga walk2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "43b5874e8a54f93bd02727f0abf6905b.svg",&#xD;					"rotationCenterX": 71,&#xD;					"rotationCenterY": 107&#xD;				},&#xD;				{&#xD;					"costumeName": "Giga walk3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9aab3bbb375765391978be4f6d478ab3.svg",&#xD;					"rotationCenterX": 71,&#xD;					"rotationCenterY": 107&#xD;				},&#xD;				{&#xD;					"costumeName": "Giga walk4",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "22e4ae40919cf0fe6b4d7649d14a6e71.svg",&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 110&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Glass Water",&#xD;		"md5": "c364b9e1f4bcdc61705032d89eaaa0a1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Glass Water",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "water drop",&#xD;					"soundID": -1,&#xD;					"md5": "aa488de9e2c871e9d4faecd246ed737a.wav",&#xD;					"sampleCount": 8136,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "glass water-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c364b9e1f4bcdc61705032d89eaaa0a1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 48&#xD;				},&#xD;				{&#xD;					"costumeName": "glass water-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bc07ce6a2004ac91ce704531a1c526e5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 48&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.6,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Glasses",&#xD;		"md5": "5fcf716b53f223bc86b10ab0eca3e162.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Glasses",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "glasses",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5fcf716b53f223bc86b10ab0eca3e162.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 16,&#xD;					"rotationCenterY": 9&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Gobo",&#xD;		"md5": "1f5ea0d12f85aed2e471cdd21b0bd6d7.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Gobo",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "gobo-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1f5ea0d12f85aed2e471cdd21b0bd6d7.svg",&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				},&#xD;				{&#xD;					"costumeName": "gobo-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "73e493e4abd5d0954b677b97abcb7116.svg",&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				},&#xD;				{&#xD;					"costumeName": "gobo-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bc68a6bdf300df7b53d73b38f74c844e.svg",&#xD;					"rotationCenterX": 47,&#xD;					"rotationCenterY": 55&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Green Flag",&#xD;		"md5": "173e20ac537d2c278ed621be3db3fc87.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Green Flag",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "green flag",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "173e20ac537d2c278ed621be3db3fc87.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 30&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Guitar",&#xD;		"md5": "dfa85e2a962b725ee53f61cea2edc1fb.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Guitar",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C guitar",&#xD;					"soundID": -1,&#xD;					"md5": "22baa07795a9a524614075cdea543793.wav",&#xD;					"sampleCount": 44864,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D guitar",&#xD;					"soundID": -1,&#xD;					"md5": "2dbcfae6a55738f94bbb40aa5fcbf7ce.wav",&#xD;					"sampleCount": 41120,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E guitar",&#xD;					"soundID": -1,&#xD;					"md5": "4b5d1da83e59bf35578324573c991666.wav",&#xD;					"sampleCount": 38400,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F guitar",&#xD;					"soundID": -1,&#xD;					"md5": "b51d086aeb1921ec405561df52ecbc50.wav",&#xD;					"sampleCount": 36416,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G guitar",&#xD;					"soundID": -1,&#xD;					"md5": "98a835713ecea2f3ef9f4f442d52ad20.wav",&#xD;					"sampleCount": 33600,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A guitar",&#xD;					"soundID": -1,&#xD;					"md5": "ee753e87d212d4b2fb650ca660f1e839.wav",&#xD;					"sampleCount": 31872,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B guitar",&#xD;					"soundID": -1,&#xD;					"md5": "2ae2d67de62df8ca54d638b4ad2466c3.wav",&#xD;					"sampleCount": 29504,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 guitar",&#xD;					"soundID": -1,&#xD;					"md5": "c8d2851bd99d8e0ce6c1f05e4acc7f34.wav",&#xD;					"sampleCount": 27712,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "guitar",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dfa85e2a962b725ee53f61cea2edc1fb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 98&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Guitar-Bass",&#xD;		"md5": "83cf122ec4a291e2a17910f718b583a5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Guitar-Bass",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "69eee3d038ea0f1c34ec9156a789236d.wav",&#xD;					"sampleCount": 5216,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "67a6d1aa68233a2fa641aee88c7f051f.wav",&#xD;					"sampleCount": 5568,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "0704b8ceabe54f1dcedda8c98f1119fd.wav",&#xD;					"sampleCount": 5691,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "45eedb4ce62a9cbbd2207824b94a4641.wav",&#xD;					"sampleCount": 5312,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "97b187d72219b994a6ef6a5a6b09605c.wav",&#xD;					"sampleCount": 5568,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "5cb46ddd903fc2c9976ff881df9273c9.wav",&#xD;					"sampleCount": 5920,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "5a0701d0a914223b5288300ac94e90e4.wav",&#xD;					"sampleCount": 6208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 elec bass",&#xD;					"soundID": -1,&#xD;					"md5": "56fc995b8860e713c5948ecd1c2ae572.wav",&#xD;					"sampleCount": 5792,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "guitar bass",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "83cf122ec4a291e2a17910f718b583a5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 53,&#xD;					"rotationCenterY": 145&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Guitar-Electric",&#xD;		"md5": "18d7b47368ba1ead0d1ca436b8369211.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Guitar-Electric",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "0d340de02e14bebaf8dfa0e43eb3f1f9.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "1b5de9866801eb2f9d4f57c7c3b473f5.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "2e6a6ae3e0f72bf78c74def8130f459a.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "5eb00f15f21f734986aa45156d44478d.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "cd0d0e7dad415b2ffa2ba7a61860eaf8.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "fa5f7fea601e9368dd68449d9a54c995.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "81f142d0b00189703d7fe9b1f13f6f87.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 elec guitar",&#xD;					"soundID": -1,&#xD;					"md5": "3a8ed3129f22cba5b0810bc030d16b5f.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "guitar electric",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "18d7b47368ba1ead0d1ca436b8369211.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 114&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hannah",&#xD;		"md5": "b983d99560313e38b4b3cd36cbd5f0d1.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap",&#xD;			"sports"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hannah",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hannah-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b983d99560313e38b4b3cd36cbd5f0d1.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 138,&#xD;					"rotationCenterY": 126&#xD;				},&#xD;				{&#xD;					"costumeName": "hannah-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d0c3b4b24fbf1152de3ebb68f6b875ae.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 160&#xD;				},&#xD;				{&#xD;					"costumeName": "hannah-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5fdce07935156bbcf943793fa84e826c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 170,&#xD;					"rotationCenterY": 130&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat",&#xD;		"md5": "b3beb1f52d371428d70b65a0c4c5c001.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Hat",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b3beb1f52d371428d70b65a0c4c5c001.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 60&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat Beanie",&#xD;		"md5": "3271da33e4108ed08a303c2244739fbf.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat Beanie",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hat beanie",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3271da33e4108ed08a303c2244739fbf.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 28,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat Party1",&#xD;		"md5": "70a7f535d8857cf9175492415361c361.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat Party1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "partyhat1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "70a7f535d8857cf9175492415361c361.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat Party2",&#xD;		"md5": "9b7a84fe3e50621752917e4e484a1e2f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat Party2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hat party2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9b7a84fe3e50621752917e4e484a1e2f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat Winter",&#xD;		"md5": "6c2ee1b97f6ec2b3457a25a3975a2009.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat Winter",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "xylo3",&#xD;					"soundID": -1,&#xD;					"md5": "3395cade6d7c0cc9ce73a8c12f40319b.wav",&#xD;					"sampleCount": 209502,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hat winter",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6c2ee1b97f6ec2b3457a25a3975a2009.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 26,&#xD;					"rotationCenterY": 101&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hat Wizard",&#xD;		"md5": "581571e8c8f5adeb01565e12b1b77b58.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"fantasy",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hat Wizard",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hat wizard",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "581571e8c8f5adeb01565e12b1b77b58.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 69&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Headband",&#xD;		"md5": "961148d1605a1bd8ce80ed8d39e831c2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Headband",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "headband",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "961148d1605a1bd8ce80ed8d39e831c2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 53,&#xD;					"rotationCenterY": 43&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Heart",&#xD;		"md5": "6e79e087c866a016f99ee482e1aeba47.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Heart",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "tom drum",&#xD;					"soundID": -1,&#xD;					"md5": "ca350a536d60bb8ed50f24677d65eed8.wav",&#xD;					"sampleCount": 33920,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "heart red",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e79e087c866a016f99ee482e1aeba47.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 65,&#xD;					"rotationCenterY": 56&#xD;				},&#xD;				{&#xD;					"costumeName": "heart purple",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b15362bb6b02a59e364db9081ccf19aa.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 62&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.55,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Heart Candy",&#xD;		"md5": "d448acd247f10f32bef7823cd433f928.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Heart Candy",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "tom drum",&#xD;					"soundID": -1,&#xD;					"md5": "ca350a536d60bb8ed50f24677d65eed8.wav",&#xD;					"sampleCount": 33920,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "heart love it",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d448acd247f10f32bef7823cd433f928.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 61&#xD;				},&#xD;				{&#xD;					"costumeName": "heart code",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "497c5df9e02467202ff93096dccaf91f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 61&#xD;				},&#xD;				{&#xD;					"costumeName": "heart sweet",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a39d78d33b051e8b12a4b2a10d77b249.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 61&#xD;				},&#xD;				{&#xD;					"costumeName": "heart smile",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "74a8f75d139d330b715787edbbacd83d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 61&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.55,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Heart Face",&#xD;		"md5": "4ab84263da32069cf97cc0fa52729a0d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Heart Face",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "tom drum",&#xD;					"soundID": -1,&#xD;					"md5": "ca350a536d60bb8ed50f24677d65eed8.wav",&#xD;					"sampleCount": 33920,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "heart face",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4ab84263da32069cf97cc0fa52729a0d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 52&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.55,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Heart Scratch",&#xD;		"md5": "2bfa5c3b41d4be160ab0c157ce0f96a9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Heart Scratch",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance snare beat",&#xD;					"soundID": -1,&#xD;					"md5": "562587bdb75e3a8124cdaa46ba0f648b.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "heart scratch",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2bfa5c3b41d4be160ab0c157ce0f96a9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 81,&#xD;					"rotationCenterY": 77&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.55,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Helicopter",&#xD;		"md5": "8847e2d3383906dbabbf7ffa98945a7b.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"flying",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Helicopter",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "helicopter",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8847e2d3383906dbabbf7ffa98945a7b.png",&#xD;					"rotationCenterX": 90,&#xD;					"rotationCenterY": 64&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Hippo1",&#xD;		"md5": "c1353c4a5eec5e6f32ed053e6f6e8f99.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"flying",&#xD;			"fantasy",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Hippo1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "hippo1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c1353c4a5eec5e6f32ed053e6f6e8f99.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 65&#xD;				},&#xD;				{&#xD;					"costumeName": "hippo1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e65ed93bbb9cccf698fc7e774ab609a6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 68&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Holly",&#xD;		"md5": "1d8583ca1b5c687f3de004c27110a130.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Holly",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "holly1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1d8583ca1b5c687f3de004c27110a130.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 44&#xD;				},&#xD;				{&#xD;					"costumeName": "holly2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4b23f1d694ae8b400f1d7216dd8e49bc.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 42&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Home Button",&#xD;		"md5": "1bac530a0701a8fc88bb0802ae6787a3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Home Button",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "home button",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1bac530a0701a8fc88bb0802ae6787a3.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Horse1",&#xD;		"md5": "32f4d80477cd070cb0848e555d374060.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"transportation",&#xD;			"vector",&#xD;			"drawing"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Horse1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "horse1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "32f4d80477cd070cb0848e555d374060.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 119,&#xD;					"rotationCenterY": 83&#xD;				},&#xD;				{&#xD;					"costumeName": "horse1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ffa6431c5ef2a4e975ecffacdb0efea7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 103,&#xD;					"rotationCenterY": 97&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jaime",&#xD;		"md5": "3ddc912edef87ae29121f57294fa0cb5.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jaime",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jaime-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3ddc912edef87ae29121f57294fa0cb5.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 154&#xD;				},&#xD;				{&#xD;					"costumeName": "jaime-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5a683f4536abca0f83a77bc341df4c9a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 154&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jaime Walking",&#xD;		"md5": "d6cc9814f7a6640e4c2b1a4276987dc5.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"walking",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			5,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jaime Walking",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jaime walking-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d6cc9814f7a6640e4c2b1a4276987dc5.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 106,&#xD;					"rotationCenterY": 172&#xD;				},&#xD;				{&#xD;					"costumeName": "jaime walking-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7fb579a98d6db257f1b16109d3c4609a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 52,&#xD;					"rotationCenterY": 176&#xD;				},&#xD;				{&#xD;					"costumeName": "jaime walking-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5883bdefba451aaeac8d77c798d41eb0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 88,&#xD;					"rotationCenterY": 170&#xD;				},&#xD;				{&#xD;					"costumeName": "jaime walking-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4b9d2162e30dbb924840575ed35fddb0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 46,&#xD;					"rotationCenterY": 174&#xD;				},&#xD;				{&#xD;					"costumeName": "jaime walking-e",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "63e56d28cc3e3d9b735e1f1d51248cc0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 172&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jay",&#xD;		"md5": "cf32a87b2c9d7c2553f5a1ed17966504.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jay",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jay",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cf32a87b2c9d7c2553f5a1ed17966504.gif",&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jeans",&#xD;		"md5": "4e283da8c59bcbb9803bdc0016b14c21.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jeans",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jeans-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4e283da8c59bcbb9803bdc0016b14c21.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "jeans-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "01732aa03a48482093fbed3ea402c4a9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 25&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jodi",&#xD;		"md5": "a8ae8b69caa6a837f49aa950055ef29a.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jodi",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jodi",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a8ae8b69caa6a837f49aa950055ef29a.gif",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Jouvi Hip-Hop",&#xD;		"md5": "cb4bf65491eaa9e8aeb1c1fdfe37e84a.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			13,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Jouvi Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate2",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "jo stance",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cb4bf65491eaa9e8aeb1c1fdfe37e84a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 94,&#xD;					"rotationCenterY": 240&#xD;				},&#xD;				{&#xD;					"costumeName": "jo top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a91fe6e180b524d27688aa0cd82cd629.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 260&#xD;				},&#xD;				{&#xD;					"costumeName": "jo top R leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "de64c526a57355af5fd6ff28f27b67ea.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 218,&#xD;					"rotationCenterY": 262&#xD;				},&#xD;				{&#xD;					"costumeName": "jo top L leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "987a667cd7984d9e5429c26b8a4cab2d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 208,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "jo top R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ddbd8751df020cc32231ecb4e7b5388d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 144,&#xD;					"rotationCenterY": 270&#xD;				},&#xD;				{&#xD;					"costumeName": "jo top L cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "33660046a3d37fa762f4a634ee3df75d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop front",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0503f4d712bc3184cf1b5f830d0df993.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 228&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop down",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "95a0f1bb3d8055a283aecc6bcb6303c9.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 74&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop left",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "98e8c2f9869f9356204ed19e43ae01cc.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 196,&#xD;					"rotationCenterY": 226&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7bf1600ee75facb510c2922f899fb97c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 242&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2a907e6edf8a101addb2c27d0568896a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 108,&#xD;					"rotationCenterY": 258&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "361d1884737ef734f6a39fd66fc269ec.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 262&#xD;				},&#xD;				{&#xD;					"costumeName": "jo pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e633eb002deb20108bb5100d4b3a8fc5.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 108,&#xD;					"rotationCenterY": 260&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Kai",&#xD;		"md5": "6e007fde15e49c66ee7996561f80b452.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Kai",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "kai-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e007fde15e49c66ee7996561f80b452.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 160&#xD;				},&#xD;				{&#xD;					"costumeName": "kai-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c1e1149f6d7e308e3e4eba14ccc8a751.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 158&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Key",&#xD;		"md5": "af35300cef35803e11f4ed744dc5e818.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Key",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "key",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "af35300cef35803e11f4ed744dc5e818.svg",&#xD;					"rotationCenterX": 42,&#xD;					"rotationCenterY": 27&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Khalid Dance",&#xD;		"md5": "d0018780c7458f002b6fec6d1fea3570.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Khalid Dance",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "khalid-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d0018780c7458f002b6fec6d1fea3570.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 79,&#xD;					"rotationCenterY": 101&#xD;				},&#xD;				{&#xD;					"costumeName": "Khalid-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "88023269142bfc3ecab5b13cc8cbddb9.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 103&#xD;				},&#xD;				{&#xD;					"costumeName": "khalid-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "30dbce950a2d2dddc0ea53d1462d116b.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 109&#xD;				},&#xD;				{&#xD;					"costumeName": "khalid-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e189aec22f4cb57a90f75457615fbbd8.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 63&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Knight",&#xD;		"md5": "f2c5e8bc24d001b81566879dbf2f1a13.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Knight",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "knight",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f2c5e8bc24d001b81566879dbf2f1a13.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ladybug1",&#xD;		"md5": "f16a1ccc69a4a8190a927f1595aa7bfa.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ladybug1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ladybug2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f16a1ccc69a4a8190a927f1595aa7bfa.svg",&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 43&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ladybug2",&#xD;		"md5": "c018a3eed966d5f92c69f2188dfd2aae.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ladybug2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ladybug2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c018a3eed966d5f92c69f2188dfd2aae.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 28&#xD;				},&#xD;				{&#xD;					"costumeName": "ladybug2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a2bb15ace808e070a2b815502952b292.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 28&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Lamp",&#xD;		"md5": "4885678710301cda511018ad7e420c9c.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Lamp",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lamp",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4885678710301cda511018ad7e420c9c.png",&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Laptop",&#xD;		"md5": "76f456b30b98eeefd7c942b27b524e31.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Laptop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "laptop",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "76f456b30b98eeefd7c942b27b524e31.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "LB Hip-Hop",&#xD;		"md5": "61b464a77536f75490d8891fb877819a.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			13,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "LB Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lb stance",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "61b464a77536f75490d8891fb877819a.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 244&#xD;				},&#xD;				{&#xD;					"costumeName": "lb top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dfe3628ddf46a67dcc21c63be65a8e40.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 70,&#xD;					"rotationCenterY": 248&#xD;				},&#xD;				{&#xD;					"costumeName": "lb top R leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e824768a109691b5a3c577d3506ed70c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 244,&#xD;					"rotationCenterY": 250&#xD;				},&#xD;				{&#xD;					"costumeName": "lb top L leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "350472368e2310efe6fa734b79f0ff41.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 234,&#xD;					"rotationCenterY": 286&#xD;				},&#xD;				{&#xD;					"costumeName": "lb top L cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5a151c4d4e2e2f870d9096d5fce6ed48.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 148,&#xD;					"rotationCenterY": 258&#xD;				},&#xD;				{&#xD;					"costumeName": "lb top R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "99acf468000c6fcbaf344e4531725efc.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 174,&#xD;					"rotationCenterY": 256&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop front",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e34a166807a3ffbf8d147b12aa49dd19.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 272&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop down",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8e41de92cb932a6898782a39a0d7d300.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 56,&#xD;					"rotationCenterY": 90&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop left",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ff1b96d1047d4be459a4614ce7c7c94c.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 198,&#xD;					"rotationCenterY": 266&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop right",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d6d5534c628ac5d5fe3cbf1b76b71252.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 264&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c1fd31607619b8c98a286a650f248511.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 262&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "51fe5962fe4d2af7f6fad7abaa692069.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 268&#xD;				},&#xD;				{&#xD;					"costumeName": "lb pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aa57575fde5ff8b13041e3a7b1499fe0.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 78,&#xD;					"rotationCenterY": 258&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Lightning",&#xD;		"md5": "c2d636ab2b491e591536afc3d49cbecd.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"castle",&#xD;			"nature",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Lightning",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lightning",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c2d636ab2b491e591536afc3d49cbecd.svg",&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 83&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Lion",&#xD;		"md5": "692a3c84366bf8ae4d16858e20e792f5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Lion",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lion-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "692a3c84366bf8ae4d16858e20e792f5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "lion-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a519ef168a345a2846d0201bf092a6d0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Lionness",&#xD;		"md5": "8b5f49d4f91f61fbdcb4abac53ab5c7c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Lionness",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lioness",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8b5f49d4f91f61fbdcb4abac53ab5c7c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Lornz OdetoCode",&#xD;		"md5": "bf911c597995031014bbf32a8eb9d997.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			1,&#xD;			8,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Lornz OdetoCode",&#xD;			"scripts": [&#xD;				[&#xD;					10,&#xD;					10,&#xD;					[&#xD;						[&#xD;							"whenKeyPressed",&#xD;							"space"&#xD;						],&#xD;						[&#xD;							"nextCostume"&#xD;						]&#xD;					]&#xD;				]&#xD;			],&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "odesong-b",&#xD;					"soundID": -1,&#xD;					"md5": "2c41921491b1da2bfa1ebcaba34265ca.wav",&#xD;					"sampleCount": 212553,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "lorenz01",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bf911c597995031014bbf32a8eb9d997.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 71,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz02",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a1fb3946afc4c064503656d5d8ed0def.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 120,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz03",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1da2ed229f84c1e6d1693bce3bf2d27f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 125,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz04",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6b798489bdf2c48337ccb2d31fc64c5f.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 124,&#xD;					"rotationCenterY": 109&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz05",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dc4e7a7e84f20802d4c1b12423738f62.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 141,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz06",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "92db5fdd19b29f32890926d808e764af.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 132,&#xD;					"rotationCenterY": 250&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz07",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6b65c2e80daf820d0f277af4f7352cbc.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 121,&#xD;					"rotationCenterY": 252&#xD;				},&#xD;				{&#xD;					"costumeName": "lorenz07b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "97ef7f1f07248305725f74a0cc127eba.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 115,&#xD;					"rotationCenterY": 252&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 7,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Magic Carpet",&#xD;		"md5": "66b74069378c828cb21d2dbe2227a31a.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			" fantasy",&#xD;			"flying",&#xD;			"castle",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Magic Carpet",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "magiccarpet",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "66b74069378c828cb21d2dbe2227a31a.png",&#xD;					"rotationCenterX": 90,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Magic Wand",&#xD;		"md5": "3db9bfe57d561557795633c5cda44e8c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Magic Wand",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "magicwand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3db9bfe57d561557795633c5cda44e8c.svg",&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Maya",&#xD;		"md5": "8b7ff2f1190825367112c2c076e34af3.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Maya",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "maya",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8b7ff2f1190825367112c2c076e34af3.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 138&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Marble Building",&#xD;		"md5": "53608adfaea6e927dc11b53f604e2a1e.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Marble Building",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "marble-building",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "53608adfaea6e927dc11b53f604e2a1e.png",&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 68&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Microphone",&#xD;		"md5": "59109aefada55997b9497c6266695830.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			10&#xD;		],&#xD;		"json": {&#xD;			"objName": "Microphone",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "bass beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "28153621d293c86da0b246d314458faf.wav",&#xD;					"sampleCount": 6720,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hi beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "5a07847bf246c227204728b05a3fc8f3.wav",&#xD;					"sampleCount": 5856,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "snare beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "c642c4c00135d890998f351faec55498.wav",&#xD;					"sampleCount": 5630,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "scratching beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "859249563a7b1fc0f6e92e36d1db81c7.wav",&#xD;					"sampleCount": 11552,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "crash beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "725e29369e9138a43f11e0e5eb3eb562.wav",&#xD;					"sampleCount": 26883,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hihat beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "0c77025e2e874f05cd3c7d850874d56d.wav",&#xD;					"sampleCount": 4274,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "rim beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "7ede1382b578d8fc32850b48d082d914.wav",&#xD;					"sampleCount": 4960,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "clap beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "abc70bb390f8e55f22f32265500d814a.wav",&#xD;					"sampleCount": 4224,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wah beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "9021b7bb06f2399f18e2db4fb87095dc.wav",&#xD;					"sampleCount": 6624,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "microphone",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "59109aefada55997b9497c6266695830.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 27,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Microphone Stand",&#xD;		"md5": "fe85f2d5a94d27b6d793361c3fddcf77.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			10&#xD;		],&#xD;		"json": {&#xD;			"objName": "Microphone Stand",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "bass beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "28153621d293c86da0b246d314458faf.wav",&#xD;					"sampleCount": 6720,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hi beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "5a07847bf246c227204728b05a3fc8f3.wav",&#xD;					"sampleCount": 5856,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "snare beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "726fea2968a387ef566c03d163f17668.wav",&#xD;					"sampleCount": 6102,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "scratching beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "859249563a7b1fc0f6e92e36d1db81c7.wav",&#xD;					"sampleCount": 11552,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "crash beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "725e29369e9138a43f11e0e5eb3eb562.wav",&#xD;					"sampleCount": 26883,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hihat beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "0c77025e2e874f05cd3c7d850874d56d.wav",&#xD;					"sampleCount": 4274,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "rim beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "7ede1382b578d8fc32850b48d082d914.wav",&#xD;					"sampleCount": 4960,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "clap beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "abc70bb390f8e55f22f32265500d814a.wav",&#xD;					"sampleCount": 4224,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wah beatbox",&#xD;					"soundID": -1,&#xD;					"md5": "9021b7bb06f2399f18e2db4fb87095dc.wav",&#xD;					"sampleCount": 6624,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "microphonestand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fe85f2d5a94d27b6d793361c3fddcf77.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 57,&#xD;					"rotationCenterY": 55&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Monkey1",&#xD;		"md5": "d0819570ed955416190eab2e020071ca.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Monkey1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "monkey1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d0819570ed955416190eab2e020071ca.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 44,&#xD;					"rotationCenterY": 45&#xD;				},&#xD;				{&#xD;					"costumeName": "monkey1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dc361fc5c8645e68c7bab9db3df6bc9d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 51,&#xD;					"rotationCenterY": 46&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Monkey2",&#xD;		"md5": "6e4de762dbd52cd2b6356694a9668211.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Monkey2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "chee chee",&#xD;					"soundID": -1,&#xD;					"md5": "25f4826cdd61e0a1c623ec2324c16ca0.wav",&#xD;					"sampleCount": 34560,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "monkey2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6e4de762dbd52cd2b6356694a9668211.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 99&#xD;				},&#xD;				{&#xD;					"costumeName": "monkey2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7662a3a0f4c6fa21fdf2de33bd80fe5f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 99&#xD;				},&#xD;				{&#xD;					"costumeName": "monkey2-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "db8eb50b948047181922310bb94511fb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 68,&#xD;					"rotationCenterY": 99&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.75,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Mori",&#xD;		"md5": "350a86adb24247003cc7e047bdba3c1d.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Mori",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "mori",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "350a86adb24247003cc7e047bdba3c1d.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 42,&#xD;					"rotationCenterY": 160&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Mouse1",&#xD;		"md5": "e1f0c26afecbe9d4b9923d8e6bf489a8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Mouse1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "mouse1-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e1f0c26afecbe9d4b9923d8e6bf489a8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "mouse1-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f5e477a3f94fc98ba3cd927228405646.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 65,&#xD;					"rotationCenterY": 21&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Muffin",&#xD;		"md5": "e00161f08c77d10e72e44b6e01243e63.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Muffin",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "muffin-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e00161f08c77d10e72e44b6e01243e63.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 85,&#xD;					"rotationCenterY": 48&#xD;				},&#xD;				{&#xD;					"costumeName": "muffin-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fb60c3f8d6a892813299daa33b91df23.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 85,&#xD;					"rotationCenterY": 48&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Nano",&#xD;		"md5": "02c5433118f508038484bbc5b111e187.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Nano",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "nano-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "02c5433118f508038484bbc5b111e187.svg",&#xD;					"rotationCenterX": 61,&#xD;					"rotationCenterY": 60&#xD;				},&#xD;				{&#xD;					"costumeName": "nano-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "10d6d9130618cd092ae02158cde2e113.svg",&#xD;					"rotationCenterX": 61,&#xD;					"rotationCenterY": 60&#xD;				},&#xD;				{&#xD;					"costumeName": "nano-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "85e762d45bc626ca2edb3472c7cfaa32.svg",&#xD;					"rotationCenterX": 61,&#xD;					"rotationCenterY": 60&#xD;				},&#xD;				{&#xD;					"costumeName": "nano-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b10925346da8080443f27e7dfaeff6f7.svg",&#xD;					"rotationCenterX": 61,&#xD;					"rotationCenterY": 60&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Neigh Pony",&#xD;		"md5": "176c4fb4df80df899ca28a48bd1f0edf.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Neigh Pony",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "horse",&#xD;					"soundID": -1,&#xD;					"md5": "45ffcf97ee2edca0199ff5aa71a5b72e.wav",&#xD;					"sampleCount": 14464,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "neigh pony",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "176c4fb4df80df899ca28a48bd1f0edf.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 78&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Octopus",&#xD;		"md5": "bb68d2e29d8572ef9de06f8033e668d9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector",&#xD;			"underwater"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Octopus",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "octopus-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "bb68d2e29d8572ef9de06f8033e668d9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "octopus-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b52bd3bc12553bb31b1395516c3cec4d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Orange",&#xD;		"md5": "780ee2ef342f79a81b4c353725331138.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Orange",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "orange",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "780ee2ef342f79a81b4c353725331138.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 19,&#xD;					"rotationCenterY": 18&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Orange2",&#xD;		"md5": "89b11d2a404c3972b65743f743cc968a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Orange2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "orange2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "89b11d2a404c3972b65743f743cc968a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 24&#xD;				},&#xD;				{&#xD;					"costumeName": "orange2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5f7998e007dfa70e70bbd8d43199ebba.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "orange2-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "466e9e2d62ee135a2dabd5593e6f8407.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 33&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Paddle",&#xD;		"md5": "5cda5ed5ffabc3d06322551656427b06.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Paddle",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "paddle",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5cda5ed5ffabc3d06322551656427b06.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 8&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.85000000000001,&#xD;			"direction": -90,&#xD;			"rotationStyle": "none",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Palmtree",&#xD;		"md5": "6d9c18c296edc8a01e4c611b573b5723.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"nature",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Palmtree",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "palmtree",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6d9c18c296edc8a01e4c611b573b5723.gif",&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Parrot",&#xD;		"md5": "098570b8e1aa85b32f9b4eb07bea3af2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Parrot",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "bird",&#xD;					"soundID": -1,&#xD;					"md5": "18bd4b634a3f992a16b30344c7d810e0.wav",&#xD;					"sampleCount": 3840,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "parrot-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "098570b8e1aa85b32f9b4eb07bea3af2.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 86,&#xD;					"rotationCenterY": 106&#xD;				},&#xD;				{&#xD;					"costumeName": "parrot-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "721255a0733c9d8d2ba518ff09b3b7cb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 31&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Parrot2",&#xD;		"md5": "aba6f5539a5ac21863a3495d89947e66.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"flying",&#xD;			"nature",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			2&#xD;		],&#xD;		"json": {&#xD;			"objName": "Parrot2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": -1,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "bird",&#xD;					"soundID": -1,&#xD;					"md5": "18bd4b634a3f992a16b30344c7d810e0.wav",&#xD;					"sampleCount": 3840,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "parrot2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "aba6f5539a5ac21863a3495d89947e66.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 106,&#xD;					"rotationCenterY": 66&#xD;				},&#xD;				{&#xD;					"costumeName": "parrot2-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9f0aac24e6b600b542613ab5c1461ae8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 83,&#xD;					"rotationCenterY": 13&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Paul",&#xD;		"md5": "4092b43b067ef01ce76a395637fe020a.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Paul",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "paul",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4092b43b067ef01ce76a395637fe020a.gif",&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Pencil",&#xD;		"md5": "4495fcb0443cebc5d43e66243a88f1ac.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Pencil",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "pencil-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4495fcb0443cebc5d43e66243a88f1ac.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 54&#xD;				},&#xD;				{&#xD;					"costumeName": "pencil-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "21088922dbe127f6d2e58e2e83fb632e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 68&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Penguin1",&#xD;		"md5": "c17d9e4bdb59c574e0c34aa70af516da.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Penguin1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "penguin1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c17d9e4bdb59c574e0c34aa70af516da.svg",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 61&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Penguin1 Talk",&#xD;		"md5": "35fec7aa5f60cca945fe0615413f1f08.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Penguin1 Talk",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "penguin1 talk-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "35fec7aa5f60cca945fe0615413f1f08.svg",&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 62&#xD;				},&#xD;				{&#xD;					"costumeName": "penguin1 talk-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "18fa51a64ebd5518f0c5c465525346e5.svg",&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 61&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Penguin2",&#xD;		"md5": "eaaaa7068e78a51d73ba437f1ec5763e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Penguin2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "penguin2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "eaaaa7068e78a51d73ba437f1ec5763e.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 79&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Penguin2 Talk",&#xD;		"md5": "5a80f4b2fd20d43e4f7cb4189c08d99c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Penguin2 Talk",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "penguin2 talk-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5a80f4b2fd20d43e4f7cb4189c08d99c.svg",&#xD;					"rotationCenterX": 45,&#xD;					"rotationCenterY": 79&#xD;				},&#xD;				{&#xD;					"costumeName": "penguin2 talk-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "394e79f5f9a462064ece2a9a6606a07d.svg",&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 78&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Penguin3",&#xD;		"md5": "3f1173e00f664fca5f493b408e1e6d69.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Penguin3",&#xD;			"scripts": [&#xD;				[&#xD;					142,&#xD;					432,&#xD;					[&#xD;						[&#xD;							"setSizeTo:",&#xD;							100&#xD;						]&#xD;					]&#xD;				]&#xD;			],&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "penguin3-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3f1173e00f664fca5f493b408e1e6d69.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 98&#xD;				},&#xD;				{&#xD;					"costumeName": "penguin3-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "814c2ea372e64b98d5de97b75773f54b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 57,&#xD;					"rotationCenterY": 97&#xD;				},&#xD;				{&#xD;					"costumeName": "penguin3-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e28cd8b76b23db393d06c3a057e2dc68.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": 98&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Piano",&#xD;		"md5": "a79a9794c290e5aa533230cc3d13795b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Piano",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C piano",&#xD;					"soundID": -1,&#xD;					"md5": "d27ed8d953fe8f03c00f4d733d31d2cc.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D piano",&#xD;					"soundID": -1,&#xD;					"md5": "51381ac422605ee8c7d64cfcbfd75efc.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E piano",&#xD;					"soundID": -1,&#xD;					"md5": "c818fdfaf8a0efcb562e24e794700a57.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F piano",&#xD;					"soundID": -1,&#xD;					"md5": "cdab3cce84f74ecf53e3941c6a003b5e.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G piano",&#xD;					"soundID": -1,&#xD;					"md5": "42bb2ed28e7023e111b33220e1594a6f.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A piano",&#xD;					"soundID": -1,&#xD;					"md5": "0727959edb2ea0525feed9b0c816991c.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B piano",&#xD;					"soundID": -1,&#xD;					"md5": "86826c6022a46370ed1afae69f1ab1b9.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 piano",&#xD;					"soundID": -1,&#xD;					"md5": "75d7d2c9b5d40dd4e1cb268111abf1a2.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "piano",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a79a9794c290e5aa533230cc3d13795b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 142,&#xD;					"rotationCenterY": 88&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Piano-Electric",&#xD;		"md5": "337368e789abc17beb1a2bacbb9d3bdc.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Piano-Electric",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "8366ee963cc57ad24a8a35a26f722c2b.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "835f136ca8d346a17b4d4baf8405be37.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "ab3c198f8e36efff14f0a5bad35fa3cd.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "dc5e368fc0d0dad1da609bfc3e29aa15.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "39525f6545d62a95d05153f92d63301a.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "0cfa8e84d6a5cd63afa31d541625a9ef.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "9cc77167419f228503dd57fddaa5b2a6.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 elec piano",&#xD;					"soundID": -1,&#xD;					"md5": "366c7edbd4dd5cca68bf62902999bd66.wav",&#xD;					"sampleCount": 44100,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "keyboard-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "337368e789abc17beb1a2bacbb9d3bdc.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 88,&#xD;					"rotationCenterY": 24&#xD;				},&#xD;				{&#xD;					"costumeName": "keyboard-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "290216dfdf0cffea57743d91f130b2c7.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 89,&#xD;					"rotationCenterY": 24&#xD;				},&#xD;				{&#xD;					"costumeName": "keyboard-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "750cbbcd66cb893cd5a66ee0a663e486.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 89,&#xD;					"rotationCenterY": 24&#xD;				},&#xD;				{&#xD;					"costumeName": "keyboard-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "46b0d833ad845d88585fbd0cb4b070ee.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 89,&#xD;					"rotationCenterY": 24&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Pico",&#xD;		"md5": "0579fe60bb3717c49dfd7743caa84ada.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Pico",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "pico-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0579fe60bb3717c49dfd7743caa84ada.svg",&#xD;					"rotationCenterX": 55,&#xD;					"rotationCenterY": 66&#xD;				},&#xD;				{&#xD;					"costumeName": "pico-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "26c688d7544757225ff51cd2fb1519b5.svg",&#xD;					"rotationCenterX": 55,&#xD;					"rotationCenterY": 66&#xD;				},&#xD;				{&#xD;					"costumeName": "pico-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "adf61e2090f8060e1e8b2b0604d03751.svg",&#xD;					"rotationCenterX": 55,&#xD;					"rotationCenterY": 66&#xD;				},&#xD;				{&#xD;					"costumeName": "pico-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "594704bf12e3c4d9e83bb91661ad709a.svg",&#xD;					"rotationCenterX": 55,&#xD;					"rotationCenterY": 66&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Pico walking",&#xD;		"md5": "8eab5fe20dd249bf22964298b1d377eb.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"walking",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Pico walking",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Pico walk1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8eab5fe20dd249bf22964298b1d377eb.svg",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 71&#xD;				},&#xD;				{&#xD;					"costumeName": "Pico walk2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "39ecd3c38d3f2cd81e3a17ee6c25699f.svg",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 71&#xD;				},&#xD;				{&#xD;					"costumeName": "Pico walk3",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "43f7d92dcf9eadf77c07a6fc1eb4104f.svg",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 70&#xD;				},&#xD;				{&#xD;					"costumeName": "Pico walk4",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2582d012d57bca59bc0315c5c5954958.svg",&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 70&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Planet2",&#xD;		"md5": "978784738c1d9dd4b1d397fd18bdf406.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Planet2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "planet2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "978784738c1d9dd4b1d397fd18bdf406.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Prince",&#xD;		"md5": "a760bed1cfc28a30b2dc7fd045c90792.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Prince",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "prince",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a760bed1cfc28a30b2dc7fd045c90792.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Princess",&#xD;		"md5": "75c96829e4b9f89378dfde0dee78db5f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Princess",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "princess",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "75c96829e4b9f89378dfde0dee78db5f.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Rainbow",&#xD;		"md5": "680a806bd87a28c8b25b5f9b6347f022.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Rainbow",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "rainbow",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "680a806bd87a28c8b25b5f9b6347f022.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 36&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Referee",&#xD;		"md5": "b510bc924622795216154727e18dd38e.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Referee",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "referee",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b510bc924622795216154727e18dd38e.gif",&#xD;					"rotationCenterX": 41,&#xD;					"rotationCenterY": 100&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Reindeer",&#xD;		"md5": "0fff0b181cc4d9250b5b985cc283b049.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Reindeer",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "reindeer",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0fff0b181cc4d9250b5b985cc283b049.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 70&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Robot1",&#xD;		"md5": "882919259f26462d74106e11d7c7e5c0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"space",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Robot1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "robot1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "882919259f26462d74106e11d7c7e5c0.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Rocks",&#xD;		"md5": "82c79fdb6a7d9c49ab7f70ee79a3d7f8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"nature",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Rocks",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "rocks",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "82c79fdb6a7d9c49ab7f70ee79a3d7f8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Rory",&#xD;		"md5": "7cca95c0a56646dd65771247ea288612.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Rory",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "rory",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7cca95c0a56646dd65771247ea288612.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 160&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ruby",&#xD;		"md5": "c30210e8f719c3a4d2c7cc6917a39300.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ruby",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ruby-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c30210e8f719c3a4d2c7cc6917a39300.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 172&#xD;				},&#xD;				{&#xD;					"costumeName": "ruby-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fc15fdbcc535473f6140cab28197f3be.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 142&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Sailboat",&#xD;		"md5": "8f8d0ea2f0ab5ca533f33f0da1eecfa6.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Sailboat",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sail-boat",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8f8d0ea2f0ab5ca533f33f0da1eecfa6.png",&#xD;					"rotationCenterX": 112,&#xD;					"rotationCenterY": 91&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Sam",&#xD;		"md5": "1d33952fec0abe4ef6adee9fd065d3a8.gif",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Sam",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sam",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1d33952fec0abe4ef6adee9fd065d3a8.gif",&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 90&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Saxophone",&#xD;		"md5": "a09b114b0652006ac66def94548073a9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Saxophone",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C sax",&#xD;					"soundID": -1,&#xD;					"md5": "4d2c939d6953b5f241a27a62cf72de64.wav",&#xD;					"sampleCount": 9491,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D sax",&#xD;					"soundID": -1,&#xD;					"md5": "39f41954a73c0e15d842061e1a4c5e1d.wav",&#xD;					"sampleCount": 9555,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E sax",&#xD;					"soundID": -1,&#xD;					"md5": "3568b7dfe173fab6877a9ff1dcbcf1aa.wav",&#xD;					"sampleCount": 7489,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F sax",&#xD;					"soundID": -1,&#xD;					"md5": "2ae3083817bcd595e26ea2884b6684d5.wav",&#xD;					"sampleCount": 7361,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "G sax",&#xD;					"soundID": -1,&#xD;					"md5": "cefba5de46adfe5702485e0934bb1e13.wav",&#xD;					"sampleCount": 7349,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "A sax",&#xD;					"soundID": -1,&#xD;					"md5": "420991e0d6d99292c6d736963842536a.wav",&#xD;					"sampleCount": 6472,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B sax",&#xD;					"soundID": -1,&#xD;					"md5": "653ebe92d491b49ad5d8101d629f567b.wav",&#xD;					"sampleCount": 9555,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 sax",&#xD;					"soundID": -1,&#xD;					"md5": "ea8d34b18c3d8fe328cea201666458bf.wav",&#xD;					"sampleCount": 7349,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "saxophone-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a09b114b0652006ac66def94548073a9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 80&#xD;				},&#xD;				{&#xD;					"costumeName": "saxophone-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "366c42cc65497f5007c9377a2d4d854b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 80&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Scarf1",&#xD;		"md5": "9db18d2a2b3c9859654fc1b4832e6076.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Scarf1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "scarf1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "9db18d2a2b3c9859654fc1b4832e6076.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 36&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Scarf2",&#xD;		"md5": "ce66662165e2756070f1b12e0a7cb5db.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Scarf2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "scarf2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ce66662165e2756070f1b12e0a7cb5db.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 23,&#xD;					"rotationCenterY": 16&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Scratch Logo",&#xD;		"md5": "978b16d68fa7834dfb327fa3e2c4ba3b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Scratch Logo",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "scratch logo",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "978b16d68fa7834dfb327fa3e2c4ba3b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 85,&#xD;					"rotationCenterY": 26&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shark",&#xD;		"md5": "7c0a907eae79462f69f8e2af8e7df828.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shark",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shark-a ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7c0a907eae79462f69f8e2af8e7df828.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "shark-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "cff9ae87a93294693a0650b38a7a33d2.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "shark-c ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "afeae3f998598424f7c50918507f6ce6.svg",&#xD;					"rotationCenterX": 77,&#xD;					"rotationCenterY": 37&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shirt",&#xD;		"md5": "dbb0eaa9d7af0f5971afdee0192c8b51.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shirt",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shirt-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "dbb0eaa9d7af0f5971afdee0192c8b51.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 48&#xD;				},&#xD;				{&#xD;					"costumeName": "shirt-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "92d009fb104990da9798378ae5e4e1cb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 48,&#xD;					"rotationCenterY": 48&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shirt2",&#xD;		"md5": "5946e7a1e36c6d97ae47d41dd8595a41.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shirt2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shirt2-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5946e7a1e36c6d97ae47d41dd8595a41.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 48&#xD;				},&#xD;				{&#xD;					"costumeName": "shirt2-a2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5b78ab09592126b6bbe2d4907d203909.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 48&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shirt Blouse",&#xD;		"md5": "918a507af6bbae9e7f36f0d949900838.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shirt Blouse",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shirt blouse",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "918a507af6bbae9e7f36f0d949900838.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 35,&#xD;					"rotationCenterY": 28&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shirt Collar",&#xD;		"md5": "b7ecf6503e27e9ab5c086eaf07d22b94.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shirt Collar",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shirt collar-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b7ecf6503e27e9ab5c086eaf07d22b94.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 57&#xD;				},&#xD;				{&#xD;					"costumeName": "shirt collar-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f1b20c3350e8a7e92a2fb1925ad4158b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 57&#xD;				},&#xD;				{&#xD;					"costumeName": "shirt collar-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5f04b99416a794e04d0855f446780f18.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 57&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shirt-T",&#xD;		"md5": "5d7fa4f1788f03d2962f1624d6eac800.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shirt-T",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shirt-t",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5d7fa4f1788f03d2962f1624d6eac800.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 39,&#xD;					"rotationCenterY": 28&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shoes1",&#xD;		"md5": "ffab4cc284070b50ac317e515f59f7d8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shoes1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shoes1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ffab4cc284070b50ac317e515f59f7d8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 23&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Shoes2",&#xD;		"md5": "1dc5d568d98405c370b91a230397a7f9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Shoes2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "shoes2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1dc5d568d98405c370b91a230397a7f9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 8&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Singer1",&#xD;		"md5": "e47ef1af3b925e5ac9e3b3f809d440b3.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Singer1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "Singer1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e47ef1af3b925e5ac9e3b3f809d440b3.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Skates",&#xD;		"md5": "00e5e173400662875a26bb7d6556346a.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Skates",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "skates",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "00e5e173400662875a26bb7d6556346a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 44,&#xD;					"rotationCenterY": -21&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "SL Hip-Hop",&#xD;		"md5": "2d2b577a12a51aa4448ad3e7e2a07079.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"dance",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			8,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "SL Hip-Hop",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "dance celebrate",&#xD;					"soundID": -1,&#xD;					"md5": "0edb8fb88af19e6e17d0f8cf64c1d136.wav",&#xD;					"sampleCount": 176401,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sl top stand",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2d2b577a12a51aa4448ad3e7e2a07079.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 64,&#xD;					"rotationCenterY": 233&#xD;				},&#xD;				{&#xD;					"costumeName": "sl top R leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ba01e9c4448285b7b8a63e98d89ac1d7.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 230&#xD;				},&#xD;				{&#xD;					"costumeName": "sl top L leg",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b274db2a4fa913555dae028f327e7423.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 149,&#xD;					"rotationCenterY": 245&#xD;				},&#xD;				{&#xD;					"costumeName": "sl top ready",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3df3afb72314807fc6c58075da124b84.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 198&#xD;				},&#xD;				{&#xD;					"costumeName": "sl top L cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f26ea2f0d0baaa5aaed3cd96d7843206.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 214&#xD;				},&#xD;				{&#xD;					"costumeName": "sl top R cross",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b46163522a53150fdb6a44461738e9ae.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 110,&#xD;					"rotationCenterY": 200&#xD;				},&#xD;				{&#xD;					"costumeName": "sl pop L arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "48fcc33505fbd3c65d1f7bfbb4745a13.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 145,&#xD;					"rotationCenterY": 174&#xD;				},&#xD;				{&#xD;					"costumeName": "sl pop R arm",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ffae2eb189d6efc97efc91e93ed4d8bf.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 66,&#xD;					"rotationCenterY": 237&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Snowflake",&#xD;		"md5": "67de2af723246de37d7379b76800ee0b.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Snowflake",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "snowflake",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "67de2af723246de37d7379b76800ee0b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 104,&#xD;					"rotationCenterY": 103&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.65,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Snowman",&#xD;		"md5": "56c71c31c17b9bc66a2aab0342cf94b2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Snowman",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "snowman",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "56c71c31c17b9bc66a2aab0342cf94b2.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Soccer Ball",&#xD;		"md5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Soccer Ball",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "soccer ball",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4e4cc84380ccf6d4e59e53bc6d3a0a3f.svg",&#xD;					"rotationCenterX": 32,&#xD;					"rotationCenterY": 34&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Spaceship",&#xD;		"md5": "028b6d5210a4a94d5cd3d2001fd3d74d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"space",&#xD;			"fantasy",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Spaceship",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "spaceship-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "028b6d5210a4a94d5cd3d2001fd3d74d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 84&#xD;				},&#xD;				{&#xD;					"costumeName": "spaceship-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "55e3d48245934393402ab214c122ed8f.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 62,&#xD;					"rotationCenterY": 83&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Speaker",&#xD;		"md5": "44dc3a2ec161999545914d1f77332d76.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"dance",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			1,&#xD;			1,&#xD;			7&#xD;		],&#xD;		"json": {&#xD;			"objName": "Speaker",&#xD;			"variables": [&#xD;				{&#xD;					"name": "scale degree",&#xD;					"value": 1,&#xD;					"isPersistent": false&#xD;				},&#xD;				{&#xD;					"name": "octave",&#xD;					"value": 0,&#xD;					"isPersistent": false&#xD;				},&#xD;				{&#xD;					"name": "note number",&#xD;					"value": 62,&#xD;					"isPersistent": false&#xD;				},&#xD;				{&#xD;					"name": "loop number",&#xD;					"value": 1,&#xD;					"isPersistent": false&#xD;				}&#xD;			],&#xD;			"scripts": [&#xD;				[&#xD;					890,&#xD;					496,&#xD;					[&#xD;						[&#xD;							"procDef",&#xD;							"play major scale note %n for %n beats",&#xD;							[&#xD;								"note",&#xD;								"beats"&#xD;							],&#xD;							[&#xD;								1,&#xD;								1&#xD;							],&#xD;							false&#xD;						],&#xD;						[&#xD;							"setVar:to:",&#xD;							"scale degree",&#xD;							[&#xD;								"%",&#xD;								[&#xD;									"-",&#xD;									[&#xD;										"getParam",&#xD;										"note",&#xD;										"r"&#xD;									],&#xD;									1&#xD;								],&#xD;								7&#xD;							]&#xD;						],&#xD;						[&#xD;							"setVar:to:",&#xD;							"octave",&#xD;							[&#xD;								"computeFunction:of:",&#xD;								"floor",&#xD;								[&#xD;									"/",&#xD;									[&#xD;										"-",&#xD;										[&#xD;											"getParam",&#xD;											"note",&#xD;											"r"&#xD;										],&#xD;										1&#xD;									],&#xD;									7&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"0"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									0&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"1"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"2"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"2"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"4"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"3"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"5"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"4"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"7"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"5"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"9"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"doIf",&#xD;							[&#xD;								"=",&#xD;								[&#xD;									"readVariable",&#xD;									"scale degree"&#xD;								],&#xD;								"6"&#xD;							],&#xD;							[&#xD;								[&#xD;									"setVar:to:",&#xD;									"note number",&#xD;									"11"&#xD;								]&#xD;							]&#xD;						],&#xD;						[&#xD;							"changeVar:by:",&#xD;							"note number",&#xD;							60&#xD;						],&#xD;						[&#xD;							"changeVar:by:",&#xD;							"note number",&#xD;							[&#xD;								"*",&#xD;								[&#xD;									"readVariable",&#xD;									"octave"&#xD;								],&#xD;								12&#xD;							]&#xD;						],&#xD;						[&#xD;							"noteOn:duration:elapsed:from:",&#xD;							[&#xD;								"readVariable",&#xD;								"note number"&#xD;							],&#xD;							[&#xD;								"getParam",&#xD;								"beats",&#xD;								"r"&#xD;							]&#xD;						]&#xD;					]&#xD;				]&#xD;			],&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "drive around",&#xD;					"soundID": -1,&#xD;					"md5": "a3a85fb8564b0266f50a9c091087b7aa.wav",&#xD;					"sampleCount": 44096,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "scratchy beat",&#xD;					"soundID": -1,&#xD;					"md5": "289dc558e076971e74dd1a0bd55719b1.wav",&#xD;					"sampleCount": 44096,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "drum jam",&#xD;					"soundID": -1,&#xD;					"md5": "8b5486ccc806e97e83049d25b071f7e4.wav",&#xD;					"sampleCount": 44288,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cymbal echo",&#xD;					"soundID": -1,&#xD;					"md5": "bb243badd1201b2607bf2513df10cd97.wav",&#xD;					"sampleCount": 44326,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "drum satellite",&#xD;					"soundID": -1,&#xD;					"md5": "079067d7909f791b29f8be1c00fc2131.wav",&#xD;					"sampleCount": 44096,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "kick back",&#xD;					"soundID": -1,&#xD;					"md5": "9cd340d9d568b1479f731e69e103b3ce.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "drum funky",&#xD;					"soundID": -1,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "speaker",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "44dc3a2ec161999545914d1f77332d76.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 53,&#xD;					"rotationCenterY": 79&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Squirrel",&#xD;		"md5": "7e24c99c1b853e52f8e7f9004416fa34.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"bitmap",&#xD;			"photo"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Squirrel",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "squirrel1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7e24c99c1b853e52f8e7f9004416fa34.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 158,&#xD;					"rotationCenterY": 146&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Star1",&#xD;		"md5": "ab0914e53e360477275e58b83ec4d423.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Star1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "star1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ab0914e53e360477275e58b83ec4d423.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 19&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Star2",&#xD;		"md5": "0a0ef50bb5a59be1785c8bb12cdacae6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Star2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "star2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "0a0ef50bb5a59be1785c8bb12cdacae6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 27&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Star3",&#xD;		"md5": "04da262057dfe130860086031e5018ef.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Star3",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "star3-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "04da262057dfe130860086031e5018ef.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 54,&#xD;					"rotationCenterY": 55&#xD;				},&#xD;				{&#xD;					"costumeName": "star3-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a082be13c0e5d17230f448dd55029a7d.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 33,&#xD;					"rotationCenterY": 34&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Starfish",&#xD;		"md5": "3d1101bbc24ae292a36356af325f660c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"animals",&#xD;			"drawing",&#xD;			"underwater",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Starfish",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "starfish-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3d1101bbc24ae292a36356af325f660c.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				},&#xD;				{&#xD;					"costumeName": "starfish-b ",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ad8007f4e63693984d4adc466ffa3ad2.svg",&#xD;					"rotationCenterX": 53,&#xD;					"rotationCenterY": 60&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Stop",&#xD;		"md5": "5b9e3e8edffb0bd4914113609eec5e04.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Stop",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "stop",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5b9e3e8edffb0bd4914113609eec5e04.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 25,&#xD;					"rotationCenterY": 25&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Street Cleaner",&#xD;		"md5": "e3699b3f2f7d67a9f48ea9b71fd3733a.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"transportation",&#xD;			"city",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Street Cleaner",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "street-cleaner-mit",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e3699b3f2f7d67a9f48ea9b71fd3733a.png",&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 59&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Sun",&#xD;		"md5": "55c931c65456822c0c56a2b30e3e550d.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Sun",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sun",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "55c931c65456822c0c56a2b30e3e550d.svg",&#xD;					"rotationCenterX": 72,&#xD;					"rotationCenterY": 72&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Sunglasses1",&#xD;		"md5": "424393e8705aeadcfecb8559ce4dcea2.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Sunglasses1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sunglasses1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "424393e8705aeadcfecb8559ce4dcea2.svg",&#xD;					"rotationCenterX": 37,&#xD;					"rotationCenterY": 14&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Sunglasses2",&#xD;		"md5": "3185d2295bbf2c5ebd0688c9e4f13076.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Sunglasses2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "sunglasses2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3185d2295bbf2c5ebd0688c9e4f13076.svg",&#xD;					"rotationCenterX": 29,&#xD;					"rotationCenterY": 10&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Taco",&#xD;		"md5": "d224b30c54bd4d6000c935938c7f5d7e.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"flying",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Taco",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "taco-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d224b30c54bd4d6000c935938c7f5d7e.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 20,&#xD;					"rotationCenterY": 15&#xD;				},&#xD;				{&#xD;					"costumeName": "taco-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6dee4f866d79e6475d9824ba11973037.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 56,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Tennis Ball",&#xD;		"md5": "38d3048bf7ec9f4ec3fd24dc38a03eea.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"sports",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Tennis Ball",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tennisball",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "38d3048bf7ec9f4ec3fd24dc38a03eea.png",&#xD;					"rotationCenterX": 15,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Tera",&#xD;		"md5": "b54a4a9087435863ab6f6c908f1cac99.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"fantasy",&#xD;			"space",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Tera",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tera-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b54a4a9087435863ab6f6c908f1cac99.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 63&#xD;				},&#xD;				{&#xD;					"costumeName": "tera-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "1e6b3a29351cda80d1a70a3cc0e499f2.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 64&#xD;				},&#xD;				{&#xD;					"costumeName": "tera-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7edf116cbb7111292361431521ae699e.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 63&#xD;				},&#xD;				{&#xD;					"costumeName": "tera-d",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7c3c9c8b5f4ac77de2036175712a777a.svg",&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 63&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Text",&#xD;		"md5": "5ebbfead1d5728f6e93a4259b699f2e9.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"letters",&#xD;			"things",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			4,&#xD;			0&#xD;		],&#xD;		"json": {&#xD;			"objName": "Text",&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "text awesome",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5ebbfead1d5728f6e93a4259b699f2e9.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 109,&#xD;					"rotationCenterY": 32&#xD;				},&#xD;				{&#xD;					"costumeName": "text keep scratching",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b3de9a77e2c1bb2f3e29f29a03d869ea.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 135,&#xD;					"rotationCenterY": 24&#xD;				},&#xD;				{&#xD;					"costumeName": "text valentine&apos;s day",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a765b830814192ab323b5893a65cabfa.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 172,&#xD;					"rotationCenterY": 30&#xD;				},&#xD;				{&#xD;					"costumeName": "text Halloween",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7aee725d72bc077424690a0acce8589b.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 165,&#xD;					"rotationCenterY": 34&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {},&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "boing",&#xD;					"soundID": 0,&#xD;					"md5": "53a3c2e27d1fb5fdb14aaf0cb41e7889.wav",&#xD;					"sampleCount": 6804,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "chomp",&#xD;					"soundID": 1,&#xD;					"md5": "0b1e3033140d094563248e61de4039e5.wav",&#xD;					"sampleCount": 2912,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "gong",&#xD;					"soundID": 2,&#xD;					"md5": "6af567714db37721a11c55d2a2648aec.wav",&#xD;					"sampleCount": 46848,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": 3,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "space ripple",&#xD;					"soundID": 4,&#xD;					"md5": "ff8b8c3bf841a11fd5fe3afaa92be1b5.wav",&#xD;					"sampleCount": 41149,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "beeps",&#xD;					"soundID": 5,&#xD;					"md5": "3be0a558370fedba3a6b315e0ca15b33.wav",&#xD;					"sampleCount": 9536,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "woof",&#xD;					"soundID": 6,&#xD;					"md5": "cd8fa8390b0efdd281882533fbfcfcfb.wav",&#xD;					"sampleCount": 3168,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "squawk",&#xD;					"soundID": 7,&#xD;					"md5": "e140d7ff07de8fa35c3d1595bba835ac.wav",&#xD;					"sampleCount": 8208,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "cheer",&#xD;					"soundID": 8,&#xD;					"md5": "4b36eebf22be4667fc2f15b78c805b4c.wav",&#xD;					"sampleCount": 62528,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "wub",&#xD;					"soundID": 9,&#xD;					"md5": "e1f32c057411da4237181ce72ae15d23.wav",&#xD;					"sampleCount": 7392,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "hey",&#xD;					"soundID": 10,&#xD;					"md5": "ec7c272faa862c9f8f731792e686e3c9.wav",&#xD;					"sampleCount": 5414,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": 11,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "dance loop",&#xD;					"soundID": 12,&#xD;					"md5": "e936679bac519b1df3ddea3f5db7594f.wav",&#xD;					"sampleCount": 92800,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "funky loop",&#xD;					"soundID": 13,&#xD;					"md5": "fb56022366d21b299cbc3fd5e16000c2.wav",&#xD;					"sampleCount": 44748,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			]&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Trampoline",&#xD;		"md5": "20b16bcb61396df304cad5e8886ceb46.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Trampoline",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "trampoline",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "20b16bcb61396df304cad5e8886ceb46.png",&#xD;					"rotationCenterX": 100,&#xD;					"rotationCenterY": 41&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Tree1",&#xD;		"md5": "8c40e2662c55d17bc384f47165ac43c1.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Tree1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "tom drum",&#xD;					"soundID": -1,&#xD;					"md5": "5a8b8678d37a860dd6c08082d5cda3c2.wav",&#xD;					"sampleCount": 35803,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tree1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "8c40e2662c55d17bc384f47165ac43c1.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 77,&#xD;					"rotationCenterY": 126&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.95,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Tree2",&#xD;		"md5": "d4cafdb83f5ff518383f7174817243e6.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Tree2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tree2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "d4cafdb83f5ff518383f7174817243e6.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 82,&#xD;					"rotationCenterY": 104&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 0.9,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Tree-lights",&#xD;		"md5": "177682396be2961367a50289a5552314.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"holiday",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Tree-lights",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "tree-lights-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "177682396be2961367a50289a5552314.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 59,&#xD;					"rotationCenterY": 77&#xD;				},&#xD;				{&#xD;					"costumeName": "tree-lights-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "b0282c029046fd1ed0541675911fe8bb.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 58,&#xD;					"rotationCenterY": 76&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1.3000000000000005,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Trees",&#xD;		"md5": "866ed2c2971bb04157e14e935ac8521c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"city",&#xD;			"flying",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Trees",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "trees-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "866ed2c2971bb04157e14e935ac8521c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 94&#xD;				},&#xD;				{&#xD;					"costumeName": "trees-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f1393dde1bb0fc512577995b27616d86.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 36,&#xD;					"rotationCenterY": 87&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Trombone",&#xD;		"md5": "7d7098a45ab54def8d919141e90db4c5.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Trombone",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C trombone",&#xD;					"soundID": -1,&#xD;					"md5": "821b23a489201a0f21f47ba8528ba47f.wav",&#xD;					"sampleCount": 19053,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D trombone",&#xD;					"soundID": -1,&#xD;					"md5": "f3afca380ba74372d611d3f518c2f35b.wav",&#xD;					"sampleCount": 17339,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E trombone",&#xD;					"soundID": -1,&#xD;					"md5": "c859fb0954acaa25c4b329df5fb76434.wav",&#xD;					"sampleCount": 16699,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F trombone",&#xD;					"soundID": -1,&#xD;					"md5": "d6758470457aac2aa712717a676a5163.wav",&#xD;					"sampleCount": 19373,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G trombone",&#xD;					"soundID": -1,&#xD;					"md5": "9436fd7a0eacb4a6067e7db14236dde1.wav",&#xD;					"sampleCount": 17179,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A trombone",&#xD;					"soundID": -1,&#xD;					"md5": "863ccc8ba66e6dabbce2a1261c22be0f.wav",&#xD;					"sampleCount": 17227,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "B trombone",&#xD;					"soundID": -1,&#xD;					"md5": "85b663229525b73d9f6647f78eb23e0a.wav",&#xD;					"sampleCount": 15522,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 trombone",&#xD;					"soundID": -1,&#xD;					"md5": "68aec107bd3633b2ee40c532eedc3897.wav",&#xD;					"sampleCount": 13904,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "trombone-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "7d7098a45ab54def8d919141e90db4c5.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 43&#xD;				},&#xD;				{&#xD;					"costumeName": "trombone-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "08edef976dbc09e8b62bce0f4607ea4a.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 73,&#xD;					"rotationCenterY": 43&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Trumpet",&#xD;		"md5": "3bcbd84df7924b6f97a2fa5d9bce56c8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			8&#xD;		],&#xD;		"json": {&#xD;			"objName": "Trumpet",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "8970afcdc4e47bb54959a81fe27522bd.wav",&#xD;					"sampleCount": 13118,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "D trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "0b1345b8fe2ba3076fedb4f3ae48748a.wav",&#xD;					"sampleCount": 12702,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "E trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "494295a92314cadb220945a6711c568c.wav",&#xD;					"sampleCount": 8680,&#xD;					"rate": 22050,&#xD;					"format": "adpcm"&#xD;				},&#xD;				{&#xD;					"soundName": "F trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "5fa3108b119ca266029b4caa340a7cd0.wav",&#xD;					"sampleCount": 12766,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "e84afda25975f14b364118591538ccf4.wav",&#xD;					"sampleCount": 14640,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "d2dd6b4372ca17411965dc92d52b2172.wav",&#xD;					"sampleCount": 13911,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "B trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "cad2bc57729942ed9b605145fc9ea65d.wav",&#xD;					"sampleCount": 14704,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "C2 trumpet",&#xD;					"soundID": -1,&#xD;					"md5": "df08249ed5446cc5e10b7ac62faac89b.wav",&#xD;					"sampleCount": 15849,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "trumpet-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "3bcbd84df7924b6f97a2fa5d9bce56c8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 25&#xD;				},&#xD;				{&#xD;					"costumeName": "trumpet-a2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5c0db80c63a72e8ab07d047183575378.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 84,&#xD;					"rotationCenterY": 25&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Ukulele",&#xD;		"md5": "39215565394d6280c6c81e7ad86c7ca0.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"music",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			4&#xD;		],&#xD;		"json": {&#xD;			"objName": "Ukulele",&#xD;			"variables": [&#xD;				{&#xD;					"name": "counter",&#xD;					"value": 5,&#xD;					"isPersistent": false&#xD;				}&#xD;			],&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "C major ukulele",&#xD;					"soundID": -1,&#xD;					"md5": "aa2ca112507b59b5337f341aaa75fb08.wav",&#xD;					"sampleCount": 18203,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "F major ukulele",&#xD;					"soundID": -1,&#xD;					"md5": "cd0ab5d1b0120c6ed92a1654ccf81376.wav",&#xD;					"sampleCount": 18235,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "A minor ukulele",&#xD;					"soundID": -1,&#xD;					"md5": "69d25af0fd065da39c71439174efc589.wav",&#xD;					"sampleCount": 18267,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				},&#xD;				{&#xD;					"soundName": "G ukulele",&#xD;					"soundID": -1,&#xD;					"md5": "d20218f92ee606277658959005538e2d.wav",&#xD;					"sampleCount": 18235,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "ukulele",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "39215565394d6280c6c81e7ad86c7ca0.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 30,&#xD;					"rotationCenterY": 78&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Umbrella",&#xD;		"md5": "2ae6d0c3a8cb500e63c11a95eee80fa7.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"photo",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Umbrella",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "umbrella",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "2ae6d0c3a8cb500e63c11a95eee80fa7.png",&#xD;					"rotationCenterX": 85,&#xD;					"rotationCenterY": 62&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Unicorn",&#xD;		"md5": "a04def38351e7fd805226345cac4fbfe.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"flying",&#xD;			"fantasy",&#xD;			"drawing",&#xD;			"castle",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Unicorn",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "unicorn",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "a04def38351e7fd805226345cac4fbfe.svg",&#xD;					"rotationCenterX": 75,&#xD;					"rotationCenterY": 75&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Vest",&#xD;		"md5": "f8285ca9564451c62a0e3d75b8a714e8.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"dress-up",&#xD;			"things",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Vest",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "vest-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "f8285ca9564451c62a0e3d75b8a714e8.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 62&#xD;				},&#xD;				{&#xD;					"costumeName": "vest-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "77d553eea3910ab8f5bac3d2da601061.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 18,&#xD;					"rotationCenterY": 62&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": true,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Wanda",&#xD;		"md5": "450bc8fbd5ab6bc2e83576aad58cd07c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Wanda",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "wanda",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "450bc8fbd5ab6bc2e83576aad58cd07c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 49,&#xD;					"rotationCenterY": 68&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Watermelon",&#xD;		"md5": "26fecef75cf3b6e0d98bff5c06475036.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"things",&#xD;			"vector",&#xD;			"drawing"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			3,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Watermelon",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "meow",&#xD;					"soundID": -1,&#xD;					"md5": "83c36d806dc92327b9e7049a565c6bff.wav",&#xD;					"sampleCount": 18688,&#xD;					"rate": 22050,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "watermelon-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "26fecef75cf3b6e0d98bff5c06475036.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 40,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "watermelon-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "fbdaf4d1d349edd3ddf3a1c4528aa9ec.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 22,&#xD;					"rotationCenterY": 27&#xD;				},&#xD;				{&#xD;					"costumeName": "watermelon-c",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "5976c10412306fc093c1d1930fa05119.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 21,&#xD;					"rotationCenterY": 15&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Witch",&#xD;		"md5": "c991196a708294535a1dbdce7189c23c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"flying",&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Witch",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "witch",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "c991196a708294535a1dbdce7189c23c.svg",&#xD;					"rotationCenterX": 74,&#xD;					"rotationCenterY": 59&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Wizard",&#xD;		"md5": "4df1dd733f6ee4a2d8842478ac2c4661.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Wizard",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "wizard",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "4df1dd733f6ee4a2d8842478ac2c4661.svg",&#xD;					"rotationCenterX": 76,&#xD;					"rotationCenterY": 86&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Wizard1",&#xD;		"md5": "e085c97691d16f0cc8a595ce1137e26c.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Wizard1",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "wizard1",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "e085c97691d16f0cc8a595ce1137e26c.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 134,&#xD;					"rotationCenterY": 153&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Wizard2",&#xD;		"md5": "6db4d9e4229dc50a1b1c91c3c8311d40.svg",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"fantasy",&#xD;			"castle",&#xD;			"drawing",&#xD;			"vector"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			1,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Wizard2",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "wizard2",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6db4d9e4229dc50a1b1c91c3c8311d40.svg",&#xD;					"bitmapResolution": 1,&#xD;					"rotationCenterX": 69,&#xD;					"rotationCenterY": 93&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 0,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	},&#xD;	{&#xD;		"name": "Zara",&#xD;		"md5": "ad7b145d46e933125bd9c928d784fcdc.png",&#xD;		"type": "sprite",&#xD;		"tags": [&#xD;			"people",&#xD;			"city",&#xD;			"drawing",&#xD;			"bitmap"&#xD;		],&#xD;		"info": [&#xD;			0,&#xD;			2,&#xD;			1&#xD;		],&#xD;		"json": {&#xD;			"objName": "Zara",&#xD;			"sounds": [&#xD;				{&#xD;					"soundName": "pop",&#xD;					"soundID": -1,&#xD;					"md5": "83a9787d4cb6f3b7632b4ddfebf74367.wav",&#xD;					"sampleCount": 258,&#xD;					"rate": 11025,&#xD;					"format": ""&#xD;				}&#xD;			],&#xD;			"costumes": [&#xD;				{&#xD;					"costumeName": "zara-a",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "ad7b145d46e933125bd9c928d784fcdc.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 50,&#xD;					"rotationCenterY": 170&#xD;				},&#xD;				{&#xD;					"costumeName": "zara-b",&#xD;					"baseLayerID": -1,&#xD;					"baseLayerMD5": "6fba793b512069a67096a82aa85a5c12.png",&#xD;					"bitmapResolution": 2,&#xD;					"rotationCenterX": 86,&#xD;					"rotationCenterY": 168&#xD;				}&#xD;			],&#xD;			"currentCostumeIndex": 1,&#xD;			"scratchX": 0,&#xD;			"scratchY": 0,&#xD;			"scale": 1,&#xD;			"direction": 90,&#xD;			"rotationStyle": "normal",&#xD;			"isDraggable": false,&#xD;			"indexInLibrary": 100000,&#xD;			"visible": true,&#xD;			"spriteInfo": {}&#xD;		}&#xD;	}&#xD;];&#xD;&#xD;/***/ }),&#xD;/* 567 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;/* (ignored) */&#xD;&#xD;/***/ }),&#xD;/* 568 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;/* (ignored) */&#xD;&#xD;/***/ })&#xD;],[253]);&#xD;//# sourceMappingURL=gui.js.map</l></variable><variable name="index.html"><l>&lt;!DOCTYPE html&gt;&#xD;&lt;html&gt;&#xD;  &lt;head&gt;&#xD;    &lt;meta charset="UTF-8"&gt;&#xD;    &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;&#xD;    &lt;title&gt;Scratch 3.0 GUI&lt;/title&gt;&#xD;  &lt;/head&gt;&#xD;  &lt;body&gt;&#xD;  &lt;script type="text/javascript" src="lib.min.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="gui.js"&gt;&lt;/script&gt;&lt;/body&gt;&#xD;&lt;/html&gt;&#xD;</l></variable><variable name="lib.min.js"><l>/******/ (function(modules) { // webpackBootstrap&#xD;/******/ 	// install a JSONP callback for chunk loading&#xD;/******/ 	var parentJsonpFunction = window["webpackJsonp"];&#xD;/******/ 	window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {&#xD;/******/ 		// add "moreModules" to the modules object,&#xD;/******/ 		// then flag all "chunkIds" as loaded and fire callback&#xD;/******/ 		var moduleId, chunkId, i = 0, resolves = [], result;&#xD;/******/ 		for(;i &lt; chunkIds.length; i++) {&#xD;/******/ 			chunkId = chunkIds[i];&#xD;/******/ 			if(installedChunks[chunkId]) {&#xD;/******/ 				resolves.push(installedChunks[chunkId][0]);&#xD;/******/ 			}&#xD;/******/ 			installedChunks[chunkId] = 0;&#xD;/******/ 		}&#xD;/******/ 		for(moduleId in moreModules) {&#xD;/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {&#xD;/******/ 				modules[moduleId] = moreModules[moduleId];&#xD;/******/ 			}&#xD;/******/ 		}&#xD;/******/ 		if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);&#xD;/******/ 		while(resolves.length) {&#xD;/******/ 			resolves.shift()();&#xD;/******/ 		}&#xD;/******/ 		if(executeModules) {&#xD;/******/ 			for(i=0; i &lt; executeModules.length; i++) {&#xD;/******/ 				result = __webpack_require__(__webpack_require__.s = executeModules[i]);&#xD;/******/ 			}&#xD;/******/ 		}&#xD;/******/ 		return result;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// The module cache&#xD;/******/ 	var installedModules = {};&#xD;/******/&#xD;/******/ 	// objects to store loaded and loading chunks&#xD;/******/ 	var installedChunks = {&#xD;/******/ 		1: 0&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// The require function&#xD;/******/ 	function __webpack_require__(moduleId) {&#xD;/******/&#xD;/******/ 		// Check if module is in cache&#xD;/******/ 		if(installedModules[moduleId]) {&#xD;/******/ 			return installedModules[moduleId].exports;&#xD;/******/ 		}&#xD;/******/ 		// Create a new module (and put it into the cache)&#xD;/******/ 		var module = installedModules[moduleId] = {&#xD;/******/ 			i: moduleId,&#xD;/******/ 			l: false,&#xD;/******/ 			exports: {}&#xD;/******/ 		};&#xD;/******/&#xD;/******/ 		// Execute the module function&#xD;/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);&#xD;/******/&#xD;/******/ 		// Flag the module as loaded&#xD;/******/ 		module.l = true;&#xD;/******/&#xD;/******/ 		// Return the exports of the module&#xD;/******/ 		return module.exports;&#xD;/******/ 	}&#xD;/******/&#xD;/******/ 	// This file contains only the entry chunk.&#xD;/******/ 	// The chunk loading function for additional chunks&#xD;/******/ 	__webpack_require__.e = function requireEnsure(chunkId) {&#xD;/******/ 		if(installedChunks[chunkId] === 0) {&#xD;/******/ 			return Promise.resolve();&#xD;/******/ 		}&#xD;/******/&#xD;/******/ 		// a Promise means "currently loading".&#xD;/******/ 		if(installedChunks[chunkId]) {&#xD;/******/ 			return installedChunks[chunkId][2];&#xD;/******/ 		}&#xD;/******/&#xD;/******/ 		// setup Promise in chunk cache&#xD;/******/ 		var promise = new Promise(function(resolve, reject) {&#xD;/******/ 			installedChunks[chunkId] = [resolve, reject];&#xD;/******/ 		});&#xD;/******/ 		installedChunks[chunkId][2] = promise;&#xD;/******/&#xD;/******/ 		// start chunk loading&#xD;/******/ 		var head = document.getElementsByTagName(&apos;head&apos;)[0];&#xD;/******/ 		var script = document.createElement(&apos;script&apos;);&#xD;/******/ 		script.type = &apos;text/javascript&apos;;&#xD;/******/ 		script.charset = &apos;utf-8&apos;;&#xD;/******/ 		script.async = true;&#xD;/******/ 		script.timeout = 120000;&#xD;/******/&#xD;/******/ 		if (__webpack_require__.nc) {&#xD;/******/ 			script.setAttribute("nonce", __webpack_require__.nc);&#xD;/******/ 		}&#xD;/******/ 		script.src = __webpack_require__.p + "" + chunkId + ".js";&#xD;/******/ 		var timeout = setTimeout(onScriptComplete, 120000);&#xD;/******/ 		script.onerror = script.onload = onScriptComplete;&#xD;/******/ 		function onScriptComplete() {&#xD;/******/ 			// avoid mem leaks in IE.&#xD;/******/ 			script.onerror = script.onload = null;&#xD;/******/ 			clearTimeout(timeout);&#xD;/******/ 			var chunk = installedChunks[chunkId];&#xD;/******/ 			if(chunk !== 0) {&#xD;/******/ 				if(chunk) {&#xD;/******/ 					chunk[1](new Error(&apos;Loading chunk &apos; + chunkId + &apos; failed.&apos;));&#xD;/******/ 				}&#xD;/******/ 				installedChunks[chunkId] = undefined;&#xD;/******/ 			}&#xD;/******/ 		};&#xD;/******/ 		head.appendChild(script);&#xD;/******/&#xD;/******/ 		return promise;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// expose the modules object (__webpack_modules__)&#xD;/******/ 	__webpack_require__.m = modules;&#xD;/******/&#xD;/******/ 	// expose the module cache&#xD;/******/ 	__webpack_require__.c = installedModules;&#xD;/******/&#xD;/******/ 	// identity function for calling harmony imports with the correct context&#xD;/******/ 	__webpack_require__.i = function(value) { return value; };&#xD;/******/&#xD;/******/ 	// define getter function for harmony exports&#xD;/******/ 	__webpack_require__.d = function(exports, name, getter) {&#xD;/******/ 		if(!__webpack_require__.o(exports, name)) {&#xD;/******/ 			Object.defineProperty(exports, name, {&#xD;/******/ 				configurable: false,&#xD;/******/ 				enumerable: true,&#xD;/******/ 				get: getter&#xD;/******/ 			});&#xD;/******/ 		}&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// getDefaultExport function for compatibility with non-harmony modules&#xD;/******/ 	__webpack_require__.n = function(module) {&#xD;/******/ 		var getter = module &amp;&amp; module.__esModule ?&#xD;/******/ 			function getDefault() { return module[&apos;default&apos;]; } :&#xD;/******/ 			function getModuleExports() { return module; };&#xD;/******/ 		__webpack_require__.d(getter, &apos;a&apos;, getter);&#xD;/******/ 		return getter;&#xD;/******/ 	};&#xD;/******/&#xD;/******/ 	// Object.prototype.hasOwnProperty.call&#xD;/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };&#xD;/******/&#xD;/******/ 	// __webpack_public_path__&#xD;/******/ 	__webpack_require__.p = "";&#xD;/******/&#xD;/******/ 	// on error function for async loading&#xD;/******/ 	__webpack_require__.oe = function(err) { console.error(err); throw err; };&#xD;/******/&#xD;/******/ 	// Load entry module and return exports&#xD;/******/ 	return __webpack_require__(__webpack_require__.s = 569);&#xD;/******/ })&#xD;/************************************************************************/&#xD;/******/ ([&#xD;/* 0 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = __webpack_require__(43);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 1 */,&#xD;/* 2 */,&#xD;/* 3 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Use invariant() to assert state which your program assumes to be true.&#xD; *&#xD; * Provide sprintf-style format (only %s is supported) and arguments&#xD; * to provide information about what broke and what you were&#xD; * expecting.&#xD; *&#xD; * The invariant message will be stripped in production, but the invariant&#xD; * will remain to ensure logic does not differ in production.&#xD; */&#xD;&#xD;var validateFormat = function validateFormat(format) {};&#xD;&#xD;if (true) {&#xD;  validateFormat = function validateFormat(format) {&#xD;    if (format === undefined) {&#xD;      throw new Error(&apos;invariant requires an error message argument&apos;);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;function invariant(condition, format, a, b, c, d, e, f) {&#xD;  validateFormat(format);&#xD;&#xD;  if (!condition) {&#xD;    var error;&#xD;    if (format === undefined) {&#xD;      error = new Error(&apos;Minified exception occurred; use the non-minified dev environment &apos; + &apos;for the full error message and additional helpful warnings.&apos;);&#xD;    } else {&#xD;      var args = [a, b, c, d, e, f];&#xD;      var argIndex = 0;&#xD;      error = new Error(format.replace(/%s/g, function () {&#xD;        return args[argIndex++];&#xD;      }));&#xD;      error.name = &apos;Invariant Violation&apos;;&#xD;    }&#xD;&#xD;    error.framesToPop = 1; // we don&apos;t care about invariant&apos;s own frame&#xD;    throw error;&#xD;  }&#xD;}&#xD;&#xD;module.exports = invariant;&#xD;&#xD;/***/ }),&#xD;/* 4 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-2015, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;&#xD;/**&#xD; * Similar to invariant but only logs a warning if the condition is not met.&#xD; * This can be used to log issues in development environments in critical&#xD; * paths. Removing the logging code for production environments will keep the&#xD; * same logic and follow the same code paths.&#xD; */&#xD;&#xD;var warning = emptyFunction;&#xD;&#xD;if (true) {&#xD;  (function () {&#xD;    var printWarning = function printWarning(format) {&#xD;      for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {&#xD;        args[_key - 1] = arguments[_key];&#xD;      }&#xD;&#xD;      var argIndex = 0;&#xD;      var message = &apos;Warning: &apos; + format.replace(/%s/g, function () {&#xD;        return args[argIndex++];&#xD;      });&#xD;      if (typeof console !== &apos;undefined&apos;) {&#xD;        console.error(message);&#xD;      }&#xD;      try {&#xD;        // --- Welcome to debugging React ---&#xD;        // This error was thrown as a convenience so that you can use this stack&#xD;        // to find the callsite that caused this warning to fire.&#xD;        throw new Error(message);&#xD;      } catch (x) {}&#xD;    };&#xD;&#xD;    warning = function warning(condition, format) {&#xD;      if (format === undefined) {&#xD;        throw new Error(&apos;`warning(condition, format, ...args)` requires a warning &apos; + &apos;message argument&apos;);&#xD;      }&#xD;&#xD;      if (format.indexOf(&apos;Failed Composite propType: &apos;) === 0) {&#xD;        return; // Ignore CompositeComponent proptype check.&#xD;      }&#xD;&#xD;      if (!condition) {&#xD;        for (var _len2 = arguments.length, args = Array(_len2 &gt; 2 ? _len2 - 2 : 0), _key2 = 2; _key2 &lt; _len2; _key2++) {&#xD;          args[_key2 - 2] = arguments[_key2];&#xD;        }&#xD;&#xD;        printWarning.apply(undefined, [format].concat(args));&#xD;      }&#xD;    };&#xD;  })();&#xD;}&#xD;&#xD;module.exports = warning;&#xD;&#xD;/***/ }),&#xD;/* 5 */,&#xD;/* 6 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;/**&#xD; * WARNING: DO NOT manually require this module.&#xD; * This is a replacement for `invariant(...)` used by the error code system&#xD; * and will _only_ be required by the corresponding babel pass.&#xD; * It always throws.&#xD; */&#xD;&#xD;function reactProdInvariant(code) {&#xD;  var argCount = arguments.length - 1;&#xD;&#xD;  var message = &apos;Minified React error #&apos; + code + &apos;; visit &apos; + &apos;http://facebook.github.io/react/docs/error-decoder.html?invariant=&apos; + code;&#xD;&#xD;  for (var argIdx = 0; argIdx &lt; argCount; argIdx++) {&#xD;    message += &apos;&amp;args[]=&apos; + encodeURIComponent(arguments[argIdx + 1]);&#xD;  }&#xD;&#xD;  message += &apos; for the full message or use the non-minified dev environment&apos; + &apos; for full errors and additional helpful warnings.&apos;;&#xD;&#xD;  var error = new Error(message);&#xD;  error.name = &apos;Invariant Violation&apos;;&#xD;  error.framesToPop = 1; // we don&apos;t care about reactProdInvariant&apos;s own frame&#xD;&#xD;  throw error;&#xD;}&#xD;&#xD;module.exports = reactProdInvariant;&#xD;&#xD;/***/ }),&#xD;/* 7 */,&#xD;/* 8 */,&#xD;/* 9 */,&#xD;/* 10 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/*&#xD;object-assign&#xD;(c) Sindre Sorhus&#xD;@license MIT&#xD;*/&#xD;&#xD;&#xD;/* eslint-disable no-unused-vars */&#xD;var getOwnPropertySymbols = Object.getOwnPropertySymbols;&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;var propIsEnumerable = Object.prototype.propertyIsEnumerable;&#xD;&#xD;function toObject(val) {&#xD;	if (val === null || val === undefined) {&#xD;		throw new TypeError(&apos;Object.assign cannot be called with null or undefined&apos;);&#xD;	}&#xD;&#xD;	return Object(val);&#xD;}&#xD;&#xD;function shouldUseNative() {&#xD;	try {&#xD;		if (!Object.assign) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// Detect buggy property enumeration order in older V8 versions.&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=4118&#xD;		var test1 = new String(&apos;abc&apos;);  // eslint-disable-line no-new-wrappers&#xD;		test1[5] = &apos;de&apos;;&#xD;		if (Object.getOwnPropertyNames(test1)[0] === &apos;5&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=3056&#xD;		var test2 = {};&#xD;		for (var i = 0; i &lt; 10; i++) {&#xD;			test2[&apos;_&apos; + String.fromCharCode(i)] = i;&#xD;		}&#xD;		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {&#xD;			return test2[n];&#xD;		});&#xD;		if (order2.join(&apos;&apos;) !== &apos;0123456789&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		// https://bugs.chromium.org/p/v8/issues/detail?id=3056&#xD;		var test3 = {};&#xD;		&apos;abcdefghijklmnopqrst&apos;.split(&apos;&apos;).forEach(function (letter) {&#xD;			test3[letter] = letter;&#xD;		});&#xD;		if (Object.keys(Object.assign({}, test3)).join(&apos;&apos;) !==&#xD;				&apos;abcdefghijklmnopqrst&apos;) {&#xD;			return false;&#xD;		}&#xD;&#xD;		return true;&#xD;	} catch (err) {&#xD;		// We don&apos;t expect any of the above to throw, but better to be safe.&#xD;		return false;&#xD;	}&#xD;}&#xD;&#xD;module.exports = shouldUseNative() ? Object.assign : function (target, source) {&#xD;	var from;&#xD;	var to = toObject(target);&#xD;	var symbols;&#xD;&#xD;	for (var s = 1; s &lt; arguments.length; s++) {&#xD;		from = Object(arguments[s]);&#xD;&#xD;		for (var key in from) {&#xD;			if (hasOwnProperty.call(from, key)) {&#xD;				to[key] = from[key];&#xD;			}&#xD;		}&#xD;&#xD;		if (getOwnPropertySymbols) {&#xD;			symbols = getOwnPropertySymbols(from);&#xD;			for (var i = 0; i &lt; symbols.length; i++) {&#xD;				if (propIsEnumerable.call(from, symbols[i])) {&#xD;					to[symbols[i]] = from[symbols[i]];&#xD;				}&#xD;			}&#xD;		}&#xD;	}&#xD;&#xD;	return to;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 11 */,&#xD;/* 12 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;var ReactDOMComponentFlags = __webpack_require__(157);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;&#xD;var Flags = ReactDOMComponentFlags;&#xD;&#xD;var internalInstanceKey = &apos;__reactInternalInstance$&apos; + Math.random().toString(36).slice(2);&#xD;&#xD;/**&#xD; * Check if a given node should be cached.&#xD; */&#xD;function shouldPrecacheNode(node, nodeID) {&#xD;  return node.nodeType === 1 &amp;&amp; node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; react-text: &apos; + nodeID + &apos; &apos; || node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; react-empty: &apos; + nodeID + &apos; &apos;;&#xD;}&#xD;&#xD;/**&#xD; * Drill down (through composites and empty components) until we get a host or&#xD; * host text component.&#xD; *&#xD; * This is pretty polymorphic but unavoidable with the current structure we have&#xD; * for `_renderedChildren`.&#xD; */&#xD;function getRenderedHostOrTextFromComponent(component) {&#xD;  var rendered;&#xD;  while (rendered = component._renderedComponent) {&#xD;    component = rendered;&#xD;  }&#xD;  return component;&#xD;}&#xD;&#xD;/**&#xD; * Populate `_hostNode` on the rendered host/text component with the given&#xD; * DOM node. The passed `inst` can be a composite.&#xD; */&#xD;function precacheNode(inst, node) {&#xD;  var hostInst = getRenderedHostOrTextFromComponent(inst);&#xD;  hostInst._hostNode = node;&#xD;  node[internalInstanceKey] = hostInst;&#xD;}&#xD;&#xD;function uncacheNode(inst) {&#xD;  var node = inst._hostNode;&#xD;  if (node) {&#xD;    delete node[internalInstanceKey];&#xD;    inst._hostNode = null;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Populate `_hostNode` on each child of `inst`, assuming that the children&#xD; * match up with the DOM (element) children of `node`.&#xD; *&#xD; * We cache entire levels at once to avoid an n^2 problem where we access the&#xD; * children of a node sequentially and have to walk from the start to our target&#xD; * node every time.&#xD; *&#xD; * Since we update `_renderedChildren` and the actual DOM at (slightly)&#xD; * different times, we could race here and see a newer `_renderedChildren` than&#xD; * the DOM nodes we see. To avoid this, ReactMultiChild calls&#xD; * `prepareToManageChildren` before we change `_renderedChildren`, at which&#xD; * time the container&apos;s child nodes are always cached (until it unmounts).&#xD; */&#xD;function precacheChildNodes(inst, node) {&#xD;  if (inst._flags &amp; Flags.hasCachedChildNodes) {&#xD;    return;&#xD;  }&#xD;  var children = inst._renderedChildren;&#xD;  var childNode = node.firstChild;&#xD;  outer: for (var name in children) {&#xD;    if (!children.hasOwnProperty(name)) {&#xD;      continue;&#xD;    }&#xD;    var childInst = children[name];&#xD;    var childID = getRenderedHostOrTextFromComponent(childInst)._domID;&#xD;    if (childID === 0) {&#xD;      // We&apos;re currently unmounting this child in ReactMultiChild; skip it.&#xD;      continue;&#xD;    }&#xD;    // We assume the child nodes are in the same order as the child instances.&#xD;    for (; childNode !== null; childNode = childNode.nextSibling) {&#xD;      if (shouldPrecacheNode(childNode, childID)) {&#xD;        precacheNode(childInst, childNode);&#xD;        continue outer;&#xD;      }&#xD;    }&#xD;    // We reached the end of the DOM children without finding an ID match.&#xD;     true ?  true ? invariant(false, &apos;Unable to find element with ID %s.&apos;, childID) : _prodInvariant(&apos;32&apos;, childID) : void 0;&#xD;  }&#xD;  inst._flags |= Flags.hasCachedChildNodes;&#xD;}&#xD;&#xD;/**&#xD; * Given a DOM node, return the closest ReactDOMComponent or&#xD; * ReactDOMTextComponent instance ancestor.&#xD; */&#xD;function getClosestInstanceFromNode(node) {&#xD;  if (node[internalInstanceKey]) {&#xD;    return node[internalInstanceKey];&#xD;  }&#xD;&#xD;  // Walk up the tree until we find an ancestor whose instance we have cached.&#xD;  var parents = [];&#xD;  while (!node[internalInstanceKey]) {&#xD;    parents.push(node);&#xD;    if (node.parentNode) {&#xD;      node = node.parentNode;&#xD;    } else {&#xD;      // Top of the tree. This node must not be part of a React tree (or is&#xD;      // unmounted, potentially).&#xD;      return null;&#xD;    }&#xD;  }&#xD;&#xD;  var closest;&#xD;  var inst;&#xD;  for (; node &amp;&amp; (inst = node[internalInstanceKey]); node = parents.pop()) {&#xD;    closest = inst;&#xD;    if (parents.length) {&#xD;      precacheChildNodes(inst, node);&#xD;    }&#xD;  }&#xD;&#xD;  return closest;&#xD;}&#xD;&#xD;/**&#xD; * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent&#xD; * instance, or null if the node was not rendered by this React.&#xD; */&#xD;function getInstanceFromNode(node) {&#xD;  var inst = getClosestInstanceFromNode(node);&#xD;  if (inst != null &amp;&amp; inst._hostNode === node) {&#xD;    return inst;&#xD;  } else {&#xD;    return null;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding&#xD; * DOM node.&#xD; */&#xD;function getNodeFromInstance(inst) {&#xD;  // Without this first invariant, passing a non-DOM-component triggers the next&#xD;  // invariant for a missing parent, which is super confusing.&#xD;  !(inst._hostNode !== undefined) ?  true ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;&#xD;&#xD;  if (inst._hostNode) {&#xD;    return inst._hostNode;&#xD;  }&#xD;&#xD;  // Walk up the tree until we find an ancestor whose DOM node we have cached.&#xD;  var parents = [];&#xD;  while (!inst._hostNode) {&#xD;    parents.push(inst);&#xD;    !inst._hostParent ?  true ? invariant(false, &apos;React DOM tree root should always have a node reference.&apos;) : _prodInvariant(&apos;34&apos;) : void 0;&#xD;    inst = inst._hostParent;&#xD;  }&#xD;&#xD;  // Now parents contains each ancestor that does *not* have a cached native&#xD;  // node, and `inst` is the deepest ancestor that does.&#xD;  for (; parents.length; inst = parents.pop()) {&#xD;    precacheChildNodes(inst, inst._hostNode);&#xD;  }&#xD;&#xD;  return inst._hostNode;&#xD;}&#xD;&#xD;var ReactDOMComponentTree = {&#xD;  getClosestInstanceFromNode: getClosestInstanceFromNode,&#xD;  getInstanceFromNode: getInstanceFromNode,&#xD;  getNodeFromInstance: getNodeFromInstance,&#xD;  precacheChildNodes: precacheChildNodes,&#xD;  precacheNode: precacheNode,&#xD;  uncacheNode: uncacheNode&#xD;};&#xD;&#xD;module.exports = ReactDOMComponentTree;&#xD;&#xD;/***/ }),&#xD;/* 13 */,&#xD;/* 14 */&#xD;/***/ (function(module, exports) {&#xD;&#xD;// shim for using process in browser&#xD;var process = module.exports = {};&#xD;&#xD;// cached from whatever global is present so that test runners that stub it&#xD;// don&apos;t break things.  But we need to wrap it in a try catch in case it is&#xD;// wrapped in strict mode code which doesn&apos;t define any globals.  It&apos;s inside a&#xD;// function because try/catches deoptimize in certain engines.&#xD;&#xD;var cachedSetTimeout;&#xD;var cachedClearTimeout;&#xD;&#xD;function defaultSetTimout() {&#xD;    throw new Error(&apos;setTimeout has not been defined&apos;);&#xD;}&#xD;function defaultClearTimeout () {&#xD;    throw new Error(&apos;clearTimeout has not been defined&apos;);&#xD;}&#xD;(function () {&#xD;    try {&#xD;        if (typeof setTimeout === &apos;function&apos;) {&#xD;            cachedSetTimeout = setTimeout;&#xD;        } else {&#xD;            cachedSetTimeout = defaultSetTimout;&#xD;        }&#xD;    } catch (e) {&#xD;        cachedSetTimeout = defaultSetTimout;&#xD;    }&#xD;    try {&#xD;        if (typeof clearTimeout === &apos;function&apos;) {&#xD;            cachedClearTimeout = clearTimeout;&#xD;        } else {&#xD;            cachedClearTimeout = defaultClearTimeout;&#xD;        }&#xD;    } catch (e) {&#xD;        cachedClearTimeout = defaultClearTimeout;&#xD;    }&#xD;} ())&#xD;function runTimeout(fun) {&#xD;    if (cachedSetTimeout === setTimeout) {&#xD;        //normal enviroments in sane situations&#xD;        return setTimeout(fun, 0);&#xD;    }&#xD;    // if setTimeout wasn&apos;t available but was latter defined&#xD;    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) &amp;&amp; setTimeout) {&#xD;        cachedSetTimeout = setTimeout;&#xD;        return setTimeout(fun, 0);&#xD;    }&#xD;    try {&#xD;        // when when somebody has screwed with setTimeout but no I.E. maddness&#xD;        return cachedSetTimeout(fun, 0);&#xD;    } catch(e){&#xD;        try {&#xD;            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t trust the global object when called normally&#xD;            return cachedSetTimeout.call(null, fun, 0);&#xD;        } catch(e){&#xD;            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error&#xD;            return cachedSetTimeout.call(this, fun, 0);&#xD;        }&#xD;    }&#xD;&#xD;&#xD;}&#xD;function runClearTimeout(marker) {&#xD;    if (cachedClearTimeout === clearTimeout) {&#xD;        //normal enviroments in sane situations&#xD;        return clearTimeout(marker);&#xD;    }&#xD;    // if clearTimeout wasn&apos;t available but was latter defined&#xD;    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) &amp;&amp; clearTimeout) {&#xD;        cachedClearTimeout = clearTimeout;&#xD;        return clearTimeout(marker);&#xD;    }&#xD;    try {&#xD;        // when when somebody has screwed with setTimeout but no I.E. maddness&#xD;        return cachedClearTimeout(marker);&#xD;    } catch (e){&#xD;        try {&#xD;            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t  trust the global object when called normally&#xD;            return cachedClearTimeout.call(null, marker);&#xD;        } catch (e){&#xD;            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error.&#xD;            // Some versions of I.E. have different rules for clearTimeout vs setTimeout&#xD;            return cachedClearTimeout.call(this, marker);&#xD;        }&#xD;    }&#xD;&#xD;&#xD;&#xD;}&#xD;var queue = [];&#xD;var draining = false;&#xD;var currentQueue;&#xD;var queueIndex = -1;&#xD;&#xD;function cleanUpNextTick() {&#xD;    if (!draining || !currentQueue) {&#xD;        return;&#xD;    }&#xD;    draining = false;&#xD;    if (currentQueue.length) {&#xD;        queue = currentQueue.concat(queue);&#xD;    } else {&#xD;        queueIndex = -1;&#xD;    }&#xD;    if (queue.length) {&#xD;        drainQueue();&#xD;    }&#xD;}&#xD;&#xD;function drainQueue() {&#xD;    if (draining) {&#xD;        return;&#xD;    }&#xD;    var timeout = runTimeout(cleanUpNextTick);&#xD;    draining = true;&#xD;&#xD;    var len = queue.length;&#xD;    while(len) {&#xD;        currentQueue = queue;&#xD;        queue = [];&#xD;        while (++queueIndex &lt; len) {&#xD;            if (currentQueue) {&#xD;                currentQueue[queueIndex].run();&#xD;            }&#xD;        }&#xD;        queueIndex = -1;&#xD;        len = queue.length;&#xD;    }&#xD;    currentQueue = null;&#xD;    draining = false;&#xD;    runClearTimeout(timeout);&#xD;}&#xD;&#xD;process.nextTick = function (fun) {&#xD;    var args = new Array(arguments.length - 1);&#xD;    if (arguments.length &gt; 1) {&#xD;        for (var i = 1; i &lt; arguments.length; i++) {&#xD;            args[i - 1] = arguments[i];&#xD;        }&#xD;    }&#xD;    queue.push(new Item(fun, args));&#xD;    if (queue.length === 1 &amp;&amp; !draining) {&#xD;        runTimeout(drainQueue);&#xD;    }&#xD;};&#xD;&#xD;// v8 likes predictible objects&#xD;function Item(fun, array) {&#xD;    this.fun = fun;&#xD;    this.array = array;&#xD;}&#xD;Item.prototype.run = function () {&#xD;    this.fun.apply(null, this.array);&#xD;};&#xD;process.title = &apos;browser&apos;;&#xD;process.browser = true;&#xD;process.env = {};&#xD;process.argv = [];&#xD;process.version = &apos;&apos;; // empty string to avoid regexp issues&#xD;process.versions = {};&#xD;&#xD;function noop() {}&#xD;&#xD;process.on = noop;&#xD;process.addListener = noop;&#xD;process.once = noop;&#xD;process.off = noop;&#xD;process.removeListener = noop;&#xD;process.removeAllListeners = noop;&#xD;process.emit = noop;&#xD;&#xD;process.binding = function (name) {&#xD;    throw new Error(&apos;process.binding is not supported&apos;);&#xD;};&#xD;&#xD;process.cwd = function () { return &apos;/&apos; };&#xD;process.chdir = function (dir) {&#xD;    throw new Error(&apos;process.chdir is not supported&apos;);&#xD;};&#xD;process.umask = function() { return 0; };&#xD;&#xD;&#xD;/***/ }),&#xD;/* 15 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var canUseDOM = !!(typeof window !== &apos;undefined&apos; &amp;&amp; window.document &amp;&amp; window.document.createElement);&#xD;&#xD;/**&#xD; * Simple, lightweight module assisting with the detection and context of&#xD; * Worker. Helps avoid circular dependencies and allows code to reason about&#xD; * whether or not they are in a Worker, even if they never include the main&#xD; * `ReactWorker` dependency.&#xD; */&#xD;var ExecutionEnvironment = {&#xD;&#xD;  canUseDOM: canUseDOM,&#xD;&#xD;  canUseWorkers: typeof Worker !== &apos;undefined&apos;,&#xD;&#xD;  canUseEventListeners: canUseDOM &amp;&amp; !!(window.addEventListener || window.attachEvent),&#xD;&#xD;  canUseViewport: canUseDOM &amp;&amp; !!window.screen,&#xD;&#xD;  isInWorker: !canUseDOM // For now, this is true - might change in the future.&#xD;&#xD;};&#xD;&#xD;module.exports = ExecutionEnvironment;&#xD;&#xD;/***/ }),&#xD;/* 16 */,&#xD;/* 17 */,&#xD;/* 18 */,&#xD;/* 19 */,&#xD;/* 20 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;function isNative(fn) {&#xD;  // Based on isNative() from Lodash&#xD;  var funcToString = Function.prototype.toString;&#xD;  var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;  var reIsNative = RegExp(&apos;^&apos; + funcToString&#xD;  // Take an example native function source for comparison&#xD;  .call(hasOwnProperty)&#xD;  // Strip regex characters so we can use it for regex&#xD;  .replace(/[\\^$.*+?()[\]{}|]/g, &apos;\\$&amp;&apos;)&#xD;  // Remove hasOwnProperty from the template to make it generic&#xD;  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, &apos;$1.*?&apos;) + &apos;$&apos;);&#xD;  try {&#xD;    var source = funcToString.call(fn);&#xD;    return reIsNative.test(source);&#xD;  } catch (err) {&#xD;    return false;&#xD;  }&#xD;}&#xD;&#xD;var canUseCollections =&#xD;// Array.from&#xD;typeof Array.from === &apos;function&apos; &amp;&amp;&#xD;// Map&#xD;typeof Map === &apos;function&apos; &amp;&amp; isNative(Map) &amp;&amp;&#xD;// Map.prototype.keys&#xD;Map.prototype != null &amp;&amp; typeof Map.prototype.keys === &apos;function&apos; &amp;&amp; isNative(Map.prototype.keys) &amp;&amp;&#xD;// Set&#xD;typeof Set === &apos;function&apos; &amp;&amp; isNative(Set) &amp;&amp;&#xD;// Set.prototype.keys&#xD;Set.prototype != null &amp;&amp; typeof Set.prototype.keys === &apos;function&apos; &amp;&amp; isNative(Set.prototype.keys);&#xD;&#xD;var setItem;&#xD;var getItem;&#xD;var removeItem;&#xD;var getItemIDs;&#xD;var addRoot;&#xD;var removeRoot;&#xD;var getRootIDs;&#xD;&#xD;if (canUseCollections) {&#xD;  var itemMap = new Map();&#xD;  var rootIDSet = new Set();&#xD;&#xD;  setItem = function (id, item) {&#xD;    itemMap.set(id, item);&#xD;  };&#xD;  getItem = function (id) {&#xD;    return itemMap.get(id);&#xD;  };&#xD;  removeItem = function (id) {&#xD;    itemMap[&apos;delete&apos;](id);&#xD;  };&#xD;  getItemIDs = function () {&#xD;    return Array.from(itemMap.keys());&#xD;  };&#xD;&#xD;  addRoot = function (id) {&#xD;    rootIDSet.add(id);&#xD;  };&#xD;  removeRoot = function (id) {&#xD;    rootIDSet[&apos;delete&apos;](id);&#xD;  };&#xD;  getRootIDs = function () {&#xD;    return Array.from(rootIDSet.keys());&#xD;  };&#xD;} else {&#xD;  var itemByKey = {};&#xD;  var rootByKey = {};&#xD;&#xD;  // Use non-numeric keys to prevent V8 performance issues:&#xD;  // https://github.com/facebook/react/pull/7232&#xD;  var getKeyFromID = function (id) {&#xD;    return &apos;.&apos; + id;&#xD;  };&#xD;  var getIDFromKey = function (key) {&#xD;    return parseInt(key.substr(1), 10);&#xD;  };&#xD;&#xD;  setItem = function (id, item) {&#xD;    var key = getKeyFromID(id);&#xD;    itemByKey[key] = item;&#xD;  };&#xD;  getItem = function (id) {&#xD;    var key = getKeyFromID(id);&#xD;    return itemByKey[key];&#xD;  };&#xD;  removeItem = function (id) {&#xD;    var key = getKeyFromID(id);&#xD;    delete itemByKey[key];&#xD;  };&#xD;  getItemIDs = function () {&#xD;    return Object.keys(itemByKey).map(getIDFromKey);&#xD;  };&#xD;&#xD;  addRoot = function (id) {&#xD;    var key = getKeyFromID(id);&#xD;    rootByKey[key] = true;&#xD;  };&#xD;  removeRoot = function (id) {&#xD;    var key = getKeyFromID(id);&#xD;    delete rootByKey[key];&#xD;  };&#xD;  getRootIDs = function () {&#xD;    return Object.keys(rootByKey).map(getIDFromKey);&#xD;  };&#xD;}&#xD;&#xD;var unmountedIDs = [];&#xD;&#xD;function purgeDeep(id) {&#xD;  var item = getItem(id);&#xD;  if (item) {&#xD;    var childIDs = item.childIDs;&#xD;&#xD;    removeItem(id);&#xD;    childIDs.forEach(purgeDeep);&#xD;  }&#xD;}&#xD;&#xD;function describeComponentFrame(name, source, ownerName) {&#xD;  return &apos;\n    in &apos; + (name || &apos;Unknown&apos;) + (source ? &apos; (at &apos; + source.fileName.replace(/^.*[\\\/]/, &apos;&apos;) + &apos;:&apos; + source.lineNumber + &apos;)&apos; : ownerName ? &apos; (created by &apos; + ownerName + &apos;)&apos; : &apos;&apos;);&#xD;}&#xD;&#xD;function getDisplayName(element) {&#xD;  if (element == null) {&#xD;    return &apos;#empty&apos;;&#xD;  } else if (typeof element === &apos;string&apos; || typeof element === &apos;number&apos;) {&#xD;    return &apos;#text&apos;;&#xD;  } else if (typeof element.type === &apos;string&apos;) {&#xD;    return element.type;&#xD;  } else {&#xD;    return element.type.displayName || element.type.name || &apos;Unknown&apos;;&#xD;  }&#xD;}&#xD;&#xD;function describeID(id) {&#xD;  var name = ReactComponentTreeHook.getDisplayName(id);&#xD;  var element = ReactComponentTreeHook.getElement(id);&#xD;  var ownerID = ReactComponentTreeHook.getOwnerID(id);&#xD;  var ownerName;&#xD;  if (ownerID) {&#xD;    ownerName = ReactComponentTreeHook.getDisplayName(ownerID);&#xD;  }&#xD;   true ? warning(element, &apos;ReactComponentTreeHook: Missing React element for debugID %s when &apos; + &apos;building stack&apos;, id) : void 0;&#xD;  return describeComponentFrame(name, element &amp;&amp; element._source, ownerName);&#xD;}&#xD;&#xD;var ReactComponentTreeHook = {&#xD;  onSetChildren: function (id, nextChildIDs) {&#xD;    var item = getItem(id);&#xD;    !item ?  true ? invariant(false, &apos;Item must have been set&apos;) : _prodInvariant(&apos;144&apos;) : void 0;&#xD;    item.childIDs = nextChildIDs;&#xD;&#xD;    for (var i = 0; i &lt; nextChildIDs.length; i++) {&#xD;      var nextChildID = nextChildIDs[i];&#xD;      var nextChild = getItem(nextChildID);&#xD;      !nextChild ?  true ? invariant(false, &apos;Expected hook events to fire for the child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;140&apos;) : void 0;&#xD;      !(nextChild.childIDs != null || typeof nextChild.element !== &apos;object&apos; || nextChild.element == null) ?  true ? invariant(false, &apos;Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;141&apos;) : void 0;&#xD;      !nextChild.isMounted ?  true ? invariant(false, &apos;Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;71&apos;) : void 0;&#xD;      if (nextChild.parentID == null) {&#xD;        nextChild.parentID = id;&#xD;        // TODO: This shouldn&apos;t be necessary but mounting a new root during in&#xD;        // componentWillMount currently causes not-yet-mounted components to&#xD;        // be purged from our tree data so their parent id is missing.&#xD;      }&#xD;      !(nextChild.parentID === id) ?  true ? invariant(false, &apos;Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).&apos;, nextChildID, nextChild.parentID, id) : _prodInvariant(&apos;142&apos;, nextChildID, nextChild.parentID, id) : void 0;&#xD;    }&#xD;  },&#xD;  onBeforeMountComponent: function (id, element, parentID) {&#xD;    var item = {&#xD;      element: element,&#xD;      parentID: parentID,&#xD;      text: null,&#xD;      childIDs: [],&#xD;      isMounted: false,&#xD;      updateCount: 0&#xD;    };&#xD;    setItem(id, item);&#xD;  },&#xD;  onBeforeUpdateComponent: function (id, element) {&#xD;    var item = getItem(id);&#xD;    if (!item || !item.isMounted) {&#xD;      // We may end up here as a result of setState() in componentWillUnmount().&#xD;      // In this case, ignore the element.&#xD;      return;&#xD;    }&#xD;    item.element = element;&#xD;  },&#xD;  onMountComponent: function (id) {&#xD;    var item = getItem(id);&#xD;    !item ?  true ? invariant(false, &apos;Item must have been set&apos;) : _prodInvariant(&apos;144&apos;) : void 0;&#xD;    item.isMounted = true;&#xD;    var isRoot = item.parentID === 0;&#xD;    if (isRoot) {&#xD;      addRoot(id);&#xD;    }&#xD;  },&#xD;  onUpdateComponent: function (id) {&#xD;    var item = getItem(id);&#xD;    if (!item || !item.isMounted) {&#xD;      // We may end up here as a result of setState() in componentWillUnmount().&#xD;      // In this case, ignore the element.&#xD;      return;&#xD;    }&#xD;    item.updateCount++;&#xD;  },&#xD;  onUnmountComponent: function (id) {&#xD;    var item = getItem(id);&#xD;    if (item) {&#xD;      // We need to check if it exists.&#xD;      // `item` might not exist if it is inside an error boundary, and a sibling&#xD;      // error boundary child threw while mounting. Then this instance never&#xD;      // got a chance to mount, but it still gets an unmounting event during&#xD;      // the error boundary cleanup.&#xD;      item.isMounted = false;&#xD;      var isRoot = item.parentID === 0;&#xD;      if (isRoot) {&#xD;        removeRoot(id);&#xD;      }&#xD;    }&#xD;    unmountedIDs.push(id);&#xD;  },&#xD;  purgeUnmountedComponents: function () {&#xD;    if (ReactComponentTreeHook._preventPurging) {&#xD;      // Should only be used for testing.&#xD;      return;&#xD;    }&#xD;&#xD;    for (var i = 0; i &lt; unmountedIDs.length; i++) {&#xD;      var id = unmountedIDs[i];&#xD;      purgeDeep(id);&#xD;    }&#xD;    unmountedIDs.length = 0;&#xD;  },&#xD;  isMounted: function (id) {&#xD;    var item = getItem(id);&#xD;    return item ? item.isMounted : false;&#xD;  },&#xD;  getCurrentStackAddendum: function (topElement) {&#xD;    var info = &apos;&apos;;&#xD;    if (topElement) {&#xD;      var name = getDisplayName(topElement);&#xD;      var owner = topElement._owner;&#xD;      info += describeComponentFrame(name, topElement._source, owner &amp;&amp; owner.getName());&#xD;    }&#xD;&#xD;    var currentOwner = ReactCurrentOwner.current;&#xD;    var id = currentOwner &amp;&amp; currentOwner._debugID;&#xD;&#xD;    info += ReactComponentTreeHook.getStackAddendumByID(id);&#xD;    return info;&#xD;  },&#xD;  getStackAddendumByID: function (id) {&#xD;    var info = &apos;&apos;;&#xD;    while (id) {&#xD;      info += describeID(id);&#xD;      id = ReactComponentTreeHook.getParentID(id);&#xD;    }&#xD;    return info;&#xD;  },&#xD;  getChildIDs: function (id) {&#xD;    var item = getItem(id);&#xD;    return item ? item.childIDs : [];&#xD;  },&#xD;  getDisplayName: function (id) {&#xD;    var element = ReactComponentTreeHook.getElement(id);&#xD;    if (!element) {&#xD;      return null;&#xD;    }&#xD;    return getDisplayName(element);&#xD;  },&#xD;  getElement: function (id) {&#xD;    var item = getItem(id);&#xD;    return item ? item.element : null;&#xD;  },&#xD;  getOwnerID: function (id) {&#xD;    var element = ReactComponentTreeHook.getElement(id);&#xD;    if (!element || !element._owner) {&#xD;      return null;&#xD;    }&#xD;    return element._owner._debugID;&#xD;  },&#xD;  getParentID: function (id) {&#xD;    var item = getItem(id);&#xD;    return item ? item.parentID : null;&#xD;  },&#xD;  getSource: function (id) {&#xD;    var item = getItem(id);&#xD;    var element = item ? item.element : null;&#xD;    var source = element != null ? element._source : null;&#xD;    return source;&#xD;  },&#xD;  getText: function (id) {&#xD;    var element = ReactComponentTreeHook.getElement(id);&#xD;    if (typeof element === &apos;string&apos;) {&#xD;      return element;&#xD;    } else if (typeof element === &apos;number&apos;) {&#xD;      return &apos;&apos; + element;&#xD;    } else {&#xD;      return null;&#xD;    }&#xD;  },&#xD;  getUpdateCount: function (id) {&#xD;    var item = getItem(id);&#xD;    return item ? item.updateCount : 0;&#xD;  },&#xD;&#xD;&#xD;  getRootIDs: getRootIDs,&#xD;  getRegisteredIDs: getItemIDs&#xD;};&#xD;&#xD;module.exports = ReactComponentTreeHook;&#xD;&#xD;/***/ }),&#xD;/* 21 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;// Trust the developer to only use ReactInstrumentation with a __DEV__ check&#xD;&#xD;var debugTool = null;&#xD;&#xD;if (true) {&#xD;  var ReactDebugTool = __webpack_require__(422);&#xD;  debugTool = ReactDebugTool;&#xD;}&#xD;&#xD;module.exports = { debugTool: debugTool };&#xD;&#xD;/***/ }),&#xD;/* 22 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;function makeEmptyFunction(arg) {&#xD;  return function () {&#xD;    return arg;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * This function accepts and discards inputs; it has no side effects. This is&#xD; * primarily useful idiomatically for overridable function endpoints which&#xD; * always need to be callable, since JS lacks a null-call idiom ala Cocoa.&#xD; */&#xD;var emptyFunction = function emptyFunction() {};&#xD;&#xD;emptyFunction.thatReturns = makeEmptyFunction;&#xD;emptyFunction.thatReturnsFalse = makeEmptyFunction(false);&#xD;emptyFunction.thatReturnsTrue = makeEmptyFunction(true);&#xD;emptyFunction.thatReturnsNull = makeEmptyFunction(null);&#xD;emptyFunction.thatReturnsThis = function () {&#xD;  return this;&#xD;};&#xD;emptyFunction.thatReturnsArgument = function (arg) {&#xD;  return arg;&#xD;};&#xD;&#xD;module.exports = emptyFunction;&#xD;&#xD;/***/ }),&#xD;/* 23 */,&#xD;/* 24 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var CallbackQueue = __webpack_require__(155);&#xD;var PooledClass = __webpack_require__(33);&#xD;var ReactFeatureFlags = __webpack_require__(160);&#xD;var ReactReconciler = __webpack_require__(42);&#xD;var Transaction = __webpack_require__(66);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var dirtyComponents = [];&#xD;var updateBatchNumber = 0;&#xD;var asapCallbackQueue = CallbackQueue.getPooled();&#xD;var asapEnqueued = false;&#xD;&#xD;var batchingStrategy = null;&#xD;&#xD;function ensureInjected() {&#xD;  !(ReactUpdates.ReactReconcileTransaction &amp;&amp; batchingStrategy) ?  true ? invariant(false, &apos;ReactUpdates: must inject a reconcile transaction class and batching strategy&apos;) : _prodInvariant(&apos;123&apos;) : void 0;&#xD;}&#xD;&#xD;var NESTED_UPDATES = {&#xD;  initialize: function () {&#xD;    this.dirtyComponentsLength = dirtyComponents.length;&#xD;  },&#xD;  close: function () {&#xD;    if (this.dirtyComponentsLength !== dirtyComponents.length) {&#xD;      // Additional updates were enqueued by componentDidUpdate handlers or&#xD;      // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run&#xD;      // these new updates so that if A&apos;s componentDidUpdate calls setState on&#xD;      // B, B will update before the callback A&apos;s updater provided when calling&#xD;      // setState.&#xD;      dirtyComponents.splice(0, this.dirtyComponentsLength);&#xD;      flushBatchedUpdates();&#xD;    } else {&#xD;      dirtyComponents.length = 0;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;var UPDATE_QUEUEING = {&#xD;  initialize: function () {&#xD;    this.callbackQueue.reset();&#xD;  },&#xD;  close: function () {&#xD;    this.callbackQueue.notifyAll();&#xD;  }&#xD;};&#xD;&#xD;var TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];&#xD;&#xD;function ReactUpdatesFlushTransaction() {&#xD;  this.reinitializeTransaction();&#xD;  this.dirtyComponentsLength = null;&#xD;  this.callbackQueue = CallbackQueue.getPooled();&#xD;  this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(&#xD;  /* useCreateElement */true);&#xD;}&#xD;&#xD;_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {&#xD;  getTransactionWrappers: function () {&#xD;    return TRANSACTION_WRAPPERS;&#xD;  },&#xD;&#xD;  destructor: function () {&#xD;    this.dirtyComponentsLength = null;&#xD;    CallbackQueue.release(this.callbackQueue);&#xD;    this.callbackQueue = null;&#xD;    ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);&#xD;    this.reconcileTransaction = null;&#xD;  },&#xD;&#xD;  perform: function (method, scope, a) {&#xD;    // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`&#xD;    // with this transaction&apos;s wrappers around it.&#xD;    return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);&#xD;  }&#xD;});&#xD;&#xD;PooledClass.addPoolingTo(ReactUpdatesFlushTransaction);&#xD;&#xD;function batchedUpdates(callback, a, b, c, d, e) {&#xD;  ensureInjected();&#xD;  return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);&#xD;}&#xD;&#xD;/**&#xD; * Array comparator for ReactComponents by mount ordering.&#xD; *&#xD; * @param {ReactComponent} c1 first component you&apos;re comparing&#xD; * @param {ReactComponent} c2 second component you&apos;re comparing&#xD; * @return {number} Return value usable by Array.prototype.sort().&#xD; */&#xD;function mountOrderComparator(c1, c2) {&#xD;  return c1._mountOrder - c2._mountOrder;&#xD;}&#xD;&#xD;function runBatchedUpdates(transaction) {&#xD;  var len = transaction.dirtyComponentsLength;&#xD;  !(len === dirtyComponents.length) ?  true ? invariant(false, &apos;Expected flush transaction\&apos;s stored dirty-components length (%s) to match dirty-components array length (%s).&apos;, len, dirtyComponents.length) : _prodInvariant(&apos;124&apos;, len, dirtyComponents.length) : void 0;&#xD;&#xD;  // Since reconciling a component higher in the owner hierarchy usually (not&#xD;  // always -- see shouldComponentUpdate()) will reconcile children, reconcile&#xD;  // them before their children by sorting the array.&#xD;  dirtyComponents.sort(mountOrderComparator);&#xD;&#xD;  // Any updates enqueued while reconciling must be performed after this entire&#xD;  // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and&#xD;  // C, B could update twice in a single batch if C&apos;s render enqueues an update&#xD;  // to B (since B would have already updated, we should skip it, and the only&#xD;  // way we can know to do so is by checking the batch counter).&#xD;  updateBatchNumber++;&#xD;&#xD;  for (var i = 0; i &lt; len; i++) {&#xD;    // If a component is unmounted before pending changes apply, it will still&#xD;    // be here, but we assume that it has cleared its _pendingCallbacks and&#xD;    // that performUpdateIfNecessary is a noop.&#xD;    var component = dirtyComponents[i];&#xD;&#xD;    // If performUpdateIfNecessary happens to enqueue any new updates, we&#xD;    // shouldn&apos;t execute the callbacks until the next render happens, so&#xD;    // stash the callbacks first&#xD;    var callbacks = component._pendingCallbacks;&#xD;    component._pendingCallbacks = null;&#xD;&#xD;    var markerName;&#xD;    if (ReactFeatureFlags.logTopLevelRenders) {&#xD;      var namedComponent = component;&#xD;      // Duck type TopLevelWrapper. This is probably always true.&#xD;      if (component._currentElement.type.isReactTopLevelWrapper) {&#xD;        namedComponent = component._renderedComponent;&#xD;      }&#xD;      markerName = &apos;React update: &apos; + namedComponent.getName();&#xD;      console.time(markerName);&#xD;    }&#xD;&#xD;    ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);&#xD;&#xD;    if (markerName) {&#xD;      console.timeEnd(markerName);&#xD;    }&#xD;&#xD;    if (callbacks) {&#xD;      for (var j = 0; j &lt; callbacks.length; j++) {&#xD;        transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;var flushBatchedUpdates = function () {&#xD;  // ReactUpdatesFlushTransaction&apos;s wrappers will clear the dirtyComponents&#xD;  // array and perform any updates enqueued by mount-ready handlers (i.e.,&#xD;  // componentDidUpdate) but we need to check here too in order to catch&#xD;  // updates enqueued by setState callbacks and asap calls.&#xD;  while (dirtyComponents.length || asapEnqueued) {&#xD;    if (dirtyComponents.length) {&#xD;      var transaction = ReactUpdatesFlushTransaction.getPooled();&#xD;      transaction.perform(runBatchedUpdates, null, transaction);&#xD;      ReactUpdatesFlushTransaction.release(transaction);&#xD;    }&#xD;&#xD;    if (asapEnqueued) {&#xD;      asapEnqueued = false;&#xD;      var queue = asapCallbackQueue;&#xD;      asapCallbackQueue = CallbackQueue.getPooled();&#xD;      queue.notifyAll();&#xD;      CallbackQueue.release(queue);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Mark a component as needing a rerender, adding an optional callback to a&#xD; * list of functions which will be executed once the rerender occurs.&#xD; */&#xD;function enqueueUpdate(component) {&#xD;  ensureInjected();&#xD;&#xD;  // Various parts of our code (such as ReactCompositeComponent&apos;s&#xD;  // _renderValidatedComponent) assume that calls to render aren&apos;t nested;&#xD;  // verify that that&apos;s the case. (This is called by each top-level update&#xD;  // function, like setState, forceUpdate, etc.; creation and&#xD;  // destruction of top-level components is guarded in ReactMount.)&#xD;&#xD;  if (!batchingStrategy.isBatchingUpdates) {&#xD;    batchingStrategy.batchedUpdates(enqueueUpdate, component);&#xD;    return;&#xD;  }&#xD;&#xD;  dirtyComponents.push(component);&#xD;  if (component._updateBatchNumber == null) {&#xD;    component._updateBatchNumber = updateBatchNumber + 1;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Enqueue a callback to be run at the end of the current batching cycle. Throws&#xD; * if no updates are currently being performed.&#xD; */&#xD;function asap(callback, context) {&#xD;  !batchingStrategy.isBatchingUpdates ?  true ? invariant(false, &apos;ReactUpdates.asap: Can\&apos;t enqueue an asap callback in a context whereupdates are not being batched.&apos;) : _prodInvariant(&apos;125&apos;) : void 0;&#xD;  asapCallbackQueue.enqueue(callback, context);&#xD;  asapEnqueued = true;&#xD;}&#xD;&#xD;var ReactUpdatesInjection = {&#xD;  injectReconcileTransaction: function (ReconcileTransaction) {&#xD;    !ReconcileTransaction ?  true ? invariant(false, &apos;ReactUpdates: must provide a reconcile transaction class&apos;) : _prodInvariant(&apos;126&apos;) : void 0;&#xD;    ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;&#xD;  },&#xD;&#xD;  injectBatchingStrategy: function (_batchingStrategy) {&#xD;    !_batchingStrategy ?  true ? invariant(false, &apos;ReactUpdates: must provide a batching strategy&apos;) : _prodInvariant(&apos;127&apos;) : void 0;&#xD;    !(typeof _batchingStrategy.batchedUpdates === &apos;function&apos;) ?  true ? invariant(false, &apos;ReactUpdates: must provide a batchedUpdates() function&apos;) : _prodInvariant(&apos;128&apos;) : void 0;&#xD;    !(typeof _batchingStrategy.isBatchingUpdates === &apos;boolean&apos;) ?  true ? invariant(false, &apos;ReactUpdates: must provide an isBatchingUpdates boolean attribute&apos;) : _prodInvariant(&apos;129&apos;) : void 0;&#xD;    batchingStrategy = _batchingStrategy;&#xD;  }&#xD;};&#xD;&#xD;var ReactUpdates = {&#xD;  /**&#xD;   * React references `ReactReconcileTransaction` using this property in order&#xD;   * to allow dependency injection.&#xD;   *&#xD;   * @internal&#xD;   */&#xD;  ReactReconcileTransaction: null,&#xD;&#xD;  batchedUpdates: batchedUpdates,&#xD;  enqueueUpdate: enqueueUpdate,&#xD;  flushBatchedUpdates: flushBatchedUpdates,&#xD;  injection: ReactUpdatesInjection,&#xD;  asap: asap&#xD;};&#xD;&#xD;module.exports = ReactUpdates;&#xD;&#xD;/***/ }),&#xD;/* 25 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Keeps track of the current owner.&#xD; *&#xD; * The current owner is the component who should own any components that are&#xD; * currently being constructed.&#xD; */&#xD;var ReactCurrentOwner = {&#xD;&#xD;  /**&#xD;   * @internal&#xD;   * @type {ReactComponent}&#xD;   */&#xD;  current: null&#xD;&#xD;};&#xD;&#xD;module.exports = ReactCurrentOwner;&#xD;&#xD;/***/ }),&#xD;/* 26 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var PooledClass = __webpack_require__(33);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var didWarnForAddedNewProperty = false;&#xD;var isProxySupported = typeof Proxy === &apos;function&apos;;&#xD;&#xD;var shouldBeReleasedProperties = [&apos;dispatchConfig&apos;, &apos;_targetInst&apos;, &apos;nativeEvent&apos;, &apos;isDefaultPrevented&apos;, &apos;isPropagationStopped&apos;, &apos;_dispatchListeners&apos;, &apos;_dispatchInstances&apos;];&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var EventInterface = {&#xD;  type: null,&#xD;  target: null,&#xD;  // currentTarget is set when dispatching; no use in copying it here&#xD;  currentTarget: emptyFunction.thatReturnsNull,&#xD;  eventPhase: null,&#xD;  bubbles: null,&#xD;  cancelable: null,&#xD;  timeStamp: function (event) {&#xD;    return event.timeStamp || Date.now();&#xD;  },&#xD;  defaultPrevented: null,&#xD;  isTrusted: null&#xD;};&#xD;&#xD;/**&#xD; * Synthetic events are dispatched by event plugins, typically in response to a&#xD; * top-level event delegation handler.&#xD; *&#xD; * These systems should generally use pooling to reduce the frequency of garbage&#xD; * collection. The system should check `isPersistent` to determine whether the&#xD; * event should be released into the pool after being dispatched. Users that&#xD; * need a persisted event should invoke `persist`.&#xD; *&#xD; * Synthetic events (and subclasses) implement the DOM Level 3 Events API by&#xD; * normalizing browser quirks. Subclasses do not necessarily have to implement a&#xD; * DOM interface; custom application-specific events can also subclass this.&#xD; *&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {*} targetInst Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @param {DOMEventTarget} nativeEventTarget Target node.&#xD; */&#xD;function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {&#xD;  if (true) {&#xD;    // these have a getter/setter for warnings&#xD;    delete this.nativeEvent;&#xD;    delete this.preventDefault;&#xD;    delete this.stopPropagation;&#xD;  }&#xD;&#xD;  this.dispatchConfig = dispatchConfig;&#xD;  this._targetInst = targetInst;&#xD;  this.nativeEvent = nativeEvent;&#xD;&#xD;  var Interface = this.constructor.Interface;&#xD;  for (var propName in Interface) {&#xD;    if (!Interface.hasOwnProperty(propName)) {&#xD;      continue;&#xD;    }&#xD;    if (true) {&#xD;      delete this[propName]; // this has a getter/setter for warnings&#xD;    }&#xD;    var normalize = Interface[propName];&#xD;    if (normalize) {&#xD;      this[propName] = normalize(nativeEvent);&#xD;    } else {&#xD;      if (propName === &apos;target&apos;) {&#xD;        this.target = nativeEventTarget;&#xD;      } else {&#xD;        this[propName] = nativeEvent[propName];&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;&#xD;  if (defaultPrevented) {&#xD;    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;&#xD;  } else {&#xD;    this.isDefaultPrevented = emptyFunction.thatReturnsFalse;&#xD;  }&#xD;  this.isPropagationStopped = emptyFunction.thatReturnsFalse;&#xD;  return this;&#xD;}&#xD;&#xD;_assign(SyntheticEvent.prototype, {&#xD;&#xD;  preventDefault: function () {&#xD;    this.defaultPrevented = true;&#xD;    var event = this.nativeEvent;&#xD;    if (!event) {&#xD;      return;&#xD;    }&#xD;&#xD;    if (event.preventDefault) {&#xD;      event.preventDefault();&#xD;    } else if (typeof event.returnValue !== &apos;unknown&apos;) {&#xD;      // eslint-disable-line valid-typeof&#xD;      event.returnValue = false;&#xD;    }&#xD;    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;&#xD;  },&#xD;&#xD;  stopPropagation: function () {&#xD;    var event = this.nativeEvent;&#xD;    if (!event) {&#xD;      return;&#xD;    }&#xD;&#xD;    if (event.stopPropagation) {&#xD;      event.stopPropagation();&#xD;    } else if (typeof event.cancelBubble !== &apos;unknown&apos;) {&#xD;      // eslint-disable-line valid-typeof&#xD;      // The ChangeEventPlugin registers a "propertychange" event for&#xD;      // IE. This event does not support bubbling or cancelling, and&#xD;      // any references to cancelBubble throw "Member not found".  A&#xD;      // typeof check of "unknown" circumvents this issue (and is also&#xD;      // IE specific).&#xD;      event.cancelBubble = true;&#xD;    }&#xD;&#xD;    this.isPropagationStopped = emptyFunction.thatReturnsTrue;&#xD;  },&#xD;&#xD;  /**&#xD;   * We release all dispatched `SyntheticEvent`s after each event loop, adding&#xD;   * them back into the pool. This allows a way to hold onto a reference that&#xD;   * won&apos;t be added back into the pool.&#xD;   */&#xD;  persist: function () {&#xD;    this.isPersistent = emptyFunction.thatReturnsTrue;&#xD;  },&#xD;&#xD;  /**&#xD;   * Checks if this event should be released back into the pool.&#xD;   *&#xD;   * @return {boolean} True if this should not be released, false otherwise.&#xD;   */&#xD;  isPersistent: emptyFunction.thatReturnsFalse,&#xD;&#xD;  /**&#xD;   * `PooledClass` looks for `destructor` on each instance it releases.&#xD;   */&#xD;  destructor: function () {&#xD;    var Interface = this.constructor.Interface;&#xD;    for (var propName in Interface) {&#xD;      if (true) {&#xD;        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));&#xD;      } else {&#xD;        this[propName] = null;&#xD;      }&#xD;    }&#xD;    for (var i = 0; i &lt; shouldBeReleasedProperties.length; i++) {&#xD;      this[shouldBeReleasedProperties[i]] = null;&#xD;    }&#xD;    if (true) {&#xD;      Object.defineProperty(this, &apos;nativeEvent&apos;, getPooledWarningPropertyDefinition(&apos;nativeEvent&apos;, null));&#xD;      Object.defineProperty(this, &apos;preventDefault&apos;, getPooledWarningPropertyDefinition(&apos;preventDefault&apos;, emptyFunction));&#xD;      Object.defineProperty(this, &apos;stopPropagation&apos;, getPooledWarningPropertyDefinition(&apos;stopPropagation&apos;, emptyFunction));&#xD;    }&#xD;  }&#xD;&#xD;});&#xD;&#xD;SyntheticEvent.Interface = EventInterface;&#xD;&#xD;if (true) {&#xD;  if (isProxySupported) {&#xD;    /*eslint-disable no-func-assign */&#xD;    SyntheticEvent = new Proxy(SyntheticEvent, {&#xD;      construct: function (target, args) {&#xD;        return this.apply(target, Object.create(target.prototype), args);&#xD;      },&#xD;      apply: function (constructor, that, args) {&#xD;        return new Proxy(constructor.apply(that, args), {&#xD;          set: function (target, prop, value) {&#xD;            if (prop !== &apos;isPersistent&apos; &amp;&amp; !target.constructor.Interface.hasOwnProperty(prop) &amp;&amp; shouldBeReleasedProperties.indexOf(prop) === -1) {&#xD;               true ? warning(didWarnForAddedNewProperty || target.isPersistent(), &apos;This synthetic event is reused for performance reasons. If you\&apos;re &apos; + &apos;seeing this, you\&apos;re adding a new property in the synthetic event object. &apos; + &apos;The property is never released. See &apos; + &apos;https://fb.me/react-event-pooling for more information.&apos;) : void 0;&#xD;              didWarnForAddedNewProperty = true;&#xD;            }&#xD;            target[prop] = value;&#xD;            return true;&#xD;          }&#xD;        });&#xD;      }&#xD;    });&#xD;    /*eslint-enable no-func-assign */&#xD;  }&#xD;}&#xD;/**&#xD; * Helper to reduce boilerplate when creating subclasses.&#xD; *&#xD; * @param {function} Class&#xD; * @param {?object} Interface&#xD; */&#xD;SyntheticEvent.augmentClass = function (Class, Interface) {&#xD;  var Super = this;&#xD;&#xD;  var E = function () {};&#xD;  E.prototype = Super.prototype;&#xD;  var prototype = new E();&#xD;&#xD;  _assign(prototype, Class.prototype);&#xD;  Class.prototype = prototype;&#xD;  Class.prototype.constructor = Class;&#xD;&#xD;  Class.Interface = _assign({}, Super.Interface, Interface);&#xD;  Class.augmentClass = Super.augmentClass;&#xD;&#xD;  PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);&#xD;};&#xD;&#xD;PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);&#xD;&#xD;module.exports = SyntheticEvent;&#xD;&#xD;/**&#xD;  * Helper to nullify syntheticEvent instance properties when destructing&#xD;  *&#xD;  * @param {object} SyntheticEvent&#xD;  * @param {String} propName&#xD;  * @return {object} defineProperty object&#xD;  */&#xD;function getPooledWarningPropertyDefinition(propName, getVal) {&#xD;  var isFunction = typeof getVal === &apos;function&apos;;&#xD;  return {&#xD;    configurable: true,&#xD;    set: set,&#xD;    get: get&#xD;  };&#xD;&#xD;  function set(val) {&#xD;    var action = isFunction ? &apos;setting the method&apos; : &apos;setting the property&apos;;&#xD;    warn(action, &apos;This is effectively a no-op&apos;);&#xD;    return val;&#xD;  }&#xD;&#xD;  function get() {&#xD;    var action = isFunction ? &apos;accessing the method&apos; : &apos;accessing the property&apos;;&#xD;    var result = isFunction ? &apos;This is a no-op function&apos; : &apos;This is set to null&apos;;&#xD;    warn(action, result);&#xD;    return getVal;&#xD;  }&#xD;&#xD;  function warn(action, result) {&#xD;    var warningCondition = false;&#xD;     true ? warning(warningCondition, &apos;This synthetic event is reused for performance reasons. If you\&apos;re seeing this, &apos; + &apos;you\&apos;re %s `%s` on a released/nullified synthetic event. %s. &apos; + &apos;If you must keep the original synthetic event around, use event.persist(). &apos; + &apos;See https://fb.me/react-event-pooling for more information.&apos;, action, propName, result) : void 0;&#xD;  }&#xD;}&#xD;&#xD;/***/ }),&#xD;/* 27 */,&#xD;/* 28 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;function checkMask(value, bitmask) {&#xD;  return (value &amp; bitmask) === bitmask;&#xD;}&#xD;&#xD;var DOMPropertyInjection = {&#xD;  /**&#xD;   * Mapping from normalized, camelcased property names to a configuration that&#xD;   * specifies how the associated DOM property should be accessed or rendered.&#xD;   */&#xD;  MUST_USE_PROPERTY: 0x1,&#xD;  HAS_BOOLEAN_VALUE: 0x4,&#xD;  HAS_NUMERIC_VALUE: 0x8,&#xD;  HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,&#xD;  HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,&#xD;&#xD;  /**&#xD;   * Inject some specialized knowledge about the DOM. This takes a config object&#xD;   * with the following properties:&#xD;   *&#xD;   * isCustomAttribute: function that given an attribute name will return true&#xD;   * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*&#xD;   * attributes where it&apos;s impossible to enumerate all of the possible&#xD;   * attribute names,&#xD;   *&#xD;   * Properties: object mapping DOM property name to one of the&#xD;   * DOMPropertyInjection constants or null. If your attribute isn&apos;t in here,&#xD;   * it won&apos;t get written to the DOM.&#xD;   *&#xD;   * DOMAttributeNames: object mapping React attribute name to the DOM&#xD;   * attribute name. Attribute names not specified use the **lowercase**&#xD;   * normalized name.&#xD;   *&#xD;   * DOMAttributeNamespaces: object mapping React attribute name to the DOM&#xD;   * attribute namespace URL. (Attribute names not specified use no namespace.)&#xD;   *&#xD;   * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.&#xD;   * Property names not specified use the normalized name.&#xD;   *&#xD;   * DOMMutationMethods: Properties that require special mutation methods. If&#xD;   * `value` is undefined, the mutation method should unset the property.&#xD;   *&#xD;   * @param {object} domPropertyConfig the config as described above.&#xD;   */&#xD;  injectDOMPropertyConfig: function (domPropertyConfig) {&#xD;    var Injection = DOMPropertyInjection;&#xD;    var Properties = domPropertyConfig.Properties || {};&#xD;    var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};&#xD;    var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};&#xD;    var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};&#xD;    var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};&#xD;&#xD;    if (domPropertyConfig.isCustomAttribute) {&#xD;      DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);&#xD;    }&#xD;&#xD;    for (var propName in Properties) {&#xD;      !!DOMProperty.properties.hasOwnProperty(propName) ?  true ? invariant(false, &apos;injectDOMPropertyConfig(...): You\&apos;re trying to inject DOM property \&apos;%s\&apos; which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.&apos;, propName) : _prodInvariant(&apos;48&apos;, propName) : void 0;&#xD;&#xD;      var lowerCased = propName.toLowerCase();&#xD;      var propConfig = Properties[propName];&#xD;&#xD;      var propertyInfo = {&#xD;        attributeName: lowerCased,&#xD;        attributeNamespace: null,&#xD;        propertyName: propName,&#xD;        mutationMethod: null,&#xD;&#xD;        mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),&#xD;        hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),&#xD;        hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),&#xD;        hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),&#xD;        hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)&#xD;      };&#xD;      !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue &lt;= 1) ?  true ? invariant(false, &apos;DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s&apos;, propName) : _prodInvariant(&apos;50&apos;, propName) : void 0;&#xD;&#xD;      if (true) {&#xD;        DOMProperty.getPossibleStandardName[lowerCased] = propName;&#xD;      }&#xD;&#xD;      if (DOMAttributeNames.hasOwnProperty(propName)) {&#xD;        var attributeName = DOMAttributeNames[propName];&#xD;        propertyInfo.attributeName = attributeName;&#xD;        if (true) {&#xD;          DOMProperty.getPossibleStandardName[attributeName] = propName;&#xD;        }&#xD;      }&#xD;&#xD;      if (DOMAttributeNamespaces.hasOwnProperty(propName)) {&#xD;        propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];&#xD;      }&#xD;&#xD;      if (DOMPropertyNames.hasOwnProperty(propName)) {&#xD;        propertyInfo.propertyName = DOMPropertyNames[propName];&#xD;      }&#xD;&#xD;      if (DOMMutationMethods.hasOwnProperty(propName)) {&#xD;        propertyInfo.mutationMethod = DOMMutationMethods[propName];&#xD;      }&#xD;&#xD;      DOMProperty.properties[propName] = propertyInfo;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;/* eslint-disable max-len */&#xD;var ATTRIBUTE_NAME_START_CHAR = &apos;:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD&apos;;&#xD;/* eslint-enable max-len */&#xD;&#xD;/**&#xD; * DOMProperty exports lookup objects that can be used like functions:&#xD; *&#xD; *   &gt; DOMProperty.isValid[&apos;id&apos;]&#xD; *   true&#xD; *   &gt; DOMProperty.isValid[&apos;foobar&apos;]&#xD; *   undefined&#xD; *&#xD; * Although this may be confusing, it performs better in general.&#xD; *&#xD; * @see http://jsperf.com/key-exists&#xD; * @see http://jsperf.com/key-missing&#xD; */&#xD;var DOMProperty = {&#xD;&#xD;  ID_ATTRIBUTE_NAME: &apos;data-reactid&apos;,&#xD;  ROOT_ATTRIBUTE_NAME: &apos;data-reactroot&apos;,&#xD;&#xD;  ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,&#xD;  ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + &apos;\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040&apos;,&#xD;&#xD;  /**&#xD;   * Map from property "standard name" to an object with info about how to set&#xD;   * the property in the DOM. Each object contains:&#xD;   *&#xD;   * attributeName:&#xD;   *   Used when rendering markup or with `*Attribute()`.&#xD;   * attributeNamespace&#xD;   * propertyName:&#xD;   *   Used on DOM node instances. (This includes properties that mutate due to&#xD;   *   external factors.)&#xD;   * mutationMethod:&#xD;   *   If non-null, used instead of the property or `setAttribute()` after&#xD;   *   initial render.&#xD;   * mustUseProperty:&#xD;   *   Whether the property must be accessed and mutated as an object property.&#xD;   * hasBooleanValue:&#xD;   *   Whether the property should be removed when set to a falsey value.&#xD;   * hasNumericValue:&#xD;   *   Whether the property must be numeric or parse as a numeric and should be&#xD;   *   removed when set to a falsey value.&#xD;   * hasPositiveNumericValue:&#xD;   *   Whether the property must be positive numeric or parse as a positive&#xD;   *   numeric and should be removed when set to a falsey value.&#xD;   * hasOverloadedBooleanValue:&#xD;   *   Whether the property can be used as a flag as well as with a value.&#xD;   *   Removed when strictly equal to false; present without a value when&#xD;   *   strictly equal to true; present with a value otherwise.&#xD;   */&#xD;  properties: {},&#xD;&#xD;  /**&#xD;   * Mapping from lowercase property names to the properly cased version, used&#xD;   * to warn in the case of missing properties. Available only in __DEV__.&#xD;   *&#xD;   * autofocus is predefined, because adding it to the property whitelist&#xD;   * causes unintended side effects.&#xD;   *&#xD;   * @type {Object}&#xD;   */&#xD;  getPossibleStandardName:  true ? { autofocus: &apos;autoFocus&apos; } : null,&#xD;&#xD;  /**&#xD;   * All of the isCustomAttribute() functions that have been injected.&#xD;   */&#xD;  _isCustomAttributeFunctions: [],&#xD;&#xD;  /**&#xD;   * Checks whether a property name is a custom attribute.&#xD;   * @method&#xD;   */&#xD;  isCustomAttribute: function (attributeName) {&#xD;    for (var i = 0; i &lt; DOMProperty._isCustomAttributeFunctions.length; i++) {&#xD;      var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];&#xD;      if (isCustomAttributeFn(attributeName)) {&#xD;        return true;&#xD;      }&#xD;    }&#xD;    return false;&#xD;  },&#xD;&#xD;  injection: DOMPropertyInjection&#xD;};&#xD;&#xD;module.exports = DOMProperty;&#xD;&#xD;/***/ }),&#xD;/* 29 */,&#xD;/* 30 */,&#xD;/* 31 */,&#xD;/* 32 */,&#xD;/* 33 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Static poolers. Several custom versions for each potential number of&#xD; * arguments. A completely generic pooler is easy to implement, but would&#xD; * require accessing the `arguments` object. In each of these, `this` refers to&#xD; * the Class itself, not an instance. If any others are needed, simply add them&#xD; * here, or in their own files.&#xD; */&#xD;var oneArgumentPooler = function (copyFieldsFrom) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, copyFieldsFrom);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(copyFieldsFrom);&#xD;  }&#xD;};&#xD;&#xD;var twoArgumentPooler = function (a1, a2) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2);&#xD;  }&#xD;};&#xD;&#xD;var threeArgumentPooler = function (a1, a2, a3) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2, a3);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2, a3);&#xD;  }&#xD;};&#xD;&#xD;var fourArgumentPooler = function (a1, a2, a3, a4) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2, a3, a4);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2, a3, a4);&#xD;  }&#xD;};&#xD;&#xD;var standardReleaser = function (instance) {&#xD;  var Klass = this;&#xD;  !(instance instanceof Klass) ?  true ? invariant(false, &apos;Trying to release an instance into a pool of a different type.&apos;) : _prodInvariant(&apos;25&apos;) : void 0;&#xD;  instance.destructor();&#xD;  if (Klass.instancePool.length &lt; Klass.poolSize) {&#xD;    Klass.instancePool.push(instance);&#xD;  }&#xD;};&#xD;&#xD;var DEFAULT_POOL_SIZE = 10;&#xD;var DEFAULT_POOLER = oneArgumentPooler;&#xD;&#xD;/**&#xD; * Augments `CopyConstructor` to be a poolable class, augmenting only the class&#xD; * itself (statically) not adding any prototypical fields. Any CopyConstructor&#xD; * you give this may have a `poolSize` property, and will look for a&#xD; * prototypical `destructor` on instances.&#xD; *&#xD; * @param {Function} CopyConstructor Constructor that can be used to reset.&#xD; * @param {Function} pooler Customizable pooler.&#xD; */&#xD;var addPoolingTo = function (CopyConstructor, pooler) {&#xD;  // Casting as any so that flow ignores the actual implementation and trusts&#xD;  // it to match the type we declared&#xD;  var NewKlass = CopyConstructor;&#xD;  NewKlass.instancePool = [];&#xD;  NewKlass.getPooled = pooler || DEFAULT_POOLER;&#xD;  if (!NewKlass.poolSize) {&#xD;    NewKlass.poolSize = DEFAULT_POOL_SIZE;&#xD;  }&#xD;  NewKlass.release = standardReleaser;&#xD;  return NewKlass;&#xD;};&#xD;&#xD;var PooledClass = {&#xD;  addPoolingTo: addPoolingTo,&#xD;  oneArgumentPooler: oneArgumentPooler,&#xD;  twoArgumentPooler: twoArgumentPooler,&#xD;  threeArgumentPooler: threeArgumentPooler,&#xD;  fourArgumentPooler: fourArgumentPooler&#xD;};&#xD;&#xD;module.exports = PooledClass;&#xD;&#xD;/***/ }),&#xD;/* 34 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;var canDefineProperty = __webpack_require__(72);&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;&#xD;var REACT_ELEMENT_TYPE = __webpack_require__(184);&#xD;&#xD;var RESERVED_PROPS = {&#xD;  key: true,&#xD;  ref: true,&#xD;  __self: true,&#xD;  __source: true&#xD;};&#xD;&#xD;var specialPropKeyWarningShown, specialPropRefWarningShown;&#xD;&#xD;function hasValidRef(config) {&#xD;  if (true) {&#xD;    if (hasOwnProperty.call(config, &apos;ref&apos;)) {&#xD;      var getter = Object.getOwnPropertyDescriptor(config, &apos;ref&apos;).get;&#xD;      if (getter &amp;&amp; getter.isReactWarning) {&#xD;        return false;&#xD;      }&#xD;    }&#xD;  }&#xD;  return config.ref !== undefined;&#xD;}&#xD;&#xD;function hasValidKey(config) {&#xD;  if (true) {&#xD;    if (hasOwnProperty.call(config, &apos;key&apos;)) {&#xD;      var getter = Object.getOwnPropertyDescriptor(config, &apos;key&apos;).get;&#xD;      if (getter &amp;&amp; getter.isReactWarning) {&#xD;        return false;&#xD;      }&#xD;    }&#xD;  }&#xD;  return config.key !== undefined;&#xD;}&#xD;&#xD;function defineKeyPropWarningGetter(props, displayName) {&#xD;  var warnAboutAccessingKey = function () {&#xD;    if (!specialPropKeyWarningShown) {&#xD;      specialPropKeyWarningShown = true;&#xD;       true ? warning(false, &apos;%s: `key` is not a prop. Trying to access it will result &apos; + &apos;in `undefined` being returned. If you need to access the same &apos; + &apos;value within the child component, you should pass it as a different &apos; + &apos;prop. (https://fb.me/react-special-props)&apos;, displayName) : void 0;&#xD;    }&#xD;  };&#xD;  warnAboutAccessingKey.isReactWarning = true;&#xD;  Object.defineProperty(props, &apos;key&apos;, {&#xD;    get: warnAboutAccessingKey,&#xD;    configurable: true&#xD;  });&#xD;}&#xD;&#xD;function defineRefPropWarningGetter(props, displayName) {&#xD;  var warnAboutAccessingRef = function () {&#xD;    if (!specialPropRefWarningShown) {&#xD;      specialPropRefWarningShown = true;&#xD;       true ? warning(false, &apos;%s: `ref` is not a prop. Trying to access it will result &apos; + &apos;in `undefined` being returned. If you need to access the same &apos; + &apos;value within the child component, you should pass it as a different &apos; + &apos;prop. (https://fb.me/react-special-props)&apos;, displayName) : void 0;&#xD;    }&#xD;  };&#xD;  warnAboutAccessingRef.isReactWarning = true;&#xD;  Object.defineProperty(props, &apos;ref&apos;, {&#xD;    get: warnAboutAccessingRef,&#xD;    configurable: true&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Factory method to create a new React element. This no longer adheres to&#xD; * the class pattern, so do not use new to call it. Also, no instanceof check&#xD; * will work. Instead test $$typeof field against Symbol.for(&apos;react.element&apos;) to check&#xD; * if something is a React Element.&#xD; *&#xD; * @param {*} type&#xD; * @param {*} key&#xD; * @param {string|object} ref&#xD; * @param {*} self A *temporary* helper to detect places where `this` is&#xD; * different from the `owner` when React.createElement is called, so that we&#xD; * can warn. We want to get rid of owner and replace string `ref`s with arrow&#xD; * functions, and as long as `this` and owner are the same, there will be no&#xD; * change in behavior.&#xD; * @param {*} source An annotation object (added by a transpiler or otherwise)&#xD; * indicating filename, line number, and/or other information.&#xD; * @param {*} owner&#xD; * @param {*} props&#xD; * @internal&#xD; */&#xD;var ReactElement = function (type, key, ref, self, source, owner, props) {&#xD;  var element = {&#xD;    // This tag allow us to uniquely identify this as a React Element&#xD;    $$typeof: REACT_ELEMENT_TYPE,&#xD;&#xD;    // Built-in properties that belong on the element&#xD;    type: type,&#xD;    key: key,&#xD;    ref: ref,&#xD;    props: props,&#xD;&#xD;    // Record the component responsible for creating this element.&#xD;    _owner: owner&#xD;  };&#xD;&#xD;  if (true) {&#xD;    // The validation flag is currently mutative. We put it on&#xD;    // an external backing store so that we can freeze the whole object.&#xD;    // This can be replaced with a WeakMap once they are implemented in&#xD;    // commonly used development environments.&#xD;    element._store = {};&#xD;&#xD;    // To make comparing ReactElements easier for testing purposes, we make&#xD;    // the validation flag non-enumerable (where possible, which should&#xD;    // include every environment we run tests in), so the test framework&#xD;    // ignores it.&#xD;    if (canDefineProperty) {&#xD;      Object.defineProperty(element._store, &apos;validated&apos;, {&#xD;        configurable: false,&#xD;        enumerable: false,&#xD;        writable: true,&#xD;        value: false&#xD;      });&#xD;      // self and source are DEV only properties.&#xD;      Object.defineProperty(element, &apos;_self&apos;, {&#xD;        configurable: false,&#xD;        enumerable: false,&#xD;        writable: false,&#xD;        value: self&#xD;      });&#xD;      // Two elements created in two different places should be considered&#xD;      // equal for testing purposes and therefore we hide it from enumeration.&#xD;      Object.defineProperty(element, &apos;_source&apos;, {&#xD;        configurable: false,&#xD;        enumerable: false,&#xD;        writable: false,&#xD;        value: source&#xD;      });&#xD;    } else {&#xD;      element._store.validated = false;&#xD;      element._self = self;&#xD;      element._source = source;&#xD;    }&#xD;    if (Object.freeze) {&#xD;      Object.freeze(element.props);&#xD;      Object.freeze(element);&#xD;    }&#xD;  }&#xD;&#xD;  return element;&#xD;};&#xD;&#xD;/**&#xD; * Create and return a new ReactElement of the given type.&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement&#xD; */&#xD;ReactElement.createElement = function (type, config, children) {&#xD;  var propName;&#xD;&#xD;  // Reserved names are extracted&#xD;  var props = {};&#xD;&#xD;  var key = null;&#xD;  var ref = null;&#xD;  var self = null;&#xD;  var source = null;&#xD;&#xD;  if (config != null) {&#xD;    if (hasValidRef(config)) {&#xD;      ref = config.ref;&#xD;    }&#xD;    if (hasValidKey(config)) {&#xD;      key = &apos;&apos; + config.key;&#xD;    }&#xD;&#xD;    self = config.__self === undefined ? null : config.__self;&#xD;    source = config.__source === undefined ? null : config.__source;&#xD;    // Remaining properties are added to a new props object&#xD;    for (propName in config) {&#xD;      if (hasOwnProperty.call(config, propName) &amp;&amp; !RESERVED_PROPS.hasOwnProperty(propName)) {&#xD;        props[propName] = config[propName];&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  // Children can be more than one argument, and those are transferred onto&#xD;  // the newly allocated props object.&#xD;  var childrenLength = arguments.length - 2;&#xD;  if (childrenLength === 1) {&#xD;    props.children = children;&#xD;  } else if (childrenLength &gt; 1) {&#xD;    var childArray = Array(childrenLength);&#xD;    for (var i = 0; i &lt; childrenLength; i++) {&#xD;      childArray[i] = arguments[i + 2];&#xD;    }&#xD;    if (true) {&#xD;      if (Object.freeze) {&#xD;        Object.freeze(childArray);&#xD;      }&#xD;    }&#xD;    props.children = childArray;&#xD;  }&#xD;&#xD;  // Resolve default props&#xD;  if (type &amp;&amp; type.defaultProps) {&#xD;    var defaultProps = type.defaultProps;&#xD;    for (propName in defaultProps) {&#xD;      if (props[propName] === undefined) {&#xD;        props[propName] = defaultProps[propName];&#xD;      }&#xD;    }&#xD;  }&#xD;  if (true) {&#xD;    if (key || ref) {&#xD;      if (typeof props.$$typeof === &apos;undefined&apos; || props.$$typeof !== REACT_ELEMENT_TYPE) {&#xD;        var displayName = typeof type === &apos;function&apos; ? type.displayName || type.name || &apos;Unknown&apos; : type;&#xD;        if (key) {&#xD;          defineKeyPropWarningGetter(props, displayName);&#xD;        }&#xD;        if (ref) {&#xD;          defineRefPropWarningGetter(props, displayName);&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);&#xD;};&#xD;&#xD;/**&#xD; * Return a function that produces ReactElements of a given type.&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory&#xD; */&#xD;ReactElement.createFactory = function (type) {&#xD;  var factory = ReactElement.createElement.bind(null, type);&#xD;  // Expose the type on the factory and the prototype so that it can be&#xD;  // easily accessed on elements. E.g. `&lt;Foo /&gt;.type === Foo`.&#xD;  // This should not be named `constructor` since this may not be the function&#xD;  // that created the element, and it may not even be a constructor.&#xD;  // Legacy hook TODO: Warn if this is accessed&#xD;  factory.type = type;&#xD;  return factory;&#xD;};&#xD;&#xD;ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {&#xD;  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);&#xD;&#xD;  return newElement;&#xD;};&#xD;&#xD;/**&#xD; * Clone and return a new ReactElement using element as the starting point.&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement&#xD; */&#xD;ReactElement.cloneElement = function (element, config, children) {&#xD;  var propName;&#xD;&#xD;  // Original props are copied&#xD;  var props = _assign({}, element.props);&#xD;&#xD;  // Reserved names are extracted&#xD;  var key = element.key;&#xD;  var ref = element.ref;&#xD;  // Self is preserved since the owner is preserved.&#xD;  var self = element._self;&#xD;  // Source is preserved since cloneElement is unlikely to be targeted by a&#xD;  // transpiler, and the original source is probably a better indicator of the&#xD;  // true owner.&#xD;  var source = element._source;&#xD;&#xD;  // Owner will be preserved, unless ref is overridden&#xD;  var owner = element._owner;&#xD;&#xD;  if (config != null) {&#xD;    if (hasValidRef(config)) {&#xD;      // Silently steal the ref from the parent.&#xD;      ref = config.ref;&#xD;      owner = ReactCurrentOwner.current;&#xD;    }&#xD;    if (hasValidKey(config)) {&#xD;      key = &apos;&apos; + config.key;&#xD;    }&#xD;&#xD;    // Remaining properties override existing props&#xD;    var defaultProps;&#xD;    if (element.type &amp;&amp; element.type.defaultProps) {&#xD;      defaultProps = element.type.defaultProps;&#xD;    }&#xD;    for (propName in config) {&#xD;      if (hasOwnProperty.call(config, propName) &amp;&amp; !RESERVED_PROPS.hasOwnProperty(propName)) {&#xD;        if (config[propName] === undefined &amp;&amp; defaultProps !== undefined) {&#xD;          // Resolve default props&#xD;          props[propName] = defaultProps[propName];&#xD;        } else {&#xD;          props[propName] = config[propName];&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  // Children can be more than one argument, and those are transferred onto&#xD;  // the newly allocated props object.&#xD;  var childrenLength = arguments.length - 2;&#xD;  if (childrenLength === 1) {&#xD;    props.children = children;&#xD;  } else if (childrenLength &gt; 1) {&#xD;    var childArray = Array(childrenLength);&#xD;    for (var i = 0; i &lt; childrenLength; i++) {&#xD;      childArray[i] = arguments[i + 2];&#xD;    }&#xD;    props.children = childArray;&#xD;  }&#xD;&#xD;  return ReactElement(element.type, key, ref, self, source, owner, props);&#xD;};&#xD;&#xD;/**&#xD; * Verifies the object is a ReactElement.&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement&#xD; * @param {?object} object&#xD; * @return {boolean} True if `object` is a valid component.&#xD; * @final&#xD; */&#xD;ReactElement.isValidElement = function (object) {&#xD;  return typeof object === &apos;object&apos; &amp;&amp; object !== null &amp;&amp; object.$$typeof === REACT_ELEMENT_TYPE;&#xD;};&#xD;&#xD;module.exports = ReactElement;&#xD;&#xD;/***/ }),&#xD;/* 35 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;/**&#xD; * WARNING: DO NOT manually require this module.&#xD; * This is a replacement for `invariant(...)` used by the error code system&#xD; * and will _only_ be required by the corresponding babel pass.&#xD; * It always throws.&#xD; */&#xD;&#xD;function reactProdInvariant(code) {&#xD;  var argCount = arguments.length - 1;&#xD;&#xD;  var message = &apos;Minified React error #&apos; + code + &apos;; visit &apos; + &apos;http://facebook.github.io/react/docs/error-decoder.html?invariant=&apos; + code;&#xD;&#xD;  for (var argIdx = 0; argIdx &lt; argCount; argIdx++) {&#xD;    message += &apos;&amp;args[]=&apos; + encodeURIComponent(arguments[argIdx + 1]);&#xD;  }&#xD;&#xD;  message += &apos; for the full message or use the non-minified dev environment&apos; + &apos; for full errors and additional helpful warnings.&apos;;&#xD;&#xD;  var error = new Error(message);&#xD;  error.name = &apos;Invariant Violation&apos;;&#xD;  error.framesToPop = 1; // we don&apos;t care about reactProdInvariant&apos;s own frame&#xD;&#xD;  throw error;&#xD;}&#xD;&#xD;module.exports = reactProdInvariant;&#xD;&#xD;/***/ }),&#xD;/* 36 */,&#xD;/* 37 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;module.exports = __webpack_require__(407);&#xD;&#xD;&#xD;/***/ }),&#xD;/* 38 */,&#xD;/* 39 */,&#xD;/* 40 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var emptyObject = {};&#xD;&#xD;if (true) {&#xD;  Object.freeze(emptyObject);&#xD;}&#xD;&#xD;module.exports = emptyObject;&#xD;&#xD;/***/ }),&#xD;/* 41 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMNamespaces = __webpack_require__(86);&#xD;var setInnerHTML = __webpack_require__(68);&#xD;&#xD;var createMicrosoftUnsafeLocalFunction = __webpack_require__(93);&#xD;var setTextContent = __webpack_require__(173);&#xD;&#xD;var ELEMENT_NODE_TYPE = 1;&#xD;var DOCUMENT_FRAGMENT_NODE_TYPE = 11;&#xD;&#xD;/**&#xD; * In IE (8-11) and Edge, appending nodes with no children is dramatically&#xD; * faster than appending a full subtree, so we essentially queue up the&#xD; * .appendChild calls here and apply them so each node is added to its parent&#xD; * before any children are added.&#xD; *&#xD; * In other browsers, doing so is slower or neutral compared to the other order&#xD; * (in Firefox, twice as slow) so we only do this inversion in IE.&#xD; *&#xD; * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.&#xD; */&#xD;var enableLazy = typeof document !== &apos;undefined&apos; &amp;&amp; typeof document.documentMode === &apos;number&apos; || typeof navigator !== &apos;undefined&apos; &amp;&amp; typeof navigator.userAgent === &apos;string&apos; &amp;&amp; /\bEdge\/\d/.test(navigator.userAgent);&#xD;&#xD;function insertTreeChildren(tree) {&#xD;  if (!enableLazy) {&#xD;    return;&#xD;  }&#xD;  var node = tree.node;&#xD;  var children = tree.children;&#xD;  if (children.length) {&#xD;    for (var i = 0; i &lt; children.length; i++) {&#xD;      insertTreeBefore(node, children[i], null);&#xD;    }&#xD;  } else if (tree.html != null) {&#xD;    setInnerHTML(node, tree.html);&#xD;  } else if (tree.text != null) {&#xD;    setTextContent(node, tree.text);&#xD;  }&#xD;}&#xD;&#xD;var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {&#xD;  // DocumentFragments aren&apos;t actually part of the DOM after insertion so&#xD;  // appending children won&apos;t update the DOM. We need to ensure the fragment&#xD;  // is properly populated first, breaking out of our lazy approach for just&#xD;  // this level. Also, some &lt;object&gt; plugins (like Flash Player) will read&#xD;  // &lt;param&gt; nodes immediately upon insertion into the DOM, so &lt;object&gt;&#xD;  // must also be populated prior to insertion into the DOM.&#xD;  if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE &amp;&amp; tree.node.nodeName.toLowerCase() === &apos;object&apos; &amp;&amp; (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {&#xD;    insertTreeChildren(tree);&#xD;    parentNode.insertBefore(tree.node, referenceNode);&#xD;  } else {&#xD;    parentNode.insertBefore(tree.node, referenceNode);&#xD;    insertTreeChildren(tree);&#xD;  }&#xD;});&#xD;&#xD;function replaceChildWithTree(oldNode, newTree) {&#xD;  oldNode.parentNode.replaceChild(newTree.node, oldNode);&#xD;  insertTreeChildren(newTree);&#xD;}&#xD;&#xD;function queueChild(parentTree, childTree) {&#xD;  if (enableLazy) {&#xD;    parentTree.children.push(childTree);&#xD;  } else {&#xD;    parentTree.node.appendChild(childTree.node);&#xD;  }&#xD;}&#xD;&#xD;function queueHTML(tree, html) {&#xD;  if (enableLazy) {&#xD;    tree.html = html;&#xD;  } else {&#xD;    setInnerHTML(tree.node, html);&#xD;  }&#xD;}&#xD;&#xD;function queueText(tree, text) {&#xD;  if (enableLazy) {&#xD;    tree.text = text;&#xD;  } else {&#xD;    setTextContent(tree.node, text);&#xD;  }&#xD;}&#xD;&#xD;function toString() {&#xD;  return this.node.nodeName;&#xD;}&#xD;&#xD;function DOMLazyTree(node) {&#xD;  return {&#xD;    node: node,&#xD;    children: [],&#xD;    html: null,&#xD;    text: null,&#xD;    toString: toString&#xD;  };&#xD;}&#xD;&#xD;DOMLazyTree.insertTreeBefore = insertTreeBefore;&#xD;DOMLazyTree.replaceChildWithTree = replaceChildWithTree;&#xD;DOMLazyTree.queueChild = queueChild;&#xD;DOMLazyTree.queueHTML = queueHTML;&#xD;DOMLazyTree.queueText = queueText;&#xD;&#xD;module.exports = DOMLazyTree;&#xD;&#xD;/***/ }),&#xD;/* 42 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactRef = __webpack_require__(436);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;/**&#xD; * Helper to call ReactRef.attachRefs with this composite component, split out&#xD; * to avoid allocations in the transaction mount-ready queue.&#xD; */&#xD;function attachRefs() {&#xD;  ReactRef.attachRefs(this, this._currentElement);&#xD;}&#xD;&#xD;var ReactReconciler = {&#xD;&#xD;  /**&#xD;   * Initializes the component, renders markup, and registers event listeners.&#xD;   *&#xD;   * @param {ReactComponent} internalInstance&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {?object} the containing host component instance&#xD;   * @param {?object} info about the host container&#xD;   * @return {?string} Rendered markup to be inserted into the DOM.&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots&#xD;  ) {&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);&#xD;      }&#xD;    }&#xD;    var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);&#xD;    if (internalInstance._currentElement &amp;&amp; internalInstance._currentElement.ref != null) {&#xD;      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);&#xD;    }&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);&#xD;      }&#xD;    }&#xD;    return markup;&#xD;  },&#xD;&#xD;  /**&#xD;   * Returns a value that can be passed to&#xD;   * ReactComponentEnvironment.replaceNodeWithMarkup.&#xD;   */&#xD;  getHostNode: function (internalInstance) {&#xD;    return internalInstance.getHostNode();&#xD;  },&#xD;&#xD;  /**&#xD;   * Releases any resources allocated by `mountComponent`.&#xD;   *&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  unmountComponent: function (internalInstance, safely) {&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);&#xD;      }&#xD;    }&#xD;    ReactRef.detachRefs(internalInstance, internalInstance._currentElement);&#xD;    internalInstance.unmountComponent(safely);&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Update a component using a new element.&#xD;   *&#xD;   * @param {ReactComponent} internalInstance&#xD;   * @param {ReactElement} nextElement&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {object} context&#xD;   * @internal&#xD;   */&#xD;  receiveComponent: function (internalInstance, nextElement, transaction, context) {&#xD;    var prevElement = internalInstance._currentElement;&#xD;&#xD;    if (nextElement === prevElement &amp;&amp; context === internalInstance._context) {&#xD;      // Since elements are immutable after the owner is rendered,&#xD;      // we can do a cheap identity compare here to determine if this is a&#xD;      // superfluous reconcile. It&apos;s possible for state to be mutable but such&#xD;      // change should trigger an update of the owner which would recreate&#xD;      // the element. We explicitly check for the existence of an owner since&#xD;      // it&apos;s possible for an element created outside a composite to be&#xD;      // deeply mutated and reused.&#xD;&#xD;      // TODO: Bailing out early is just a perf optimization right?&#xD;      // TODO: Removing the return statement should affect correctness?&#xD;      return;&#xD;    }&#xD;&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);&#xD;      }&#xD;    }&#xD;&#xD;    var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);&#xD;&#xD;    if (refsChanged) {&#xD;      ReactRef.detachRefs(internalInstance, prevElement);&#xD;    }&#xD;&#xD;    internalInstance.receiveComponent(nextElement, transaction, context);&#xD;&#xD;    if (refsChanged &amp;&amp; internalInstance._currentElement &amp;&amp; internalInstance._currentElement.ref != null) {&#xD;      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);&#xD;    }&#xD;&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Flush any dirty changes in a component.&#xD;   *&#xD;   * @param {ReactComponent} internalInstance&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @internal&#xD;   */&#xD;  performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {&#xD;    if (internalInstance._updateBatchNumber !== updateBatchNumber) {&#xD;      // The component&apos;s enqueued batch number should always be the current&#xD;      // batch or the following one.&#xD;       true ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, &apos;performUpdateIfNecessary: Unexpected batch number (current %s, &apos; + &apos;pending %s)&apos;, updateBatchNumber, internalInstance._updateBatchNumber) : void 0;&#xD;      return;&#xD;    }&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);&#xD;      }&#xD;    }&#xD;    internalInstance.performUpdateIfNecessary(transaction);&#xD;    if (true) {&#xD;      if (internalInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactReconciler;&#xD;&#xD;/***/ }),&#xD;/* 43 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var ReactChildren = __webpack_require__(487);&#xD;var ReactComponent = __webpack_require__(101);&#xD;var ReactPureComponent = __webpack_require__(492);&#xD;var ReactClass = __webpack_require__(488);&#xD;var ReactDOMFactories = __webpack_require__(489);&#xD;var ReactElement = __webpack_require__(34);&#xD;var ReactPropTypes = __webpack_require__(490);&#xD;var ReactVersion = __webpack_require__(493);&#xD;&#xD;var onlyChild = __webpack_require__(496);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var createElement = ReactElement.createElement;&#xD;var createFactory = ReactElement.createFactory;&#xD;var cloneElement = ReactElement.cloneElement;&#xD;&#xD;if (true) {&#xD;  var canDefineProperty = __webpack_require__(72);&#xD;  var ReactElementValidator = __webpack_require__(185);&#xD;  var didWarnPropTypesDeprecated = false;&#xD;  createElement = ReactElementValidator.createElement;&#xD;  createFactory = ReactElementValidator.createFactory;&#xD;  cloneElement = ReactElementValidator.cloneElement;&#xD;}&#xD;&#xD;var __spread = _assign;&#xD;&#xD;if (true) {&#xD;  var warned = false;&#xD;  __spread = function () {&#xD;     true ? warning(warned, &apos;React.__spread is deprecated and should not be used. Use &apos; + &apos;Object.assign directly or another helper function with similar &apos; + &apos;semantics. You may be seeing this warning due to your compiler. &apos; + &apos;See https://fb.me/react-spread-deprecation for more details.&apos;) : void 0;&#xD;    warned = true;&#xD;    return _assign.apply(null, arguments);&#xD;  };&#xD;}&#xD;&#xD;var React = {&#xD;&#xD;  // Modern&#xD;&#xD;  Children: {&#xD;    map: ReactChildren.map,&#xD;    forEach: ReactChildren.forEach,&#xD;    count: ReactChildren.count,&#xD;    toArray: ReactChildren.toArray,&#xD;    only: onlyChild&#xD;  },&#xD;&#xD;  Component: ReactComponent,&#xD;  PureComponent: ReactPureComponent,&#xD;&#xD;  createElement: createElement,&#xD;  cloneElement: cloneElement,&#xD;  isValidElement: ReactElement.isValidElement,&#xD;&#xD;  // Classic&#xD;&#xD;  PropTypes: ReactPropTypes,&#xD;  createClass: ReactClass.createClass,&#xD;  createFactory: createFactory,&#xD;  createMixin: function (mixin) {&#xD;    // Currently a noop. Will be used to validate and trace mixins.&#xD;    return mixin;&#xD;  },&#xD;&#xD;  // This looks DOM specific but these are actually isomorphic helpers&#xD;  // since they are just generating DOM strings.&#xD;  DOM: ReactDOMFactories,&#xD;&#xD;  version: ReactVersion,&#xD;&#xD;  // Deprecated hook for JSX spread, don&apos;t use this for anything.&#xD;  __spread: __spread&#xD;};&#xD;&#xD;// TODO: Fix tests so that this deprecation warning doesn&apos;t cause failures.&#xD;if (true) {&#xD;  if (canDefineProperty) {&#xD;    Object.defineProperty(React, &apos;PropTypes&apos;, {&#xD;      get: function () {&#xD;         true ? warning(didWarnPropTypesDeprecated, &apos;Accessing PropTypes via the main React package is deprecated. Use &apos; + &apos;the prop-types package from npm instead.&apos;) : void 0;&#xD;        didWarnPropTypesDeprecated = true;&#xD;        return ReactPropTypes;&#xD;      }&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;module.exports = React;&#xD;&#xD;/***/ }),&#xD;/* 44 */,&#xD;/* 45 */,&#xD;/* 46 */,&#xD;/* 47 */,&#xD;/* 48 */,&#xD;/* 49 */,&#xD;/* 50 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var EventPluginRegistry = __webpack_require__(63);&#xD;var EventPluginUtils = __webpack_require__(87);&#xD;var ReactErrorUtils = __webpack_require__(91);&#xD;&#xD;var accumulateInto = __webpack_require__(167);&#xD;var forEachAccumulated = __webpack_require__(168);&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Internal store for event listeners&#xD; */&#xD;var listenerBank = {};&#xD;&#xD;/**&#xD; * Internal queue of events that have accumulated their dispatches and are&#xD; * waiting to have their dispatches executed.&#xD; */&#xD;var eventQueue = null;&#xD;&#xD;/**&#xD; * Dispatches an event and releases it back into the pool, unless persistent.&#xD; *&#xD; * @param {?object} event Synthetic event to be dispatched.&#xD; * @param {boolean} simulated If the event is simulated (changes exn behavior)&#xD; * @private&#xD; */&#xD;var executeDispatchesAndRelease = function (event, simulated) {&#xD;  if (event) {&#xD;    EventPluginUtils.executeDispatchesInOrder(event, simulated);&#xD;&#xD;    if (!event.isPersistent()) {&#xD;      event.constructor.release(event);&#xD;    }&#xD;  }&#xD;};&#xD;var executeDispatchesAndReleaseSimulated = function (e) {&#xD;  return executeDispatchesAndRelease(e, true);&#xD;};&#xD;var executeDispatchesAndReleaseTopLevel = function (e) {&#xD;  return executeDispatchesAndRelease(e, false);&#xD;};&#xD;&#xD;var getDictionaryKey = function (inst) {&#xD;  // Prevents V8 performance issue:&#xD;  // https://github.com/facebook/react/pull/7232&#xD;  return &apos;.&apos; + inst._rootNodeID;&#xD;};&#xD;&#xD;function isInteractive(tag) {&#xD;  return tag === &apos;button&apos; || tag === &apos;input&apos; || tag === &apos;select&apos; || tag === &apos;textarea&apos;;&#xD;}&#xD;&#xD;function shouldPreventMouseEvent(name, type, props) {&#xD;  switch (name) {&#xD;    case &apos;onClick&apos;:&#xD;    case &apos;onClickCapture&apos;:&#xD;    case &apos;onDoubleClick&apos;:&#xD;    case &apos;onDoubleClickCapture&apos;:&#xD;    case &apos;onMouseDown&apos;:&#xD;    case &apos;onMouseDownCapture&apos;:&#xD;    case &apos;onMouseMove&apos;:&#xD;    case &apos;onMouseMoveCapture&apos;:&#xD;    case &apos;onMouseUp&apos;:&#xD;    case &apos;onMouseUpCapture&apos;:&#xD;      return !!(props.disabled &amp;&amp; isInteractive(type));&#xD;    default:&#xD;      return false;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * This is a unified interface for event plugins to be installed and configured.&#xD; *&#xD; * Event plugins can implement the following properties:&#xD; *&#xD; *   `extractEvents` {function(string, DOMEventTarget, string, object): *}&#xD; *     Required. When a top-level event is fired, this method is expected to&#xD; *     extract synthetic events that will in turn be queued and dispatched.&#xD; *&#xD; *   `eventTypes` {object}&#xD; *     Optional, plugins that fire events must publish a mapping of registration&#xD; *     names that are used to register listeners. Values of this mapping must&#xD; *     be objects that contain `registrationName` or `phasedRegistrationNames`.&#xD; *&#xD; *   `executeDispatch` {function(object, function, string)}&#xD; *     Optional, allows plugins to override how an event gets dispatched. By&#xD; *     default, the listener is simply invoked.&#xD; *&#xD; * Each plugin that is injected into `EventsPluginHub` is immediately operable.&#xD; *&#xD; * @public&#xD; */&#xD;var EventPluginHub = {&#xD;&#xD;  /**&#xD;   * Methods for injecting dependencies.&#xD;   */&#xD;  injection: {&#xD;&#xD;    /**&#xD;     * @param {array} InjectedEventPluginOrder&#xD;     * @public&#xD;     */&#xD;    injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,&#xD;&#xD;    /**&#xD;     * @param {object} injectedNamesToPlugins Map from names to plugin modules.&#xD;     */&#xD;    injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName&#xD;&#xD;  },&#xD;&#xD;  /**&#xD;   * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.&#xD;   *&#xD;   * @param {object} inst The instance, which is the source of events.&#xD;   * @param {string} registrationName Name of listener (e.g. `onClick`).&#xD;   * @param {function} listener The callback to store.&#xD;   */&#xD;  putListener: function (inst, registrationName, listener) {&#xD;    !(typeof listener === &apos;function&apos;) ?  true ? invariant(false, &apos;Expected %s listener to be a function, instead got type %s&apos;, registrationName, typeof listener) : _prodInvariant(&apos;94&apos;, registrationName, typeof listener) : void 0;&#xD;&#xD;    var key = getDictionaryKey(inst);&#xD;    var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});&#xD;    bankForRegistrationName[key] = listener;&#xD;&#xD;    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];&#xD;    if (PluginModule &amp;&amp; PluginModule.didPutListener) {&#xD;      PluginModule.didPutListener(inst, registrationName, listener);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {object} inst The instance, which is the source of events.&#xD;   * @param {string} registrationName Name of listener (e.g. `onClick`).&#xD;   * @return {?function} The stored callback.&#xD;   */&#xD;  getListener: function (inst, registrationName) {&#xD;    // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not&#xD;    // live here; needs to be moved to a better place soon&#xD;    var bankForRegistrationName = listenerBank[registrationName];&#xD;    if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {&#xD;      return null;&#xD;    }&#xD;    var key = getDictionaryKey(inst);&#xD;    return bankForRegistrationName &amp;&amp; bankForRegistrationName[key];&#xD;  },&#xD;&#xD;  /**&#xD;   * Deletes a listener from the registration bank.&#xD;   *&#xD;   * @param {object} inst The instance, which is the source of events.&#xD;   * @param {string} registrationName Name of listener (e.g. `onClick`).&#xD;   */&#xD;  deleteListener: function (inst, registrationName) {&#xD;    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];&#xD;    if (PluginModule &amp;&amp; PluginModule.willDeleteListener) {&#xD;      PluginModule.willDeleteListener(inst, registrationName);&#xD;    }&#xD;&#xD;    var bankForRegistrationName = listenerBank[registrationName];&#xD;    // TODO: This should never be null -- when is it?&#xD;    if (bankForRegistrationName) {&#xD;      var key = getDictionaryKey(inst);&#xD;      delete bankForRegistrationName[key];&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Deletes all listeners for the DOM element with the supplied ID.&#xD;   *&#xD;   * @param {object} inst The instance, which is the source of events.&#xD;   */&#xD;  deleteAllListeners: function (inst) {&#xD;    var key = getDictionaryKey(inst);&#xD;    for (var registrationName in listenerBank) {&#xD;      if (!listenerBank.hasOwnProperty(registrationName)) {&#xD;        continue;&#xD;      }&#xD;&#xD;      if (!listenerBank[registrationName][key]) {&#xD;        continue;&#xD;      }&#xD;&#xD;      var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];&#xD;      if (PluginModule &amp;&amp; PluginModule.willDeleteListener) {&#xD;        PluginModule.willDeleteListener(inst, registrationName);&#xD;      }&#xD;&#xD;      delete listenerBank[registrationName][key];&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Allows registered plugins an opportunity to extract events from top-level&#xD;   * native browser events.&#xD;   *&#xD;   * @return {*} An accumulation of synthetic events.&#xD;   * @internal&#xD;   */&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    var events;&#xD;    var plugins = EventPluginRegistry.plugins;&#xD;    for (var i = 0; i &lt; plugins.length; i++) {&#xD;      // Not every plugin in the ordering may be loaded at runtime.&#xD;      var possiblePlugin = plugins[i];&#xD;      if (possiblePlugin) {&#xD;        var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);&#xD;        if (extractedEvents) {&#xD;          events = accumulateInto(events, extractedEvents);&#xD;        }&#xD;      }&#xD;    }&#xD;    return events;&#xD;  },&#xD;&#xD;  /**&#xD;   * Enqueues a synthetic event that should be dispatched when&#xD;   * `processEventQueue` is invoked.&#xD;   *&#xD;   * @param {*} events An accumulation of synthetic events.&#xD;   * @internal&#xD;   */&#xD;  enqueueEvents: function (events) {&#xD;    if (events) {&#xD;      eventQueue = accumulateInto(eventQueue, events);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Dispatches all synthetic events on the event queue.&#xD;   *&#xD;   * @internal&#xD;   */&#xD;  processEventQueue: function (simulated) {&#xD;    // Set `eventQueue` to null before processing it so that we can tell if more&#xD;    // events get enqueued while processing.&#xD;    var processingEventQueue = eventQueue;&#xD;    eventQueue = null;&#xD;    if (simulated) {&#xD;      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);&#xD;    } else {&#xD;      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);&#xD;    }&#xD;    !!eventQueue ?  true ? invariant(false, &apos;processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.&apos;) : _prodInvariant(&apos;95&apos;) : void 0;&#xD;    // This would be a good time to rethrow if any of the event handlers threw.&#xD;    ReactErrorUtils.rethrowCaughtError();&#xD;  },&#xD;&#xD;  /**&#xD;   * These are needed for tests only. Do not use!&#xD;   */&#xD;  __purge: function () {&#xD;    listenerBank = {};&#xD;  },&#xD;&#xD;  __getListenerBank: function () {&#xD;    return listenerBank;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = EventPluginHub;&#xD;&#xD;/***/ }),&#xD;/* 51 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPluginHub = __webpack_require__(50);&#xD;var EventPluginUtils = __webpack_require__(87);&#xD;&#xD;var accumulateInto = __webpack_require__(167);&#xD;var forEachAccumulated = __webpack_require__(168);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var getListener = EventPluginHub.getListener;&#xD;&#xD;/**&#xD; * Some event types have a notion of different registration names for different&#xD; * "phases" of propagation. This finds listeners by a given phase.&#xD; */&#xD;function listenerAtPhase(inst, event, propagationPhase) {&#xD;  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];&#xD;  return getListener(inst, registrationName);&#xD;}&#xD;&#xD;/**&#xD; * Tags a `SyntheticEvent` with dispatched listeners. Creating this function&#xD; * here, allows us to not have to bind or create functions for each event.&#xD; * Mutating the event&apos;s members allows us to not have to create a wrapping&#xD; * "dispatch" object that pairs the event with the listener.&#xD; */&#xD;function accumulateDirectionalDispatches(inst, phase, event) {&#xD;  if (true) {&#xD;     true ? warning(inst, &apos;Dispatching inst must not be null&apos;) : void 0;&#xD;  }&#xD;  var listener = listenerAtPhase(inst, event, phase);&#xD;  if (listener) {&#xD;    event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);&#xD;    event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Collect dispatches (must be entirely collected before dispatching - see unit&#xD; * tests). Lazily allocate the array to conserve memory.  We must loop through&#xD; * each event and perform the traversal for each one. We cannot perform a&#xD; * single traversal for the entire collection of events because each event may&#xD; * have a different target.&#xD; */&#xD;function accumulateTwoPhaseDispatchesSingle(event) {&#xD;  if (event &amp;&amp; event.dispatchConfig.phasedRegistrationNames) {&#xD;    EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.&#xD; */&#xD;function accumulateTwoPhaseDispatchesSingleSkipTarget(event) {&#xD;  if (event &amp;&amp; event.dispatchConfig.phasedRegistrationNames) {&#xD;    var targetInst = event._targetInst;&#xD;    var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;&#xD;    EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Accumulates without regard to direction, does not look for phased&#xD; * registration names. Same as `accumulateDirectDispatchesSingle` but without&#xD; * requiring that the `dispatchMarker` be the same as the dispatched ID.&#xD; */&#xD;function accumulateDispatches(inst, ignoredDirection, event) {&#xD;  if (event &amp;&amp; event.dispatchConfig.registrationName) {&#xD;    var registrationName = event.dispatchConfig.registrationName;&#xD;    var listener = getListener(inst, registrationName);&#xD;    if (listener) {&#xD;      event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);&#xD;      event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Accumulates dispatches on an `SyntheticEvent`, but only for the&#xD; * `dispatchMarker`.&#xD; * @param {SyntheticEvent} event&#xD; */&#xD;function accumulateDirectDispatchesSingle(event) {&#xD;  if (event &amp;&amp; event.dispatchConfig.registrationName) {&#xD;    accumulateDispatches(event._targetInst, null, event);&#xD;  }&#xD;}&#xD;&#xD;function accumulateTwoPhaseDispatches(events) {&#xD;  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);&#xD;}&#xD;&#xD;function accumulateTwoPhaseDispatchesSkipTarget(events) {&#xD;  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);&#xD;}&#xD;&#xD;function accumulateEnterLeaveDispatches(leave, enter, from, to) {&#xD;  EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);&#xD;}&#xD;&#xD;function accumulateDirectDispatches(events) {&#xD;  forEachAccumulated(events, accumulateDirectDispatchesSingle);&#xD;}&#xD;&#xD;/**&#xD; * A small set of propagation patterns, each of which will accept a small amount&#xD; * of information, and generate a set of "dispatch ready event objects" - which&#xD; * are sets of events that have already been annotated with a set of dispatched&#xD; * listener functions/ids. The API is designed this way to discourage these&#xD; * propagation strategies from actually executing the dispatches, since we&#xD; * always want to collect the entire set of dispatches before executing event a&#xD; * single one.&#xD; *&#xD; * @constructor EventPropagators&#xD; */&#xD;var EventPropagators = {&#xD;  accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,&#xD;  accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,&#xD;  accumulateDirectDispatches: accumulateDirectDispatches,&#xD;  accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches&#xD;};&#xD;&#xD;module.exports = EventPropagators;&#xD;&#xD;/***/ }),&#xD;/* 52 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * `ReactInstanceMap` maintains a mapping from a public facing stateful&#xD; * instance (key) and the internal representation (value). This allows public&#xD; * methods to accept the user facing instance as an argument and map them back&#xD; * to internal methods.&#xD; */&#xD;&#xD;// TODO: Replace this with ES6: var ReactInstanceMap = new Map();&#xD;&#xD;var ReactInstanceMap = {&#xD;&#xD;  /**&#xD;   * This API should be called `delete` but we&apos;d have to make sure to always&#xD;   * transform these to strings for IE support. When this transform is fully&#xD;   * supported we can rename it.&#xD;   */&#xD;  remove: function (key) {&#xD;    key._reactInternalInstance = undefined;&#xD;  },&#xD;&#xD;  get: function (key) {&#xD;    return key._reactInternalInstance;&#xD;  },&#xD;&#xD;  has: function (key) {&#xD;    return key._reactInternalInstance !== undefined;&#xD;  },&#xD;&#xD;  set: function (key, value) {&#xD;    key._reactInternalInstance = value;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactInstanceMap;&#xD;&#xD;/***/ }),&#xD;/* 53 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;var getEventTarget = __webpack_require__(96);&#xD;&#xD;/**&#xD; * @interface UIEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var UIEventInterface = {&#xD;  view: function (event) {&#xD;    if (event.view) {&#xD;      return event.view;&#xD;    }&#xD;&#xD;    var target = getEventTarget(event);&#xD;    if (target.window === target) {&#xD;      // target is a window object&#xD;      return target;&#xD;    }&#xD;&#xD;    var doc = target.ownerDocument;&#xD;    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.&#xD;    if (doc) {&#xD;      return doc.defaultView || doc.parentWindow;&#xD;    } else {&#xD;      return window;&#xD;    }&#xD;  },&#xD;  detail: function (event) {&#xD;    return event.detail || 0;&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticEvent}&#xD; */&#xD;function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);&#xD;&#xD;module.exports = SyntheticUIEvent;&#xD;&#xD;/***/ }),&#xD;/* 54 */,&#xD;/* 55 */,&#xD;/* 56 */,&#xD;/* 57 */,&#xD;/* 58 */,&#xD;/* 59 */,&#xD;/* 60 */,&#xD;/* 61 */,&#xD;/* 62 */,&#xD;/* 63 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Injectable ordering of event plugins.&#xD; */&#xD;var eventPluginOrder = null;&#xD;&#xD;/**&#xD; * Injectable mapping from names to event plugin modules.&#xD; */&#xD;var namesToPlugins = {};&#xD;&#xD;/**&#xD; * Recomputes the plugin list using the injected plugins and plugin ordering.&#xD; *&#xD; * @private&#xD; */&#xD;function recomputePluginOrdering() {&#xD;  if (!eventPluginOrder) {&#xD;    // Wait until an `eventPluginOrder` is injected.&#xD;    return;&#xD;  }&#xD;  for (var pluginName in namesToPlugins) {&#xD;    var pluginModule = namesToPlugins[pluginName];&#xD;    var pluginIndex = eventPluginOrder.indexOf(pluginName);&#xD;    !(pluginIndex &gt; -1) ?  true ? invariant(false, &apos;EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.&apos;, pluginName) : _prodInvariant(&apos;96&apos;, pluginName) : void 0;&#xD;    if (EventPluginRegistry.plugins[pluginIndex]) {&#xD;      continue;&#xD;    }&#xD;    !pluginModule.extractEvents ?  true ? invariant(false, &apos;EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.&apos;, pluginName) : _prodInvariant(&apos;97&apos;, pluginName) : void 0;&#xD;    EventPluginRegistry.plugins[pluginIndex] = pluginModule;&#xD;    var publishedEvents = pluginModule.eventTypes;&#xD;    for (var eventName in publishedEvents) {&#xD;      !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ?  true ? invariant(false, &apos;EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.&apos;, eventName, pluginName) : _prodInvariant(&apos;98&apos;, eventName, pluginName) : void 0;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Publishes an event so that it can be dispatched by the supplied plugin.&#xD; *&#xD; * @param {object} dispatchConfig Dispatch configuration for the event.&#xD; * @param {object} PluginModule Plugin publishing the event.&#xD; * @return {boolean} True if the event was successfully published.&#xD; * @private&#xD; */&#xD;function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {&#xD;  !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ?  true ? invariant(false, &apos;EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.&apos;, eventName) : _prodInvariant(&apos;99&apos;, eventName) : void 0;&#xD;  EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;&#xD;&#xD;  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;&#xD;  if (phasedRegistrationNames) {&#xD;    for (var phaseName in phasedRegistrationNames) {&#xD;      if (phasedRegistrationNames.hasOwnProperty(phaseName)) {&#xD;        var phasedRegistrationName = phasedRegistrationNames[phaseName];&#xD;        publishRegistrationName(phasedRegistrationName, pluginModule, eventName);&#xD;      }&#xD;    }&#xD;    return true;&#xD;  } else if (dispatchConfig.registrationName) {&#xD;    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);&#xD;    return true;&#xD;  }&#xD;  return false;&#xD;}&#xD;&#xD;/**&#xD; * Publishes a registration name that is used to identify dispatched events and&#xD; * can be used with `EventPluginHub.putListener` to register listeners.&#xD; *&#xD; * @param {string} registrationName Registration name to add.&#xD; * @param {object} PluginModule Plugin publishing the event.&#xD; * @private&#xD; */&#xD;function publishRegistrationName(registrationName, pluginModule, eventName) {&#xD;  !!EventPluginRegistry.registrationNameModules[registrationName] ?  true ? invariant(false, &apos;EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.&apos;, registrationName) : _prodInvariant(&apos;100&apos;, registrationName) : void 0;&#xD;  EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;&#xD;  EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;&#xD;&#xD;  if (true) {&#xD;    var lowerCasedName = registrationName.toLowerCase();&#xD;    EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;&#xD;&#xD;    if (registrationName === &apos;onDoubleClick&apos;) {&#xD;      EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Registers plugins so that they can extract and dispatch events.&#xD; *&#xD; * @see {EventPluginHub}&#xD; */&#xD;var EventPluginRegistry = {&#xD;&#xD;  /**&#xD;   * Ordered list of injected plugins.&#xD;   */&#xD;  plugins: [],&#xD;&#xD;  /**&#xD;   * Mapping from event name to dispatch config&#xD;   */&#xD;  eventNameDispatchConfigs: {},&#xD;&#xD;  /**&#xD;   * Mapping from registration name to plugin module&#xD;   */&#xD;  registrationNameModules: {},&#xD;&#xD;  /**&#xD;   * Mapping from registration name to event name&#xD;   */&#xD;  registrationNameDependencies: {},&#xD;&#xD;  /**&#xD;   * Mapping from lowercase registration names to the properly cased version,&#xD;   * used to warn in the case of missing event handlers. Available&#xD;   * only in __DEV__.&#xD;   * @type {Object}&#xD;   */&#xD;  possibleRegistrationNames:  true ? {} : null,&#xD;  // Trust the developer to only use possibleRegistrationNames in __DEV__&#xD;&#xD;  /**&#xD;   * Injects an ordering of plugins (by plugin name). This allows the ordering&#xD;   * to be decoupled from injection of the actual plugins so that ordering is&#xD;   * always deterministic regardless of packaging, on-the-fly injection, etc.&#xD;   *&#xD;   * @param {array} InjectedEventPluginOrder&#xD;   * @internal&#xD;   * @see {EventPluginHub.injection.injectEventPluginOrder}&#xD;   */&#xD;  injectEventPluginOrder: function (injectedEventPluginOrder) {&#xD;    !!eventPluginOrder ?  true ? invariant(false, &apos;EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.&apos;) : _prodInvariant(&apos;101&apos;) : void 0;&#xD;    // Clone the ordering so it cannot be dynamically mutated.&#xD;    eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);&#xD;    recomputePluginOrdering();&#xD;  },&#xD;&#xD;  /**&#xD;   * Injects plugins to be used by `EventPluginHub`. The plugin names must be&#xD;   * in the ordering injected by `injectEventPluginOrder`.&#xD;   *&#xD;   * Plugins can be injected as part of page initialization or on-the-fly.&#xD;   *&#xD;   * @param {object} injectedNamesToPlugins Map from names to plugin modules.&#xD;   * @internal&#xD;   * @see {EventPluginHub.injection.injectEventPluginsByName}&#xD;   */&#xD;  injectEventPluginsByName: function (injectedNamesToPlugins) {&#xD;    var isOrderingDirty = false;&#xD;    for (var pluginName in injectedNamesToPlugins) {&#xD;      if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {&#xD;        continue;&#xD;      }&#xD;      var pluginModule = injectedNamesToPlugins[pluginName];&#xD;      if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {&#xD;        !!namesToPlugins[pluginName] ?  true ? invariant(false, &apos;EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.&apos;, pluginName) : _prodInvariant(&apos;102&apos;, pluginName) : void 0;&#xD;        namesToPlugins[pluginName] = pluginModule;&#xD;        isOrderingDirty = true;&#xD;      }&#xD;    }&#xD;    if (isOrderingDirty) {&#xD;      recomputePluginOrdering();&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Looks up the plugin for the supplied event.&#xD;   *&#xD;   * @param {object} event A synthetic event.&#xD;   * @return {?object} The plugin that created the supplied event.&#xD;   * @internal&#xD;   */&#xD;  getPluginModuleForEvent: function (event) {&#xD;    var dispatchConfig = event.dispatchConfig;&#xD;    if (dispatchConfig.registrationName) {&#xD;      return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;&#xD;    }&#xD;    if (dispatchConfig.phasedRegistrationNames !== undefined) {&#xD;      // pulling phasedRegistrationNames out of dispatchConfig helps Flow see&#xD;      // that it is not undefined.&#xD;      var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;&#xD;&#xD;      for (var phase in phasedRegistrationNames) {&#xD;        if (!phasedRegistrationNames.hasOwnProperty(phase)) {&#xD;          continue;&#xD;        }&#xD;        var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];&#xD;        if (pluginModule) {&#xD;          return pluginModule;&#xD;        }&#xD;      }&#xD;    }&#xD;    return null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Exposed for unit testing.&#xD;   * @private&#xD;   */&#xD;  _resetEventPlugins: function () {&#xD;    eventPluginOrder = null;&#xD;    for (var pluginName in namesToPlugins) {&#xD;      if (namesToPlugins.hasOwnProperty(pluginName)) {&#xD;        delete namesToPlugins[pluginName];&#xD;      }&#xD;    }&#xD;    EventPluginRegistry.plugins.length = 0;&#xD;&#xD;    var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;&#xD;    for (var eventName in eventNameDispatchConfigs) {&#xD;      if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {&#xD;        delete eventNameDispatchConfigs[eventName];&#xD;      }&#xD;    }&#xD;&#xD;    var registrationNameModules = EventPluginRegistry.registrationNameModules;&#xD;    for (var registrationName in registrationNameModules) {&#xD;      if (registrationNameModules.hasOwnProperty(registrationName)) {&#xD;        delete registrationNameModules[registrationName];&#xD;      }&#xD;    }&#xD;&#xD;    if (true) {&#xD;      var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;&#xD;      for (var lowerCasedName in possibleRegistrationNames) {&#xD;        if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {&#xD;          delete possibleRegistrationNames[lowerCasedName];&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = EventPluginRegistry;&#xD;&#xD;/***/ }),&#xD;/* 64 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var EventPluginRegistry = __webpack_require__(63);&#xD;var ReactEventEmitterMixin = __webpack_require__(426);&#xD;var ViewportMetrics = __webpack_require__(166);&#xD;&#xD;var getVendorPrefixedEventName = __webpack_require__(461);&#xD;var isEventSupported = __webpack_require__(97);&#xD;&#xD;/**&#xD; * Summary of `ReactBrowserEventEmitter` event handling:&#xD; *&#xD; *  - Top-level delegation is used to trap most native browser events. This&#xD; *    may only occur in the main thread and is the responsibility of&#xD; *    ReactEventListener, which is injected and can therefore support pluggable&#xD; *    event sources. This is the only work that occurs in the main thread.&#xD; *&#xD; *  - We normalize and de-duplicate events to account for browser quirks. This&#xD; *    may be done in the worker thread.&#xD; *&#xD; *  - Forward these native events (with the associated top-level type used to&#xD; *    trap it) to `EventPluginHub`, which in turn will ask plugins if they want&#xD; *    to extract any synthetic events.&#xD; *&#xD; *  - The `EventPluginHub` will then process each event by annotating them with&#xD; *    "dispatches", a sequence of listeners and IDs that care about that event.&#xD; *&#xD; *  - The `EventPluginHub` then dispatches the events.&#xD; *&#xD; * Overview of React and the event system:&#xD; *&#xD; * +------------+    .&#xD; * |    DOM     |    .&#xD; * +------------+    .&#xD; *       |           .&#xD; *       v           .&#xD; * +------------+    .&#xD; * | ReactEvent |    .&#xD; * |  Listener  |    .&#xD; * +------------+    .                         +-----------+&#xD; *       |           .               +--------+|SimpleEvent|&#xD; *       |           .               |         |Plugin     |&#xD; * +-----|------+    .               v         +-----------+&#xD; * |     |      |    .    +--------------+                    +------------+&#xD; * |     +-----------.---&gt;|EventPluginHub|                    |    Event   |&#xD; * |            |    .    |              |     +-----------+  | Propagators|&#xD; * | ReactEvent |    .    |              |     |TapEvent   |  |------------|&#xD; * |  Emitter   |    .    |              |&lt;---+|Plugin     |  |other plugin|&#xD; * |            |    .    |              |     +-----------+  |  utilities |&#xD; * |     +-----------.---&gt;|              |                    +------------+&#xD; * |     |      |    .    +--------------+&#xD; * +-----|------+    .                ^        +-----------+&#xD; *       |           .                |        |Enter/Leave|&#xD; *       +           .                +-------+|Plugin     |&#xD; * +-------------+   .                         +-----------+&#xD; * | application |   .&#xD; * |-------------|   .&#xD; * |             |   .&#xD; * |             |   .&#xD; * +-------------+   .&#xD; *                   .&#xD; *    React Core     .  General Purpose Event Plugin System&#xD; */&#xD;&#xD;var hasEventPageXY;&#xD;var alreadyListeningTo = {};&#xD;var isMonitoringScrollValue = false;&#xD;var reactTopListenersCounter = 0;&#xD;&#xD;// For events like &apos;submit&apos; which don&apos;t consistently bubble (which we trap at a&#xD;// lower node than `document`), binding at `document` would cause duplicate&#xD;// events so we don&apos;t include them here&#xD;var topEventMapping = {&#xD;  topAbort: &apos;abort&apos;,&#xD;  topAnimationEnd: getVendorPrefixedEventName(&apos;animationend&apos;) || &apos;animationend&apos;,&#xD;  topAnimationIteration: getVendorPrefixedEventName(&apos;animationiteration&apos;) || &apos;animationiteration&apos;,&#xD;  topAnimationStart: getVendorPrefixedEventName(&apos;animationstart&apos;) || &apos;animationstart&apos;,&#xD;  topBlur: &apos;blur&apos;,&#xD;  topCanPlay: &apos;canplay&apos;,&#xD;  topCanPlayThrough: &apos;canplaythrough&apos;,&#xD;  topChange: &apos;change&apos;,&#xD;  topClick: &apos;click&apos;,&#xD;  topCompositionEnd: &apos;compositionend&apos;,&#xD;  topCompositionStart: &apos;compositionstart&apos;,&#xD;  topCompositionUpdate: &apos;compositionupdate&apos;,&#xD;  topContextMenu: &apos;contextmenu&apos;,&#xD;  topCopy: &apos;copy&apos;,&#xD;  topCut: &apos;cut&apos;,&#xD;  topDoubleClick: &apos;dblclick&apos;,&#xD;  topDrag: &apos;drag&apos;,&#xD;  topDragEnd: &apos;dragend&apos;,&#xD;  topDragEnter: &apos;dragenter&apos;,&#xD;  topDragExit: &apos;dragexit&apos;,&#xD;  topDragLeave: &apos;dragleave&apos;,&#xD;  topDragOver: &apos;dragover&apos;,&#xD;  topDragStart: &apos;dragstart&apos;,&#xD;  topDrop: &apos;drop&apos;,&#xD;  topDurationChange: &apos;durationchange&apos;,&#xD;  topEmptied: &apos;emptied&apos;,&#xD;  topEncrypted: &apos;encrypted&apos;,&#xD;  topEnded: &apos;ended&apos;,&#xD;  topError: &apos;error&apos;,&#xD;  topFocus: &apos;focus&apos;,&#xD;  topInput: &apos;input&apos;,&#xD;  topKeyDown: &apos;keydown&apos;,&#xD;  topKeyPress: &apos;keypress&apos;,&#xD;  topKeyUp: &apos;keyup&apos;,&#xD;  topLoadedData: &apos;loadeddata&apos;,&#xD;  topLoadedMetadata: &apos;loadedmetadata&apos;,&#xD;  topLoadStart: &apos;loadstart&apos;,&#xD;  topMouseDown: &apos;mousedown&apos;,&#xD;  topMouseMove: &apos;mousemove&apos;,&#xD;  topMouseOut: &apos;mouseout&apos;,&#xD;  topMouseOver: &apos;mouseover&apos;,&#xD;  topMouseUp: &apos;mouseup&apos;,&#xD;  topPaste: &apos;paste&apos;,&#xD;  topPause: &apos;pause&apos;,&#xD;  topPlay: &apos;play&apos;,&#xD;  topPlaying: &apos;playing&apos;,&#xD;  topProgress: &apos;progress&apos;,&#xD;  topRateChange: &apos;ratechange&apos;,&#xD;  topScroll: &apos;scroll&apos;,&#xD;  topSeeked: &apos;seeked&apos;,&#xD;  topSeeking: &apos;seeking&apos;,&#xD;  topSelectionChange: &apos;selectionchange&apos;,&#xD;  topStalled: &apos;stalled&apos;,&#xD;  topSuspend: &apos;suspend&apos;,&#xD;  topTextInput: &apos;textInput&apos;,&#xD;  topTimeUpdate: &apos;timeupdate&apos;,&#xD;  topTouchCancel: &apos;touchcancel&apos;,&#xD;  topTouchEnd: &apos;touchend&apos;,&#xD;  topTouchMove: &apos;touchmove&apos;,&#xD;  topTouchStart: &apos;touchstart&apos;,&#xD;  topTransitionEnd: getVendorPrefixedEventName(&apos;transitionend&apos;) || &apos;transitionend&apos;,&#xD;  topVolumeChange: &apos;volumechange&apos;,&#xD;  topWaiting: &apos;waiting&apos;,&#xD;  topWheel: &apos;wheel&apos;&#xD;};&#xD;&#xD;/**&#xD; * To ensure no conflicts with other potential React instances on the page&#xD; */&#xD;var topListenersIDKey = &apos;_reactListenersID&apos; + String(Math.random()).slice(2);&#xD;&#xD;function getListeningForDocument(mountAt) {&#xD;  // In IE8, `mountAt` is a host object and doesn&apos;t have `hasOwnProperty`&#xD;  // directly.&#xD;  if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {&#xD;    mountAt[topListenersIDKey] = reactTopListenersCounter++;&#xD;    alreadyListeningTo[mountAt[topListenersIDKey]] = {};&#xD;  }&#xD;  return alreadyListeningTo[mountAt[topListenersIDKey]];&#xD;}&#xD;&#xD;/**&#xD; * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For&#xD; * example:&#xD; *&#xD; *   EventPluginHub.putListener(&apos;myID&apos;, &apos;onClick&apos;, myFunction);&#xD; *&#xD; * This would allocate a "registration" of `(&apos;onClick&apos;, myFunction)` on &apos;myID&apos;.&#xD; *&#xD; * @internal&#xD; */&#xD;var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {&#xD;&#xD;  /**&#xD;   * Injectable event backend&#xD;   */&#xD;  ReactEventListener: null,&#xD;&#xD;  injection: {&#xD;    /**&#xD;     * @param {object} ReactEventListener&#xD;     */&#xD;    injectReactEventListener: function (ReactEventListener) {&#xD;      ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);&#xD;      ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Sets whether or not any created callbacks should be enabled.&#xD;   *&#xD;   * @param {boolean} enabled True if callbacks should be enabled.&#xD;   */&#xD;  setEnabled: function (enabled) {&#xD;    if (ReactBrowserEventEmitter.ReactEventListener) {&#xD;      ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * @return {boolean} True if callbacks are enabled.&#xD;   */&#xD;  isEnabled: function () {&#xD;    return !!(ReactBrowserEventEmitter.ReactEventListener &amp;&amp; ReactBrowserEventEmitter.ReactEventListener.isEnabled());&#xD;  },&#xD;&#xD;  /**&#xD;   * We listen for bubbled touch events on the document object.&#xD;   *&#xD;   * Firefox v8.01 (and possibly others) exhibited strange behavior when&#xD;   * mounting `onmousemove` events at some node that was not the document&#xD;   * element. The symptoms were that if your mouse is not moving over something&#xD;   * contained within that mount point (for example on the background) the&#xD;   * top-level listeners for `onmousemove` won&apos;t be called. However, if you&#xD;   * register the `mousemove` on the document object, then it will of course&#xD;   * catch all `mousemove`s. This along with iOS quirks, justifies restricting&#xD;   * top-level listeners to the document object only, at least for these&#xD;   * movement types of events and possibly all events.&#xD;   *&#xD;   * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html&#xD;   *&#xD;   * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but&#xD;   * they bubble to document.&#xD;   *&#xD;   * @param {string} registrationName Name of listener (e.g. `onClick`).&#xD;   * @param {object} contentDocumentHandle Document which owns the container&#xD;   */&#xD;  listenTo: function (registrationName, contentDocumentHandle) {&#xD;    var mountAt = contentDocumentHandle;&#xD;    var isListening = getListeningForDocument(mountAt);&#xD;    var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];&#xD;&#xD;    for (var i = 0; i &lt; dependencies.length; i++) {&#xD;      var dependency = dependencies[i];&#xD;      if (!(isListening.hasOwnProperty(dependency) &amp;&amp; isListening[dependency])) {&#xD;        if (dependency === &apos;topWheel&apos;) {&#xD;          if (isEventSupported(&apos;wheel&apos;)) {&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;wheel&apos;, mountAt);&#xD;          } else if (isEventSupported(&apos;mousewheel&apos;)) {&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;mousewheel&apos;, mountAt);&#xD;          } else {&#xD;            // Firefox needs to capture a different mouse scroll event.&#xD;            // @see http://www.quirksmode.org/dom/events/tests/scroll.html&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;DOMMouseScroll&apos;, mountAt);&#xD;          }&#xD;        } else if (dependency === &apos;topScroll&apos;) {&#xD;&#xD;          if (isEventSupported(&apos;scroll&apos;, true)) {&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topScroll&apos;, &apos;scroll&apos;, mountAt);&#xD;          } else {&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topScroll&apos;, &apos;scroll&apos;, ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);&#xD;          }&#xD;        } else if (dependency === &apos;topFocus&apos; || dependency === &apos;topBlur&apos;) {&#xD;&#xD;          if (isEventSupported(&apos;focus&apos;, true)) {&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topFocus&apos;, &apos;focus&apos;, mountAt);&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topBlur&apos;, &apos;blur&apos;, mountAt);&#xD;          } else if (isEventSupported(&apos;focusin&apos;)) {&#xD;            // IE has `focusin` and `focusout` events which bubble.&#xD;            // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topFocus&apos;, &apos;focusin&apos;, mountAt);&#xD;            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topBlur&apos;, &apos;focusout&apos;, mountAt);&#xD;          }&#xD;&#xD;          // to make sure blur and focus event listeners are only attached once&#xD;          isListening.topBlur = true;&#xD;          isListening.topFocus = true;&#xD;        } else if (topEventMapping.hasOwnProperty(dependency)) {&#xD;          ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);&#xD;        }&#xD;&#xD;        isListening[dependency] = true;&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {&#xD;    return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);&#xD;  },&#xD;&#xD;  trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {&#xD;    return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);&#xD;  },&#xD;&#xD;  /**&#xD;   * Protect against document.createEvent() returning null&#xD;   * Some popup blocker extensions appear to do this:&#xD;   * https://github.com/facebook/react/issues/6887&#xD;   */&#xD;  supportsEventPageXY: function () {&#xD;    if (!document.createEvent) {&#xD;      return false;&#xD;    }&#xD;    var ev = document.createEvent(&apos;MouseEvent&apos;);&#xD;    return ev != null &amp;&amp; &apos;pageX&apos; in ev;&#xD;  },&#xD;&#xD;  /**&#xD;   * Listens to window scroll and resize events. We cache scroll values so that&#xD;   * application code can access them without triggering reflows.&#xD;   *&#xD;   * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when&#xD;   * pageX/pageY isn&apos;t supported (legacy browsers).&#xD;   *&#xD;   * NOTE: Scroll events do not bubble.&#xD;   *&#xD;   * @see http://www.quirksmode.org/dom/events/scroll.html&#xD;   */&#xD;  ensureScrollValueMonitoring: function () {&#xD;    if (hasEventPageXY === undefined) {&#xD;      hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();&#xD;    }&#xD;    if (!hasEventPageXY &amp;&amp; !isMonitoringScrollValue) {&#xD;      var refresh = ViewportMetrics.refreshScrollValues;&#xD;      ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);&#xD;      isMonitoringScrollValue = true;&#xD;    }&#xD;  }&#xD;&#xD;});&#xD;&#xD;module.exports = ReactBrowserEventEmitter;&#xD;&#xD;/***/ }),&#xD;/* 65 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticUIEvent = __webpack_require__(53);&#xD;var ViewportMetrics = __webpack_require__(166);&#xD;&#xD;var getEventModifierState = __webpack_require__(95);&#xD;&#xD;/**&#xD; * @interface MouseEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var MouseEventInterface = {&#xD;  screenX: null,&#xD;  screenY: null,&#xD;  clientX: null,&#xD;  clientY: null,&#xD;  ctrlKey: null,&#xD;  shiftKey: null,&#xD;  altKey: null,&#xD;  metaKey: null,&#xD;  getModifierState: getEventModifierState,&#xD;  button: function (event) {&#xD;    // Webkit, Firefox, IE9+&#xD;    // which:  1 2 3&#xD;    // button: 0 1 2 (standard)&#xD;    var button = event.button;&#xD;    if (&apos;which&apos; in event) {&#xD;      return button;&#xD;    }&#xD;    // IE&lt;9&#xD;    // which:  undefined&#xD;    // button: 0 0 0&#xD;    // button: 1 4 2 (onmouseup)&#xD;    return button === 2 ? 2 : button === 4 ? 1 : 0;&#xD;  },&#xD;  buttons: null,&#xD;  relatedTarget: function (event) {&#xD;    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);&#xD;  },&#xD;  // "Proprietary" Interface.&#xD;  pageX: function (event) {&#xD;    return &apos;pageX&apos; in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;&#xD;  },&#xD;  pageY: function (event) {&#xD;    return &apos;pageY&apos; in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);&#xD;&#xD;module.exports = SyntheticMouseEvent;&#xD;&#xD;/***/ }),&#xD;/* 66 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var OBSERVED_ERROR = {};&#xD;&#xD;/**&#xD; * `Transaction` creates a black box that is able to wrap any method such that&#xD; * certain invariants are maintained before and after the method is invoked&#xD; * (Even if an exception is thrown while invoking the wrapped method). Whoever&#xD; * instantiates a transaction can provide enforcers of the invariants at&#xD; * creation time. The `Transaction` class itself will supply one additional&#xD; * automatic invariant for you - the invariant that any transaction instance&#xD; * should not be run while it is already being run. You would typically create a&#xD; * single instance of a `Transaction` for reuse multiple times, that potentially&#xD; * is used to wrap several different methods. Wrappers are extremely simple -&#xD; * they only require implementing two methods.&#xD; *&#xD; * &lt;pre&gt;&#xD; *                       wrappers (injected at creation time)&#xD; *                                      +        +&#xD; *                                      |        |&#xD; *                    +-----------------|--------|--------------+&#xD; *                    |                 v        |              |&#xD; *                    |      +---------------+   |              |&#xD; *                    |   +--|    wrapper1   |---|----+         |&#xD; *                    |   |  +---------------+   v    |         |&#xD; *                    |   |          +-------------+  |         |&#xD; *                    |   |     +----|   wrapper2  |--------+   |&#xD; *                    |   |     |    +-------------+  |     |   |&#xD; *                    |   |     |                     |     |   |&#xD; *                    |   v     v                     v     v   | wrapper&#xD; *                    | +---+ +---+   +---------+   +---+ +---+ | invariants&#xD; * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained&#xD; * +-----------------&gt;|-|---|-|---|--&gt;|anyMethod|---|---|-|---|-|--------&gt;&#xD; *                    | |   | |   |   |         |   |   | |   | |&#xD; *                    | |   | |   |   |         |   |   | |   | |&#xD; *                    | |   | |   |   |         |   |   | |   | |&#xD; *                    | +---+ +---+   +---------+   +---+ +---+ |&#xD; *                    |  initialize                    close    |&#xD; *                    +-----------------------------------------+&#xD; * &lt;/pre&gt;&#xD; *&#xD; * Use cases:&#xD; * - Preserving the input selection ranges before/after reconciliation.&#xD; *   Restoring selection even in the event of an unexpected error.&#xD; * - Deactivating events while rearranging the DOM, preventing blurs/focuses,&#xD; *   while guaranteeing that afterwards, the event system is reactivated.&#xD; * - Flushing a queue of collected DOM mutations to the main UI thread after a&#xD; *   reconciliation takes place in a worker thread.&#xD; * - Invoking any collected `componentDidUpdate` callbacks after rendering new&#xD; *   content.&#xD; * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue&#xD; *   to preserve the `scrollTop` (an automatic scroll aware DOM).&#xD; * - (Future use case): Layout calculations before and after DOM updates.&#xD; *&#xD; * Transactional plugin API:&#xD; * - A module that has an `initialize` method that returns any precomputation.&#xD; * - and a `close` method that accepts the precomputation. `close` is invoked&#xD; *   when the wrapped process is completed, or has failed.&#xD; *&#xD; * @param {Array&lt;TransactionalWrapper&gt;} transactionWrapper Wrapper modules&#xD; * that implement `initialize` and `close`.&#xD; * @return {Transaction} Single transaction for reuse in thread.&#xD; *&#xD; * @class Transaction&#xD; */&#xD;var TransactionImpl = {&#xD;  /**&#xD;   * Sets up this instance so that it is prepared for collecting metrics. Does&#xD;   * so such that this setup method may be used on an instance that is already&#xD;   * initialized, in a way that does not consume additional memory upon reuse.&#xD;   * That can be useful if you decide to make your subclass of this mixin a&#xD;   * "PooledClass".&#xD;   */&#xD;  reinitializeTransaction: function () {&#xD;    this.transactionWrappers = this.getTransactionWrappers();&#xD;    if (this.wrapperInitData) {&#xD;      this.wrapperInitData.length = 0;&#xD;    } else {&#xD;      this.wrapperInitData = [];&#xD;    }&#xD;    this._isInTransaction = false;&#xD;  },&#xD;&#xD;  _isInTransaction: false,&#xD;&#xD;  /**&#xD;   * @abstract&#xD;   * @return {Array&lt;TransactionWrapper&gt;} Array of transaction wrappers.&#xD;   */&#xD;  getTransactionWrappers: null,&#xD;&#xD;  isInTransaction: function () {&#xD;    return !!this._isInTransaction;&#xD;  },&#xD;&#xD;  /**&#xD;   * Executes the function within a safety window. Use this for the top level&#xD;   * methods that result in large amounts of computation/mutations that would&#xD;   * need to be safety checked. The optional arguments helps prevent the need&#xD;   * to bind in many cases.&#xD;   *&#xD;   * @param {function} method Member of scope to call.&#xD;   * @param {Object} scope Scope to invoke from.&#xD;   * @param {Object?=} a Argument to pass to the method.&#xD;   * @param {Object?=} b Argument to pass to the method.&#xD;   * @param {Object?=} c Argument to pass to the method.&#xD;   * @param {Object?=} d Argument to pass to the method.&#xD;   * @param {Object?=} e Argument to pass to the method.&#xD;   * @param {Object?=} f Argument to pass to the method.&#xD;   *&#xD;   * @return {*} Return value from `method`.&#xD;   */&#xD;  perform: function (method, scope, a, b, c, d, e, f) {&#xD;    !!this.isInTransaction() ?  true ? invariant(false, &apos;Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.&apos;) : _prodInvariant(&apos;27&apos;) : void 0;&#xD;    var errorThrown;&#xD;    var ret;&#xD;    try {&#xD;      this._isInTransaction = true;&#xD;      // Catching errors makes debugging more difficult, so we start with&#xD;      // errorThrown set to true before setting it to false after calling&#xD;      // close -- if it&apos;s still set to true in the finally block, it means&#xD;      // one of these calls threw.&#xD;      errorThrown = true;&#xD;      this.initializeAll(0);&#xD;      ret = method.call(scope, a, b, c, d, e, f);&#xD;      errorThrown = false;&#xD;    } finally {&#xD;      try {&#xD;        if (errorThrown) {&#xD;          // If `method` throws, prefer to show that stack trace over any thrown&#xD;          // by invoking `closeAll`.&#xD;          try {&#xD;            this.closeAll(0);&#xD;          } catch (err) {}&#xD;        } else {&#xD;          // Since `method` didn&apos;t throw, we don&apos;t want to silence the exception&#xD;          // here.&#xD;          this.closeAll(0);&#xD;        }&#xD;      } finally {&#xD;        this._isInTransaction = false;&#xD;      }&#xD;    }&#xD;    return ret;&#xD;  },&#xD;&#xD;  initializeAll: function (startIndex) {&#xD;    var transactionWrappers = this.transactionWrappers;&#xD;    for (var i = startIndex; i &lt; transactionWrappers.length; i++) {&#xD;      var wrapper = transactionWrappers[i];&#xD;      try {&#xD;        // Catching errors makes debugging more difficult, so we start with the&#xD;        // OBSERVED_ERROR state before overwriting it with the real return value&#xD;        // of initialize -- if it&apos;s still set to OBSERVED_ERROR in the finally&#xD;        // block, it means wrapper.initialize threw.&#xD;        this.wrapperInitData[i] = OBSERVED_ERROR;&#xD;        this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;&#xD;      } finally {&#xD;        if (this.wrapperInitData[i] === OBSERVED_ERROR) {&#xD;          // The initializer for wrapper i threw an error; initialize the&#xD;          // remaining wrappers but silence any exceptions from them to ensure&#xD;          // that the first error is the one to bubble up.&#xD;          try {&#xD;            this.initializeAll(i + 1);&#xD;          } catch (err) {}&#xD;        }&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Invokes each of `this.transactionWrappers.close[i]` functions, passing into&#xD;   * them the respective return values of `this.transactionWrappers.init[i]`&#xD;   * (`close`rs that correspond to initializers that failed will not be&#xD;   * invoked).&#xD;   */&#xD;  closeAll: function (startIndex) {&#xD;    !this.isInTransaction() ?  true ? invariant(false, &apos;Transaction.closeAll(): Cannot close transaction when none are open.&apos;) : _prodInvariant(&apos;28&apos;) : void 0;&#xD;    var transactionWrappers = this.transactionWrappers;&#xD;    for (var i = startIndex; i &lt; transactionWrappers.length; i++) {&#xD;      var wrapper = transactionWrappers[i];&#xD;      var initData = this.wrapperInitData[i];&#xD;      var errorThrown;&#xD;      try {&#xD;        // Catching errors makes debugging more difficult, so we start with&#xD;        // errorThrown set to true before setting it to false after calling&#xD;        // close -- if it&apos;s still set to true in the finally block, it means&#xD;        // wrapper.close threw.&#xD;        errorThrown = true;&#xD;        if (initData !== OBSERVED_ERROR &amp;&amp; wrapper.close) {&#xD;          wrapper.close.call(this, initData);&#xD;        }&#xD;        errorThrown = false;&#xD;      } finally {&#xD;        if (errorThrown) {&#xD;          // The closer for wrapper i threw an error; close the remaining&#xD;          // wrappers but silence any exceptions from them to ensure that the&#xD;          // first error is the one to bubble up.&#xD;          try {&#xD;            this.closeAll(i + 1);&#xD;          } catch (e) {}&#xD;        }&#xD;      }&#xD;    }&#xD;    this.wrapperInitData.length = 0;&#xD;  }&#xD;};&#xD;&#xD;module.exports = TransactionImpl;&#xD;&#xD;/***/ }),&#xD;/* 67 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * Based on the escape-html library, which is used under the MIT License below:&#xD; *&#xD; * Copyright (c) 2012-2013 TJ Holowaychuk&#xD; * Copyright (c) 2015 Andreas Lubbe&#xD; * Copyright (c) 2015 Tiancheng "Timothy" Gu&#xD; *&#xD; * Permission is hereby granted, free of charge, to any person obtaining&#xD; * a copy of this software and associated documentation files (the&#xD; * &apos;Software&apos;), to deal in the Software without restriction, including&#xD; * without limitation the rights to use, copy, modify, merge, publish,&#xD; * distribute, sublicense, and/or sell copies of the Software, and to&#xD; * permit persons to whom the Software is furnished to do so, subject to&#xD; * the following conditions:&#xD; *&#xD; * The above copyright notice and this permission notice shall be&#xD; * included in all copies or substantial portions of the Software.&#xD; *&#xD; * THE SOFTWARE IS PROVIDED &apos;AS IS&apos;, WITHOUT WARRANTY OF ANY KIND,&#xD; * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF&#xD; * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.&#xD; * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY&#xD; * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,&#xD; * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE&#xD; * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;// code copied and modified from escape-html&#xD;/**&#xD; * Module variables.&#xD; * @private&#xD; */&#xD;&#xD;var matchHtmlRegExp = /["&apos;&amp;&lt;&gt;]/;&#xD;&#xD;/**&#xD; * Escape special characters in the given string of html.&#xD; *&#xD; * @param  {string} string The string to escape for inserting into HTML&#xD; * @return {string}&#xD; * @public&#xD; */&#xD;&#xD;function escapeHtml(string) {&#xD;  var str = &apos;&apos; + string;&#xD;  var match = matchHtmlRegExp.exec(str);&#xD;&#xD;  if (!match) {&#xD;    return str;&#xD;  }&#xD;&#xD;  var escape;&#xD;  var html = &apos;&apos;;&#xD;  var index = 0;&#xD;  var lastIndex = 0;&#xD;&#xD;  for (index = match.index; index &lt; str.length; index++) {&#xD;    switch (str.charCodeAt(index)) {&#xD;      case 34:&#xD;        // "&#xD;        escape = &apos;&amp;quot;&apos;;&#xD;        break;&#xD;      case 38:&#xD;        // &amp;&#xD;        escape = &apos;&amp;amp;&apos;;&#xD;        break;&#xD;      case 39:&#xD;        // &apos;&#xD;        escape = &apos;&amp;#x27;&apos;; // modified from escape-html; used to be &apos;&amp;#39&apos;&#xD;        break;&#xD;      case 60:&#xD;        // &lt;&#xD;        escape = &apos;&amp;lt;&apos;;&#xD;        break;&#xD;      case 62:&#xD;        // &gt;&#xD;        escape = &apos;&amp;gt;&apos;;&#xD;        break;&#xD;      default:&#xD;        continue;&#xD;    }&#xD;&#xD;    if (lastIndex !== index) {&#xD;      html += str.substring(lastIndex, index);&#xD;    }&#xD;&#xD;    lastIndex = index + 1;&#xD;    html += escape;&#xD;  }&#xD;&#xD;  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;&#xD;}&#xD;// end code copied and modified from escape-html&#xD;&#xD;&#xD;/**&#xD; * Escapes text to prevent scripting attacks.&#xD; *&#xD; * @param {*} text Text value to escape.&#xD; * @return {string} An escaped string.&#xD; */&#xD;function escapeTextContentForBrowser(text) {&#xD;  if (typeof text === &apos;boolean&apos; || typeof text === &apos;number&apos;) {&#xD;    // this shortcircuit helps perf for types that we know will never have&#xD;    // special characters, especially given that this function is used often&#xD;    // for numeric dom ids.&#xD;    return &apos;&apos; + text;&#xD;  }&#xD;  return escapeHtml(text);&#xD;}&#xD;&#xD;module.exports = escapeTextContentForBrowser;&#xD;&#xD;/***/ }),&#xD;/* 68 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var DOMNamespaces = __webpack_require__(86);&#xD;&#xD;var WHITESPACE_TEST = /^[ \r\n\t\f]/;&#xD;var NONVISIBLE_TEST = /&lt;(!--|link|noscript|meta|script|style)[ \r\n\t\f\/&gt;]/;&#xD;&#xD;var createMicrosoftUnsafeLocalFunction = __webpack_require__(93);&#xD;&#xD;// SVG temp container for IE lacking innerHTML&#xD;var reusableSVGContainer;&#xD;&#xD;/**&#xD; * Set the innerHTML property of a node, ensuring that whitespace is preserved&#xD; * even in IE8.&#xD; *&#xD; * @param {DOMElement} node&#xD; * @param {string} html&#xD; * @internal&#xD; */&#xD;var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {&#xD;  // IE does not have innerHTML for SVG nodes, so instead we inject the&#xD;  // new markup in a temp node and then move the child nodes across into&#xD;  // the target node&#xD;  if (node.namespaceURI === DOMNamespaces.svg &amp;&amp; !(&apos;innerHTML&apos; in node)) {&#xD;    reusableSVGContainer = reusableSVGContainer || document.createElement(&apos;div&apos;);&#xD;    reusableSVGContainer.innerHTML = &apos;&lt;svg&gt;&apos; + html + &apos;&lt;/svg&gt;&apos;;&#xD;    var svgNode = reusableSVGContainer.firstChild;&#xD;    while (svgNode.firstChild) {&#xD;      node.appendChild(svgNode.firstChild);&#xD;    }&#xD;  } else {&#xD;    node.innerHTML = html;&#xD;  }&#xD;});&#xD;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  // IE8: When updating a just created node with innerHTML only leading&#xD;  // whitespace is removed. When updating an existing node with innerHTML&#xD;  // whitespace in root TextNodes is also collapsed.&#xD;  // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html&#xD;&#xD;  // Feature detection; only IE8 is known to behave improperly like this.&#xD;  var testElement = document.createElement(&apos;div&apos;);&#xD;  testElement.innerHTML = &apos; &apos;;&#xD;  if (testElement.innerHTML === &apos;&apos;) {&#xD;    setInnerHTML = function (node, html) {&#xD;      // Magic theory: IE8 supposedly differentiates between added and updated&#xD;      // nodes when processing innerHTML, innerHTML on updated nodes suffers&#xD;      // from worse whitespace behavior. Re-adding a node like this triggers&#xD;      // the initial and more favorable whitespace behavior.&#xD;      // TODO: What to do on a detached node?&#xD;      if (node.parentNode) {&#xD;        node.parentNode.replaceChild(node, node);&#xD;      }&#xD;&#xD;      // We also implement a workaround for non-visible tags disappearing into&#xD;      // thin air on IE8, this only happens if there is no visible text&#xD;      // in-front of the non-visible tags. Piggyback on the whitespace fix&#xD;      // and simply check if any non-visible tags appear in the source.&#xD;      if (WHITESPACE_TEST.test(html) || html[0] === &apos;&lt;&apos; &amp;&amp; NONVISIBLE_TEST.test(html)) {&#xD;        // Recover leading whitespace by temporarily prepending any character.&#xD;        // \uFEFF has the potential advantage of being zero-width/invisible.&#xD;        // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode&#xD;        // in hopes that this is preserved even if "\uFEFF" is transformed to&#xD;        // the actual Unicode character (by Babel, for example).&#xD;        // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216&#xD;        node.innerHTML = String.fromCharCode(0xFEFF) + html;&#xD;&#xD;        // deleteData leaves an empty `TextNode` which offsets the index of all&#xD;        // children. Definitely want to avoid this.&#xD;        var textNode = node.firstChild;&#xD;        if (textNode.data.length === 1) {&#xD;          node.removeChild(textNode);&#xD;        } else {&#xD;          textNode.deleteData(0, 1);&#xD;        }&#xD;      } else {&#xD;        node.innerHTML = html;&#xD;      }&#xD;    };&#xD;  }&#xD;  testElement = null;&#xD;}&#xD;&#xD;module.exports = setInnerHTML;&#xD;&#xD;/***/ }),&#xD;/* 69 */,&#xD;/* 70 */,&#xD;/* 71 */,&#xD;/* 72 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var canDefineProperty = false;&#xD;if (true) {&#xD;  try {&#xD;    // $FlowFixMe https://github.com/facebook/flow/issues/285&#xD;    Object.defineProperty({}, &apos;x&apos;, { get: function () {} });&#xD;    canDefineProperty = true;&#xD;  } catch (x) {&#xD;    // IE will fail on defineProperty&#xD;  }&#xD;}&#xD;&#xD;module.exports = canDefineProperty;&#xD;&#xD;/***/ }),&#xD;/* 73 */,&#xD;/* 74 */,&#xD;/* 75 */,&#xD;/* 76 */,&#xD;/* 77 */,&#xD;/* 78 */,&#xD;/* 79 */,&#xD;/* 80 */,&#xD;/* 81 */,&#xD;/* 82 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; * &#xD; */&#xD;&#xD;/*eslint-disable no-self-compare */&#xD;&#xD;&#xD;&#xD;var hasOwnProperty = Object.prototype.hasOwnProperty;&#xD;&#xD;/**&#xD; * inlined Object.is polyfill to avoid requiring consumers ship their own&#xD; * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is&#xD; */&#xD;function is(x, y) {&#xD;  // SameValue algorithm&#xD;  if (x === y) {&#xD;    // Steps 1-5, 7-10&#xD;    // Steps 6.b-6.e: +0 != -0&#xD;    // Added the nonzero y check to make Flow happy, but it is redundant&#xD;    return x !== 0 || y !== 0 || 1 / x === 1 / y;&#xD;  } else {&#xD;    // Step 6.a: NaN == NaN&#xD;    return x !== x &amp;&amp; y !== y;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Performs equality by iterating through keys on an object and returning false&#xD; * when any key has values which are not strictly equal between the arguments.&#xD; * Returns true when the values of all keys are strictly equal.&#xD; */&#xD;function shallowEqual(objA, objB) {&#xD;  if (is(objA, objB)) {&#xD;    return true;&#xD;  }&#xD;&#xD;  if (typeof objA !== &apos;object&apos; || objA === null || typeof objB !== &apos;object&apos; || objB === null) {&#xD;    return false;&#xD;  }&#xD;&#xD;  var keysA = Object.keys(objA);&#xD;  var keysB = Object.keys(objB);&#xD;&#xD;  if (keysA.length !== keysB.length) {&#xD;    return false;&#xD;  }&#xD;&#xD;  // Test for A&apos;s keys different from B.&#xD;  for (var i = 0; i &lt; keysA.length; i++) {&#xD;    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {&#xD;      return false;&#xD;    }&#xD;  }&#xD;&#xD;  return true;&#xD;}&#xD;&#xD;module.exports = shallowEqual;&#xD;&#xD;/***/ }),&#xD;/* 83 */,&#xD;/* 84 */,&#xD;/* 85 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var Danger = __webpack_require__(399);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;&#xD;var createMicrosoftUnsafeLocalFunction = __webpack_require__(93);&#xD;var setInnerHTML = __webpack_require__(68);&#xD;var setTextContent = __webpack_require__(173);&#xD;&#xD;function getNodeAfter(parentNode, node) {&#xD;  // Special case for text components, which return [open, close] comments&#xD;  // from getHostNode.&#xD;  if (Array.isArray(node)) {&#xD;    node = node[1];&#xD;  }&#xD;  return node ? node.nextSibling : parentNode.firstChild;&#xD;}&#xD;&#xD;/**&#xD; * Inserts `childNode` as a child of `parentNode` at the `index`.&#xD; *&#xD; * @param {DOMElement} parentNode Parent node in which to insert.&#xD; * @param {DOMElement} childNode Child node to insert.&#xD; * @param {number} index Index at which to insert the child.&#xD; * @internal&#xD; */&#xD;var insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {&#xD;  // We rely exclusively on `insertBefore(node, null)` instead of also using&#xD;  // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so&#xD;  // we are careful to use `null`.)&#xD;  parentNode.insertBefore(childNode, referenceNode);&#xD;});&#xD;&#xD;function insertLazyTreeChildAt(parentNode, childTree, referenceNode) {&#xD;  DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);&#xD;}&#xD;&#xD;function moveChild(parentNode, childNode, referenceNode) {&#xD;  if (Array.isArray(childNode)) {&#xD;    moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);&#xD;  } else {&#xD;    insertChildAt(parentNode, childNode, referenceNode);&#xD;  }&#xD;}&#xD;&#xD;function removeChild(parentNode, childNode) {&#xD;  if (Array.isArray(childNode)) {&#xD;    var closingComment = childNode[1];&#xD;    childNode = childNode[0];&#xD;    removeDelimitedText(parentNode, childNode, closingComment);&#xD;    parentNode.removeChild(closingComment);&#xD;  }&#xD;  parentNode.removeChild(childNode);&#xD;}&#xD;&#xD;function moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {&#xD;  var node = openingComment;&#xD;  while (true) {&#xD;    var nextNode = node.nextSibling;&#xD;    insertChildAt(parentNode, node, referenceNode);&#xD;    if (node === closingComment) {&#xD;      break;&#xD;    }&#xD;    node = nextNode;&#xD;  }&#xD;}&#xD;&#xD;function removeDelimitedText(parentNode, startNode, closingComment) {&#xD;  while (true) {&#xD;    var node = startNode.nextSibling;&#xD;    if (node === closingComment) {&#xD;      // The closing comment is removed by ReactMultiChild.&#xD;      break;&#xD;    } else {&#xD;      parentNode.removeChild(node);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function replaceDelimitedText(openingComment, closingComment, stringText) {&#xD;  var parentNode = openingComment.parentNode;&#xD;  var nodeAfterComment = openingComment.nextSibling;&#xD;  if (nodeAfterComment === closingComment) {&#xD;    // There are no text nodes between the opening and closing comments; insert&#xD;    // a new one if stringText isn&apos;t empty.&#xD;    if (stringText) {&#xD;      insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);&#xD;    }&#xD;  } else {&#xD;    if (stringText) {&#xD;      // Set the text content of the first node after the opening comment, and&#xD;      // remove all following nodes up until the closing comment.&#xD;      setTextContent(nodeAfterComment, stringText);&#xD;      removeDelimitedText(parentNode, nodeAfterComment, closingComment);&#xD;    } else {&#xD;      removeDelimitedText(parentNode, openingComment, closingComment);&#xD;    }&#xD;  }&#xD;&#xD;  if (true) {&#xD;    ReactInstrumentation.debugTool.onHostOperation({&#xD;      instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,&#xD;      type: &apos;replace text&apos;,&#xD;      payload: stringText&#xD;    });&#xD;  }&#xD;}&#xD;&#xD;var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;&#xD;if (true) {&#xD;  dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {&#xD;    Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);&#xD;    if (prevInstance._debugID !== 0) {&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: prevInstance._debugID,&#xD;        type: &apos;replace with&apos;,&#xD;        payload: markup.toString()&#xD;      });&#xD;    } else {&#xD;      var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);&#xD;      if (nextInstance._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onHostOperation({&#xD;          instanceID: nextInstance._debugID,&#xD;          type: &apos;mount&apos;,&#xD;          payload: markup.toString()&#xD;        });&#xD;      }&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Operations for updating with DOM children.&#xD; */&#xD;var DOMChildrenOperations = {&#xD;&#xD;  dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,&#xD;&#xD;  replaceDelimitedText: replaceDelimitedText,&#xD;&#xD;  /**&#xD;   * Updates a component&apos;s children by processing a series of updates. The&#xD;   * update configurations are each expected to have a `parentNode` property.&#xD;   *&#xD;   * @param {array&lt;object&gt;} updates List of update configurations.&#xD;   * @internal&#xD;   */&#xD;  processUpdates: function (parentNode, updates) {&#xD;    if (true) {&#xD;      var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;&#xD;    }&#xD;&#xD;    for (var k = 0; k &lt; updates.length; k++) {&#xD;      var update = updates[k];&#xD;      switch (update.type) {&#xD;        case &apos;INSERT_MARKUP&apos;:&#xD;          insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));&#xD;          if (true) {&#xD;            ReactInstrumentation.debugTool.onHostOperation({&#xD;              instanceID: parentNodeDebugID,&#xD;              type: &apos;insert child&apos;,&#xD;              payload: { toIndex: update.toIndex, content: update.content.toString() }&#xD;            });&#xD;          }&#xD;          break;&#xD;        case &apos;MOVE_EXISTING&apos;:&#xD;          moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));&#xD;          if (true) {&#xD;            ReactInstrumentation.debugTool.onHostOperation({&#xD;              instanceID: parentNodeDebugID,&#xD;              type: &apos;move child&apos;,&#xD;              payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }&#xD;            });&#xD;          }&#xD;          break;&#xD;        case &apos;SET_MARKUP&apos;:&#xD;          setInnerHTML(parentNode, update.content);&#xD;          if (true) {&#xD;            ReactInstrumentation.debugTool.onHostOperation({&#xD;              instanceID: parentNodeDebugID,&#xD;              type: &apos;replace children&apos;,&#xD;              payload: update.content.toString()&#xD;            });&#xD;          }&#xD;          break;&#xD;        case &apos;TEXT_CONTENT&apos;:&#xD;          setTextContent(parentNode, update.content);&#xD;          if (true) {&#xD;            ReactInstrumentation.debugTool.onHostOperation({&#xD;              instanceID: parentNodeDebugID,&#xD;              type: &apos;replace text&apos;,&#xD;              payload: update.content.toString()&#xD;            });&#xD;          }&#xD;          break;&#xD;        case &apos;REMOVE_NODE&apos;:&#xD;          removeChild(parentNode, update.fromNode);&#xD;          if (true) {&#xD;            ReactInstrumentation.debugTool.onHostOperation({&#xD;              instanceID: parentNodeDebugID,&#xD;              type: &apos;remove child&apos;,&#xD;              payload: { fromIndex: update.fromIndex }&#xD;            });&#xD;          }&#xD;          break;&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = DOMChildrenOperations;&#xD;&#xD;/***/ }),&#xD;/* 86 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMNamespaces = {&#xD;  html: &apos;http://www.w3.org/1999/xhtml&apos;,&#xD;  mathml: &apos;http://www.w3.org/1998/Math/MathML&apos;,&#xD;  svg: &apos;http://www.w3.org/2000/svg&apos;&#xD;};&#xD;&#xD;module.exports = DOMNamespaces;&#xD;&#xD;/***/ }),&#xD;/* 87 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactErrorUtils = __webpack_require__(91);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;/**&#xD; * Injected dependencies:&#xD; */&#xD;&#xD;/**&#xD; * - `ComponentTree`: [required] Module that can convert between React instances&#xD; *   and actual node references.&#xD; */&#xD;var ComponentTree;&#xD;var TreeTraversal;&#xD;var injection = {&#xD;  injectComponentTree: function (Injected) {&#xD;    ComponentTree = Injected;&#xD;    if (true) {&#xD;       true ? warning(Injected &amp;&amp; Injected.getNodeFromInstance &amp;&amp; Injected.getInstanceFromNode, &apos;EventPluginUtils.injection.injectComponentTree(...): Injected &apos; + &apos;module is missing getNodeFromInstance or getInstanceFromNode.&apos;) : void 0;&#xD;    }&#xD;  },&#xD;  injectTreeTraversal: function (Injected) {&#xD;    TreeTraversal = Injected;&#xD;    if (true) {&#xD;       true ? warning(Injected &amp;&amp; Injected.isAncestor &amp;&amp; Injected.getLowestCommonAncestor, &apos;EventPluginUtils.injection.injectTreeTraversal(...): Injected &apos; + &apos;module is missing isAncestor or getLowestCommonAncestor.&apos;) : void 0;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;function isEndish(topLevelType) {&#xD;  return topLevelType === &apos;topMouseUp&apos; || topLevelType === &apos;topTouchEnd&apos; || topLevelType === &apos;topTouchCancel&apos;;&#xD;}&#xD;&#xD;function isMoveish(topLevelType) {&#xD;  return topLevelType === &apos;topMouseMove&apos; || topLevelType === &apos;topTouchMove&apos;;&#xD;}&#xD;function isStartish(topLevelType) {&#xD;  return topLevelType === &apos;topMouseDown&apos; || topLevelType === &apos;topTouchStart&apos;;&#xD;}&#xD;&#xD;var validateEventDispatches;&#xD;if (true) {&#xD;  validateEventDispatches = function (event) {&#xD;    var dispatchListeners = event._dispatchListeners;&#xD;    var dispatchInstances = event._dispatchInstances;&#xD;&#xD;    var listenersIsArr = Array.isArray(dispatchListeners);&#xD;    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;&#xD;&#xD;    var instancesIsArr = Array.isArray(dispatchInstances);&#xD;    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;&#xD;&#xD;     true ? warning(instancesIsArr === listenersIsArr &amp;&amp; instancesLen === listenersLen, &apos;EventPluginUtils: Invalid `event`.&apos;) : void 0;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Dispatch the event to the listener.&#xD; * @param {SyntheticEvent} event SyntheticEvent to handle&#xD; * @param {boolean} simulated If the event is simulated (changes exn behavior)&#xD; * @param {function} listener Application-level callback&#xD; * @param {*} inst Internal component instance&#xD; */&#xD;function executeDispatch(event, simulated, listener, inst) {&#xD;  var type = event.type || &apos;unknown-event&apos;;&#xD;  event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);&#xD;  if (simulated) {&#xD;    ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);&#xD;  } else {&#xD;    ReactErrorUtils.invokeGuardedCallback(type, listener, event);&#xD;  }&#xD;  event.currentTarget = null;&#xD;}&#xD;&#xD;/**&#xD; * Standard/simple iteration through an event&apos;s collected dispatches.&#xD; */&#xD;function executeDispatchesInOrder(event, simulated) {&#xD;  var dispatchListeners = event._dispatchListeners;&#xD;  var dispatchInstances = event._dispatchInstances;&#xD;  if (true) {&#xD;    validateEventDispatches(event);&#xD;  }&#xD;  if (Array.isArray(dispatchListeners)) {&#xD;    for (var i = 0; i &lt; dispatchListeners.length; i++) {&#xD;      if (event.isPropagationStopped()) {&#xD;        break;&#xD;      }&#xD;      // Listeners and Instances are two parallel arrays that are always in sync.&#xD;      executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);&#xD;    }&#xD;  } else if (dispatchListeners) {&#xD;    executeDispatch(event, simulated, dispatchListeners, dispatchInstances);&#xD;  }&#xD;  event._dispatchListeners = null;&#xD;  event._dispatchInstances = null;&#xD;}&#xD;&#xD;/**&#xD; * Standard/simple iteration through an event&apos;s collected dispatches, but stops&#xD; * at the first dispatch execution returning true, and returns that id.&#xD; *&#xD; * @return {?string} id of the first dispatch execution who&apos;s listener returns&#xD; * true, or null if no listener returned true.&#xD; */&#xD;function executeDispatchesInOrderStopAtTrueImpl(event) {&#xD;  var dispatchListeners = event._dispatchListeners;&#xD;  var dispatchInstances = event._dispatchInstances;&#xD;  if (true) {&#xD;    validateEventDispatches(event);&#xD;  }&#xD;  if (Array.isArray(dispatchListeners)) {&#xD;    for (var i = 0; i &lt; dispatchListeners.length; i++) {&#xD;      if (event.isPropagationStopped()) {&#xD;        break;&#xD;      }&#xD;      // Listeners and Instances are two parallel arrays that are always in sync.&#xD;      if (dispatchListeners[i](event, dispatchInstances[i])) {&#xD;        return dispatchInstances[i];&#xD;      }&#xD;    }&#xD;  } else if (dispatchListeners) {&#xD;    if (dispatchListeners(event, dispatchInstances)) {&#xD;      return dispatchInstances;&#xD;    }&#xD;  }&#xD;  return null;&#xD;}&#xD;&#xD;/**&#xD; * @see executeDispatchesInOrderStopAtTrueImpl&#xD; */&#xD;function executeDispatchesInOrderStopAtTrue(event) {&#xD;  var ret = executeDispatchesInOrderStopAtTrueImpl(event);&#xD;  event._dispatchInstances = null;&#xD;  event._dispatchListeners = null;&#xD;  return ret;&#xD;}&#xD;&#xD;/**&#xD; * Execution of a "direct" dispatch - there must be at most one dispatch&#xD; * accumulated on the event or it is considered an error. It doesn&apos;t really make&#xD; * sense for an event with multiple dispatches (bubbled) to keep track of the&#xD; * return values at each dispatch execution, but it does tend to make sense when&#xD; * dealing with "direct" dispatches.&#xD; *&#xD; * @return {*} The return value of executing the single dispatch.&#xD; */&#xD;function executeDirectDispatch(event) {&#xD;  if (true) {&#xD;    validateEventDispatches(event);&#xD;  }&#xD;  var dispatchListener = event._dispatchListeners;&#xD;  var dispatchInstance = event._dispatchInstances;&#xD;  !!Array.isArray(dispatchListener) ?  true ? invariant(false, &apos;executeDirectDispatch(...): Invalid `event`.&apos;) : _prodInvariant(&apos;103&apos;) : void 0;&#xD;  event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;&#xD;  var res = dispatchListener ? dispatchListener(event) : null;&#xD;  event.currentTarget = null;&#xD;  event._dispatchListeners = null;&#xD;  event._dispatchInstances = null;&#xD;  return res;&#xD;}&#xD;&#xD;/**&#xD; * @param {SyntheticEvent} event&#xD; * @return {boolean} True iff number of dispatches accumulated is greater than 0.&#xD; */&#xD;function hasDispatches(event) {&#xD;  return !!event._dispatchListeners;&#xD;}&#xD;&#xD;/**&#xD; * General utilities that are useful in creating custom Event Plugins.&#xD; */&#xD;var EventPluginUtils = {&#xD;  isEndish: isEndish,&#xD;  isMoveish: isMoveish,&#xD;  isStartish: isStartish,&#xD;&#xD;  executeDirectDispatch: executeDirectDispatch,&#xD;  executeDispatchesInOrder: executeDispatchesInOrder,&#xD;  executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,&#xD;  hasDispatches: hasDispatches,&#xD;&#xD;  getInstanceFromNode: function (node) {&#xD;    return ComponentTree.getInstanceFromNode(node);&#xD;  },&#xD;  getNodeFromInstance: function (node) {&#xD;    return ComponentTree.getNodeFromInstance(node);&#xD;  },&#xD;  isAncestor: function (a, b) {&#xD;    return TreeTraversal.isAncestor(a, b);&#xD;  },&#xD;  getLowestCommonAncestor: function (a, b) {&#xD;    return TreeTraversal.getLowestCommonAncestor(a, b);&#xD;  },&#xD;  getParentInstance: function (inst) {&#xD;    return TreeTraversal.getParentInstance(inst);&#xD;  },&#xD;  traverseTwoPhase: function (target, fn, arg) {&#xD;    return TreeTraversal.traverseTwoPhase(target, fn, arg);&#xD;  },&#xD;  traverseEnterLeave: function (from, to, fn, argFrom, argTo) {&#xD;    return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);&#xD;  },&#xD;&#xD;  injection: injection&#xD;};&#xD;&#xD;module.exports = EventPluginUtils;&#xD;&#xD;/***/ }),&#xD;/* 88 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Escape and wrap key so it is safe to use as a reactid&#xD; *&#xD; * @param {string} key to be escaped.&#xD; * @return {string} the escaped key.&#xD; */&#xD;&#xD;function escape(key) {&#xD;  var escapeRegex = /[=:]/g;&#xD;  var escaperLookup = {&#xD;    &apos;=&apos;: &apos;=0&apos;,&#xD;    &apos;:&apos;: &apos;=2&apos;&#xD;  };&#xD;  var escapedString = (&apos;&apos; + key).replace(escapeRegex, function (match) {&#xD;    return escaperLookup[match];&#xD;  });&#xD;&#xD;  return &apos;$&apos; + escapedString;&#xD;}&#xD;&#xD;/**&#xD; * Unescape and unwrap key for human-readable display&#xD; *&#xD; * @param {string} key to unescape.&#xD; * @return {string} the unescaped key.&#xD; */&#xD;function unescape(key) {&#xD;  var unescapeRegex = /(=0|=2)/g;&#xD;  var unescaperLookup = {&#xD;    &apos;=0&apos;: &apos;=&apos;,&#xD;    &apos;=2&apos;: &apos;:&apos;&#xD;  };&#xD;  var keySubstring = key[0] === &apos;.&apos; &amp;&amp; key[1] === &apos;$&apos; ? key.substring(2) : key.substring(1);&#xD;&#xD;  return (&apos;&apos; + keySubstring).replace(unescapeRegex, function (match) {&#xD;    return unescaperLookup[match];&#xD;  });&#xD;}&#xD;&#xD;var KeyEscapeUtils = {&#xD;  escape: escape,&#xD;  unescape: unescape&#xD;};&#xD;&#xD;module.exports = KeyEscapeUtils;&#xD;&#xD;/***/ }),&#xD;/* 89 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactPropTypesSecret = __webpack_require__(165);&#xD;var propTypesFactory = __webpack_require__(147);&#xD;&#xD;var React = __webpack_require__(43);&#xD;var PropTypes = propTypesFactory(React.isValidElement);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var hasReadOnlyValue = {&#xD;  &apos;button&apos;: true,&#xD;  &apos;checkbox&apos;: true,&#xD;  &apos;image&apos;: true,&#xD;  &apos;hidden&apos;: true,&#xD;  &apos;radio&apos;: true,&#xD;  &apos;reset&apos;: true,&#xD;  &apos;submit&apos;: true&#xD;};&#xD;&#xD;function _assertSingleLink(inputProps) {&#xD;  !(inputProps.checkedLink == null || inputProps.valueLink == null) ?  true ? invariant(false, &apos;Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\&apos;t want to use valueLink and vice versa.&apos;) : _prodInvariant(&apos;87&apos;) : void 0;&#xD;}&#xD;function _assertValueLink(inputProps) {&#xD;  _assertSingleLink(inputProps);&#xD;  !(inputProps.value == null &amp;&amp; inputProps.onChange == null) ?  true ? invariant(false, &apos;Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\&apos;t want to use valueLink.&apos;) : _prodInvariant(&apos;88&apos;) : void 0;&#xD;}&#xD;&#xD;function _assertCheckedLink(inputProps) {&#xD;  _assertSingleLink(inputProps);&#xD;  !(inputProps.checked == null &amp;&amp; inputProps.onChange == null) ?  true ? invariant(false, &apos;Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\&apos;t want to use checkedLink&apos;) : _prodInvariant(&apos;89&apos;) : void 0;&#xD;}&#xD;&#xD;var propTypes = {&#xD;  value: function (props, propName, componentName) {&#xD;    if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {&#xD;      return null;&#xD;    }&#xD;    return new Error(&apos;You provided a `value` prop to a form field without an &apos; + &apos;`onChange` handler. This will render a read-only field. If &apos; + &apos;the field should be mutable use `defaultValue`. Otherwise, &apos; + &apos;set either `onChange` or `readOnly`.&apos;);&#xD;  },&#xD;  checked: function (props, propName, componentName) {&#xD;    if (!props[propName] || props.onChange || props.readOnly || props.disabled) {&#xD;      return null;&#xD;    }&#xD;    return new Error(&apos;You provided a `checked` prop to a form field without an &apos; + &apos;`onChange` handler. This will render a read-only field. If &apos; + &apos;the field should be mutable use `defaultChecked`. Otherwise, &apos; + &apos;set either `onChange` or `readOnly`.&apos;);&#xD;  },&#xD;  onChange: PropTypes.func&#xD;};&#xD;&#xD;var loggedTypeFailures = {};&#xD;function getDeclarationErrorAddendum(owner) {&#xD;  if (owner) {&#xD;    var name = owner.getName();&#xD;    if (name) {&#xD;      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;    }&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Provide a linked `value` attribute for controlled forms. You should not use&#xD; * this outside of the ReactDOM controlled form components.&#xD; */&#xD;var LinkedValueUtils = {&#xD;  checkPropTypes: function (tagName, props, owner) {&#xD;    for (var propName in propTypes) {&#xD;      if (propTypes.hasOwnProperty(propName)) {&#xD;        var error = propTypes[propName](props, propName, tagName, &apos;prop&apos;, null, ReactPropTypesSecret);&#xD;      }&#xD;      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {&#xD;        // Only monitor this failure once because there tends to be a lot of the&#xD;        // same error.&#xD;        loggedTypeFailures[error.message] = true;&#xD;&#xD;        var addendum = getDeclarationErrorAddendum(owner);&#xD;         true ? warning(false, &apos;Failed form propType: %s%s&apos;, error.message, addendum) : void 0;&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {object} inputProps Props for form component&#xD;   * @return {*} current value of the input either from value prop or link.&#xD;   */&#xD;  getValue: function (inputProps) {&#xD;    if (inputProps.valueLink) {&#xD;      _assertValueLink(inputProps);&#xD;      return inputProps.valueLink.value;&#xD;    }&#xD;    return inputProps.value;&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {object} inputProps Props for form component&#xD;   * @return {*} current checked status of the input either from checked prop&#xD;   *             or link.&#xD;   */&#xD;  getChecked: function (inputProps) {&#xD;    if (inputProps.checkedLink) {&#xD;      _assertCheckedLink(inputProps);&#xD;      return inputProps.checkedLink.value;&#xD;    }&#xD;    return inputProps.checked;&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {object} inputProps Props for form component&#xD;   * @param {SyntheticEvent} event change event to handle&#xD;   */&#xD;  executeOnChange: function (inputProps, event) {&#xD;    if (inputProps.valueLink) {&#xD;      _assertValueLink(inputProps);&#xD;      return inputProps.valueLink.requestChange(event.target.value);&#xD;    } else if (inputProps.checkedLink) {&#xD;      _assertCheckedLink(inputProps);&#xD;      return inputProps.checkedLink.requestChange(event.target.checked);&#xD;    } else if (inputProps.onChange) {&#xD;      return inputProps.onChange.call(undefined, event);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = LinkedValueUtils;&#xD;&#xD;/***/ }),&#xD;/* 90 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var injected = false;&#xD;&#xD;var ReactComponentEnvironment = {&#xD;&#xD;  /**&#xD;   * Optionally injectable hook for swapping out mount images in the middle of&#xD;   * the tree.&#xD;   */&#xD;  replaceNodeWithMarkup: null,&#xD;&#xD;  /**&#xD;   * Optionally injectable hook for processing a queue of child updates. Will&#xD;   * later move into MultiChildComponents.&#xD;   */&#xD;  processChildrenUpdates: null,&#xD;&#xD;  injection: {&#xD;    injectEnvironment: function (environment) {&#xD;      !!injected ?  true ? invariant(false, &apos;ReactCompositeComponent: injectEnvironment() can only be called once.&apos;) : _prodInvariant(&apos;104&apos;) : void 0;&#xD;      ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;&#xD;      ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;&#xD;      injected = true;&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactComponentEnvironment;&#xD;&#xD;/***/ }),&#xD;/* 91 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var caughtError = null;&#xD;&#xD;/**&#xD; * Call a function while guarding against errors that happens within it.&#xD; *&#xD; * @param {String} name of the guard to use for logging or debugging&#xD; * @param {Function} func The function to invoke&#xD; * @param {*} a First argument&#xD; * @param {*} b Second argument&#xD; */&#xD;function invokeGuardedCallback(name, func, a) {&#xD;  try {&#xD;    func(a);&#xD;  } catch (x) {&#xD;    if (caughtError === null) {&#xD;      caughtError = x;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;var ReactErrorUtils = {&#xD;  invokeGuardedCallback: invokeGuardedCallback,&#xD;&#xD;  /**&#xD;   * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event&#xD;   * handler are sure to be rethrown by rethrowCaughtError.&#xD;   */&#xD;  invokeGuardedCallbackWithCatch: invokeGuardedCallback,&#xD;&#xD;  /**&#xD;   * During execution of guarded functions we will capture the first error which&#xD;   * we will rethrow to be handled by the top level error handler.&#xD;   */&#xD;  rethrowCaughtError: function () {&#xD;    if (caughtError) {&#xD;      var error = caughtError;&#xD;      caughtError = null;&#xD;      throw error;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;if (true) {&#xD;  /**&#xD;   * To help development we can get better devtools integration by simulating a&#xD;   * real browser event.&#xD;   */&#xD;  if (typeof window !== &apos;undefined&apos; &amp;&amp; typeof window.dispatchEvent === &apos;function&apos; &amp;&amp; typeof document !== &apos;undefined&apos; &amp;&amp; typeof document.createEvent === &apos;function&apos;) {&#xD;    var fakeNode = document.createElement(&apos;react&apos;);&#xD;    ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {&#xD;      var boundFunc = func.bind(null, a);&#xD;      var evtType = &apos;react-&apos; + name;&#xD;      fakeNode.addEventListener(evtType, boundFunc, false);&#xD;      var evt = document.createEvent(&apos;Event&apos;);&#xD;      evt.initEvent(evtType, false, false);&#xD;      fakeNode.dispatchEvent(evt);&#xD;      fakeNode.removeEventListener(evtType, boundFunc, false);&#xD;    };&#xD;  }&#xD;}&#xD;&#xD;module.exports = ReactErrorUtils;&#xD;&#xD;/***/ }),&#xD;/* 92 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactInstanceMap = __webpack_require__(52);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;function enqueueUpdate(internalInstance) {&#xD;  ReactUpdates.enqueueUpdate(internalInstance);&#xD;}&#xD;&#xD;function formatUnexpectedArgument(arg) {&#xD;  var type = typeof arg;&#xD;  if (type !== &apos;object&apos;) {&#xD;    return type;&#xD;  }&#xD;  var displayName = arg.constructor &amp;&amp; arg.constructor.name || type;&#xD;  var keys = Object.keys(arg);&#xD;  if (keys.length &gt; 0 &amp;&amp; keys.length &lt; 20) {&#xD;    return displayName + &apos; (keys: &apos; + keys.join(&apos;, &apos;) + &apos;)&apos;;&#xD;  }&#xD;  return displayName;&#xD;}&#xD;&#xD;function getInternalInstanceReadyForUpdate(publicInstance, callerName) {&#xD;  var internalInstance = ReactInstanceMap.get(publicInstance);&#xD;  if (!internalInstance) {&#xD;    if (true) {&#xD;      var ctor = publicInstance.constructor;&#xD;      // Only warn when we have a callerName. Otherwise we should be silent.&#xD;      // We&apos;re probably calling from enqueueCallback. We don&apos;t want to warn&#xD;      // there because we already warned for the corresponding lifecycle method.&#xD;       true ? warning(!callerName, &apos;%s(...): Can only update a mounted or mounting component. &apos; + &apos;This usually means you called %s() on an unmounted component. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, ctor &amp;&amp; (ctor.displayName || ctor.name) || &apos;ReactClass&apos;) : void 0;&#xD;    }&#xD;    return null;&#xD;  }&#xD;&#xD;  if (true) {&#xD;     true ? warning(ReactCurrentOwner.current == null, &apos;%s(...): Cannot update during an existing state transition (such as &apos; + &apos;within `render` or another component\&apos;s constructor). Render methods &apos; + &apos;should be a pure function of props and state; constructor &apos; + &apos;side-effects are an anti-pattern, but can be moved to &apos; + &apos;`componentWillMount`.&apos;, callerName) : void 0;&#xD;  }&#xD;&#xD;  return internalInstance;&#xD;}&#xD;&#xD;/**&#xD; * ReactUpdateQueue allows for state updates to be scheduled into a later&#xD; * reconciliation step.&#xD; */&#xD;var ReactUpdateQueue = {&#xD;&#xD;  /**&#xD;   * Checks whether or not this composite component is mounted.&#xD;   * @param {ReactClass} publicInstance The instance we want to test.&#xD;   * @return {boolean} True if mounted, false otherwise.&#xD;   * @protected&#xD;   * @final&#xD;   */&#xD;  isMounted: function (publicInstance) {&#xD;    if (true) {&#xD;      var owner = ReactCurrentOwner.current;&#xD;      if (owner !== null) {&#xD;         true ? warning(owner._warnedAboutRefsInRender, &apos;%s is accessing isMounted inside its render() function. &apos; + &apos;render() should be a pure function of props and state. It should &apos; + &apos;never access something that requires stale data from the previous &apos; + &apos;render, such as refs. Move this logic to componentDidMount and &apos; + &apos;componentDidUpdate instead.&apos;, owner.getName() || &apos;A component&apos;) : void 0;&#xD;        owner._warnedAboutRefsInRender = true;&#xD;      }&#xD;    }&#xD;    var internalInstance = ReactInstanceMap.get(publicInstance);&#xD;    if (internalInstance) {&#xD;      // During componentWillMount and render this will still be null but after&#xD;      // that will always render to something. At least for now. So we can use&#xD;      // this hack.&#xD;      return !!internalInstance._renderedComponent;&#xD;    } else {&#xD;      return false;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Enqueue a callback that will be executed after all the pending updates&#xD;   * have processed.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance to use as `this` context.&#xD;   * @param {?function} callback Called after state is updated.&#xD;   * @param {string} callerName Name of the calling function in the public API.&#xD;   * @internal&#xD;   */&#xD;  enqueueCallback: function (publicInstance, callback, callerName) {&#xD;    ReactUpdateQueue.validateCallback(callback, callerName);&#xD;    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);&#xD;&#xD;    // Previously we would throw an error if we didn&apos;t have an internal&#xD;    // instance. Since we want to make it a no-op instead, we mirror the same&#xD;    // behavior we have in other enqueue* methods.&#xD;    // We also need to ignore callbacks in componentWillMount. See&#xD;    // enqueueUpdates.&#xD;    if (!internalInstance) {&#xD;      return null;&#xD;    }&#xD;&#xD;    if (internalInstance._pendingCallbacks) {&#xD;      internalInstance._pendingCallbacks.push(callback);&#xD;    } else {&#xD;      internalInstance._pendingCallbacks = [callback];&#xD;    }&#xD;    // TODO: The callback here is ignored when setState is called from&#xD;    // componentWillMount. Either fix it or disallow doing so completely in&#xD;    // favor of getInitialState. Alternatively, we can disallow&#xD;    // componentWillMount during server-side rendering.&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  enqueueCallbackInternal: function (internalInstance, callback) {&#xD;    if (internalInstance._pendingCallbacks) {&#xD;      internalInstance._pendingCallbacks.push(callback);&#xD;    } else {&#xD;      internalInstance._pendingCallbacks = [callback];&#xD;    }&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  /**&#xD;   * Forces an update. This should only be invoked when it is known with&#xD;   * certainty that we are **not** in a DOM transaction.&#xD;   *&#xD;   * You may want to call this when you know that some deeper aspect of the&#xD;   * component&apos;s state has changed but `setState` was not called.&#xD;   *&#xD;   * This will not invoke `shouldComponentUpdate`, but it will invoke&#xD;   * `componentWillUpdate` and `componentDidUpdate`.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @internal&#xD;   */&#xD;  enqueueForceUpdate: function (publicInstance) {&#xD;    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;forceUpdate&apos;);&#xD;&#xD;    if (!internalInstance) {&#xD;      return;&#xD;    }&#xD;&#xD;    internalInstance._pendingForceUpdate = true;&#xD;&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  /**&#xD;   * Replaces all of the state. Always use this or `setState` to mutate state.&#xD;   * You should treat `this.state` as immutable.&#xD;   *&#xD;   * There is no guarantee that `this.state` will be immediately updated, so&#xD;   * accessing `this.state` after calling this method may return the old value.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object} completeState Next state.&#xD;   * @internal&#xD;   */&#xD;  enqueueReplaceState: function (publicInstance, completeState, callback) {&#xD;    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;replaceState&apos;);&#xD;&#xD;    if (!internalInstance) {&#xD;      return;&#xD;    }&#xD;&#xD;    internalInstance._pendingStateQueue = [completeState];&#xD;    internalInstance._pendingReplaceState = true;&#xD;&#xD;    // Future-proof 15.5&#xD;    if (callback !== undefined &amp;&amp; callback !== null) {&#xD;      ReactUpdateQueue.validateCallback(callback, &apos;replaceState&apos;);&#xD;      if (internalInstance._pendingCallbacks) {&#xD;        internalInstance._pendingCallbacks.push(callback);&#xD;      } else {&#xD;        internalInstance._pendingCallbacks = [callback];&#xD;      }&#xD;    }&#xD;&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  /**&#xD;   * Sets a subset of the state. This only exists because _pendingState is&#xD;   * internal. This provides a merging strategy that is not available to deep&#xD;   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it&#xD;   * during the merge.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object} partialState Next partial state to be merged with state.&#xD;   * @internal&#xD;   */&#xD;  enqueueSetState: function (publicInstance, partialState) {&#xD;    if (true) {&#xD;      ReactInstrumentation.debugTool.onSetState();&#xD;       true ? warning(partialState != null, &apos;setState(...): You passed an undefined or null state object; &apos; + &apos;instead, use forceUpdate().&apos;) : void 0;&#xD;    }&#xD;&#xD;    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;setState&apos;);&#xD;&#xD;    if (!internalInstance) {&#xD;      return;&#xD;    }&#xD;&#xD;    var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);&#xD;    queue.push(partialState);&#xD;&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  enqueueElementInternal: function (internalInstance, nextElement, nextContext) {&#xD;    internalInstance._pendingElement = nextElement;&#xD;    // TODO: introduce _pendingContext instead of setting it directly.&#xD;    internalInstance._context = nextContext;&#xD;    enqueueUpdate(internalInstance);&#xD;  },&#xD;&#xD;  validateCallback: function (callback, callerName) {&#xD;    !(!callback || typeof callback === &apos;function&apos;) ?  true ? invariant(false, &apos;%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.&apos;, callerName, formatUnexpectedArgument(callback)) : _prodInvariant(&apos;122&apos;, callerName, formatUnexpectedArgument(callback)) : void 0;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactUpdateQueue;&#xD;&#xD;/***/ }),&#xD;/* 93 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;/* globals MSApp */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Create a function which has &apos;unsafe&apos; privileges (required by windows8 apps)&#xD; */&#xD;&#xD;var createMicrosoftUnsafeLocalFunction = function (func) {&#xD;  if (typeof MSApp !== &apos;undefined&apos; &amp;&amp; MSApp.execUnsafeLocalFunction) {&#xD;    return function (arg0, arg1, arg2, arg3) {&#xD;      MSApp.execUnsafeLocalFunction(function () {&#xD;        return func(arg0, arg1, arg2, arg3);&#xD;      });&#xD;    };&#xD;  } else {&#xD;    return func;&#xD;  }&#xD;};&#xD;&#xD;module.exports = createMicrosoftUnsafeLocalFunction;&#xD;&#xD;/***/ }),&#xD;/* 94 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * `charCode` represents the actual "character code" and is safe to use with&#xD; * `String.fromCharCode`. As such, only keys that correspond to printable&#xD; * characters produce a valid `charCode`, the only exception to this is Enter.&#xD; * The Tab-key is considered non-printable and does not have a `charCode`,&#xD; * presumably because it does not produce a tab-character in browsers.&#xD; *&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @return {number} Normalized `charCode` property.&#xD; */&#xD;&#xD;function getEventCharCode(nativeEvent) {&#xD;  var charCode;&#xD;  var keyCode = nativeEvent.keyCode;&#xD;&#xD;  if (&apos;charCode&apos; in nativeEvent) {&#xD;    charCode = nativeEvent.charCode;&#xD;&#xD;    // FF does not set `charCode` for the Enter-key, check against `keyCode`.&#xD;    if (charCode === 0 &amp;&amp; keyCode === 13) {&#xD;      charCode = 13;&#xD;    }&#xD;  } else {&#xD;    // IE8 does not implement `charCode`, but `keyCode` has the correct value.&#xD;    charCode = keyCode;&#xD;  }&#xD;&#xD;  // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.&#xD;  // Must not discard the (non-)printable Enter-key.&#xD;  if (charCode &gt;= 32 || charCode === 13) {&#xD;    return charCode;&#xD;  }&#xD;&#xD;  return 0;&#xD;}&#xD;&#xD;module.exports = getEventCharCode;&#xD;&#xD;/***/ }),&#xD;/* 95 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Translation from modifier key to the associated property in the event.&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers&#xD; */&#xD;&#xD;var modifierKeyToProp = {&#xD;  &apos;Alt&apos;: &apos;altKey&apos;,&#xD;  &apos;Control&apos;: &apos;ctrlKey&apos;,&#xD;  &apos;Meta&apos;: &apos;metaKey&apos;,&#xD;  &apos;Shift&apos;: &apos;shiftKey&apos;&#xD;};&#xD;&#xD;// IE8 does not implement getModifierState so we simply map it to the only&#xD;// modifier keys exposed by the event itself, does not support Lock-keys.&#xD;// Currently, all major browsers except Chrome seems to support Lock-keys.&#xD;function modifierStateGetter(keyArg) {&#xD;  var syntheticEvent = this;&#xD;  var nativeEvent = syntheticEvent.nativeEvent;&#xD;  if (nativeEvent.getModifierState) {&#xD;    return nativeEvent.getModifierState(keyArg);&#xD;  }&#xD;  var keyProp = modifierKeyToProp[keyArg];&#xD;  return keyProp ? !!nativeEvent[keyProp] : false;&#xD;}&#xD;&#xD;function getEventModifierState(nativeEvent) {&#xD;  return modifierStateGetter;&#xD;}&#xD;&#xD;module.exports = getEventModifierState;&#xD;&#xD;/***/ }),&#xD;/* 96 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Gets the target node from a native browser event by accounting for&#xD; * inconsistencies in browser DOM APIs.&#xD; *&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @return {DOMEventTarget} Target node.&#xD; */&#xD;&#xD;function getEventTarget(nativeEvent) {&#xD;  var target = nativeEvent.target || nativeEvent.srcElement || window;&#xD;&#xD;  // Normalize SVG &lt;use&gt; element events #4963&#xD;  if (target.correspondingUseElement) {&#xD;    target = target.correspondingUseElement;&#xD;  }&#xD;&#xD;  // Safari may fire events on text nodes (Node.TEXT_NODE is 3).&#xD;  // @see http://www.quirksmode.org/js/events_properties.html&#xD;  return target.nodeType === 3 ? target.parentNode : target;&#xD;}&#xD;&#xD;module.exports = getEventTarget;&#xD;&#xD;/***/ }),&#xD;/* 97 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var useHasFeature;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  useHasFeature = document.implementation &amp;&amp; document.implementation.hasFeature &amp;&amp;&#xD;  // always returns true in newer browsers as per the standard.&#xD;  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature&#xD;  document.implementation.hasFeature(&apos;&apos;, &apos;&apos;) !== true;&#xD;}&#xD;&#xD;/**&#xD; * Checks if an event is supported in the current execution environment.&#xD; *&#xD; * NOTE: This will not work correctly for non-generic events such as `change`,&#xD; * `reset`, `load`, `error`, and `select`.&#xD; *&#xD; * Borrows from Modernizr.&#xD; *&#xD; * @param {string} eventNameSuffix Event name, e.g. "click".&#xD; * @param {?boolean} capture Check if the capture phase is supported.&#xD; * @return {boolean} True if the event is supported.&#xD; * @internal&#xD; * @license Modernizr 3.0.0pre (Custom Build) | MIT&#xD; */&#xD;function isEventSupported(eventNameSuffix, capture) {&#xD;  if (!ExecutionEnvironment.canUseDOM || capture &amp;&amp; !(&apos;addEventListener&apos; in document)) {&#xD;    return false;&#xD;  }&#xD;&#xD;  var eventName = &apos;on&apos; + eventNameSuffix;&#xD;  var isSupported = eventName in document;&#xD;&#xD;  if (!isSupported) {&#xD;    var element = document.createElement(&apos;div&apos;);&#xD;    element.setAttribute(eventName, &apos;return;&apos;);&#xD;    isSupported = typeof element[eventName] === &apos;function&apos;;&#xD;  }&#xD;&#xD;  if (!isSupported &amp;&amp; useHasFeature &amp;&amp; eventNameSuffix === &apos;wheel&apos;) {&#xD;    // This is the only way to test support for the `wheel` event in IE9+.&#xD;    isSupported = document.implementation.hasFeature(&apos;Events.wheel&apos;, &apos;3.0&apos;);&#xD;  }&#xD;&#xD;  return isSupported;&#xD;}&#xD;&#xD;module.exports = isEventSupported;&#xD;&#xD;/***/ }),&#xD;/* 98 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Given a `prevElement` and `nextElement`, determines if the existing&#xD; * instance should be updated as opposed to being destroyed or replaced by a new&#xD; * instance. Both arguments are elements. This ensures that this logic can&#xD; * operate on stateless trees without any backing instance.&#xD; *&#xD; * @param {?object} prevElement&#xD; * @param {?object} nextElement&#xD; * @return {boolean} True if the existing instance should be updated.&#xD; * @protected&#xD; */&#xD;&#xD;function shouldUpdateReactComponent(prevElement, nextElement) {&#xD;  var prevEmpty = prevElement === null || prevElement === false;&#xD;  var nextEmpty = nextElement === null || nextElement === false;&#xD;  if (prevEmpty || nextEmpty) {&#xD;    return prevEmpty === nextEmpty;&#xD;  }&#xD;&#xD;  var prevType = typeof prevElement;&#xD;  var nextType = typeof nextElement;&#xD;  if (prevType === &apos;string&apos; || prevType === &apos;number&apos;) {&#xD;    return nextType === &apos;string&apos; || nextType === &apos;number&apos;;&#xD;  } else {&#xD;    return nextType === &apos;object&apos; &amp;&amp; prevElement.type === nextElement.type &amp;&amp; prevElement.key === nextElement.key;&#xD;  }&#xD;}&#xD;&#xD;module.exports = shouldUpdateReactComponent;&#xD;&#xD;/***/ }),&#xD;/* 99 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var validateDOMNesting = emptyFunction;&#xD;&#xD;if (true) {&#xD;  // This validation code was written based on the HTML5 parsing spec:&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope&#xD;  //&#xD;  // Note: this does not catch all invalid nesting, nor does it try to (as it&apos;s&#xD;  // not clear what practical benefit doing so provides); instead, we warn only&#xD;  // for cases where the parser will give a parse tree differing from what React&#xD;  // intended. For example, &lt;b&gt;&lt;div&gt;&lt;/div&gt;&lt;/b&gt; is invalid but we don&apos;t warn&#xD;  // because it still parses correctly; we do warn for other cases like nested&#xD;  // &lt;p&gt; tags where the beginning of the second element implicitly closes the&#xD;  // first, causing a confusing mess.&#xD;&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#special&#xD;  var specialTags = [&apos;address&apos;, &apos;applet&apos;, &apos;area&apos;, &apos;article&apos;, &apos;aside&apos;, &apos;base&apos;, &apos;basefont&apos;, &apos;bgsound&apos;, &apos;blockquote&apos;, &apos;body&apos;, &apos;br&apos;, &apos;button&apos;, &apos;caption&apos;, &apos;center&apos;, &apos;col&apos;, &apos;colgroup&apos;, &apos;dd&apos;, &apos;details&apos;, &apos;dir&apos;, &apos;div&apos;, &apos;dl&apos;, &apos;dt&apos;, &apos;embed&apos;, &apos;fieldset&apos;, &apos;figcaption&apos;, &apos;figure&apos;, &apos;footer&apos;, &apos;form&apos;, &apos;frame&apos;, &apos;frameset&apos;, &apos;h1&apos;, &apos;h2&apos;, &apos;h3&apos;, &apos;h4&apos;, &apos;h5&apos;, &apos;h6&apos;, &apos;head&apos;, &apos;header&apos;, &apos;hgroup&apos;, &apos;hr&apos;, &apos;html&apos;, &apos;iframe&apos;, &apos;img&apos;, &apos;input&apos;, &apos;isindex&apos;, &apos;li&apos;, &apos;link&apos;, &apos;listing&apos;, &apos;main&apos;, &apos;marquee&apos;, &apos;menu&apos;, &apos;menuitem&apos;, &apos;meta&apos;, &apos;nav&apos;, &apos;noembed&apos;, &apos;noframes&apos;, &apos;noscript&apos;, &apos;object&apos;, &apos;ol&apos;, &apos;p&apos;, &apos;param&apos;, &apos;plaintext&apos;, &apos;pre&apos;, &apos;script&apos;, &apos;section&apos;, &apos;select&apos;, &apos;source&apos;, &apos;style&apos;, &apos;summary&apos;, &apos;table&apos;, &apos;tbody&apos;, &apos;td&apos;, &apos;template&apos;, &apos;textarea&apos;, &apos;tfoot&apos;, &apos;th&apos;, &apos;thead&apos;, &apos;title&apos;, &apos;tr&apos;, &apos;track&apos;, &apos;ul&apos;, &apos;wbr&apos;, &apos;xmp&apos;];&#xD;&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope&#xD;  var inScopeTags = [&apos;applet&apos;, &apos;caption&apos;, &apos;html&apos;, &apos;table&apos;, &apos;td&apos;, &apos;th&apos;, &apos;marquee&apos;, &apos;object&apos;, &apos;template&apos;,&#xD;&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point&#xD;  // TODO: Distinguish by namespace here -- for &lt;title&gt;, including it here&#xD;  // errs on the side of fewer warnings&#xD;  &apos;foreignObject&apos;, &apos;desc&apos;, &apos;title&apos;];&#xD;&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope&#xD;  var buttonScopeTags = inScopeTags.concat([&apos;button&apos;]);&#xD;&#xD;  // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags&#xD;  var impliedEndTags = [&apos;dd&apos;, &apos;dt&apos;, &apos;li&apos;, &apos;option&apos;, &apos;optgroup&apos;, &apos;p&apos;, &apos;rp&apos;, &apos;rt&apos;];&#xD;&#xD;  var emptyAncestorInfo = {&#xD;    current: null,&#xD;&#xD;    formTag: null,&#xD;    aTagInScope: null,&#xD;    buttonTagInScope: null,&#xD;    nobrTagInScope: null,&#xD;    pTagInButtonScope: null,&#xD;&#xD;    listItemTagAutoclosing: null,&#xD;    dlItemTagAutoclosing: null&#xD;  };&#xD;&#xD;  var updatedAncestorInfo = function (oldInfo, tag, instance) {&#xD;    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);&#xD;    var info = { tag: tag, instance: instance };&#xD;&#xD;    if (inScopeTags.indexOf(tag) !== -1) {&#xD;      ancestorInfo.aTagInScope = null;&#xD;      ancestorInfo.buttonTagInScope = null;&#xD;      ancestorInfo.nobrTagInScope = null;&#xD;    }&#xD;    if (buttonScopeTags.indexOf(tag) !== -1) {&#xD;      ancestorInfo.pTagInButtonScope = null;&#xD;    }&#xD;&#xD;    // See rules for &apos;li&apos;, &apos;dd&apos;, &apos;dt&apos; start tags in&#xD;    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody&#xD;    if (specialTags.indexOf(tag) !== -1 &amp;&amp; tag !== &apos;address&apos; &amp;&amp; tag !== &apos;div&apos; &amp;&amp; tag !== &apos;p&apos;) {&#xD;      ancestorInfo.listItemTagAutoclosing = null;&#xD;      ancestorInfo.dlItemTagAutoclosing = null;&#xD;    }&#xD;&#xD;    ancestorInfo.current = info;&#xD;&#xD;    if (tag === &apos;form&apos;) {&#xD;      ancestorInfo.formTag = info;&#xD;    }&#xD;    if (tag === &apos;a&apos;) {&#xD;      ancestorInfo.aTagInScope = info;&#xD;    }&#xD;    if (tag === &apos;button&apos;) {&#xD;      ancestorInfo.buttonTagInScope = info;&#xD;    }&#xD;    if (tag === &apos;nobr&apos;) {&#xD;      ancestorInfo.nobrTagInScope = info;&#xD;    }&#xD;    if (tag === &apos;p&apos;) {&#xD;      ancestorInfo.pTagInButtonScope = info;&#xD;    }&#xD;    if (tag === &apos;li&apos;) {&#xD;      ancestorInfo.listItemTagAutoclosing = info;&#xD;    }&#xD;    if (tag === &apos;dd&apos; || tag === &apos;dt&apos;) {&#xD;      ancestorInfo.dlItemTagAutoclosing = info;&#xD;    }&#xD;&#xD;    return ancestorInfo;&#xD;  };&#xD;&#xD;  /**&#xD;   * Returns whether&#xD;   */&#xD;  var isTagValidWithParent = function (tag, parentTag) {&#xD;    // First, let&apos;s check if we&apos;re in an unusual parsing mode...&#xD;    switch (parentTag) {&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect&#xD;      case &apos;select&apos;:&#xD;        return tag === &apos;option&apos; || tag === &apos;optgroup&apos; || tag === &apos;#text&apos;;&#xD;      case &apos;optgroup&apos;:&#xD;        return tag === &apos;option&apos; || tag === &apos;#text&apos;;&#xD;      // Strictly speaking, seeing an &lt;option&gt; doesn&apos;t mean we&apos;re in a &lt;select&gt;&#xD;      // but&#xD;      case &apos;option&apos;:&#xD;        return tag === &apos;#text&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption&#xD;      // No special behavior since these rules fall back to "in body" mode for&#xD;      // all except special table nodes which cause bad parsing behavior anyway.&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr&#xD;      case &apos;tr&apos;:&#xD;        return tag === &apos;th&apos; || tag === &apos;td&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody&#xD;      case &apos;tbody&apos;:&#xD;      case &apos;thead&apos;:&#xD;      case &apos;tfoot&apos;:&#xD;        return tag === &apos;tr&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup&#xD;      case &apos;colgroup&apos;:&#xD;        return tag === &apos;col&apos; || tag === &apos;template&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable&#xD;      case &apos;table&apos;:&#xD;        return tag === &apos;caption&apos; || tag === &apos;colgroup&apos; || tag === &apos;tbody&apos; || tag === &apos;tfoot&apos; || tag === &apos;thead&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead&#xD;      case &apos;head&apos;:&#xD;        return tag === &apos;base&apos; || tag === &apos;basefont&apos; || tag === &apos;bgsound&apos; || tag === &apos;link&apos; || tag === &apos;meta&apos; || tag === &apos;title&apos; || tag === &apos;noscript&apos; || tag === &apos;noframes&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;&#xD;&#xD;      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element&#xD;      case &apos;html&apos;:&#xD;        return tag === &apos;head&apos; || tag === &apos;body&apos;;&#xD;      case &apos;#document&apos;:&#xD;        return tag === &apos;html&apos;;&#xD;    }&#xD;&#xD;    // Probably in the "in body" parsing mode, so we outlaw only tag combos&#xD;    // where the parsing rules cause implicit opens or closes to be added.&#xD;    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody&#xD;    switch (tag) {&#xD;      case &apos;h1&apos;:&#xD;      case &apos;h2&apos;:&#xD;      case &apos;h3&apos;:&#xD;      case &apos;h4&apos;:&#xD;      case &apos;h5&apos;:&#xD;      case &apos;h6&apos;:&#xD;        return parentTag !== &apos;h1&apos; &amp;&amp; parentTag !== &apos;h2&apos; &amp;&amp; parentTag !== &apos;h3&apos; &amp;&amp; parentTag !== &apos;h4&apos; &amp;&amp; parentTag !== &apos;h5&apos; &amp;&amp; parentTag !== &apos;h6&apos;;&#xD;&#xD;      case &apos;rp&apos;:&#xD;      case &apos;rt&apos;:&#xD;        return impliedEndTags.indexOf(parentTag) === -1;&#xD;&#xD;      case &apos;body&apos;:&#xD;      case &apos;caption&apos;:&#xD;      case &apos;col&apos;:&#xD;      case &apos;colgroup&apos;:&#xD;      case &apos;frame&apos;:&#xD;      case &apos;head&apos;:&#xD;      case &apos;html&apos;:&#xD;      case &apos;tbody&apos;:&#xD;      case &apos;td&apos;:&#xD;      case &apos;tfoot&apos;:&#xD;      case &apos;th&apos;:&#xD;      case &apos;thead&apos;:&#xD;      case &apos;tr&apos;:&#xD;        // These tags are only valid with a few parents that have special child&#xD;        // parsing rules -- if we&apos;re down here, then none of those matched and&#xD;        // so we allow it only if we don&apos;t know what the parent is, as all other&#xD;        // cases are invalid.&#xD;        return parentTag == null;&#xD;    }&#xD;&#xD;    return true;&#xD;  };&#xD;&#xD;  /**&#xD;   * Returns whether&#xD;   */&#xD;  var findInvalidAncestorForTag = function (tag, ancestorInfo) {&#xD;    switch (tag) {&#xD;      case &apos;address&apos;:&#xD;      case &apos;article&apos;:&#xD;      case &apos;aside&apos;:&#xD;      case &apos;blockquote&apos;:&#xD;      case &apos;center&apos;:&#xD;      case &apos;details&apos;:&#xD;      case &apos;dialog&apos;:&#xD;      case &apos;dir&apos;:&#xD;      case &apos;div&apos;:&#xD;      case &apos;dl&apos;:&#xD;      case &apos;fieldset&apos;:&#xD;      case &apos;figcaption&apos;:&#xD;      case &apos;figure&apos;:&#xD;      case &apos;footer&apos;:&#xD;      case &apos;header&apos;:&#xD;      case &apos;hgroup&apos;:&#xD;      case &apos;main&apos;:&#xD;      case &apos;menu&apos;:&#xD;      case &apos;nav&apos;:&#xD;      case &apos;ol&apos;:&#xD;      case &apos;p&apos;:&#xD;      case &apos;section&apos;:&#xD;      case &apos;summary&apos;:&#xD;      case &apos;ul&apos;:&#xD;      case &apos;pre&apos;:&#xD;      case &apos;listing&apos;:&#xD;      case &apos;table&apos;:&#xD;      case &apos;hr&apos;:&#xD;      case &apos;xmp&apos;:&#xD;      case &apos;h1&apos;:&#xD;      case &apos;h2&apos;:&#xD;      case &apos;h3&apos;:&#xD;      case &apos;h4&apos;:&#xD;      case &apos;h5&apos;:&#xD;      case &apos;h6&apos;:&#xD;        return ancestorInfo.pTagInButtonScope;&#xD;&#xD;      case &apos;form&apos;:&#xD;        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;&#xD;&#xD;      case &apos;li&apos;:&#xD;        return ancestorInfo.listItemTagAutoclosing;&#xD;&#xD;      case &apos;dd&apos;:&#xD;      case &apos;dt&apos;:&#xD;        return ancestorInfo.dlItemTagAutoclosing;&#xD;&#xD;      case &apos;button&apos;:&#xD;        return ancestorInfo.buttonTagInScope;&#xD;&#xD;      case &apos;a&apos;:&#xD;        // Spec says something about storing a list of markers, but it sounds&#xD;        // equivalent to this check.&#xD;        return ancestorInfo.aTagInScope;&#xD;&#xD;      case &apos;nobr&apos;:&#xD;        return ancestorInfo.nobrTagInScope;&#xD;    }&#xD;&#xD;    return null;&#xD;  };&#xD;&#xD;  /**&#xD;   * Given a ReactCompositeComponent instance, return a list of its recursive&#xD;   * owners, starting at the root and ending with the instance itself.&#xD;   */&#xD;  var findOwnerStack = function (instance) {&#xD;    if (!instance) {&#xD;      return [];&#xD;    }&#xD;&#xD;    var stack = [];&#xD;    do {&#xD;      stack.push(instance);&#xD;    } while (instance = instance._currentElement._owner);&#xD;    stack.reverse();&#xD;    return stack;&#xD;  };&#xD;&#xD;  var didWarn = {};&#xD;&#xD;  validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {&#xD;    ancestorInfo = ancestorInfo || emptyAncestorInfo;&#xD;    var parentInfo = ancestorInfo.current;&#xD;    var parentTag = parentInfo &amp;&amp; parentInfo.tag;&#xD;&#xD;    if (childText != null) {&#xD;       true ? warning(childTag == null, &apos;validateDOMNesting: when childText is passed, childTag should be null&apos;) : void 0;&#xD;      childTag = &apos;#text&apos;;&#xD;    }&#xD;&#xD;    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;&#xD;    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);&#xD;    var problematic = invalidParent || invalidAncestor;&#xD;&#xD;    if (problematic) {&#xD;      var ancestorTag = problematic.tag;&#xD;      var ancestorInstance = problematic.instance;&#xD;&#xD;      var childOwner = childInstance &amp;&amp; childInstance._currentElement._owner;&#xD;      var ancestorOwner = ancestorInstance &amp;&amp; ancestorInstance._currentElement._owner;&#xD;&#xD;      var childOwners = findOwnerStack(childOwner);&#xD;      var ancestorOwners = findOwnerStack(ancestorOwner);&#xD;&#xD;      var minStackLen = Math.min(childOwners.length, ancestorOwners.length);&#xD;      var i;&#xD;&#xD;      var deepestCommon = -1;&#xD;      for (i = 0; i &lt; minStackLen; i++) {&#xD;        if (childOwners[i] === ancestorOwners[i]) {&#xD;          deepestCommon = i;&#xD;        } else {&#xD;          break;&#xD;        }&#xD;      }&#xD;&#xD;      var UNKNOWN = &apos;(unknown)&apos;;&#xD;      var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {&#xD;        return inst.getName() || UNKNOWN;&#xD;      });&#xD;      var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {&#xD;        return inst.getName() || UNKNOWN;&#xD;      });&#xD;      var ownerInfo = [].concat(&#xD;      // If the parent and child instances have a common owner ancestor, start&#xD;      // with that -- otherwise we just start with the parent&apos;s owners.&#xD;      deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,&#xD;      // If we&apos;re warning about an invalid (non-parent) ancestry, add &apos;...&apos;&#xD;      invalidAncestor ? [&apos;...&apos;] : [], childOwnerNames, childTag).join(&apos; &gt; &apos;);&#xD;&#xD;      var warnKey = !!invalidParent + &apos;|&apos; + childTag + &apos;|&apos; + ancestorTag + &apos;|&apos; + ownerInfo;&#xD;      if (didWarn[warnKey]) {&#xD;        return;&#xD;      }&#xD;      didWarn[warnKey] = true;&#xD;&#xD;      var tagDisplayName = childTag;&#xD;      var whitespaceInfo = &apos;&apos;;&#xD;      if (childTag === &apos;#text&apos;) {&#xD;        if (/\S/.test(childText)) {&#xD;          tagDisplayName = &apos;Text nodes&apos;;&#xD;        } else {&#xD;          tagDisplayName = &apos;Whitespace text nodes&apos;;&#xD;          whitespaceInfo = &apos; Make sure you don\&apos;t have any extra whitespace between tags on &apos; + &apos;each line of your source code.&apos;;&#xD;        }&#xD;      } else {&#xD;        tagDisplayName = &apos;&lt;&apos; + childTag + &apos;&gt;&apos;;&#xD;      }&#xD;&#xD;      if (invalidParent) {&#xD;        var info = &apos;&apos;;&#xD;        if (ancestorTag === &apos;table&apos; &amp;&amp; childTag === &apos;tr&apos;) {&#xD;          info += &apos; Add a &lt;tbody&gt; to your code to match the DOM tree generated by &apos; + &apos;the browser.&apos;;&#xD;        }&#xD;         true ? warning(false, &apos;validateDOMNesting(...): %s cannot appear as a child of &lt;%s&gt;.%s &apos; + &apos;See %s.%s&apos;, tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;&#xD;      } else {&#xD;         true ? warning(false, &apos;validateDOMNesting(...): %s cannot appear as a descendant of &apos; + &apos;&lt;%s&gt;. See %s.&apos;, tagDisplayName, ancestorTag, ownerInfo) : void 0;&#xD;      }&#xD;    }&#xD;  };&#xD;&#xD;  validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;&#xD;&#xD;  // For testing&#xD;  validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {&#xD;    ancestorInfo = ancestorInfo || emptyAncestorInfo;&#xD;    var parentInfo = ancestorInfo.current;&#xD;    var parentTag = parentInfo &amp;&amp; parentInfo.tag;&#xD;    return isTagValidWithParent(tag, parentTag) &amp;&amp; !findInvalidAncestorForTag(tag, ancestorInfo);&#xD;  };&#xD;}&#xD;&#xD;module.exports = validateDOMNesting;&#xD;&#xD;/***/ }),&#xD;/* 100 */,&#xD;/* 101 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var ReactNoopUpdateQueue = __webpack_require__(102);&#xD;&#xD;var canDefineProperty = __webpack_require__(72);&#xD;var emptyObject = __webpack_require__(40);&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;/**&#xD; * Base class helpers for the updating state of a component.&#xD; */&#xD;function ReactComponent(props, context, updater) {&#xD;  this.props = props;&#xD;  this.context = context;&#xD;  this.refs = emptyObject;&#xD;  // We initialize the default updater but the real one gets injected by the&#xD;  // renderer.&#xD;  this.updater = updater || ReactNoopUpdateQueue;&#xD;}&#xD;&#xD;ReactComponent.prototype.isReactComponent = {};&#xD;&#xD;/**&#xD; * Sets a subset of the state. Always use this to mutate&#xD; * state. You should treat `this.state` as immutable.&#xD; *&#xD; * There is no guarantee that `this.state` will be immediately updated, so&#xD; * accessing `this.state` after calling this method may return the old value.&#xD; *&#xD; * There is no guarantee that calls to `setState` will run synchronously,&#xD; * as they may eventually be batched together.  You can provide an optional&#xD; * callback that will be executed when the call to setState is actually&#xD; * completed.&#xD; *&#xD; * When a function is provided to setState, it will be called at some point in&#xD; * the future (not synchronously). It will be called with the up to date&#xD; * component arguments (state, props, context). These values can be different&#xD; * from this.* because your function may be called after receiveProps but before&#xD; * shouldComponentUpdate, and this new state, props, and context will not yet be&#xD; * assigned to this.&#xD; *&#xD; * @param {object|function} partialState Next partial state or function to&#xD; *        produce next partial state to be merged with current state.&#xD; * @param {?function} callback Called after state is updated.&#xD; * @final&#xD; * @protected&#xD; */&#xD;ReactComponent.prototype.setState = function (partialState, callback) {&#xD;  !(typeof partialState === &apos;object&apos; || typeof partialState === &apos;function&apos; || partialState == null) ?  true ? invariant(false, &apos;setState(...): takes an object of state variables to update or a function which returns an object of state variables.&apos;) : _prodInvariant(&apos;85&apos;) : void 0;&#xD;  this.updater.enqueueSetState(this, partialState);&#xD;  if (callback) {&#xD;    this.updater.enqueueCallback(this, callback, &apos;setState&apos;);&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Forces an update. This should only be invoked when it is known with&#xD; * certainty that we are **not** in a DOM transaction.&#xD; *&#xD; * You may want to call this when you know that some deeper aspect of the&#xD; * component&apos;s state has changed but `setState` was not called.&#xD; *&#xD; * This will not invoke `shouldComponentUpdate`, but it will invoke&#xD; * `componentWillUpdate` and `componentDidUpdate`.&#xD; *&#xD; * @param {?function} callback Called after update is complete.&#xD; * @final&#xD; * @protected&#xD; */&#xD;ReactComponent.prototype.forceUpdate = function (callback) {&#xD;  this.updater.enqueueForceUpdate(this);&#xD;  if (callback) {&#xD;    this.updater.enqueueCallback(this, callback, &apos;forceUpdate&apos;);&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Deprecated APIs. These APIs used to exist on classic React classes but since&#xD; * we would like to deprecate them, we&apos;re not going to move them over to this&#xD; * modern base class. Instead, we define a getter that warns if it&apos;s accessed.&#xD; */&#xD;if (true) {&#xD;  var deprecatedAPIs = {&#xD;    isMounted: [&apos;isMounted&apos;, &apos;Instead, make sure to clean up subscriptions and pending requests in &apos; + &apos;componentWillUnmount to prevent memory leaks.&apos;],&#xD;    replaceState: [&apos;replaceState&apos;, &apos;Refactor your code to use setState instead (see &apos; + &apos;https://github.com/facebook/react/issues/3236).&apos;]&#xD;  };&#xD;  var defineDeprecationWarning = function (methodName, info) {&#xD;    if (canDefineProperty) {&#xD;      Object.defineProperty(ReactComponent.prototype, methodName, {&#xD;        get: function () {&#xD;           true ? warning(false, &apos;%s(...) is deprecated in plain JavaScript React classes. %s&apos;, info[0], info[1]) : void 0;&#xD;          return undefined;&#xD;        }&#xD;      });&#xD;    }&#xD;  };&#xD;  for (var fnName in deprecatedAPIs) {&#xD;    if (deprecatedAPIs.hasOwnProperty(fnName)) {&#xD;      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;module.exports = ReactComponent;&#xD;&#xD;/***/ }),&#xD;/* 102 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;function warnNoop(publicInstance, callerName) {&#xD;  if (true) {&#xD;    var constructor = publicInstance.constructor;&#xD;     true ? warning(false, &apos;%s(...): Can only update a mounted or mounting component. &apos; + &apos;This usually means you called %s() on an unmounted component. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, constructor &amp;&amp; (constructor.displayName || constructor.name) || &apos;ReactClass&apos;) : void 0;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * This is the abstract API for an update queue.&#xD; */&#xD;var ReactNoopUpdateQueue = {&#xD;&#xD;  /**&#xD;   * Checks whether or not this composite component is mounted.&#xD;   * @param {ReactClass} publicInstance The instance we want to test.&#xD;   * @return {boolean} True if mounted, false otherwise.&#xD;   * @protected&#xD;   * @final&#xD;   */&#xD;  isMounted: function (publicInstance) {&#xD;    return false;&#xD;  },&#xD;&#xD;  /**&#xD;   * Enqueue a callback that will be executed after all the pending updates&#xD;   * have processed.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance to use as `this` context.&#xD;   * @param {?function} callback Called after state is updated.&#xD;   * @internal&#xD;   */&#xD;  enqueueCallback: function (publicInstance, callback) {},&#xD;&#xD;  /**&#xD;   * Forces an update. This should only be invoked when it is known with&#xD;   * certainty that we are **not** in a DOM transaction.&#xD;   *&#xD;   * You may want to call this when you know that some deeper aspect of the&#xD;   * component&apos;s state has changed but `setState` was not called.&#xD;   *&#xD;   * This will not invoke `shouldComponentUpdate`, but it will invoke&#xD;   * `componentWillUpdate` and `componentDidUpdate`.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @internal&#xD;   */&#xD;  enqueueForceUpdate: function (publicInstance) {&#xD;    warnNoop(publicInstance, &apos;forceUpdate&apos;);&#xD;  },&#xD;&#xD;  /**&#xD;   * Replaces all of the state. Always use this or `setState` to mutate state.&#xD;   * You should treat `this.state` as immutable.&#xD;   *&#xD;   * There is no guarantee that `this.state` will be immediately updated, so&#xD;   * accessing `this.state` after calling this method may return the old value.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object} completeState Next state.&#xD;   * @internal&#xD;   */&#xD;  enqueueReplaceState: function (publicInstance, completeState) {&#xD;    warnNoop(publicInstance, &apos;replaceState&apos;);&#xD;  },&#xD;&#xD;  /**&#xD;   * Sets a subset of the state. This only exists because _pendingState is&#xD;   * internal. This provides a merging strategy that is not available to deep&#xD;   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it&#xD;   * during the merge.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object} partialState Next partial state to be merged with state.&#xD;   * @internal&#xD;   */&#xD;  enqueueSetState: function (publicInstance, partialState) {&#xD;    warnNoop(publicInstance, &apos;setState&apos;);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactNoopUpdateQueue;&#xD;&#xD;/***/ }),&#xD;/* 103 */,&#xD;/* 104 */,&#xD;/* 105 */,&#xD;/* 106 */,&#xD;/* 107 */,&#xD;/* 108 */,&#xD;/* 109 */,&#xD;/* 110 */,&#xD;/* 111 */,&#xD;/* 112 */,&#xD;/* 113 */,&#xD;/* 114 */,&#xD;/* 115 */,&#xD;/* 116 */,&#xD;/* 117 */,&#xD;/* 118 */,&#xD;/* 119 */,&#xD;/* 120 */,&#xD;/* 121 */,&#xD;/* 122 */,&#xD;/* 123 */,&#xD;/* 124 */,&#xD;/* 125 */,&#xD;/* 126 */,&#xD;/* 127 */,&#xD;/* 128 */,&#xD;/* 129 */,&#xD;/* 130 */,&#xD;/* 131 */,&#xD;/* 132 */,&#xD;/* 133 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; *&#xD; * Licensed under the Apache License, Version 2.0 (the "License");&#xD; * you may not use this file except in compliance with the License.&#xD; * You may obtain a copy of the License at&#xD; *&#xD; * http://www.apache.org/licenses/LICENSE-2.0&#xD; *&#xD; * Unless required by applicable law or agreed to in writing, software&#xD; * distributed under the License is distributed on an "AS IS" BASIS,&#xD; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#xD; * See the License for the specific language governing permissions and&#xD; * limitations under the License.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;&#xD;/**&#xD; * Upstream version of event listener. Does not take into account specific&#xD; * nature of platform.&#xD; */&#xD;var EventListener = {&#xD;  /**&#xD;   * Listen to DOM events during the bubble phase.&#xD;   *&#xD;   * @param {DOMEventTarget} target DOM element to register listener on.&#xD;   * @param {string} eventType Event type, e.g. &apos;click&apos; or &apos;mouseover&apos;.&#xD;   * @param {function} callback Callback function.&#xD;   * @return {object} Object with a `remove` method.&#xD;   */&#xD;  listen: function listen(target, eventType, callback) {&#xD;    if (target.addEventListener) {&#xD;      target.addEventListener(eventType, callback, false);&#xD;      return {&#xD;        remove: function remove() {&#xD;          target.removeEventListener(eventType, callback, false);&#xD;        }&#xD;      };&#xD;    } else if (target.attachEvent) {&#xD;      target.attachEvent(&apos;on&apos; + eventType, callback);&#xD;      return {&#xD;        remove: function remove() {&#xD;          target.detachEvent(&apos;on&apos; + eventType, callback);&#xD;        }&#xD;      };&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Listen to DOM events during the capture phase.&#xD;   *&#xD;   * @param {DOMEventTarget} target DOM element to register listener on.&#xD;   * @param {string} eventType Event type, e.g. &apos;click&apos; or &apos;mouseover&apos;.&#xD;   * @param {function} callback Callback function.&#xD;   * @return {object} Object with a `remove` method.&#xD;   */&#xD;  capture: function capture(target, eventType, callback) {&#xD;    if (target.addEventListener) {&#xD;      target.addEventListener(eventType, callback, true);&#xD;      return {&#xD;        remove: function remove() {&#xD;          target.removeEventListener(eventType, callback, true);&#xD;        }&#xD;      };&#xD;    } else {&#xD;      if (true) {&#xD;        console.error(&apos;Attempted to listen to events during the capture phase on a &apos; + &apos;browser that does not support the capture phase. Your application &apos; + &apos;will not receive some events.&apos;);&#xD;      }&#xD;      return {&#xD;        remove: emptyFunction&#xD;      };&#xD;    }&#xD;  },&#xD;&#xD;  registerDefault: function registerDefault() {}&#xD;};&#xD;&#xD;module.exports = EventListener;&#xD;&#xD;/***/ }),&#xD;/* 134 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * @param {DOMElement} node input/textarea to focus&#xD; */&#xD;&#xD;function focusNode(node) {&#xD;  // IE8 can throw "Can&apos;t move focus to the control because it is invisible,&#xD;  // not enabled, or of a type that does not accept the focus." for all kinds of&#xD;  // reasons that are too expensive and fragile to test.&#xD;  try {&#xD;    node.focus();&#xD;  } catch (e) {}&#xD;}&#xD;&#xD;module.exports = focusNode;&#xD;&#xD;/***/ }),&#xD;/* 135 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;/* eslint-disable fb-www/typeof-undefined */&#xD;&#xD;/**&#xD; * Same as document.activeElement but wraps in a try-catch block. In IE it is&#xD; * not safe to call document.activeElement if there is nothing focused.&#xD; *&#xD; * The activeElement will be null only if the document or document body is not&#xD; * yet defined.&#xD; */&#xD;function getActiveElement() /*?DOMElement*/{&#xD;  if (typeof document === &apos;undefined&apos;) {&#xD;    return null;&#xD;  }&#xD;  try {&#xD;    return document.activeElement || document.body;&#xD;  } catch (e) {&#xD;    return document.body;&#xD;  }&#xD;}&#xD;&#xD;module.exports = getActiveElement;&#xD;&#xD;/***/ }),&#xD;/* 136 */,&#xD;/* 137 */,&#xD;/* 138 */,&#xD;/* 139 */,&#xD;/* 140 */,&#xD;/* 141 */,&#xD;/* 142 */,&#xD;/* 143 */,&#xD;/* 144 */,&#xD;/* 145 */,&#xD;/* 146 */,&#xD;/* 147 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;&#xD;&#xD;// React 15.5 references this module, and assumes PropTypes are still callable in production.&#xD;// Therefore we re-export development-only version with all the PropTypes checks here.&#xD;// However if one is migrating to the `prop-types` npm library, they will go through the&#xD;// `index.js` entry point, and it will branch depending on the environment.&#xD;var factory = __webpack_require__(148);&#xD;module.exports = function(isValidElement) {&#xD;  // It is still allowed in 15.5.&#xD;  var throwOnDirectAccess = false;&#xD;  return factory(isValidElement, throwOnDirectAccess);&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 148 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ReactPropTypesSecret = __webpack_require__(149);&#xD;var checkPropTypes = __webpack_require__(387);&#xD;&#xD;module.exports = function(isValidElement, throwOnDirectAccess) {&#xD;  /* global Symbol */&#xD;  var ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;&#xD;  var FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.&#xD;&#xD;  /**&#xD;   * Returns the iterator method function contained on the iterable object.&#xD;   *&#xD;   * Be sure to invoke the function with the iterable as context:&#xD;   *&#xD;   *     var iteratorFn = getIteratorFn(myIterable);&#xD;   *     if (iteratorFn) {&#xD;   *       var iterator = iteratorFn.call(myIterable);&#xD;   *       ...&#xD;   *     }&#xD;   *&#xD;   * @param {?object} maybeIterable&#xD;   * @return {?function}&#xD;   */&#xD;  function getIteratorFn(maybeIterable) {&#xD;    var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);&#xD;    if (typeof iteratorFn === &apos;function&apos;) {&#xD;      return iteratorFn;&#xD;    }&#xD;  }&#xD;&#xD;  /**&#xD;   * Collection of methods that allow declaration and validation of props that are&#xD;   * supplied to React components. Example usage:&#xD;   *&#xD;   *   var Props = require(&apos;ReactPropTypes&apos;);&#xD;   *   var MyArticle = React.createClass({&#xD;   *     propTypes: {&#xD;   *       // An optional string prop named "description".&#xD;   *       description: Props.string,&#xD;   *&#xD;   *       // A required enum prop named "category".&#xD;   *       category: Props.oneOf([&apos;News&apos;,&apos;Photos&apos;]).isRequired,&#xD;   *&#xD;   *       // A prop named "dialog" that requires an instance of Dialog.&#xD;   *       dialog: Props.instanceOf(Dialog).isRequired&#xD;   *     },&#xD;   *     render: function() { ... }&#xD;   *   });&#xD;   *&#xD;   * A more formal specification of how these methods are used:&#xD;   *&#xD;   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)&#xD;   *   decl := ReactPropTypes.{type}(.isRequired)?&#xD;   *&#xD;   * Each and every declaration produces a function with the same signature. This&#xD;   * allows the creation of custom validation functions. For example:&#xD;   *&#xD;   *  var MyLink = React.createClass({&#xD;   *    propTypes: {&#xD;   *      // An optional string or URI prop named "href".&#xD;   *      href: function(props, propName, componentName) {&#xD;   *        var propValue = props[propName];&#xD;   *        if (propValue != null &amp;&amp; typeof propValue !== &apos;string&apos; &amp;&amp;&#xD;   *            !(propValue instanceof URI)) {&#xD;   *          return new Error(&#xD;   *            &apos;Expected a string or an URI for &apos; + propName + &apos; in &apos; +&#xD;   *            componentName&#xD;   *          );&#xD;   *        }&#xD;   *      }&#xD;   *    },&#xD;   *    render: function() {...}&#xD;   *  });&#xD;   *&#xD;   * @internal&#xD;   */&#xD;&#xD;  var ANONYMOUS = &apos;&lt;&lt;anonymous&gt;&gt;&apos;;&#xD;&#xD;  // Important!&#xD;  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.&#xD;  var ReactPropTypes = {&#xD;    array: createPrimitiveTypeChecker(&apos;array&apos;),&#xD;    bool: createPrimitiveTypeChecker(&apos;boolean&apos;),&#xD;    func: createPrimitiveTypeChecker(&apos;function&apos;),&#xD;    number: createPrimitiveTypeChecker(&apos;number&apos;),&#xD;    object: createPrimitiveTypeChecker(&apos;object&apos;),&#xD;    string: createPrimitiveTypeChecker(&apos;string&apos;),&#xD;    symbol: createPrimitiveTypeChecker(&apos;symbol&apos;),&#xD;&#xD;    any: createAnyTypeChecker(),&#xD;    arrayOf: createArrayOfTypeChecker,&#xD;    element: createElementTypeChecker(),&#xD;    instanceOf: createInstanceTypeChecker,&#xD;    node: createNodeChecker(),&#xD;    objectOf: createObjectOfTypeChecker,&#xD;    oneOf: createEnumTypeChecker,&#xD;    oneOfType: createUnionTypeChecker,&#xD;    shape: createShapeTypeChecker&#xD;  };&#xD;&#xD;  /**&#xD;   * inlined Object.is polyfill to avoid requiring consumers ship their own&#xD;   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is&#xD;   */&#xD;  /*eslint-disable no-self-compare*/&#xD;  function is(x, y) {&#xD;    // SameValue algorithm&#xD;    if (x === y) {&#xD;      // Steps 1-5, 7-10&#xD;      // Steps 6.b-6.e: +0 != -0&#xD;      return x !== 0 || 1 / x === 1 / y;&#xD;    } else {&#xD;      // Step 6.a: NaN == NaN&#xD;      return x !== x &amp;&amp; y !== y;&#xD;    }&#xD;  }&#xD;  /*eslint-enable no-self-compare*/&#xD;&#xD;  /**&#xD;   * We use an Error-like object for backward compatibility as people may call&#xD;   * PropTypes directly and inspect their output. However, we don&apos;t use real&#xD;   * Errors anymore. We don&apos;t inspect their stack anyway, and creating them&#xD;   * is prohibitively expensive if they are created too often, such as what&#xD;   * happens in oneOfType() for any type before the one that matched.&#xD;   */&#xD;  function PropTypeError(message) {&#xD;    this.message = message;&#xD;    this.stack = &apos;&apos;;&#xD;  }&#xD;  // Make `instanceof Error` still work for returned errors.&#xD;  PropTypeError.prototype = Error.prototype;&#xD;&#xD;  function createChainableTypeChecker(validate) {&#xD;    if (true) {&#xD;      var manualPropTypeCallCache = {};&#xD;      var manualPropTypeWarningCount = 0;&#xD;    }&#xD;    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {&#xD;      componentName = componentName || ANONYMOUS;&#xD;      propFullName = propFullName || propName;&#xD;&#xD;      if (secret !== ReactPropTypesSecret) {&#xD;        if (throwOnDirectAccess) {&#xD;          // New behavior only for users of `prop-types` package&#xD;          invariant(&#xD;            false,&#xD;            &apos;Calling PropTypes validators directly is not supported by the `prop-types` package. &apos; +&#xD;            &apos;Use `PropTypes.checkPropTypes()` to call them. &apos; +&#xD;            &apos;Read more at http://fb.me/use-check-prop-types&apos;&#xD;          );&#xD;        } else if ("undefined" !== &apos;production&apos; &amp;&amp; typeof console !== &apos;undefined&apos;) {&#xD;          // Old behavior for people using React.PropTypes&#xD;          var cacheKey = componentName + &apos;:&apos; + propName;&#xD;          if (&#xD;            !manualPropTypeCallCache[cacheKey] &amp;&amp;&#xD;            // Avoid spamming the console because they are often not actionable except for lib authors&#xD;            manualPropTypeWarningCount &lt; 3&#xD;          ) {&#xD;            warning(&#xD;              false,&#xD;              &apos;You are manually calling a React.PropTypes validation &apos; +&#xD;              &apos;function for the `%s` prop on `%s`. This is deprecated &apos; +&#xD;              &apos;and will throw in the standalone `prop-types` package. &apos; +&#xD;              &apos;You may be seeing this warning due to a third-party PropTypes &apos; +&#xD;              &apos;library. See https://fb.me/react-warning-dont-call-proptypes &apos; + &apos;for details.&apos;,&#xD;              propFullName,&#xD;              componentName&#xD;            );&#xD;            manualPropTypeCallCache[cacheKey] = true;&#xD;            manualPropTypeWarningCount++;&#xD;          }&#xD;        }&#xD;      }&#xD;      if (props[propName] == null) {&#xD;        if (isRequired) {&#xD;          if (props[propName] === null) {&#xD;            return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required &apos; + (&apos;in `&apos; + componentName + &apos;`, but its value is `null`.&apos;));&#xD;          }&#xD;          return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required in &apos; + (&apos;`&apos; + componentName + &apos;`, but its value is `undefined`.&apos;));&#xD;        }&#xD;        return null;&#xD;      } else {&#xD;        return validate(props, propName, componentName, location, propFullName);&#xD;      }&#xD;    }&#xD;&#xD;    var chainedCheckType = checkType.bind(null, false);&#xD;    chainedCheckType.isRequired = checkType.bind(null, true);&#xD;&#xD;    return chainedCheckType;&#xD;  }&#xD;&#xD;  function createPrimitiveTypeChecker(expectedType) {&#xD;    function validate(props, propName, componentName, location, propFullName, secret) {&#xD;      var propValue = props[propName];&#xD;      var propType = getPropType(propValue);&#xD;      if (propType !== expectedType) {&#xD;        // `propValue` being instance of, say, date/regexp, pass the &apos;object&apos;&#xD;        // check, but we can offer a more precise error message here rather than&#xD;        // &apos;of type `object`&apos;.&#xD;        var preciseType = getPreciseType(propValue);&#xD;&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + preciseType + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;`&apos; + expectedType + &apos;`.&apos;));&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createAnyTypeChecker() {&#xD;    return createChainableTypeChecker(emptyFunction.thatReturnsNull);&#xD;  }&#xD;&#xD;  function createArrayOfTypeChecker(typeChecker) {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      if (typeof typeChecker !== &apos;function&apos;) {&#xD;        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside arrayOf.&apos;);&#xD;      }&#xD;      var propValue = props[propName];&#xD;      if (!Array.isArray(propValue)) {&#xD;        var propType = getPropType(propValue);&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an array.&apos;));&#xD;      }&#xD;      for (var i = 0; i &lt; propValue.length; i++) {&#xD;        var error = typeChecker(propValue, i, componentName, location, propFullName + &apos;[&apos; + i + &apos;]&apos;, ReactPropTypesSecret);&#xD;        if (error instanceof Error) {&#xD;          return error;&#xD;        }&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createElementTypeChecker() {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      var propValue = props[propName];&#xD;      if (!isValidElement(propValue)) {&#xD;        var propType = getPropType(propValue);&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected a single ReactElement.&apos;));&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createInstanceTypeChecker(expectedClass) {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      if (!(props[propName] instanceof expectedClass)) {&#xD;        var expectedClassName = expectedClass.name || ANONYMOUS;&#xD;        var actualClassName = getClassName(props[propName]);&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + actualClassName + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;instance of `&apos; + expectedClassName + &apos;`.&apos;));&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createEnumTypeChecker(expectedValues) {&#xD;    if (!Array.isArray(expectedValues)) {&#xD;       true ? warning(false, &apos;Invalid argument supplied to oneOf, expected an instance of array.&apos;) : void 0;&#xD;      return emptyFunction.thatReturnsNull;&#xD;    }&#xD;&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      var propValue = props[propName];&#xD;      for (var i = 0; i &lt; expectedValues.length; i++) {&#xD;        if (is(propValue, expectedValues[i])) {&#xD;          return null;&#xD;        }&#xD;      }&#xD;&#xD;      var valuesString = JSON.stringify(expectedValues);&#xD;      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of value `&apos; + propValue + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected one of &apos; + valuesString + &apos;.&apos;));&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createObjectOfTypeChecker(typeChecker) {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      if (typeof typeChecker !== &apos;function&apos;) {&#xD;        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside objectOf.&apos;);&#xD;      }&#xD;      var propValue = props[propName];&#xD;      var propType = getPropType(propValue);&#xD;      if (propType !== &apos;object&apos;) {&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an object.&apos;));&#xD;      }&#xD;      for (var key in propValue) {&#xD;        if (propValue.hasOwnProperty(key)) {&#xD;          var error = typeChecker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);&#xD;          if (error instanceof Error) {&#xD;            return error;&#xD;          }&#xD;        }&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createUnionTypeChecker(arrayOfTypeCheckers) {&#xD;    if (!Array.isArray(arrayOfTypeCheckers)) {&#xD;       true ? warning(false, &apos;Invalid argument supplied to oneOfType, expected an instance of array.&apos;) : void 0;&#xD;      return emptyFunction.thatReturnsNull;&#xD;    }&#xD;&#xD;    for (var i = 0; i &lt; arrayOfTypeCheckers.length; i++) {&#xD;      var checker = arrayOfTypeCheckers[i];&#xD;      if (typeof checker !== &apos;function&apos;) {&#xD;        warning(&#xD;          false,&#xD;          &apos;Invalid argument supplid to oneOfType. Expected an array of check functions, but &apos; +&#xD;          &apos;received %s at index %s.&apos;,&#xD;          getPostfixForTypeWarning(checker),&#xD;          i&#xD;        );&#xD;        return emptyFunction.thatReturnsNull;&#xD;      }&#xD;    }&#xD;&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      for (var i = 0; i &lt; arrayOfTypeCheckers.length; i++) {&#xD;        var checker = arrayOfTypeCheckers[i];&#xD;        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {&#xD;          return null;&#xD;        }&#xD;      }&#xD;&#xD;      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`.&apos;));&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createNodeChecker() {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      if (!isNode(props[propName])) {&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`, expected a ReactNode.&apos;));&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function createShapeTypeChecker(shapeTypes) {&#xD;    function validate(props, propName, componentName, location, propFullName) {&#xD;      var propValue = props[propName];&#xD;      var propType = getPropType(propValue);&#xD;      if (propType !== &apos;object&apos;) {&#xD;        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type `&apos; + propType + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected `object`.&apos;));&#xD;      }&#xD;      for (var key in shapeTypes) {&#xD;        var checker = shapeTypes[key];&#xD;        if (!checker) {&#xD;          continue;&#xD;        }&#xD;        var error = checker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);&#xD;        if (error) {&#xD;          return error;&#xD;        }&#xD;      }&#xD;      return null;&#xD;    }&#xD;    return createChainableTypeChecker(validate);&#xD;  }&#xD;&#xD;  function isNode(propValue) {&#xD;    switch (typeof propValue) {&#xD;      case &apos;number&apos;:&#xD;      case &apos;string&apos;:&#xD;      case &apos;undefined&apos;:&#xD;        return true;&#xD;      case &apos;boolean&apos;:&#xD;        return !propValue;&#xD;      case &apos;object&apos;:&#xD;        if (Array.isArray(propValue)) {&#xD;          return propValue.every(isNode);&#xD;        }&#xD;        if (propValue === null || isValidElement(propValue)) {&#xD;          return true;&#xD;        }&#xD;&#xD;        var iteratorFn = getIteratorFn(propValue);&#xD;        if (iteratorFn) {&#xD;          var iterator = iteratorFn.call(propValue);&#xD;          var step;&#xD;          if (iteratorFn !== propValue.entries) {&#xD;            while (!(step = iterator.next()).done) {&#xD;              if (!isNode(step.value)) {&#xD;                return false;&#xD;              }&#xD;            }&#xD;          } else {&#xD;            // Iterator will provide entry [k,v] tuples rather than values.&#xD;            while (!(step = iterator.next()).done) {&#xD;              var entry = step.value;&#xD;              if (entry) {&#xD;                if (!isNode(entry[1])) {&#xD;                  return false;&#xD;                }&#xD;              }&#xD;            }&#xD;          }&#xD;        } else {&#xD;          return false;&#xD;        }&#xD;&#xD;        return true;&#xD;      default:&#xD;        return false;&#xD;    }&#xD;  }&#xD;&#xD;  function isSymbol(propType, propValue) {&#xD;    // Native Symbol.&#xD;    if (propType === &apos;symbol&apos;) {&#xD;      return true;&#xD;    }&#xD;&#xD;    // 19.4.3.5 Symbol.prototype[@@toStringTag] === &apos;Symbol&apos;&#xD;    if (propValue[&apos;@@toStringTag&apos;] === &apos;Symbol&apos;) {&#xD;      return true;&#xD;    }&#xD;&#xD;    // Fallback for non-spec compliant Symbols which are polyfilled.&#xD;    if (typeof Symbol === &apos;function&apos; &amp;&amp; propValue instanceof Symbol) {&#xD;      return true;&#xD;    }&#xD;&#xD;    return false;&#xD;  }&#xD;&#xD;  // Equivalent of `typeof` but with special handling for array and regexp.&#xD;  function getPropType(propValue) {&#xD;    var propType = typeof propValue;&#xD;    if (Array.isArray(propValue)) {&#xD;      return &apos;array&apos;;&#xD;    }&#xD;    if (propValue instanceof RegExp) {&#xD;      // Old webkits (at least until Android 4.0) return &apos;function&apos; rather than&#xD;      // &apos;object&apos; for typeof a RegExp. We&apos;ll normalize this here so that /bla/&#xD;      // passes PropTypes.object.&#xD;      return &apos;object&apos;;&#xD;    }&#xD;    if (isSymbol(propType, propValue)) {&#xD;      return &apos;symbol&apos;;&#xD;    }&#xD;    return propType;&#xD;  }&#xD;&#xD;  // This handles more types than `getPropType`. Only used for error messages.&#xD;  // See `createPrimitiveTypeChecker`.&#xD;  function getPreciseType(propValue) {&#xD;    if (typeof propValue === &apos;undefined&apos; || propValue === null) {&#xD;      return &apos;&apos; + propValue;&#xD;    }&#xD;    var propType = getPropType(propValue);&#xD;    if (propType === &apos;object&apos;) {&#xD;      if (propValue instanceof Date) {&#xD;        return &apos;date&apos;;&#xD;      } else if (propValue instanceof RegExp) {&#xD;        return &apos;regexp&apos;;&#xD;      }&#xD;    }&#xD;    return propType;&#xD;  }&#xD;&#xD;  // Returns a string that is postfixed to a warning about an invalid type.&#xD;  // For example, "undefined" or "of type array"&#xD;  function getPostfixForTypeWarning(value) {&#xD;    var type = getPreciseType(value);&#xD;    switch (type) {&#xD;      case &apos;array&apos;:&#xD;      case &apos;object&apos;:&#xD;        return &apos;an &apos; + type;&#xD;      case &apos;boolean&apos;:&#xD;      case &apos;date&apos;:&#xD;      case &apos;regexp&apos;:&#xD;        return &apos;a &apos; + type;&#xD;      default:&#xD;        return type;&#xD;    }&#xD;  }&#xD;&#xD;  // Returns class name of the object, if any.&#xD;  function getClassName(propValue) {&#xD;    if (!propValue.constructor || !propValue.constructor.name) {&#xD;      return ANONYMOUS;&#xD;    }&#xD;    return propValue.constructor.name;&#xD;  }&#xD;&#xD;  ReactPropTypes.checkPropTypes = checkPropTypes;&#xD;  ReactPropTypes.PropTypes = ReactPropTypes;&#xD;&#xD;  return ReactPropTypes;&#xD;};&#xD;&#xD;&#xD;/***/ }),&#xD;/* 149 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;&#xD;&#xD;module.exports = ReactPropTypesSecret;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 150 */,&#xD;/* 151 */,&#xD;/* 152 */,&#xD;/* 153 */,&#xD;/* 154 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * CSS properties which accept numbers but are not in units of "px".&#xD; */&#xD;&#xD;var isUnitlessNumber = {&#xD;  animationIterationCount: true,&#xD;  borderImageOutset: true,&#xD;  borderImageSlice: true,&#xD;  borderImageWidth: true,&#xD;  boxFlex: true,&#xD;  boxFlexGroup: true,&#xD;  boxOrdinalGroup: true,&#xD;  columnCount: true,&#xD;  flex: true,&#xD;  flexGrow: true,&#xD;  flexPositive: true,&#xD;  flexShrink: true,&#xD;  flexNegative: true,&#xD;  flexOrder: true,&#xD;  gridRow: true,&#xD;  gridColumn: true,&#xD;  fontWeight: true,&#xD;  lineClamp: true,&#xD;  lineHeight: true,&#xD;  opacity: true,&#xD;  order: true,&#xD;  orphans: true,&#xD;  tabSize: true,&#xD;  widows: true,&#xD;  zIndex: true,&#xD;  zoom: true,&#xD;&#xD;  // SVG-related properties&#xD;  fillOpacity: true,&#xD;  floodOpacity: true,&#xD;  stopOpacity: true,&#xD;  strokeDasharray: true,&#xD;  strokeDashoffset: true,&#xD;  strokeMiterlimit: true,&#xD;  strokeOpacity: true,&#xD;  strokeWidth: true&#xD;};&#xD;&#xD;/**&#xD; * @param {string} prefix vendor-specific prefix, eg: Webkit&#xD; * @param {string} key style name, eg: transitionDuration&#xD; * @return {string} style name prefixed with `prefix`, properly camelCased, eg:&#xD; * WebkitTransitionDuration&#xD; */&#xD;function prefixKey(prefix, key) {&#xD;  return prefix + key.charAt(0).toUpperCase() + key.substring(1);&#xD;}&#xD;&#xD;/**&#xD; * Support style names that may come passed in prefixed by adding permutations&#xD; * of vendor prefixes.&#xD; */&#xD;var prefixes = [&apos;Webkit&apos;, &apos;ms&apos;, &apos;Moz&apos;, &apos;O&apos;];&#xD;&#xD;// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an&#xD;// infinite loop, because it iterates over the newly added props too.&#xD;Object.keys(isUnitlessNumber).forEach(function (prop) {&#xD;  prefixes.forEach(function (prefix) {&#xD;    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];&#xD;  });&#xD;});&#xD;&#xD;/**&#xD; * Most style properties can be unset by doing .style[prop] = &apos;&apos; but IE8&#xD; * doesn&apos;t like doing that with shorthand properties so for the properties that&#xD; * IE8 breaks on, which are listed here, we instead unset each of the&#xD; * individual properties. See http://bugs.jquery.com/ticket/12385.&#xD; * The 4-value &apos;clock&apos; properties like margin, padding, border-width seem to&#xD; * behave without any problems. Curiously, list-style works too without any&#xD; * special prodding.&#xD; */&#xD;var shorthandPropertyExpansions = {&#xD;  background: {&#xD;    backgroundAttachment: true,&#xD;    backgroundColor: true,&#xD;    backgroundImage: true,&#xD;    backgroundPositionX: true,&#xD;    backgroundPositionY: true,&#xD;    backgroundRepeat: true&#xD;  },&#xD;  backgroundPosition: {&#xD;    backgroundPositionX: true,&#xD;    backgroundPositionY: true&#xD;  },&#xD;  border: {&#xD;    borderWidth: true,&#xD;    borderStyle: true,&#xD;    borderColor: true&#xD;  },&#xD;  borderBottom: {&#xD;    borderBottomWidth: true,&#xD;    borderBottomStyle: true,&#xD;    borderBottomColor: true&#xD;  },&#xD;  borderLeft: {&#xD;    borderLeftWidth: true,&#xD;    borderLeftStyle: true,&#xD;    borderLeftColor: true&#xD;  },&#xD;  borderRight: {&#xD;    borderRightWidth: true,&#xD;    borderRightStyle: true,&#xD;    borderRightColor: true&#xD;  },&#xD;  borderTop: {&#xD;    borderTopWidth: true,&#xD;    borderTopStyle: true,&#xD;    borderTopColor: true&#xD;  },&#xD;  font: {&#xD;    fontStyle: true,&#xD;    fontVariant: true,&#xD;    fontWeight: true,&#xD;    fontSize: true,&#xD;    lineHeight: true,&#xD;    fontFamily: true&#xD;  },&#xD;  outline: {&#xD;    outlineWidth: true,&#xD;    outlineStyle: true,&#xD;    outlineColor: true&#xD;  }&#xD;};&#xD;&#xD;var CSSProperty = {&#xD;  isUnitlessNumber: isUnitlessNumber,&#xD;  shorthandPropertyExpansions: shorthandPropertyExpansions&#xD;};&#xD;&#xD;module.exports = CSSProperty;&#xD;&#xD;/***/ }),&#xD;/* 155 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var PooledClass = __webpack_require__(33);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * A specialized pseudo-event module to help keep track of components waiting to&#xD; * be notified when their DOM representations are available for use.&#xD; *&#xD; * This implements `PooledClass`, so you should never need to instantiate this.&#xD; * Instead, use `CallbackQueue.getPooled()`.&#xD; *&#xD; * @class ReactMountReady&#xD; * @implements PooledClass&#xD; * @internal&#xD; */&#xD;&#xD;var CallbackQueue = function () {&#xD;  function CallbackQueue(arg) {&#xD;    _classCallCheck(this, CallbackQueue);&#xD;&#xD;    this._callbacks = null;&#xD;    this._contexts = null;&#xD;    this._arg = arg;&#xD;  }&#xD;&#xD;  /**&#xD;   * Enqueues a callback to be invoked when `notifyAll` is invoked.&#xD;   *&#xD;   * @param {function} callback Invoked when `notifyAll` is invoked.&#xD;   * @param {?object} context Context to call `callback` with.&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  CallbackQueue.prototype.enqueue = function enqueue(callback, context) {&#xD;    this._callbacks = this._callbacks || [];&#xD;    this._callbacks.push(callback);&#xD;    this._contexts = this._contexts || [];&#xD;    this._contexts.push(context);&#xD;  };&#xD;&#xD;  /**&#xD;   * Invokes all enqueued callbacks and clears the queue. This is invoked after&#xD;   * the DOM representation of a component has been created or updated.&#xD;   *&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  CallbackQueue.prototype.notifyAll = function notifyAll() {&#xD;    var callbacks = this._callbacks;&#xD;    var contexts = this._contexts;&#xD;    var arg = this._arg;&#xD;    if (callbacks &amp;&amp; contexts) {&#xD;      !(callbacks.length === contexts.length) ?  true ? invariant(false, &apos;Mismatched list of contexts in callback queue&apos;) : _prodInvariant(&apos;24&apos;) : void 0;&#xD;      this._callbacks = null;&#xD;      this._contexts = null;&#xD;      for (var i = 0; i &lt; callbacks.length; i++) {&#xD;        callbacks[i].call(contexts[i], arg);&#xD;      }&#xD;      callbacks.length = 0;&#xD;      contexts.length = 0;&#xD;    }&#xD;  };&#xD;&#xD;  CallbackQueue.prototype.checkpoint = function checkpoint() {&#xD;    return this._callbacks ? this._callbacks.length : 0;&#xD;  };&#xD;&#xD;  CallbackQueue.prototype.rollback = function rollback(len) {&#xD;    if (this._callbacks &amp;&amp; this._contexts) {&#xD;      this._callbacks.length = len;&#xD;      this._contexts.length = len;&#xD;    }&#xD;  };&#xD;&#xD;  /**&#xD;   * Resets the internal queue.&#xD;   *&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  CallbackQueue.prototype.reset = function reset() {&#xD;    this._callbacks = null;&#xD;    this._contexts = null;&#xD;  };&#xD;&#xD;  /**&#xD;   * `PooledClass` looks for this.&#xD;   */&#xD;&#xD;&#xD;  CallbackQueue.prototype.destructor = function destructor() {&#xD;    this.reset();&#xD;  };&#xD;&#xD;  return CallbackQueue;&#xD;}();&#xD;&#xD;module.exports = PooledClass.addPoolingTo(CallbackQueue);&#xD;&#xD;/***/ }),&#xD;/* 156 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;&#xD;var quoteAttributeValueForBrowser = __webpack_require__(462);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var VALID_ATTRIBUTE_NAME_REGEX = new RegExp(&apos;^[&apos; + DOMProperty.ATTRIBUTE_NAME_START_CHAR + &apos;][&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;);&#xD;var illegalAttributeNameCache = {};&#xD;var validatedAttributeNameCache = {};&#xD;&#xD;function isAttributeNameSafe(attributeName) {&#xD;  if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {&#xD;    return true;&#xD;  }&#xD;  if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {&#xD;    return false;&#xD;  }&#xD;  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {&#xD;    validatedAttributeNameCache[attributeName] = true;&#xD;    return true;&#xD;  }&#xD;  illegalAttributeNameCache[attributeName] = true;&#xD;   true ? warning(false, &apos;Invalid attribute name: `%s`&apos;, attributeName) : void 0;&#xD;  return false;&#xD;}&#xD;&#xD;function shouldIgnoreValue(propertyInfo, value) {&#xD;  return value == null || propertyInfo.hasBooleanValue &amp;&amp; !value || propertyInfo.hasNumericValue &amp;&amp; isNaN(value) || propertyInfo.hasPositiveNumericValue &amp;&amp; value &lt; 1 || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === false;&#xD;}&#xD;&#xD;/**&#xD; * Operations for dealing with DOM properties.&#xD; */&#xD;var DOMPropertyOperations = {&#xD;&#xD;  /**&#xD;   * Creates markup for the ID property.&#xD;   *&#xD;   * @param {string} id Unescaped ID.&#xD;   * @return {string} Markup string.&#xD;   */&#xD;  createMarkupForID: function (id) {&#xD;    return DOMProperty.ID_ATTRIBUTE_NAME + &apos;=&apos; + quoteAttributeValueForBrowser(id);&#xD;  },&#xD;&#xD;  setAttributeForID: function (node, id) {&#xD;    node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);&#xD;  },&#xD;&#xD;  createMarkupForRoot: function () {&#xD;    return DOMProperty.ROOT_ATTRIBUTE_NAME + &apos;=""&apos;;&#xD;  },&#xD;&#xD;  setAttributeForRoot: function (node) {&#xD;    node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, &apos;&apos;);&#xD;  },&#xD;&#xD;  /**&#xD;   * Creates markup for a property.&#xD;   *&#xD;   * @param {string} name&#xD;   * @param {*} value&#xD;   * @return {?string} Markup string, or null if the property was invalid.&#xD;   */&#xD;  createMarkupForProperty: function (name, value) {&#xD;    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;&#xD;    if (propertyInfo) {&#xD;      if (shouldIgnoreValue(propertyInfo, value)) {&#xD;        return &apos;&apos;;&#xD;      }&#xD;      var attributeName = propertyInfo.attributeName;&#xD;      if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === true) {&#xD;        return attributeName + &apos;=""&apos;;&#xD;      }&#xD;      return attributeName + &apos;=&apos; + quoteAttributeValueForBrowser(value);&#xD;    } else if (DOMProperty.isCustomAttribute(name)) {&#xD;      if (value == null) {&#xD;        return &apos;&apos;;&#xD;      }&#xD;      return name + &apos;=&apos; + quoteAttributeValueForBrowser(value);&#xD;    }&#xD;    return null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Creates markup for a custom property.&#xD;   *&#xD;   * @param {string} name&#xD;   * @param {*} value&#xD;   * @return {string} Markup string, or empty string if the property was invalid.&#xD;   */&#xD;  createMarkupForCustomAttribute: function (name, value) {&#xD;    if (!isAttributeNameSafe(name) || value == null) {&#xD;      return &apos;&apos;;&#xD;    }&#xD;    return name + &apos;=&apos; + quoteAttributeValueForBrowser(value);&#xD;  },&#xD;&#xD;  /**&#xD;   * Sets the value for a property on a node.&#xD;   *&#xD;   * @param {DOMElement} node&#xD;   * @param {string} name&#xD;   * @param {*} value&#xD;   */&#xD;  setValueForProperty: function (node, name, value) {&#xD;    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;&#xD;    if (propertyInfo) {&#xD;      var mutationMethod = propertyInfo.mutationMethod;&#xD;      if (mutationMethod) {&#xD;        mutationMethod(node, value);&#xD;      } else if (shouldIgnoreValue(propertyInfo, value)) {&#xD;        this.deleteValueForProperty(node, name);&#xD;        return;&#xD;      } else if (propertyInfo.mustUseProperty) {&#xD;        // Contrary to `setAttribute`, object properties are properly&#xD;        // `toString`ed by IE8/9.&#xD;        node[propertyInfo.propertyName] = value;&#xD;      } else {&#xD;        var attributeName = propertyInfo.attributeName;&#xD;        var namespace = propertyInfo.attributeNamespace;&#xD;        // `setAttribute` with objects becomes only `[object]` in IE8/9,&#xD;        // (&apos;&apos; + value) makes it output the correct toString()-value.&#xD;        if (namespace) {&#xD;          node.setAttributeNS(namespace, attributeName, &apos;&apos; + value);&#xD;        } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === true) {&#xD;          node.setAttribute(attributeName, &apos;&apos;);&#xD;        } else {&#xD;          node.setAttribute(attributeName, &apos;&apos; + value);&#xD;        }&#xD;      }&#xD;    } else if (DOMProperty.isCustomAttribute(name)) {&#xD;      DOMPropertyOperations.setValueForAttribute(node, name, value);&#xD;      return;&#xD;    }&#xD;&#xD;    if (true) {&#xD;      var payload = {};&#xD;      payload[name] = value;&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,&#xD;        type: &apos;update attribute&apos;,&#xD;        payload: payload&#xD;      });&#xD;    }&#xD;  },&#xD;&#xD;  setValueForAttribute: function (node, name, value) {&#xD;    if (!isAttributeNameSafe(name)) {&#xD;      return;&#xD;    }&#xD;    if (value == null) {&#xD;      node.removeAttribute(name);&#xD;    } else {&#xD;      node.setAttribute(name, &apos;&apos; + value);&#xD;    }&#xD;&#xD;    if (true) {&#xD;      var payload = {};&#xD;      payload[name] = value;&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,&#xD;        type: &apos;update attribute&apos;,&#xD;        payload: payload&#xD;      });&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Deletes an attributes from a node.&#xD;   *&#xD;   * @param {DOMElement} node&#xD;   * @param {string} name&#xD;   */&#xD;  deleteValueForAttribute: function (node, name) {&#xD;    node.removeAttribute(name);&#xD;    if (true) {&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,&#xD;        type: &apos;remove attribute&apos;,&#xD;        payload: name&#xD;      });&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Deletes the value for a property on a node.&#xD;   *&#xD;   * @param {DOMElement} node&#xD;   * @param {string} name&#xD;   */&#xD;  deleteValueForProperty: function (node, name) {&#xD;    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;&#xD;    if (propertyInfo) {&#xD;      var mutationMethod = propertyInfo.mutationMethod;&#xD;      if (mutationMethod) {&#xD;        mutationMethod(node, undefined);&#xD;      } else if (propertyInfo.mustUseProperty) {&#xD;        var propName = propertyInfo.propertyName;&#xD;        if (propertyInfo.hasBooleanValue) {&#xD;          node[propName] = false;&#xD;        } else {&#xD;          node[propName] = &apos;&apos;;&#xD;        }&#xD;      } else {&#xD;        node.removeAttribute(propertyInfo.attributeName);&#xD;      }&#xD;    } else if (DOMProperty.isCustomAttribute(name)) {&#xD;      node.removeAttribute(name);&#xD;    }&#xD;&#xD;    if (true) {&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,&#xD;        type: &apos;remove attribute&apos;,&#xD;        payload: name&#xD;      });&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = DOMPropertyOperations;&#xD;&#xD;/***/ }),&#xD;/* 157 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactDOMComponentFlags = {&#xD;  hasCachedChildNodes: 1 &lt;&lt; 0&#xD;};&#xD;&#xD;module.exports = ReactDOMComponentFlags;&#xD;&#xD;/***/ }),&#xD;/* 158 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var LinkedValueUtils = __webpack_require__(89);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var didWarnValueLink = false;&#xD;var didWarnValueDefaultValue = false;&#xD;&#xD;function updateOptionsIfPendingUpdateAndMounted() {&#xD;  if (this._rootNodeID &amp;&amp; this._wrapperState.pendingUpdate) {&#xD;    this._wrapperState.pendingUpdate = false;&#xD;&#xD;    var props = this._currentElement.props;&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;&#xD;    if (value != null) {&#xD;      updateOptions(this, Boolean(props.multiple), value);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function getDeclarationErrorAddendum(owner) {&#xD;  if (owner) {&#xD;    var name = owner.getName();&#xD;    if (name) {&#xD;      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;    }&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;var valuePropNames = [&apos;value&apos;, &apos;defaultValue&apos;];&#xD;&#xD;/**&#xD; * Validation function for `value` and `defaultValue`.&#xD; * @private&#xD; */&#xD;function checkSelectPropTypes(inst, props) {&#xD;  var owner = inst._currentElement._owner;&#xD;  LinkedValueUtils.checkPropTypes(&apos;select&apos;, props, owner);&#xD;&#xD;  if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {&#xD;     true ? warning(false, &apos;`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;&#xD;    didWarnValueLink = true;&#xD;  }&#xD;&#xD;  for (var i = 0; i &lt; valuePropNames.length; i++) {&#xD;    var propName = valuePropNames[i];&#xD;    if (props[propName] == null) {&#xD;      continue;&#xD;    }&#xD;    var isArray = Array.isArray(props[propName]);&#xD;    if (props.multiple &amp;&amp; !isArray) {&#xD;       true ? warning(false, &apos;The `%s` prop supplied to &lt;select&gt; must be an array if &apos; + &apos;`multiple` is true.%s&apos;, propName, getDeclarationErrorAddendum(owner)) : void 0;&#xD;    } else if (!props.multiple &amp;&amp; isArray) {&#xD;       true ? warning(false, &apos;The `%s` prop supplied to &lt;select&gt; must be a scalar &apos; + &apos;value if `multiple` is false.%s&apos;, propName, getDeclarationErrorAddendum(owner)) : void 0;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * @param {ReactDOMComponent} inst&#xD; * @param {boolean} multiple&#xD; * @param {*} propValue A stringable (with `multiple`, a list of stringables).&#xD; * @private&#xD; */&#xD;function updateOptions(inst, multiple, propValue) {&#xD;  var selectedValue, i;&#xD;  var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;&#xD;&#xD;  if (multiple) {&#xD;    selectedValue = {};&#xD;    for (i = 0; i &lt; propValue.length; i++) {&#xD;      selectedValue[&apos;&apos; + propValue[i]] = true;&#xD;    }&#xD;    for (i = 0; i &lt; options.length; i++) {&#xD;      var selected = selectedValue.hasOwnProperty(options[i].value);&#xD;      if (options[i].selected !== selected) {&#xD;        options[i].selected = selected;&#xD;      }&#xD;    }&#xD;  } else {&#xD;    // Do not set `select.value` as exact behavior isn&apos;t consistent across all&#xD;    // browsers for all cases.&#xD;    selectedValue = &apos;&apos; + propValue;&#xD;    for (i = 0; i &lt; options.length; i++) {&#xD;      if (options[i].value === selectedValue) {&#xD;        options[i].selected = true;&#xD;        return;&#xD;      }&#xD;    }&#xD;    if (options.length) {&#xD;      options[0].selected = true;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Implements a &lt;select&gt; host component that allows optionally setting the&#xD; * props `value` and `defaultValue`. If `multiple` is false, the prop must be a&#xD; * stringable. If `multiple` is true, the prop must be an array of stringables.&#xD; *&#xD; * If `value` is not supplied (or null/undefined), user actions that change the&#xD; * selected option will trigger updates to the rendered options.&#xD; *&#xD; * If it is supplied (and not null/undefined), the rendered options will not&#xD; * update in response to user actions. Instead, the `value` prop must change in&#xD; * order for the rendered options to update.&#xD; *&#xD; * If `defaultValue` is provided, any options with the supplied values will be&#xD; * selected.&#xD; */&#xD;var ReactDOMSelect = {&#xD;  getHostProps: function (inst, props) {&#xD;    return _assign({}, props, {&#xD;      onChange: inst._wrapperState.onChange,&#xD;      value: undefined&#xD;    });&#xD;  },&#xD;&#xD;  mountWrapper: function (inst, props) {&#xD;    if (true) {&#xD;      checkSelectPropTypes(inst, props);&#xD;    }&#xD;&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    inst._wrapperState = {&#xD;      pendingUpdate: false,&#xD;      initialValue: value != null ? value : props.defaultValue,&#xD;      listeners: null,&#xD;      onChange: _handleChange.bind(inst),&#xD;      wasMultiple: Boolean(props.multiple)&#xD;    };&#xD;&#xD;    if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValueDefaultValue) {&#xD;       true ? warning(false, &apos;Select elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled select &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;) : void 0;&#xD;      didWarnValueDefaultValue = true;&#xD;    }&#xD;  },&#xD;&#xD;  getSelectValueContext: function (inst) {&#xD;    // ReactDOMOption looks at this initial value so the initial generated&#xD;    // markup has correct `selected` attributes&#xD;    return inst._wrapperState.initialValue;&#xD;  },&#xD;&#xD;  postUpdateWrapper: function (inst) {&#xD;    var props = inst._currentElement.props;&#xD;&#xD;    // After the initial mount, we control selected-ness manually so don&apos;t pass&#xD;    // this value down&#xD;    inst._wrapperState.initialValue = undefined;&#xD;&#xD;    var wasMultiple = inst._wrapperState.wasMultiple;&#xD;    inst._wrapperState.wasMultiple = Boolean(props.multiple);&#xD;&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    if (value != null) {&#xD;      inst._wrapperState.pendingUpdate = false;&#xD;      updateOptions(inst, Boolean(props.multiple), value);&#xD;    } else if (wasMultiple !== Boolean(props.multiple)) {&#xD;      // For simplicity, reapply `defaultValue` if `multiple` is toggled.&#xD;      if (props.defaultValue != null) {&#xD;        updateOptions(inst, Boolean(props.multiple), props.defaultValue);&#xD;      } else {&#xD;        // Revert the select back to its default unselected state.&#xD;        updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : &apos;&apos;);&#xD;      }&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;function _handleChange(event) {&#xD;  var props = this._currentElement.props;&#xD;  var returnValue = LinkedValueUtils.executeOnChange(props, event);&#xD;&#xD;  if (this._rootNodeID) {&#xD;    this._wrapperState.pendingUpdate = true;&#xD;  }&#xD;  ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);&#xD;  return returnValue;&#xD;}&#xD;&#xD;module.exports = ReactDOMSelect;&#xD;&#xD;/***/ }),&#xD;/* 159 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var emptyComponentFactory;&#xD;&#xD;var ReactEmptyComponentInjection = {&#xD;  injectEmptyComponentFactory: function (factory) {&#xD;    emptyComponentFactory = factory;&#xD;  }&#xD;};&#xD;&#xD;var ReactEmptyComponent = {&#xD;  create: function (instantiate) {&#xD;    return emptyComponentFactory(instantiate);&#xD;  }&#xD;};&#xD;&#xD;ReactEmptyComponent.injection = ReactEmptyComponentInjection;&#xD;&#xD;module.exports = ReactEmptyComponent;&#xD;&#xD;/***/ }),&#xD;/* 160 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactFeatureFlags = {&#xD;  // When true, call console.time() before and .timeEnd() after each top-level&#xD;  // render (both initial renders and updates). Useful when looking at prod-mode&#xD;  // timeline profiles in Chrome, for example.&#xD;  logTopLevelRenders: false&#xD;};&#xD;&#xD;module.exports = ReactFeatureFlags;&#xD;&#xD;/***/ }),&#xD;/* 161 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var genericComponentClass = null;&#xD;var textComponentClass = null;&#xD;&#xD;var ReactHostComponentInjection = {&#xD;  // This accepts a class that receives the tag string. This is a catch all&#xD;  // that can render any kind of tag.&#xD;  injectGenericComponentClass: function (componentClass) {&#xD;    genericComponentClass = componentClass;&#xD;  },&#xD;  // This accepts a text component class that takes the text string to be&#xD;  // rendered as props.&#xD;  injectTextComponentClass: function (componentClass) {&#xD;    textComponentClass = componentClass;&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Get a host internal component class for a specific tag.&#xD; *&#xD; * @param {ReactElement} element The element to create.&#xD; * @return {function} The internal class constructor function.&#xD; */&#xD;function createInternalComponent(element) {&#xD;  !genericComponentClass ?  true ? invariant(false, &apos;There is no registered component for the tag %s&apos;, element.type) : _prodInvariant(&apos;111&apos;, element.type) : void 0;&#xD;  return new genericComponentClass(element);&#xD;}&#xD;&#xD;/**&#xD; * @param {ReactText} text&#xD; * @return {ReactComponent}&#xD; */&#xD;function createInstanceForText(text) {&#xD;  return new textComponentClass(text);&#xD;}&#xD;&#xD;/**&#xD; * @param {ReactComponent} component&#xD; * @return {boolean}&#xD; */&#xD;function isTextComponent(component) {&#xD;  return component instanceof textComponentClass;&#xD;}&#xD;&#xD;var ReactHostComponent = {&#xD;  createInternalComponent: createInternalComponent,&#xD;  createInstanceForText: createInstanceForText,&#xD;  isTextComponent: isTextComponent,&#xD;  injection: ReactHostComponentInjection&#xD;};&#xD;&#xD;module.exports = ReactHostComponent;&#xD;&#xD;/***/ }),&#xD;/* 162 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactDOMSelection = __webpack_require__(417);&#xD;&#xD;var containsNode = __webpack_require__(327);&#xD;var focusNode = __webpack_require__(134);&#xD;var getActiveElement = __webpack_require__(135);&#xD;&#xD;function isInDocument(node) {&#xD;  return containsNode(document.documentElement, node);&#xD;}&#xD;&#xD;/**&#xD; * @ReactInputSelection: React input selection module. Based on Selection.js,&#xD; * but modified to be suitable for react and has a couple of bug fixes (doesn&apos;t&#xD; * assume buttons have range selections allowed).&#xD; * Input selection module for React.&#xD; */&#xD;var ReactInputSelection = {&#xD;&#xD;  hasSelectionCapabilities: function (elem) {&#xD;    var nodeName = elem &amp;&amp; elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();&#xD;    return nodeName &amp;&amp; (nodeName === &apos;input&apos; &amp;&amp; elem.type === &apos;text&apos; || nodeName === &apos;textarea&apos; || elem.contentEditable === &apos;true&apos;);&#xD;  },&#xD;&#xD;  getSelectionInformation: function () {&#xD;    var focusedElem = getActiveElement();&#xD;    return {&#xD;      focusedElem: focusedElem,&#xD;      selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null&#xD;    };&#xD;  },&#xD;&#xD;  /**&#xD;   * @restoreSelection: If any selection information was potentially lost,&#xD;   * restore it. This is useful when performing operations that could remove dom&#xD;   * nodes and place them back in, resulting in focus being lost.&#xD;   */&#xD;  restoreSelection: function (priorSelectionInformation) {&#xD;    var curFocusedElem = getActiveElement();&#xD;    var priorFocusedElem = priorSelectionInformation.focusedElem;&#xD;    var priorSelectionRange = priorSelectionInformation.selectionRange;&#xD;    if (curFocusedElem !== priorFocusedElem &amp;&amp; isInDocument(priorFocusedElem)) {&#xD;      if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {&#xD;        ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);&#xD;      }&#xD;      focusNode(priorFocusedElem);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * @getSelection: Gets the selection bounds of a focused textarea, input or&#xD;   * contentEditable node.&#xD;   * -@input: Look up selection bounds of this input&#xD;   * -@return {start: selectionStart, end: selectionEnd}&#xD;   */&#xD;  getSelection: function (input) {&#xD;    var selection;&#xD;&#xD;    if (&apos;selectionStart&apos; in input) {&#xD;      // Modern browser with input or textarea.&#xD;      selection = {&#xD;        start: input.selectionStart,&#xD;        end: input.selectionEnd&#xD;      };&#xD;    } else if (document.selection &amp;&amp; input.nodeName &amp;&amp; input.nodeName.toLowerCase() === &apos;input&apos;) {&#xD;      // IE8 input.&#xD;      var range = document.selection.createRange();&#xD;      // There can only be one selection per document in IE, so it must&#xD;      // be in our element.&#xD;      if (range.parentElement() === input) {&#xD;        selection = {&#xD;          start: -range.moveStart(&apos;character&apos;, -input.value.length),&#xD;          end: -range.moveEnd(&apos;character&apos;, -input.value.length)&#xD;        };&#xD;      }&#xD;    } else {&#xD;      // Content editable or old IE textarea.&#xD;      selection = ReactDOMSelection.getOffsets(input);&#xD;    }&#xD;&#xD;    return selection || { start: 0, end: 0 };&#xD;  },&#xD;&#xD;  /**&#xD;   * @setSelection: Sets the selection bounds of a textarea or input and focuses&#xD;   * the input.&#xD;   * -@input     Set selection bounds of this input or textarea&#xD;   * -@offsets   Object of same form that is returned from get*&#xD;   */&#xD;  setSelection: function (input, offsets) {&#xD;    var start = offsets.start;&#xD;    var end = offsets.end;&#xD;    if (end === undefined) {&#xD;      end = start;&#xD;    }&#xD;&#xD;    if (&apos;selectionStart&apos; in input) {&#xD;      input.selectionStart = start;&#xD;      input.selectionEnd = Math.min(end, input.value.length);&#xD;    } else if (document.selection &amp;&amp; input.nodeName &amp;&amp; input.nodeName.toLowerCase() === &apos;input&apos;) {&#xD;      var range = input.createTextRange();&#xD;      range.collapse(true);&#xD;      range.moveStart(&apos;character&apos;, start);&#xD;      range.moveEnd(&apos;character&apos;, end - start);&#xD;      range.select();&#xD;    } else {&#xD;      ReactDOMSelection.setOffsets(input, offsets);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactInputSelection;&#xD;&#xD;/***/ }),&#xD;/* 163 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var DOMProperty = __webpack_require__(28);&#xD;var React = __webpack_require__(43);&#xD;var ReactBrowserEventEmitter = __webpack_require__(64);&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactDOMContainerInfo = __webpack_require__(409);&#xD;var ReactDOMFeatureFlags = __webpack_require__(411);&#xD;var ReactFeatureFlags = __webpack_require__(160);&#xD;var ReactInstanceMap = __webpack_require__(52);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var ReactMarkupChecksum = __webpack_require__(431);&#xD;var ReactReconciler = __webpack_require__(42);&#xD;var ReactUpdateQueue = __webpack_require__(92);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var emptyObject = __webpack_require__(40);&#xD;var instantiateReactComponent = __webpack_require__(171);&#xD;var invariant = __webpack_require__(3);&#xD;var setInnerHTML = __webpack_require__(68);&#xD;var shouldUpdateReactComponent = __webpack_require__(98);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;&#xD;var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;&#xD;&#xD;var ELEMENT_NODE_TYPE = 1;&#xD;var DOC_NODE_TYPE = 9;&#xD;var DOCUMENT_FRAGMENT_NODE_TYPE = 11;&#xD;&#xD;var instancesByReactRootID = {};&#xD;&#xD;/**&#xD; * Finds the index of the first character&#xD; * that&apos;s not common between the two given strings.&#xD; *&#xD; * @return {number} the index of the character where the strings diverge&#xD; */&#xD;function firstDifferenceIndex(string1, string2) {&#xD;  var minLen = Math.min(string1.length, string2.length);&#xD;  for (var i = 0; i &lt; minLen; i++) {&#xD;    if (string1.charAt(i) !== string2.charAt(i)) {&#xD;      return i;&#xD;    }&#xD;  }&#xD;  return string1.length === string2.length ? -1 : minLen;&#xD;}&#xD;&#xD;/**&#xD; * @param {DOMElement|DOMDocument} container DOM element that may contain&#xD; * a React component&#xD; * @return {?*} DOM element that may have the reactRoot ID, or null.&#xD; */&#xD;function getReactRootElementInContainer(container) {&#xD;  if (!container) {&#xD;    return null;&#xD;  }&#xD;&#xD;  if (container.nodeType === DOC_NODE_TYPE) {&#xD;    return container.documentElement;&#xD;  } else {&#xD;    return container.firstChild;&#xD;  }&#xD;}&#xD;&#xD;function internalGetID(node) {&#xD;  // If node is something like a window, document, or text node, none of&#xD;  // which support attributes or a .getAttribute method, gracefully return&#xD;  // the empty string, as if the attribute were missing.&#xD;  return node.getAttribute &amp;&amp; node.getAttribute(ATTR_NAME) || &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Mounts this component and inserts it into the DOM.&#xD; *&#xD; * @param {ReactComponent} componentInstance The instance to mount.&#xD; * @param {DOMElement} container DOM element to mount into.&#xD; * @param {ReactReconcileTransaction} transaction&#xD; * @param {boolean} shouldReuseMarkup If true, do not insert markup&#xD; */&#xD;function mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {&#xD;  var markerName;&#xD;  if (ReactFeatureFlags.logTopLevelRenders) {&#xD;    var wrappedElement = wrapperInstance._currentElement.props.child;&#xD;    var type = wrappedElement.type;&#xD;    markerName = &apos;React mount: &apos; + (typeof type === &apos;string&apos; ? type : type.displayName || type.name);&#xD;    console.time(markerName);&#xD;  }&#xD;&#xD;  var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */&#xD;  );&#xD;&#xD;  if (markerName) {&#xD;    console.timeEnd(markerName);&#xD;  }&#xD;&#xD;  wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;&#xD;  ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);&#xD;}&#xD;&#xD;/**&#xD; * Batched mount.&#xD; *&#xD; * @param {ReactComponent} componentInstance The instance to mount.&#xD; * @param {DOMElement} container DOM element to mount into.&#xD; * @param {boolean} shouldReuseMarkup If true, do not insert markup&#xD; */&#xD;function batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {&#xD;  var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(&#xD;  /* useCreateElement */&#xD;  !shouldReuseMarkup &amp;&amp; ReactDOMFeatureFlags.useCreateElement);&#xD;  transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);&#xD;  ReactUpdates.ReactReconcileTransaction.release(transaction);&#xD;}&#xD;&#xD;/**&#xD; * Unmounts a component and removes it from the DOM.&#xD; *&#xD; * @param {ReactComponent} instance React component instance.&#xD; * @param {DOMElement} container DOM element to unmount from.&#xD; * @final&#xD; * @internal&#xD; * @see {ReactMount.unmountComponentAtNode}&#xD; */&#xD;function unmountComponentFromNode(instance, container, safely) {&#xD;  if (true) {&#xD;    ReactInstrumentation.debugTool.onBeginFlush();&#xD;  }&#xD;  ReactReconciler.unmountComponent(instance, safely);&#xD;  if (true) {&#xD;    ReactInstrumentation.debugTool.onEndFlush();&#xD;  }&#xD;&#xD;  if (container.nodeType === DOC_NODE_TYPE) {&#xD;    container = container.documentElement;&#xD;  }&#xD;&#xD;  // http://jsperf.com/emptying-a-node&#xD;  while (container.lastChild) {&#xD;    container.removeChild(container.lastChild);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * True if the supplied DOM node has a direct React-rendered child that is&#xD; * not a React root element. Useful for warning in `render`,&#xD; * `unmountComponentAtNode`, etc.&#xD; *&#xD; * @param {?DOMElement} node The candidate DOM node.&#xD; * @return {boolean} True if the DOM element contains a direct child that was&#xD; * rendered by React but is not a root element.&#xD; * @internal&#xD; */&#xD;function hasNonRootReactChild(container) {&#xD;  var rootEl = getReactRootElementInContainer(container);&#xD;  if (rootEl) {&#xD;    var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);&#xD;    return !!(inst &amp;&amp; inst._hostParent);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * True if the supplied DOM node is a React DOM element and&#xD; * it has been rendered by another copy of React.&#xD; *&#xD; * @param {?DOMElement} node The candidate DOM node.&#xD; * @return {boolean} True if the DOM has been rendered by another copy of React&#xD; * @internal&#xD; */&#xD;function nodeIsRenderedByOtherInstance(container) {&#xD;  var rootEl = getReactRootElementInContainer(container);&#xD;  return !!(rootEl &amp;&amp; isReactNode(rootEl) &amp;&amp; !ReactDOMComponentTree.getInstanceFromNode(rootEl));&#xD;}&#xD;&#xD;/**&#xD; * True if the supplied DOM node is a valid node element.&#xD; *&#xD; * @param {?DOMElement} node The candidate DOM node.&#xD; * @return {boolean} True if the DOM is a valid DOM node.&#xD; * @internal&#xD; */&#xD;function isValidContainer(node) {&#xD;  return !!(node &amp;&amp; (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));&#xD;}&#xD;&#xD;/**&#xD; * True if the supplied DOM node is a valid React node element.&#xD; *&#xD; * @param {?DOMElement} node The candidate DOM node.&#xD; * @return {boolean} True if the DOM is a valid React DOM node.&#xD; * @internal&#xD; */&#xD;function isReactNode(node) {&#xD;  return isValidContainer(node) &amp;&amp; (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));&#xD;}&#xD;&#xD;function getHostRootInstanceInContainer(container) {&#xD;  var rootEl = getReactRootElementInContainer(container);&#xD;  var prevHostInstance = rootEl &amp;&amp; ReactDOMComponentTree.getInstanceFromNode(rootEl);&#xD;  return prevHostInstance &amp;&amp; !prevHostInstance._hostParent ? prevHostInstance : null;&#xD;}&#xD;&#xD;function getTopLevelWrapperInContainer(container) {&#xD;  var root = getHostRootInstanceInContainer(container);&#xD;  return root ? root._hostContainerInfo._topLevelWrapper : null;&#xD;}&#xD;&#xD;/**&#xD; * Temporary (?) hack so that we can store all top-level pending updates on&#xD; * composites instead of having to worry about different types of components&#xD; * here.&#xD; */&#xD;var topLevelRootCounter = 1;&#xD;var TopLevelWrapper = function () {&#xD;  this.rootID = topLevelRootCounter++;&#xD;};&#xD;TopLevelWrapper.prototype.isReactComponent = {};&#xD;if (true) {&#xD;  TopLevelWrapper.displayName = &apos;TopLevelWrapper&apos;;&#xD;}&#xD;TopLevelWrapper.prototype.render = function () {&#xD;  return this.props.child;&#xD;};&#xD;TopLevelWrapper.isReactTopLevelWrapper = true;&#xD;&#xD;/**&#xD; * Mounting is the process of initializing a React component by creating its&#xD; * representative DOM elements and inserting them into a supplied `container`.&#xD; * Any prior content inside `container` is destroyed in the process.&#xD; *&#xD; *   ReactMount.render(&#xD; *     component,&#xD; *     document.getElementById(&apos;container&apos;)&#xD; *   );&#xD; *&#xD; *   &lt;div id="container"&gt;                   &lt;-- Supplied `container`.&#xD; *     &lt;div data-reactid=".3"&gt;              &lt;-- Rendered reactRoot of React&#xD; *       // ...                                 component.&#xD; *     &lt;/div&gt;&#xD; *   &lt;/div&gt;&#xD; *&#xD; * Inside of `container`, the first element rendered is the "reactRoot".&#xD; */&#xD;var ReactMount = {&#xD;&#xD;  TopLevelWrapper: TopLevelWrapper,&#xD;&#xD;  /**&#xD;   * Used by devtools. The keys are not important.&#xD;   */&#xD;  _instancesByReactRootID: instancesByReactRootID,&#xD;&#xD;  /**&#xD;   * This is a hook provided to support rendering React components while&#xD;   * ensuring that the apparent scroll position of its `container` does not&#xD;   * change.&#xD;   *&#xD;   * @param {DOMElement} container The `container` being rendered into.&#xD;   * @param {function} renderCallback This must be called once to do the render.&#xD;   */&#xD;  scrollMonitor: function (container, renderCallback) {&#xD;    renderCallback();&#xD;  },&#xD;&#xD;  /**&#xD;   * Take a component that&apos;s already mounted into the DOM and replace its props&#xD;   * @param {ReactComponent} prevComponent component instance already in the DOM&#xD;   * @param {ReactElement} nextElement component instance to render&#xD;   * @param {DOMElement} container container to render into&#xD;   * @param {?function} callback function triggered on completion&#xD;   */&#xD;  _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {&#xD;    ReactMount.scrollMonitor(container, function () {&#xD;      ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);&#xD;      if (callback) {&#xD;        ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);&#xD;      }&#xD;    });&#xD;&#xD;    return prevComponent;&#xD;  },&#xD;&#xD;  /**&#xD;   * Render a new component into the DOM. Hooked by hooks!&#xD;   *&#xD;   * @param {ReactElement} nextElement element to render&#xD;   * @param {DOMElement} container container to render into&#xD;   * @param {boolean} shouldReuseMarkup if we should skip the markup insertion&#xD;   * @return {ReactComponent} nextComponent&#xD;   */&#xD;  _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {&#xD;    // Various parts of our code (such as ReactCompositeComponent&apos;s&#xD;    // _renderValidatedComponent) assume that calls to render aren&apos;t nested;&#xD;    // verify that that&apos;s the case.&#xD;     true ? warning(ReactCurrentOwner.current == null, &apos;_renderNewRootComponent(): Render methods should be a pure function &apos; + &apos;of props and state; triggering nested component updates from &apos; + &apos;render is not allowed. If necessary, trigger nested updates in &apos; + &apos;componentDidUpdate. Check the render method of %s.&apos;, ReactCurrentOwner.current &amp;&amp; ReactCurrentOwner.current.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;    !isValidContainer(container) ?  true ? invariant(false, &apos;_registerComponent(...): Target container is not a DOM element.&apos;) : _prodInvariant(&apos;37&apos;) : void 0;&#xD;&#xD;    ReactBrowserEventEmitter.ensureScrollValueMonitoring();&#xD;    var componentInstance = instantiateReactComponent(nextElement, false);&#xD;&#xD;    // The initial render is synchronous but any updates that happen during&#xD;    // rendering, in componentWillMount or componentDidMount, will be batched&#xD;    // according to the current batching strategy.&#xD;&#xD;    ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);&#xD;&#xD;    var wrapperID = componentInstance._instance.rootID;&#xD;    instancesByReactRootID[wrapperID] = componentInstance;&#xD;&#xD;    return componentInstance;&#xD;  },&#xD;&#xD;  /**&#xD;   * Renders a React component into the DOM in the supplied `container`.&#xD;   *&#xD;   * If the React component was previously rendered into `container`, this will&#xD;   * perform an update on it and only mutate the DOM as necessary to reflect the&#xD;   * latest React component.&#xD;   *&#xD;   * @param {ReactComponent} parentComponent The conceptual parent of this render tree.&#xD;   * @param {ReactElement} nextElement Component element to render.&#xD;   * @param {DOMElement} container DOM element to render into.&#xD;   * @param {?function} callback function triggered on completion&#xD;   * @return {ReactComponent} Component instance rendered in `container`.&#xD;   */&#xD;  renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {&#xD;    !(parentComponent != null &amp;&amp; ReactInstanceMap.has(parentComponent)) ?  true ? invariant(false, &apos;parentComponent must be a valid React Component&apos;) : _prodInvariant(&apos;38&apos;) : void 0;&#xD;    return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);&#xD;  },&#xD;&#xD;  _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {&#xD;    ReactUpdateQueue.validateCallback(callback, &apos;ReactDOM.render&apos;);&#xD;    !React.isValidElement(nextElement) ?  true ? invariant(false, &apos;ReactDOM.render(): Invalid component element.%s&apos;, typeof nextElement === &apos;string&apos; ? &apos; Instead of passing a string like \&apos;div\&apos;, pass &apos; + &apos;React.createElement(\&apos;div\&apos;) or &lt;div /&gt;.&apos; : typeof nextElement === &apos;function&apos; ? &apos; Instead of passing a class like Foo, pass &apos; + &apos;React.createElement(Foo) or &lt;Foo /&gt;.&apos; :&#xD;    // Check if it quacks like an element&#xD;    nextElement != null &amp;&amp; nextElement.props !== undefined ? &apos; This may be caused by unintentionally loading two independent &apos; + &apos;copies of React.&apos; : &apos;&apos;) : _prodInvariant(&apos;39&apos;, typeof nextElement === &apos;string&apos; ? &apos; Instead of passing a string like \&apos;div\&apos;, pass &apos; + &apos;React.createElement(\&apos;div\&apos;) or &lt;div /&gt;.&apos; : typeof nextElement === &apos;function&apos; ? &apos; Instead of passing a class like Foo, pass &apos; + &apos;React.createElement(Foo) or &lt;Foo /&gt;.&apos; : nextElement != null &amp;&amp; nextElement.props !== undefined ? &apos; This may be caused by unintentionally loading two independent &apos; + &apos;copies of React.&apos; : &apos;&apos;) : void 0;&#xD;&#xD;     true ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== &apos;BODY&apos;, &apos;render(): Rendering components directly into document.body is &apos; + &apos;discouraged, since its children are often manipulated by third-party &apos; + &apos;scripts and browser extensions. This may lead to subtle &apos; + &apos;reconciliation issues. Try rendering into a container element created &apos; + &apos;for your app.&apos;) : void 0;&#xD;&#xD;    var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });&#xD;&#xD;    var nextContext;&#xD;    if (parentComponent) {&#xD;      var parentInst = ReactInstanceMap.get(parentComponent);&#xD;      nextContext = parentInst._processChildContext(parentInst._context);&#xD;    } else {&#xD;      nextContext = emptyObject;&#xD;    }&#xD;&#xD;    var prevComponent = getTopLevelWrapperInContainer(container);&#xD;&#xD;    if (prevComponent) {&#xD;      var prevWrappedElement = prevComponent._currentElement;&#xD;      var prevElement = prevWrappedElement.props.child;&#xD;      if (shouldUpdateReactComponent(prevElement, nextElement)) {&#xD;        var publicInst = prevComponent._renderedComponent.getPublicInstance();&#xD;        var updatedCallback = callback &amp;&amp; function () {&#xD;          callback.call(publicInst);&#xD;        };&#xD;        ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);&#xD;        return publicInst;&#xD;      } else {&#xD;        ReactMount.unmountComponentAtNode(container);&#xD;      }&#xD;    }&#xD;&#xD;    var reactRootElement = getReactRootElementInContainer(container);&#xD;    var containerHasReactMarkup = reactRootElement &amp;&amp; !!internalGetID(reactRootElement);&#xD;    var containerHasNonRootReactChild = hasNonRootReactChild(container);&#xD;&#xD;    if (true) {&#xD;       true ? warning(!containerHasNonRootReactChild, &apos;render(...): Replacing React-rendered children with a new root &apos; + &apos;component. If you intended to update the children of this node, &apos; + &apos;you should instead have the existing children update their state &apos; + &apos;and render the new components instead of calling ReactDOM.render.&apos;) : void 0;&#xD;&#xD;      if (!containerHasReactMarkup || reactRootElement.nextSibling) {&#xD;        var rootElementSibling = reactRootElement;&#xD;        while (rootElementSibling) {&#xD;          if (internalGetID(rootElementSibling)) {&#xD;             true ? warning(false, &apos;render(): Target node has markup rendered by React, but there &apos; + &apos;are unrelated nodes as well. This is most commonly caused by &apos; + &apos;white-space inserted around server-rendered markup.&apos;) : void 0;&#xD;            break;&#xD;          }&#xD;          rootElementSibling = rootElementSibling.nextSibling;&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    var shouldReuseMarkup = containerHasReactMarkup &amp;&amp; !prevComponent &amp;&amp; !containerHasNonRootReactChild;&#xD;    var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();&#xD;    if (callback) {&#xD;      callback.call(component);&#xD;    }&#xD;    return component;&#xD;  },&#xD;&#xD;  /**&#xD;   * Renders a React component into the DOM in the supplied `container`.&#xD;   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render&#xD;   *&#xD;   * If the React component was previously rendered into `container`, this will&#xD;   * perform an update on it and only mutate the DOM as necessary to reflect the&#xD;   * latest React component.&#xD;   *&#xD;   * @param {ReactElement} nextElement Component element to render.&#xD;   * @param {DOMElement} container DOM element to render into.&#xD;   * @param {?function} callback function triggered on completion&#xD;   * @return {ReactComponent} Component instance rendered in `container`.&#xD;   */&#xD;  render: function (nextElement, container, callback) {&#xD;    return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);&#xD;  },&#xD;&#xD;  /**&#xD;   * Unmounts and destroys the React component rendered in the `container`.&#xD;   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode&#xD;   *&#xD;   * @param {DOMElement} container DOM element containing a React component.&#xD;   * @return {boolean} True if a component was found in and unmounted from&#xD;   *                   `container`&#xD;   */&#xD;  unmountComponentAtNode: function (container) {&#xD;    // Various parts of our code (such as ReactCompositeComponent&apos;s&#xD;    // _renderValidatedComponent) assume that calls to render aren&apos;t nested;&#xD;    // verify that that&apos;s the case. (Strictly speaking, unmounting won&apos;t cause a&#xD;    // render but we still don&apos;t expect to be in a render call here.)&#xD;     true ? warning(ReactCurrentOwner.current == null, &apos;unmountComponentAtNode(): Render methods should be a pure function &apos; + &apos;of props and state; triggering nested component updates from render &apos; + &apos;is not allowed. If necessary, trigger nested updates in &apos; + &apos;componentDidUpdate. Check the render method of %s.&apos;, ReactCurrentOwner.current &amp;&amp; ReactCurrentOwner.current.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;    !isValidContainer(container) ?  true ? invariant(false, &apos;unmountComponentAtNode(...): Target container is not a DOM element.&apos;) : _prodInvariant(&apos;40&apos;) : void 0;&#xD;&#xD;    if (true) {&#xD;       true ? warning(!nodeIsRenderedByOtherInstance(container), &apos;unmountComponentAtNode(): The node you\&apos;re attempting to unmount &apos; + &apos;was rendered by another copy of React.&apos;) : void 0;&#xD;    }&#xD;&#xD;    var prevComponent = getTopLevelWrapperInContainer(container);&#xD;    if (!prevComponent) {&#xD;      // Check if the node being unmounted was rendered by React, but isn&apos;t a&#xD;      // root node.&#xD;      var containerHasNonRootReactChild = hasNonRootReactChild(container);&#xD;&#xD;      // Check if the container itself is a React root node.&#xD;      var isContainerReactRoot = container.nodeType === 1 &amp;&amp; container.hasAttribute(ROOT_ATTR_NAME);&#xD;&#xD;      if (true) {&#xD;         true ? warning(!containerHasNonRootReactChild, &apos;unmountComponentAtNode(): The node you\&apos;re attempting to unmount &apos; + &apos;was rendered by React and is not a top-level container. %s&apos;, isContainerReactRoot ? &apos;You may have accidentally passed in a React root node instead &apos; + &apos;of its container.&apos; : &apos;Instead, have the parent component update its state and &apos; + &apos;rerender in order to remove this component.&apos;) : void 0;&#xD;      }&#xD;&#xD;      return false;&#xD;    }&#xD;    delete instancesByReactRootID[prevComponent._instance.rootID];&#xD;    ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);&#xD;    return true;&#xD;  },&#xD;&#xD;  _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {&#xD;    !isValidContainer(container) ?  true ? invariant(false, &apos;mountComponentIntoNode(...): Target container is not valid.&apos;) : _prodInvariant(&apos;41&apos;) : void 0;&#xD;&#xD;    if (shouldReuseMarkup) {&#xD;      var rootElement = getReactRootElementInContainer(container);&#xD;      if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {&#xD;        ReactDOMComponentTree.precacheNode(instance, rootElement);&#xD;        return;&#xD;      } else {&#xD;        var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);&#xD;        rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);&#xD;&#xD;        var rootMarkup = rootElement.outerHTML;&#xD;        rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);&#xD;&#xD;        var normalizedMarkup = markup;&#xD;        if (true) {&#xD;          // because rootMarkup is retrieved from the DOM, various normalizations&#xD;          // will have occurred which will not be present in `markup`. Here,&#xD;          // insert markup into a &lt;div&gt; or &lt;iframe&gt; depending on the container&#xD;          // type to perform the same normalizations before comparing.&#xD;          var normalizer;&#xD;          if (container.nodeType === ELEMENT_NODE_TYPE) {&#xD;            normalizer = document.createElement(&apos;div&apos;);&#xD;            normalizer.innerHTML = markup;&#xD;            normalizedMarkup = normalizer.innerHTML;&#xD;          } else {&#xD;            normalizer = document.createElement(&apos;iframe&apos;);&#xD;            document.body.appendChild(normalizer);&#xD;            normalizer.contentDocument.write(markup);&#xD;            normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;&#xD;            document.body.removeChild(normalizer);&#xD;          }&#xD;        }&#xD;&#xD;        var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);&#xD;        var difference = &apos; (client) &apos; + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + &apos;\n (server) &apos; + rootMarkup.substring(diffIndex - 20, diffIndex + 20);&#xD;&#xD;        !(container.nodeType !== DOC_NODE_TYPE) ?  true ? invariant(false, &apos;You\&apos;re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\n%s&apos;, difference) : _prodInvariant(&apos;42&apos;, difference) : void 0;&#xD;&#xD;        if (true) {&#xD;           true ? warning(false, &apos;React attempted to reuse markup in a container but the &apos; + &apos;checksum was invalid. This generally means that you are &apos; + &apos;using server rendering and the markup generated on the &apos; + &apos;server was not what the client was expecting. React injected &apos; + &apos;new markup to compensate which works but you have lost many &apos; + &apos;of the benefits of server rendering. Instead, figure out &apos; + &apos;why the markup being generated is different on the client &apos; + &apos;or server:\n%s&apos;, difference) : void 0;&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    !(container.nodeType !== DOC_NODE_TYPE) ?  true ? invariant(false, &apos;You\&apos;re trying to render a component to the document but you didn\&apos;t use server rendering. We can\&apos;t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.&apos;) : _prodInvariant(&apos;43&apos;) : void 0;&#xD;&#xD;    if (transaction.useCreateElement) {&#xD;      while (container.lastChild) {&#xD;        container.removeChild(container.lastChild);&#xD;      }&#xD;      DOMLazyTree.insertTreeBefore(container, markup, null);&#xD;    } else {&#xD;      setInnerHTML(container, markup);&#xD;      ReactDOMComponentTree.precacheNode(instance, container.firstChild);&#xD;    }&#xD;&#xD;    if (true) {&#xD;      var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);&#xD;      if (hostNode._debugID !== 0) {&#xD;        ReactInstrumentation.debugTool.onHostOperation({&#xD;          instanceID: hostNode._debugID,&#xD;          type: &apos;mount&apos;,&#xD;          payload: markup.toString()&#xD;        });&#xD;      }&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactMount;&#xD;&#xD;/***/ }),&#xD;/* 164 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var React = __webpack_require__(43);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var ReactNodeTypes = {&#xD;  HOST: 0,&#xD;  COMPOSITE: 1,&#xD;  EMPTY: 2,&#xD;&#xD;  getType: function (node) {&#xD;    if (node === null || node === false) {&#xD;      return ReactNodeTypes.EMPTY;&#xD;    } else if (React.isValidElement(node)) {&#xD;      if (typeof node.type === &apos;function&apos;) {&#xD;        return ReactNodeTypes.COMPOSITE;&#xD;      } else {&#xD;        return ReactNodeTypes.HOST;&#xD;      }&#xD;    }&#xD;     true ?  true ? invariant(false, &apos;Unexpected node: %s&apos;, node) : _prodInvariant(&apos;26&apos;, node) : void 0;&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactNodeTypes;&#xD;&#xD;/***/ }),&#xD;/* 165 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;&#xD;&#xD;module.exports = ReactPropTypesSecret;&#xD;&#xD;/***/ }),&#xD;/* 166 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ViewportMetrics = {&#xD;&#xD;  currentScrollLeft: 0,&#xD;&#xD;  currentScrollTop: 0,&#xD;&#xD;  refreshScrollValues: function (scrollPosition) {&#xD;    ViewportMetrics.currentScrollLeft = scrollPosition.x;&#xD;    ViewportMetrics.currentScrollTop = scrollPosition.y;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ViewportMetrics;&#xD;&#xD;/***/ }),&#xD;/* 167 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Accumulates items that must not be null or undefined into the first one. This&#xD; * is used to conserve memory by avoiding array allocations, and thus sacrifices&#xD; * API cleanness. Since `current` can be null before being passed in and not&#xD; * null after this function, make sure to assign it back to `current`:&#xD; *&#xD; * `a = accumulateInto(a, b);`&#xD; *&#xD; * This API should be sparingly used. Try `accumulate` for something cleaner.&#xD; *&#xD; * @return {*|array&lt;*&gt;} An accumulation of items.&#xD; */&#xD;&#xD;function accumulateInto(current, next) {&#xD;  !(next != null) ?  true ? invariant(false, &apos;accumulateInto(...): Accumulated items must not be null or undefined.&apos;) : _prodInvariant(&apos;30&apos;) : void 0;&#xD;&#xD;  if (current == null) {&#xD;    return next;&#xD;  }&#xD;&#xD;  // Both are not empty. Warning: Never call x.concat(y) when you are not&#xD;  // certain that x is an Array (x could be a string with concat method).&#xD;  if (Array.isArray(current)) {&#xD;    if (Array.isArray(next)) {&#xD;      current.push.apply(current, next);&#xD;      return current;&#xD;    }&#xD;    current.push(next);&#xD;    return current;&#xD;  }&#xD;&#xD;  if (Array.isArray(next)) {&#xD;    // A bit too dangerous to mutate `next`.&#xD;    return [current].concat(next);&#xD;  }&#xD;&#xD;  return [current, next];&#xD;}&#xD;&#xD;module.exports = accumulateInto;&#xD;&#xD;/***/ }),&#xD;/* 168 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * @param {array} arr an "accumulation" of items which is either an Array or&#xD; * a single item. Useful when paired with the `accumulate` module. This is a&#xD; * simple utility that allows us to reason about a collection of items, but&#xD; * handling the case when there is exactly one item (and we do not need to&#xD; * allocate an array).&#xD; */&#xD;&#xD;function forEachAccumulated(arr, cb, scope) {&#xD;  if (Array.isArray(arr)) {&#xD;    arr.forEach(cb, scope);&#xD;  } else if (arr) {&#xD;    cb.call(scope, arr);&#xD;  }&#xD;}&#xD;&#xD;module.exports = forEachAccumulated;&#xD;&#xD;/***/ }),&#xD;/* 169 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactNodeTypes = __webpack_require__(164);&#xD;&#xD;function getHostComponentFromComposite(inst) {&#xD;  var type;&#xD;&#xD;  while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {&#xD;    inst = inst._renderedComponent;&#xD;  }&#xD;&#xD;  if (type === ReactNodeTypes.HOST) {&#xD;    return inst._renderedComponent;&#xD;  } else if (type === ReactNodeTypes.EMPTY) {&#xD;    return null;&#xD;  }&#xD;}&#xD;&#xD;module.exports = getHostComponentFromComposite;&#xD;&#xD;/***/ }),&#xD;/* 170 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var contentKey = null;&#xD;&#xD;/**&#xD; * Gets the key used to access text content on a DOM node.&#xD; *&#xD; * @return {?string} Key used to access text content.&#xD; * @internal&#xD; */&#xD;function getTextContentAccessor() {&#xD;  if (!contentKey &amp;&amp; ExecutionEnvironment.canUseDOM) {&#xD;    // Prefer textContent to innerText because many browsers support both but&#xD;    // SVG &lt;text&gt; elements don&apos;t support innerText even when &lt;div&gt; does.&#xD;    contentKey = &apos;textContent&apos; in document.documentElement ? &apos;textContent&apos; : &apos;innerText&apos;;&#xD;  }&#xD;  return contentKey;&#xD;}&#xD;&#xD;module.exports = getTextContentAccessor;&#xD;&#xD;/***/ }),&#xD;/* 171 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var ReactCompositeComponent = __webpack_require__(406);&#xD;var ReactEmptyComponent = __webpack_require__(159);&#xD;var ReactHostComponent = __webpack_require__(161);&#xD;&#xD;var getNextDebugID = __webpack_require__(495);&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;// To avoid a cyclic dependency, we create the final class in this module&#xD;var ReactCompositeComponentWrapper = function (element) {&#xD;  this.construct(element);&#xD;};&#xD;&#xD;function getDeclarationErrorAddendum(owner) {&#xD;  if (owner) {&#xD;    var name = owner.getName();&#xD;    if (name) {&#xD;      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;    }&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Check if the type reference is a known internal type. I.e. not a user&#xD; * provided composite type.&#xD; *&#xD; * @param {function} type&#xD; * @return {boolean} Returns true if this is a valid internal type.&#xD; */&#xD;function isInternalComponentType(type) {&#xD;  return typeof type === &apos;function&apos; &amp;&amp; typeof type.prototype !== &apos;undefined&apos; &amp;&amp; typeof type.prototype.mountComponent === &apos;function&apos; &amp;&amp; typeof type.prototype.receiveComponent === &apos;function&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Given a ReactNode, create an instance that will actually be mounted.&#xD; *&#xD; * @param {ReactNode} node&#xD; * @param {boolean} shouldHaveDebugID&#xD; * @return {object} A new instance of the element&apos;s constructor.&#xD; * @protected&#xD; */&#xD;function instantiateReactComponent(node, shouldHaveDebugID) {&#xD;  var instance;&#xD;&#xD;  if (node === null || node === false) {&#xD;    instance = ReactEmptyComponent.create(instantiateReactComponent);&#xD;  } else if (typeof node === &apos;object&apos;) {&#xD;    var element = node;&#xD;    var type = element.type;&#xD;    if (typeof type !== &apos;function&apos; &amp;&amp; typeof type !== &apos;string&apos;) {&#xD;      var info = &apos;&apos;;&#xD;      if (true) {&#xD;        if (type === undefined || typeof type === &apos;object&apos; &amp;&amp; type !== null &amp;&amp; Object.keys(type).length === 0) {&#xD;          info += &apos; You likely forgot to export your component from the file &apos; + &apos;it\&apos;s defined in.&apos;;&#xD;        }&#xD;      }&#xD;      info += getDeclarationErrorAddendum(element._owner);&#xD;       true ?  true ? invariant(false, &apos;Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s&apos;, type == null ? type : typeof type, info) : _prodInvariant(&apos;130&apos;, type == null ? type : typeof type, info) : void 0;&#xD;    }&#xD;&#xD;    // Special case string values&#xD;    if (typeof element.type === &apos;string&apos;) {&#xD;      instance = ReactHostComponent.createInternalComponent(element);&#xD;    } else if (isInternalComponentType(element.type)) {&#xD;      // This is temporarily available for custom components that are not string&#xD;      // representations. I.e. ART. Once those are updated to use the string&#xD;      // representation, we can drop this code path.&#xD;      instance = new element.type(element);&#xD;&#xD;      // We renamed this. Allow the old name for compat. :(&#xD;      if (!instance.getHostNode) {&#xD;        instance.getHostNode = instance.getNativeNode;&#xD;      }&#xD;    } else {&#xD;      instance = new ReactCompositeComponentWrapper(element);&#xD;    }&#xD;  } else if (typeof node === &apos;string&apos; || typeof node === &apos;number&apos;) {&#xD;    instance = ReactHostComponent.createInstanceForText(node);&#xD;  } else {&#xD;     true ?  true ? invariant(false, &apos;Encountered invalid React node of type %s&apos;, typeof node) : _prodInvariant(&apos;131&apos;, typeof node) : void 0;&#xD;  }&#xD;&#xD;  if (true) {&#xD;     true ? warning(typeof instance.mountComponent === &apos;function&apos; &amp;&amp; typeof instance.receiveComponent === &apos;function&apos; &amp;&amp; typeof instance.getHostNode === &apos;function&apos; &amp;&amp; typeof instance.unmountComponent === &apos;function&apos;, &apos;Only React Components can be mounted.&apos;) : void 0;&#xD;  }&#xD;&#xD;  // These two fields are used by the DOM and ART diffing algorithms&#xD;  // respectively. Instead of using expandos on components, we should be&#xD;  // storing the state needed by the diffing algorithms elsewhere.&#xD;  instance._mountIndex = 0;&#xD;  instance._mountImage = null;&#xD;&#xD;  if (true) {&#xD;    instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;&#xD;  }&#xD;&#xD;  // Internal instances should fully constructed at this point, so they should&#xD;  // not get any new fields added to them at this point.&#xD;  if (true) {&#xD;    if (Object.preventExtensions) {&#xD;      Object.preventExtensions(instance);&#xD;    }&#xD;  }&#xD;&#xD;  return instance;&#xD;}&#xD;&#xD;_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {&#xD;  _instantiateReactComponent: instantiateReactComponent&#xD;});&#xD;&#xD;module.exports = instantiateReactComponent;&#xD;&#xD;/***/ }),&#xD;/* 172 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary&#xD; */&#xD;&#xD;var supportedInputTypes = {&#xD;  &apos;color&apos;: true,&#xD;  &apos;date&apos;: true,&#xD;  &apos;datetime&apos;: true,&#xD;  &apos;datetime-local&apos;: true,&#xD;  &apos;email&apos;: true,&#xD;  &apos;month&apos;: true,&#xD;  &apos;number&apos;: true,&#xD;  &apos;password&apos;: true,&#xD;  &apos;range&apos;: true,&#xD;  &apos;search&apos;: true,&#xD;  &apos;tel&apos;: true,&#xD;  &apos;text&apos;: true,&#xD;  &apos;time&apos;: true,&#xD;  &apos;url&apos;: true,&#xD;  &apos;week&apos;: true&#xD;};&#xD;&#xD;function isTextInputElement(elem) {&#xD;  var nodeName = elem &amp;&amp; elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();&#xD;&#xD;  if (nodeName === &apos;input&apos;) {&#xD;    return !!supportedInputTypes[elem.type];&#xD;  }&#xD;&#xD;  if (nodeName === &apos;textarea&apos;) {&#xD;    return true;&#xD;  }&#xD;&#xD;  return false;&#xD;}&#xD;&#xD;module.exports = isTextInputElement;&#xD;&#xD;/***/ }),&#xD;/* 173 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var escapeTextContentForBrowser = __webpack_require__(67);&#xD;var setInnerHTML = __webpack_require__(68);&#xD;&#xD;/**&#xD; * Set the textContent property of a node, ensuring that whitespace is preserved&#xD; * even in IE8. innerText is a poor substitute for textContent and, among many&#xD; * issues, inserts &lt;br&gt; instead of the literal newline chars. innerHTML behaves&#xD; * as it should.&#xD; *&#xD; * @param {DOMElement} node&#xD; * @param {string} text&#xD; * @internal&#xD; */&#xD;var setTextContent = function (node, text) {&#xD;  if (text) {&#xD;    var firstChild = node.firstChild;&#xD;&#xD;    if (firstChild &amp;&amp; firstChild === node.lastChild &amp;&amp; firstChild.nodeType === 3) {&#xD;      firstChild.nodeValue = text;&#xD;      return;&#xD;    }&#xD;  }&#xD;  node.textContent = text;&#xD;};&#xD;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  if (!(&apos;textContent&apos; in document.documentElement)) {&#xD;    setTextContent = function (node, text) {&#xD;      if (node.nodeType === 3) {&#xD;        node.nodeValue = text;&#xD;        return;&#xD;      }&#xD;      setInnerHTML(node, escapeTextContentForBrowser(text));&#xD;    };&#xD;  }&#xD;}&#xD;&#xD;module.exports = setTextContent;&#xD;&#xD;/***/ }),&#xD;/* 174 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var REACT_ELEMENT_TYPE = __webpack_require__(425);&#xD;&#xD;var getIteratorFn = __webpack_require__(459);&#xD;var invariant = __webpack_require__(3);&#xD;var KeyEscapeUtils = __webpack_require__(88);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var SEPARATOR = &apos;.&apos;;&#xD;var SUBSEPARATOR = &apos;:&apos;;&#xD;&#xD;/**&#xD; * This is inlined from ReactElement since this file is shared between&#xD; * isomorphic and renderers. We could extract this to a&#xD; *&#xD; */&#xD;&#xD;/**&#xD; * TODO: Test that a single child and an array with one item have the same key&#xD; * pattern.&#xD; */&#xD;&#xD;var didWarnAboutMaps = false;&#xD;&#xD;/**&#xD; * Generate a key string that identifies a component within a set.&#xD; *&#xD; * @param {*} component A component that could contain a manual key.&#xD; * @param {number} index Index that is used if a manual key is not provided.&#xD; * @return {string}&#xD; */&#xD;function getComponentKey(component, index) {&#xD;  // Do some typechecking here since we call this blindly. We want to ensure&#xD;  // that we don&apos;t block potential future ES APIs.&#xD;  if (component &amp;&amp; typeof component === &apos;object&apos; &amp;&amp; component.key != null) {&#xD;    // Explicit key&#xD;    return KeyEscapeUtils.escape(component.key);&#xD;  }&#xD;  // Implicit key determined by the index in the set&#xD;  return index.toString(36);&#xD;}&#xD;&#xD;/**&#xD; * @param {?*} children Children tree container.&#xD; * @param {!string} nameSoFar Name of the key path so far.&#xD; * @param {!function} callback Callback to invoke with each child found.&#xD; * @param {?*} traverseContext Used to pass information throughout the traversal&#xD; * process.&#xD; * @return {!number} The number of children in this subtree.&#xD; */&#xD;function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {&#xD;  var type = typeof children;&#xD;&#xD;  if (type === &apos;undefined&apos; || type === &apos;boolean&apos;) {&#xD;    // All of the above are perceived as null.&#xD;    children = null;&#xD;  }&#xD;&#xD;  if (children === null || type === &apos;string&apos; || type === &apos;number&apos; ||&#xD;  // The following is inlined from ReactElement. This means we can optimize&#xD;  // some checks. React Fiber also inlines this logic for similar purposes.&#xD;  type === &apos;object&apos; &amp;&amp; children.$$typeof === REACT_ELEMENT_TYPE) {&#xD;    callback(traverseContext, children,&#xD;    // If it&apos;s the only child, treat the name as if it was wrapped in an array&#xD;    // so that it&apos;s consistent if the number of children grows.&#xD;    nameSoFar === &apos;&apos; ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);&#xD;    return 1;&#xD;  }&#xD;&#xD;  var child;&#xD;  var nextName;&#xD;  var subtreeCount = 0; // Count of children found in the current subtree.&#xD;  var nextNamePrefix = nameSoFar === &apos;&apos; ? SEPARATOR : nameSoFar + SUBSEPARATOR;&#xD;&#xD;  if (Array.isArray(children)) {&#xD;    for (var i = 0; i &lt; children.length; i++) {&#xD;      child = children[i];&#xD;      nextName = nextNamePrefix + getComponentKey(child, i);&#xD;      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;    }&#xD;  } else {&#xD;    var iteratorFn = getIteratorFn(children);&#xD;    if (iteratorFn) {&#xD;      var iterator = iteratorFn.call(children);&#xD;      var step;&#xD;      if (iteratorFn !== children.entries) {&#xD;        var ii = 0;&#xD;        while (!(step = iterator.next()).done) {&#xD;          child = step.value;&#xD;          nextName = nextNamePrefix + getComponentKey(child, ii++);&#xD;          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;        }&#xD;      } else {&#xD;        if (true) {&#xD;          var mapsAsChildrenAddendum = &apos;&apos;;&#xD;          if (ReactCurrentOwner.current) {&#xD;            var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();&#xD;            if (mapsAsChildrenOwnerName) {&#xD;              mapsAsChildrenAddendum = &apos; Check the render method of `&apos; + mapsAsChildrenOwnerName + &apos;`.&apos;;&#xD;            }&#xD;          }&#xD;           true ? warning(didWarnAboutMaps, &apos;Using Maps as children is not yet fully supported. It is an &apos; + &apos;experimental feature that might be removed. Convert it to a &apos; + &apos;sequence / iterable of keyed ReactElements instead.%s&apos;, mapsAsChildrenAddendum) : void 0;&#xD;          didWarnAboutMaps = true;&#xD;        }&#xD;        // Iterator will provide entry [k,v] tuples rather than values.&#xD;        while (!(step = iterator.next()).done) {&#xD;          var entry = step.value;&#xD;          if (entry) {&#xD;            child = entry[1];&#xD;            nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);&#xD;            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;          }&#xD;        }&#xD;      }&#xD;    } else if (type === &apos;object&apos;) {&#xD;      var addendum = &apos;&apos;;&#xD;      if (true) {&#xD;        addendum = &apos; If you meant to render a collection of children, use an array &apos; + &apos;instead or wrap the object using createFragment(object) from the &apos; + &apos;React add-ons.&apos;;&#xD;        if (children._isReactElement) {&#xD;          addendum = &apos; It looks like you\&apos;re using an element created by a different &apos; + &apos;version of React. Make sure to use only one copy of React.&apos;;&#xD;        }&#xD;        if (ReactCurrentOwner.current) {&#xD;          var name = ReactCurrentOwner.current.getName();&#xD;          if (name) {&#xD;            addendum += &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;          }&#xD;        }&#xD;      }&#xD;      var childrenString = String(children);&#xD;       true ?  true ? invariant(false, &apos;Objects are not valid as a React child (found: %s).%s&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : _prodInvariant(&apos;31&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : void 0;&#xD;    }&#xD;  }&#xD;&#xD;  return subtreeCount;&#xD;}&#xD;&#xD;/**&#xD; * Traverses children that are typically specified as `props.children`, but&#xD; * might also be specified through attributes:&#xD; *&#xD; * - `traverseAllChildren(this.props.children, ...)`&#xD; * - `traverseAllChildren(this.props.leftPanelChildren, ...)`&#xD; *&#xD; * The `traverseContext` is an optional argument that is passed through the&#xD; * entire traversal. It can be used to store accumulations or anything else that&#xD; * the callback might find relevant.&#xD; *&#xD; * @param {?*} children Children tree object.&#xD; * @param {!function} callback To invoke upon traversing each child.&#xD; * @param {?*} traverseContext Context for traversal.&#xD; * @return {!number} The number of children in this subtree.&#xD; */&#xD;function traverseAllChildren(children, callback, traverseContext) {&#xD;  if (children == null) {&#xD;    return 0;&#xD;  }&#xD;&#xD;  return traverseAllChildrenImpl(children, &apos;&apos;, callback, traverseContext);&#xD;}&#xD;&#xD;module.exports = traverseAllChildren;&#xD;&#xD;/***/ }),&#xD;/* 175 */,&#xD;/* 176 */,&#xD;/* 177 */,&#xD;/* 178 */,&#xD;/* 179 */,&#xD;/* 180 */,&#xD;/* 181 */,&#xD;/* 182 */,&#xD;/* 183 */,&#xD;/* 184 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;// The Symbol used to tag the ReactElement type. If there is no native Symbol&#xD;// nor polyfill, then a plain number is used for performance.&#xD;&#xD;var REACT_ELEMENT_TYPE = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol[&apos;for&apos;] &amp;&amp; Symbol[&apos;for&apos;](&apos;react.element&apos;) || 0xeac7;&#xD;&#xD;module.exports = REACT_ELEMENT_TYPE;&#xD;&#xD;/***/ }),&#xD;/* 185 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;/**&#xD; * ReactElementValidator provides a wrapper around a element factory&#xD; * which validates the props passed to the element. This is intended to be&#xD; * used only in DEV and could be replaced by a static type checker for languages&#xD; * that support it.&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactComponentTreeHook = __webpack_require__(20);&#xD;var ReactElement = __webpack_require__(34);&#xD;&#xD;var checkReactTypeSpec = __webpack_require__(494);&#xD;&#xD;var canDefineProperty = __webpack_require__(72);&#xD;var getIteratorFn = __webpack_require__(187);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;function getDeclarationErrorAddendum() {&#xD;  if (ReactCurrentOwner.current) {&#xD;    var name = ReactCurrentOwner.current.getName();&#xD;    if (name) {&#xD;      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;    }&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;function getSourceInfoErrorAddendum(elementProps) {&#xD;  if (elementProps !== null &amp;&amp; elementProps !== undefined &amp;&amp; elementProps.__source !== undefined) {&#xD;    var source = elementProps.__source;&#xD;    var fileName = source.fileName.replace(/^.*[\\\/]/, &apos;&apos;);&#xD;    var lineNumber = source.lineNumber;&#xD;    return &apos; Check your code at &apos; + fileName + &apos;:&apos; + lineNumber + &apos;.&apos;;&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;/**&#xD; * Warn if there&apos;s no key explicitly set on dynamic arrays of children or&#xD; * object keys are not valid. This allows us to keep track of children between&#xD; * updates.&#xD; */&#xD;var ownerHasKeyUseWarning = {};&#xD;&#xD;function getCurrentComponentErrorInfo(parentType) {&#xD;  var info = getDeclarationErrorAddendum();&#xD;&#xD;  if (!info) {&#xD;    var parentName = typeof parentType === &apos;string&apos; ? parentType : parentType.displayName || parentType.name;&#xD;    if (parentName) {&#xD;      info = &apos; Check the top-level render call using &lt;&apos; + parentName + &apos;&gt;.&apos;;&#xD;    }&#xD;  }&#xD;  return info;&#xD;}&#xD;&#xD;/**&#xD; * Warn if the element doesn&apos;t have an explicit key assigned to it.&#xD; * This element is in an array. The array could grow and shrink or be&#xD; * reordered. All children that haven&apos;t already been validated are required to&#xD; * have a "key" property assigned to it. Error statuses are cached so a warning&#xD; * will only be shown once.&#xD; *&#xD; * @internal&#xD; * @param {ReactElement} element Element that requires a key.&#xD; * @param {*} parentType element&apos;s parent&apos;s type.&#xD; */&#xD;function validateExplicitKey(element, parentType) {&#xD;  if (!element._store || element._store.validated || element.key != null) {&#xD;    return;&#xD;  }&#xD;  element._store.validated = true;&#xD;&#xD;  var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});&#xD;&#xD;  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);&#xD;  if (memoizer[currentComponentErrorInfo]) {&#xD;    return;&#xD;  }&#xD;  memoizer[currentComponentErrorInfo] = true;&#xD;&#xD;  // Usually the current owner is the offender, but if it accepts children as a&#xD;  // property, it may be the creator of the child that&apos;s responsible for&#xD;  // assigning it a key.&#xD;  var childOwner = &apos;&apos;;&#xD;  if (element &amp;&amp; element._owner &amp;&amp; element._owner !== ReactCurrentOwner.current) {&#xD;    // Give the component that originally created this child.&#xD;    childOwner = &apos; It was passed a child from &apos; + element._owner.getName() + &apos;.&apos;;&#xD;  }&#xD;&#xD;   true ? warning(false, &apos;Each child in an array or iterator should have a unique "key" prop.&apos; + &apos;%s%s See https://fb.me/react-warning-keys for more information.%s&apos;, currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;&#xD;}&#xD;&#xD;/**&#xD; * Ensure that every element either is passed in a static location, in an&#xD; * array with an explicit keys property defined, or in an object literal&#xD; * with valid key property.&#xD; *&#xD; * @internal&#xD; * @param {ReactNode} node Statically passed child of any type.&#xD; * @param {*} parentType node&apos;s parent&apos;s type.&#xD; */&#xD;function validateChildKeys(node, parentType) {&#xD;  if (typeof node !== &apos;object&apos;) {&#xD;    return;&#xD;  }&#xD;  if (Array.isArray(node)) {&#xD;    for (var i = 0; i &lt; node.length; i++) {&#xD;      var child = node[i];&#xD;      if (ReactElement.isValidElement(child)) {&#xD;        validateExplicitKey(child, parentType);&#xD;      }&#xD;    }&#xD;  } else if (ReactElement.isValidElement(node)) {&#xD;    // This element was passed in a valid location.&#xD;    if (node._store) {&#xD;      node._store.validated = true;&#xD;    }&#xD;  } else if (node) {&#xD;    var iteratorFn = getIteratorFn(node);&#xD;    // Entry iterators provide implicit keys.&#xD;    if (iteratorFn) {&#xD;      if (iteratorFn !== node.entries) {&#xD;        var iterator = iteratorFn.call(node);&#xD;        var step;&#xD;        while (!(step = iterator.next()).done) {&#xD;          if (ReactElement.isValidElement(step.value)) {&#xD;            validateExplicitKey(step.value, parentType);&#xD;          }&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Given an element, validate that its props follow the propTypes definition,&#xD; * provided by the type.&#xD; *&#xD; * @param {ReactElement} element&#xD; */&#xD;function validatePropTypes(element) {&#xD;  var componentClass = element.type;&#xD;  if (typeof componentClass !== &apos;function&apos;) {&#xD;    return;&#xD;  }&#xD;  var name = componentClass.displayName || componentClass.name;&#xD;  if (componentClass.propTypes) {&#xD;    checkReactTypeSpec(componentClass.propTypes, element.props, &apos;prop&apos;, name, element, null);&#xD;  }&#xD;  if (typeof componentClass.getDefaultProps === &apos;function&apos;) {&#xD;     true ? warning(componentClass.getDefaultProps.isReactClassApproved, &apos;getDefaultProps is only used on classic React.createClass &apos; + &apos;definitions. Use a static property named `defaultProps` instead.&apos;) : void 0;&#xD;  }&#xD;}&#xD;&#xD;var ReactElementValidator = {&#xD;&#xD;  createElement: function (type, props, children) {&#xD;    var validType = typeof type === &apos;string&apos; || typeof type === &apos;function&apos;;&#xD;    // We warn in this case but don&apos;t throw. We expect the element creation to&#xD;    // succeed and there will likely be errors in render.&#xD;    if (!validType) {&#xD;      if (typeof type !== &apos;function&apos; &amp;&amp; typeof type !== &apos;string&apos;) {&#xD;        var info = &apos;&apos;;&#xD;        if (type === undefined || typeof type === &apos;object&apos; &amp;&amp; type !== null &amp;&amp; Object.keys(type).length === 0) {&#xD;          info += &apos; You likely forgot to export your component from the file &apos; + &apos;it\&apos;s defined in.&apos;;&#xD;        }&#xD;&#xD;        var sourceInfo = getSourceInfoErrorAddendum(props);&#xD;        if (sourceInfo) {&#xD;          info += sourceInfo;&#xD;        } else {&#xD;          info += getDeclarationErrorAddendum();&#xD;        }&#xD;&#xD;        info += ReactComponentTreeHook.getCurrentStackAddendum();&#xD;&#xD;         true ? warning(false, &apos;React.createElement: type is invalid -- expected a string (for &apos; + &apos;built-in components) or a class/function (for composite &apos; + &apos;components) but got: %s.%s&apos;, type == null ? type : typeof type, info) : void 0;&#xD;      }&#xD;    }&#xD;&#xD;    var element = ReactElement.createElement.apply(this, arguments);&#xD;&#xD;    // The result can be nullish if a mock or a custom function is used.&#xD;    // TODO: Drop this when these are no longer allowed as the type argument.&#xD;    if (element == null) {&#xD;      return element;&#xD;    }&#xD;&#xD;    // Skip key warning if the type isn&apos;t valid since our key validation logic&#xD;    // doesn&apos;t expect a non-string/function type and can throw confusing errors.&#xD;    // We don&apos;t want exception behavior to differ between dev and prod.&#xD;    // (Rendering will throw with a helpful message and as soon as the type is&#xD;    // fixed, the key warnings will appear.)&#xD;    if (validType) {&#xD;      for (var i = 2; i &lt; arguments.length; i++) {&#xD;        validateChildKeys(arguments[i], type);&#xD;      }&#xD;    }&#xD;&#xD;    validatePropTypes(element);&#xD;&#xD;    return element;&#xD;  },&#xD;&#xD;  createFactory: function (type) {&#xD;    var validatedFactory = ReactElementValidator.createElement.bind(null, type);&#xD;    // Legacy hook TODO: Warn if this is accessed&#xD;    validatedFactory.type = type;&#xD;&#xD;    if (true) {&#xD;      if (canDefineProperty) {&#xD;        Object.defineProperty(validatedFactory, &apos;type&apos;, {&#xD;          enumerable: false,&#xD;          get: function () {&#xD;             true ? warning(false, &apos;Factory.type is deprecated. Access the class directly &apos; + &apos;before passing it to createFactory.&apos;) : void 0;&#xD;            Object.defineProperty(this, &apos;type&apos;, {&#xD;              value: type&#xD;            });&#xD;            return type;&#xD;          }&#xD;        });&#xD;      }&#xD;    }&#xD;&#xD;    return validatedFactory;&#xD;  },&#xD;&#xD;  cloneElement: function (element, props, children) {&#xD;    var newElement = ReactElement.cloneElement.apply(this, arguments);&#xD;    for (var i = 2; i &lt; arguments.length; i++) {&#xD;      validateChildKeys(arguments[i], newElement.type);&#xD;    }&#xD;    validatePropTypes(newElement);&#xD;    return newElement;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactElementValidator;&#xD;&#xD;/***/ }),&#xD;/* 186 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactPropTypeLocationNames = {};&#xD;&#xD;if (true) {&#xD;  ReactPropTypeLocationNames = {&#xD;    prop: &apos;prop&apos;,&#xD;    context: &apos;context&apos;,&#xD;    childContext: &apos;child context&apos;&#xD;  };&#xD;}&#xD;&#xD;module.exports = ReactPropTypeLocationNames;&#xD;&#xD;/***/ }),&#xD;/* 187 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/* global Symbol */&#xD;&#xD;var ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;&#xD;var FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.&#xD;&#xD;/**&#xD; * Returns the iterator method function contained on the iterable object.&#xD; *&#xD; * Be sure to invoke the function with the iterable as context:&#xD; *&#xD; *     var iteratorFn = getIteratorFn(myIterable);&#xD; *     if (iteratorFn) {&#xD; *       var iterator = iteratorFn.call(myIterable);&#xD; *       ...&#xD; *     }&#xD; *&#xD; * @param {?object} maybeIterable&#xD; * @return {?function}&#xD; */&#xD;function getIteratorFn(maybeIterable) {&#xD;  var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);&#xD;  if (typeof iteratorFn === &apos;function&apos;) {&#xD;    return iteratorFn;&#xD;  }&#xD;}&#xD;&#xD;module.exports = getIteratorFn;&#xD;&#xD;/***/ }),&#xD;/* 188 */,&#xD;/* 189 */,&#xD;/* 190 */,&#xD;/* 191 */,&#xD;/* 192 */,&#xD;/* 193 */,&#xD;/* 194 */,&#xD;/* 195 */,&#xD;/* 196 */,&#xD;/* 197 */,&#xD;/* 198 */,&#xD;/* 199 */,&#xD;/* 200 */,&#xD;/* 201 */,&#xD;/* 202 */,&#xD;/* 203 */,&#xD;/* 204 */,&#xD;/* 205 */,&#xD;/* 206 */,&#xD;/* 207 */,&#xD;/* 208 */,&#xD;/* 209 */,&#xD;/* 210 */,&#xD;/* 211 */,&#xD;/* 212 */,&#xD;/* 213 */,&#xD;/* 214 */,&#xD;/* 215 */,&#xD;/* 216 */,&#xD;/* 217 */,&#xD;/* 218 */,&#xD;/* 219 */,&#xD;/* 220 */,&#xD;/* 221 */,&#xD;/* 222 */,&#xD;/* 223 */,&#xD;/* 224 */,&#xD;/* 225 */,&#xD;/* 226 */,&#xD;/* 227 */,&#xD;/* 228 */,&#xD;/* 229 */,&#xD;/* 230 */,&#xD;/* 231 */,&#xD;/* 232 */,&#xD;/* 233 */,&#xD;/* 234 */,&#xD;/* 235 */,&#xD;/* 236 */,&#xD;/* 237 */,&#xD;/* 238 */,&#xD;/* 239 */,&#xD;/* 240 */,&#xD;/* 241 */,&#xD;/* 242 */,&#xD;/* 243 */,&#xD;/* 244 */,&#xD;/* 245 */,&#xD;/* 246 */,&#xD;/* 247 */,&#xD;/* 248 */,&#xD;/* 249 */,&#xD;/* 250 */,&#xD;/* 251 */,&#xD;/* 252 */,&#xD;/* 253 */,&#xD;/* 254 */,&#xD;/* 255 */,&#xD;/* 256 */,&#xD;/* 257 */,&#xD;/* 258 */,&#xD;/* 259 */,&#xD;/* 260 */,&#xD;/* 261 */,&#xD;/* 262 */,&#xD;/* 263 */,&#xD;/* 264 */,&#xD;/* 265 */,&#xD;/* 266 */,&#xD;/* 267 */,&#xD;/* 268 */,&#xD;/* 269 */,&#xD;/* 270 */,&#xD;/* 271 */,&#xD;/* 272 */,&#xD;/* 273 */,&#xD;/* 274 */,&#xD;/* 275 */,&#xD;/* 276 */,&#xD;/* 277 */,&#xD;/* 278 */,&#xD;/* 279 */,&#xD;/* 280 */,&#xD;/* 281 */,&#xD;/* 282 */,&#xD;/* 283 */,&#xD;/* 284 */,&#xD;/* 285 */,&#xD;/* 286 */,&#xD;/* 287 */,&#xD;/* 288 */,&#xD;/* 289 */,&#xD;/* 290 */,&#xD;/* 291 */,&#xD;/* 292 */,&#xD;/* 293 */,&#xD;/* 294 */,&#xD;/* 295 */,&#xD;/* 296 */,&#xD;/* 297 */,&#xD;/* 298 */,&#xD;/* 299 */,&#xD;/* 300 */,&#xD;/* 301 */,&#xD;/* 302 */,&#xD;/* 303 */,&#xD;/* 304 */,&#xD;/* 305 */,&#xD;/* 306 */,&#xD;/* 307 */,&#xD;/* 308 */,&#xD;/* 309 */,&#xD;/* 310 */,&#xD;/* 311 */,&#xD;/* 312 */,&#xD;/* 313 */,&#xD;/* 314 */,&#xD;/* 315 */,&#xD;/* 316 */,&#xD;/* 317 */,&#xD;/* 318 */,&#xD;/* 319 */,&#xD;/* 320 */,&#xD;/* 321 */,&#xD;/* 322 */,&#xD;/* 323 */,&#xD;/* 324 */,&#xD;/* 325 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var _hyphenPattern = /-(.)/g;&#xD;&#xD;/**&#xD; * Camelcases a hyphenated string, for example:&#xD; *&#xD; *   &gt; camelize(&apos;background-color&apos;)&#xD; *   &lt; "backgroundColor"&#xD; *&#xD; * @param {string} string&#xD; * @return {string}&#xD; */&#xD;function camelize(string) {&#xD;  return string.replace(_hyphenPattern, function (_, character) {&#xD;    return character.toUpperCase();&#xD;  });&#xD;}&#xD;&#xD;module.exports = camelize;&#xD;&#xD;/***/ }),&#xD;/* 326 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;&#xD;&#xD;var camelize = __webpack_require__(325);&#xD;&#xD;var msPattern = /^-ms-/;&#xD;&#xD;/**&#xD; * Camelcases a hyphenated CSS property name, for example:&#xD; *&#xD; *   &gt; camelizeStyleName(&apos;background-color&apos;)&#xD; *   &lt; "backgroundColor"&#xD; *   &gt; camelizeStyleName(&apos;-moz-transition&apos;)&#xD; *   &lt; "MozTransition"&#xD; *   &gt; camelizeStyleName(&apos;-ms-transition&apos;)&#xD; *   &lt; "msTransition"&#xD; *&#xD; * As Andi Smith suggests&#xD; * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix&#xD; * is converted to lowercase `ms`.&#xD; *&#xD; * @param {string} string&#xD; * @return {string}&#xD; */&#xD;function camelizeStyleName(string) {&#xD;  return camelize(string.replace(msPattern, &apos;ms-&apos;));&#xD;}&#xD;&#xD;module.exports = camelizeStyleName;&#xD;&#xD;/***/ }),&#xD;/* 327 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;var isTextNode = __webpack_require__(335);&#xD;&#xD;/*eslint-disable no-bitwise */&#xD;&#xD;/**&#xD; * Checks if a given DOM node contains or is another DOM node.&#xD; */&#xD;function containsNode(outerNode, innerNode) {&#xD;  if (!outerNode || !innerNode) {&#xD;    return false;&#xD;  } else if (outerNode === innerNode) {&#xD;    return true;&#xD;  } else if (isTextNode(outerNode)) {&#xD;    return false;&#xD;  } else if (isTextNode(innerNode)) {&#xD;    return containsNode(outerNode, innerNode.parentNode);&#xD;  } else if (&apos;contains&apos; in outerNode) {&#xD;    return outerNode.contains(innerNode);&#xD;  } else if (outerNode.compareDocumentPosition) {&#xD;    return !!(outerNode.compareDocumentPosition(innerNode) &amp; 16);&#xD;  } else {&#xD;    return false;&#xD;  }&#xD;}&#xD;&#xD;module.exports = containsNode;&#xD;&#xD;/***/ }),&#xD;/* 328 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Convert array-like objects to arrays.&#xD; *&#xD; * This API assumes the caller knows the contents of the data type. For less&#xD; * well defined inputs use createArrayFromMixed.&#xD; *&#xD; * @param {object|function|filelist} obj&#xD; * @return {array}&#xD; */&#xD;function toArray(obj) {&#xD;  var length = obj.length;&#xD;&#xD;  // Some browsers builtin objects can report typeof &apos;function&apos; (e.g. NodeList&#xD;  // in old versions of Safari).&#xD;  !(!Array.isArray(obj) &amp;&amp; (typeof obj === &apos;object&apos; || typeof obj === &apos;function&apos;)) ?  true ? invariant(false, &apos;toArray: Array-like object expected&apos;) : invariant(false) : void 0;&#xD;&#xD;  !(typeof length === &apos;number&apos;) ?  true ? invariant(false, &apos;toArray: Object needs a length property&apos;) : invariant(false) : void 0;&#xD;&#xD;  !(length === 0 || length - 1 in obj) ?  true ? invariant(false, &apos;toArray: Object should have keys for indices&apos;) : invariant(false) : void 0;&#xD;&#xD;  !(typeof obj.callee !== &apos;function&apos;) ?  true ? invariant(false, &apos;toArray: Object can\&apos;t be `arguments`. Use rest params &apos; + &apos;(function(...args) {}) or Array.from() instead.&apos;) : invariant(false) : void 0;&#xD;&#xD;  // Old IE doesn&apos;t give collections access to hasOwnProperty. Assume inputs&#xD;  // without method will throw during the slice call and skip straight to the&#xD;  // fallback.&#xD;  if (obj.hasOwnProperty) {&#xD;    try {&#xD;      return Array.prototype.slice.call(obj);&#xD;    } catch (e) {&#xD;      // IE &lt; 9 does not support Array#slice on collections objects&#xD;    }&#xD;  }&#xD;&#xD;  // Fall back to copying key by key. This assumes all keys have a value,&#xD;  // so will not preserve sparsely populated inputs.&#xD;  var ret = Array(length);&#xD;  for (var ii = 0; ii &lt; length; ii++) {&#xD;    ret[ii] = obj[ii];&#xD;  }&#xD;  return ret;&#xD;}&#xD;&#xD;/**&#xD; * Perform a heuristic test to determine if an object is "array-like".&#xD; *&#xD; *   A monk asked Joshu, a Zen master, "Has a dog Buddha nature?"&#xD; *   Joshu replied: "Mu."&#xD; *&#xD; * This function determines if its argument has "array nature": it returns&#xD; * true if the argument is an actual array, an `arguments&apos; object, or an&#xD; * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).&#xD; *&#xD; * It will return false for other array-like objects like Filelist.&#xD; *&#xD; * @param {*} obj&#xD; * @return {boolean}&#xD; */&#xD;function hasArrayNature(obj) {&#xD;  return (&#xD;    // not null/false&#xD;    !!obj &amp;&amp; (&#xD;    // arrays are objects, NodeLists are functions in Safari&#xD;    typeof obj == &apos;object&apos; || typeof obj == &apos;function&apos;) &amp;&amp;&#xD;    // quacks like an array&#xD;    &apos;length&apos; in obj &amp;&amp;&#xD;    // not window&#xD;    !(&apos;setInterval&apos; in obj) &amp;&amp;&#xD;    // no DOM node should be considered an array-like&#xD;    // a &apos;select&apos; element has &apos;length&apos; and &apos;item&apos; properties on IE8&#xD;    typeof obj.nodeType != &apos;number&apos; &amp;&amp; (&#xD;    // a real array&#xD;    Array.isArray(obj) ||&#xD;    // arguments&#xD;    &apos;callee&apos; in obj ||&#xD;    // HTMLCollection/NodeList&#xD;    &apos;item&apos; in obj)&#xD;  );&#xD;}&#xD;&#xD;/**&#xD; * Ensure that the argument is an array by wrapping it in an array if it is not.&#xD; * Creates a copy of the argument if it is already an array.&#xD; *&#xD; * This is mostly useful idiomatically:&#xD; *&#xD; *   var createArrayFromMixed = require(&apos;createArrayFromMixed&apos;);&#xD; *&#xD; *   function takesOneOrMoreThings(things) {&#xD; *     things = createArrayFromMixed(things);&#xD; *     ...&#xD; *   }&#xD; *&#xD; * This allows you to treat `things&apos; as an array, but accept scalars in the API.&#xD; *&#xD; * If you need to convert an array-like object, like `arguments`, into an array&#xD; * use toArray instead.&#xD; *&#xD; * @param {*} obj&#xD; * @return {array}&#xD; */&#xD;function createArrayFromMixed(obj) {&#xD;  if (!hasArrayNature(obj)) {&#xD;    return [obj];&#xD;  } else if (Array.isArray(obj)) {&#xD;    return obj.slice();&#xD;  } else {&#xD;    return toArray(obj);&#xD;  }&#xD;}&#xD;&#xD;module.exports = createArrayFromMixed;&#xD;&#xD;/***/ }),&#xD;/* 329 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;/*eslint-disable fb-www/unsafe-html*/&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var createArrayFromMixed = __webpack_require__(328);&#xD;var getMarkupWrap = __webpack_require__(330);&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Dummy container used to render all markup.&#xD; */&#xD;var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement(&apos;div&apos;) : null;&#xD;&#xD;/**&#xD; * Pattern used by `getNodeName`.&#xD; */&#xD;var nodeNamePattern = /^\s*&lt;(\w+)/;&#xD;&#xD;/**&#xD; * Extracts the `nodeName` of the first element in a string of markup.&#xD; *&#xD; * @param {string} markup String of markup.&#xD; * @return {?string} Node name of the supplied markup.&#xD; */&#xD;function getNodeName(markup) {&#xD;  var nodeNameMatch = markup.match(nodeNamePattern);&#xD;  return nodeNameMatch &amp;&amp; nodeNameMatch[1].toLowerCase();&#xD;}&#xD;&#xD;/**&#xD; * Creates an array containing the nodes rendered from the supplied markup. The&#xD; * optionally supplied `handleScript` function will be invoked once for each&#xD; * &lt;script&gt; element that is rendered. If no `handleScript` function is supplied,&#xD; * an exception is thrown if any &lt;script&gt; elements are rendered.&#xD; *&#xD; * @param {string} markup A string of valid HTML markup.&#xD; * @param {?function} handleScript Invoked once for each rendered &lt;script&gt;.&#xD; * @return {array&lt;DOMElement|DOMTextNode&gt;} An array of rendered nodes.&#xD; */&#xD;function createNodesFromMarkup(markup, handleScript) {&#xD;  var node = dummyNode;&#xD;  !!!dummyNode ?  true ? invariant(false, &apos;createNodesFromMarkup dummy not initialized&apos;) : invariant(false) : void 0;&#xD;  var nodeName = getNodeName(markup);&#xD;&#xD;  var wrap = nodeName &amp;&amp; getMarkupWrap(nodeName);&#xD;  if (wrap) {&#xD;    node.innerHTML = wrap[1] + markup + wrap[2];&#xD;&#xD;    var wrapDepth = wrap[0];&#xD;    while (wrapDepth--) {&#xD;      node = node.lastChild;&#xD;    }&#xD;  } else {&#xD;    node.innerHTML = markup;&#xD;  }&#xD;&#xD;  var scripts = node.getElementsByTagName(&apos;script&apos;);&#xD;  if (scripts.length) {&#xD;    !handleScript ?  true ? invariant(false, &apos;createNodesFromMarkup(...): Unexpected &lt;script&gt; element rendered.&apos;) : invariant(false) : void 0;&#xD;    createArrayFromMixed(scripts).forEach(handleScript);&#xD;  }&#xD;&#xD;  var nodes = Array.from(node.childNodes);&#xD;  while (node.lastChild) {&#xD;    node.removeChild(node.lastChild);&#xD;  }&#xD;  return nodes;&#xD;}&#xD;&#xD;module.exports = createNodesFromMarkup;&#xD;&#xD;/***/ }),&#xD;/* 330 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;/*eslint-disable fb-www/unsafe-html */&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Dummy container used to detect which wraps are necessary.&#xD; */&#xD;var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement(&apos;div&apos;) : null;&#xD;&#xD;/**&#xD; * Some browsers cannot use `innerHTML` to render certain elements standalone,&#xD; * so we wrap them, render the wrapped nodes, then extract the desired node.&#xD; *&#xD; * In IE8, certain elements cannot render alone, so wrap all elements (&apos;*&apos;).&#xD; */&#xD;&#xD;var shouldWrap = {};&#xD;&#xD;var selectWrap = [1, &apos;&lt;select multiple="true"&gt;&apos;, &apos;&lt;/select&gt;&apos;];&#xD;var tableWrap = [1, &apos;&lt;table&gt;&apos;, &apos;&lt;/table&gt;&apos;];&#xD;var trWrap = [3, &apos;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&apos;, &apos;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&apos;];&#xD;&#xD;var svgWrap = [1, &apos;&lt;svg xmlns="http://www.w3.org/2000/svg"&gt;&apos;, &apos;&lt;/svg&gt;&apos;];&#xD;&#xD;var markupWrap = {&#xD;  &apos;*&apos;: [1, &apos;?&lt;div&gt;&apos;, &apos;&lt;/div&gt;&apos;],&#xD;&#xD;  &apos;area&apos;: [1, &apos;&lt;map&gt;&apos;, &apos;&lt;/map&gt;&apos;],&#xD;  &apos;col&apos;: [2, &apos;&lt;table&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;colgroup&gt;&apos;, &apos;&lt;/colgroup&gt;&lt;/table&gt;&apos;],&#xD;  &apos;legend&apos;: [1, &apos;&lt;fieldset&gt;&apos;, &apos;&lt;/fieldset&gt;&apos;],&#xD;  &apos;param&apos;: [1, &apos;&lt;object&gt;&apos;, &apos;&lt;/object&gt;&apos;],&#xD;  &apos;tr&apos;: [2, &apos;&lt;table&gt;&lt;tbody&gt;&apos;, &apos;&lt;/tbody&gt;&lt;/table&gt;&apos;],&#xD;&#xD;  &apos;optgroup&apos;: selectWrap,&#xD;  &apos;option&apos;: selectWrap,&#xD;&#xD;  &apos;caption&apos;: tableWrap,&#xD;  &apos;colgroup&apos;: tableWrap,&#xD;  &apos;tbody&apos;: tableWrap,&#xD;  &apos;tfoot&apos;: tableWrap,&#xD;  &apos;thead&apos;: tableWrap,&#xD;&#xD;  &apos;td&apos;: trWrap,&#xD;  &apos;th&apos;: trWrap&#xD;};&#xD;&#xD;// Initialize the SVG elements since we know they&apos;ll always need to be wrapped&#xD;// consistently. If they are created inside a &lt;div&gt; they will be initialized in&#xD;// the wrong namespace (and will not display).&#xD;var svgElements = [&apos;circle&apos;, &apos;clipPath&apos;, &apos;defs&apos;, &apos;ellipse&apos;, &apos;g&apos;, &apos;image&apos;, &apos;line&apos;, &apos;linearGradient&apos;, &apos;mask&apos;, &apos;path&apos;, &apos;pattern&apos;, &apos;polygon&apos;, &apos;polyline&apos;, &apos;radialGradient&apos;, &apos;rect&apos;, &apos;stop&apos;, &apos;text&apos;, &apos;tspan&apos;];&#xD;svgElements.forEach(function (nodeName) {&#xD;  markupWrap[nodeName] = svgWrap;&#xD;  shouldWrap[nodeName] = true;&#xD;});&#xD;&#xD;/**&#xD; * Gets the markup wrap configuration for the supplied `nodeName`.&#xD; *&#xD; * NOTE: This lazily detects which wraps are necessary for the current browser.&#xD; *&#xD; * @param {string} nodeName Lowercase `nodeName`.&#xD; * @return {?array} Markup wrap configuration, if applicable.&#xD; */&#xD;function getMarkupWrap(nodeName) {&#xD;  !!!dummyNode ?  true ? invariant(false, &apos;Markup wrapping node not initialized&apos;) : invariant(false) : void 0;&#xD;  if (!markupWrap.hasOwnProperty(nodeName)) {&#xD;    nodeName = &apos;*&apos;;&#xD;  }&#xD;  if (!shouldWrap.hasOwnProperty(nodeName)) {&#xD;    if (nodeName === &apos;*&apos;) {&#xD;      dummyNode.innerHTML = &apos;&lt;link /&gt;&apos;;&#xD;    } else {&#xD;      dummyNode.innerHTML = &apos;&lt;&apos; + nodeName + &apos;&gt;&lt;/&apos; + nodeName + &apos;&gt;&apos;;&#xD;    }&#xD;    shouldWrap[nodeName] = !dummyNode.firstChild;&#xD;  }&#xD;  return shouldWrap[nodeName] ? markupWrap[nodeName] : null;&#xD;}&#xD;&#xD;module.exports = getMarkupWrap;&#xD;&#xD;/***/ }),&#xD;/* 331 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Gets the scroll position of the supplied element or window.&#xD; *&#xD; * The return values are unbounded, unlike `getScrollPosition`. This means they&#xD; * may be negative or exceed the element boundaries (which is possible using&#xD; * inertial scrolling).&#xD; *&#xD; * @param {DOMWindow|DOMElement} scrollable&#xD; * @return {object} Map with `x` and `y` keys.&#xD; */&#xD;&#xD;function getUnboundedScrollPosition(scrollable) {&#xD;  if (scrollable === window) {&#xD;    return {&#xD;      x: window.pageXOffset || document.documentElement.scrollLeft,&#xD;      y: window.pageYOffset || document.documentElement.scrollTop&#xD;    };&#xD;  }&#xD;  return {&#xD;    x: scrollable.scrollLeft,&#xD;    y: scrollable.scrollTop&#xD;  };&#xD;}&#xD;&#xD;module.exports = getUnboundedScrollPosition;&#xD;&#xD;/***/ }),&#xD;/* 332 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var _uppercasePattern = /([A-Z])/g;&#xD;&#xD;/**&#xD; * Hyphenates a camelcased string, for example:&#xD; *&#xD; *   &gt; hyphenate(&apos;backgroundColor&apos;)&#xD; *   &lt; "background-color"&#xD; *&#xD; * For CSS style names, use `hyphenateStyleName` instead which works properly&#xD; * with all vendor prefixes, including `ms`.&#xD; *&#xD; * @param {string} string&#xD; * @return {string}&#xD; */&#xD;function hyphenate(string) {&#xD;  return string.replace(_uppercasePattern, &apos;-$1&apos;).toLowerCase();&#xD;}&#xD;&#xD;module.exports = hyphenate;&#xD;&#xD;/***/ }),&#xD;/* 333 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;&#xD;&#xD;var hyphenate = __webpack_require__(332);&#xD;&#xD;var msPattern = /^ms-/;&#xD;&#xD;/**&#xD; * Hyphenates a camelcased CSS property name, for example:&#xD; *&#xD; *   &gt; hyphenateStyleName(&apos;backgroundColor&apos;)&#xD; *   &lt; "background-color"&#xD; *   &gt; hyphenateStyleName(&apos;MozTransition&apos;)&#xD; *   &lt; "-moz-transition"&#xD; *   &gt; hyphenateStyleName(&apos;msTransition&apos;)&#xD; *   &lt; "-ms-transition"&#xD; *&#xD; * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix&#xD; * is converted to `-ms-`.&#xD; *&#xD; * @param {string} string&#xD; * @return {string}&#xD; */&#xD;function hyphenateStyleName(string) {&#xD;  return hyphenate(string).replace(msPattern, &apos;-ms-&apos;);&#xD;}&#xD;&#xD;module.exports = hyphenateStyleName;&#xD;&#xD;/***/ }),&#xD;/* 334 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;/**&#xD; * @param {*} object The object to check.&#xD; * @return {boolean} Whether or not the object is a DOM node.&#xD; */&#xD;function isNode(object) {&#xD;  return !!(object &amp;&amp; (typeof Node === &apos;function&apos; ? object instanceof Node : typeof object === &apos;object&apos; &amp;&amp; typeof object.nodeType === &apos;number&apos; &amp;&amp; typeof object.nodeName === &apos;string&apos;));&#xD;}&#xD;&#xD;module.exports = isNode;&#xD;&#xD;/***/ }),&#xD;/* 335 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var isNode = __webpack_require__(334);&#xD;&#xD;/**&#xD; * @param {*} object The object to check.&#xD; * @return {boolean} Whether or not the object is a DOM text node.&#xD; */&#xD;function isTextNode(object) {&#xD;  return isNode(object) &amp;&amp; object.nodeType == 3;&#xD;}&#xD;&#xD;module.exports = isTextNode;&#xD;&#xD;/***/ }),&#xD;/* 336 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; * @typechecks static-only&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Memoizes the return value of a function that accepts one string argument.&#xD; */&#xD;&#xD;function memoizeStringOnly(callback) {&#xD;  var cache = {};&#xD;  return function (string) {&#xD;    if (!cache.hasOwnProperty(string)) {&#xD;      cache[string] = callback.call(this, string);&#xD;    }&#xD;    return cache[string];&#xD;  };&#xD;}&#xD;&#xD;module.exports = memoizeStringOnly;&#xD;&#xD;/***/ }),&#xD;/* 337 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var performance;&#xD;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  performance = window.performance || window.msPerformance || window.webkitPerformance;&#xD;}&#xD;&#xD;module.exports = performance || {};&#xD;&#xD;/***/ }),&#xD;/* 338 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;&#xD;&#xD;/**&#xD; * Copyright (c) 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * @typechecks&#xD; */&#xD;&#xD;var performance = __webpack_require__(337);&#xD;&#xD;var performanceNow;&#xD;&#xD;/**&#xD; * Detect if we can use `window.performance.now()` and gracefully fallback to&#xD; * `Date.now()` if it doesn&apos;t exist. We need to support Firefox &lt; 15 for now&#xD; * because of Facebook&apos;s testing infrastructure.&#xD; */&#xD;if (performance.now) {&#xD;  performanceNow = function performanceNow() {&#xD;    return performance.now();&#xD;  };&#xD;} else {&#xD;  performanceNow = function performanceNow() {&#xD;    return Date.now();&#xD;  };&#xD;}&#xD;&#xD;module.exports = performanceNow;&#xD;&#xD;/***/ }),&#xD;/* 339 */,&#xD;/* 340 */,&#xD;/* 341 */,&#xD;/* 342 */,&#xD;/* 343 */,&#xD;/* 344 */,&#xD;/* 345 */,&#xD;/* 346 */,&#xD;/* 347 */,&#xD;/* 348 */,&#xD;/* 349 */,&#xD;/* 350 */,&#xD;/* 351 */,&#xD;/* 352 */,&#xD;/* 353 */,&#xD;/* 354 */,&#xD;/* 355 */,&#xD;/* 356 */,&#xD;/* 357 */,&#xD;/* 358 */,&#xD;/* 359 */,&#xD;/* 360 */,&#xD;/* 361 */,&#xD;/* 362 */,&#xD;/* 363 */,&#xD;/* 364 */,&#xD;/* 365 */,&#xD;/* 366 */,&#xD;/* 367 */,&#xD;/* 368 */,&#xD;/* 369 */,&#xD;/* 370 */,&#xD;/* 371 */,&#xD;/* 372 */,&#xD;/* 373 */,&#xD;/* 374 */,&#xD;/* 375 */,&#xD;/* 376 */,&#xD;/* 377 */,&#xD;/* 378 */,&#xD;/* 379 */,&#xD;/* 380 */,&#xD;/* 381 */,&#xD;/* 382 */,&#xD;/* 383 */,&#xD;/* 384 */,&#xD;/* 385 */,&#xD;/* 386 */,&#xD;/* 387 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; */&#xD;&#xD;&#xD;&#xD;if (true) {&#xD;  var invariant = __webpack_require__(3);&#xD;  var warning = __webpack_require__(4);&#xD;  var ReactPropTypesSecret = __webpack_require__(149);&#xD;  var loggedTypeFailures = {};&#xD;}&#xD;&#xD;/**&#xD; * Assert that the values match with the type specs.&#xD; * Error messages are memorized and will only be shown once.&#xD; *&#xD; * @param {object} typeSpecs Map of name to a ReactPropType&#xD; * @param {object} values Runtime values that need to be type-checked&#xD; * @param {string} location e.g. "prop", "context", "child context"&#xD; * @param {string} componentName Name of the component for error messages.&#xD; * @param {?Function} getStack Returns the component stack.&#xD; * @private&#xD; */&#xD;function checkPropTypes(typeSpecs, values, location, componentName, getStack) {&#xD;  if (true) {&#xD;    for (var typeSpecName in typeSpecs) {&#xD;      if (typeSpecs.hasOwnProperty(typeSpecName)) {&#xD;        var error;&#xD;        // Prop type validation may throw. In case they do, we don&apos;t want to&#xD;        // fail the render phase where it didn&apos;t fail before. So we log it.&#xD;        // After these have been cleaned up, we&apos;ll let them throw.&#xD;        try {&#xD;          // This is intentionally an invariant that gets caught. It&apos;s the same&#xD;          // behavior as without this statement except with a better message.&#xD;          invariant(typeof typeSpecs[typeSpecName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, componentName || &apos;React class&apos;, location, typeSpecName);&#xD;          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);&#xD;        } catch (ex) {&#xD;          error = ex;&#xD;        }&#xD;        warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, location, typeSpecName, typeof error);&#xD;        if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {&#xD;          // Only monitor this failure once because there tends to be a lot of the&#xD;          // same error.&#xD;          loggedTypeFailures[error.message] = true;&#xD;&#xD;          var stack = getStack ? getStack() : &apos;&apos;;&#xD;&#xD;          warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, stack != null ? stack : &apos;&apos;);&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;module.exports = checkPropTypes;&#xD;&#xD;&#xD;/***/ }),&#xD;/* 388 */,&#xD;/* 389 */,&#xD;/* 390 */,&#xD;/* 391 */,&#xD;/* 392 */,&#xD;/* 393 */,&#xD;/* 394 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ARIADOMPropertyConfig = {&#xD;  Properties: {&#xD;    // Global States and Properties&#xD;    &apos;aria-current&apos;: 0, // state&#xD;    &apos;aria-details&apos;: 0,&#xD;    &apos;aria-disabled&apos;: 0, // state&#xD;    &apos;aria-hidden&apos;: 0, // state&#xD;    &apos;aria-invalid&apos;: 0, // state&#xD;    &apos;aria-keyshortcuts&apos;: 0,&#xD;    &apos;aria-label&apos;: 0,&#xD;    &apos;aria-roledescription&apos;: 0,&#xD;    // Widget Attributes&#xD;    &apos;aria-autocomplete&apos;: 0,&#xD;    &apos;aria-checked&apos;: 0,&#xD;    &apos;aria-expanded&apos;: 0,&#xD;    &apos;aria-haspopup&apos;: 0,&#xD;    &apos;aria-level&apos;: 0,&#xD;    &apos;aria-modal&apos;: 0,&#xD;    &apos;aria-multiline&apos;: 0,&#xD;    &apos;aria-multiselectable&apos;: 0,&#xD;    &apos;aria-orientation&apos;: 0,&#xD;    &apos;aria-placeholder&apos;: 0,&#xD;    &apos;aria-pressed&apos;: 0,&#xD;    &apos;aria-readonly&apos;: 0,&#xD;    &apos;aria-required&apos;: 0,&#xD;    &apos;aria-selected&apos;: 0,&#xD;    &apos;aria-sort&apos;: 0,&#xD;    &apos;aria-valuemax&apos;: 0,&#xD;    &apos;aria-valuemin&apos;: 0,&#xD;    &apos;aria-valuenow&apos;: 0,&#xD;    &apos;aria-valuetext&apos;: 0,&#xD;    // Live Region Attributes&#xD;    &apos;aria-atomic&apos;: 0,&#xD;    &apos;aria-busy&apos;: 0,&#xD;    &apos;aria-live&apos;: 0,&#xD;    &apos;aria-relevant&apos;: 0,&#xD;    // Drag-and-Drop Attributes&#xD;    &apos;aria-dropeffect&apos;: 0,&#xD;    &apos;aria-grabbed&apos;: 0,&#xD;    // Relationship Attributes&#xD;    &apos;aria-activedescendant&apos;: 0,&#xD;    &apos;aria-colcount&apos;: 0,&#xD;    &apos;aria-colindex&apos;: 0,&#xD;    &apos;aria-colspan&apos;: 0,&#xD;    &apos;aria-controls&apos;: 0,&#xD;    &apos;aria-describedby&apos;: 0,&#xD;    &apos;aria-errormessage&apos;: 0,&#xD;    &apos;aria-flowto&apos;: 0,&#xD;    &apos;aria-labelledby&apos;: 0,&#xD;    &apos;aria-owns&apos;: 0,&#xD;    &apos;aria-posinset&apos;: 0,&#xD;    &apos;aria-rowcount&apos;: 0,&#xD;    &apos;aria-rowindex&apos;: 0,&#xD;    &apos;aria-rowspan&apos;: 0,&#xD;    &apos;aria-setsize&apos;: 0&#xD;  },&#xD;  DOMAttributeNames: {},&#xD;  DOMPropertyNames: {}&#xD;};&#xD;&#xD;module.exports = ARIADOMPropertyConfig;&#xD;&#xD;/***/ }),&#xD;/* 395 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;&#xD;var focusNode = __webpack_require__(134);&#xD;&#xD;var AutoFocusUtils = {&#xD;  focusDOMComponent: function () {&#xD;    focusNode(ReactDOMComponentTree.getNodeFromInstance(this));&#xD;  }&#xD;};&#xD;&#xD;module.exports = AutoFocusUtils;&#xD;&#xD;/***/ }),&#xD;/* 396 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPropagators = __webpack_require__(51);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var FallbackCompositionState = __webpack_require__(402);&#xD;var SyntheticCompositionEvent = __webpack_require__(445);&#xD;var SyntheticInputEvent = __webpack_require__(448);&#xD;&#xD;var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space&#xD;var START_KEYCODE = 229;&#xD;&#xD;var canUseCompositionEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;CompositionEvent&apos; in window;&#xD;&#xD;var documentMode = null;&#xD;if (ExecutionEnvironment.canUseDOM &amp;&amp; &apos;documentMode&apos; in document) {&#xD;  documentMode = document.documentMode;&#xD;}&#xD;&#xD;// Webkit offers a very useful `textInput` event that can be used to&#xD;// directly represent `beforeInput`. The IE `textinput` event is not as&#xD;// useful, so we don&apos;t use it.&#xD;var canUseTextInputEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;TextEvent&apos; in window &amp;&amp; !documentMode &amp;&amp; !isPresto();&#xD;&#xD;// In IE9+, we have access to composition events, but the data supplied&#xD;// by the native compositionend event may be incorrect. Japanese ideographic&#xD;// spaces, for instance (\u3000) are not recorded correctly.&#xD;var useFallbackCompositionData = ExecutionEnvironment.canUseDOM &amp;&amp; (!canUseCompositionEvent || documentMode &amp;&amp; documentMode &gt; 8 &amp;&amp; documentMode &lt;= 11);&#xD;&#xD;/**&#xD; * Opera &lt;= 12 includes TextEvent in window, but does not fire&#xD; * text input events. Rely on keypress instead.&#xD; */&#xD;function isPresto() {&#xD;  var opera = window.opera;&#xD;  return typeof opera === &apos;object&apos; &amp;&amp; typeof opera.version === &apos;function&apos; &amp;&amp; parseInt(opera.version(), 10) &lt;= 12;&#xD;}&#xD;&#xD;var SPACEBAR_CODE = 32;&#xD;var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);&#xD;&#xD;// Events and their corresponding property names.&#xD;var eventTypes = {&#xD;  beforeInput: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onBeforeInput&apos;,&#xD;      captured: &apos;onBeforeInputCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topCompositionEnd&apos;, &apos;topKeyPress&apos;, &apos;topTextInput&apos;, &apos;topPaste&apos;]&#xD;  },&#xD;  compositionEnd: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onCompositionEnd&apos;,&#xD;      captured: &apos;onCompositionEndCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topBlur&apos;, &apos;topCompositionEnd&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]&#xD;  },&#xD;  compositionStart: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onCompositionStart&apos;,&#xD;      captured: &apos;onCompositionStartCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topBlur&apos;, &apos;topCompositionStart&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]&#xD;  },&#xD;  compositionUpdate: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onCompositionUpdate&apos;,&#xD;      captured: &apos;onCompositionUpdateCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topBlur&apos;, &apos;topCompositionUpdate&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]&#xD;  }&#xD;};&#xD;&#xD;// Track whether we&apos;ve ever handled a keypress on the space key.&#xD;var hasSpaceKeypress = false;&#xD;&#xD;/**&#xD; * Return whether a native keypress event is assumed to be a command.&#xD; * This is required because Firefox fires `keypress` events for key commands&#xD; * (cut, copy, select-all, etc.) even though no character is inserted.&#xD; */&#xD;function isKeypressCommand(nativeEvent) {&#xD;  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &amp;&amp;&#xD;  // ctrlKey &amp;&amp; altKey is equivalent to AltGr, and is not a command.&#xD;  !(nativeEvent.ctrlKey &amp;&amp; nativeEvent.altKey);&#xD;}&#xD;&#xD;/**&#xD; * Translate native top level events into event types.&#xD; *&#xD; * @param {string} topLevelType&#xD; * @return {object}&#xD; */&#xD;function getCompositionEventType(topLevelType) {&#xD;  switch (topLevelType) {&#xD;    case &apos;topCompositionStart&apos;:&#xD;      return eventTypes.compositionStart;&#xD;    case &apos;topCompositionEnd&apos;:&#xD;      return eventTypes.compositionEnd;&#xD;    case &apos;topCompositionUpdate&apos;:&#xD;      return eventTypes.compositionUpdate;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Does our fallback best-guess model think this event signifies that&#xD; * composition has begun?&#xD; *&#xD; * @param {string} topLevelType&#xD; * @param {object} nativeEvent&#xD; * @return {boolean}&#xD; */&#xD;function isFallbackCompositionStart(topLevelType, nativeEvent) {&#xD;  return topLevelType === &apos;topKeyDown&apos; &amp;&amp; nativeEvent.keyCode === START_KEYCODE;&#xD;}&#xD;&#xD;/**&#xD; * Does our fallback mode think that this event is the end of composition?&#xD; *&#xD; * @param {string} topLevelType&#xD; * @param {object} nativeEvent&#xD; * @return {boolean}&#xD; */&#xD;function isFallbackCompositionEnd(topLevelType, nativeEvent) {&#xD;  switch (topLevelType) {&#xD;    case &apos;topKeyUp&apos;:&#xD;      // Command keys insert or clear IME input.&#xD;      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;&#xD;    case &apos;topKeyDown&apos;:&#xD;      // Expect IME keyCode on each keydown. If we get any other&#xD;      // code we must have exited earlier.&#xD;      return nativeEvent.keyCode !== START_KEYCODE;&#xD;    case &apos;topKeyPress&apos;:&#xD;    case &apos;topMouseDown&apos;:&#xD;    case &apos;topBlur&apos;:&#xD;      // Events are not possible without cancelling IME.&#xD;      return true;&#xD;    default:&#xD;      return false;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Google Input Tools provides composition data via a CustomEvent,&#xD; * with the `data` property populated in the `detail` object. If this&#xD; * is available on the event object, use it. If not, this is a plain&#xD; * composition event and we have nothing special to extract.&#xD; *&#xD; * @param {object} nativeEvent&#xD; * @return {?string}&#xD; */&#xD;function getDataFromCustomEvent(nativeEvent) {&#xD;  var detail = nativeEvent.detail;&#xD;  if (typeof detail === &apos;object&apos; &amp;&amp; &apos;data&apos; in detail) {&#xD;    return detail.data;&#xD;  }&#xD;  return null;&#xD;}&#xD;&#xD;// Track the current IME composition fallback object, if any.&#xD;var currentComposition = null;&#xD;&#xD;/**&#xD; * @return {?object} A SyntheticCompositionEvent.&#xD; */&#xD;function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;  var eventType;&#xD;  var fallbackData;&#xD;&#xD;  if (canUseCompositionEvent) {&#xD;    eventType = getCompositionEventType(topLevelType);&#xD;  } else if (!currentComposition) {&#xD;    if (isFallbackCompositionStart(topLevelType, nativeEvent)) {&#xD;      eventType = eventTypes.compositionStart;&#xD;    }&#xD;  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {&#xD;    eventType = eventTypes.compositionEnd;&#xD;  }&#xD;&#xD;  if (!eventType) {&#xD;    return null;&#xD;  }&#xD;&#xD;  if (useFallbackCompositionData) {&#xD;    // The current composition is stored statically and must not be&#xD;    // overwritten while composition continues.&#xD;    if (!currentComposition &amp;&amp; eventType === eventTypes.compositionStart) {&#xD;      currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);&#xD;    } else if (eventType === eventTypes.compositionEnd) {&#xD;      if (currentComposition) {&#xD;        fallbackData = currentComposition.getData();&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;  var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);&#xD;&#xD;  if (fallbackData) {&#xD;    // Inject data generated from fallback path into the synthetic event.&#xD;    // This matches the property of native CompositionEventInterface.&#xD;    event.data = fallbackData;&#xD;  } else {&#xD;    var customData = getDataFromCustomEvent(nativeEvent);&#xD;    if (customData !== null) {&#xD;      event.data = customData;&#xD;    }&#xD;  }&#xD;&#xD;  EventPropagators.accumulateTwoPhaseDispatches(event);&#xD;  return event;&#xD;}&#xD;&#xD;/**&#xD; * @param {string} topLevelType Record from `EventConstants`.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @return {?string} The string corresponding to this `beforeInput` event.&#xD; */&#xD;function getNativeBeforeInputChars(topLevelType, nativeEvent) {&#xD;  switch (topLevelType) {&#xD;    case &apos;topCompositionEnd&apos;:&#xD;      return getDataFromCustomEvent(nativeEvent);&#xD;    case &apos;topKeyPress&apos;:&#xD;      /**&#xD;       * If native `textInput` events are available, our goal is to make&#xD;       * use of them. However, there is a special case: the spacebar key.&#xD;       * In Webkit, preventing default on a spacebar `textInput` event&#xD;       * cancels character insertion, but it *also* causes the browser&#xD;       * to fall back to its default spacebar behavior of scrolling the&#xD;       * page.&#xD;       *&#xD;       * Tracking at:&#xD;       * https://code.google.com/p/chromium/issues/detail?id=355103&#xD;       *&#xD;       * To avoid this issue, use the keypress event as if no `textInput`&#xD;       * event is available.&#xD;       */&#xD;      var which = nativeEvent.which;&#xD;      if (which !== SPACEBAR_CODE) {&#xD;        return null;&#xD;      }&#xD;&#xD;      hasSpaceKeypress = true;&#xD;      return SPACEBAR_CHAR;&#xD;&#xD;    case &apos;topTextInput&apos;:&#xD;      // Record the characters to be added to the DOM.&#xD;      var chars = nativeEvent.data;&#xD;&#xD;      // If it&apos;s a spacebar character, assume that we have already handled&#xD;      // it at the keypress level and bail immediately. Android Chrome&#xD;      // doesn&apos;t give us keycodes, so we need to blacklist it.&#xD;      if (chars === SPACEBAR_CHAR &amp;&amp; hasSpaceKeypress) {&#xD;        return null;&#xD;      }&#xD;&#xD;      return chars;&#xD;&#xD;    default:&#xD;      // For other native event types, do nothing.&#xD;      return null;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * For browsers that do not provide the `textInput` event, extract the&#xD; * appropriate string to use for SyntheticInputEvent.&#xD; *&#xD; * @param {string} topLevelType Record from `EventConstants`.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @return {?string} The fallback string for this `beforeInput` event.&#xD; */&#xD;function getFallbackBeforeInputChars(topLevelType, nativeEvent) {&#xD;  // If we are currently composing (IME) and using a fallback to do so,&#xD;  // try to extract the composed characters from the fallback object.&#xD;  // If composition event is available, we extract a string only at&#xD;  // compositionevent, otherwise extract it at fallback events.&#xD;  if (currentComposition) {&#xD;    if (topLevelType === &apos;topCompositionEnd&apos; || !canUseCompositionEvent &amp;&amp; isFallbackCompositionEnd(topLevelType, nativeEvent)) {&#xD;      var chars = currentComposition.getData();&#xD;      FallbackCompositionState.release(currentComposition);&#xD;      currentComposition = null;&#xD;      return chars;&#xD;    }&#xD;    return null;&#xD;  }&#xD;&#xD;  switch (topLevelType) {&#xD;    case &apos;topPaste&apos;:&#xD;      // If a paste event occurs after a keypress, throw out the input&#xD;      // chars. Paste events should not lead to BeforeInput events.&#xD;      return null;&#xD;    case &apos;topKeyPress&apos;:&#xD;      /**&#xD;       * As of v27, Firefox may fire keypress events even when no character&#xD;       * will be inserted. A few possibilities:&#xD;       *&#xD;       * - `which` is `0`. Arrow keys, Esc key, etc.&#xD;       *&#xD;       * - `which` is the pressed key code, but no char is available.&#xD;       *   Ex: &apos;AltGr + d` in Polish. There is no modified character for&#xD;       *   this key combination and no character is inserted into the&#xD;       *   document, but FF fires the keypress for char code `100` anyway.&#xD;       *   No `input` event will occur.&#xD;       *&#xD;       * - `which` is the pressed key code, but a command combination is&#xD;       *   being used. Ex: `Cmd+C`. No character is inserted, and no&#xD;       *   `input` event will occur.&#xD;       */&#xD;      if (nativeEvent.which &amp;&amp; !isKeypressCommand(nativeEvent)) {&#xD;        return String.fromCharCode(nativeEvent.which);&#xD;      }&#xD;      return null;&#xD;    case &apos;topCompositionEnd&apos;:&#xD;      return useFallbackCompositionData ? null : nativeEvent.data;&#xD;    default:&#xD;      return null;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Extract a SyntheticInputEvent for `beforeInput`, based on either native&#xD; * `textInput` or fallback behavior.&#xD; *&#xD; * @return {?object} A SyntheticInputEvent.&#xD; */&#xD;function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;  var chars;&#xD;&#xD;  if (canUseTextInputEvent) {&#xD;    chars = getNativeBeforeInputChars(topLevelType, nativeEvent);&#xD;  } else {&#xD;    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);&#xD;  }&#xD;&#xD;  // If no characters are being inserted, no BeforeInput event should&#xD;  // be fired.&#xD;  if (!chars) {&#xD;    return null;&#xD;  }&#xD;&#xD;  var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);&#xD;&#xD;  event.data = chars;&#xD;  EventPropagators.accumulateTwoPhaseDispatches(event);&#xD;  return event;&#xD;}&#xD;&#xD;/**&#xD; * Create an `onBeforeInput` event to match&#xD; * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.&#xD; *&#xD; * This event plugin is based on the native `textInput` event&#xD; * available in Chrome, Safari, Opera, and IE. This event fires after&#xD; * `onKeyPress` and `onCompositionEnd`, but before `onInput`.&#xD; *&#xD; * `beforeInput` is spec&apos;d but not implemented in any browsers, and&#xD; * the `input` event does not provide any useful information about what has&#xD; * actually been added, contrary to the spec. Thus, `textInput` is the best&#xD; * available event to identify the characters that have actually been inserted&#xD; * into the target node.&#xD; *&#xD; * This plugin is also responsible for emitting `composition` events, thus&#xD; * allowing us to share composition fallback code for both `beforeInput` and&#xD; * `composition` event types.&#xD; */&#xD;var BeforeInputEventPlugin = {&#xD;&#xD;  eventTypes: eventTypes,&#xD;&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];&#xD;  }&#xD;};&#xD;&#xD;module.exports = BeforeInputEventPlugin;&#xD;&#xD;/***/ }),&#xD;/* 397 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var CSSProperty = __webpack_require__(154);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;&#xD;var camelizeStyleName = __webpack_require__(326);&#xD;var dangerousStyleValue = __webpack_require__(455);&#xD;var hyphenateStyleName = __webpack_require__(333);&#xD;var memoizeStringOnly = __webpack_require__(336);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var processStyleName = memoizeStringOnly(function (styleName) {&#xD;  return hyphenateStyleName(styleName);&#xD;});&#xD;&#xD;var hasShorthandPropertyBug = false;&#xD;var styleFloatAccessor = &apos;cssFloat&apos;;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  var tempStyle = document.createElement(&apos;div&apos;).style;&#xD;  try {&#xD;    // IE8 throws "Invalid argument." if resetting shorthand style properties.&#xD;    tempStyle.font = &apos;&apos;;&#xD;  } catch (e) {&#xD;    hasShorthandPropertyBug = true;&#xD;  }&#xD;  // IE8 only supports accessing cssFloat (standard) as styleFloat&#xD;  if (document.documentElement.style.cssFloat === undefined) {&#xD;    styleFloatAccessor = &apos;styleFloat&apos;;&#xD;  }&#xD;}&#xD;&#xD;if (true) {&#xD;  // &apos;msTransform&apos; is correct, but the other prefixes should be capitalized&#xD;  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;&#xD;&#xD;  // style values shouldn&apos;t contain a semicolon&#xD;  var badStyleValueWithSemicolonPattern = /;\s*$/;&#xD;&#xD;  var warnedStyleNames = {};&#xD;  var warnedStyleValues = {};&#xD;  var warnedForNaNValue = false;&#xD;&#xD;  var warnHyphenatedStyleName = function (name, owner) {&#xD;    if (warnedStyleNames.hasOwnProperty(name) &amp;&amp; warnedStyleNames[name]) {&#xD;      return;&#xD;    }&#xD;&#xD;    warnedStyleNames[name] = true;&#xD;     true ? warning(false, &apos;Unsupported style property %s. Did you mean %s?%s&apos;, name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;&#xD;  };&#xD;&#xD;  var warnBadVendoredStyleName = function (name, owner) {&#xD;    if (warnedStyleNames.hasOwnProperty(name) &amp;&amp; warnedStyleNames[name]) {&#xD;      return;&#xD;    }&#xD;&#xD;    warnedStyleNames[name] = true;&#xD;     true ? warning(false, &apos;Unsupported vendor-prefixed style property %s. Did you mean %s?%s&apos;, name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;&#xD;  };&#xD;&#xD;  var warnStyleValueWithSemicolon = function (name, value, owner) {&#xD;    if (warnedStyleValues.hasOwnProperty(value) &amp;&amp; warnedStyleValues[value]) {&#xD;      return;&#xD;    }&#xD;&#xD;    warnedStyleValues[value] = true;&#xD;     true ? warning(false, &apos;Style property values shouldn\&apos;t contain a semicolon.%s &apos; + &apos;Try "%s: %s" instead.&apos;, checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, &apos;&apos;)) : void 0;&#xD;  };&#xD;&#xD;  var warnStyleValueIsNaN = function (name, value, owner) {&#xD;    if (warnedForNaNValue) {&#xD;      return;&#xD;    }&#xD;&#xD;    warnedForNaNValue = true;&#xD;     true ? warning(false, &apos;`NaN` is an invalid value for the `%s` css style property.%s&apos;, name, checkRenderMessage(owner)) : void 0;&#xD;  };&#xD;&#xD;  var checkRenderMessage = function (owner) {&#xD;    if (owner) {&#xD;      var name = owner.getName();&#xD;      if (name) {&#xD;        return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;      }&#xD;    }&#xD;    return &apos;&apos;;&#xD;  };&#xD;&#xD;  /**&#xD;   * @param {string} name&#xD;   * @param {*} value&#xD;   * @param {ReactDOMComponent} component&#xD;   */&#xD;  var warnValidStyle = function (name, value, component) {&#xD;    var owner;&#xD;    if (component) {&#xD;      owner = component._currentElement._owner;&#xD;    }&#xD;    if (name.indexOf(&apos;-&apos;) &gt; -1) {&#xD;      warnHyphenatedStyleName(name, owner);&#xD;    } else if (badVendoredStyleNamePattern.test(name)) {&#xD;      warnBadVendoredStyleName(name, owner);&#xD;    } else if (badStyleValueWithSemicolonPattern.test(value)) {&#xD;      warnStyleValueWithSemicolon(name, value, owner);&#xD;    }&#xD;&#xD;    if (typeof value === &apos;number&apos; &amp;&amp; isNaN(value)) {&#xD;      warnStyleValueIsNaN(name, value, owner);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Operations for dealing with CSS properties.&#xD; */&#xD;var CSSPropertyOperations = {&#xD;&#xD;  /**&#xD;   * Serializes a mapping of style properties for use as inline styles:&#xD;   *&#xD;   *   &gt; createMarkupForStyles({width: &apos;200px&apos;, height: 0})&#xD;   *   "width:200px;height:0;"&#xD;   *&#xD;   * Undefined values are ignored so that declarative programming is easier.&#xD;   * The result should be HTML-escaped before insertion into the DOM.&#xD;   *&#xD;   * @param {object} styles&#xD;   * @param {ReactDOMComponent} component&#xD;   * @return {?string}&#xD;   */&#xD;  createMarkupForStyles: function (styles, component) {&#xD;    var serialized = &apos;&apos;;&#xD;    for (var styleName in styles) {&#xD;      if (!styles.hasOwnProperty(styleName)) {&#xD;        continue;&#xD;      }&#xD;      var styleValue = styles[styleName];&#xD;      if (true) {&#xD;        warnValidStyle(styleName, styleValue, component);&#xD;      }&#xD;      if (styleValue != null) {&#xD;        serialized += processStyleName(styleName) + &apos;:&apos;;&#xD;        serialized += dangerousStyleValue(styleName, styleValue, component) + &apos;;&apos;;&#xD;      }&#xD;    }&#xD;    return serialized || null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Sets the value for multiple styles on a node.  If a value is specified as&#xD;   * &apos;&apos; (empty string), the corresponding style property will be unset.&#xD;   *&#xD;   * @param {DOMElement} node&#xD;   * @param {object} styles&#xD;   * @param {ReactDOMComponent} component&#xD;   */&#xD;  setValueForStyles: function (node, styles, component) {&#xD;    if (true) {&#xD;      ReactInstrumentation.debugTool.onHostOperation({&#xD;        instanceID: component._debugID,&#xD;        type: &apos;update styles&apos;,&#xD;        payload: styles&#xD;      });&#xD;    }&#xD;&#xD;    var style = node.style;&#xD;    for (var styleName in styles) {&#xD;      if (!styles.hasOwnProperty(styleName)) {&#xD;        continue;&#xD;      }&#xD;      if (true) {&#xD;        warnValidStyle(styleName, styles[styleName], component);&#xD;      }&#xD;      var styleValue = dangerousStyleValue(styleName, styles[styleName], component);&#xD;      if (styleName === &apos;float&apos; || styleName === &apos;cssFloat&apos;) {&#xD;        styleName = styleFloatAccessor;&#xD;      }&#xD;      if (styleValue) {&#xD;        style[styleName] = styleValue;&#xD;      } else {&#xD;        var expansion = hasShorthandPropertyBug &amp;&amp; CSSProperty.shorthandPropertyExpansions[styleName];&#xD;        if (expansion) {&#xD;          // Shorthand property that IE8 won&apos;t like unsetting, so unset each&#xD;          // component to placate it&#xD;          for (var individualStyleName in expansion) {&#xD;            style[individualStyleName] = &apos;&apos;;&#xD;          }&#xD;        } else {&#xD;          style[styleName] = &apos;&apos;;&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = CSSPropertyOperations;&#xD;&#xD;/***/ }),&#xD;/* 398 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPluginHub = __webpack_require__(50);&#xD;var EventPropagators = __webpack_require__(51);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;var getEventTarget = __webpack_require__(96);&#xD;var isEventSupported = __webpack_require__(97);&#xD;var isTextInputElement = __webpack_require__(172);&#xD;&#xD;var eventTypes = {&#xD;  change: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onChange&apos;,&#xD;      captured: &apos;onChangeCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topBlur&apos;, &apos;topChange&apos;, &apos;topClick&apos;, &apos;topFocus&apos;, &apos;topInput&apos;, &apos;topKeyDown&apos;, &apos;topKeyUp&apos;, &apos;topSelectionChange&apos;]&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * For IE shims&#xD; */&#xD;var activeElement = null;&#xD;var activeElementInst = null;&#xD;var activeElementValue = null;&#xD;var activeElementValueProp = null;&#xD;&#xD;/**&#xD; * SECTION: handle `change` event&#xD; */&#xD;function shouldUseChangeEvent(elem) {&#xD;  var nodeName = elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();&#xD;  return nodeName === &apos;select&apos; || nodeName === &apos;input&apos; &amp;&amp; elem.type === &apos;file&apos;;&#xD;}&#xD;&#xD;var doesChangeEventBubble = false;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  // See `handleChange` comment below&#xD;  doesChangeEventBubble = isEventSupported(&apos;change&apos;) &amp;&amp; (!document.documentMode || document.documentMode &gt; 8);&#xD;}&#xD;&#xD;function manualDispatchChangeEvent(nativeEvent) {&#xD;  var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));&#xD;  EventPropagators.accumulateTwoPhaseDispatches(event);&#xD;&#xD;  // If change and propertychange bubbled, we&apos;d just bind to it like all the&#xD;  // other events and have it go through ReactBrowserEventEmitter. Since it&#xD;  // doesn&apos;t, we manually listen for the events and so we have to enqueue and&#xD;  // process the abstract event manually.&#xD;  //&#xD;  // Batching is necessary here in order to ensure that all event handlers run&#xD;  // before the next rerender (including event handlers attached to ancestor&#xD;  // elements instead of directly on the input). Without this, controlled&#xD;  // components don&apos;t work properly in conjunction with event bubbling because&#xD;  // the component is rerendered and the value reverted before all the event&#xD;  // handlers can run. See https://github.com/facebook/react/issues/708.&#xD;  ReactUpdates.batchedUpdates(runEventInBatch, event);&#xD;}&#xD;&#xD;function runEventInBatch(event) {&#xD;  EventPluginHub.enqueueEvents(event);&#xD;  EventPluginHub.processEventQueue(false);&#xD;}&#xD;&#xD;function startWatchingForChangeEventIE8(target, targetInst) {&#xD;  activeElement = target;&#xD;  activeElementInst = targetInst;&#xD;  activeElement.attachEvent(&apos;onchange&apos;, manualDispatchChangeEvent);&#xD;}&#xD;&#xD;function stopWatchingForChangeEventIE8() {&#xD;  if (!activeElement) {&#xD;    return;&#xD;  }&#xD;  activeElement.detachEvent(&apos;onchange&apos;, manualDispatchChangeEvent);&#xD;  activeElement = null;&#xD;  activeElementInst = null;&#xD;}&#xD;&#xD;function getTargetInstForChangeEvent(topLevelType, targetInst) {&#xD;  if (topLevelType === &apos;topChange&apos;) {&#xD;    return targetInst;&#xD;  }&#xD;}&#xD;function handleEventsForChangeEventIE8(topLevelType, target, targetInst) {&#xD;  if (topLevelType === &apos;topFocus&apos;) {&#xD;    // stopWatching() should be a noop here but we call it just in case we&#xD;    // missed a blur event somehow.&#xD;    stopWatchingForChangeEventIE8();&#xD;    startWatchingForChangeEventIE8(target, targetInst);&#xD;  } else if (topLevelType === &apos;topBlur&apos;) {&#xD;    stopWatchingForChangeEventIE8();&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * SECTION: handle `input` event&#xD; */&#xD;var isInputEventSupported = false;&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  // IE9 claims to support the input event but fails to trigger it when&#xD;  // deleting text, so we ignore its input events.&#xD;  // IE10+ fire input events to often, such when a placeholder&#xD;  // changes or when an input with a placeholder is focused.&#xD;  isInputEventSupported = isEventSupported(&apos;input&apos;) &amp;&amp; (!document.documentMode || document.documentMode &gt; 11);&#xD;}&#xD;&#xD;/**&#xD; * (For IE &lt;=11) Replacement getter/setter for the `value` property that gets&#xD; * set on the active element.&#xD; */&#xD;var newValueProp = {&#xD;  get: function () {&#xD;    return activeElementValueProp.get.call(this);&#xD;  },&#xD;  set: function (val) {&#xD;    // Cast to a string so we can do equality checks.&#xD;    activeElementValue = &apos;&apos; + val;&#xD;    activeElementValueProp.set.call(this, val);&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * (For IE &lt;=11) Starts tracking propertychange events on the passed-in element&#xD; * and override the value property so that we can distinguish user events from&#xD; * value changes in JS.&#xD; */&#xD;function startWatchingForValueChange(target, targetInst) {&#xD;  activeElement = target;&#xD;  activeElementInst = targetInst;&#xD;  activeElementValue = target.value;&#xD;  activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, &apos;value&apos;);&#xD;&#xD;  // Not guarded in a canDefineProperty check: IE8 supports defineProperty only&#xD;  // on DOM elements&#xD;  Object.defineProperty(activeElement, &apos;value&apos;, newValueProp);&#xD;  if (activeElement.attachEvent) {&#xD;    activeElement.attachEvent(&apos;onpropertychange&apos;, handlePropertyChange);&#xD;  } else {&#xD;    activeElement.addEventListener(&apos;propertychange&apos;, handlePropertyChange, false);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * (For IE &lt;=11) Removes the event listeners from the currently-tracked element,&#xD; * if any exists.&#xD; */&#xD;function stopWatchingForValueChange() {&#xD;  if (!activeElement) {&#xD;    return;&#xD;  }&#xD;&#xD;  // delete restores the original property definition&#xD;  delete activeElement.value;&#xD;&#xD;  if (activeElement.detachEvent) {&#xD;    activeElement.detachEvent(&apos;onpropertychange&apos;, handlePropertyChange);&#xD;  } else {&#xD;    activeElement.removeEventListener(&apos;propertychange&apos;, handlePropertyChange, false);&#xD;  }&#xD;&#xD;  activeElement = null;&#xD;  activeElementInst = null;&#xD;  activeElementValue = null;&#xD;  activeElementValueProp = null;&#xD;}&#xD;&#xD;/**&#xD; * (For IE &lt;=11) Handles a propertychange event, sending a `change` event if&#xD; * the value of the active element has changed.&#xD; */&#xD;function handlePropertyChange(nativeEvent) {&#xD;  if (nativeEvent.propertyName !== &apos;value&apos;) {&#xD;    return;&#xD;  }&#xD;  var value = nativeEvent.srcElement.value;&#xD;  if (value === activeElementValue) {&#xD;    return;&#xD;  }&#xD;  activeElementValue = value;&#xD;&#xD;  manualDispatchChangeEvent(nativeEvent);&#xD;}&#xD;&#xD;/**&#xD; * If a `change` event should be fired, returns the target&apos;s ID.&#xD; */&#xD;function getTargetInstForInputEvent(topLevelType, targetInst) {&#xD;  if (topLevelType === &apos;topInput&apos;) {&#xD;    // In modern browsers (i.e., not IE8 or IE9), the input event is exactly&#xD;    // what we want so fall through here and trigger an abstract event&#xD;    return targetInst;&#xD;  }&#xD;}&#xD;&#xD;function handleEventsForInputEventIE(topLevelType, target, targetInst) {&#xD;  if (topLevelType === &apos;topFocus&apos;) {&#xD;    // In IE8, we can capture almost all .value changes by adding a&#xD;    // propertychange handler and looking for events with propertyName&#xD;    // equal to &apos;value&apos;&#xD;    // In IE9-11, propertychange fires for most input events but is buggy and&#xD;    // doesn&apos;t fire when text is deleted, but conveniently, selectionchange&#xD;    // appears to fire in all of the remaining cases so we catch those and&#xD;    // forward the event if the value has changed&#xD;    // In either case, we don&apos;t want to call the event handler if the value&#xD;    // is changed from JS so we redefine a setter for `.value` that updates&#xD;    // our activeElementValue variable, allowing us to ignore those changes&#xD;    //&#xD;    // stopWatching() should be a noop here but we call it just in case we&#xD;    // missed a blur event somehow.&#xD;    stopWatchingForValueChange();&#xD;    startWatchingForValueChange(target, targetInst);&#xD;  } else if (topLevelType === &apos;topBlur&apos;) {&#xD;    stopWatchingForValueChange();&#xD;  }&#xD;}&#xD;&#xD;// For IE8 and IE9.&#xD;function getTargetInstForInputEventIE(topLevelType, targetInst) {&#xD;  if (topLevelType === &apos;topSelectionChange&apos; || topLevelType === &apos;topKeyUp&apos; || topLevelType === &apos;topKeyDown&apos;) {&#xD;    // On the selectionchange event, the target is just document which isn&apos;t&#xD;    // helpful for us so just check activeElement instead.&#xD;    //&#xD;    // 99% of the time, keydown and keyup aren&apos;t necessary. IE8 fails to fire&#xD;    // propertychange on the first input event after setting `value` from a&#xD;    // script and fires only keydown, keypress, keyup. Catching keyup usually&#xD;    // gets it and catching keydown lets us fire an event for the first&#xD;    // keystroke if user does a key repeat (it&apos;ll be a little delayed: right&#xD;    // before the second keystroke). Other input methods (e.g., paste) seem to&#xD;    // fire selectionchange normally.&#xD;    if (activeElement &amp;&amp; activeElement.value !== activeElementValue) {&#xD;      activeElementValue = activeElement.value;&#xD;      return activeElementInst;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * SECTION: handle `click` event&#xD; */&#xD;function shouldUseClickEvent(elem) {&#xD;  // Use the `click` event to detect changes to checkbox and radio inputs.&#xD;  // This approach works across all browsers, whereas `change` does not fire&#xD;  // until `blur` in IE8.&#xD;  return elem.nodeName &amp;&amp; elem.nodeName.toLowerCase() === &apos;input&apos; &amp;&amp; (elem.type === &apos;checkbox&apos; || elem.type === &apos;radio&apos;);&#xD;}&#xD;&#xD;function getTargetInstForClickEvent(topLevelType, targetInst) {&#xD;  if (topLevelType === &apos;topClick&apos;) {&#xD;    return targetInst;&#xD;  }&#xD;}&#xD;&#xD;function handleControlledInputBlur(inst, node) {&#xD;  // TODO: In IE, inst is occasionally null. Why?&#xD;  if (inst == null) {&#xD;    return;&#xD;  }&#xD;&#xD;  // Fiber and ReactDOM keep wrapper state in separate places&#xD;  var state = inst._wrapperState || node._wrapperState;&#xD;&#xD;  if (!state || !state.controlled || node.type !== &apos;number&apos;) {&#xD;    return;&#xD;  }&#xD;&#xD;  // If controlled, assign the value attribute to the current value on blur&#xD;  var value = &apos;&apos; + node.value;&#xD;  if (node.getAttribute(&apos;value&apos;) !== value) {&#xD;    node.setAttribute(&apos;value&apos;, value);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * This plugin creates an `onChange` event that normalizes change events&#xD; * across form elements. This event fires at a time when it&apos;s possible to&#xD; * change the element&apos;s value without seeing a flicker.&#xD; *&#xD; * Supported elements are:&#xD; * - input (see `isTextInputElement`)&#xD; * - textarea&#xD; * - select&#xD; */&#xD;var ChangeEventPlugin = {&#xD;&#xD;  eventTypes: eventTypes,&#xD;&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;&#xD;&#xD;    var getTargetInstFunc, handleEventFunc;&#xD;    if (shouldUseChangeEvent(targetNode)) {&#xD;      if (doesChangeEventBubble) {&#xD;        getTargetInstFunc = getTargetInstForChangeEvent;&#xD;      } else {&#xD;        handleEventFunc = handleEventsForChangeEventIE8;&#xD;      }&#xD;    } else if (isTextInputElement(targetNode)) {&#xD;      if (isInputEventSupported) {&#xD;        getTargetInstFunc = getTargetInstForInputEvent;&#xD;      } else {&#xD;        getTargetInstFunc = getTargetInstForInputEventIE;&#xD;        handleEventFunc = handleEventsForInputEventIE;&#xD;      }&#xD;    } else if (shouldUseClickEvent(targetNode)) {&#xD;      getTargetInstFunc = getTargetInstForClickEvent;&#xD;    }&#xD;&#xD;    if (getTargetInstFunc) {&#xD;      var inst = getTargetInstFunc(topLevelType, targetInst);&#xD;      if (inst) {&#xD;        var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);&#xD;        event.type = &apos;change&apos;;&#xD;        EventPropagators.accumulateTwoPhaseDispatches(event);&#xD;        return event;&#xD;      }&#xD;    }&#xD;&#xD;    if (handleEventFunc) {&#xD;      handleEventFunc(topLevelType, targetNode, targetInst);&#xD;    }&#xD;&#xD;    // When blurring, set the value attribute for number inputs&#xD;    if (topLevelType === &apos;topBlur&apos;) {&#xD;      handleControlledInputBlur(targetInst, targetNode);&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ChangeEventPlugin;&#xD;&#xD;/***/ }),&#xD;/* 399 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var createNodesFromMarkup = __webpack_require__(329);&#xD;var emptyFunction = __webpack_require__(22);&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;var Danger = {&#xD;&#xD;  /**&#xD;   * Replaces a node with a string of markup at its current position within its&#xD;   * parent. The markup must render into a single root node.&#xD;   *&#xD;   * @param {DOMElement} oldChild Child node to replace.&#xD;   * @param {string} markup Markup to render in place of the child node.&#xD;   * @internal&#xD;   */&#xD;  dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {&#xD;    !ExecutionEnvironment.canUseDOM ?  true ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.&apos;) : _prodInvariant(&apos;56&apos;) : void 0;&#xD;    !markup ?  true ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Missing markup.&apos;) : _prodInvariant(&apos;57&apos;) : void 0;&#xD;    !(oldChild.nodeName !== &apos;HTML&apos;) ?  true ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the &lt;html&gt; node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().&apos;) : _prodInvariant(&apos;58&apos;) : void 0;&#xD;&#xD;    if (typeof markup === &apos;string&apos;) {&#xD;      var newChild = createNodesFromMarkup(markup, emptyFunction)[0];&#xD;      oldChild.parentNode.replaceChild(newChild, oldChild);&#xD;    } else {&#xD;      DOMLazyTree.replaceChildWithTree(oldChild, markup);&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = Danger;&#xD;&#xD;/***/ }),&#xD;/* 400 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Module that is injectable into `EventPluginHub`, that specifies a&#xD; * deterministic ordering of `EventPlugin`s. A convenient way to reason about&#xD; * plugins, without having to package every one of them. This is better than&#xD; * having plugins be ordered in the same order that they are injected because&#xD; * that ordering would be influenced by the packaging order.&#xD; * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that&#xD; * preventing default on events is convenient in `SimpleEventPlugin` handlers.&#xD; */&#xD;&#xD;var DefaultEventPluginOrder = [&apos;ResponderEventPlugin&apos;, &apos;SimpleEventPlugin&apos;, &apos;TapEventPlugin&apos;, &apos;EnterLeaveEventPlugin&apos;, &apos;ChangeEventPlugin&apos;, &apos;SelectEventPlugin&apos;, &apos;BeforeInputEventPlugin&apos;];&#xD;&#xD;module.exports = DefaultEventPluginOrder;&#xD;&#xD;/***/ }),&#xD;/* 401 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPropagators = __webpack_require__(51);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var SyntheticMouseEvent = __webpack_require__(65);&#xD;&#xD;var eventTypes = {&#xD;  mouseEnter: {&#xD;    registrationName: &apos;onMouseEnter&apos;,&#xD;    dependencies: [&apos;topMouseOut&apos;, &apos;topMouseOver&apos;]&#xD;  },&#xD;  mouseLeave: {&#xD;    registrationName: &apos;onMouseLeave&apos;,&#xD;    dependencies: [&apos;topMouseOut&apos;, &apos;topMouseOver&apos;]&#xD;  }&#xD;};&#xD;&#xD;var EnterLeaveEventPlugin = {&#xD;&#xD;  eventTypes: eventTypes,&#xD;&#xD;  /**&#xD;   * For almost every interaction we care about, there will be both a top-level&#xD;   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that&#xD;   * we do not extract duplicate events. However, moving the mouse into the&#xD;   * browser from outside will not fire a `mouseout` event. In this case, we use&#xD;   * the `mouseover` top-level event.&#xD;   */&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    if (topLevelType === &apos;topMouseOver&apos; &amp;&amp; (nativeEvent.relatedTarget || nativeEvent.fromElement)) {&#xD;      return null;&#xD;    }&#xD;    if (topLevelType !== &apos;topMouseOut&apos; &amp;&amp; topLevelType !== &apos;topMouseOver&apos;) {&#xD;      // Must not be a mouse in or mouse out - ignoring.&#xD;      return null;&#xD;    }&#xD;&#xD;    var win;&#xD;    if (nativeEventTarget.window === nativeEventTarget) {&#xD;      // `nativeEventTarget` is probably a window object.&#xD;      win = nativeEventTarget;&#xD;    } else {&#xD;      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.&#xD;      var doc = nativeEventTarget.ownerDocument;&#xD;      if (doc) {&#xD;        win = doc.defaultView || doc.parentWindow;&#xD;      } else {&#xD;        win = window;&#xD;      }&#xD;    }&#xD;&#xD;    var from;&#xD;    var to;&#xD;    if (topLevelType === &apos;topMouseOut&apos;) {&#xD;      from = targetInst;&#xD;      var related = nativeEvent.relatedTarget || nativeEvent.toElement;&#xD;      to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;&#xD;    } else {&#xD;      // Moving to a node from outside the window.&#xD;      from = null;&#xD;      to = targetInst;&#xD;    }&#xD;&#xD;    if (from === to) {&#xD;      // Nothing pertains to our managed components.&#xD;      return null;&#xD;    }&#xD;&#xD;    var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);&#xD;    var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);&#xD;&#xD;    var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);&#xD;    leave.type = &apos;mouseleave&apos;;&#xD;    leave.target = fromNode;&#xD;    leave.relatedTarget = toNode;&#xD;&#xD;    var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);&#xD;    enter.type = &apos;mouseenter&apos;;&#xD;    enter.target = toNode;&#xD;    enter.relatedTarget = fromNode;&#xD;&#xD;    EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);&#xD;&#xD;    return [leave, enter];&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = EnterLeaveEventPlugin;&#xD;&#xD;/***/ }),&#xD;/* 402 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var PooledClass = __webpack_require__(33);&#xD;&#xD;var getTextContentAccessor = __webpack_require__(170);&#xD;&#xD;/**&#xD; * This helper class stores information about text content of a target node,&#xD; * allowing comparison of content before and after a given event.&#xD; *&#xD; * Identify the node where selection currently begins, then observe&#xD; * both its text content and its current position in the DOM. Since the&#xD; * browser may natively replace the target node during composition, we can&#xD; * use its position to find its replacement.&#xD; *&#xD; * @param {DOMEventTarget} root&#xD; */&#xD;function FallbackCompositionState(root) {&#xD;  this._root = root;&#xD;  this._startText = this.getText();&#xD;  this._fallbackText = null;&#xD;}&#xD;&#xD;_assign(FallbackCompositionState.prototype, {&#xD;  destructor: function () {&#xD;    this._root = null;&#xD;    this._startText = null;&#xD;    this._fallbackText = null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Get current text of input.&#xD;   *&#xD;   * @return {string}&#xD;   */&#xD;  getText: function () {&#xD;    if (&apos;value&apos; in this._root) {&#xD;      return this._root.value;&#xD;    }&#xD;    return this._root[getTextContentAccessor()];&#xD;  },&#xD;&#xD;  /**&#xD;   * Determine the differing substring between the initially stored&#xD;   * text content and the current content.&#xD;   *&#xD;   * @return {string}&#xD;   */&#xD;  getData: function () {&#xD;    if (this._fallbackText) {&#xD;      return this._fallbackText;&#xD;    }&#xD;&#xD;    var start;&#xD;    var startValue = this._startText;&#xD;    var startLength = startValue.length;&#xD;    var end;&#xD;    var endValue = this.getText();&#xD;    var endLength = endValue.length;&#xD;&#xD;    for (start = 0; start &lt; startLength; start++) {&#xD;      if (startValue[start] !== endValue[start]) {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    var minEnd = startLength - start;&#xD;    for (end = 1; end &lt;= minEnd; end++) {&#xD;      if (startValue[startLength - end] !== endValue[endLength - end]) {&#xD;        break;&#xD;      }&#xD;    }&#xD;&#xD;    var sliceTail = end &gt; 1 ? 1 - end : undefined;&#xD;    this._fallbackText = endValue.slice(start, sliceTail);&#xD;    return this._fallbackText;&#xD;  }&#xD;});&#xD;&#xD;PooledClass.addPoolingTo(FallbackCompositionState);&#xD;&#xD;module.exports = FallbackCompositionState;&#xD;&#xD;/***/ }),&#xD;/* 403 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;&#xD;var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;&#xD;var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;&#xD;var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;&#xD;var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;&#xD;var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;&#xD;&#xD;var HTMLDOMPropertyConfig = {&#xD;  isCustomAttribute: RegExp.prototype.test.bind(new RegExp(&apos;^(data|aria)-[&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;)),&#xD;  Properties: {&#xD;    /**&#xD;     * Standard Properties&#xD;     */&#xD;    accept: 0,&#xD;    acceptCharset: 0,&#xD;    accessKey: 0,&#xD;    action: 0,&#xD;    allowFullScreen: HAS_BOOLEAN_VALUE,&#xD;    allowTransparency: 0,&#xD;    alt: 0,&#xD;    // specifies target context for links with `preload` type&#xD;    as: 0,&#xD;    async: HAS_BOOLEAN_VALUE,&#xD;    autoComplete: 0,&#xD;    // autoFocus is polyfilled/normalized by AutoFocusUtils&#xD;    // autoFocus: HAS_BOOLEAN_VALUE,&#xD;    autoPlay: HAS_BOOLEAN_VALUE,&#xD;    capture: HAS_BOOLEAN_VALUE,&#xD;    cellPadding: 0,&#xD;    cellSpacing: 0,&#xD;    charSet: 0,&#xD;    challenge: 0,&#xD;    checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,&#xD;    cite: 0,&#xD;    classID: 0,&#xD;    className: 0,&#xD;    cols: HAS_POSITIVE_NUMERIC_VALUE,&#xD;    colSpan: 0,&#xD;    content: 0,&#xD;    contentEditable: 0,&#xD;    contextMenu: 0,&#xD;    controls: HAS_BOOLEAN_VALUE,&#xD;    coords: 0,&#xD;    crossOrigin: 0,&#xD;    data: 0, // For `&lt;object /&gt;` acts as `src`.&#xD;    dateTime: 0,&#xD;    &apos;default&apos;: HAS_BOOLEAN_VALUE,&#xD;    defer: HAS_BOOLEAN_VALUE,&#xD;    dir: 0,&#xD;    disabled: HAS_BOOLEAN_VALUE,&#xD;    download: HAS_OVERLOADED_BOOLEAN_VALUE,&#xD;    draggable: 0,&#xD;    encType: 0,&#xD;    form: 0,&#xD;    formAction: 0,&#xD;    formEncType: 0,&#xD;    formMethod: 0,&#xD;    formNoValidate: HAS_BOOLEAN_VALUE,&#xD;    formTarget: 0,&#xD;    frameBorder: 0,&#xD;    headers: 0,&#xD;    height: 0,&#xD;    hidden: HAS_BOOLEAN_VALUE,&#xD;    high: 0,&#xD;    href: 0,&#xD;    hrefLang: 0,&#xD;    htmlFor: 0,&#xD;    httpEquiv: 0,&#xD;    icon: 0,&#xD;    id: 0,&#xD;    inputMode: 0,&#xD;    integrity: 0,&#xD;    is: 0,&#xD;    keyParams: 0,&#xD;    keyType: 0,&#xD;    kind: 0,&#xD;    label: 0,&#xD;    lang: 0,&#xD;    list: 0,&#xD;    loop: HAS_BOOLEAN_VALUE,&#xD;    low: 0,&#xD;    manifest: 0,&#xD;    marginHeight: 0,&#xD;    marginWidth: 0,&#xD;    max: 0,&#xD;    maxLength: 0,&#xD;    media: 0,&#xD;    mediaGroup: 0,&#xD;    method: 0,&#xD;    min: 0,&#xD;    minLength: 0,&#xD;    // Caution; `option.selected` is not updated if `select.multiple` is&#xD;    // disabled with `removeAttribute`.&#xD;    multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,&#xD;    muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,&#xD;    name: 0,&#xD;    nonce: 0,&#xD;    noValidate: HAS_BOOLEAN_VALUE,&#xD;    open: HAS_BOOLEAN_VALUE,&#xD;    optimum: 0,&#xD;    pattern: 0,&#xD;    placeholder: 0,&#xD;    playsInline: HAS_BOOLEAN_VALUE,&#xD;    poster: 0,&#xD;    preload: 0,&#xD;    profile: 0,&#xD;    radioGroup: 0,&#xD;    readOnly: HAS_BOOLEAN_VALUE,&#xD;    referrerPolicy: 0,&#xD;    rel: 0,&#xD;    required: HAS_BOOLEAN_VALUE,&#xD;    reversed: HAS_BOOLEAN_VALUE,&#xD;    role: 0,&#xD;    rows: HAS_POSITIVE_NUMERIC_VALUE,&#xD;    rowSpan: HAS_NUMERIC_VALUE,&#xD;    sandbox: 0,&#xD;    scope: 0,&#xD;    scoped: HAS_BOOLEAN_VALUE,&#xD;    scrolling: 0,&#xD;    seamless: HAS_BOOLEAN_VALUE,&#xD;    selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,&#xD;    shape: 0,&#xD;    size: HAS_POSITIVE_NUMERIC_VALUE,&#xD;    sizes: 0,&#xD;    span: HAS_POSITIVE_NUMERIC_VALUE,&#xD;    spellCheck: 0,&#xD;    src: 0,&#xD;    srcDoc: 0,&#xD;    srcLang: 0,&#xD;    srcSet: 0,&#xD;    start: HAS_NUMERIC_VALUE,&#xD;    step: 0,&#xD;    style: 0,&#xD;    summary: 0,&#xD;    tabIndex: 0,&#xD;    target: 0,&#xD;    title: 0,&#xD;    // Setting .type throws on non-&lt;input&gt; tags&#xD;    type: 0,&#xD;    useMap: 0,&#xD;    value: 0,&#xD;    width: 0,&#xD;    wmode: 0,&#xD;    wrap: 0,&#xD;&#xD;    /**&#xD;     * RDFa Properties&#xD;     */&#xD;    about: 0,&#xD;    datatype: 0,&#xD;    inlist: 0,&#xD;    prefix: 0,&#xD;    // property is also supported for OpenGraph in meta tags.&#xD;    property: 0,&#xD;    resource: 0,&#xD;    &apos;typeof&apos;: 0,&#xD;    vocab: 0,&#xD;&#xD;    /**&#xD;     * Non-standard Properties&#xD;     */&#xD;    // autoCapitalize and autoCorrect are supported in Mobile Safari for&#xD;    // keyboard hints.&#xD;    autoCapitalize: 0,&#xD;    autoCorrect: 0,&#xD;    // autoSave allows WebKit/Blink to persist values of input fields on page reloads&#xD;    autoSave: 0,&#xD;    // color is for Safari mask-icon link&#xD;    color: 0,&#xD;    // itemProp, itemScope, itemType are for&#xD;    // Microdata support. See http://schema.org/docs/gs.html&#xD;    itemProp: 0,&#xD;    itemScope: HAS_BOOLEAN_VALUE,&#xD;    itemType: 0,&#xD;    // itemID and itemRef are for Microdata support as well but&#xD;    // only specified in the WHATWG spec document. See&#xD;    // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api&#xD;    itemID: 0,&#xD;    itemRef: 0,&#xD;    // results show looking glass icon and recent searches on input&#xD;    // search fields in WebKit/Blink&#xD;    results: 0,&#xD;    // IE-only attribute that specifies security restrictions on an iframe&#xD;    // as an alternative to the sandbox attribute on IE&lt;10&#xD;    security: 0,&#xD;    // IE-only attribute that controls focus behavior&#xD;    unselectable: 0&#xD;  },&#xD;  DOMAttributeNames: {&#xD;    acceptCharset: &apos;accept-charset&apos;,&#xD;    className: &apos;class&apos;,&#xD;    htmlFor: &apos;for&apos;,&#xD;    httpEquiv: &apos;http-equiv&apos;&#xD;  },&#xD;  DOMPropertyNames: {},&#xD;  DOMMutationMethods: {&#xD;    value: function (node, value) {&#xD;      if (value == null) {&#xD;        return node.removeAttribute(&apos;value&apos;);&#xD;      }&#xD;&#xD;      // Number inputs get special treatment due to some edge cases in&#xD;      // Chrome. Let everything else assign the value attribute as normal.&#xD;      // https://github.com/facebook/react/issues/7253#issuecomment-236074326&#xD;      if (node.type !== &apos;number&apos; || node.hasAttribute(&apos;value&apos;) === false) {&#xD;        node.setAttribute(&apos;value&apos;, &apos;&apos; + value);&#xD;      } else if (node.validity &amp;&amp; !node.validity.badInput &amp;&amp; node.ownerDocument.activeElement !== node) {&#xD;        // Don&apos;t assign an attribute if validation reports bad&#xD;        // input. Chrome will clear the value. Additionally, don&apos;t&#xD;        // operate on inputs that have focus, otherwise Chrome might&#xD;        // strip off trailing decimal places and cause the user&apos;s&#xD;        // cursor position to jump to the beginning of the input.&#xD;        //&#xD;        // In ReactDOMInput, we have an onBlur event that will trigger&#xD;        // this function again when focus is lost.&#xD;        node.setAttribute(&apos;value&apos;, &apos;&apos; + value);&#xD;      }&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = HTMLDOMPropertyConfig;&#xD;&#xD;/***/ }),&#xD;/* 404 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactReconciler = __webpack_require__(42);&#xD;&#xD;var instantiateReactComponent = __webpack_require__(171);&#xD;var KeyEscapeUtils = __webpack_require__(88);&#xD;var shouldUpdateReactComponent = __webpack_require__(98);&#xD;var traverseAllChildren = __webpack_require__(174);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ReactComponentTreeHook;&#xD;&#xD;if (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; "undefined" === &apos;test&apos;) {&#xD;  // Temporary hack.&#xD;  // Inline requires don&apos;t work well with Jest:&#xD;  // https://github.com/facebook/react/issues/7240&#xD;  // Remove the inline requires when we don&apos;t need them anymore:&#xD;  // https://github.com/facebook/react/pull/7178&#xD;  ReactComponentTreeHook = __webpack_require__(20);&#xD;}&#xD;&#xD;function instantiateChild(childInstances, child, name, selfDebugID) {&#xD;  // We found a component instance.&#xD;  var keyUnique = childInstances[name] === undefined;&#xD;  if (true) {&#xD;    if (!ReactComponentTreeHook) {&#xD;      ReactComponentTreeHook = __webpack_require__(20);&#xD;    }&#xD;    if (!keyUnique) {&#xD;       true ? warning(false, &apos;flattenChildren(...): Encountered two children with the same key, &apos; + &apos;`%s`. Child keys must be unique; when two children share a key, only &apos; + &apos;the first child will be used.%s&apos;, KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;&#xD;    }&#xD;  }&#xD;  if (child != null &amp;&amp; keyUnique) {&#xD;    childInstances[name] = instantiateReactComponent(child, true);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * ReactChildReconciler provides helpers for initializing or updating a set of&#xD; * children. Its output is suitable for passing it onto ReactMultiChild which&#xD; * does diffed reordering and insertion.&#xD; */&#xD;var ReactChildReconciler = {&#xD;  /**&#xD;   * Generates a "mount image" for each of the supplied children. In the case&#xD;   * of `ReactDOMComponent`, a mount image is a string of markup.&#xD;   *&#xD;   * @param {?object} nestedChildNodes Nested child maps.&#xD;   * @return {?object} A set of child instances.&#xD;   * @internal&#xD;   */&#xD;  instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots&#xD;  ) {&#xD;    if (nestedChildNodes == null) {&#xD;      return null;&#xD;    }&#xD;    var childInstances = {};&#xD;&#xD;    if (true) {&#xD;      traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {&#xD;        return instantiateChild(childInsts, child, name, selfDebugID);&#xD;      }, childInstances);&#xD;    } else {&#xD;      traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);&#xD;    }&#xD;    return childInstances;&#xD;  },&#xD;&#xD;  /**&#xD;   * Updates the rendered children and returns a new set of children.&#xD;   *&#xD;   * @param {?object} prevChildren Previously initialized set of children.&#xD;   * @param {?object} nextChildren Flat child element maps.&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {object} context&#xD;   * @return {?object} A new set of child instances.&#xD;   * @internal&#xD;   */&#xD;  updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots&#xD;  ) {&#xD;    // We currently don&apos;t have a way to track moves here but if we use iterators&#xD;    // instead of for..in we can zip the iterators and check if an item has&#xD;    // moved.&#xD;    // TODO: If nothing has changed, return the prevChildren object so that we&#xD;    // can quickly bailout if nothing has changed.&#xD;    if (!nextChildren &amp;&amp; !prevChildren) {&#xD;      return;&#xD;    }&#xD;    var name;&#xD;    var prevChild;&#xD;    for (name in nextChildren) {&#xD;      if (!nextChildren.hasOwnProperty(name)) {&#xD;        continue;&#xD;      }&#xD;      prevChild = prevChildren &amp;&amp; prevChildren[name];&#xD;      var prevElement = prevChild &amp;&amp; prevChild._currentElement;&#xD;      var nextElement = nextChildren[name];&#xD;      if (prevChild != null &amp;&amp; shouldUpdateReactComponent(prevElement, nextElement)) {&#xD;        ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);&#xD;        nextChildren[name] = prevChild;&#xD;      } else {&#xD;        if (prevChild) {&#xD;          removedNodes[name] = ReactReconciler.getHostNode(prevChild);&#xD;          ReactReconciler.unmountComponent(prevChild, false);&#xD;        }&#xD;        // The child must be instantiated before it&apos;s mounted.&#xD;        var nextChildInstance = instantiateReactComponent(nextElement, true);&#xD;        nextChildren[name] = nextChildInstance;&#xD;        // Creating mount image now ensures refs are resolved in right order&#xD;        // (see https://github.com/facebook/react/pull/7101 for explanation).&#xD;        var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);&#xD;        mountImages.push(nextChildMountImage);&#xD;      }&#xD;    }&#xD;    // Unmount children that are no longer present.&#xD;    for (name in prevChildren) {&#xD;      if (prevChildren.hasOwnProperty(name) &amp;&amp; !(nextChildren &amp;&amp; nextChildren.hasOwnProperty(name))) {&#xD;        prevChild = prevChildren[name];&#xD;        removedNodes[name] = ReactReconciler.getHostNode(prevChild);&#xD;        ReactReconciler.unmountComponent(prevChild, false);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Unmounts all rendered children. This should be used to clean up children&#xD;   * when this component is unmounted.&#xD;   *&#xD;   * @param {?object} renderedChildren Previously initialized set of children.&#xD;   * @internal&#xD;   */&#xD;  unmountChildren: function (renderedChildren, safely) {&#xD;    for (var name in renderedChildren) {&#xD;      if (renderedChildren.hasOwnProperty(name)) {&#xD;        var renderedChild = renderedChildren[name];&#xD;        ReactReconciler.unmountComponent(renderedChild, safely);&#xD;      }&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactChildReconciler;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 405 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMChildrenOperations = __webpack_require__(85);&#xD;var ReactDOMIDOperations = __webpack_require__(412);&#xD;&#xD;/**&#xD; * Abstracts away all functionality of the reconciler that requires knowledge of&#xD; * the browser context. TODO: These callers should be refactored to avoid the&#xD; * need for this injection.&#xD; */&#xD;var ReactComponentBrowserEnvironment = {&#xD;&#xD;  processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,&#xD;&#xD;  replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup&#xD;&#xD;};&#xD;&#xD;module.exports = ReactComponentBrowserEnvironment;&#xD;&#xD;/***/ }),&#xD;/* 406 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var React = __webpack_require__(43);&#xD;var ReactComponentEnvironment = __webpack_require__(90);&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactErrorUtils = __webpack_require__(91);&#xD;var ReactInstanceMap = __webpack_require__(52);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var ReactNodeTypes = __webpack_require__(164);&#xD;var ReactReconciler = __webpack_require__(42);&#xD;&#xD;if (true) {&#xD;  var checkReactTypeSpec = __webpack_require__(454);&#xD;}&#xD;&#xD;var emptyObject = __webpack_require__(40);&#xD;var invariant = __webpack_require__(3);&#xD;var shallowEqual = __webpack_require__(82);&#xD;var shouldUpdateReactComponent = __webpack_require__(98);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var CompositeTypes = {&#xD;  ImpureClass: 0,&#xD;  PureClass: 1,&#xD;  StatelessFunctional: 2&#xD;};&#xD;&#xD;function StatelessComponent(Component) {}&#xD;StatelessComponent.prototype.render = function () {&#xD;  var Component = ReactInstanceMap.get(this)._currentElement.type;&#xD;  var element = Component(this.props, this.context, this.updater);&#xD;  warnIfInvalidElement(Component, element);&#xD;  return element;&#xD;};&#xD;&#xD;function warnIfInvalidElement(Component, element) {&#xD;  if (true) {&#xD;     true ? warning(element === null || element === false || React.isValidElement(element), &apos;%s(...): A valid React element (or null) must be returned. You may have &apos; + &apos;returned undefined, an array or some other invalid object.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;&#xD;     true ? warning(!Component.childContextTypes, &apos;%s(...): childContextTypes cannot be defined on a functional component.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;&#xD;  }&#xD;}&#xD;&#xD;function shouldConstruct(Component) {&#xD;  return !!(Component.prototype &amp;&amp; Component.prototype.isReactComponent);&#xD;}&#xD;&#xD;function isPureComponent(Component) {&#xD;  return !!(Component.prototype &amp;&amp; Component.prototype.isPureReactComponent);&#xD;}&#xD;&#xD;// Separated into a function to contain deoptimizations caused by try/finally.&#xD;function measureLifeCyclePerf(fn, debugID, timerType) {&#xD;  if (debugID === 0) {&#xD;    // Top-level wrappers (see ReactMount) and empty components (see&#xD;    // ReactDOMEmptyComponent) are invisible to hooks and devtools.&#xD;    // Both are implementation details that should go away in the future.&#xD;    return fn();&#xD;  }&#xD;&#xD;  ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);&#xD;  try {&#xD;    return fn();&#xD;  } finally {&#xD;    ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * ------------------ The Life-Cycle of a Composite Component ------------------&#xD; *&#xD; * - constructor: Initialization of state. The instance is now retained.&#xD; *   - componentWillMount&#xD; *   - render&#xD; *   - [children&apos;s constructors]&#xD; *     - [children&apos;s componentWillMount and render]&#xD; *     - [children&apos;s componentDidMount]&#xD; *     - componentDidMount&#xD; *&#xD; *       Update Phases:&#xD; *       - componentWillReceiveProps (only called if parent updated)&#xD; *       - shouldComponentUpdate&#xD; *         - componentWillUpdate&#xD; *           - render&#xD; *           - [children&apos;s constructors or receive props phases]&#xD; *         - componentDidUpdate&#xD; *&#xD; *     - componentWillUnmount&#xD; *     - [children&apos;s componentWillUnmount]&#xD; *   - [children destroyed]&#xD; * - (destroyed): The instance is now blank, released by React and ready for GC.&#xD; *&#xD; * -----------------------------------------------------------------------------&#xD; */&#xD;&#xD;/**&#xD; * An incrementing ID assigned to each component when it is mounted. This is&#xD; * used to enforce the order in which `ReactUpdates` updates dirty components.&#xD; *&#xD; * @private&#xD; */&#xD;var nextMountID = 1;&#xD;&#xD;/**&#xD; * @lends {ReactCompositeComponent.prototype}&#xD; */&#xD;var ReactCompositeComponent = {&#xD;&#xD;  /**&#xD;   * Base constructor for all composite component.&#xD;   *&#xD;   * @param {ReactElement} element&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  construct: function (element) {&#xD;    this._currentElement = element;&#xD;    this._rootNodeID = 0;&#xD;    this._compositeType = null;&#xD;    this._instance = null;&#xD;    this._hostParent = null;&#xD;    this._hostContainerInfo = null;&#xD;&#xD;    // See ReactUpdateQueue&#xD;    this._updateBatchNumber = null;&#xD;    this._pendingElement = null;&#xD;    this._pendingStateQueue = null;&#xD;    this._pendingReplaceState = false;&#xD;    this._pendingForceUpdate = false;&#xD;&#xD;    this._renderedNodeType = null;&#xD;    this._renderedComponent = null;&#xD;    this._context = null;&#xD;    this._mountOrder = 0;&#xD;    this._topLevelWrapper = null;&#xD;&#xD;    // See ReactUpdates and ReactUpdateQueue.&#xD;    this._pendingCallbacks = null;&#xD;&#xD;    // ComponentWillUnmount shall only be called once&#xD;    this._calledComponentWillUnmount = false;&#xD;&#xD;    if (true) {&#xD;      this._warnedAboutRefsInRender = false;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Initializes the component, renders markup, and registers event listeners.&#xD;   *&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {?object} hostParent&#xD;   * @param {?object} hostContainerInfo&#xD;   * @param {?object} context&#xD;   * @return {?string} Rendered markup to be inserted into the DOM.&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {&#xD;    var _this = this;&#xD;&#xD;    this._context = context;&#xD;    this._mountOrder = nextMountID++;&#xD;    this._hostParent = hostParent;&#xD;    this._hostContainerInfo = hostContainerInfo;&#xD;&#xD;    var publicProps = this._currentElement.props;&#xD;    var publicContext = this._processContext(context);&#xD;&#xD;    var Component = this._currentElement.type;&#xD;&#xD;    var updateQueue = transaction.getUpdateQueue();&#xD;&#xD;    // Initialize the public class&#xD;    var doConstruct = shouldConstruct(Component);&#xD;    var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);&#xD;    var renderedElement;&#xD;&#xD;    // Support functional components&#xD;    if (!doConstruct &amp;&amp; (inst == null || inst.render == null)) {&#xD;      renderedElement = inst;&#xD;      warnIfInvalidElement(Component, renderedElement);&#xD;      !(inst === null || inst === false || React.isValidElement(inst)) ?  true ? invariant(false, &apos;%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : _prodInvariant(&apos;105&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;&#xD;      inst = new StatelessComponent(Component);&#xD;      this._compositeType = CompositeTypes.StatelessFunctional;&#xD;    } else {&#xD;      if (isPureComponent(Component)) {&#xD;        this._compositeType = CompositeTypes.PureClass;&#xD;      } else {&#xD;        this._compositeType = CompositeTypes.ImpureClass;&#xD;      }&#xD;    }&#xD;&#xD;    if (true) {&#xD;      // This will throw later in _renderValidatedComponent, but add an early&#xD;      // warning now to help debugging&#xD;      if (inst.render == null) {&#xD;         true ? warning(false, &apos;%s(...): No `render` method found on the returned component &apos; + &apos;instance: you may have forgotten to define `render`.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;&#xD;      }&#xD;&#xD;      var propsMutated = inst.props !== publicProps;&#xD;      var componentName = Component.displayName || Component.name || &apos;Component&apos;;&#xD;&#xD;       true ? warning(inst.props === undefined || !propsMutated, &apos;%s(...): When calling super() in `%s`, make sure to pass &apos; + &apos;up the same props that your component\&apos;s constructor was passed.&apos;, componentName, componentName) : void 0;&#xD;    }&#xD;&#xD;    // These should be set up in the constructor, but as a convenience for&#xD;    // simpler class abstractions, we set them up after the fact.&#xD;    inst.props = publicProps;&#xD;    inst.context = publicContext;&#xD;    inst.refs = emptyObject;&#xD;    inst.updater = updateQueue;&#xD;&#xD;    this._instance = inst;&#xD;&#xD;    // Store a reference from the instance back to the internal representation&#xD;    ReactInstanceMap.set(inst, this);&#xD;&#xD;    if (true) {&#xD;      // Since plain JS classes are defined without any special initialization&#xD;      // logic, we can not catch common errors early. Therefore, we have to&#xD;      // catch them here, at initialization time, instead.&#xD;       true ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, &apos;getInitialState was defined on %s, a plain JavaScript class. &apos; + &apos;This is only supported for classes created using React.createClass. &apos; + &apos;Did you mean to define a state property instead?&apos;, this.getName() || &apos;a component&apos;) : void 0;&#xD;       true ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, &apos;getDefaultProps was defined on %s, a plain JavaScript class. &apos; + &apos;This is only supported for classes created using React.createClass. &apos; + &apos;Use a static property to define defaultProps instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;&#xD;       true ? warning(!inst.propTypes, &apos;propTypes was defined as an instance property on %s. Use a static &apos; + &apos;property to define propTypes instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;&#xD;       true ? warning(!inst.contextTypes, &apos;contextTypes was defined as an instance property on %s. Use a &apos; + &apos;static property to define contextTypes instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;&#xD;       true ? warning(typeof inst.componentShouldUpdate !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentShouldUpdate(). Did you mean shouldComponentUpdate()? &apos; + &apos;The name is phrased as a question because the function is &apos; + &apos;expected to return a value.&apos;, this.getName() || &apos;A component&apos;) : void 0;&#xD;       true ? warning(typeof inst.componentDidUnmount !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentDidUnmount(). But there is no such lifecycle method. &apos; + &apos;Did you mean componentWillUnmount()?&apos;, this.getName() || &apos;A component&apos;) : void 0;&#xD;       true ? warning(typeof inst.componentWillRecieveProps !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentWillRecieveProps(). Did you mean componentWillReceiveProps()?&apos;, this.getName() || &apos;A component&apos;) : void 0;&#xD;    }&#xD;&#xD;    var initialState = inst.state;&#xD;    if (initialState === undefined) {&#xD;      inst.state = initialState = null;&#xD;    }&#xD;    !(typeof initialState === &apos;object&apos; &amp;&amp; !Array.isArray(initialState)) ?  true ? invariant(false, &apos;%s.state: must be set to an object or null&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;106&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;    this._pendingStateQueue = null;&#xD;    this._pendingReplaceState = false;&#xD;    this._pendingForceUpdate = false;&#xD;&#xD;    var markup;&#xD;    if (inst.unstable_handleError) {&#xD;      markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);&#xD;    } else {&#xD;      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);&#xD;    }&#xD;&#xD;    if (inst.componentDidMount) {&#xD;      if (true) {&#xD;        transaction.getReactMountReady().enqueue(function () {&#xD;          measureLifeCyclePerf(function () {&#xD;            return inst.componentDidMount();&#xD;          }, _this._debugID, &apos;componentDidMount&apos;);&#xD;        });&#xD;      } else {&#xD;        transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);&#xD;      }&#xD;    }&#xD;&#xD;    return markup;&#xD;  },&#xD;&#xD;  _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {&#xD;    if (true) {&#xD;      ReactCurrentOwner.current = this;&#xD;      try {&#xD;        return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);&#xD;      } finally {&#xD;        ReactCurrentOwner.current = null;&#xD;      }&#xD;    } else {&#xD;      return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);&#xD;    }&#xD;  },&#xD;&#xD;  _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {&#xD;    var Component = this._currentElement.type;&#xD;&#xD;    if (doConstruct) {&#xD;      if (true) {&#xD;        return measureLifeCyclePerf(function () {&#xD;          return new Component(publicProps, publicContext, updateQueue);&#xD;        }, this._debugID, &apos;ctor&apos;);&#xD;      } else {&#xD;        return new Component(publicProps, publicContext, updateQueue);&#xD;      }&#xD;    }&#xD;&#xD;    // This can still be an instance in case of factory components&#xD;    // but we&apos;ll count this as time spent rendering as the more common case.&#xD;    if (true) {&#xD;      return measureLifeCyclePerf(function () {&#xD;        return Component(publicProps, publicContext, updateQueue);&#xD;      }, this._debugID, &apos;render&apos;);&#xD;    } else {&#xD;      return Component(publicProps, publicContext, updateQueue);&#xD;    }&#xD;  },&#xD;&#xD;  performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {&#xD;    var markup;&#xD;    var checkpoint = transaction.checkpoint();&#xD;    try {&#xD;      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);&#xD;    } catch (e) {&#xD;      // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint&#xD;      transaction.rollback(checkpoint);&#xD;      this._instance.unstable_handleError(e);&#xD;      if (this._pendingStateQueue) {&#xD;        this._instance.state = this._processPendingState(this._instance.props, this._instance.context);&#xD;      }&#xD;      checkpoint = transaction.checkpoint();&#xD;&#xD;      this._renderedComponent.unmountComponent(true);&#xD;      transaction.rollback(checkpoint);&#xD;&#xD;      // Try again - we&apos;ve informed the component about the error, so they can render an error message this time.&#xD;      // If this throws again, the error will bubble up (and can be caught by a higher error boundary).&#xD;      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);&#xD;    }&#xD;    return markup;&#xD;  },&#xD;&#xD;  performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {&#xD;    var inst = this._instance;&#xD;&#xD;    var debugID = 0;&#xD;    if (true) {&#xD;      debugID = this._debugID;&#xD;    }&#xD;&#xD;    if (inst.componentWillMount) {&#xD;      if (true) {&#xD;        measureLifeCyclePerf(function () {&#xD;          return inst.componentWillMount();&#xD;        }, debugID, &apos;componentWillMount&apos;);&#xD;      } else {&#xD;        inst.componentWillMount();&#xD;      }&#xD;      // When mounting, calls to `setState` by `componentWillMount` will set&#xD;      // `this._pendingStateQueue` without triggering a re-render.&#xD;      if (this._pendingStateQueue) {&#xD;        inst.state = this._processPendingState(inst.props, inst.context);&#xD;      }&#xD;    }&#xD;&#xD;    // If not a stateless component, we now render&#xD;    if (renderedElement === undefined) {&#xD;      renderedElement = this._renderValidatedComponent();&#xD;    }&#xD;&#xD;    var nodeType = ReactNodeTypes.getType(renderedElement);&#xD;    this._renderedNodeType = nodeType;&#xD;    var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */&#xD;    );&#xD;    this._renderedComponent = child;&#xD;&#xD;    var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);&#xD;&#xD;    if (true) {&#xD;      if (debugID !== 0) {&#xD;        var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];&#xD;        ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);&#xD;      }&#xD;    }&#xD;&#xD;    return markup;&#xD;  },&#xD;&#xD;  getHostNode: function () {&#xD;    return ReactReconciler.getHostNode(this._renderedComponent);&#xD;  },&#xD;&#xD;  /**&#xD;   * Releases any resources allocated by `mountComponent`.&#xD;   *&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  unmountComponent: function (safely) {&#xD;    if (!this._renderedComponent) {&#xD;      return;&#xD;    }&#xD;&#xD;    var inst = this._instance;&#xD;&#xD;    if (inst.componentWillUnmount &amp;&amp; !inst._calledComponentWillUnmount) {&#xD;      inst._calledComponentWillUnmount = true;&#xD;&#xD;      if (safely) {&#xD;        var name = this.getName() + &apos;.componentWillUnmount()&apos;;&#xD;        ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));&#xD;      } else {&#xD;        if (true) {&#xD;          measureLifeCyclePerf(function () {&#xD;            return inst.componentWillUnmount();&#xD;          }, this._debugID, &apos;componentWillUnmount&apos;);&#xD;        } else {&#xD;          inst.componentWillUnmount();&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    if (this._renderedComponent) {&#xD;      ReactReconciler.unmountComponent(this._renderedComponent, safely);&#xD;      this._renderedNodeType = null;&#xD;      this._renderedComponent = null;&#xD;      this._instance = null;&#xD;    }&#xD;&#xD;    // Reset pending fields&#xD;    // Even if this component is scheduled for another update in ReactUpdates,&#xD;    // it would still be ignored because these fields are reset.&#xD;    this._pendingStateQueue = null;&#xD;    this._pendingReplaceState = false;&#xD;    this._pendingForceUpdate = false;&#xD;    this._pendingCallbacks = null;&#xD;    this._pendingElement = null;&#xD;&#xD;    // These fields do not really need to be reset since this object is no&#xD;    // longer accessible.&#xD;    this._context = null;&#xD;    this._rootNodeID = 0;&#xD;    this._topLevelWrapper = null;&#xD;&#xD;    // Delete the reference from the instance to this internal representation&#xD;    // which allow the internals to be properly cleaned up even if the user&#xD;    // leaks a reference to the public instance.&#xD;    ReactInstanceMap.remove(inst);&#xD;&#xD;    // Some existing components rely on inst.props even after they&apos;ve been&#xD;    // destroyed (in event handlers).&#xD;    // TODO: inst.props = null;&#xD;    // TODO: inst.state = null;&#xD;    // TODO: inst.context = null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Filters the context object to only contain keys specified in&#xD;   * `contextTypes`&#xD;   *&#xD;   * @param {object} context&#xD;   * @return {?object}&#xD;   * @private&#xD;   */&#xD;  _maskContext: function (context) {&#xD;    var Component = this._currentElement.type;&#xD;    var contextTypes = Component.contextTypes;&#xD;    if (!contextTypes) {&#xD;      return emptyObject;&#xD;    }&#xD;    var maskedContext = {};&#xD;    for (var contextName in contextTypes) {&#xD;      maskedContext[contextName] = context[contextName];&#xD;    }&#xD;    return maskedContext;&#xD;  },&#xD;&#xD;  /**&#xD;   * Filters the context object to only contain keys specified in&#xD;   * `contextTypes`, and asserts that they are valid.&#xD;   *&#xD;   * @param {object} context&#xD;   * @return {?object}&#xD;   * @private&#xD;   */&#xD;  _processContext: function (context) {&#xD;    var maskedContext = this._maskContext(context);&#xD;    if (true) {&#xD;      var Component = this._currentElement.type;&#xD;      if (Component.contextTypes) {&#xD;        this._checkContextTypes(Component.contextTypes, maskedContext, &apos;context&apos;);&#xD;      }&#xD;    }&#xD;    return maskedContext;&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {object} currentContext&#xD;   * @return {object}&#xD;   * @private&#xD;   */&#xD;  _processChildContext: function (currentContext) {&#xD;    var Component = this._currentElement.type;&#xD;    var inst = this._instance;&#xD;    var childContext;&#xD;&#xD;    if (inst.getChildContext) {&#xD;      if (true) {&#xD;        ReactInstrumentation.debugTool.onBeginProcessingChildContext();&#xD;        try {&#xD;          childContext = inst.getChildContext();&#xD;        } finally {&#xD;          ReactInstrumentation.debugTool.onEndProcessingChildContext();&#xD;        }&#xD;      } else {&#xD;        childContext = inst.getChildContext();&#xD;      }&#xD;    }&#xD;&#xD;    if (childContext) {&#xD;      !(typeof Component.childContextTypes === &apos;object&apos;) ?  true ? invariant(false, &apos;%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;107&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;      if (true) {&#xD;        this._checkContextTypes(Component.childContextTypes, childContext, &apos;child context&apos;);&#xD;      }&#xD;      for (var name in childContext) {&#xD;        !(name in Component.childContextTypes) ?  true ? invariant(false, &apos;%s.getChildContext(): key "%s" is not defined in childContextTypes.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;, name) : _prodInvariant(&apos;108&apos;, this.getName() || &apos;ReactCompositeComponent&apos;, name) : void 0;&#xD;      }&#xD;      return _assign({}, currentContext, childContext);&#xD;    }&#xD;    return currentContext;&#xD;  },&#xD;&#xD;  /**&#xD;   * Assert that the context types are valid&#xD;   *&#xD;   * @param {object} typeSpecs Map of context field to a ReactPropType&#xD;   * @param {object} values Runtime values that need to be type-checked&#xD;   * @param {string} location e.g. "prop", "context", "child context"&#xD;   * @private&#xD;   */&#xD;  _checkContextTypes: function (typeSpecs, values, location) {&#xD;    if (true) {&#xD;      checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);&#xD;    }&#xD;  },&#xD;&#xD;  receiveComponent: function (nextElement, transaction, nextContext) {&#xD;    var prevElement = this._currentElement;&#xD;    var prevContext = this._context;&#xD;&#xD;    this._pendingElement = null;&#xD;&#xD;    this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);&#xD;  },&#xD;&#xD;  /**&#xD;   * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`&#xD;   * is set, update the component.&#xD;   *&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @internal&#xD;   */&#xD;  performUpdateIfNecessary: function (transaction) {&#xD;    if (this._pendingElement != null) {&#xD;      ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);&#xD;    } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {&#xD;      this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);&#xD;    } else {&#xD;      this._updateBatchNumber = null;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Perform an update to a mounted component. The componentWillReceiveProps and&#xD;   * shouldComponentUpdate methods are called, then (assuming the update isn&apos;t&#xD;   * skipped) the remaining update lifecycle methods are called and the DOM&#xD;   * representation is updated.&#xD;   *&#xD;   * By default, this implements React&apos;s rendering and reconciliation algorithm.&#xD;   * Sophisticated clients may wish to override this.&#xD;   *&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {ReactElement} prevParentElement&#xD;   * @param {ReactElement} nextParentElement&#xD;   * @internal&#xD;   * @overridable&#xD;   */&#xD;  updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {&#xD;    var inst = this._instance;&#xD;    !(inst != null) ?  true ? invariant(false, &apos;Attempted to update component `%s` that has already been unmounted (or failed to mount).&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;136&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;    var willReceive = false;&#xD;    var nextContext;&#xD;&#xD;    // Determine if the context has changed or not&#xD;    if (this._context === nextUnmaskedContext) {&#xD;      nextContext = inst.context;&#xD;    } else {&#xD;      nextContext = this._processContext(nextUnmaskedContext);&#xD;      willReceive = true;&#xD;    }&#xD;&#xD;    var prevProps = prevParentElement.props;&#xD;    var nextProps = nextParentElement.props;&#xD;&#xD;    // Not a simple state update but a props update&#xD;    if (prevParentElement !== nextParentElement) {&#xD;      willReceive = true;&#xD;    }&#xD;&#xD;    // An update here will schedule an update but immediately set&#xD;    // _pendingStateQueue which will ensure that any state updates gets&#xD;    // immediately reconciled instead of waiting for the next batch.&#xD;    if (willReceive &amp;&amp; inst.componentWillReceiveProps) {&#xD;      if (true) {&#xD;        measureLifeCyclePerf(function () {&#xD;          return inst.componentWillReceiveProps(nextProps, nextContext);&#xD;        }, this._debugID, &apos;componentWillReceiveProps&apos;);&#xD;      } else {&#xD;        inst.componentWillReceiveProps(nextProps, nextContext);&#xD;      }&#xD;    }&#xD;&#xD;    var nextState = this._processPendingState(nextProps, nextContext);&#xD;    var shouldUpdate = true;&#xD;&#xD;    if (!this._pendingForceUpdate) {&#xD;      if (inst.shouldComponentUpdate) {&#xD;        if (true) {&#xD;          shouldUpdate = measureLifeCyclePerf(function () {&#xD;            return inst.shouldComponentUpdate(nextProps, nextState, nextContext);&#xD;          }, this._debugID, &apos;shouldComponentUpdate&apos;);&#xD;        } else {&#xD;          shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);&#xD;        }&#xD;      } else {&#xD;        if (this._compositeType === CompositeTypes.PureClass) {&#xD;          shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    if (true) {&#xD;       true ? warning(shouldUpdate !== undefined, &apos;%s.shouldComponentUpdate(): Returned undefined instead of a &apos; + &apos;boolean value. Make sure to return true or false.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;    }&#xD;&#xD;    this._updateBatchNumber = null;&#xD;    if (shouldUpdate) {&#xD;      this._pendingForceUpdate = false;&#xD;      // Will set `this.props`, `this.state` and `this.context`.&#xD;      this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);&#xD;    } else {&#xD;      // If it&apos;s determined that a component should not update, we still want&#xD;      // to set props and state but we shortcut the rest of the update.&#xD;      this._currentElement = nextParentElement;&#xD;      this._context = nextUnmaskedContext;&#xD;      inst.props = nextProps;&#xD;      inst.state = nextState;&#xD;      inst.context = nextContext;&#xD;    }&#xD;  },&#xD;&#xD;  _processPendingState: function (props, context) {&#xD;    var inst = this._instance;&#xD;    var queue = this._pendingStateQueue;&#xD;    var replace = this._pendingReplaceState;&#xD;    this._pendingReplaceState = false;&#xD;    this._pendingStateQueue = null;&#xD;&#xD;    if (!queue) {&#xD;      return inst.state;&#xD;    }&#xD;&#xD;    if (replace &amp;&amp; queue.length === 1) {&#xD;      return queue[0];&#xD;    }&#xD;&#xD;    var nextState = _assign({}, replace ? queue[0] : inst.state);&#xD;    for (var i = replace ? 1 : 0; i &lt; queue.length; i++) {&#xD;      var partial = queue[i];&#xD;      _assign(nextState, typeof partial === &apos;function&apos; ? partial.call(inst, nextState, props, context) : partial);&#xD;    }&#xD;&#xD;    return nextState;&#xD;  },&#xD;&#xD;  /**&#xD;   * Merges new props and state, notifies delegate methods of update and&#xD;   * performs update.&#xD;   *&#xD;   * @param {ReactElement} nextElement Next element&#xD;   * @param {object} nextProps Next public object to set as properties.&#xD;   * @param {?object} nextState Next object to set as state.&#xD;   * @param {?object} nextContext Next public object to set as context.&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {?object} unmaskedContext&#xD;   * @private&#xD;   */&#xD;  _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {&#xD;    var _this2 = this;&#xD;&#xD;    var inst = this._instance;&#xD;&#xD;    var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);&#xD;    var prevProps;&#xD;    var prevState;&#xD;    var prevContext;&#xD;    if (hasComponentDidUpdate) {&#xD;      prevProps = inst.props;&#xD;      prevState = inst.state;&#xD;      prevContext = inst.context;&#xD;    }&#xD;&#xD;    if (inst.componentWillUpdate) {&#xD;      if (true) {&#xD;        measureLifeCyclePerf(function () {&#xD;          return inst.componentWillUpdate(nextProps, nextState, nextContext);&#xD;        }, this._debugID, &apos;componentWillUpdate&apos;);&#xD;      } else {&#xD;        inst.componentWillUpdate(nextProps, nextState, nextContext);&#xD;      }&#xD;    }&#xD;&#xD;    this._currentElement = nextElement;&#xD;    this._context = unmaskedContext;&#xD;    inst.props = nextProps;&#xD;    inst.state = nextState;&#xD;    inst.context = nextContext;&#xD;&#xD;    this._updateRenderedComponent(transaction, unmaskedContext);&#xD;&#xD;    if (hasComponentDidUpdate) {&#xD;      if (true) {&#xD;        transaction.getReactMountReady().enqueue(function () {&#xD;          measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, &apos;componentDidUpdate&apos;);&#xD;        });&#xD;      } else {&#xD;        transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Call the component&apos;s `render` method and update the DOM accordingly.&#xD;   *&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @internal&#xD;   */&#xD;  _updateRenderedComponent: function (transaction, context) {&#xD;    var prevComponentInstance = this._renderedComponent;&#xD;    var prevRenderedElement = prevComponentInstance._currentElement;&#xD;    var nextRenderedElement = this._renderValidatedComponent();&#xD;&#xD;    var debugID = 0;&#xD;    if (true) {&#xD;      debugID = this._debugID;&#xD;    }&#xD;&#xD;    if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {&#xD;      ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));&#xD;    } else {&#xD;      var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);&#xD;      ReactReconciler.unmountComponent(prevComponentInstance, false);&#xD;&#xD;      var nodeType = ReactNodeTypes.getType(nextRenderedElement);&#xD;      this._renderedNodeType = nodeType;&#xD;      var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */&#xD;      );&#xD;      this._renderedComponent = child;&#xD;&#xD;      var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);&#xD;&#xD;      if (true) {&#xD;        if (debugID !== 0) {&#xD;          var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];&#xD;          ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);&#xD;        }&#xD;      }&#xD;&#xD;      this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Overridden in shallow rendering.&#xD;   *&#xD;   * @protected&#xD;   */&#xD;  _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {&#xD;    ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);&#xD;  },&#xD;&#xD;  /**&#xD;   * @protected&#xD;   */&#xD;  _renderValidatedComponentWithoutOwnerOrContext: function () {&#xD;    var inst = this._instance;&#xD;    var renderedElement;&#xD;&#xD;    if (true) {&#xD;      renderedElement = measureLifeCyclePerf(function () {&#xD;        return inst.render();&#xD;      }, this._debugID, &apos;render&apos;);&#xD;    } else {&#xD;      renderedElement = inst.render();&#xD;    }&#xD;&#xD;    if (true) {&#xD;      // We allow auto-mocks to proceed as if they&apos;re returning null.&#xD;      if (renderedElement === undefined &amp;&amp; inst.render._isMockFunction) {&#xD;        // This is probably bad practice. Consider warning here and&#xD;        // deprecating this convenience.&#xD;        renderedElement = null;&#xD;      }&#xD;    }&#xD;&#xD;    return renderedElement;&#xD;  },&#xD;&#xD;  /**&#xD;   * @private&#xD;   */&#xD;  _renderValidatedComponent: function () {&#xD;    var renderedElement;&#xD;    if (true) {&#xD;      ReactCurrentOwner.current = this;&#xD;      try {&#xD;        renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();&#xD;      } finally {&#xD;        ReactCurrentOwner.current = null;&#xD;      }&#xD;    } else {&#xD;      renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();&#xD;    }&#xD;    !(&#xD;    // TODO: An `isValidNode` function would probably be more appropriate&#xD;    renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ?  true ? invariant(false, &apos;%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;109&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;    return renderedElement;&#xD;  },&#xD;&#xD;  /**&#xD;   * Lazily allocates the refs object and stores `component` as `ref`.&#xD;   *&#xD;   * @param {string} ref Reference name.&#xD;   * @param {component} component Component to store as `ref`.&#xD;   * @final&#xD;   * @private&#xD;   */&#xD;  attachRef: function (ref, component) {&#xD;    var inst = this.getPublicInstance();&#xD;    !(inst != null) ?  true ? invariant(false, &apos;Stateless function components cannot have refs.&apos;) : _prodInvariant(&apos;110&apos;) : void 0;&#xD;    var publicComponentInstance = component.getPublicInstance();&#xD;    if (true) {&#xD;      var componentName = component &amp;&amp; component.getName ? component.getName() : &apos;a component&apos;;&#xD;       true ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, &apos;Stateless function components cannot be given refs &apos; + &apos;(See ref "%s" in %s created by %s). &apos; + &apos;Attempts to access this ref will fail.&apos;, ref, componentName, this.getName()) : void 0;&#xD;    }&#xD;    var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;&#xD;    refs[ref] = publicComponentInstance;&#xD;  },&#xD;&#xD;  /**&#xD;   * Detaches a reference name.&#xD;   *&#xD;   * @param {string} ref Name to dereference.&#xD;   * @final&#xD;   * @private&#xD;   */&#xD;  detachRef: function (ref) {&#xD;    var refs = this.getPublicInstance().refs;&#xD;    delete refs[ref];&#xD;  },&#xD;&#xD;  /**&#xD;   * Get a text description of the component that can be used to identify it&#xD;   * in error messages.&#xD;   * @return {string} The name or null.&#xD;   * @internal&#xD;   */&#xD;  getName: function () {&#xD;    var type = this._currentElement.type;&#xD;    var constructor = this._instance &amp;&amp; this._instance.constructor;&#xD;    return type.displayName || constructor &amp;&amp; constructor.displayName || type.name || constructor &amp;&amp; constructor.name || null;&#xD;  },&#xD;&#xD;  /**&#xD;   * Get the publicly accessible representation of this component - i.e. what&#xD;   * is exposed by refs and returned by render. Can be null for stateless&#xD;   * components.&#xD;   *&#xD;   * @return {ReactComponent} the public component instance.&#xD;   * @internal&#xD;   */&#xD;  getPublicInstance: function () {&#xD;    var inst = this._instance;&#xD;    if (this._compositeType === CompositeTypes.StatelessFunctional) {&#xD;      return null;&#xD;    }&#xD;    return inst;&#xD;  },&#xD;&#xD;  // Stub&#xD;  _instantiateReactComponent: null&#xD;&#xD;};&#xD;&#xD;module.exports = ReactCompositeComponent;&#xD;&#xD;/***/ }),&#xD;/* 407 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/&#xD;&#xD;&#xD;&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactDefaultInjection = __webpack_require__(424);&#xD;var ReactMount = __webpack_require__(163);&#xD;var ReactReconciler = __webpack_require__(42);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;var ReactVersion = __webpack_require__(439);&#xD;&#xD;var findDOMNode = __webpack_require__(456);&#xD;var getHostComponentFromComposite = __webpack_require__(169);&#xD;var renderSubtreeIntoContainer = __webpack_require__(463);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;ReactDefaultInjection.inject();&#xD;&#xD;var ReactDOM = {&#xD;  findDOMNode: findDOMNode,&#xD;  render: ReactMount.render,&#xD;  unmountComponentAtNode: ReactMount.unmountComponentAtNode,&#xD;  version: ReactVersion,&#xD;&#xD;  /* eslint-disable camelcase */&#xD;  unstable_batchedUpdates: ReactUpdates.batchedUpdates,&#xD;  unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer&#xD;};&#xD;&#xD;// Inject the runtime into a devtools global hook regardless of browser.&#xD;// Allows for debugging when the hook is injected on the page.&#xD;if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== &apos;undefined&apos; &amp;&amp; typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === &apos;function&apos;) {&#xD;  __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({&#xD;    ComponentTree: {&#xD;      getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,&#xD;      getNodeFromInstance: function (inst) {&#xD;        // inst is an internal instance (but could be a composite)&#xD;        if (inst._renderedComponent) {&#xD;          inst = getHostComponentFromComposite(inst);&#xD;        }&#xD;        if (inst) {&#xD;          return ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;        } else {&#xD;          return null;&#xD;        }&#xD;      }&#xD;    },&#xD;    Mount: ReactMount,&#xD;    Reconciler: ReactReconciler&#xD;  });&#xD;}&#xD;&#xD;if (true) {&#xD;  var ExecutionEnvironment = __webpack_require__(15);&#xD;  if (ExecutionEnvironment.canUseDOM &amp;&amp; window.top === window.self) {&#xD;&#xD;    // First check if devtools is not installed&#xD;    if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === &apos;undefined&apos;) {&#xD;      // If we&apos;re in Chrome or Firefox, provide a download link if not installed.&#xD;      if (navigator.userAgent.indexOf(&apos;Chrome&apos;) &gt; -1 &amp;&amp; navigator.userAgent.indexOf(&apos;Edge&apos;) === -1 || navigator.userAgent.indexOf(&apos;Firefox&apos;) &gt; -1) {&#xD;        // Firefox does not have the issue with devtools loaded over file://&#xD;        var showFileUrlMessage = window.location.protocol.indexOf(&apos;http&apos;) === -1 &amp;&amp; navigator.userAgent.indexOf(&apos;Firefox&apos;) === -1;&#xD;        console.debug(&apos;Download the React DevTools &apos; + (showFileUrlMessage ? &apos;and use an HTTP server (instead of a file: URL) &apos; : &apos;&apos;) + &apos;for a better development experience: &apos; + &apos;https://fb.me/react-devtools&apos;);&#xD;      }&#xD;    }&#xD;&#xD;    var testFunc = function testFn() {};&#xD;     true ? warning((testFunc.name || testFunc.toString()).indexOf(&apos;testFn&apos;) !== -1, &apos;It looks like you\&apos;re using a minified copy of the development build &apos; + &apos;of React. When deploying React apps to production, make sure to use &apos; + &apos;the production build which skips development warnings and is faster. &apos; + &apos;See https://fb.me/react-minification for more details.&apos;) : void 0;&#xD;&#xD;    // If we&apos;re in IE8, check to see if we are in compatibility mode and provide&#xD;    // information on preventing compatibility mode&#xD;    var ieCompatibilityMode = document.documentMode &amp;&amp; document.documentMode &lt; 8;&#xD;&#xD;     true ? warning(!ieCompatibilityMode, &apos;Internet Explorer is running in compatibility mode; please add the &apos; + &apos;following tag to your HTML to prevent this from happening: &apos; + &apos;&lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&gt;&apos;) : void 0;&#xD;&#xD;    var expectedFeatures = [&#xD;    // shims&#xD;    Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];&#xD;&#xD;    for (var i = 0; i &lt; expectedFeatures.length; i++) {&#xD;      if (!expectedFeatures[i]) {&#xD;         true ? warning(false, &apos;One or more ES5 shims expected by React are not available: &apos; + &apos;https://fb.me/react-warning-polyfills&apos;) : void 0;&#xD;        break;&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;if (true) {&#xD;  var ReactInstrumentation = __webpack_require__(21);&#xD;  var ReactDOMUnknownPropertyHook = __webpack_require__(421);&#xD;  var ReactDOMNullInputValuePropHook = __webpack_require__(415);&#xD;  var ReactDOMInvalidARIAHook = __webpack_require__(414);&#xD;&#xD;  ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);&#xD;  ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);&#xD;  ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);&#xD;}&#xD;&#xD;module.exports = ReactDOM;&#xD;&#xD;/***/ }),&#xD;/* 408 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;/* global hasOwnProperty:true */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var AutoFocusUtils = __webpack_require__(395);&#xD;var CSSPropertyOperations = __webpack_require__(397);&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var DOMNamespaces = __webpack_require__(86);&#xD;var DOMProperty = __webpack_require__(28);&#xD;var DOMPropertyOperations = __webpack_require__(156);&#xD;var EventPluginHub = __webpack_require__(50);&#xD;var EventPluginRegistry = __webpack_require__(63);&#xD;var ReactBrowserEventEmitter = __webpack_require__(64);&#xD;var ReactDOMComponentFlags = __webpack_require__(157);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactDOMInput = __webpack_require__(413);&#xD;var ReactDOMOption = __webpack_require__(416);&#xD;var ReactDOMSelect = __webpack_require__(158);&#xD;var ReactDOMTextarea = __webpack_require__(419);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var ReactMultiChild = __webpack_require__(432);&#xD;var ReactServerRenderingTransaction = __webpack_require__(437);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var escapeTextContentForBrowser = __webpack_require__(67);&#xD;var invariant = __webpack_require__(3);&#xD;var isEventSupported = __webpack_require__(97);&#xD;var shallowEqual = __webpack_require__(82);&#xD;var validateDOMNesting = __webpack_require__(99);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var Flags = ReactDOMComponentFlags;&#xD;var deleteListener = EventPluginHub.deleteListener;&#xD;var getNode = ReactDOMComponentTree.getNodeFromInstance;&#xD;var listenTo = ReactBrowserEventEmitter.listenTo;&#xD;var registrationNameModules = EventPluginRegistry.registrationNameModules;&#xD;&#xD;// For quickly matching children type, to test if can be treated as content.&#xD;var CONTENT_TYPES = { &apos;string&apos;: true, &apos;number&apos;: true };&#xD;&#xD;var STYLE = &apos;style&apos;;&#xD;var HTML = &apos;__html&apos;;&#xD;var RESERVED_PROPS = {&#xD;  children: null,&#xD;  dangerouslySetInnerHTML: null,&#xD;  suppressContentEditableWarning: null&#xD;};&#xD;&#xD;// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).&#xD;var DOC_FRAGMENT_TYPE = 11;&#xD;&#xD;function getDeclarationErrorAddendum(internalInstance) {&#xD;  if (internalInstance) {&#xD;    var owner = internalInstance._currentElement._owner || null;&#xD;    if (owner) {&#xD;      var name = owner.getName();&#xD;      if (name) {&#xD;        return &apos; This DOM node was rendered by `&apos; + name + &apos;`.&apos;;&#xD;      }&#xD;    }&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;function friendlyStringify(obj) {&#xD;  if (typeof obj === &apos;object&apos;) {&#xD;    if (Array.isArray(obj)) {&#xD;      return &apos;[&apos; + obj.map(friendlyStringify).join(&apos;, &apos;) + &apos;]&apos;;&#xD;    } else {&#xD;      var pairs = [];&#xD;      for (var key in obj) {&#xD;        if (Object.prototype.hasOwnProperty.call(obj, key)) {&#xD;          var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);&#xD;          pairs.push(keyEscaped + &apos;: &apos; + friendlyStringify(obj[key]));&#xD;        }&#xD;      }&#xD;      return &apos;{&apos; + pairs.join(&apos;, &apos;) + &apos;}&apos;;&#xD;    }&#xD;  } else if (typeof obj === &apos;string&apos;) {&#xD;    return JSON.stringify(obj);&#xD;  } else if (typeof obj === &apos;function&apos;) {&#xD;    return &apos;[function object]&apos;;&#xD;  }&#xD;  // Differs from JSON.stringify in that undefined because undefined and that&#xD;  // inf and nan don&apos;t become null&#xD;  return String(obj);&#xD;}&#xD;&#xD;var styleMutationWarning = {};&#xD;&#xD;function checkAndWarnForMutatedStyle(style1, style2, component) {&#xD;  if (style1 == null || style2 == null) {&#xD;    return;&#xD;  }&#xD;  if (shallowEqual(style1, style2)) {&#xD;    return;&#xD;  }&#xD;&#xD;  var componentName = component._tag;&#xD;  var owner = component._currentElement._owner;&#xD;  var ownerName;&#xD;  if (owner) {&#xD;    ownerName = owner.getName();&#xD;  }&#xD;&#xD;  var hash = ownerName + &apos;|&apos; + componentName;&#xD;&#xD;  if (styleMutationWarning.hasOwnProperty(hash)) {&#xD;    return;&#xD;  }&#xD;&#xD;  styleMutationWarning[hash] = true;&#xD;&#xD;   true ? warning(false, &apos;`%s` was passed a style object that has previously been mutated. &apos; + &apos;Mutating `style` is deprecated. Consider cloning it beforehand. Check &apos; + &apos;the `render` %s. Previous style: %s. Mutated style: %s.&apos;, componentName, owner ? &apos;of `&apos; + ownerName + &apos;`&apos; : &apos;using &lt;&apos; + componentName + &apos;&gt;&apos;, friendlyStringify(style1), friendlyStringify(style2)) : void 0;&#xD;}&#xD;&#xD;/**&#xD; * @param {object} component&#xD; * @param {?object} props&#xD; */&#xD;function assertValidProps(component, props) {&#xD;  if (!props) {&#xD;    return;&#xD;  }&#xD;  // Note the use of `==` which checks for null or undefined.&#xD;  if (voidElementTags[component._tag]) {&#xD;    !(props.children == null &amp;&amp; props.dangerouslySetInnerHTML == null) ?  true ? invariant(false, &apos;%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s&apos;, component._tag, component._currentElement._owner ? &apos; Check the render method of &apos; + component._currentElement._owner.getName() + &apos;.&apos; : &apos;&apos;) : _prodInvariant(&apos;137&apos;, component._tag, component._currentElement._owner ? &apos; Check the render method of &apos; + component._currentElement._owner.getName() + &apos;.&apos; : &apos;&apos;) : void 0;&#xD;  }&#xD;  if (props.dangerouslySetInnerHTML != null) {&#xD;    !(props.children == null) ?  true ? invariant(false, &apos;Can only set one of `children` or `props.dangerouslySetInnerHTML`.&apos;) : _prodInvariant(&apos;60&apos;) : void 0;&#xD;    !(typeof props.dangerouslySetInnerHTML === &apos;object&apos; &amp;&amp; HTML in props.dangerouslySetInnerHTML) ?  true ? invariant(false, &apos;`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.&apos;) : _prodInvariant(&apos;61&apos;) : void 0;&#xD;  }&#xD;  if (true) {&#xD;     true ? warning(props.innerHTML == null, &apos;Directly setting property `innerHTML` is not permitted. &apos; + &apos;For more information, lookup documentation on `dangerouslySetInnerHTML`.&apos;) : void 0;&#xD;     true ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, &apos;A component is `contentEditable` and contains `children` managed by &apos; + &apos;React. It is now your responsibility to guarantee that none of &apos; + &apos;those nodes are unexpectedly modified or duplicated. This is &apos; + &apos;probably not intentional.&apos;) : void 0;&#xD;     true ? warning(props.onFocusIn == null &amp;&amp; props.onFocusOut == null, &apos;React uses onFocus and onBlur instead of onFocusIn and onFocusOut. &apos; + &apos;All React events are normalized to bubble, so onFocusIn and onFocusOut &apos; + &apos;are not needed/supported by React.&apos;) : void 0;&#xD;  }&#xD;  !(props.style == null || typeof props.style === &apos;object&apos;) ?  true ? invariant(false, &apos;The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \&apos;em\&apos;}} when using JSX.%s&apos;, getDeclarationErrorAddendum(component)) : _prodInvariant(&apos;62&apos;, getDeclarationErrorAddendum(component)) : void 0;&#xD;}&#xD;&#xD;function enqueuePutListener(inst, registrationName, listener, transaction) {&#xD;  if (transaction instanceof ReactServerRenderingTransaction) {&#xD;    return;&#xD;  }&#xD;  if (true) {&#xD;    // IE8 has no API for event capturing and the `onScroll` event doesn&apos;t&#xD;    // bubble.&#xD;     true ? warning(registrationName !== &apos;onScroll&apos; || isEventSupported(&apos;scroll&apos;, true), &apos;This browser doesn\&apos;t support the `onScroll` event&apos;) : void 0;&#xD;  }&#xD;  var containerInfo = inst._hostContainerInfo;&#xD;  var isDocumentFragment = containerInfo._node &amp;&amp; containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;&#xD;  var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;&#xD;  listenTo(registrationName, doc);&#xD;  transaction.getReactMountReady().enqueue(putListener, {&#xD;    inst: inst,&#xD;    registrationName: registrationName,&#xD;    listener: listener&#xD;  });&#xD;}&#xD;&#xD;function putListener() {&#xD;  var listenerToPut = this;&#xD;  EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);&#xD;}&#xD;&#xD;function inputPostMount() {&#xD;  var inst = this;&#xD;  ReactDOMInput.postMountWrapper(inst);&#xD;}&#xD;&#xD;function textareaPostMount() {&#xD;  var inst = this;&#xD;  ReactDOMTextarea.postMountWrapper(inst);&#xD;}&#xD;&#xD;function optionPostMount() {&#xD;  var inst = this;&#xD;  ReactDOMOption.postMountWrapper(inst);&#xD;}&#xD;&#xD;var setAndValidateContentChildDev = emptyFunction;&#xD;if (true) {&#xD;  setAndValidateContentChildDev = function (content) {&#xD;    var hasExistingContent = this._contentDebugID != null;&#xD;    var debugID = this._debugID;&#xD;    // This ID represents the inlined child that has no backing instance:&#xD;    var contentDebugID = -debugID;&#xD;&#xD;    if (content == null) {&#xD;      if (hasExistingContent) {&#xD;        ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);&#xD;      }&#xD;      this._contentDebugID = null;&#xD;      return;&#xD;    }&#xD;&#xD;    validateDOMNesting(null, String(content), this, this._ancestorInfo);&#xD;    this._contentDebugID = contentDebugID;&#xD;    if (hasExistingContent) {&#xD;      ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);&#xD;      ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);&#xD;    } else {&#xD;      ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);&#xD;      ReactInstrumentation.debugTool.onMountComponent(contentDebugID);&#xD;      ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;// There are so many media events, it makes sense to just&#xD;// maintain a list rather than create a `trapBubbledEvent` for each&#xD;var mediaEvents = {&#xD;  topAbort: &apos;abort&apos;,&#xD;  topCanPlay: &apos;canplay&apos;,&#xD;  topCanPlayThrough: &apos;canplaythrough&apos;,&#xD;  topDurationChange: &apos;durationchange&apos;,&#xD;  topEmptied: &apos;emptied&apos;,&#xD;  topEncrypted: &apos;encrypted&apos;,&#xD;  topEnded: &apos;ended&apos;,&#xD;  topError: &apos;error&apos;,&#xD;  topLoadedData: &apos;loadeddata&apos;,&#xD;  topLoadedMetadata: &apos;loadedmetadata&apos;,&#xD;  topLoadStart: &apos;loadstart&apos;,&#xD;  topPause: &apos;pause&apos;,&#xD;  topPlay: &apos;play&apos;,&#xD;  topPlaying: &apos;playing&apos;,&#xD;  topProgress: &apos;progress&apos;,&#xD;  topRateChange: &apos;ratechange&apos;,&#xD;  topSeeked: &apos;seeked&apos;,&#xD;  topSeeking: &apos;seeking&apos;,&#xD;  topStalled: &apos;stalled&apos;,&#xD;  topSuspend: &apos;suspend&apos;,&#xD;  topTimeUpdate: &apos;timeupdate&apos;,&#xD;  topVolumeChange: &apos;volumechange&apos;,&#xD;  topWaiting: &apos;waiting&apos;&#xD;};&#xD;&#xD;function trapBubbledEventsLocal() {&#xD;  var inst = this;&#xD;  // If a component renders to null or if another component fatals and causes&#xD;  // the state of the tree to be corrupted, `node` here can be null.&#xD;  !inst._rootNodeID ?  true ? invariant(false, &apos;Must be mounted to trap events&apos;) : _prodInvariant(&apos;63&apos;) : void 0;&#xD;  var node = getNode(inst);&#xD;  !node ?  true ? invariant(false, &apos;trapBubbledEvent(...): Requires node to be rendered.&apos;) : _prodInvariant(&apos;64&apos;) : void 0;&#xD;&#xD;  switch (inst._tag) {&#xD;    case &apos;iframe&apos;:&#xD;    case &apos;object&apos;:&#xD;      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topLoad&apos;, &apos;load&apos;, node)];&#xD;      break;&#xD;    case &apos;video&apos;:&#xD;    case &apos;audio&apos;:&#xD;&#xD;      inst._wrapperState.listeners = [];&#xD;      // Create listener for each media event&#xD;      for (var event in mediaEvents) {&#xD;        if (mediaEvents.hasOwnProperty(event)) {&#xD;          inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));&#xD;        }&#xD;      }&#xD;      break;&#xD;    case &apos;source&apos;:&#xD;      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topError&apos;, &apos;error&apos;, node)];&#xD;      break;&#xD;    case &apos;img&apos;:&#xD;      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topError&apos;, &apos;error&apos;, node), ReactBrowserEventEmitter.trapBubbledEvent(&apos;topLoad&apos;, &apos;load&apos;, node)];&#xD;      break;&#xD;    case &apos;form&apos;:&#xD;      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topReset&apos;, &apos;reset&apos;, node), ReactBrowserEventEmitter.trapBubbledEvent(&apos;topSubmit&apos;, &apos;submit&apos;, node)];&#xD;      break;&#xD;    case &apos;input&apos;:&#xD;    case &apos;select&apos;:&#xD;    case &apos;textarea&apos;:&#xD;      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topInvalid&apos;, &apos;invalid&apos;, node)];&#xD;      break;&#xD;  }&#xD;}&#xD;&#xD;function postUpdateSelectWrapper() {&#xD;  ReactDOMSelect.postUpdateWrapper(this);&#xD;}&#xD;&#xD;// For HTML, certain tags should omit their close tag. We keep a whitelist for&#xD;// those special-case tags.&#xD;&#xD;var omittedCloseTags = {&#xD;  &apos;area&apos;: true,&#xD;  &apos;base&apos;: true,&#xD;  &apos;br&apos;: true,&#xD;  &apos;col&apos;: true,&#xD;  &apos;embed&apos;: true,&#xD;  &apos;hr&apos;: true,&#xD;  &apos;img&apos;: true,&#xD;  &apos;input&apos;: true,&#xD;  &apos;keygen&apos;: true,&#xD;  &apos;link&apos;: true,&#xD;  &apos;meta&apos;: true,&#xD;  &apos;param&apos;: true,&#xD;  &apos;source&apos;: true,&#xD;  &apos;track&apos;: true,&#xD;  &apos;wbr&apos;: true&#xD;};&#xD;&#xD;var newlineEatingTags = {&#xD;  &apos;listing&apos;: true,&#xD;  &apos;pre&apos;: true,&#xD;  &apos;textarea&apos;: true&#xD;};&#xD;&#xD;// For HTML, certain tags cannot have children. This has the same purpose as&#xD;// `omittedCloseTags` except that `menuitem` should still have its closing tag.&#xD;&#xD;var voidElementTags = _assign({&#xD;  &apos;menuitem&apos;: true&#xD;}, omittedCloseTags);&#xD;&#xD;// We accept any tag to be rendered but since this gets injected into arbitrary&#xD;// HTML, we want to make sure that it&apos;s a safe tag.&#xD;// http://www.w3.org/TR/REC-xml/#NT-Name&#xD;&#xD;var VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\.\-\d]*$/; // Simplified subset&#xD;var validatedTagCache = {};&#xD;var hasOwnProperty = {}.hasOwnProperty;&#xD;&#xD;function validateDangerousTag(tag) {&#xD;  if (!hasOwnProperty.call(validatedTagCache, tag)) {&#xD;    !VALID_TAG_REGEX.test(tag) ?  true ? invariant(false, &apos;Invalid tag: %s&apos;, tag) : _prodInvariant(&apos;65&apos;, tag) : void 0;&#xD;    validatedTagCache[tag] = true;&#xD;  }&#xD;}&#xD;&#xD;function isCustomComponent(tagName, props) {&#xD;  return tagName.indexOf(&apos;-&apos;) &gt;= 0 || props.is != null;&#xD;}&#xD;&#xD;var globalIdCounter = 1;&#xD;&#xD;/**&#xD; * Creates a new React class that is idempotent and capable of containing other&#xD; * React components. It accepts event listeners and DOM properties that are&#xD; * valid according to `DOMProperty`.&#xD; *&#xD; *  - Event listeners: `onClick`, `onMouseDown`, etc.&#xD; *  - DOM properties: `className`, `name`, `title`, etc.&#xD; *&#xD; * The `style` property functions differently from the DOM API. It accepts an&#xD; * object mapping of style properties to values.&#xD; *&#xD; * @constructor ReactDOMComponent&#xD; * @extends ReactMultiChild&#xD; */&#xD;function ReactDOMComponent(element) {&#xD;  var tag = element.type;&#xD;  validateDangerousTag(tag);&#xD;  this._currentElement = element;&#xD;  this._tag = tag.toLowerCase();&#xD;  this._namespaceURI = null;&#xD;  this._renderedChildren = null;&#xD;  this._previousStyle = null;&#xD;  this._previousStyleCopy = null;&#xD;  this._hostNode = null;&#xD;  this._hostParent = null;&#xD;  this._rootNodeID = 0;&#xD;  this._domID = 0;&#xD;  this._hostContainerInfo = null;&#xD;  this._wrapperState = null;&#xD;  this._topLevelWrapper = null;&#xD;  this._flags = 0;&#xD;  if (true) {&#xD;    this._ancestorInfo = null;&#xD;    setAndValidateContentChildDev.call(this, null);&#xD;  }&#xD;}&#xD;&#xD;ReactDOMComponent.displayName = &apos;ReactDOMComponent&apos;;&#xD;&#xD;ReactDOMComponent.Mixin = {&#xD;&#xD;  /**&#xD;   * Generates root tag markup then recurses. This method has side effects and&#xD;   * is not idempotent.&#xD;   *&#xD;   * @internal&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {?ReactDOMComponent} the parent component instance&#xD;   * @param {?object} info about the host container&#xD;   * @param {object} context&#xD;   * @return {string} The computed markup.&#xD;   */&#xD;  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {&#xD;    this._rootNodeID = globalIdCounter++;&#xD;    this._domID = hostContainerInfo._idCounter++;&#xD;    this._hostParent = hostParent;&#xD;    this._hostContainerInfo = hostContainerInfo;&#xD;&#xD;    var props = this._currentElement.props;&#xD;&#xD;    switch (this._tag) {&#xD;      case &apos;audio&apos;:&#xD;      case &apos;form&apos;:&#xD;      case &apos;iframe&apos;:&#xD;      case &apos;img&apos;:&#xD;      case &apos;link&apos;:&#xD;      case &apos;object&apos;:&#xD;      case &apos;source&apos;:&#xD;      case &apos;video&apos;:&#xD;        this._wrapperState = {&#xD;          listeners: null&#xD;        };&#xD;        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);&#xD;        break;&#xD;      case &apos;input&apos;:&#xD;        ReactDOMInput.mountWrapper(this, props, hostParent);&#xD;        props = ReactDOMInput.getHostProps(this, props);&#xD;        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);&#xD;        break;&#xD;      case &apos;option&apos;:&#xD;        ReactDOMOption.mountWrapper(this, props, hostParent);&#xD;        props = ReactDOMOption.getHostProps(this, props);&#xD;        break;&#xD;      case &apos;select&apos;:&#xD;        ReactDOMSelect.mountWrapper(this, props, hostParent);&#xD;        props = ReactDOMSelect.getHostProps(this, props);&#xD;        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);&#xD;        break;&#xD;      case &apos;textarea&apos;:&#xD;        ReactDOMTextarea.mountWrapper(this, props, hostParent);&#xD;        props = ReactDOMTextarea.getHostProps(this, props);&#xD;        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);&#xD;        break;&#xD;    }&#xD;&#xD;    assertValidProps(this, props);&#xD;&#xD;    // We create tags in the namespace of their parent container, except HTML&#xD;    // tags get no namespace.&#xD;    var namespaceURI;&#xD;    var parentTag;&#xD;    if (hostParent != null) {&#xD;      namespaceURI = hostParent._namespaceURI;&#xD;      parentTag = hostParent._tag;&#xD;    } else if (hostContainerInfo._tag) {&#xD;      namespaceURI = hostContainerInfo._namespaceURI;&#xD;      parentTag = hostContainerInfo._tag;&#xD;    }&#xD;    if (namespaceURI == null || namespaceURI === DOMNamespaces.svg &amp;&amp; parentTag === &apos;foreignobject&apos;) {&#xD;      namespaceURI = DOMNamespaces.html;&#xD;    }&#xD;    if (namespaceURI === DOMNamespaces.html) {&#xD;      if (this._tag === &apos;svg&apos;) {&#xD;        namespaceURI = DOMNamespaces.svg;&#xD;      } else if (this._tag === &apos;math&apos;) {&#xD;        namespaceURI = DOMNamespaces.mathml;&#xD;      }&#xD;    }&#xD;    this._namespaceURI = namespaceURI;&#xD;&#xD;    if (true) {&#xD;      var parentInfo;&#xD;      if (hostParent != null) {&#xD;        parentInfo = hostParent._ancestorInfo;&#xD;      } else if (hostContainerInfo._tag) {&#xD;        parentInfo = hostContainerInfo._ancestorInfo;&#xD;      }&#xD;      if (parentInfo) {&#xD;        // parentInfo should always be present except for the top-level&#xD;        // component when server rendering&#xD;        validateDOMNesting(this._tag, null, this, parentInfo);&#xD;      }&#xD;      this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);&#xD;    }&#xD;&#xD;    var mountImage;&#xD;    if (transaction.useCreateElement) {&#xD;      var ownerDocument = hostContainerInfo._ownerDocument;&#xD;      var el;&#xD;      if (namespaceURI === DOMNamespaces.html) {&#xD;        if (this._tag === &apos;script&apos;) {&#xD;          // Create the script via .innerHTML so its "parser-inserted" flag is&#xD;          // set to true and it does not execute&#xD;          var div = ownerDocument.createElement(&apos;div&apos;);&#xD;          var type = this._currentElement.type;&#xD;          div.innerHTML = &apos;&lt;&apos; + type + &apos;&gt;&lt;/&apos; + type + &apos;&gt;&apos;;&#xD;          el = div.removeChild(div.firstChild);&#xD;        } else if (props.is) {&#xD;          el = ownerDocument.createElement(this._currentElement.type, props.is);&#xD;        } else {&#xD;          // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.&#xD;          // See discussion in https://github.com/facebook/react/pull/6896&#xD;          // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240&#xD;          el = ownerDocument.createElement(this._currentElement.type);&#xD;        }&#xD;      } else {&#xD;        el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);&#xD;      }&#xD;      ReactDOMComponentTree.precacheNode(this, el);&#xD;      this._flags |= Flags.hasCachedChildNodes;&#xD;      if (!this._hostParent) {&#xD;        DOMPropertyOperations.setAttributeForRoot(el);&#xD;      }&#xD;      this._updateDOMProperties(null, props, transaction);&#xD;      var lazyTree = DOMLazyTree(el);&#xD;      this._createInitialChildren(transaction, props, context, lazyTree);&#xD;      mountImage = lazyTree;&#xD;    } else {&#xD;      var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);&#xD;      var tagContent = this._createContentMarkup(transaction, props, context);&#xD;      if (!tagContent &amp;&amp; omittedCloseTags[this._tag]) {&#xD;        mountImage = tagOpen + &apos;/&gt;&apos;;&#xD;      } else {&#xD;        mountImage = tagOpen + &apos;&gt;&apos; + tagContent + &apos;&lt;/&apos; + this._currentElement.type + &apos;&gt;&apos;;&#xD;      }&#xD;    }&#xD;&#xD;    switch (this._tag) {&#xD;      case &apos;input&apos;:&#xD;        transaction.getReactMountReady().enqueue(inputPostMount, this);&#xD;        if (props.autoFocus) {&#xD;          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);&#xD;        }&#xD;        break;&#xD;      case &apos;textarea&apos;:&#xD;        transaction.getReactMountReady().enqueue(textareaPostMount, this);&#xD;        if (props.autoFocus) {&#xD;          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);&#xD;        }&#xD;        break;&#xD;      case &apos;select&apos;:&#xD;        if (props.autoFocus) {&#xD;          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);&#xD;        }&#xD;        break;&#xD;      case &apos;button&apos;:&#xD;        if (props.autoFocus) {&#xD;          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);&#xD;        }&#xD;        break;&#xD;      case &apos;option&apos;:&#xD;        transaction.getReactMountReady().enqueue(optionPostMount, this);&#xD;        break;&#xD;    }&#xD;&#xD;    return mountImage;&#xD;  },&#xD;&#xD;  /**&#xD;   * Creates markup for the open tag and all attributes.&#xD;   *&#xD;   * This method has side effects because events get registered.&#xD;   *&#xD;   * Iterating over object properties is faster than iterating over arrays.&#xD;   * @see http://jsperf.com/obj-vs-arr-iteration&#xD;   *&#xD;   * @private&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {object} props&#xD;   * @return {string} Markup of opening tag.&#xD;   */&#xD;  _createOpenTagMarkupAndPutListeners: function (transaction, props) {&#xD;    var ret = &apos;&lt;&apos; + this._currentElement.type;&#xD;&#xD;    for (var propKey in props) {&#xD;      if (!props.hasOwnProperty(propKey)) {&#xD;        continue;&#xD;      }&#xD;      var propValue = props[propKey];&#xD;      if (propValue == null) {&#xD;        continue;&#xD;      }&#xD;      if (registrationNameModules.hasOwnProperty(propKey)) {&#xD;        if (propValue) {&#xD;          enqueuePutListener(this, propKey, propValue, transaction);&#xD;        }&#xD;      } else {&#xD;        if (propKey === STYLE) {&#xD;          if (propValue) {&#xD;            if (true) {&#xD;              // See `_updateDOMProperties`. style block&#xD;              this._previousStyle = propValue;&#xD;            }&#xD;            propValue = this._previousStyleCopy = _assign({}, props.style);&#xD;          }&#xD;          propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);&#xD;        }&#xD;        var markup = null;&#xD;        if (this._tag != null &amp;&amp; isCustomComponent(this._tag, props)) {&#xD;          if (!RESERVED_PROPS.hasOwnProperty(propKey)) {&#xD;            markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);&#xD;          }&#xD;        } else {&#xD;          markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);&#xD;        }&#xD;        if (markup) {&#xD;          ret += &apos; &apos; + markup;&#xD;        }&#xD;      }&#xD;    }&#xD;&#xD;    // For static pages, no need to put React ID and checksum. Saves lots of&#xD;    // bytes.&#xD;    if (transaction.renderToStaticMarkup) {&#xD;      return ret;&#xD;    }&#xD;&#xD;    if (!this._hostParent) {&#xD;      ret += &apos; &apos; + DOMPropertyOperations.createMarkupForRoot();&#xD;    }&#xD;    ret += &apos; &apos; + DOMPropertyOperations.createMarkupForID(this._domID);&#xD;    return ret;&#xD;  },&#xD;&#xD;  /**&#xD;   * Creates markup for the content between the tags.&#xD;   *&#xD;   * @private&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {object} props&#xD;   * @param {object} context&#xD;   * @return {string} Content markup.&#xD;   */&#xD;  _createContentMarkup: function (transaction, props, context) {&#xD;    var ret = &apos;&apos;;&#xD;&#xD;    // Intentional use of != to avoid catching zero/false.&#xD;    var innerHTML = props.dangerouslySetInnerHTML;&#xD;    if (innerHTML != null) {&#xD;      if (innerHTML.__html != null) {&#xD;        ret = innerHTML.__html;&#xD;      }&#xD;    } else {&#xD;      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;&#xD;      var childrenToUse = contentToUse != null ? null : props.children;&#xD;      if (contentToUse != null) {&#xD;        // TODO: Validate that text is allowed as a child of this node&#xD;        ret = escapeTextContentForBrowser(contentToUse);&#xD;        if (true) {&#xD;          setAndValidateContentChildDev.call(this, contentToUse);&#xD;        }&#xD;      } else if (childrenToUse != null) {&#xD;        var mountImages = this.mountChildren(childrenToUse, transaction, context);&#xD;        ret = mountImages.join(&apos;&apos;);&#xD;      }&#xD;    }&#xD;    if (newlineEatingTags[this._tag] &amp;&amp; ret.charAt(0) === &apos;\n&apos;) {&#xD;      // text/html ignores the first character in these tags if it&apos;s a newline&#xD;      // Prefer to break application/xml over text/html (for now) by adding&#xD;      // a newline specifically to get eaten by the parser. (Alternately for&#xD;      // textareas, replacing "^\n" with "\r\n" doesn&apos;t get eaten, and the first&#xD;      // \r is normalized out by HTMLTextAreaElement#value.)&#xD;      // See: &lt;http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre&gt;&#xD;      // See: &lt;http://www.w3.org/TR/html5/syntax.html#element-restrictions&gt;&#xD;      // See: &lt;http://www.w3.org/TR/html5/syntax.html#newlines&gt;&#xD;      // See: Parsing of "textarea" "listing" and "pre" elements&#xD;      //  from &lt;http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody&gt;&#xD;      return &apos;\n&apos; + ret;&#xD;    } else {&#xD;      return ret;&#xD;    }&#xD;  },&#xD;&#xD;  _createInitialChildren: function (transaction, props, context, lazyTree) {&#xD;    // Intentional use of != to avoid catching zero/false.&#xD;    var innerHTML = props.dangerouslySetInnerHTML;&#xD;    if (innerHTML != null) {&#xD;      if (innerHTML.__html != null) {&#xD;        DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);&#xD;      }&#xD;    } else {&#xD;      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;&#xD;      var childrenToUse = contentToUse != null ? null : props.children;&#xD;      // TODO: Validate that text is allowed as a child of this node&#xD;      if (contentToUse != null) {&#xD;        // Avoid setting textContent when the text is empty. In IE11 setting&#xD;        // textContent on a text area will cause the placeholder to not&#xD;        // show within the textarea until it has been focused and blurred again.&#xD;        // https://github.com/facebook/react/issues/6731#issuecomment-254874553&#xD;        if (contentToUse !== &apos;&apos;) {&#xD;          if (true) {&#xD;            setAndValidateContentChildDev.call(this, contentToUse);&#xD;          }&#xD;          DOMLazyTree.queueText(lazyTree, contentToUse);&#xD;        }&#xD;      } else if (childrenToUse != null) {&#xD;        var mountImages = this.mountChildren(childrenToUse, transaction, context);&#xD;        for (var i = 0; i &lt; mountImages.length; i++) {&#xD;          DOMLazyTree.queueChild(lazyTree, mountImages[i]);&#xD;        }&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Receives a next element and updates the component.&#xD;   *&#xD;   * @internal&#xD;   * @param {ReactElement} nextElement&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @param {object} context&#xD;   */&#xD;  receiveComponent: function (nextElement, transaction, context) {&#xD;    var prevElement = this._currentElement;&#xD;    this._currentElement = nextElement;&#xD;    this.updateComponent(transaction, prevElement, nextElement, context);&#xD;  },&#xD;&#xD;  /**&#xD;   * Updates a DOM component after it has already been allocated and&#xD;   * attached to the DOM. Reconciles the root DOM node, then recurses.&#xD;   *&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {ReactElement} prevElement&#xD;   * @param {ReactElement} nextElement&#xD;   * @internal&#xD;   * @overridable&#xD;   */&#xD;  updateComponent: function (transaction, prevElement, nextElement, context) {&#xD;    var lastProps = prevElement.props;&#xD;    var nextProps = this._currentElement.props;&#xD;&#xD;    switch (this._tag) {&#xD;      case &apos;input&apos;:&#xD;        lastProps = ReactDOMInput.getHostProps(this, lastProps);&#xD;        nextProps = ReactDOMInput.getHostProps(this, nextProps);&#xD;        break;&#xD;      case &apos;option&apos;:&#xD;        lastProps = ReactDOMOption.getHostProps(this, lastProps);&#xD;        nextProps = ReactDOMOption.getHostProps(this, nextProps);&#xD;        break;&#xD;      case &apos;select&apos;:&#xD;        lastProps = ReactDOMSelect.getHostProps(this, lastProps);&#xD;        nextProps = ReactDOMSelect.getHostProps(this, nextProps);&#xD;        break;&#xD;      case &apos;textarea&apos;:&#xD;        lastProps = ReactDOMTextarea.getHostProps(this, lastProps);&#xD;        nextProps = ReactDOMTextarea.getHostProps(this, nextProps);&#xD;        break;&#xD;    }&#xD;&#xD;    assertValidProps(this, nextProps);&#xD;    this._updateDOMProperties(lastProps, nextProps, transaction);&#xD;    this._updateDOMChildren(lastProps, nextProps, transaction, context);&#xD;&#xD;    switch (this._tag) {&#xD;      case &apos;input&apos;:&#xD;        // Update the wrapper around inputs *after* updating props. This has to&#xD;        // happen after `_updateDOMProperties`. Otherwise HTML5 input validations&#xD;        // raise warnings and prevent the new value from being assigned.&#xD;        ReactDOMInput.updateWrapper(this);&#xD;        break;&#xD;      case &apos;textarea&apos;:&#xD;        ReactDOMTextarea.updateWrapper(this);&#xD;        break;&#xD;      case &apos;select&apos;:&#xD;        // &lt;select&gt; value update needs to occur after &lt;option&gt; children&#xD;        // reconciliation&#xD;        transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);&#xD;        break;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Reconciles the properties by detecting differences in property values and&#xD;   * updating the DOM as necessary. This function is probably the single most&#xD;   * critical path for performance optimization.&#xD;   *&#xD;   * TODO: Benchmark whether checking for changed values in memory actually&#xD;   *       improves performance (especially statically positioned elements).&#xD;   * TODO: Benchmark the effects of putting this at the top since 99% of props&#xD;   *       do not change for a given reconciliation.&#xD;   * TODO: Benchmark areas that can be improved with caching.&#xD;   *&#xD;   * @private&#xD;   * @param {object} lastProps&#xD;   * @param {object} nextProps&#xD;   * @param {?DOMElement} node&#xD;   */&#xD;  _updateDOMProperties: function (lastProps, nextProps, transaction) {&#xD;    var propKey;&#xD;    var styleName;&#xD;    var styleUpdates;&#xD;    for (propKey in lastProps) {&#xD;      if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {&#xD;        continue;&#xD;      }&#xD;      if (propKey === STYLE) {&#xD;        var lastStyle = this._previousStyleCopy;&#xD;        for (styleName in lastStyle) {&#xD;          if (lastStyle.hasOwnProperty(styleName)) {&#xD;            styleUpdates = styleUpdates || {};&#xD;            styleUpdates[styleName] = &apos;&apos;;&#xD;          }&#xD;        }&#xD;        this._previousStyleCopy = null;&#xD;      } else if (registrationNameModules.hasOwnProperty(propKey)) {&#xD;        if (lastProps[propKey]) {&#xD;          // Only call deleteListener if there was a listener previously or&#xD;          // else willDeleteListener gets called when there wasn&apos;t actually a&#xD;          // listener (e.g., onClick={null})&#xD;          deleteListener(this, propKey);&#xD;        }&#xD;      } else if (isCustomComponent(this._tag, lastProps)) {&#xD;        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {&#xD;          DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);&#xD;        }&#xD;      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {&#xD;        DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);&#xD;      }&#xD;    }&#xD;    for (propKey in nextProps) {&#xD;      var nextProp = nextProps[propKey];&#xD;      var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;&#xD;      if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null &amp;&amp; lastProp == null) {&#xD;        continue;&#xD;      }&#xD;      if (propKey === STYLE) {&#xD;        if (nextProp) {&#xD;          if (true) {&#xD;            checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);&#xD;            this._previousStyle = nextProp;&#xD;          }&#xD;          nextProp = this._previousStyleCopy = _assign({}, nextProp);&#xD;        } else {&#xD;          this._previousStyleCopy = null;&#xD;        }&#xD;        if (lastProp) {&#xD;          // Unset styles on `lastProp` but not on `nextProp`.&#xD;          for (styleName in lastProp) {&#xD;            if (lastProp.hasOwnProperty(styleName) &amp;&amp; (!nextProp || !nextProp.hasOwnProperty(styleName))) {&#xD;              styleUpdates = styleUpdates || {};&#xD;              styleUpdates[styleName] = &apos;&apos;;&#xD;            }&#xD;          }&#xD;          // Update styles that changed since `lastProp`.&#xD;          for (styleName in nextProp) {&#xD;            if (nextProp.hasOwnProperty(styleName) &amp;&amp; lastProp[styleName] !== nextProp[styleName]) {&#xD;              styleUpdates = styleUpdates || {};&#xD;              styleUpdates[styleName] = nextProp[styleName];&#xD;            }&#xD;          }&#xD;        } else {&#xD;          // Relies on `updateStylesByID` not mutating `styleUpdates`.&#xD;          styleUpdates = nextProp;&#xD;        }&#xD;      } else if (registrationNameModules.hasOwnProperty(propKey)) {&#xD;        if (nextProp) {&#xD;          enqueuePutListener(this, propKey, nextProp, transaction);&#xD;        } else if (lastProp) {&#xD;          deleteListener(this, propKey);&#xD;        }&#xD;      } else if (isCustomComponent(this._tag, nextProps)) {&#xD;        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {&#xD;          DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);&#xD;        }&#xD;      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {&#xD;        var node = getNode(this);&#xD;        // If we&apos;re updating to null or undefined, we should remove the property&#xD;        // from the DOM node instead of inadvertently setting to a string. This&#xD;        // brings us in line with the same behavior we have on initial render.&#xD;        if (nextProp != null) {&#xD;          DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);&#xD;        } else {&#xD;          DOMPropertyOperations.deleteValueForProperty(node, propKey);&#xD;        }&#xD;      }&#xD;    }&#xD;    if (styleUpdates) {&#xD;      CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Reconciles the children with the various properties that affect the&#xD;   * children content.&#xD;   *&#xD;   * @param {object} lastProps&#xD;   * @param {object} nextProps&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @param {object} context&#xD;   */&#xD;  _updateDOMChildren: function (lastProps, nextProps, transaction, context) {&#xD;    var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;&#xD;    var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;&#xD;&#xD;    var lastHtml = lastProps.dangerouslySetInnerHTML &amp;&amp; lastProps.dangerouslySetInnerHTML.__html;&#xD;    var nextHtml = nextProps.dangerouslySetInnerHTML &amp;&amp; nextProps.dangerouslySetInnerHTML.__html;&#xD;&#xD;    // Note the use of `!=` which checks for null or undefined.&#xD;    var lastChildren = lastContent != null ? null : lastProps.children;&#xD;    var nextChildren = nextContent != null ? null : nextProps.children;&#xD;&#xD;    // If we&apos;re switching from children to content/html or vice versa, remove&#xD;    // the old content&#xD;    var lastHasContentOrHtml = lastContent != null || lastHtml != null;&#xD;    var nextHasContentOrHtml = nextContent != null || nextHtml != null;&#xD;    if (lastChildren != null &amp;&amp; nextChildren == null) {&#xD;      this.updateChildren(null, transaction, context);&#xD;    } else if (lastHasContentOrHtml &amp;&amp; !nextHasContentOrHtml) {&#xD;      this.updateTextContent(&apos;&apos;);&#xD;      if (true) {&#xD;        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);&#xD;      }&#xD;    }&#xD;&#xD;    if (nextContent != null) {&#xD;      if (lastContent !== nextContent) {&#xD;        this.updateTextContent(&apos;&apos; + nextContent);&#xD;        if (true) {&#xD;          setAndValidateContentChildDev.call(this, nextContent);&#xD;        }&#xD;      }&#xD;    } else if (nextHtml != null) {&#xD;      if (lastHtml !== nextHtml) {&#xD;        this.updateMarkup(&apos;&apos; + nextHtml);&#xD;      }&#xD;      if (true) {&#xD;        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);&#xD;      }&#xD;    } else if (nextChildren != null) {&#xD;      if (true) {&#xD;        setAndValidateContentChildDev.call(this, null);&#xD;      }&#xD;&#xD;      this.updateChildren(nextChildren, transaction, context);&#xD;    }&#xD;  },&#xD;&#xD;  getHostNode: function () {&#xD;    return getNode(this);&#xD;  },&#xD;&#xD;  /**&#xD;   * Destroys all event registrations for this instance. Does not remove from&#xD;   * the DOM. That must be done by the parent.&#xD;   *&#xD;   * @internal&#xD;   */&#xD;  unmountComponent: function (safely) {&#xD;    switch (this._tag) {&#xD;      case &apos;audio&apos;:&#xD;      case &apos;form&apos;:&#xD;      case &apos;iframe&apos;:&#xD;      case &apos;img&apos;:&#xD;      case &apos;link&apos;:&#xD;      case &apos;object&apos;:&#xD;      case &apos;source&apos;:&#xD;      case &apos;video&apos;:&#xD;        var listeners = this._wrapperState.listeners;&#xD;        if (listeners) {&#xD;          for (var i = 0; i &lt; listeners.length; i++) {&#xD;            listeners[i].remove();&#xD;          }&#xD;        }&#xD;        break;&#xD;      case &apos;html&apos;:&#xD;      case &apos;head&apos;:&#xD;      case &apos;body&apos;:&#xD;        /**&#xD;         * Components like &lt;html&gt; &lt;head&gt; and &lt;body&gt; can&apos;t be removed or added&#xD;         * easily in a cross-browser way, however it&apos;s valuable to be able to&#xD;         * take advantage of React&apos;s reconciliation for styling and &lt;title&gt;&#xD;         * management. So we just document it and throw in dangerous cases.&#xD;         */&#xD;         true ?  true ? invariant(false, &apos;&lt;%s&gt; tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg &lt;html&gt;, &lt;head&gt;, and &lt;body&gt;) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.&apos;, this._tag) : _prodInvariant(&apos;66&apos;, this._tag) : void 0;&#xD;        break;&#xD;    }&#xD;&#xD;    this.unmountChildren(safely);&#xD;    ReactDOMComponentTree.uncacheNode(this);&#xD;    EventPluginHub.deleteAllListeners(this);&#xD;    this._rootNodeID = 0;&#xD;    this._domID = 0;&#xD;    this._wrapperState = null;&#xD;&#xD;    if (true) {&#xD;      setAndValidateContentChildDev.call(this, null);&#xD;    }&#xD;  },&#xD;&#xD;  getPublicInstance: function () {&#xD;    return getNode(this);&#xD;  }&#xD;&#xD;};&#xD;&#xD;_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);&#xD;&#xD;module.exports = ReactDOMComponent;&#xD;&#xD;/***/ }),&#xD;/* 409 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var validateDOMNesting = __webpack_require__(99);&#xD;&#xD;var DOC_NODE_TYPE = 9;&#xD;&#xD;function ReactDOMContainerInfo(topLevelWrapper, node) {&#xD;  var info = {&#xD;    _topLevelWrapper: topLevelWrapper,&#xD;    _idCounter: 1,&#xD;    _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,&#xD;    _node: node,&#xD;    _tag: node ? node.nodeName.toLowerCase() : null,&#xD;    _namespaceURI: node ? node.namespaceURI : null&#xD;  };&#xD;  if (true) {&#xD;    info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;&#xD;  }&#xD;  return info;&#xD;}&#xD;&#xD;module.exports = ReactDOMContainerInfo;&#xD;&#xD;/***/ }),&#xD;/* 410 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;&#xD;var ReactDOMEmptyComponent = function (instantiate) {&#xD;  // ReactCompositeComponent uses this:&#xD;  this._currentElement = null;&#xD;  // ReactDOMComponentTree uses these:&#xD;  this._hostNode = null;&#xD;  this._hostParent = null;&#xD;  this._hostContainerInfo = null;&#xD;  this._domID = 0;&#xD;};&#xD;_assign(ReactDOMEmptyComponent.prototype, {&#xD;  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {&#xD;    var domID = hostContainerInfo._idCounter++;&#xD;    this._domID = domID;&#xD;    this._hostParent = hostParent;&#xD;    this._hostContainerInfo = hostContainerInfo;&#xD;&#xD;    var nodeValue = &apos; react-empty: &apos; + this._domID + &apos; &apos;;&#xD;    if (transaction.useCreateElement) {&#xD;      var ownerDocument = hostContainerInfo._ownerDocument;&#xD;      var node = ownerDocument.createComment(nodeValue);&#xD;      ReactDOMComponentTree.precacheNode(this, node);&#xD;      return DOMLazyTree(node);&#xD;    } else {&#xD;      if (transaction.renderToStaticMarkup) {&#xD;        // Normally we&apos;d insert a comment node, but since this is a situation&#xD;        // where React won&apos;t take over (static pages), we can simply return&#xD;        // nothing.&#xD;        return &apos;&apos;;&#xD;      }&#xD;      return &apos;&lt;!--&apos; + nodeValue + &apos;--&gt;&apos;;&#xD;    }&#xD;  },&#xD;  receiveComponent: function () {},&#xD;  getHostNode: function () {&#xD;    return ReactDOMComponentTree.getNodeFromInstance(this);&#xD;  },&#xD;  unmountComponent: function () {&#xD;    ReactDOMComponentTree.uncacheNode(this);&#xD;  }&#xD;});&#xD;&#xD;module.exports = ReactDOMEmptyComponent;&#xD;&#xD;/***/ }),&#xD;/* 411 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactDOMFeatureFlags = {&#xD;  useCreateElement: true,&#xD;  useFiber: false&#xD;};&#xD;&#xD;module.exports = ReactDOMFeatureFlags;&#xD;&#xD;/***/ }),&#xD;/* 412 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMChildrenOperations = __webpack_require__(85);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;&#xD;/**&#xD; * Operations used to process updates to DOM nodes.&#xD; */&#xD;var ReactDOMIDOperations = {&#xD;&#xD;  /**&#xD;   * Updates a component&apos;s children by processing a series of updates.&#xD;   *&#xD;   * @param {array&lt;object&gt;} updates List of update configurations.&#xD;   * @internal&#xD;   */&#xD;  dangerouslyProcessChildrenUpdates: function (parentInst, updates) {&#xD;    var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);&#xD;    DOMChildrenOperations.processUpdates(node, updates);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactDOMIDOperations;&#xD;&#xD;/***/ }),&#xD;/* 413 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var DOMPropertyOperations = __webpack_require__(156);&#xD;var LinkedValueUtils = __webpack_require__(89);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var didWarnValueLink = false;&#xD;var didWarnCheckedLink = false;&#xD;var didWarnValueDefaultValue = false;&#xD;var didWarnCheckedDefaultChecked = false;&#xD;var didWarnControlledToUncontrolled = false;&#xD;var didWarnUncontrolledToControlled = false;&#xD;&#xD;function forceUpdateIfMounted() {&#xD;  if (this._rootNodeID) {&#xD;    // DOM component is still mounted; update&#xD;    ReactDOMInput.updateWrapper(this);&#xD;  }&#xD;}&#xD;&#xD;function isControlled(props) {&#xD;  var usesChecked = props.type === &apos;checkbox&apos; || props.type === &apos;radio&apos;;&#xD;  return usesChecked ? props.checked != null : props.value != null;&#xD;}&#xD;&#xD;/**&#xD; * Implements an &lt;input&gt; host component that allows setting these optional&#xD; * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.&#xD; *&#xD; * If `checked` or `value` are not supplied (or null/undefined), user actions&#xD; * that affect the checked state or value will trigger updates to the element.&#xD; *&#xD; * If they are supplied (and not null/undefined), the rendered element will not&#xD; * trigger updates to the element. Instead, the props must change in order for&#xD; * the rendered element to be updated.&#xD; *&#xD; * The rendered element will be initialized as unchecked (or `defaultChecked`)&#xD; * with an empty value (or `defaultValue`).&#xD; *&#xD; * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html&#xD; */&#xD;var ReactDOMInput = {&#xD;  getHostProps: function (inst, props) {&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    var checked = LinkedValueUtils.getChecked(props);&#xD;&#xD;    var hostProps = _assign({&#xD;      // Make sure we set .type before any other properties (setting .value&#xD;      // before .type means .value is lost in IE11 and below)&#xD;      type: undefined,&#xD;      // Make sure we set .step before .value (setting .value before .step&#xD;      // means .value is rounded on mount, based upon step precision)&#xD;      step: undefined,&#xD;      // Make sure we set .min &amp; .max before .value (to ensure proper order&#xD;      // in corner cases such as min or max deriving from value, e.g. Issue #7170)&#xD;      min: undefined,&#xD;      max: undefined&#xD;    }, props, {&#xD;      defaultChecked: undefined,&#xD;      defaultValue: undefined,&#xD;      value: value != null ? value : inst._wrapperState.initialValue,&#xD;      checked: checked != null ? checked : inst._wrapperState.initialChecked,&#xD;      onChange: inst._wrapperState.onChange&#xD;    });&#xD;&#xD;    return hostProps;&#xD;  },&#xD;&#xD;  mountWrapper: function (inst, props) {&#xD;    if (true) {&#xD;      LinkedValueUtils.checkPropTypes(&apos;input&apos;, props, inst._currentElement._owner);&#xD;&#xD;      var owner = inst._currentElement._owner;&#xD;&#xD;      if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {&#xD;         true ? warning(false, &apos;`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;&#xD;        didWarnValueLink = true;&#xD;      }&#xD;      if (props.checkedLink !== undefined &amp;&amp; !didWarnCheckedLink) {&#xD;         true ? warning(false, &apos;`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;&#xD;        didWarnCheckedLink = true;&#xD;      }&#xD;      if (props.checked !== undefined &amp;&amp; props.defaultChecked !== undefined &amp;&amp; !didWarnCheckedDefaultChecked) {&#xD;         true ? warning(false, &apos;%s contains an input of type %s with both checked and defaultChecked props. &apos; + &apos;Input elements must be either controlled or uncontrolled &apos; + &apos;(specify either the checked prop, or the defaultChecked prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled input &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;&#xD;        didWarnCheckedDefaultChecked = true;&#xD;      }&#xD;      if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValueDefaultValue) {&#xD;         true ? warning(false, &apos;%s contains an input of type %s with both value and defaultValue props. &apos; + &apos;Input elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled input &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;&#xD;        didWarnValueDefaultValue = true;&#xD;      }&#xD;    }&#xD;&#xD;    var defaultValue = props.defaultValue;&#xD;    inst._wrapperState = {&#xD;      initialChecked: props.checked != null ? props.checked : props.defaultChecked,&#xD;      initialValue: props.value != null ? props.value : defaultValue,&#xD;      listeners: null,&#xD;      onChange: _handleChange.bind(inst),&#xD;      controlled: isControlled(props)&#xD;    };&#xD;  },&#xD;&#xD;  updateWrapper: function (inst) {&#xD;    var props = inst._currentElement.props;&#xD;&#xD;    if (true) {&#xD;      var controlled = isControlled(props);&#xD;      var owner = inst._currentElement._owner;&#xD;&#xD;      if (!inst._wrapperState.controlled &amp;&amp; controlled &amp;&amp; !didWarnUncontrolledToControlled) {&#xD;         true ? warning(false, &apos;%s is changing an uncontrolled input of type %s to be controlled. &apos; + &apos;Input elements should not switch from uncontrolled to controlled (or vice versa). &apos; + &apos;Decide between using a controlled or uncontrolled input &apos; + &apos;element for the lifetime of the component. More info: https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;&#xD;        didWarnUncontrolledToControlled = true;&#xD;      }&#xD;      if (inst._wrapperState.controlled &amp;&amp; !controlled &amp;&amp; !didWarnControlledToUncontrolled) {&#xD;         true ? warning(false, &apos;%s is changing a controlled input of type %s to be uncontrolled. &apos; + &apos;Input elements should not switch from controlled to uncontrolled (or vice versa). &apos; + &apos;Decide between using a controlled or uncontrolled input &apos; + &apos;element for the lifetime of the component. More info: https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;&#xD;        didWarnControlledToUncontrolled = true;&#xD;      }&#xD;    }&#xD;&#xD;    // TODO: Shouldn&apos;t this be getChecked(props)?&#xD;    var checked = props.checked;&#xD;    if (checked != null) {&#xD;      DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), &apos;checked&apos;, checked || false);&#xD;    }&#xD;&#xD;    var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    if (value != null) {&#xD;      if (value === 0 &amp;&amp; node.value === &apos;&apos;) {&#xD;        node.value = &apos;0&apos;;&#xD;        // Note: IE9 reports a number inputs as &apos;text&apos;, so check props instead.&#xD;      } else if (props.type === &apos;number&apos;) {&#xD;        // Simulate `input.valueAsNumber`. IE9 does not support it&#xD;        var valueAsNumber = parseFloat(node.value, 10) || 0;&#xD;&#xD;        // eslint-disable-next-line&#xD;        if (value != valueAsNumber) {&#xD;          // Cast `value` to a string to ensure the value is set correctly. While&#xD;          // browsers typically do this as necessary, jsdom doesn&apos;t.&#xD;          node.value = &apos;&apos; + value;&#xD;        }&#xD;        // eslint-disable-next-line&#xD;      } else if (value != node.value) {&#xD;        // Cast `value` to a string to ensure the value is set correctly. While&#xD;        // browsers typically do this as necessary, jsdom doesn&apos;t.&#xD;        node.value = &apos;&apos; + value;&#xD;      }&#xD;    } else {&#xD;      if (props.value == null &amp;&amp; props.defaultValue != null) {&#xD;        // In Chrome, assigning defaultValue to certain input types triggers input validation.&#xD;        // For number inputs, the display value loses trailing decimal points. For email inputs,&#xD;        // Chrome raises "The specified value &lt;x&gt; is not a valid email address".&#xD;        //&#xD;        // Here we check to see if the defaultValue has actually changed, avoiding these problems&#xD;        // when the user is inputting text&#xD;        //&#xD;        // https://github.com/facebook/react/issues/7253&#xD;        if (node.defaultValue !== &apos;&apos; + props.defaultValue) {&#xD;          node.defaultValue = &apos;&apos; + props.defaultValue;&#xD;        }&#xD;      }&#xD;      if (props.checked == null &amp;&amp; props.defaultChecked != null) {&#xD;        node.defaultChecked = !!props.defaultChecked;&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  postMountWrapper: function (inst) {&#xD;    var props = inst._currentElement.props;&#xD;&#xD;    // This is in postMount because we need access to the DOM node, which is not&#xD;    // available until after the component has mounted.&#xD;    var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;&#xD;    // Detach value from defaultValue. We won&apos;t do anything if we&apos;re working on&#xD;    // submit or reset inputs as those values &amp; defaultValues are linked. They&#xD;    // are not resetable nodes so this operation doesn&apos;t matter and actually&#xD;    // removes browser-default values (eg "Submit Query") when no value is&#xD;    // provided.&#xD;&#xD;    switch (props.type) {&#xD;      case &apos;submit&apos;:&#xD;      case &apos;reset&apos;:&#xD;        break;&#xD;      case &apos;color&apos;:&#xD;      case &apos;date&apos;:&#xD;      case &apos;datetime&apos;:&#xD;      case &apos;datetime-local&apos;:&#xD;      case &apos;month&apos;:&#xD;      case &apos;time&apos;:&#xD;      case &apos;week&apos;:&#xD;        // This fixes the no-show issue on iOS Safari and Android Chrome:&#xD;        // https://github.com/facebook/react/issues/7233&#xD;        node.value = &apos;&apos;;&#xD;        node.value = node.defaultValue;&#xD;        break;&#xD;      default:&#xD;        node.value = node.value;&#xD;        break;&#xD;    }&#xD;&#xD;    // Normally, we&apos;d just do `node.checked = node.checked` upon initial mount, less this bug&#xD;    // this is needed to work around a chrome bug where setting defaultChecked&#xD;    // will sometimes influence the value of checked (even after detachment).&#xD;    // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416&#xD;    // We need to temporarily unset name to avoid disrupting radio button groups.&#xD;    var name = node.name;&#xD;    if (name !== &apos;&apos;) {&#xD;      node.name = &apos;&apos;;&#xD;    }&#xD;    node.defaultChecked = !node.defaultChecked;&#xD;    node.defaultChecked = !node.defaultChecked;&#xD;    if (name !== &apos;&apos;) {&#xD;      node.name = name;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;function _handleChange(event) {&#xD;  var props = this._currentElement.props;&#xD;&#xD;  var returnValue = LinkedValueUtils.executeOnChange(props, event);&#xD;&#xD;  // Here we use asap to wait until all updates have propagated, which&#xD;  // is important when using controlled components within layers:&#xD;  // https://github.com/facebook/react/issues/1698&#xD;  ReactUpdates.asap(forceUpdateIfMounted, this);&#xD;&#xD;  var name = props.name;&#xD;  if (props.type === &apos;radio&apos; &amp;&amp; name != null) {&#xD;    var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);&#xD;    var queryRoot = rootNode;&#xD;&#xD;    while (queryRoot.parentNode) {&#xD;      queryRoot = queryRoot.parentNode;&#xD;    }&#xD;&#xD;    // If `rootNode.form` was non-null, then we could try `form.elements`,&#xD;    // but that sometimes behaves strangely in IE8. We could also try using&#xD;    // `form.getElementsByName`, but that will only return direct children&#xD;    // and won&apos;t include inputs that use the HTML5 `form=` attribute. Since&#xD;    // the input might not even be in a form, let&apos;s just use the global&#xD;    // `querySelectorAll` to ensure we don&apos;t miss anything.&#xD;    var group = queryRoot.querySelectorAll(&apos;input[name=&apos; + JSON.stringify(&apos;&apos; + name) + &apos;][type="radio"]&apos;);&#xD;&#xD;    for (var i = 0; i &lt; group.length; i++) {&#xD;      var otherNode = group[i];&#xD;      if (otherNode === rootNode || otherNode.form !== rootNode.form) {&#xD;        continue;&#xD;      }&#xD;      // This will throw if radio buttons rendered by different copies of React&#xD;      // and the same name are rendered into the same form (same as #1939).&#xD;      // That&apos;s probably okay; we don&apos;t support it just as we don&apos;t support&#xD;      // mixing React radio buttons with non-React ones.&#xD;      var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);&#xD;      !otherInstance ?  true ? invariant(false, &apos;ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.&apos;) : _prodInvariant(&apos;90&apos;) : void 0;&#xD;      // If this is a controlled radio button group, forcing the input that&#xD;      // was previously checked to update will cause it to be come re-checked&#xD;      // as appropriate.&#xD;      ReactUpdates.asap(forceUpdateIfMounted, otherInstance);&#xD;    }&#xD;  }&#xD;&#xD;  return returnValue;&#xD;}&#xD;&#xD;module.exports = ReactDOMInput;&#xD;&#xD;/***/ }),&#xD;/* 414 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;var ReactComponentTreeHook = __webpack_require__(20);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var warnedProperties = {};&#xD;var rARIA = new RegExp(&apos;^(aria)-[&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;);&#xD;&#xD;function validateProperty(tagName, name, debugID) {&#xD;  if (warnedProperties.hasOwnProperty(name) &amp;&amp; warnedProperties[name]) {&#xD;    return true;&#xD;  }&#xD;&#xD;  if (rARIA.test(name)) {&#xD;    var lowerCasedName = name.toLowerCase();&#xD;    var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;&#xD;&#xD;    // If this is an aria-* attribute, but is not listed in the known DOM&#xD;    // DOM properties, then it is an invalid aria-* attribute.&#xD;    if (standardName == null) {&#xD;      warnedProperties[name] = true;&#xD;      return false;&#xD;    }&#xD;    // aria-* attributes should be lowercase; suggest the lowercase version.&#xD;    if (name !== standardName) {&#xD;       true ? warning(false, &apos;Unknown ARIA attribute %s. Did you mean %s?%s&apos;, name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;      warnedProperties[name] = true;&#xD;      return true;&#xD;    }&#xD;  }&#xD;&#xD;  return true;&#xD;}&#xD;&#xD;function warnInvalidARIAProps(debugID, element) {&#xD;  var invalidProps = [];&#xD;&#xD;  for (var key in element.props) {&#xD;    var isValid = validateProperty(element.type, key, debugID);&#xD;    if (!isValid) {&#xD;      invalidProps.push(key);&#xD;    }&#xD;  }&#xD;&#xD;  var unknownPropString = invalidProps.map(function (prop) {&#xD;    return &apos;`&apos; + prop + &apos;`&apos;;&#xD;  }).join(&apos;, &apos;);&#xD;&#xD;  if (invalidProps.length === 1) {&#xD;     true ? warning(false, &apos;Invalid aria prop %s on &lt;%s&gt; tag. &apos; + &apos;For details, see https://fb.me/invalid-aria-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;  } else if (invalidProps.length &gt; 1) {&#xD;     true ? warning(false, &apos;Invalid aria props %s on &lt;%s&gt; tag. &apos; + &apos;For details, see https://fb.me/invalid-aria-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;  }&#xD;}&#xD;&#xD;function handleElement(debugID, element) {&#xD;  if (element == null || typeof element.type !== &apos;string&apos;) {&#xD;    return;&#xD;  }&#xD;  if (element.type.indexOf(&apos;-&apos;) &gt;= 0 || element.props.is) {&#xD;    return;&#xD;  }&#xD;&#xD;  warnInvalidARIAProps(debugID, element);&#xD;}&#xD;&#xD;var ReactDOMInvalidARIAHook = {&#xD;  onBeforeMountComponent: function (debugID, element) {&#xD;    if (true) {&#xD;      handleElement(debugID, element);&#xD;    }&#xD;  },&#xD;  onBeforeUpdateComponent: function (debugID, element) {&#xD;    if (true) {&#xD;      handleElement(debugID, element);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactDOMInvalidARIAHook;&#xD;&#xD;/***/ }),&#xD;/* 415 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactComponentTreeHook = __webpack_require__(20);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var didWarnValueNull = false;&#xD;&#xD;function handleElement(debugID, element) {&#xD;  if (element == null) {&#xD;    return;&#xD;  }&#xD;  if (element.type !== &apos;input&apos; &amp;&amp; element.type !== &apos;textarea&apos; &amp;&amp; element.type !== &apos;select&apos;) {&#xD;    return;&#xD;  }&#xD;  if (element.props != null &amp;&amp; element.props.value === null &amp;&amp; !didWarnValueNull) {&#xD;     true ? warning(false, &apos;`value` prop on `%s` should not be null. &apos; + &apos;Consider using the empty string to clear the component or `undefined` &apos; + &apos;for uncontrolled components.%s&apos;, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;&#xD;    didWarnValueNull = true;&#xD;  }&#xD;}&#xD;&#xD;var ReactDOMNullInputValuePropHook = {&#xD;  onBeforeMountComponent: function (debugID, element) {&#xD;    handleElement(debugID, element);&#xD;  },&#xD;  onBeforeUpdateComponent: function (debugID, element) {&#xD;    handleElement(debugID, element);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactDOMNullInputValuePropHook;&#xD;&#xD;/***/ }),&#xD;/* 416 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var React = __webpack_require__(43);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactDOMSelect = __webpack_require__(158);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;var didWarnInvalidOptionChildren = false;&#xD;&#xD;function flattenChildren(children) {&#xD;  var content = &apos;&apos;;&#xD;&#xD;  // Flatten children and warn if they aren&apos;t strings or numbers;&#xD;  // invalid types are ignored.&#xD;  React.Children.forEach(children, function (child) {&#xD;    if (child == null) {&#xD;      return;&#xD;    }&#xD;    if (typeof child === &apos;string&apos; || typeof child === &apos;number&apos;) {&#xD;      content += child;&#xD;    } else if (!didWarnInvalidOptionChildren) {&#xD;      didWarnInvalidOptionChildren = true;&#xD;       true ? warning(false, &apos;Only strings and numbers are supported as &lt;option&gt; children.&apos;) : void 0;&#xD;    }&#xD;  });&#xD;&#xD;  return content;&#xD;}&#xD;&#xD;/**&#xD; * Implements an &lt;option&gt; host component that warns when `selected` is set.&#xD; */&#xD;var ReactDOMOption = {&#xD;  mountWrapper: function (inst, props, hostParent) {&#xD;    // TODO (yungsters): Remove support for `selected` in &lt;option&gt;.&#xD;    if (true) {&#xD;       true ? warning(props.selected == null, &apos;Use the `defaultValue` or `value` props on &lt;select&gt; instead of &apos; + &apos;setting `selected` on &lt;option&gt;.&apos;) : void 0;&#xD;    }&#xD;&#xD;    // Look up whether this option is &apos;selected&apos;&#xD;    var selectValue = null;&#xD;    if (hostParent != null) {&#xD;      var selectParent = hostParent;&#xD;&#xD;      if (selectParent._tag === &apos;optgroup&apos;) {&#xD;        selectParent = selectParent._hostParent;&#xD;      }&#xD;&#xD;      if (selectParent != null &amp;&amp; selectParent._tag === &apos;select&apos;) {&#xD;        selectValue = ReactDOMSelect.getSelectValueContext(selectParent);&#xD;      }&#xD;    }&#xD;&#xD;    // If the value is null (e.g., no specified value or after initial mount)&#xD;    // or missing (e.g., for &lt;datalist&gt;), we don&apos;t change props.selected&#xD;    var selected = null;&#xD;    if (selectValue != null) {&#xD;      var value;&#xD;      if (props.value != null) {&#xD;        value = props.value + &apos;&apos;;&#xD;      } else {&#xD;        value = flattenChildren(props.children);&#xD;      }&#xD;      selected = false;&#xD;      if (Array.isArray(selectValue)) {&#xD;        // multiple&#xD;        for (var i = 0; i &lt; selectValue.length; i++) {&#xD;          if (&apos;&apos; + selectValue[i] === value) {&#xD;            selected = true;&#xD;            break;&#xD;          }&#xD;        }&#xD;      } else {&#xD;        selected = &apos;&apos; + selectValue === value;&#xD;      }&#xD;    }&#xD;&#xD;    inst._wrapperState = { selected: selected };&#xD;  },&#xD;&#xD;  postMountWrapper: function (inst) {&#xD;    // value="" should make a value attribute (#6219)&#xD;    var props = inst._currentElement.props;&#xD;    if (props.value != null) {&#xD;      var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;      node.setAttribute(&apos;value&apos;, props.value);&#xD;    }&#xD;  },&#xD;&#xD;  getHostProps: function (inst, props) {&#xD;    var hostProps = _assign({ selected: undefined, children: undefined }, props);&#xD;&#xD;    // Read state only from initial mount because &lt;select&gt; updates value&#xD;    // manually; we need the initial state only for server rendering&#xD;    if (inst._wrapperState.selected != null) {&#xD;      hostProps.selected = inst._wrapperState.selected;&#xD;    }&#xD;&#xD;    var content = flattenChildren(props.children);&#xD;&#xD;    if (content) {&#xD;      hostProps.children = content;&#xD;    }&#xD;&#xD;    return hostProps;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactDOMOption;&#xD;&#xD;/***/ }),&#xD;/* 417 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var getNodeForCharacterOffset = __webpack_require__(460);&#xD;var getTextContentAccessor = __webpack_require__(170);&#xD;&#xD;/**&#xD; * While `isCollapsed` is available on the Selection object and `collapsed`&#xD; * is available on the Range object, IE11 sometimes gets them wrong.&#xD; * If the anchor/focus nodes and offsets are the same, the range is collapsed.&#xD; */&#xD;function isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {&#xD;  return anchorNode === focusNode &amp;&amp; anchorOffset === focusOffset;&#xD;}&#xD;&#xD;/**&#xD; * Get the appropriate anchor and focus node/offset pairs for IE.&#xD; *&#xD; * The catch here is that IE&apos;s selection API doesn&apos;t provide information&#xD; * about whether the selection is forward or backward, so we have to&#xD; * behave as though it&apos;s always forward.&#xD; *&#xD; * IE text differs from modern selection in that it behaves as though&#xD; * block elements end with a new line. This means character offsets will&#xD; * differ between the two APIs.&#xD; *&#xD; * @param {DOMElement} node&#xD; * @return {object}&#xD; */&#xD;function getIEOffsets(node) {&#xD;  var selection = document.selection;&#xD;  var selectedRange = selection.createRange();&#xD;  var selectedLength = selectedRange.text.length;&#xD;&#xD;  // Duplicate selection so we can move range without breaking user selection.&#xD;  var fromStart = selectedRange.duplicate();&#xD;  fromStart.moveToElementText(node);&#xD;  fromStart.setEndPoint(&apos;EndToStart&apos;, selectedRange);&#xD;&#xD;  var startOffset = fromStart.text.length;&#xD;  var endOffset = startOffset + selectedLength;&#xD;&#xD;  return {&#xD;    start: startOffset,&#xD;    end: endOffset&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * @param {DOMElement} node&#xD; * @return {?object}&#xD; */&#xD;function getModernOffsets(node) {&#xD;  var selection = window.getSelection &amp;&amp; window.getSelection();&#xD;&#xD;  if (!selection || selection.rangeCount === 0) {&#xD;    return null;&#xD;  }&#xD;&#xD;  var anchorNode = selection.anchorNode;&#xD;  var anchorOffset = selection.anchorOffset;&#xD;  var focusNode = selection.focusNode;&#xD;  var focusOffset = selection.focusOffset;&#xD;&#xD;  var currentRange = selection.getRangeAt(0);&#xD;&#xD;  // In Firefox, range.startContainer and range.endContainer can be "anonymous&#xD;  // divs", e.g. the up/down buttons on an &lt;input type="number"&gt;. Anonymous&#xD;  // divs do not seem to expose properties, triggering a "Permission denied&#xD;  // error" if any of its properties are accessed. The only seemingly possible&#xD;  // way to avoid erroring is to access a property that typically works for&#xD;  // non-anonymous divs and catch any error that may otherwise arise. See&#xD;  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427&#xD;  try {&#xD;    /* eslint-disable no-unused-expressions */&#xD;    currentRange.startContainer.nodeType;&#xD;    currentRange.endContainer.nodeType;&#xD;    /* eslint-enable no-unused-expressions */&#xD;  } catch (e) {&#xD;    return null;&#xD;  }&#xD;&#xD;  // If the node and offset values are the same, the selection is collapsed.&#xD;  // `Selection.isCollapsed` is available natively, but IE sometimes gets&#xD;  // this value wrong.&#xD;  var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);&#xD;&#xD;  var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;&#xD;&#xD;  var tempRange = currentRange.cloneRange();&#xD;  tempRange.selectNodeContents(node);&#xD;  tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);&#xD;&#xD;  var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);&#xD;&#xD;  var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;&#xD;  var end = start + rangeLength;&#xD;&#xD;  // Detect whether the selection is backward.&#xD;  var detectionRange = document.createRange();&#xD;  detectionRange.setStart(anchorNode, anchorOffset);&#xD;  detectionRange.setEnd(focusNode, focusOffset);&#xD;  var isBackward = detectionRange.collapsed;&#xD;&#xD;  return {&#xD;    start: isBackward ? end : start,&#xD;    end: isBackward ? start : end&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * @param {DOMElement|DOMTextNode} node&#xD; * @param {object} offsets&#xD; */&#xD;function setIEOffsets(node, offsets) {&#xD;  var range = document.selection.createRange().duplicate();&#xD;  var start, end;&#xD;&#xD;  if (offsets.end === undefined) {&#xD;    start = offsets.start;&#xD;    end = start;&#xD;  } else if (offsets.start &gt; offsets.end) {&#xD;    start = offsets.end;&#xD;    end = offsets.start;&#xD;  } else {&#xD;    start = offsets.start;&#xD;    end = offsets.end;&#xD;  }&#xD;&#xD;  range.moveToElementText(node);&#xD;  range.moveStart(&apos;character&apos;, start);&#xD;  range.setEndPoint(&apos;EndToStart&apos;, range);&#xD;  range.moveEnd(&apos;character&apos;, end - start);&#xD;  range.select();&#xD;}&#xD;&#xD;/**&#xD; * In modern non-IE browsers, we can support both forward and backward&#xD; * selections.&#xD; *&#xD; * Note: IE10+ supports the Selection object, but it does not support&#xD; * the `extend` method, which means that even in modern IE, it&apos;s not possible&#xD; * to programmatically create a backward selection. Thus, for all IE&#xD; * versions, we use the old IE API to create our selections.&#xD; *&#xD; * @param {DOMElement|DOMTextNode} node&#xD; * @param {object} offsets&#xD; */&#xD;function setModernOffsets(node, offsets) {&#xD;  if (!window.getSelection) {&#xD;    return;&#xD;  }&#xD;&#xD;  var selection = window.getSelection();&#xD;  var length = node[getTextContentAccessor()].length;&#xD;  var start = Math.min(offsets.start, length);&#xD;  var end = offsets.end === undefined ? start : Math.min(offsets.end, length);&#xD;&#xD;  // IE 11 uses modern selection, but doesn&apos;t support the extend method.&#xD;  // Flip backward selections, so we can set with a single range.&#xD;  if (!selection.extend &amp;&amp; start &gt; end) {&#xD;    var temp = end;&#xD;    end = start;&#xD;    start = temp;&#xD;  }&#xD;&#xD;  var startMarker = getNodeForCharacterOffset(node, start);&#xD;  var endMarker = getNodeForCharacterOffset(node, end);&#xD;&#xD;  if (startMarker &amp;&amp; endMarker) {&#xD;    var range = document.createRange();&#xD;    range.setStart(startMarker.node, startMarker.offset);&#xD;    selection.removeAllRanges();&#xD;&#xD;    if (start &gt; end) {&#xD;      selection.addRange(range);&#xD;      selection.extend(endMarker.node, endMarker.offset);&#xD;    } else {&#xD;      range.setEnd(endMarker.node, endMarker.offset);&#xD;      selection.addRange(range);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;var useIEOffsets = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;selection&apos; in document &amp;&amp; !(&apos;getSelection&apos; in window);&#xD;&#xD;var ReactDOMSelection = {&#xD;  /**&#xD;   * @param {DOMElement} node&#xD;   */&#xD;  getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,&#xD;&#xD;  /**&#xD;   * @param {DOMElement|DOMTextNode} node&#xD;   * @param {object} offsets&#xD;   */&#xD;  setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets&#xD;};&#xD;&#xD;module.exports = ReactDOMSelection;&#xD;&#xD;/***/ }),&#xD;/* 418 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var DOMChildrenOperations = __webpack_require__(85);&#xD;var DOMLazyTree = __webpack_require__(41);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;&#xD;var escapeTextContentForBrowser = __webpack_require__(67);&#xD;var invariant = __webpack_require__(3);&#xD;var validateDOMNesting = __webpack_require__(99);&#xD;&#xD;/**&#xD; * Text nodes violate a couple assumptions that React makes about components:&#xD; *&#xD; *  - When mounting text into the DOM, adjacent text nodes are merged.&#xD; *  - Text nodes cannot be assigned a React root ID.&#xD; *&#xD; * This component is used to wrap strings between comment nodes so that they&#xD; * can undergo the same reconciliation that is applied to elements.&#xD; *&#xD; * TODO: Investigate representing React components in the DOM with text nodes.&#xD; *&#xD; * @class ReactDOMTextComponent&#xD; * @extends ReactComponent&#xD; * @internal&#xD; */&#xD;var ReactDOMTextComponent = function (text) {&#xD;  // TODO: This is really a ReactText (ReactNode), not a ReactElement&#xD;  this._currentElement = text;&#xD;  this._stringText = &apos;&apos; + text;&#xD;  // ReactDOMComponentTree uses these:&#xD;  this._hostNode = null;&#xD;  this._hostParent = null;&#xD;&#xD;  // Properties&#xD;  this._domID = 0;&#xD;  this._mountIndex = 0;&#xD;  this._closingComment = null;&#xD;  this._commentNodes = null;&#xD;};&#xD;&#xD;_assign(ReactDOMTextComponent.prototype, {&#xD;&#xD;  /**&#xD;   * Creates the markup for this text node. This node is not intended to have&#xD;   * any features besides containing text content.&#xD;   *&#xD;   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction&#xD;   * @return {string} Markup for this text node.&#xD;   * @internal&#xD;   */&#xD;  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {&#xD;    if (true) {&#xD;      var parentInfo;&#xD;      if (hostParent != null) {&#xD;        parentInfo = hostParent._ancestorInfo;&#xD;      } else if (hostContainerInfo != null) {&#xD;        parentInfo = hostContainerInfo._ancestorInfo;&#xD;      }&#xD;      if (parentInfo) {&#xD;        // parentInfo should always be present except for the top-level&#xD;        // component when server rendering&#xD;        validateDOMNesting(null, this._stringText, this, parentInfo);&#xD;      }&#xD;    }&#xD;&#xD;    var domID = hostContainerInfo._idCounter++;&#xD;    var openingValue = &apos; react-text: &apos; + domID + &apos; &apos;;&#xD;    var closingValue = &apos; /react-text &apos;;&#xD;    this._domID = domID;&#xD;    this._hostParent = hostParent;&#xD;    if (transaction.useCreateElement) {&#xD;      var ownerDocument = hostContainerInfo._ownerDocument;&#xD;      var openingComment = ownerDocument.createComment(openingValue);&#xD;      var closingComment = ownerDocument.createComment(closingValue);&#xD;      var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());&#xD;      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));&#xD;      if (this._stringText) {&#xD;        DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));&#xD;      }&#xD;      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));&#xD;      ReactDOMComponentTree.precacheNode(this, openingComment);&#xD;      this._closingComment = closingComment;&#xD;      return lazyTree;&#xD;    } else {&#xD;      var escapedText = escapeTextContentForBrowser(this._stringText);&#xD;&#xD;      if (transaction.renderToStaticMarkup) {&#xD;        // Normally we&apos;d wrap this between comment nodes for the reasons stated&#xD;        // above, but since this is a situation where React won&apos;t take over&#xD;        // (static pages), we can simply return the text as it is.&#xD;        return escapedText;&#xD;      }&#xD;&#xD;      return &apos;&lt;!--&apos; + openingValue + &apos;--&gt;&apos; + escapedText + &apos;&lt;!--&apos; + closingValue + &apos;--&gt;&apos;;&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Updates this component by updating the text content.&#xD;   *&#xD;   * @param {ReactText} nextText The next text content&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @internal&#xD;   */&#xD;  receiveComponent: function (nextText, transaction) {&#xD;    if (nextText !== this._currentElement) {&#xD;      this._currentElement = nextText;&#xD;      var nextStringText = &apos;&apos; + nextText;&#xD;      if (nextStringText !== this._stringText) {&#xD;        // TODO: Save this as pending props and use performUpdateIfNecessary&#xD;        // and/or updateComponent to do the actual update for consistency with&#xD;        // other component types?&#xD;        this._stringText = nextStringText;&#xD;        var commentNodes = this.getHostNode();&#xD;        DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  getHostNode: function () {&#xD;    var hostNode = this._commentNodes;&#xD;    if (hostNode) {&#xD;      return hostNode;&#xD;    }&#xD;    if (!this._closingComment) {&#xD;      var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);&#xD;      var node = openingComment.nextSibling;&#xD;      while (true) {&#xD;        !(node != null) ?  true ? invariant(false, &apos;Missing closing comment for text component %s&apos;, this._domID) : _prodInvariant(&apos;67&apos;, this._domID) : void 0;&#xD;        if (node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; /react-text &apos;) {&#xD;          this._closingComment = node;&#xD;          break;&#xD;        }&#xD;        node = node.nextSibling;&#xD;      }&#xD;    }&#xD;    hostNode = [this._hostNode, this._closingComment];&#xD;    this._commentNodes = hostNode;&#xD;    return hostNode;&#xD;  },&#xD;&#xD;  unmountComponent: function () {&#xD;    this._closingComment = null;&#xD;    this._commentNodes = null;&#xD;    ReactDOMComponentTree.uncacheNode(this);&#xD;  }&#xD;&#xD;});&#xD;&#xD;module.exports = ReactDOMTextComponent;&#xD;&#xD;/***/ }),&#xD;/* 419 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var LinkedValueUtils = __webpack_require__(89);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var didWarnValueLink = false;&#xD;var didWarnValDefaultVal = false;&#xD;&#xD;function forceUpdateIfMounted() {&#xD;  if (this._rootNodeID) {&#xD;    // DOM component is still mounted; update&#xD;    ReactDOMTextarea.updateWrapper(this);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Implements a &lt;textarea&gt; host component that allows setting `value`, and&#xD; * `defaultValue`. This differs from the traditional DOM API because value is&#xD; * usually set as PCDATA children.&#xD; *&#xD; * If `value` is not supplied (or null/undefined), user actions that affect the&#xD; * value will trigger updates to the element.&#xD; *&#xD; * If `value` is supplied (and not null/undefined), the rendered element will&#xD; * not trigger updates to the element. Instead, the `value` prop must change in&#xD; * order for the rendered element to be updated.&#xD; *&#xD; * The rendered element will be initialized with an empty value, the prop&#xD; * `defaultValue` if specified, or the children content (deprecated).&#xD; */&#xD;var ReactDOMTextarea = {&#xD;  getHostProps: function (inst, props) {&#xD;    !(props.dangerouslySetInnerHTML == null) ?  true ? invariant(false, &apos;`dangerouslySetInnerHTML` does not make sense on &lt;textarea&gt;.&apos;) : _prodInvariant(&apos;91&apos;) : void 0;&#xD;&#xD;    // Always set children to the same thing. In IE9, the selection range will&#xD;    // get reset if `textContent` is mutated.  We could add a check in setTextContent&#xD;    // to only set the value if/when the value differs from the node value (which would&#xD;    // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.&#xD;    // The value can be a boolean or object so that&apos;s why it&apos;s forced to be a string.&#xD;    var hostProps = _assign({}, props, {&#xD;      value: undefined,&#xD;      defaultValue: undefined,&#xD;      children: &apos;&apos; + inst._wrapperState.initialValue,&#xD;      onChange: inst._wrapperState.onChange&#xD;    });&#xD;&#xD;    return hostProps;&#xD;  },&#xD;&#xD;  mountWrapper: function (inst, props) {&#xD;    if (true) {&#xD;      LinkedValueUtils.checkPropTypes(&apos;textarea&apos;, props, inst._currentElement._owner);&#xD;      if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {&#xD;         true ? warning(false, &apos;`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;&#xD;        didWarnValueLink = true;&#xD;      }&#xD;      if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValDefaultVal) {&#xD;         true ? warning(false, &apos;Textarea elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled textarea &apos; + &apos;and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;) : void 0;&#xD;        didWarnValDefaultVal = true;&#xD;      }&#xD;    }&#xD;&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    var initialValue = value;&#xD;&#xD;    // Only bother fetching default value if we&apos;re going to use it&#xD;    if (value == null) {&#xD;      var defaultValue = props.defaultValue;&#xD;      // TODO (yungsters): Remove support for children content in &lt;textarea&gt;.&#xD;      var children = props.children;&#xD;      if (children != null) {&#xD;        if (true) {&#xD;           true ? warning(false, &apos;Use the `defaultValue` or `value` props instead of setting &apos; + &apos;children on &lt;textarea&gt;.&apos;) : void 0;&#xD;        }&#xD;        !(defaultValue == null) ?  true ? invariant(false, &apos;If you supply `defaultValue` on a &lt;textarea&gt;, do not pass children.&apos;) : _prodInvariant(&apos;92&apos;) : void 0;&#xD;        if (Array.isArray(children)) {&#xD;          !(children.length &lt;= 1) ?  true ? invariant(false, &apos;&lt;textarea&gt; can only have at most one child.&apos;) : _prodInvariant(&apos;93&apos;) : void 0;&#xD;          children = children[0];&#xD;        }&#xD;&#xD;        defaultValue = &apos;&apos; + children;&#xD;      }&#xD;      if (defaultValue == null) {&#xD;        defaultValue = &apos;&apos;;&#xD;      }&#xD;      initialValue = defaultValue;&#xD;    }&#xD;&#xD;    inst._wrapperState = {&#xD;      initialValue: &apos;&apos; + initialValue,&#xD;      listeners: null,&#xD;      onChange: _handleChange.bind(inst)&#xD;    };&#xD;  },&#xD;&#xD;  updateWrapper: function (inst) {&#xD;    var props = inst._currentElement.props;&#xD;&#xD;    var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;    var value = LinkedValueUtils.getValue(props);&#xD;    if (value != null) {&#xD;      // Cast `value` to a string to ensure the value is set correctly. While&#xD;      // browsers typically do this as necessary, jsdom doesn&apos;t.&#xD;      var newValue = &apos;&apos; + value;&#xD;&#xD;      // To avoid side effects (such as losing text selection), only set value if changed&#xD;      if (newValue !== node.value) {&#xD;        node.value = newValue;&#xD;      }&#xD;      if (props.defaultValue == null) {&#xD;        node.defaultValue = newValue;&#xD;      }&#xD;    }&#xD;    if (props.defaultValue != null) {&#xD;      node.defaultValue = props.defaultValue;&#xD;    }&#xD;  },&#xD;&#xD;  postMountWrapper: function (inst) {&#xD;    // This is in postMount because we need access to the DOM node, which is not&#xD;    // available until after the component has mounted.&#xD;    var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;    var textContent = node.textContent;&#xD;&#xD;    // Only set node.value if textContent is equal to the expected&#xD;    // initial value. In IE10/IE11 there is a bug where the placeholder attribute&#xD;    // will populate textContent as well.&#xD;    // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/&#xD;    if (textContent === inst._wrapperState.initialValue) {&#xD;      node.value = textContent;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;function _handleChange(event) {&#xD;  var props = this._currentElement.props;&#xD;  var returnValue = LinkedValueUtils.executeOnChange(props, event);&#xD;  ReactUpdates.asap(forceUpdateIfMounted, this);&#xD;  return returnValue;&#xD;}&#xD;&#xD;module.exports = ReactDOMTextarea;&#xD;&#xD;/***/ }),&#xD;/* 420 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Return the lowest common ancestor of A and B, or null if they are in&#xD; * different trees.&#xD; */&#xD;function getLowestCommonAncestor(instA, instB) {&#xD;  !(&apos;_hostNode&apos; in instA) ?  true ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;&#xD;  !(&apos;_hostNode&apos; in instB) ?  true ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;&#xD;&#xD;  var depthA = 0;&#xD;  for (var tempA = instA; tempA; tempA = tempA._hostParent) {&#xD;    depthA++;&#xD;  }&#xD;  var depthB = 0;&#xD;  for (var tempB = instB; tempB; tempB = tempB._hostParent) {&#xD;    depthB++;&#xD;  }&#xD;&#xD;  // If A is deeper, crawl up.&#xD;  while (depthA - depthB &gt; 0) {&#xD;    instA = instA._hostParent;&#xD;    depthA--;&#xD;  }&#xD;&#xD;  // If B is deeper, crawl up.&#xD;  while (depthB - depthA &gt; 0) {&#xD;    instB = instB._hostParent;&#xD;    depthB--;&#xD;  }&#xD;&#xD;  // Walk in lockstep until we find a match.&#xD;  var depth = depthA;&#xD;  while (depth--) {&#xD;    if (instA === instB) {&#xD;      return instA;&#xD;    }&#xD;    instA = instA._hostParent;&#xD;    instB = instB._hostParent;&#xD;  }&#xD;  return null;&#xD;}&#xD;&#xD;/**&#xD; * Return if A is an ancestor of B.&#xD; */&#xD;function isAncestor(instA, instB) {&#xD;  !(&apos;_hostNode&apos; in instA) ?  true ? invariant(false, &apos;isAncestor: Invalid argument.&apos;) : _prodInvariant(&apos;35&apos;) : void 0;&#xD;  !(&apos;_hostNode&apos; in instB) ?  true ? invariant(false, &apos;isAncestor: Invalid argument.&apos;) : _prodInvariant(&apos;35&apos;) : void 0;&#xD;&#xD;  while (instB) {&#xD;    if (instB === instA) {&#xD;      return true;&#xD;    }&#xD;    instB = instB._hostParent;&#xD;  }&#xD;  return false;&#xD;}&#xD;&#xD;/**&#xD; * Return the parent instance of the passed-in instance.&#xD; */&#xD;function getParentInstance(inst) {&#xD;  !(&apos;_hostNode&apos; in inst) ?  true ? invariant(false, &apos;getParentInstance: Invalid argument.&apos;) : _prodInvariant(&apos;36&apos;) : void 0;&#xD;&#xD;  return inst._hostParent;&#xD;}&#xD;&#xD;/**&#xD; * Simulates the traversal of a two-phase, capture/bubble event dispatch.&#xD; */&#xD;function traverseTwoPhase(inst, fn, arg) {&#xD;  var path = [];&#xD;  while (inst) {&#xD;    path.push(inst);&#xD;    inst = inst._hostParent;&#xD;  }&#xD;  var i;&#xD;  for (i = path.length; i-- &gt; 0;) {&#xD;    fn(path[i], &apos;captured&apos;, arg);&#xD;  }&#xD;  for (i = 0; i &lt; path.length; i++) {&#xD;    fn(path[i], &apos;bubbled&apos;, arg);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that&#xD; * should would receive a `mouseEnter` or `mouseLeave` event.&#xD; *&#xD; * Does not invoke the callback on the nearest common ancestor because nothing&#xD; * "entered" or "left" that element.&#xD; */&#xD;function traverseEnterLeave(from, to, fn, argFrom, argTo) {&#xD;  var common = from &amp;&amp; to ? getLowestCommonAncestor(from, to) : null;&#xD;  var pathFrom = [];&#xD;  while (from &amp;&amp; from !== common) {&#xD;    pathFrom.push(from);&#xD;    from = from._hostParent;&#xD;  }&#xD;  var pathTo = [];&#xD;  while (to &amp;&amp; to !== common) {&#xD;    pathTo.push(to);&#xD;    to = to._hostParent;&#xD;  }&#xD;  var i;&#xD;  for (i = 0; i &lt; pathFrom.length; i++) {&#xD;    fn(pathFrom[i], &apos;bubbled&apos;, argFrom);&#xD;  }&#xD;  for (i = pathTo.length; i-- &gt; 0;) {&#xD;    fn(pathTo[i], &apos;captured&apos;, argTo);&#xD;  }&#xD;}&#xD;&#xD;module.exports = {&#xD;  isAncestor: isAncestor,&#xD;  getLowestCommonAncestor: getLowestCommonAncestor,&#xD;  getParentInstance: getParentInstance,&#xD;  traverseTwoPhase: traverseTwoPhase,&#xD;  traverseEnterLeave: traverseEnterLeave&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 421 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;var EventPluginRegistry = __webpack_require__(63);&#xD;var ReactComponentTreeHook = __webpack_require__(20);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;if (true) {&#xD;  var reactProps = {&#xD;    children: true,&#xD;    dangerouslySetInnerHTML: true,&#xD;    key: true,&#xD;    ref: true,&#xD;&#xD;    autoFocus: true,&#xD;    defaultValue: true,&#xD;    valueLink: true,&#xD;    defaultChecked: true,&#xD;    checkedLink: true,&#xD;    innerHTML: true,&#xD;    suppressContentEditableWarning: true,&#xD;    onFocusIn: true,&#xD;    onFocusOut: true&#xD;  };&#xD;  var warnedProperties = {};&#xD;&#xD;  var validateProperty = function (tagName, name, debugID) {&#xD;    if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {&#xD;      return true;&#xD;    }&#xD;    if (reactProps.hasOwnProperty(name) &amp;&amp; reactProps[name] || warnedProperties.hasOwnProperty(name) &amp;&amp; warnedProperties[name]) {&#xD;      return true;&#xD;    }&#xD;    if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {&#xD;      return true;&#xD;    }&#xD;    warnedProperties[name] = true;&#xD;    var lowerCasedName = name.toLowerCase();&#xD;&#xD;    // data-* attributes should be lowercase; suggest the lowercase version&#xD;    var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;&#xD;&#xD;    var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;&#xD;&#xD;    if (standardName != null) {&#xD;       true ? warning(false, &apos;Unknown DOM property %s. Did you mean %s?%s&apos;, name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;      return true;&#xD;    } else if (registrationName != null) {&#xD;       true ? warning(false, &apos;Unknown event handler property %s. Did you mean `%s`?%s&apos;, name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;      return true;&#xD;    } else {&#xD;      // We were unable to guess which prop the user intended.&#xD;      // It is likely that the user was just blindly spreading/forwarding props&#xD;      // Components should be careful to only render valid props/attributes.&#xD;      // Warning will be invoked in warnUnknownProperties to allow grouping.&#xD;      return false;&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;var warnUnknownProperties = function (debugID, element) {&#xD;  var unknownProps = [];&#xD;  for (var key in element.props) {&#xD;    var isValid = validateProperty(element.type, key, debugID);&#xD;    if (!isValid) {&#xD;      unknownProps.push(key);&#xD;    }&#xD;  }&#xD;&#xD;  var unknownPropString = unknownProps.map(function (prop) {&#xD;    return &apos;`&apos; + prop + &apos;`&apos;;&#xD;  }).join(&apos;, &apos;);&#xD;&#xD;  if (unknownProps.length === 1) {&#xD;     true ? warning(false, &apos;Unknown prop %s on &lt;%s&gt; tag. Remove this prop from the element. &apos; + &apos;For details, see https://fb.me/react-unknown-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;  } else if (unknownProps.length &gt; 1) {&#xD;     true ? warning(false, &apos;Unknown props %s on &lt;%s&gt; tag. Remove these props from the element. &apos; + &apos;For details, see https://fb.me/react-unknown-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;&#xD;  }&#xD;};&#xD;&#xD;function handleElement(debugID, element) {&#xD;  if (element == null || typeof element.type !== &apos;string&apos;) {&#xD;    return;&#xD;  }&#xD;  if (element.type.indexOf(&apos;-&apos;) &gt;= 0 || element.props.is) {&#xD;    return;&#xD;  }&#xD;  warnUnknownProperties(debugID, element);&#xD;}&#xD;&#xD;var ReactDOMUnknownPropertyHook = {&#xD;  onBeforeMountComponent: function (debugID, element) {&#xD;    handleElement(debugID, element);&#xD;  },&#xD;  onBeforeUpdateComponent: function (debugID, element) {&#xD;    handleElement(debugID, element);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactDOMUnknownPropertyHook;&#xD;&#xD;/***/ }),&#xD;/* 422 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactInvalidSetStateWarningHook = __webpack_require__(430);&#xD;var ReactHostOperationHistoryHook = __webpack_require__(428);&#xD;var ReactComponentTreeHook = __webpack_require__(20);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;var performanceNow = __webpack_require__(338);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var hooks = [];&#xD;var didHookThrowForEvent = {};&#xD;&#xD;function callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {&#xD;  try {&#xD;    fn.call(context, arg1, arg2, arg3, arg4, arg5);&#xD;  } catch (e) {&#xD;     true ? warning(didHookThrowForEvent[event], &apos;Exception thrown by hook while handling %s: %s&apos;, event, e + &apos;\n&apos; + e.stack) : void 0;&#xD;    didHookThrowForEvent[event] = true;&#xD;  }&#xD;}&#xD;&#xD;function emitEvent(event, arg1, arg2, arg3, arg4, arg5) {&#xD;  for (var i = 0; i &lt; hooks.length; i++) {&#xD;    var hook = hooks[i];&#xD;    var fn = hook[event];&#xD;    if (fn) {&#xD;      callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;var isProfiling = false;&#xD;var flushHistory = [];&#xD;var lifeCycleTimerStack = [];&#xD;var currentFlushNesting = 0;&#xD;var currentFlushMeasurements = [];&#xD;var currentFlushStartTime = 0;&#xD;var currentTimerDebugID = null;&#xD;var currentTimerStartTime = 0;&#xD;var currentTimerNestedFlushDuration = 0;&#xD;var currentTimerType = null;&#xD;&#xD;var lifeCycleTimerHasWarned = false;&#xD;&#xD;function clearHistory() {&#xD;  ReactComponentTreeHook.purgeUnmountedComponents();&#xD;  ReactHostOperationHistoryHook.clearHistory();&#xD;}&#xD;&#xD;function getTreeSnapshot(registeredIDs) {&#xD;  return registeredIDs.reduce(function (tree, id) {&#xD;    var ownerID = ReactComponentTreeHook.getOwnerID(id);&#xD;    var parentID = ReactComponentTreeHook.getParentID(id);&#xD;    tree[id] = {&#xD;      displayName: ReactComponentTreeHook.getDisplayName(id),&#xD;      text: ReactComponentTreeHook.getText(id),&#xD;      updateCount: ReactComponentTreeHook.getUpdateCount(id),&#xD;      childIDs: ReactComponentTreeHook.getChildIDs(id),&#xD;      // Text nodes don&apos;t have owners but this is close enough.&#xD;      ownerID: ownerID || parentID &amp;&amp; ReactComponentTreeHook.getOwnerID(parentID) || 0,&#xD;      parentID: parentID&#xD;    };&#xD;    return tree;&#xD;  }, {});&#xD;}&#xD;&#xD;function resetMeasurements() {&#xD;  var previousStartTime = currentFlushStartTime;&#xD;  var previousMeasurements = currentFlushMeasurements;&#xD;  var previousOperations = ReactHostOperationHistoryHook.getHistory();&#xD;&#xD;  if (currentFlushNesting === 0) {&#xD;    currentFlushStartTime = 0;&#xD;    currentFlushMeasurements = [];&#xD;    clearHistory();&#xD;    return;&#xD;  }&#xD;&#xD;  if (previousMeasurements.length || previousOperations.length) {&#xD;    var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();&#xD;    flushHistory.push({&#xD;      duration: performanceNow() - previousStartTime,&#xD;      measurements: previousMeasurements || [],&#xD;      operations: previousOperations || [],&#xD;      treeSnapshot: getTreeSnapshot(registeredIDs)&#xD;    });&#xD;  }&#xD;&#xD;  clearHistory();&#xD;  currentFlushStartTime = performanceNow();&#xD;  currentFlushMeasurements = [];&#xD;}&#xD;&#xD;function checkDebugID(debugID) {&#xD;  var allowRoot = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : false;&#xD;&#xD;  if (allowRoot &amp;&amp; debugID === 0) {&#xD;    return;&#xD;  }&#xD;  if (!debugID) {&#xD;     true ? warning(false, &apos;ReactDebugTool: debugID may not be empty.&apos;) : void 0;&#xD;  }&#xD;}&#xD;&#xD;function beginLifeCycleTimer(debugID, timerType) {&#xD;  if (currentFlushNesting === 0) {&#xD;    return;&#xD;  }&#xD;  if (currentTimerType &amp;&amp; !lifeCycleTimerHasWarned) {&#xD;     true ? warning(false, &apos;There is an internal error in the React performance measurement code. &apos; + &apos;Did not expect %s timer to start while %s timer is still in &apos; + &apos;progress for %s instance.&apos;, timerType, currentTimerType || &apos;no&apos;, debugID === currentTimerDebugID ? &apos;the same&apos; : &apos;another&apos;) : void 0;&#xD;    lifeCycleTimerHasWarned = true;&#xD;  }&#xD;  currentTimerStartTime = performanceNow();&#xD;  currentTimerNestedFlushDuration = 0;&#xD;  currentTimerDebugID = debugID;&#xD;  currentTimerType = timerType;&#xD;}&#xD;&#xD;function endLifeCycleTimer(debugID, timerType) {&#xD;  if (currentFlushNesting === 0) {&#xD;    return;&#xD;  }&#xD;  if (currentTimerType !== timerType &amp;&amp; !lifeCycleTimerHasWarned) {&#xD;     true ? warning(false, &apos;There is an internal error in the React performance measurement code. &apos; + &apos;We did not expect %s timer to stop while %s timer is still in &apos; + &apos;progress for %s instance. Please report this as a bug in React.&apos;, timerType, currentTimerType || &apos;no&apos;, debugID === currentTimerDebugID ? &apos;the same&apos; : &apos;another&apos;) : void 0;&#xD;    lifeCycleTimerHasWarned = true;&#xD;  }&#xD;  if (isProfiling) {&#xD;    currentFlushMeasurements.push({&#xD;      timerType: timerType,&#xD;      instanceID: debugID,&#xD;      duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration&#xD;    });&#xD;  }&#xD;  currentTimerStartTime = 0;&#xD;  currentTimerNestedFlushDuration = 0;&#xD;  currentTimerDebugID = null;&#xD;  currentTimerType = null;&#xD;}&#xD;&#xD;function pauseCurrentLifeCycleTimer() {&#xD;  var currentTimer = {&#xD;    startTime: currentTimerStartTime,&#xD;    nestedFlushStartTime: performanceNow(),&#xD;    debugID: currentTimerDebugID,&#xD;    timerType: currentTimerType&#xD;  };&#xD;  lifeCycleTimerStack.push(currentTimer);&#xD;  currentTimerStartTime = 0;&#xD;  currentTimerNestedFlushDuration = 0;&#xD;  currentTimerDebugID = null;&#xD;  currentTimerType = null;&#xD;}&#xD;&#xD;function resumeCurrentLifeCycleTimer() {&#xD;  var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),&#xD;      startTime = _lifeCycleTimerStack$.startTime,&#xD;      nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,&#xD;      debugID = _lifeCycleTimerStack$.debugID,&#xD;      timerType = _lifeCycleTimerStack$.timerType;&#xD;&#xD;  var nestedFlushDuration = performanceNow() - nestedFlushStartTime;&#xD;  currentTimerStartTime = startTime;&#xD;  currentTimerNestedFlushDuration += nestedFlushDuration;&#xD;  currentTimerDebugID = debugID;&#xD;  currentTimerType = timerType;&#xD;}&#xD;&#xD;var lastMarkTimeStamp = 0;&#xD;var canUsePerformanceMeasure = typeof performance !== &apos;undefined&apos; &amp;&amp; typeof performance.mark === &apos;function&apos; &amp;&amp; typeof performance.clearMarks === &apos;function&apos; &amp;&amp; typeof performance.measure === &apos;function&apos; &amp;&amp; typeof performance.clearMeasures === &apos;function&apos;;&#xD;&#xD;function shouldMark(debugID) {&#xD;  if (!isProfiling || !canUsePerformanceMeasure) {&#xD;    return false;&#xD;  }&#xD;  var element = ReactComponentTreeHook.getElement(debugID);&#xD;  if (element == null || typeof element !== &apos;object&apos;) {&#xD;    return false;&#xD;  }&#xD;  var isHostElement = typeof element.type === &apos;string&apos;;&#xD;  if (isHostElement) {&#xD;    return false;&#xD;  }&#xD;  return true;&#xD;}&#xD;&#xD;function markBegin(debugID, markType) {&#xD;  if (!shouldMark(debugID)) {&#xD;    return;&#xD;  }&#xD;&#xD;  var markName = debugID + &apos;::&apos; + markType;&#xD;  lastMarkTimeStamp = performanceNow();&#xD;  performance.mark(markName);&#xD;}&#xD;&#xD;function markEnd(debugID, markType) {&#xD;  if (!shouldMark(debugID)) {&#xD;    return;&#xD;  }&#xD;&#xD;  var markName = debugID + &apos;::&apos; + markType;&#xD;  var displayName = ReactComponentTreeHook.getDisplayName(debugID) || &apos;Unknown&apos;;&#xD;&#xD;  // Chrome has an issue of dropping markers recorded too fast:&#xD;  // https://bugs.chromium.org/p/chromium/issues/detail?id=640652&#xD;  // To work around this, we will not report very small measurements.&#xD;  // I determined the magic number by tweaking it back and forth.&#xD;  // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.&#xD;  // When the bug is fixed, we can `measure()` unconditionally if we want to.&#xD;  var timeStamp = performanceNow();&#xD;  if (timeStamp - lastMarkTimeStamp &gt; 0.1) {&#xD;    var measurementName = displayName + &apos; [&apos; + markType + &apos;]&apos;;&#xD;    performance.measure(measurementName, markName);&#xD;  }&#xD;&#xD;  performance.clearMarks(markName);&#xD;  performance.clearMeasures(measurementName);&#xD;}&#xD;&#xD;var ReactDebugTool = {&#xD;  addHook: function (hook) {&#xD;    hooks.push(hook);&#xD;  },&#xD;  removeHook: function (hook) {&#xD;    for (var i = 0; i &lt; hooks.length; i++) {&#xD;      if (hooks[i] === hook) {&#xD;        hooks.splice(i, 1);&#xD;        i--;&#xD;      }&#xD;    }&#xD;  },&#xD;  isProfiling: function () {&#xD;    return isProfiling;&#xD;  },&#xD;  beginProfiling: function () {&#xD;    if (isProfiling) {&#xD;      return;&#xD;    }&#xD;&#xD;    isProfiling = true;&#xD;    flushHistory.length = 0;&#xD;    resetMeasurements();&#xD;    ReactDebugTool.addHook(ReactHostOperationHistoryHook);&#xD;  },&#xD;  endProfiling: function () {&#xD;    if (!isProfiling) {&#xD;      return;&#xD;    }&#xD;&#xD;    isProfiling = false;&#xD;    resetMeasurements();&#xD;    ReactDebugTool.removeHook(ReactHostOperationHistoryHook);&#xD;  },&#xD;  getFlushHistory: function () {&#xD;    return flushHistory;&#xD;  },&#xD;  onBeginFlush: function () {&#xD;    currentFlushNesting++;&#xD;    resetMeasurements();&#xD;    pauseCurrentLifeCycleTimer();&#xD;    emitEvent(&apos;onBeginFlush&apos;);&#xD;  },&#xD;  onEndFlush: function () {&#xD;    resetMeasurements();&#xD;    currentFlushNesting--;&#xD;    resumeCurrentLifeCycleTimer();&#xD;    emitEvent(&apos;onEndFlush&apos;);&#xD;  },&#xD;  onBeginLifeCycleTimer: function (debugID, timerType) {&#xD;    checkDebugID(debugID);&#xD;    emitEvent(&apos;onBeginLifeCycleTimer&apos;, debugID, timerType);&#xD;    markBegin(debugID, timerType);&#xD;    beginLifeCycleTimer(debugID, timerType);&#xD;  },&#xD;  onEndLifeCycleTimer: function (debugID, timerType) {&#xD;    checkDebugID(debugID);&#xD;    endLifeCycleTimer(debugID, timerType);&#xD;    markEnd(debugID, timerType);&#xD;    emitEvent(&apos;onEndLifeCycleTimer&apos;, debugID, timerType);&#xD;  },&#xD;  onBeginProcessingChildContext: function () {&#xD;    emitEvent(&apos;onBeginProcessingChildContext&apos;);&#xD;  },&#xD;  onEndProcessingChildContext: function () {&#xD;    emitEvent(&apos;onEndProcessingChildContext&apos;);&#xD;  },&#xD;  onHostOperation: function (operation) {&#xD;    checkDebugID(operation.instanceID);&#xD;    emitEvent(&apos;onHostOperation&apos;, operation);&#xD;  },&#xD;  onSetState: function () {&#xD;    emitEvent(&apos;onSetState&apos;);&#xD;  },&#xD;  onSetChildren: function (debugID, childDebugIDs) {&#xD;    checkDebugID(debugID);&#xD;    childDebugIDs.forEach(checkDebugID);&#xD;    emitEvent(&apos;onSetChildren&apos;, debugID, childDebugIDs);&#xD;  },&#xD;  onBeforeMountComponent: function (debugID, element, parentDebugID) {&#xD;    checkDebugID(debugID);&#xD;    checkDebugID(parentDebugID, true);&#xD;    emitEvent(&apos;onBeforeMountComponent&apos;, debugID, element, parentDebugID);&#xD;    markBegin(debugID, &apos;mount&apos;);&#xD;  },&#xD;  onMountComponent: function (debugID) {&#xD;    checkDebugID(debugID);&#xD;    markEnd(debugID, &apos;mount&apos;);&#xD;    emitEvent(&apos;onMountComponent&apos;, debugID);&#xD;  },&#xD;  onBeforeUpdateComponent: function (debugID, element) {&#xD;    checkDebugID(debugID);&#xD;    emitEvent(&apos;onBeforeUpdateComponent&apos;, debugID, element);&#xD;    markBegin(debugID, &apos;update&apos;);&#xD;  },&#xD;  onUpdateComponent: function (debugID) {&#xD;    checkDebugID(debugID);&#xD;    markEnd(debugID, &apos;update&apos;);&#xD;    emitEvent(&apos;onUpdateComponent&apos;, debugID);&#xD;  },&#xD;  onBeforeUnmountComponent: function (debugID) {&#xD;    checkDebugID(debugID);&#xD;    emitEvent(&apos;onBeforeUnmountComponent&apos;, debugID);&#xD;    markBegin(debugID, &apos;unmount&apos;);&#xD;  },&#xD;  onUnmountComponent: function (debugID) {&#xD;    checkDebugID(debugID);&#xD;    markEnd(debugID, &apos;unmount&apos;);&#xD;    emitEvent(&apos;onUnmountComponent&apos;, debugID);&#xD;  },&#xD;  onTestEvent: function () {&#xD;    emitEvent(&apos;onTestEvent&apos;);&#xD;  }&#xD;};&#xD;&#xD;// TODO remove these when RN/www gets updated&#xD;ReactDebugTool.addDevtool = ReactDebugTool.addHook;&#xD;ReactDebugTool.removeDevtool = ReactDebugTool.removeHook;&#xD;&#xD;ReactDebugTool.addHook(ReactInvalidSetStateWarningHook);&#xD;ReactDebugTool.addHook(ReactComponentTreeHook);&#xD;var url = ExecutionEnvironment.canUseDOM &amp;&amp; window.location.href || &apos;&apos;;&#xD;if (/[?&amp;]react_perf\b/.test(url)) {&#xD;  ReactDebugTool.beginProfiling();&#xD;}&#xD;&#xD;module.exports = ReactDebugTool;&#xD;&#xD;/***/ }),&#xD;/* 423 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var ReactUpdates = __webpack_require__(24);&#xD;var Transaction = __webpack_require__(66);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;&#xD;var RESET_BATCHED_UPDATES = {&#xD;  initialize: emptyFunction,&#xD;  close: function () {&#xD;    ReactDefaultBatchingStrategy.isBatchingUpdates = false;&#xD;  }&#xD;};&#xD;&#xD;var FLUSH_BATCHED_UPDATES = {&#xD;  initialize: emptyFunction,&#xD;  close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)&#xD;};&#xD;&#xD;var TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];&#xD;&#xD;function ReactDefaultBatchingStrategyTransaction() {&#xD;  this.reinitializeTransaction();&#xD;}&#xD;&#xD;_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {&#xD;  getTransactionWrappers: function () {&#xD;    return TRANSACTION_WRAPPERS;&#xD;  }&#xD;});&#xD;&#xD;var transaction = new ReactDefaultBatchingStrategyTransaction();&#xD;&#xD;var ReactDefaultBatchingStrategy = {&#xD;  isBatchingUpdates: false,&#xD;&#xD;  /**&#xD;   * Call the provided function in a context within which calls to `setState`&#xD;   * and friends are batched such that components aren&apos;t updated unnecessarily.&#xD;   */&#xD;  batchedUpdates: function (callback, a, b, c, d, e) {&#xD;    var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;&#xD;&#xD;    ReactDefaultBatchingStrategy.isBatchingUpdates = true;&#xD;&#xD;    // The code is written this way to avoid extra allocations&#xD;    if (alreadyBatchingUpdates) {&#xD;      return callback(a, b, c, d, e);&#xD;    } else {&#xD;      return transaction.perform(callback, null, a, b, c, d, e);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactDefaultBatchingStrategy;&#xD;&#xD;/***/ }),&#xD;/* 424 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ARIADOMPropertyConfig = __webpack_require__(394);&#xD;var BeforeInputEventPlugin = __webpack_require__(396);&#xD;var ChangeEventPlugin = __webpack_require__(398);&#xD;var DefaultEventPluginOrder = __webpack_require__(400);&#xD;var EnterLeaveEventPlugin = __webpack_require__(401);&#xD;var HTMLDOMPropertyConfig = __webpack_require__(403);&#xD;var ReactComponentBrowserEnvironment = __webpack_require__(405);&#xD;var ReactDOMComponent = __webpack_require__(408);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactDOMEmptyComponent = __webpack_require__(410);&#xD;var ReactDOMTreeTraversal = __webpack_require__(420);&#xD;var ReactDOMTextComponent = __webpack_require__(418);&#xD;var ReactDefaultBatchingStrategy = __webpack_require__(423);&#xD;var ReactEventListener = __webpack_require__(427);&#xD;var ReactInjection = __webpack_require__(429);&#xD;var ReactReconcileTransaction = __webpack_require__(435);&#xD;var SVGDOMPropertyConfig = __webpack_require__(440);&#xD;var SelectEventPlugin = __webpack_require__(441);&#xD;var SimpleEventPlugin = __webpack_require__(442);&#xD;&#xD;var alreadyInjected = false;&#xD;&#xD;function inject() {&#xD;  if (alreadyInjected) {&#xD;    // TODO: This is currently true because these injections are shared between&#xD;    // the client and the server package. They should be built independently&#xD;    // and not share any injection state. Then this problem will be solved.&#xD;    return;&#xD;  }&#xD;  alreadyInjected = true;&#xD;&#xD;  ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);&#xD;&#xD;  /**&#xD;   * Inject modules for resolving DOM hierarchy and plugin ordering.&#xD;   */&#xD;  ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);&#xD;  ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);&#xD;  ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);&#xD;&#xD;  /**&#xD;   * Some important event plugins included by default (without having to require&#xD;   * them).&#xD;   */&#xD;  ReactInjection.EventPluginHub.injectEventPluginsByName({&#xD;    SimpleEventPlugin: SimpleEventPlugin,&#xD;    EnterLeaveEventPlugin: EnterLeaveEventPlugin,&#xD;    ChangeEventPlugin: ChangeEventPlugin,&#xD;    SelectEventPlugin: SelectEventPlugin,&#xD;    BeforeInputEventPlugin: BeforeInputEventPlugin&#xD;  });&#xD;&#xD;  ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);&#xD;&#xD;  ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);&#xD;&#xD;  ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);&#xD;  ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);&#xD;  ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);&#xD;&#xD;  ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {&#xD;    return new ReactDOMEmptyComponent(instantiate);&#xD;  });&#xD;&#xD;  ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);&#xD;  ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);&#xD;&#xD;  ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);&#xD;}&#xD;&#xD;module.exports = {&#xD;  inject: inject&#xD;};&#xD;&#xD;/***/ }),&#xD;/* 425 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;// The Symbol used to tag the ReactElement type. If there is no native Symbol&#xD;// nor polyfill, then a plain number is used for performance.&#xD;&#xD;var REACT_ELEMENT_TYPE = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol[&apos;for&apos;] &amp;&amp; Symbol[&apos;for&apos;](&apos;react.element&apos;) || 0xeac7;&#xD;&#xD;module.exports = REACT_ELEMENT_TYPE;&#xD;&#xD;/***/ }),&#xD;/* 426 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPluginHub = __webpack_require__(50);&#xD;&#xD;function runEventQueueInBatch(events) {&#xD;  EventPluginHub.enqueueEvents(events);&#xD;  EventPluginHub.processEventQueue(false);&#xD;}&#xD;&#xD;var ReactEventEmitterMixin = {&#xD;&#xD;  /**&#xD;   * Streams a fired top-level event to `EventPluginHub` where plugins have the&#xD;   * opportunity to create `ReactEvent`s to be dispatched.&#xD;   */&#xD;  handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);&#xD;    runEventQueueInBatch(events);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactEventEmitterMixin;&#xD;&#xD;/***/ }),&#xD;/* 427 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var EventListener = __webpack_require__(133);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var PooledClass = __webpack_require__(33);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var getEventTarget = __webpack_require__(96);&#xD;var getUnboundedScrollPosition = __webpack_require__(331);&#xD;&#xD;/**&#xD; * Find the deepest React component completely containing the root of the&#xD; * passed-in instance (for use when entire React trees are nested within each&#xD; * other). If React trees are not nested, returns null.&#xD; */&#xD;function findParent(inst) {&#xD;  // TODO: It may be a good idea to cache this to prevent unnecessary DOM&#xD;  // traversal, but caching is difficult to do correctly without using a&#xD;  // mutation observer to listen for all DOM changes.&#xD;  while (inst._hostParent) {&#xD;    inst = inst._hostParent;&#xD;  }&#xD;  var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;  var container = rootNode.parentNode;&#xD;  return ReactDOMComponentTree.getClosestInstanceFromNode(container);&#xD;}&#xD;&#xD;// Used to store ancestor hierarchy in top level callback&#xD;function TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {&#xD;  this.topLevelType = topLevelType;&#xD;  this.nativeEvent = nativeEvent;&#xD;  this.ancestors = [];&#xD;}&#xD;_assign(TopLevelCallbackBookKeeping.prototype, {&#xD;  destructor: function () {&#xD;    this.topLevelType = null;&#xD;    this.nativeEvent = null;&#xD;    this.ancestors.length = 0;&#xD;  }&#xD;});&#xD;PooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);&#xD;&#xD;function handleTopLevelImpl(bookKeeping) {&#xD;  var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);&#xD;  var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);&#xD;&#xD;  // Loop through the hierarchy, in case there&apos;s any nested components.&#xD;  // It&apos;s important that we build the array of ancestors before calling any&#xD;  // event handlers, because event handlers can modify the DOM, leading to&#xD;  // inconsistencies with ReactMount&apos;s node cache. See #1105.&#xD;  var ancestor = targetInst;&#xD;  do {&#xD;    bookKeeping.ancestors.push(ancestor);&#xD;    ancestor = ancestor &amp;&amp; findParent(ancestor);&#xD;  } while (ancestor);&#xD;&#xD;  for (var i = 0; i &lt; bookKeeping.ancestors.length; i++) {&#xD;    targetInst = bookKeeping.ancestors[i];&#xD;    ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));&#xD;  }&#xD;}&#xD;&#xD;function scrollValueMonitor(cb) {&#xD;  var scrollPosition = getUnboundedScrollPosition(window);&#xD;  cb(scrollPosition);&#xD;}&#xD;&#xD;var ReactEventListener = {&#xD;  _enabled: true,&#xD;  _handleTopLevel: null,&#xD;&#xD;  WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,&#xD;&#xD;  setHandleTopLevel: function (handleTopLevel) {&#xD;    ReactEventListener._handleTopLevel = handleTopLevel;&#xD;  },&#xD;&#xD;  setEnabled: function (enabled) {&#xD;    ReactEventListener._enabled = !!enabled;&#xD;  },&#xD;&#xD;  isEnabled: function () {&#xD;    return ReactEventListener._enabled;&#xD;  },&#xD;&#xD;  /**&#xD;   * Traps top-level events by using event bubbling.&#xD;   *&#xD;   * @param {string} topLevelType Record from `EventConstants`.&#xD;   * @param {string} handlerBaseName Event name (e.g. "click").&#xD;   * @param {object} element Element on which to attach listener.&#xD;   * @return {?object} An object with a remove function which will forcefully&#xD;   *                  remove the listener.&#xD;   * @internal&#xD;   */&#xD;  trapBubbledEvent: function (topLevelType, handlerBaseName, element) {&#xD;    if (!element) {&#xD;      return null;&#xD;    }&#xD;    return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));&#xD;  },&#xD;&#xD;  /**&#xD;   * Traps a top-level event by using event capturing.&#xD;   *&#xD;   * @param {string} topLevelType Record from `EventConstants`.&#xD;   * @param {string} handlerBaseName Event name (e.g. "click").&#xD;   * @param {object} element Element on which to attach listener.&#xD;   * @return {?object} An object with a remove function which will forcefully&#xD;   *                  remove the listener.&#xD;   * @internal&#xD;   */&#xD;  trapCapturedEvent: function (topLevelType, handlerBaseName, element) {&#xD;    if (!element) {&#xD;      return null;&#xD;    }&#xD;    return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));&#xD;  },&#xD;&#xD;  monitorScrollValue: function (refresh) {&#xD;    var callback = scrollValueMonitor.bind(null, refresh);&#xD;    EventListener.listen(window, &apos;scroll&apos;, callback);&#xD;  },&#xD;&#xD;  dispatchEvent: function (topLevelType, nativeEvent) {&#xD;    if (!ReactEventListener._enabled) {&#xD;      return;&#xD;    }&#xD;&#xD;    var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);&#xD;    try {&#xD;      // Event queue being processed in the same cycle allows&#xD;      // `preventDefault`.&#xD;      ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);&#xD;    } finally {&#xD;      TopLevelCallbackBookKeeping.release(bookKeeping);&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactEventListener;&#xD;&#xD;/***/ }),&#xD;/* 428 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var history = [];&#xD;&#xD;var ReactHostOperationHistoryHook = {&#xD;  onHostOperation: function (operation) {&#xD;    history.push(operation);&#xD;  },&#xD;  clearHistory: function () {&#xD;    if (ReactHostOperationHistoryHook._preventClearing) {&#xD;      // Should only be used for tests.&#xD;      return;&#xD;    }&#xD;&#xD;    history = [];&#xD;  },&#xD;  getHistory: function () {&#xD;    return history;&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactHostOperationHistoryHook;&#xD;&#xD;/***/ }),&#xD;/* 429 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var DOMProperty = __webpack_require__(28);&#xD;var EventPluginHub = __webpack_require__(50);&#xD;var EventPluginUtils = __webpack_require__(87);&#xD;var ReactComponentEnvironment = __webpack_require__(90);&#xD;var ReactEmptyComponent = __webpack_require__(159);&#xD;var ReactBrowserEventEmitter = __webpack_require__(64);&#xD;var ReactHostComponent = __webpack_require__(161);&#xD;var ReactUpdates = __webpack_require__(24);&#xD;&#xD;var ReactInjection = {&#xD;  Component: ReactComponentEnvironment.injection,&#xD;  DOMProperty: DOMProperty.injection,&#xD;  EmptyComponent: ReactEmptyComponent.injection,&#xD;  EventPluginHub: EventPluginHub.injection,&#xD;  EventPluginUtils: EventPluginUtils.injection,&#xD;  EventEmitter: ReactBrowserEventEmitter.injection,&#xD;  HostComponent: ReactHostComponent.injection,&#xD;  Updates: ReactUpdates.injection&#xD;};&#xD;&#xD;module.exports = ReactInjection;&#xD;&#xD;/***/ }),&#xD;/* 430 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2016-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;if (true) {&#xD;  var processingChildContext = false;&#xD;&#xD;  var warnInvalidSetState = function () {&#xD;     true ? warning(!processingChildContext, &apos;setState(...): Cannot call setState() inside getChildContext()&apos;) : void 0;&#xD;  };&#xD;}&#xD;&#xD;var ReactInvalidSetStateWarningHook = {&#xD;  onBeginProcessingChildContext: function () {&#xD;    processingChildContext = true;&#xD;  },&#xD;  onEndProcessingChildContext: function () {&#xD;    processingChildContext = false;&#xD;  },&#xD;  onSetState: function () {&#xD;    warnInvalidSetState();&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactInvalidSetStateWarningHook;&#xD;&#xD;/***/ }),&#xD;/* 431 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var adler32 = __webpack_require__(453);&#xD;&#xD;var TAG_END = /\/?&gt;/;&#xD;var COMMENT_START = /^&lt;\!\-\-/;&#xD;&#xD;var ReactMarkupChecksum = {&#xD;  CHECKSUM_ATTR_NAME: &apos;data-react-checksum&apos;,&#xD;&#xD;  /**&#xD;   * @param {string} markup Markup string&#xD;   * @return {string} Markup string with checksum attribute attached&#xD;   */&#xD;  addChecksumToMarkup: function (markup) {&#xD;    var checksum = adler32(markup);&#xD;&#xD;    // Add checksum (handle both parent tags, comments and self-closing tags)&#xD;    if (COMMENT_START.test(markup)) {&#xD;      return markup;&#xD;    } else {&#xD;      return markup.replace(TAG_END, &apos; &apos; + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + &apos;="&apos; + checksum + &apos;"$&amp;&apos;);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {string} markup to use&#xD;   * @param {DOMElement} element root React element&#xD;   * @returns {boolean} whether or not the markup is the same&#xD;   */&#xD;  canReuseMarkup: function (markup, element) {&#xD;    var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);&#xD;    existingChecksum = existingChecksum &amp;&amp; parseInt(existingChecksum, 10);&#xD;    var markupChecksum = adler32(markup);&#xD;    return markupChecksum === existingChecksum;&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactMarkupChecksum;&#xD;&#xD;/***/ }),&#xD;/* 432 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactComponentEnvironment = __webpack_require__(90);&#xD;var ReactInstanceMap = __webpack_require__(52);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactReconciler = __webpack_require__(42);&#xD;var ReactChildReconciler = __webpack_require__(404);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var flattenChildren = __webpack_require__(457);&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Make an update for markup to be rendered and inserted at a supplied index.&#xD; *&#xD; * @param {string} markup Markup that renders into an element.&#xD; * @param {number} toIndex Destination index.&#xD; * @private&#xD; */&#xD;function makeInsertMarkup(markup, afterNode, toIndex) {&#xD;  // NOTE: Null values reduce hidden classes.&#xD;  return {&#xD;    type: &apos;INSERT_MARKUP&apos;,&#xD;    content: markup,&#xD;    fromIndex: null,&#xD;    fromNode: null,&#xD;    toIndex: toIndex,&#xD;    afterNode: afterNode&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Make an update for moving an existing element to another index.&#xD; *&#xD; * @param {number} fromIndex Source index of the existing element.&#xD; * @param {number} toIndex Destination index of the element.&#xD; * @private&#xD; */&#xD;function makeMove(child, afterNode, toIndex) {&#xD;  // NOTE: Null values reduce hidden classes.&#xD;  return {&#xD;    type: &apos;MOVE_EXISTING&apos;,&#xD;    content: null,&#xD;    fromIndex: child._mountIndex,&#xD;    fromNode: ReactReconciler.getHostNode(child),&#xD;    toIndex: toIndex,&#xD;    afterNode: afterNode&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Make an update for removing an element at an index.&#xD; *&#xD; * @param {number} fromIndex Index of the element to remove.&#xD; * @private&#xD; */&#xD;function makeRemove(child, node) {&#xD;  // NOTE: Null values reduce hidden classes.&#xD;  return {&#xD;    type: &apos;REMOVE_NODE&apos;,&#xD;    content: null,&#xD;    fromIndex: child._mountIndex,&#xD;    fromNode: node,&#xD;    toIndex: null,&#xD;    afterNode: null&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Make an update for setting the markup of a node.&#xD; *&#xD; * @param {string} markup Markup that renders into an element.&#xD; * @private&#xD; */&#xD;function makeSetMarkup(markup) {&#xD;  // NOTE: Null values reduce hidden classes.&#xD;  return {&#xD;    type: &apos;SET_MARKUP&apos;,&#xD;    content: markup,&#xD;    fromIndex: null,&#xD;    fromNode: null,&#xD;    toIndex: null,&#xD;    afterNode: null&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Make an update for setting the text content.&#xD; *&#xD; * @param {string} textContent Text content to set.&#xD; * @private&#xD; */&#xD;function makeTextContent(textContent) {&#xD;  // NOTE: Null values reduce hidden classes.&#xD;  return {&#xD;    type: &apos;TEXT_CONTENT&apos;,&#xD;    content: textContent,&#xD;    fromIndex: null,&#xD;    fromNode: null,&#xD;    toIndex: null,&#xD;    afterNode: null&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Push an update, if any, onto the queue. Creates a new queue if none is&#xD; * passed and always returns the queue. Mutative.&#xD; */&#xD;function enqueue(queue, update) {&#xD;  if (update) {&#xD;    queue = queue || [];&#xD;    queue.push(update);&#xD;  }&#xD;  return queue;&#xD;}&#xD;&#xD;/**&#xD; * Processes any enqueued updates.&#xD; *&#xD; * @private&#xD; */&#xD;function processQueue(inst, updateQueue) {&#xD;  ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);&#xD;}&#xD;&#xD;var setChildrenForInstrumentation = emptyFunction;&#xD;if (true) {&#xD;  var getDebugID = function (inst) {&#xD;    if (!inst._debugID) {&#xD;      // Check for ART-like instances. TODO: This is silly/gross.&#xD;      var internal;&#xD;      if (internal = ReactInstanceMap.get(inst)) {&#xD;        inst = internal;&#xD;      }&#xD;    }&#xD;    return inst._debugID;&#xD;  };&#xD;  setChildrenForInstrumentation = function (children) {&#xD;    var debugID = getDebugID(this);&#xD;    // TODO: React Native empty components are also multichild.&#xD;    // This means they still get into this method but don&apos;t have _debugID.&#xD;    if (debugID !== 0) {&#xD;      ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {&#xD;        return children[key]._debugID;&#xD;      }) : []);&#xD;    }&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * ReactMultiChild are capable of reconciling multiple children.&#xD; *&#xD; * @class ReactMultiChild&#xD; * @internal&#xD; */&#xD;var ReactMultiChild = {&#xD;&#xD;  /**&#xD;   * Provides common functionality for components that must reconcile multiple&#xD;   * children. This is used by `ReactDOMComponent` to mount, update, and&#xD;   * unmount child components.&#xD;   *&#xD;   * @lends {ReactMultiChild.prototype}&#xD;   */&#xD;  Mixin: {&#xD;&#xD;    _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {&#xD;      if (true) {&#xD;        var selfDebugID = getDebugID(this);&#xD;        if (this._currentElement) {&#xD;          try {&#xD;            ReactCurrentOwner.current = this._currentElement._owner;&#xD;            return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);&#xD;          } finally {&#xD;            ReactCurrentOwner.current = null;&#xD;          }&#xD;        }&#xD;      }&#xD;      return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);&#xD;    },&#xD;&#xD;    _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {&#xD;      var nextChildren;&#xD;      var selfDebugID = 0;&#xD;      if (true) {&#xD;        selfDebugID = getDebugID(this);&#xD;        if (this._currentElement) {&#xD;          try {&#xD;            ReactCurrentOwner.current = this._currentElement._owner;&#xD;            nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);&#xD;          } finally {&#xD;            ReactCurrentOwner.current = null;&#xD;          }&#xD;          ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);&#xD;          return nextChildren;&#xD;        }&#xD;      }&#xD;      nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);&#xD;      ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);&#xD;      return nextChildren;&#xD;    },&#xD;&#xD;    /**&#xD;     * Generates a "mount image" for each of the supplied children. In the case&#xD;     * of `ReactDOMComponent`, a mount image is a string of markup.&#xD;     *&#xD;     * @param {?object} nestedChildren Nested child maps.&#xD;     * @return {array} An array of mounted representations.&#xD;     * @internal&#xD;     */&#xD;    mountChildren: function (nestedChildren, transaction, context) {&#xD;      var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);&#xD;      this._renderedChildren = children;&#xD;&#xD;      var mountImages = [];&#xD;      var index = 0;&#xD;      for (var name in children) {&#xD;        if (children.hasOwnProperty(name)) {&#xD;          var child = children[name];&#xD;          var selfDebugID = 0;&#xD;          if (true) {&#xD;            selfDebugID = getDebugID(this);&#xD;          }&#xD;          var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);&#xD;          child._mountIndex = index++;&#xD;          mountImages.push(mountImage);&#xD;        }&#xD;      }&#xD;&#xD;      if (true) {&#xD;        setChildrenForInstrumentation.call(this, children);&#xD;      }&#xD;&#xD;      return mountImages;&#xD;    },&#xD;&#xD;    /**&#xD;     * Replaces any rendered children with a text content string.&#xD;     *&#xD;     * @param {string} nextContent String of content.&#xD;     * @internal&#xD;     */&#xD;    updateTextContent: function (nextContent) {&#xD;      var prevChildren = this._renderedChildren;&#xD;      // Remove any rendered children.&#xD;      ReactChildReconciler.unmountChildren(prevChildren, false);&#xD;      for (var name in prevChildren) {&#xD;        if (prevChildren.hasOwnProperty(name)) {&#xD;           true ?  true ? invariant(false, &apos;updateTextContent called on non-empty component.&apos;) : _prodInvariant(&apos;118&apos;) : void 0;&#xD;        }&#xD;      }&#xD;      // Set new text content.&#xD;      var updates = [makeTextContent(nextContent)];&#xD;      processQueue(this, updates);&#xD;    },&#xD;&#xD;    /**&#xD;     * Replaces any rendered children with a markup string.&#xD;     *&#xD;     * @param {string} nextMarkup String of markup.&#xD;     * @internal&#xD;     */&#xD;    updateMarkup: function (nextMarkup) {&#xD;      var prevChildren = this._renderedChildren;&#xD;      // Remove any rendered children.&#xD;      ReactChildReconciler.unmountChildren(prevChildren, false);&#xD;      for (var name in prevChildren) {&#xD;        if (prevChildren.hasOwnProperty(name)) {&#xD;           true ?  true ? invariant(false, &apos;updateTextContent called on non-empty component.&apos;) : _prodInvariant(&apos;118&apos;) : void 0;&#xD;        }&#xD;      }&#xD;      var updates = [makeSetMarkup(nextMarkup)];&#xD;      processQueue(this, updates);&#xD;    },&#xD;&#xD;    /**&#xD;     * Updates the rendered children with new children.&#xD;     *&#xD;     * @param {?object} nextNestedChildrenElements Nested child element maps.&#xD;     * @param {ReactReconcileTransaction} transaction&#xD;     * @internal&#xD;     */&#xD;    updateChildren: function (nextNestedChildrenElements, transaction, context) {&#xD;      // Hook used by React ART&#xD;      this._updateChildren(nextNestedChildrenElements, transaction, context);&#xD;    },&#xD;&#xD;    /**&#xD;     * @param {?object} nextNestedChildrenElements Nested child element maps.&#xD;     * @param {ReactReconcileTransaction} transaction&#xD;     * @final&#xD;     * @protected&#xD;     */&#xD;    _updateChildren: function (nextNestedChildrenElements, transaction, context) {&#xD;      var prevChildren = this._renderedChildren;&#xD;      var removedNodes = {};&#xD;      var mountImages = [];&#xD;      var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);&#xD;      if (!nextChildren &amp;&amp; !prevChildren) {&#xD;        return;&#xD;      }&#xD;      var updates = null;&#xD;      var name;&#xD;      // `nextIndex` will increment for each child in `nextChildren`, but&#xD;      // `lastIndex` will be the last index visited in `prevChildren`.&#xD;      var nextIndex = 0;&#xD;      var lastIndex = 0;&#xD;      // `nextMountIndex` will increment for each newly mounted child.&#xD;      var nextMountIndex = 0;&#xD;      var lastPlacedNode = null;&#xD;      for (name in nextChildren) {&#xD;        if (!nextChildren.hasOwnProperty(name)) {&#xD;          continue;&#xD;        }&#xD;        var prevChild = prevChildren &amp;&amp; prevChildren[name];&#xD;        var nextChild = nextChildren[name];&#xD;        if (prevChild === nextChild) {&#xD;          updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));&#xD;          lastIndex = Math.max(prevChild._mountIndex, lastIndex);&#xD;          prevChild._mountIndex = nextIndex;&#xD;        } else {&#xD;          if (prevChild) {&#xD;            // Update `lastIndex` before `_mountIndex` gets unset by unmounting.&#xD;            lastIndex = Math.max(prevChild._mountIndex, lastIndex);&#xD;            // The `removedNodes` loop below will actually remove the child.&#xD;          }&#xD;          // The child must be instantiated before it&apos;s mounted.&#xD;          updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));&#xD;          nextMountIndex++;&#xD;        }&#xD;        nextIndex++;&#xD;        lastPlacedNode = ReactReconciler.getHostNode(nextChild);&#xD;      }&#xD;      // Remove children that are no longer present.&#xD;      for (name in removedNodes) {&#xD;        if (removedNodes.hasOwnProperty(name)) {&#xD;          updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));&#xD;        }&#xD;      }&#xD;      if (updates) {&#xD;        processQueue(this, updates);&#xD;      }&#xD;      this._renderedChildren = nextChildren;&#xD;&#xD;      if (true) {&#xD;        setChildrenForInstrumentation.call(this, nextChildren);&#xD;      }&#xD;    },&#xD;&#xD;    /**&#xD;     * Unmounts all rendered children. This should be used to clean up children&#xD;     * when this component is unmounted. It does not actually perform any&#xD;     * backend operations.&#xD;     *&#xD;     * @internal&#xD;     */&#xD;    unmountChildren: function (safely) {&#xD;      var renderedChildren = this._renderedChildren;&#xD;      ReactChildReconciler.unmountChildren(renderedChildren, safely);&#xD;      this._renderedChildren = null;&#xD;    },&#xD;&#xD;    /**&#xD;     * Moves a child component to the supplied index.&#xD;     *&#xD;     * @param {ReactComponent} child Component to move.&#xD;     * @param {number} toIndex Destination index of the element.&#xD;     * @param {number} lastIndex Last index visited of the siblings of `child`.&#xD;     * @protected&#xD;     */&#xD;    moveChild: function (child, afterNode, toIndex, lastIndex) {&#xD;      // If the index of `child` is less than `lastIndex`, then it needs to&#xD;      // be moved. Otherwise, we do not need to move it because a child will be&#xD;      // inserted or moved before `child`.&#xD;      if (child._mountIndex &lt; lastIndex) {&#xD;        return makeMove(child, afterNode, toIndex);&#xD;      }&#xD;    },&#xD;&#xD;    /**&#xD;     * Creates a child component.&#xD;     *&#xD;     * @param {ReactComponent} child Component to create.&#xD;     * @param {string} mountImage Markup to insert.&#xD;     * @protected&#xD;     */&#xD;    createChild: function (child, afterNode, mountImage) {&#xD;      return makeInsertMarkup(mountImage, afterNode, child._mountIndex);&#xD;    },&#xD;&#xD;    /**&#xD;     * Removes a child component.&#xD;     *&#xD;     * @param {ReactComponent} child Child to remove.&#xD;     * @protected&#xD;     */&#xD;    removeChild: function (child, node) {&#xD;      return makeRemove(child, node);&#xD;    },&#xD;&#xD;    /**&#xD;     * Mounts a child with the supplied name.&#xD;     *&#xD;     * NOTE: This is part of `updateChildren` and is here for readability.&#xD;     *&#xD;     * @param {ReactComponent} child Component to mount.&#xD;     * @param {string} name Name of the child.&#xD;     * @param {number} index Index at which to insert the child.&#xD;     * @param {ReactReconcileTransaction} transaction&#xD;     * @private&#xD;     */&#xD;    _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {&#xD;      child._mountIndex = index;&#xD;      return this.createChild(child, afterNode, mountImage);&#xD;    },&#xD;&#xD;    /**&#xD;     * Unmounts a rendered child.&#xD;     *&#xD;     * NOTE: This is part of `updateChildren` and is here for readability.&#xD;     *&#xD;     * @param {ReactComponent} child Component to unmount.&#xD;     * @private&#xD;     */&#xD;    _unmountChild: function (child, node) {&#xD;      var update = this.removeChild(child, node);&#xD;      child._mountIndex = null;&#xD;      return update;&#xD;    }&#xD;&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactMultiChild;&#xD;&#xD;/***/ }),&#xD;/* 433 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * @param {?object} object&#xD; * @return {boolean} True if `object` is a valid owner.&#xD; * @final&#xD; */&#xD;function isValidOwner(object) {&#xD;  return !!(object &amp;&amp; typeof object.attachRef === &apos;function&apos; &amp;&amp; typeof object.detachRef === &apos;function&apos;);&#xD;}&#xD;&#xD;/**&#xD; * ReactOwners are capable of storing references to owned components.&#xD; *&#xD; * All components are capable of //being// referenced by owner components, but&#xD; * only ReactOwner components are capable of //referencing// owned components.&#xD; * The named reference is known as a "ref".&#xD; *&#xD; * Refs are available when mounted and updated during reconciliation.&#xD; *&#xD; *   var MyComponent = React.createClass({&#xD; *     render: function() {&#xD; *       return (&#xD; *         &lt;div onClick={this.handleClick}&gt;&#xD; *           &lt;CustomComponent ref="custom" /&gt;&#xD; *         &lt;/div&gt;&#xD; *       );&#xD; *     },&#xD; *     handleClick: function() {&#xD; *       this.refs.custom.handleClick();&#xD; *     },&#xD; *     componentDidMount: function() {&#xD; *       this.refs.custom.initialize();&#xD; *     }&#xD; *   });&#xD; *&#xD; * Refs should rarely be used. When refs are used, they should only be done to&#xD; * control data that is not handled by React&apos;s data flow.&#xD; *&#xD; * @class ReactOwner&#xD; */&#xD;var ReactOwner = {&#xD;  /**&#xD;   * Adds a component by ref to an owner component.&#xD;   *&#xD;   * @param {ReactComponent} component Component to reference.&#xD;   * @param {string} ref Name by which to refer to the component.&#xD;   * @param {ReactOwner} owner Component on which to record the ref.&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  addComponentAsRefTo: function (component, ref, owner) {&#xD;    !isValidOwner(owner) ?  true ? invariant(false, &apos;addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\&apos;s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).&apos;) : _prodInvariant(&apos;119&apos;) : void 0;&#xD;    owner.attachRef(ref, component);&#xD;  },&#xD;&#xD;  /**&#xD;   * Removes a component by ref from an owner component.&#xD;   *&#xD;   * @param {ReactComponent} component Component to dereference.&#xD;   * @param {string} ref Name of the ref to remove.&#xD;   * @param {ReactOwner} owner Component on which the ref is recorded.&#xD;   * @final&#xD;   * @internal&#xD;   */&#xD;  removeComponentAsRefFrom: function (component, ref, owner) {&#xD;    !isValidOwner(owner) ?  true ? invariant(false, &apos;removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\&apos;s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).&apos;) : _prodInvariant(&apos;120&apos;) : void 0;&#xD;    var ownerPublicInstance = owner.getPublicInstance();&#xD;    // Check that `component`&apos;s owner is still alive and that `component` is still the current ref&#xD;    // because we do not want to detach the ref if another component stole it.&#xD;    if (ownerPublicInstance &amp;&amp; ownerPublicInstance.refs[ref] === component.getPublicInstance()) {&#xD;      owner.detachRef(ref);&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactOwner;&#xD;&#xD;/***/ }),&#xD;/* 434 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactPropTypeLocationNames = {};&#xD;&#xD;if (true) {&#xD;  ReactPropTypeLocationNames = {&#xD;    prop: &apos;prop&apos;,&#xD;    context: &apos;context&apos;,&#xD;    childContext: &apos;child context&apos;&#xD;  };&#xD;}&#xD;&#xD;module.exports = ReactPropTypeLocationNames;&#xD;&#xD;/***/ }),&#xD;/* 435 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var CallbackQueue = __webpack_require__(155);&#xD;var PooledClass = __webpack_require__(33);&#xD;var ReactBrowserEventEmitter = __webpack_require__(64);&#xD;var ReactInputSelection = __webpack_require__(162);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var Transaction = __webpack_require__(66);&#xD;var ReactUpdateQueue = __webpack_require__(92);&#xD;&#xD;/**&#xD; * Ensures that, when possible, the selection range (currently selected text&#xD; * input) is not disturbed by performing the transaction.&#xD; */&#xD;var SELECTION_RESTORATION = {&#xD;  /**&#xD;   * @return {Selection} Selection information.&#xD;   */&#xD;  initialize: ReactInputSelection.getSelectionInformation,&#xD;  /**&#xD;   * @param {Selection} sel Selection information returned from `initialize`.&#xD;   */&#xD;  close: ReactInputSelection.restoreSelection&#xD;};&#xD;&#xD;/**&#xD; * Suppresses events (blur/focus) that could be inadvertently dispatched due to&#xD; * high level DOM manipulations (like temporarily removing a text input from the&#xD; * DOM).&#xD; */&#xD;var EVENT_SUPPRESSION = {&#xD;  /**&#xD;   * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before&#xD;   * the reconciliation.&#xD;   */&#xD;  initialize: function () {&#xD;    var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();&#xD;    ReactBrowserEventEmitter.setEnabled(false);&#xD;    return currentlyEnabled;&#xD;  },&#xD;&#xD;  /**&#xD;   * @param {boolean} previouslyEnabled Enabled status of&#xD;   *   `ReactBrowserEventEmitter` before the reconciliation occurred. `close`&#xD;   *   restores the previous value.&#xD;   */&#xD;  close: function (previouslyEnabled) {&#xD;    ReactBrowserEventEmitter.setEnabled(previouslyEnabled);&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Provides a queue for collecting `componentDidMount` and&#xD; * `componentDidUpdate` callbacks during the transaction.&#xD; */&#xD;var ON_DOM_READY_QUEUEING = {&#xD;  /**&#xD;   * Initializes the internal `onDOMReady` queue.&#xD;   */&#xD;  initialize: function () {&#xD;    this.reactMountReady.reset();&#xD;  },&#xD;&#xD;  /**&#xD;   * After DOM is flushed, invoke all registered `onDOMReady` callbacks.&#xD;   */&#xD;  close: function () {&#xD;    this.reactMountReady.notifyAll();&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * Executed within the scope of the `Transaction` instance. Consider these as&#xD; * being member methods, but with an implied ordering while being isolated from&#xD; * each other.&#xD; */&#xD;var TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];&#xD;&#xD;if (true) {&#xD;  TRANSACTION_WRAPPERS.push({&#xD;    initialize: ReactInstrumentation.debugTool.onBeginFlush,&#xD;    close: ReactInstrumentation.debugTool.onEndFlush&#xD;  });&#xD;}&#xD;&#xD;/**&#xD; * Currently:&#xD; * - The order that these are listed in the transaction is critical:&#xD; * - Suppresses events.&#xD; * - Restores selection range.&#xD; *&#xD; * Future:&#xD; * - Restore document/overflow scroll positions that were unintentionally&#xD; *   modified via DOM insertions above the top viewport boundary.&#xD; * - Implement/integrate with customized constraint based layout system and keep&#xD; *   track of which dimensions must be remeasured.&#xD; *&#xD; * @class ReactReconcileTransaction&#xD; */&#xD;function ReactReconcileTransaction(useCreateElement) {&#xD;  this.reinitializeTransaction();&#xD;  // Only server-side rendering really needs this option (see&#xD;  // `ReactServerRendering`), but server-side uses&#xD;  // `ReactServerRenderingTransaction` instead. This option is here so that it&apos;s&#xD;  // accessible and defaults to false when `ReactDOMComponent` and&#xD;  // `ReactDOMTextComponent` checks it in `mountComponent`.`&#xD;  this.renderToStaticMarkup = false;&#xD;  this.reactMountReady = CallbackQueue.getPooled(null);&#xD;  this.useCreateElement = useCreateElement;&#xD;}&#xD;&#xD;var Mixin = {&#xD;  /**&#xD;   * @see Transaction&#xD;   * @abstract&#xD;   * @final&#xD;   * @return {array&lt;object&gt;} List of operation wrap procedures.&#xD;   *   TODO: convert to array&lt;TransactionWrapper&gt;&#xD;   */&#xD;  getTransactionWrappers: function () {&#xD;    return TRANSACTION_WRAPPERS;&#xD;  },&#xD;&#xD;  /**&#xD;   * @return {object} The queue to collect `onDOMReady` callbacks with.&#xD;   */&#xD;  getReactMountReady: function () {&#xD;    return this.reactMountReady;&#xD;  },&#xD;&#xD;  /**&#xD;   * @return {object} The queue to collect React async events.&#xD;   */&#xD;  getUpdateQueue: function () {&#xD;    return ReactUpdateQueue;&#xD;  },&#xD;&#xD;  /**&#xD;   * Save current transaction state -- if the return value from this method is&#xD;   * passed to `rollback`, the transaction will be reset to that state.&#xD;   */&#xD;  checkpoint: function () {&#xD;    // reactMountReady is the our only stateful wrapper&#xD;    return this.reactMountReady.checkpoint();&#xD;  },&#xD;&#xD;  rollback: function (checkpoint) {&#xD;    this.reactMountReady.rollback(checkpoint);&#xD;  },&#xD;&#xD;  /**&#xD;   * `PooledClass` looks for this, and will invoke this before allowing this&#xD;   * instance to be reused.&#xD;   */&#xD;  destructor: function () {&#xD;    CallbackQueue.release(this.reactMountReady);&#xD;    this.reactMountReady = null;&#xD;  }&#xD;};&#xD;&#xD;_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);&#xD;&#xD;PooledClass.addPoolingTo(ReactReconcileTransaction);&#xD;&#xD;module.exports = ReactReconcileTransaction;&#xD;&#xD;/***/ }),&#xD;/* 436 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactOwner = __webpack_require__(433);&#xD;&#xD;var ReactRef = {};&#xD;&#xD;function attachRef(ref, component, owner) {&#xD;  if (typeof ref === &apos;function&apos;) {&#xD;    ref(component.getPublicInstance());&#xD;  } else {&#xD;    // Legacy ref&#xD;    ReactOwner.addComponentAsRefTo(component, ref, owner);&#xD;  }&#xD;}&#xD;&#xD;function detachRef(ref, component, owner) {&#xD;  if (typeof ref === &apos;function&apos;) {&#xD;    ref(null);&#xD;  } else {&#xD;    // Legacy ref&#xD;    ReactOwner.removeComponentAsRefFrom(component, ref, owner);&#xD;  }&#xD;}&#xD;&#xD;ReactRef.attachRefs = function (instance, element) {&#xD;  if (element === null || typeof element !== &apos;object&apos;) {&#xD;    return;&#xD;  }&#xD;  var ref = element.ref;&#xD;  if (ref != null) {&#xD;    attachRef(ref, instance, element._owner);&#xD;  }&#xD;};&#xD;&#xD;ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {&#xD;  // If either the owner or a `ref` has changed, make sure the newest owner&#xD;  // has stored a reference to `this`, and the previous owner (if different)&#xD;  // has forgotten the reference to `this`. We use the element instead&#xD;  // of the public this.props because the post processing cannot determine&#xD;  // a ref. The ref conceptually lives on the element.&#xD;&#xD;  // TODO: Should this even be possible? The owner cannot change because&#xD;  // it&apos;s forbidden by shouldUpdateReactComponent. The ref can change&#xD;  // if you swap the keys of but not the refs. Reconsider where this check&#xD;  // is made. It probably belongs where the key checking and&#xD;  // instantiateReactComponent is done.&#xD;&#xD;  var prevRef = null;&#xD;  var prevOwner = null;&#xD;  if (prevElement !== null &amp;&amp; typeof prevElement === &apos;object&apos;) {&#xD;    prevRef = prevElement.ref;&#xD;    prevOwner = prevElement._owner;&#xD;  }&#xD;&#xD;  var nextRef = null;&#xD;  var nextOwner = null;&#xD;  if (nextElement !== null &amp;&amp; typeof nextElement === &apos;object&apos;) {&#xD;    nextRef = nextElement.ref;&#xD;    nextOwner = nextElement._owner;&#xD;  }&#xD;&#xD;  return prevRef !== nextRef ||&#xD;  // If owner changes but we have an unchanged function ref, don&apos;t update refs&#xD;  typeof nextRef === &apos;string&apos; &amp;&amp; nextOwner !== prevOwner;&#xD;};&#xD;&#xD;ReactRef.detachRefs = function (instance, element) {&#xD;  if (element === null || typeof element !== &apos;object&apos;) {&#xD;    return;&#xD;  }&#xD;  var ref = element.ref;&#xD;  if (ref != null) {&#xD;    detachRef(ref, instance, element._owner);&#xD;  }&#xD;};&#xD;&#xD;module.exports = ReactRef;&#xD;&#xD;/***/ }),&#xD;/* 437 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2014-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var PooledClass = __webpack_require__(33);&#xD;var Transaction = __webpack_require__(66);&#xD;var ReactInstrumentation = __webpack_require__(21);&#xD;var ReactServerUpdateQueue = __webpack_require__(438);&#xD;&#xD;/**&#xD; * Executed within the scope of the `Transaction` instance. Consider these as&#xD; * being member methods, but with an implied ordering while being isolated from&#xD; * each other.&#xD; */&#xD;var TRANSACTION_WRAPPERS = [];&#xD;&#xD;if (true) {&#xD;  TRANSACTION_WRAPPERS.push({&#xD;    initialize: ReactInstrumentation.debugTool.onBeginFlush,&#xD;    close: ReactInstrumentation.debugTool.onEndFlush&#xD;  });&#xD;}&#xD;&#xD;var noopCallbackQueue = {&#xD;  enqueue: function () {}&#xD;};&#xD;&#xD;/**&#xD; * @class ReactServerRenderingTransaction&#xD; * @param {boolean} renderToStaticMarkup&#xD; */&#xD;function ReactServerRenderingTransaction(renderToStaticMarkup) {&#xD;  this.reinitializeTransaction();&#xD;  this.renderToStaticMarkup = renderToStaticMarkup;&#xD;  this.useCreateElement = false;&#xD;  this.updateQueue = new ReactServerUpdateQueue(this);&#xD;}&#xD;&#xD;var Mixin = {&#xD;  /**&#xD;   * @see Transaction&#xD;   * @abstract&#xD;   * @final&#xD;   * @return {array} Empty list of operation wrap procedures.&#xD;   */&#xD;  getTransactionWrappers: function () {&#xD;    return TRANSACTION_WRAPPERS;&#xD;  },&#xD;&#xD;  /**&#xD;   * @return {object} The queue to collect `onDOMReady` callbacks with.&#xD;   */&#xD;  getReactMountReady: function () {&#xD;    return noopCallbackQueue;&#xD;  },&#xD;&#xD;  /**&#xD;   * @return {object} The queue to collect React async events.&#xD;   */&#xD;  getUpdateQueue: function () {&#xD;    return this.updateQueue;&#xD;  },&#xD;&#xD;  /**&#xD;   * `PooledClass` looks for this, and will invoke this before allowing this&#xD;   * instance to be reused.&#xD;   */&#xD;  destructor: function () {},&#xD;&#xD;  checkpoint: function () {},&#xD;&#xD;  rollback: function () {}&#xD;};&#xD;&#xD;_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);&#xD;&#xD;PooledClass.addPoolingTo(ReactServerRenderingTransaction);&#xD;&#xD;module.exports = ReactServerRenderingTransaction;&#xD;&#xD;/***/ }),&#xD;/* 438 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2015-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }&#xD;&#xD;var ReactUpdateQueue = __webpack_require__(92);&#xD;&#xD;var warning = __webpack_require__(4);&#xD;&#xD;function warnNoop(publicInstance, callerName) {&#xD;  if (true) {&#xD;    var constructor = publicInstance.constructor;&#xD;     true ? warning(false, &apos;%s(...): Can only update a mounting component. &apos; + &apos;This usually means you called %s() outside componentWillMount() on the server. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, constructor &amp;&amp; (constructor.displayName || constructor.name) || &apos;ReactClass&apos;) : void 0;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * This is the update queue used for server rendering.&#xD; * It delegates to ReactUpdateQueue while server rendering is in progress and&#xD; * switches to ReactNoopUpdateQueue after the transaction has completed.&#xD; * @class ReactServerUpdateQueue&#xD; * @param {Transaction} transaction&#xD; */&#xD;&#xD;var ReactServerUpdateQueue = function () {&#xD;  function ReactServerUpdateQueue(transaction) {&#xD;    _classCallCheck(this, ReactServerUpdateQueue);&#xD;&#xD;    this.transaction = transaction;&#xD;  }&#xD;&#xD;  /**&#xD;   * Checks whether or not this composite component is mounted.&#xD;   * @param {ReactClass} publicInstance The instance we want to test.&#xD;   * @return {boolean} True if mounted, false otherwise.&#xD;   * @protected&#xD;   * @final&#xD;   */&#xD;&#xD;&#xD;  ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {&#xD;    return false;&#xD;  };&#xD;&#xD;  /**&#xD;   * Enqueue a callback that will be executed after all the pending updates&#xD;   * have processed.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance to use as `this` context.&#xD;   * @param {?function} callback Called after state is updated.&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {&#xD;    if (this.transaction.isInTransaction()) {&#xD;      ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);&#xD;    }&#xD;  };&#xD;&#xD;  /**&#xD;   * Forces an update. This should only be invoked when it is known with&#xD;   * certainty that we are **not** in a DOM transaction.&#xD;   *&#xD;   * You may want to call this when you know that some deeper aspect of the&#xD;   * component&apos;s state has changed but `setState` was not called.&#xD;   *&#xD;   * This will not invoke `shouldComponentUpdate`, but it will invoke&#xD;   * `componentWillUpdate` and `componentDidUpdate`.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {&#xD;    if (this.transaction.isInTransaction()) {&#xD;      ReactUpdateQueue.enqueueForceUpdate(publicInstance);&#xD;    } else {&#xD;      warnNoop(publicInstance, &apos;forceUpdate&apos;);&#xD;    }&#xD;  };&#xD;&#xD;  /**&#xD;   * Replaces all of the state. Always use this or `setState` to mutate state.&#xD;   * You should treat `this.state` as immutable.&#xD;   *&#xD;   * There is no guarantee that `this.state` will be immediately updated, so&#xD;   * accessing `this.state` after calling this method may return the old value.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object|function} completeState Next state.&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {&#xD;    if (this.transaction.isInTransaction()) {&#xD;      ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);&#xD;    } else {&#xD;      warnNoop(publicInstance, &apos;replaceState&apos;);&#xD;    }&#xD;  };&#xD;&#xD;  /**&#xD;   * Sets a subset of the state. This only exists because _pendingState is&#xD;   * internal. This provides a merging strategy that is not available to deep&#xD;   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it&#xD;   * during the merge.&#xD;   *&#xD;   * @param {ReactClass} publicInstance The instance that should rerender.&#xD;   * @param {object|function} partialState Next partial state to be merged with state.&#xD;   * @internal&#xD;   */&#xD;&#xD;&#xD;  ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {&#xD;    if (this.transaction.isInTransaction()) {&#xD;      ReactUpdateQueue.enqueueSetState(publicInstance, partialState);&#xD;    } else {&#xD;      warnNoop(publicInstance, &apos;setState&apos;);&#xD;    }&#xD;  };&#xD;&#xD;  return ReactServerUpdateQueue;&#xD;}();&#xD;&#xD;module.exports = ReactServerUpdateQueue;&#xD;&#xD;/***/ }),&#xD;/* 439 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;module.exports = &apos;15.5.4&apos;;&#xD;&#xD;/***/ }),&#xD;/* 440 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var NS = {&#xD;  xlink: &apos;http://www.w3.org/1999/xlink&apos;,&#xD;  xml: &apos;http://www.w3.org/XML/1998/namespace&apos;&#xD;};&#xD;&#xD;// We use attributes for everything SVG so let&apos;s avoid some duplication and run&#xD;// code instead.&#xD;// The following are all specified in the HTML config already so we exclude here.&#xD;// - class (as className)&#xD;// - color&#xD;// - height&#xD;// - id&#xD;// - lang&#xD;// - max&#xD;// - media&#xD;// - method&#xD;// - min&#xD;// - name&#xD;// - style&#xD;// - target&#xD;// - type&#xD;// - width&#xD;var ATTRS = {&#xD;  accentHeight: &apos;accent-height&apos;,&#xD;  accumulate: 0,&#xD;  additive: 0,&#xD;  alignmentBaseline: &apos;alignment-baseline&apos;,&#xD;  allowReorder: &apos;allowReorder&apos;,&#xD;  alphabetic: 0,&#xD;  amplitude: 0,&#xD;  arabicForm: &apos;arabic-form&apos;,&#xD;  ascent: 0,&#xD;  attributeName: &apos;attributeName&apos;,&#xD;  attributeType: &apos;attributeType&apos;,&#xD;  autoReverse: &apos;autoReverse&apos;,&#xD;  azimuth: 0,&#xD;  baseFrequency: &apos;baseFrequency&apos;,&#xD;  baseProfile: &apos;baseProfile&apos;,&#xD;  baselineShift: &apos;baseline-shift&apos;,&#xD;  bbox: 0,&#xD;  begin: 0,&#xD;  bias: 0,&#xD;  by: 0,&#xD;  calcMode: &apos;calcMode&apos;,&#xD;  capHeight: &apos;cap-height&apos;,&#xD;  clip: 0,&#xD;  clipPath: &apos;clip-path&apos;,&#xD;  clipRule: &apos;clip-rule&apos;,&#xD;  clipPathUnits: &apos;clipPathUnits&apos;,&#xD;  colorInterpolation: &apos;color-interpolation&apos;,&#xD;  colorInterpolationFilters: &apos;color-interpolation-filters&apos;,&#xD;  colorProfile: &apos;color-profile&apos;,&#xD;  colorRendering: &apos;color-rendering&apos;,&#xD;  contentScriptType: &apos;contentScriptType&apos;,&#xD;  contentStyleType: &apos;contentStyleType&apos;,&#xD;  cursor: 0,&#xD;  cx: 0,&#xD;  cy: 0,&#xD;  d: 0,&#xD;  decelerate: 0,&#xD;  descent: 0,&#xD;  diffuseConstant: &apos;diffuseConstant&apos;,&#xD;  direction: 0,&#xD;  display: 0,&#xD;  divisor: 0,&#xD;  dominantBaseline: &apos;dominant-baseline&apos;,&#xD;  dur: 0,&#xD;  dx: 0,&#xD;  dy: 0,&#xD;  edgeMode: &apos;edgeMode&apos;,&#xD;  elevation: 0,&#xD;  enableBackground: &apos;enable-background&apos;,&#xD;  end: 0,&#xD;  exponent: 0,&#xD;  externalResourcesRequired: &apos;externalResourcesRequired&apos;,&#xD;  fill: 0,&#xD;  fillOpacity: &apos;fill-opacity&apos;,&#xD;  fillRule: &apos;fill-rule&apos;,&#xD;  filter: 0,&#xD;  filterRes: &apos;filterRes&apos;,&#xD;  filterUnits: &apos;filterUnits&apos;,&#xD;  floodColor: &apos;flood-color&apos;,&#xD;  floodOpacity: &apos;flood-opacity&apos;,&#xD;  focusable: 0,&#xD;  fontFamily: &apos;font-family&apos;,&#xD;  fontSize: &apos;font-size&apos;,&#xD;  fontSizeAdjust: &apos;font-size-adjust&apos;,&#xD;  fontStretch: &apos;font-stretch&apos;,&#xD;  fontStyle: &apos;font-style&apos;,&#xD;  fontVariant: &apos;font-variant&apos;,&#xD;  fontWeight: &apos;font-weight&apos;,&#xD;  format: 0,&#xD;  from: 0,&#xD;  fx: 0,&#xD;  fy: 0,&#xD;  g1: 0,&#xD;  g2: 0,&#xD;  glyphName: &apos;glyph-name&apos;,&#xD;  glyphOrientationHorizontal: &apos;glyph-orientation-horizontal&apos;,&#xD;  glyphOrientationVertical: &apos;glyph-orientation-vertical&apos;,&#xD;  glyphRef: &apos;glyphRef&apos;,&#xD;  gradientTransform: &apos;gradientTransform&apos;,&#xD;  gradientUnits: &apos;gradientUnits&apos;,&#xD;  hanging: 0,&#xD;  horizAdvX: &apos;horiz-adv-x&apos;,&#xD;  horizOriginX: &apos;horiz-origin-x&apos;,&#xD;  ideographic: 0,&#xD;  imageRendering: &apos;image-rendering&apos;,&#xD;  &apos;in&apos;: 0,&#xD;  in2: 0,&#xD;  intercept: 0,&#xD;  k: 0,&#xD;  k1: 0,&#xD;  k2: 0,&#xD;  k3: 0,&#xD;  k4: 0,&#xD;  kernelMatrix: &apos;kernelMatrix&apos;,&#xD;  kernelUnitLength: &apos;kernelUnitLength&apos;,&#xD;  kerning: 0,&#xD;  keyPoints: &apos;keyPoints&apos;,&#xD;  keySplines: &apos;keySplines&apos;,&#xD;  keyTimes: &apos;keyTimes&apos;,&#xD;  lengthAdjust: &apos;lengthAdjust&apos;,&#xD;  letterSpacing: &apos;letter-spacing&apos;,&#xD;  lightingColor: &apos;lighting-color&apos;,&#xD;  limitingConeAngle: &apos;limitingConeAngle&apos;,&#xD;  local: 0,&#xD;  markerEnd: &apos;marker-end&apos;,&#xD;  markerMid: &apos;marker-mid&apos;,&#xD;  markerStart: &apos;marker-start&apos;,&#xD;  markerHeight: &apos;markerHeight&apos;,&#xD;  markerUnits: &apos;markerUnits&apos;,&#xD;  markerWidth: &apos;markerWidth&apos;,&#xD;  mask: 0,&#xD;  maskContentUnits: &apos;maskContentUnits&apos;,&#xD;  maskUnits: &apos;maskUnits&apos;,&#xD;  mathematical: 0,&#xD;  mode: 0,&#xD;  numOctaves: &apos;numOctaves&apos;,&#xD;  offset: 0,&#xD;  opacity: 0,&#xD;  operator: 0,&#xD;  order: 0,&#xD;  orient: 0,&#xD;  orientation: 0,&#xD;  origin: 0,&#xD;  overflow: 0,&#xD;  overlinePosition: &apos;overline-position&apos;,&#xD;  overlineThickness: &apos;overline-thickness&apos;,&#xD;  paintOrder: &apos;paint-order&apos;,&#xD;  panose1: &apos;panose-1&apos;,&#xD;  pathLength: &apos;pathLength&apos;,&#xD;  patternContentUnits: &apos;patternContentUnits&apos;,&#xD;  patternTransform: &apos;patternTransform&apos;,&#xD;  patternUnits: &apos;patternUnits&apos;,&#xD;  pointerEvents: &apos;pointer-events&apos;,&#xD;  points: 0,&#xD;  pointsAtX: &apos;pointsAtX&apos;,&#xD;  pointsAtY: &apos;pointsAtY&apos;,&#xD;  pointsAtZ: &apos;pointsAtZ&apos;,&#xD;  preserveAlpha: &apos;preserveAlpha&apos;,&#xD;  preserveAspectRatio: &apos;preserveAspectRatio&apos;,&#xD;  primitiveUnits: &apos;primitiveUnits&apos;,&#xD;  r: 0,&#xD;  radius: 0,&#xD;  refX: &apos;refX&apos;,&#xD;  refY: &apos;refY&apos;,&#xD;  renderingIntent: &apos;rendering-intent&apos;,&#xD;  repeatCount: &apos;repeatCount&apos;,&#xD;  repeatDur: &apos;repeatDur&apos;,&#xD;  requiredExtensions: &apos;requiredExtensions&apos;,&#xD;  requiredFeatures: &apos;requiredFeatures&apos;,&#xD;  restart: 0,&#xD;  result: 0,&#xD;  rotate: 0,&#xD;  rx: 0,&#xD;  ry: 0,&#xD;  scale: 0,&#xD;  seed: 0,&#xD;  shapeRendering: &apos;shape-rendering&apos;,&#xD;  slope: 0,&#xD;  spacing: 0,&#xD;  specularConstant: &apos;specularConstant&apos;,&#xD;  specularExponent: &apos;specularExponent&apos;,&#xD;  speed: 0,&#xD;  spreadMethod: &apos;spreadMethod&apos;,&#xD;  startOffset: &apos;startOffset&apos;,&#xD;  stdDeviation: &apos;stdDeviation&apos;,&#xD;  stemh: 0,&#xD;  stemv: 0,&#xD;  stitchTiles: &apos;stitchTiles&apos;,&#xD;  stopColor: &apos;stop-color&apos;,&#xD;  stopOpacity: &apos;stop-opacity&apos;,&#xD;  strikethroughPosition: &apos;strikethrough-position&apos;,&#xD;  strikethroughThickness: &apos;strikethrough-thickness&apos;,&#xD;  string: 0,&#xD;  stroke: 0,&#xD;  strokeDasharray: &apos;stroke-dasharray&apos;,&#xD;  strokeDashoffset: &apos;stroke-dashoffset&apos;,&#xD;  strokeLinecap: &apos;stroke-linecap&apos;,&#xD;  strokeLinejoin: &apos;stroke-linejoin&apos;,&#xD;  strokeMiterlimit: &apos;stroke-miterlimit&apos;,&#xD;  strokeOpacity: &apos;stroke-opacity&apos;,&#xD;  strokeWidth: &apos;stroke-width&apos;,&#xD;  surfaceScale: &apos;surfaceScale&apos;,&#xD;  systemLanguage: &apos;systemLanguage&apos;,&#xD;  tableValues: &apos;tableValues&apos;,&#xD;  targetX: &apos;targetX&apos;,&#xD;  targetY: &apos;targetY&apos;,&#xD;  textAnchor: &apos;text-anchor&apos;,&#xD;  textDecoration: &apos;text-decoration&apos;,&#xD;  textRendering: &apos;text-rendering&apos;,&#xD;  textLength: &apos;textLength&apos;,&#xD;  to: 0,&#xD;  transform: 0,&#xD;  u1: 0,&#xD;  u2: 0,&#xD;  underlinePosition: &apos;underline-position&apos;,&#xD;  underlineThickness: &apos;underline-thickness&apos;,&#xD;  unicode: 0,&#xD;  unicodeBidi: &apos;unicode-bidi&apos;,&#xD;  unicodeRange: &apos;unicode-range&apos;,&#xD;  unitsPerEm: &apos;units-per-em&apos;,&#xD;  vAlphabetic: &apos;v-alphabetic&apos;,&#xD;  vHanging: &apos;v-hanging&apos;,&#xD;  vIdeographic: &apos;v-ideographic&apos;,&#xD;  vMathematical: &apos;v-mathematical&apos;,&#xD;  values: 0,&#xD;  vectorEffect: &apos;vector-effect&apos;,&#xD;  version: 0,&#xD;  vertAdvY: &apos;vert-adv-y&apos;,&#xD;  vertOriginX: &apos;vert-origin-x&apos;,&#xD;  vertOriginY: &apos;vert-origin-y&apos;,&#xD;  viewBox: &apos;viewBox&apos;,&#xD;  viewTarget: &apos;viewTarget&apos;,&#xD;  visibility: 0,&#xD;  widths: 0,&#xD;  wordSpacing: &apos;word-spacing&apos;,&#xD;  writingMode: &apos;writing-mode&apos;,&#xD;  x: 0,&#xD;  xHeight: &apos;x-height&apos;,&#xD;  x1: 0,&#xD;  x2: 0,&#xD;  xChannelSelector: &apos;xChannelSelector&apos;,&#xD;  xlinkActuate: &apos;xlink:actuate&apos;,&#xD;  xlinkArcrole: &apos;xlink:arcrole&apos;,&#xD;  xlinkHref: &apos;xlink:href&apos;,&#xD;  xlinkRole: &apos;xlink:role&apos;,&#xD;  xlinkShow: &apos;xlink:show&apos;,&#xD;  xlinkTitle: &apos;xlink:title&apos;,&#xD;  xlinkType: &apos;xlink:type&apos;,&#xD;  xmlBase: &apos;xml:base&apos;,&#xD;  xmlns: 0,&#xD;  xmlnsXlink: &apos;xmlns:xlink&apos;,&#xD;  xmlLang: &apos;xml:lang&apos;,&#xD;  xmlSpace: &apos;xml:space&apos;,&#xD;  y: 0,&#xD;  y1: 0,&#xD;  y2: 0,&#xD;  yChannelSelector: &apos;yChannelSelector&apos;,&#xD;  z: 0,&#xD;  zoomAndPan: &apos;zoomAndPan&apos;&#xD;};&#xD;&#xD;var SVGDOMPropertyConfig = {&#xD;  Properties: {},&#xD;  DOMAttributeNamespaces: {&#xD;    xlinkActuate: NS.xlink,&#xD;    xlinkArcrole: NS.xlink,&#xD;    xlinkHref: NS.xlink,&#xD;    xlinkRole: NS.xlink,&#xD;    xlinkShow: NS.xlink,&#xD;    xlinkTitle: NS.xlink,&#xD;    xlinkType: NS.xlink,&#xD;    xmlBase: NS.xml,&#xD;    xmlLang: NS.xml,&#xD;    xmlSpace: NS.xml&#xD;  },&#xD;  DOMAttributeNames: {}&#xD;};&#xD;&#xD;Object.keys(ATTRS).forEach(function (key) {&#xD;  SVGDOMPropertyConfig.Properties[key] = 0;&#xD;  if (ATTRS[key]) {&#xD;    SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];&#xD;  }&#xD;});&#xD;&#xD;module.exports = SVGDOMPropertyConfig;&#xD;&#xD;/***/ }),&#xD;/* 441 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var EventPropagators = __webpack_require__(51);&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactInputSelection = __webpack_require__(162);&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;var getActiveElement = __webpack_require__(135);&#xD;var isTextInputElement = __webpack_require__(172);&#xD;var shallowEqual = __webpack_require__(82);&#xD;&#xD;var skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;documentMode&apos; in document &amp;&amp; document.documentMode &lt;= 11;&#xD;&#xD;var eventTypes = {&#xD;  select: {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: &apos;onSelect&apos;,&#xD;      captured: &apos;onSelectCapture&apos;&#xD;    },&#xD;    dependencies: [&apos;topBlur&apos;, &apos;topContextMenu&apos;, &apos;topFocus&apos;, &apos;topKeyDown&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;, &apos;topMouseUp&apos;, &apos;topSelectionChange&apos;]&#xD;  }&#xD;};&#xD;&#xD;var activeElement = null;&#xD;var activeElementInst = null;&#xD;var lastSelection = null;&#xD;var mouseDown = false;&#xD;&#xD;// Track whether a listener exists for this plugin. If none exist, we do&#xD;// not extract events. See #3639.&#xD;var hasListener = false;&#xD;&#xD;/**&#xD; * Get an object which is a unique representation of the current selection.&#xD; *&#xD; * The return value will not be consistent across nodes or browsers, but&#xD; * two identical selections on the same node will return identical objects.&#xD; *&#xD; * @param {DOMElement} node&#xD; * @return {object}&#xD; */&#xD;function getSelection(node) {&#xD;  if (&apos;selectionStart&apos; in node &amp;&amp; ReactInputSelection.hasSelectionCapabilities(node)) {&#xD;    return {&#xD;      start: node.selectionStart,&#xD;      end: node.selectionEnd&#xD;    };&#xD;  } else if (window.getSelection) {&#xD;    var selection = window.getSelection();&#xD;    return {&#xD;      anchorNode: selection.anchorNode,&#xD;      anchorOffset: selection.anchorOffset,&#xD;      focusNode: selection.focusNode,&#xD;      focusOffset: selection.focusOffset&#xD;    };&#xD;  } else if (document.selection) {&#xD;    var range = document.selection.createRange();&#xD;    return {&#xD;      parentElement: range.parentElement(),&#xD;      text: range.text,&#xD;      top: range.boundingTop,&#xD;      left: range.boundingLeft&#xD;    };&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Poll selection to see whether it&apos;s changed.&#xD; *&#xD; * @param {object} nativeEvent&#xD; * @return {?SyntheticEvent}&#xD; */&#xD;function constructSelectEvent(nativeEvent, nativeEventTarget) {&#xD;  // Ensure we have the right element, and that the user is not dragging a&#xD;  // selection (this matches native `select` event behavior). In HTML5, select&#xD;  // fires only on input and textarea thus if there&apos;s no focused element we&#xD;  // won&apos;t dispatch.&#xD;  if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {&#xD;    return null;&#xD;  }&#xD;&#xD;  // Only fire when selection has actually changed.&#xD;  var currentSelection = getSelection(activeElement);&#xD;  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {&#xD;    lastSelection = currentSelection;&#xD;&#xD;    var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);&#xD;&#xD;    syntheticEvent.type = &apos;select&apos;;&#xD;    syntheticEvent.target = activeElement;&#xD;&#xD;    EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);&#xD;&#xD;    return syntheticEvent;&#xD;  }&#xD;&#xD;  return null;&#xD;}&#xD;&#xD;/**&#xD; * This plugin creates an `onSelect` event that normalizes select events&#xD; * across form elements.&#xD; *&#xD; * Supported elements are:&#xD; * - input (see `isTextInputElement`)&#xD; * - textarea&#xD; * - contentEditable&#xD; *&#xD; * This differs from native browser implementations in the following ways:&#xD; * - Fires on contentEditable fields as well as inputs.&#xD; * - Fires for collapsed selection.&#xD; * - Fires after user input.&#xD; */&#xD;var SelectEventPlugin = {&#xD;&#xD;  eventTypes: eventTypes,&#xD;&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    if (!hasListener) {&#xD;      return null;&#xD;    }&#xD;&#xD;    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;&#xD;&#xD;    switch (topLevelType) {&#xD;      // Track the input node that has focus.&#xD;      case &apos;topFocus&apos;:&#xD;        if (isTextInputElement(targetNode) || targetNode.contentEditable === &apos;true&apos;) {&#xD;          activeElement = targetNode;&#xD;          activeElementInst = targetInst;&#xD;          lastSelection = null;&#xD;        }&#xD;        break;&#xD;      case &apos;topBlur&apos;:&#xD;        activeElement = null;&#xD;        activeElementInst = null;&#xD;        lastSelection = null;&#xD;        break;&#xD;&#xD;      // Don&apos;t fire the event while the user is dragging. This matches the&#xD;      // semantics of the native select event.&#xD;      case &apos;topMouseDown&apos;:&#xD;        mouseDown = true;&#xD;        break;&#xD;      case &apos;topContextMenu&apos;:&#xD;      case &apos;topMouseUp&apos;:&#xD;        mouseDown = false;&#xD;        return constructSelectEvent(nativeEvent, nativeEventTarget);&#xD;&#xD;      // Chrome and IE fire non-standard event when selection is changed (and&#xD;      // sometimes when it hasn&apos;t). IE&apos;s event fires out of order with respect&#xD;      // to key and input events on deletion, so we discard it.&#xD;      //&#xD;      // Firefox doesn&apos;t support selectionchange, so check selection status&#xD;      // after each key entry. The selection changes after keydown and before&#xD;      // keyup, but we check on keydown as well in the case of holding down a&#xD;      // key, when multiple keydown events are fired but only one keyup is.&#xD;      // This is also our approach for IE handling, for the reason above.&#xD;      case &apos;topSelectionChange&apos;:&#xD;        if (skipSelectionChangeEvent) {&#xD;          break;&#xD;        }&#xD;      // falls through&#xD;      case &apos;topKeyDown&apos;:&#xD;      case &apos;topKeyUp&apos;:&#xD;        return constructSelectEvent(nativeEvent, nativeEventTarget);&#xD;    }&#xD;&#xD;    return null;&#xD;  },&#xD;&#xD;  didPutListener: function (inst, registrationName, listener) {&#xD;    if (registrationName === &apos;onSelect&apos;) {&#xD;      hasListener = true;&#xD;    }&#xD;  }&#xD;};&#xD;&#xD;module.exports = SelectEventPlugin;&#xD;&#xD;/***/ }),&#xD;/* 442 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var EventListener = __webpack_require__(133);&#xD;var EventPropagators = __webpack_require__(51);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var SyntheticAnimationEvent = __webpack_require__(443);&#xD;var SyntheticClipboardEvent = __webpack_require__(444);&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;var SyntheticFocusEvent = __webpack_require__(447);&#xD;var SyntheticKeyboardEvent = __webpack_require__(449);&#xD;var SyntheticMouseEvent = __webpack_require__(65);&#xD;var SyntheticDragEvent = __webpack_require__(446);&#xD;var SyntheticTouchEvent = __webpack_require__(450);&#xD;var SyntheticTransitionEvent = __webpack_require__(451);&#xD;var SyntheticUIEvent = __webpack_require__(53);&#xD;var SyntheticWheelEvent = __webpack_require__(452);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var getEventCharCode = __webpack_require__(94);&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Turns&#xD; * [&apos;abort&apos;, ...]&#xD; * into&#xD; * eventTypes = {&#xD; *   &apos;abort&apos;: {&#xD; *     phasedRegistrationNames: {&#xD; *       bubbled: &apos;onAbort&apos;,&#xD; *       captured: &apos;onAbortCapture&apos;,&#xD; *     },&#xD; *     dependencies: [&apos;topAbort&apos;],&#xD; *   },&#xD; *   ...&#xD; * };&#xD; * topLevelEventsToDispatchConfig = {&#xD; *   &apos;topAbort&apos;: { sameConfig }&#xD; * };&#xD; */&#xD;var eventTypes = {};&#xD;var topLevelEventsToDispatchConfig = {};&#xD;[&apos;abort&apos;, &apos;animationEnd&apos;, &apos;animationIteration&apos;, &apos;animationStart&apos;, &apos;blur&apos;, &apos;canPlay&apos;, &apos;canPlayThrough&apos;, &apos;click&apos;, &apos;contextMenu&apos;, &apos;copy&apos;, &apos;cut&apos;, &apos;doubleClick&apos;, &apos;drag&apos;, &apos;dragEnd&apos;, &apos;dragEnter&apos;, &apos;dragExit&apos;, &apos;dragLeave&apos;, &apos;dragOver&apos;, &apos;dragStart&apos;, &apos;drop&apos;, &apos;durationChange&apos;, &apos;emptied&apos;, &apos;encrypted&apos;, &apos;ended&apos;, &apos;error&apos;, &apos;focus&apos;, &apos;input&apos;, &apos;invalid&apos;, &apos;keyDown&apos;, &apos;keyPress&apos;, &apos;keyUp&apos;, &apos;load&apos;, &apos;loadedData&apos;, &apos;loadedMetadata&apos;, &apos;loadStart&apos;, &apos;mouseDown&apos;, &apos;mouseMove&apos;, &apos;mouseOut&apos;, &apos;mouseOver&apos;, &apos;mouseUp&apos;, &apos;paste&apos;, &apos;pause&apos;, &apos;play&apos;, &apos;playing&apos;, &apos;progress&apos;, &apos;rateChange&apos;, &apos;reset&apos;, &apos;scroll&apos;, &apos;seeked&apos;, &apos;seeking&apos;, &apos;stalled&apos;, &apos;submit&apos;, &apos;suspend&apos;, &apos;timeUpdate&apos;, &apos;touchCancel&apos;, &apos;touchEnd&apos;, &apos;touchMove&apos;, &apos;touchStart&apos;, &apos;transitionEnd&apos;, &apos;volumeChange&apos;, &apos;waiting&apos;, &apos;wheel&apos;].forEach(function (event) {&#xD;  var capitalizedEvent = event[0].toUpperCase() + event.slice(1);&#xD;  var onEvent = &apos;on&apos; + capitalizedEvent;&#xD;  var topEvent = &apos;top&apos; + capitalizedEvent;&#xD;&#xD;  var type = {&#xD;    phasedRegistrationNames: {&#xD;      bubbled: onEvent,&#xD;      captured: onEvent + &apos;Capture&apos;&#xD;    },&#xD;    dependencies: [topEvent]&#xD;  };&#xD;  eventTypes[event] = type;&#xD;  topLevelEventsToDispatchConfig[topEvent] = type;&#xD;});&#xD;&#xD;var onClickListeners = {};&#xD;&#xD;function getDictionaryKey(inst) {&#xD;  // Prevents V8 performance issue:&#xD;  // https://github.com/facebook/react/pull/7232&#xD;  return &apos;.&apos; + inst._rootNodeID;&#xD;}&#xD;&#xD;function isInteractive(tag) {&#xD;  return tag === &apos;button&apos; || tag === &apos;input&apos; || tag === &apos;select&apos; || tag === &apos;textarea&apos;;&#xD;}&#xD;&#xD;var SimpleEventPlugin = {&#xD;&#xD;  eventTypes: eventTypes,&#xD;&#xD;  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {&#xD;    var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];&#xD;    if (!dispatchConfig) {&#xD;      return null;&#xD;    }&#xD;    var EventConstructor;&#xD;    switch (topLevelType) {&#xD;      case &apos;topAbort&apos;:&#xD;      case &apos;topCanPlay&apos;:&#xD;      case &apos;topCanPlayThrough&apos;:&#xD;      case &apos;topDurationChange&apos;:&#xD;      case &apos;topEmptied&apos;:&#xD;      case &apos;topEncrypted&apos;:&#xD;      case &apos;topEnded&apos;:&#xD;      case &apos;topError&apos;:&#xD;      case &apos;topInput&apos;:&#xD;      case &apos;topInvalid&apos;:&#xD;      case &apos;topLoad&apos;:&#xD;      case &apos;topLoadedData&apos;:&#xD;      case &apos;topLoadedMetadata&apos;:&#xD;      case &apos;topLoadStart&apos;:&#xD;      case &apos;topPause&apos;:&#xD;      case &apos;topPlay&apos;:&#xD;      case &apos;topPlaying&apos;:&#xD;      case &apos;topProgress&apos;:&#xD;      case &apos;topRateChange&apos;:&#xD;      case &apos;topReset&apos;:&#xD;      case &apos;topSeeked&apos;:&#xD;      case &apos;topSeeking&apos;:&#xD;      case &apos;topStalled&apos;:&#xD;      case &apos;topSubmit&apos;:&#xD;      case &apos;topSuspend&apos;:&#xD;      case &apos;topTimeUpdate&apos;:&#xD;      case &apos;topVolumeChange&apos;:&#xD;      case &apos;topWaiting&apos;:&#xD;        // HTML Events&#xD;        // @see http://www.w3.org/TR/html5/index.html#events-0&#xD;        EventConstructor = SyntheticEvent;&#xD;        break;&#xD;      case &apos;topKeyPress&apos;:&#xD;        // Firefox creates a keypress event for function keys too. This removes&#xD;        // the unwanted keypress events. Enter is however both printable and&#xD;        // non-printable. One would expect Tab to be as well (but it isn&apos;t).&#xD;        if (getEventCharCode(nativeEvent) === 0) {&#xD;          return null;&#xD;        }&#xD;      /* falls through */&#xD;      case &apos;topKeyDown&apos;:&#xD;      case &apos;topKeyUp&apos;:&#xD;        EventConstructor = SyntheticKeyboardEvent;&#xD;        break;&#xD;      case &apos;topBlur&apos;:&#xD;      case &apos;topFocus&apos;:&#xD;        EventConstructor = SyntheticFocusEvent;&#xD;        break;&#xD;      case &apos;topClick&apos;:&#xD;        // Firefox creates a click event on right mouse clicks. This removes the&#xD;        // unwanted click events.&#xD;        if (nativeEvent.button === 2) {&#xD;          return null;&#xD;        }&#xD;      /* falls through */&#xD;      case &apos;topDoubleClick&apos;:&#xD;      case &apos;topMouseDown&apos;:&#xD;      case &apos;topMouseMove&apos;:&#xD;      case &apos;topMouseUp&apos;:&#xD;      // TODO: Disabled elements should not respond to mouse events&#xD;      /* falls through */&#xD;      case &apos;topMouseOut&apos;:&#xD;      case &apos;topMouseOver&apos;:&#xD;      case &apos;topContextMenu&apos;:&#xD;        EventConstructor = SyntheticMouseEvent;&#xD;        break;&#xD;      case &apos;topDrag&apos;:&#xD;      case &apos;topDragEnd&apos;:&#xD;      case &apos;topDragEnter&apos;:&#xD;      case &apos;topDragExit&apos;:&#xD;      case &apos;topDragLeave&apos;:&#xD;      case &apos;topDragOver&apos;:&#xD;      case &apos;topDragStart&apos;:&#xD;      case &apos;topDrop&apos;:&#xD;        EventConstructor = SyntheticDragEvent;&#xD;        break;&#xD;      case &apos;topTouchCancel&apos;:&#xD;      case &apos;topTouchEnd&apos;:&#xD;      case &apos;topTouchMove&apos;:&#xD;      case &apos;topTouchStart&apos;:&#xD;        EventConstructor = SyntheticTouchEvent;&#xD;        break;&#xD;      case &apos;topAnimationEnd&apos;:&#xD;      case &apos;topAnimationIteration&apos;:&#xD;      case &apos;topAnimationStart&apos;:&#xD;        EventConstructor = SyntheticAnimationEvent;&#xD;        break;&#xD;      case &apos;topTransitionEnd&apos;:&#xD;        EventConstructor = SyntheticTransitionEvent;&#xD;        break;&#xD;      case &apos;topScroll&apos;:&#xD;        EventConstructor = SyntheticUIEvent;&#xD;        break;&#xD;      case &apos;topWheel&apos;:&#xD;        EventConstructor = SyntheticWheelEvent;&#xD;        break;&#xD;      case &apos;topCopy&apos;:&#xD;      case &apos;topCut&apos;:&#xD;      case &apos;topPaste&apos;:&#xD;        EventConstructor = SyntheticClipboardEvent;&#xD;        break;&#xD;    }&#xD;    !EventConstructor ?  true ? invariant(false, &apos;SimpleEventPlugin: Unhandled event type, `%s`.&apos;, topLevelType) : _prodInvariant(&apos;86&apos;, topLevelType) : void 0;&#xD;    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);&#xD;    EventPropagators.accumulateTwoPhaseDispatches(event);&#xD;    return event;&#xD;  },&#xD;&#xD;  didPutListener: function (inst, registrationName, listener) {&#xD;    // Mobile Safari does not fire properly bubble click events on&#xD;    // non-interactive elements, which means delegated click listeners do not&#xD;    // fire. The workaround for this bug involves attaching an empty click&#xD;    // listener on the target node.&#xD;    // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html&#xD;    if (registrationName === &apos;onClick&apos; &amp;&amp; !isInteractive(inst._tag)) {&#xD;      var key = getDictionaryKey(inst);&#xD;      var node = ReactDOMComponentTree.getNodeFromInstance(inst);&#xD;      if (!onClickListeners[key]) {&#xD;        onClickListeners[key] = EventListener.listen(node, &apos;click&apos;, emptyFunction);&#xD;      }&#xD;    }&#xD;  },&#xD;&#xD;  willDeleteListener: function (inst, registrationName) {&#xD;    if (registrationName === &apos;onClick&apos; &amp;&amp; !isInteractive(inst._tag)) {&#xD;      var key = getDictionaryKey(inst);&#xD;      onClickListeners[key].remove();&#xD;      delete onClickListeners[key];&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = SimpleEventPlugin;&#xD;&#xD;/***/ }),&#xD;/* 443 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface&#xD; * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent&#xD; */&#xD;var AnimationEventInterface = {&#xD;  animationName: null,&#xD;  elapsedTime: null,&#xD;  pseudoElement: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticEvent}&#xD; */&#xD;function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);&#xD;&#xD;module.exports = SyntheticAnimationEvent;&#xD;&#xD;/***/ }),&#xD;/* 444 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/clipboard-apis/&#xD; */&#xD;var ClipboardEventInterface = {&#xD;  clipboardData: function (event) {&#xD;    return &apos;clipboardData&apos; in event ? event.clipboardData : window.clipboardData;&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);&#xD;&#xD;module.exports = SyntheticClipboardEvent;&#xD;&#xD;/***/ }),&#xD;/* 445 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents&#xD; */&#xD;var CompositionEventInterface = {&#xD;  data: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);&#xD;&#xD;module.exports = SyntheticCompositionEvent;&#xD;&#xD;/***/ }),&#xD;/* 446 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticMouseEvent = __webpack_require__(65);&#xD;&#xD;/**&#xD; * @interface DragEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var DragEventInterface = {&#xD;  dataTransfer: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);&#xD;&#xD;module.exports = SyntheticDragEvent;&#xD;&#xD;/***/ }),&#xD;/* 447 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticUIEvent = __webpack_require__(53);&#xD;&#xD;/**&#xD; * @interface FocusEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var FocusEventInterface = {&#xD;  relatedTarget: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);&#xD;&#xD;module.exports = SyntheticFocusEvent;&#xD;&#xD;/***/ }),&#xD;/* 448 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105&#xD; *      /#events-inputevents&#xD; */&#xD;var InputEventInterface = {&#xD;  data: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);&#xD;&#xD;module.exports = SyntheticInputEvent;&#xD;&#xD;/***/ }),&#xD;/* 449 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticUIEvent = __webpack_require__(53);&#xD;&#xD;var getEventCharCode = __webpack_require__(94);&#xD;var getEventKey = __webpack_require__(458);&#xD;var getEventModifierState = __webpack_require__(95);&#xD;&#xD;/**&#xD; * @interface KeyboardEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var KeyboardEventInterface = {&#xD;  key: getEventKey,&#xD;  location: null,&#xD;  ctrlKey: null,&#xD;  shiftKey: null,&#xD;  altKey: null,&#xD;  metaKey: null,&#xD;  repeat: null,&#xD;  locale: null,&#xD;  getModifierState: getEventModifierState,&#xD;  // Legacy Interface&#xD;  charCode: function (event) {&#xD;    // `charCode` is the result of a KeyPress event and represents the value of&#xD;    // the actual printable character.&#xD;&#xD;    // KeyPress is deprecated, but its replacement is not yet final and not&#xD;    // implemented in any major browser. Only KeyPress has charCode.&#xD;    if (event.type === &apos;keypress&apos;) {&#xD;      return getEventCharCode(event);&#xD;    }&#xD;    return 0;&#xD;  },&#xD;  keyCode: function (event) {&#xD;    // `keyCode` is the result of a KeyDown/Up event and represents the value of&#xD;    // physical keyboard key.&#xD;&#xD;    // The actual meaning of the value depends on the users&apos; keyboard layout&#xD;    // which cannot be detected. Assuming that it is a US keyboard layout&#xD;    // provides a surprisingly accurate mapping for US and European users.&#xD;    // Due to this, it is left to the user to implement at this time.&#xD;    if (event.type === &apos;keydown&apos; || event.type === &apos;keyup&apos;) {&#xD;      return event.keyCode;&#xD;    }&#xD;    return 0;&#xD;  },&#xD;  which: function (event) {&#xD;    // `which` is an alias for either `keyCode` or `charCode` depending on the&#xD;    // type of the event.&#xD;    if (event.type === &apos;keypress&apos;) {&#xD;      return getEventCharCode(event);&#xD;    }&#xD;    if (event.type === &apos;keydown&apos; || event.type === &apos;keyup&apos;) {&#xD;      return event.keyCode;&#xD;    }&#xD;    return 0;&#xD;  }&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);&#xD;&#xD;module.exports = SyntheticKeyboardEvent;&#xD;&#xD;/***/ }),&#xD;/* 450 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticUIEvent = __webpack_require__(53);&#xD;&#xD;var getEventModifierState = __webpack_require__(95);&#xD;&#xD;/**&#xD; * @interface TouchEvent&#xD; * @see http://www.w3.org/TR/touch-events/&#xD; */&#xD;var TouchEventInterface = {&#xD;  touches: null,&#xD;  targetTouches: null,&#xD;  changedTouches: null,&#xD;  altKey: null,&#xD;  metaKey: null,&#xD;  ctrlKey: null,&#xD;  shiftKey: null,&#xD;  getModifierState: getEventModifierState&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticUIEvent}&#xD; */&#xD;function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);&#xD;&#xD;module.exports = SyntheticTouchEvent;&#xD;&#xD;/***/ }),&#xD;/* 451 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticEvent = __webpack_require__(26);&#xD;&#xD;/**&#xD; * @interface Event&#xD; * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-&#xD; * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent&#xD; */&#xD;var TransitionEventInterface = {&#xD;  propertyName: null,&#xD;  elapsedTime: null,&#xD;  pseudoElement: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticEvent}&#xD; */&#xD;function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);&#xD;&#xD;module.exports = SyntheticTransitionEvent;&#xD;&#xD;/***/ }),&#xD;/* 452 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var SyntheticMouseEvent = __webpack_require__(65);&#xD;&#xD;/**&#xD; * @interface WheelEvent&#xD; * @see http://www.w3.org/TR/DOM-Level-3-Events/&#xD; */&#xD;var WheelEventInterface = {&#xD;  deltaX: function (event) {&#xD;    return &apos;deltaX&apos; in event ? event.deltaX :&#xD;    // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).&#xD;    &apos;wheelDeltaX&apos; in event ? -event.wheelDeltaX : 0;&#xD;  },&#xD;  deltaY: function (event) {&#xD;    return &apos;deltaY&apos; in event ? event.deltaY :&#xD;    // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).&#xD;    &apos;wheelDeltaY&apos; in event ? -event.wheelDeltaY :&#xD;    // Fallback to `wheelDelta` for IE&lt;9 and normalize (down is positive).&#xD;    &apos;wheelDelta&apos; in event ? -event.wheelDelta : 0;&#xD;  },&#xD;  deltaZ: null,&#xD;&#xD;  // Browsers without "deltaMode" is reporting in raw wheel delta where one&#xD;  // notch on the scroll is always +/- 120, roughly equivalent to pixels.&#xD;  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or&#xD;  // &#126;40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.&#xD;  deltaMode: null&#xD;};&#xD;&#xD;/**&#xD; * @param {object} dispatchConfig Configuration used to dispatch this event.&#xD; * @param {string} dispatchMarker Marker identifying the event target.&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @extends {SyntheticMouseEvent}&#xD; */&#xD;function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {&#xD;  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);&#xD;}&#xD;&#xD;SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);&#xD;&#xD;module.exports = SyntheticWheelEvent;&#xD;&#xD;/***/ }),&#xD;/* 453 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var MOD = 65521;&#xD;&#xD;// adler32 is not cryptographically strong, and is only used to sanity check that&#xD;// markup generated on the server matches the markup generated on the client.&#xD;// This implementation (a modified version of the SheetJS version) has been optimized&#xD;// for our use case, at the expense of conforming to the adler32 specification&#xD;// for non-ascii inputs.&#xD;function adler32(data) {&#xD;  var a = 1;&#xD;  var b = 0;&#xD;  var i = 0;&#xD;  var l = data.length;&#xD;  var m = l &amp; &#126;0x3;&#xD;  while (i &lt; m) {&#xD;    var n = Math.min(i + 4096, m);&#xD;    for (; i &lt; n; i += 4) {&#xD;      b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));&#xD;    }&#xD;    a %= MOD;&#xD;    b %= MOD;&#xD;  }&#xD;  for (; i &lt; l; i++) {&#xD;    b += a += data.charCodeAt(i);&#xD;  }&#xD;  a %= MOD;&#xD;  b %= MOD;&#xD;  return a | b &lt;&lt; 16;&#xD;}&#xD;&#xD;module.exports = adler32;&#xD;&#xD;/***/ }),&#xD;/* 454 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactPropTypeLocationNames = __webpack_require__(434);&#xD;var ReactPropTypesSecret = __webpack_require__(165);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ReactComponentTreeHook;&#xD;&#xD;if (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; "undefined" === &apos;test&apos;) {&#xD;  // Temporary hack.&#xD;  // Inline requires don&apos;t work well with Jest:&#xD;  // https://github.com/facebook/react/issues/7240&#xD;  // Remove the inline requires when we don&apos;t need them anymore:&#xD;  // https://github.com/facebook/react/pull/7178&#xD;  ReactComponentTreeHook = __webpack_require__(20);&#xD;}&#xD;&#xD;var loggedTypeFailures = {};&#xD;&#xD;/**&#xD; * Assert that the values match with the type specs.&#xD; * Error messages are memorized and will only be shown once.&#xD; *&#xD; * @param {object} typeSpecs Map of name to a ReactPropType&#xD; * @param {object} values Runtime values that need to be type-checked&#xD; * @param {string} location e.g. "prop", "context", "child context"&#xD; * @param {string} componentName Name of the component for error messages.&#xD; * @param {?object} element The React element that is being type-checked&#xD; * @param {?number} debugID The React component instance that is being type-checked&#xD; * @private&#xD; */&#xD;function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {&#xD;  for (var typeSpecName in typeSpecs) {&#xD;    if (typeSpecs.hasOwnProperty(typeSpecName)) {&#xD;      var error;&#xD;      // Prop type validation may throw. In case they do, we don&apos;t want to&#xD;      // fail the render phase where it didn&apos;t fail before. So we log it.&#xD;      // After these have been cleaned up, we&apos;ll let them throw.&#xD;      try {&#xD;        // This is intentionally an invariant that gets caught. It&apos;s the same&#xD;        // behavior as without this statement except with a better message.&#xD;        !(typeof typeSpecs[typeSpecName] === &apos;function&apos;) ?  true ? invariant(false, &apos;%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant(&apos;84&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : void 0;&#xD;        error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);&#xD;      } catch (ex) {&#xD;        error = ex;&#xD;      }&#xD;       true ? warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;&#xD;      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {&#xD;        // Only monitor this failure once because there tends to be a lot of the&#xD;        // same error.&#xD;        loggedTypeFailures[error.message] = true;&#xD;&#xD;        var componentStackInfo = &apos;&apos;;&#xD;&#xD;        if (true) {&#xD;          if (!ReactComponentTreeHook) {&#xD;            ReactComponentTreeHook = __webpack_require__(20);&#xD;          }&#xD;          if (debugID !== null) {&#xD;            componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);&#xD;          } else if (element !== null) {&#xD;            componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);&#xD;          }&#xD;        }&#xD;&#xD;         true ? warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, componentStackInfo) : void 0;&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;module.exports = checkReactTypeSpec;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 455 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var CSSProperty = __webpack_require__(154);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var isUnitlessNumber = CSSProperty.isUnitlessNumber;&#xD;var styleWarnings = {};&#xD;&#xD;/**&#xD; * Convert a value into the proper css writable value. The style name `name`&#xD; * should be logical (no hyphens), as specified&#xD; * in `CSSProperty.isUnitlessNumber`.&#xD; *&#xD; * @param {string} name CSS property name such as `topMargin`.&#xD; * @param {*} value CSS property value such as `10px`.&#xD; * @param {ReactDOMComponent} component&#xD; * @return {string} Normalized style value with dimensions applied.&#xD; */&#xD;function dangerousStyleValue(name, value, component) {&#xD;  // Note that we&apos;ve removed escapeTextForBrowser() calls here since the&#xD;  // whole string will be escaped when the attribute is injected into&#xD;  // the markup. If you provide unsafe user data here they can inject&#xD;  // arbitrary CSS which may be problematic (I couldn&apos;t repro this):&#xD;  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet&#xD;  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/&#xD;  // This is not an XSS hole but instead a potential CSS injection issue&#xD;  // which has lead to a greater discussion about how we&apos;re going to&#xD;  // trust URLs moving forward. See #2115901&#xD;&#xD;  var isEmpty = value == null || typeof value === &apos;boolean&apos; || value === &apos;&apos;;&#xD;  if (isEmpty) {&#xD;    return &apos;&apos;;&#xD;  }&#xD;&#xD;  var isNonNumeric = isNaN(value);&#xD;  if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) &amp;&amp; isUnitlessNumber[name]) {&#xD;    return &apos;&apos; + value; // cast to string&#xD;  }&#xD;&#xD;  if (typeof value === &apos;string&apos;) {&#xD;    if (true) {&#xD;      // Allow &apos;0&apos; to pass through without warning. 0 is already special and&#xD;      // doesn&apos;t require units, so we don&apos;t need to warn about it.&#xD;      if (component &amp;&amp; value !== &apos;0&apos;) {&#xD;        var owner = component._currentElement._owner;&#xD;        var ownerName = owner ? owner.getName() : null;&#xD;        if (ownerName &amp;&amp; !styleWarnings[ownerName]) {&#xD;          styleWarnings[ownerName] = {};&#xD;        }&#xD;        var warned = false;&#xD;        if (ownerName) {&#xD;          var warnings = styleWarnings[ownerName];&#xD;          warned = warnings[name];&#xD;          if (!warned) {&#xD;            warnings[name] = true;&#xD;          }&#xD;        }&#xD;        if (!warned) {&#xD;           true ? warning(false, &apos;a `%s` tag (owner: `%s`) was passed a numeric string value &apos; + &apos;for CSS property `%s` (value: `%s`) which will be treated &apos; + &apos;as a unitless number in a future version of React.&apos;, component._currentElement.type, ownerName || &apos;unknown&apos;, name, value) : void 0;&#xD;        }&#xD;      }&#xD;    }&#xD;    value = value.trim();&#xD;  }&#xD;  return value + &apos;px&apos;;&#xD;}&#xD;&#xD;module.exports = dangerousStyleValue;&#xD;&#xD;/***/ }),&#xD;/* 456 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(6);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var ReactDOMComponentTree = __webpack_require__(12);&#xD;var ReactInstanceMap = __webpack_require__(52);&#xD;&#xD;var getHostComponentFromComposite = __webpack_require__(169);&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;/**&#xD; * Returns the DOM node rendered by this element.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode&#xD; *&#xD; * @param {ReactComponent|DOMElement} componentOrElement&#xD; * @return {?DOMElement} The root node of this element.&#xD; */&#xD;function findDOMNode(componentOrElement) {&#xD;  if (true) {&#xD;    var owner = ReactCurrentOwner.current;&#xD;    if (owner !== null) {&#xD;       true ? warning(owner._warnedAboutRefsInRender, &apos;%s is accessing findDOMNode inside its render(). &apos; + &apos;render() should be a pure function of props and state. It should &apos; + &apos;never access something that requires stale data from the previous &apos; + &apos;render, such as refs. Move this logic to componentDidMount and &apos; + &apos;componentDidUpdate instead.&apos;, owner.getName() || &apos;A component&apos;) : void 0;&#xD;      owner._warnedAboutRefsInRender = true;&#xD;    }&#xD;  }&#xD;  if (componentOrElement == null) {&#xD;    return null;&#xD;  }&#xD;  if (componentOrElement.nodeType === 1) {&#xD;    return componentOrElement;&#xD;  }&#xD;&#xD;  var inst = ReactInstanceMap.get(componentOrElement);&#xD;  if (inst) {&#xD;    inst = getHostComponentFromComposite(inst);&#xD;    return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;&#xD;  }&#xD;&#xD;  if (typeof componentOrElement.render === &apos;function&apos;) {&#xD;     true ?  true ? invariant(false, &apos;findDOMNode was called on an unmounted component.&apos;) : _prodInvariant(&apos;44&apos;) : void 0;&#xD;  } else {&#xD;     true ?  true ? invariant(false, &apos;Element appears to be neither ReactComponent nor DOMNode (keys: %s)&apos;, Object.keys(componentOrElement)) : _prodInvariant(&apos;45&apos;, Object.keys(componentOrElement)) : void 0;&#xD;  }&#xD;}&#xD;&#xD;module.exports = findDOMNode;&#xD;&#xD;/***/ }),&#xD;/* 457 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var KeyEscapeUtils = __webpack_require__(88);&#xD;var traverseAllChildren = __webpack_require__(174);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ReactComponentTreeHook;&#xD;&#xD;if (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; "undefined" === &apos;test&apos;) {&#xD;  // Temporary hack.&#xD;  // Inline requires don&apos;t work well with Jest:&#xD;  // https://github.com/facebook/react/issues/7240&#xD;  // Remove the inline requires when we don&apos;t need them anymore:&#xD;  // https://github.com/facebook/react/pull/7178&#xD;  ReactComponentTreeHook = __webpack_require__(20);&#xD;}&#xD;&#xD;/**&#xD; * @param {function} traverseContext Context passed through traversal.&#xD; * @param {?ReactComponent} child React child component.&#xD; * @param {!string} name String name of key path to child.&#xD; * @param {number=} selfDebugID Optional debugID of the current internal instance.&#xD; */&#xD;function flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {&#xD;  // We found a component instance.&#xD;  if (traverseContext &amp;&amp; typeof traverseContext === &apos;object&apos;) {&#xD;    var result = traverseContext;&#xD;    var keyUnique = result[name] === undefined;&#xD;    if (true) {&#xD;      if (!ReactComponentTreeHook) {&#xD;        ReactComponentTreeHook = __webpack_require__(20);&#xD;      }&#xD;      if (!keyUnique) {&#xD;         true ? warning(false, &apos;flattenChildren(...): Encountered two children with the same key, &apos; + &apos;`%s`. Child keys must be unique; when two children share a key, only &apos; + &apos;the first child will be used.%s&apos;, KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;&#xD;      }&#xD;    }&#xD;    if (keyUnique &amp;&amp; child != null) {&#xD;      result[name] = child;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Flattens children that are typically specified as `props.children`. Any null&#xD; * children will not be included in the resulting object.&#xD; * @return {!object} flattened children keyed by name.&#xD; */&#xD;function flattenChildren(children, selfDebugID) {&#xD;  if (children == null) {&#xD;    return children;&#xD;  }&#xD;  var result = {};&#xD;&#xD;  if (true) {&#xD;    traverseAllChildren(children, function (traverseContext, child, name) {&#xD;      return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);&#xD;    }, result);&#xD;  } else {&#xD;    traverseAllChildren(children, flattenSingleChildIntoContext, result);&#xD;  }&#xD;  return result;&#xD;}&#xD;&#xD;module.exports = flattenChildren;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 458 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var getEventCharCode = __webpack_require__(94);&#xD;&#xD;/**&#xD; * Normalization of deprecated HTML5 `key` values&#xD; * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names&#xD; */&#xD;var normalizeKey = {&#xD;  &apos;Esc&apos;: &apos;Escape&apos;,&#xD;  &apos;Spacebar&apos;: &apos; &apos;,&#xD;  &apos;Left&apos;: &apos;ArrowLeft&apos;,&#xD;  &apos;Up&apos;: &apos;ArrowUp&apos;,&#xD;  &apos;Right&apos;: &apos;ArrowRight&apos;,&#xD;  &apos;Down&apos;: &apos;ArrowDown&apos;,&#xD;  &apos;Del&apos;: &apos;Delete&apos;,&#xD;  &apos;Win&apos;: &apos;OS&apos;,&#xD;  &apos;Menu&apos;: &apos;ContextMenu&apos;,&#xD;  &apos;Apps&apos;: &apos;ContextMenu&apos;,&#xD;  &apos;Scroll&apos;: &apos;ScrollLock&apos;,&#xD;  &apos;MozPrintableKey&apos;: &apos;Unidentified&apos;&#xD;};&#xD;&#xD;/**&#xD; * Translation from legacy `keyCode` to HTML5 `key`&#xD; * Only special keys supported, all others depend on keyboard layout or browser&#xD; * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names&#xD; */&#xD;var translateToKey = {&#xD;  8: &apos;Backspace&apos;,&#xD;  9: &apos;Tab&apos;,&#xD;  12: &apos;Clear&apos;,&#xD;  13: &apos;Enter&apos;,&#xD;  16: &apos;Shift&apos;,&#xD;  17: &apos;Control&apos;,&#xD;  18: &apos;Alt&apos;,&#xD;  19: &apos;Pause&apos;,&#xD;  20: &apos;CapsLock&apos;,&#xD;  27: &apos;Escape&apos;,&#xD;  32: &apos; &apos;,&#xD;  33: &apos;PageUp&apos;,&#xD;  34: &apos;PageDown&apos;,&#xD;  35: &apos;End&apos;,&#xD;  36: &apos;Home&apos;,&#xD;  37: &apos;ArrowLeft&apos;,&#xD;  38: &apos;ArrowUp&apos;,&#xD;  39: &apos;ArrowRight&apos;,&#xD;  40: &apos;ArrowDown&apos;,&#xD;  45: &apos;Insert&apos;,&#xD;  46: &apos;Delete&apos;,&#xD;  112: &apos;F1&apos;, 113: &apos;F2&apos;, 114: &apos;F3&apos;, 115: &apos;F4&apos;, 116: &apos;F5&apos;, 117: &apos;F6&apos;,&#xD;  118: &apos;F7&apos;, 119: &apos;F8&apos;, 120: &apos;F9&apos;, 121: &apos;F10&apos;, 122: &apos;F11&apos;, 123: &apos;F12&apos;,&#xD;  144: &apos;NumLock&apos;,&#xD;  145: &apos;ScrollLock&apos;,&#xD;  224: &apos;Meta&apos;&#xD;};&#xD;&#xD;/**&#xD; * @param {object} nativeEvent Native browser event.&#xD; * @return {string} Normalized `key` property.&#xD; */&#xD;function getEventKey(nativeEvent) {&#xD;  if (nativeEvent.key) {&#xD;    // Normalize inconsistent values reported by browsers due to&#xD;    // implementations of a working draft specification.&#xD;&#xD;    // FireFox implements `key` but returns `MozPrintableKey` for all&#xD;    // printable characters (normalized to `Unidentified`), ignore it.&#xD;    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;&#xD;    if (key !== &apos;Unidentified&apos;) {&#xD;      return key;&#xD;    }&#xD;  }&#xD;&#xD;  // Browser does not implement `key`, polyfill as much of it as we can.&#xD;  if (nativeEvent.type === &apos;keypress&apos;) {&#xD;    var charCode = getEventCharCode(nativeEvent);&#xD;&#xD;    // The enter-key is technically both printable and non-printable and can&#xD;    // thus be captured by `keypress`, no other non-printable key should.&#xD;    return charCode === 13 ? &apos;Enter&apos; : String.fromCharCode(charCode);&#xD;  }&#xD;  if (nativeEvent.type === &apos;keydown&apos; || nativeEvent.type === &apos;keyup&apos;) {&#xD;    // While user keyboard layout determines the actual meaning of each&#xD;    // `keyCode` value, almost all function keys have a universal value.&#xD;    return translateToKey[nativeEvent.keyCode] || &apos;Unidentified&apos;;&#xD;  }&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;module.exports = getEventKey;&#xD;&#xD;/***/ }),&#xD;/* 459 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/* global Symbol */&#xD;&#xD;var ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;&#xD;var FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.&#xD;&#xD;/**&#xD; * Returns the iterator method function contained on the iterable object.&#xD; *&#xD; * Be sure to invoke the function with the iterable as context:&#xD; *&#xD; *     var iteratorFn = getIteratorFn(myIterable);&#xD; *     if (iteratorFn) {&#xD; *       var iterator = iteratorFn.call(myIterable);&#xD; *       ...&#xD; *     }&#xD; *&#xD; * @param {?object} maybeIterable&#xD; * @return {?function}&#xD; */&#xD;function getIteratorFn(maybeIterable) {&#xD;  var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);&#xD;  if (typeof iteratorFn === &apos;function&apos;) {&#xD;    return iteratorFn;&#xD;  }&#xD;}&#xD;&#xD;module.exports = getIteratorFn;&#xD;&#xD;/***/ }),&#xD;/* 460 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Given any node return the first leaf node without children.&#xD; *&#xD; * @param {DOMElement|DOMTextNode} node&#xD; * @return {DOMElement|DOMTextNode}&#xD; */&#xD;&#xD;function getLeafNode(node) {&#xD;  while (node &amp;&amp; node.firstChild) {&#xD;    node = node.firstChild;&#xD;  }&#xD;  return node;&#xD;}&#xD;&#xD;/**&#xD; * Get the next sibling within a container. This will walk up the&#xD; * DOM if a node&apos;s siblings have been exhausted.&#xD; *&#xD; * @param {DOMElement|DOMTextNode} node&#xD; * @return {?DOMElement|DOMTextNode}&#xD; */&#xD;function getSiblingNode(node) {&#xD;  while (node) {&#xD;    if (node.nextSibling) {&#xD;      return node.nextSibling;&#xD;    }&#xD;    node = node.parentNode;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Get object describing the nodes which contain characters at offset.&#xD; *&#xD; * @param {DOMElement|DOMTextNode} root&#xD; * @param {number} offset&#xD; * @return {?object}&#xD; */&#xD;function getNodeForCharacterOffset(root, offset) {&#xD;  var node = getLeafNode(root);&#xD;  var nodeStart = 0;&#xD;  var nodeEnd = 0;&#xD;&#xD;  while (node) {&#xD;    if (node.nodeType === 3) {&#xD;      nodeEnd = nodeStart + node.textContent.length;&#xD;&#xD;      if (nodeStart &lt;= offset &amp;&amp; nodeEnd &gt;= offset) {&#xD;        return {&#xD;          node: node,&#xD;          offset: offset - nodeStart&#xD;        };&#xD;      }&#xD;&#xD;      nodeStart = nodeEnd;&#xD;    }&#xD;&#xD;    node = getLeafNode(getSiblingNode(node));&#xD;  }&#xD;}&#xD;&#xD;module.exports = getNodeForCharacterOffset;&#xD;&#xD;/***/ }),&#xD;/* 461 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ExecutionEnvironment = __webpack_require__(15);&#xD;&#xD;/**&#xD; * Generate a mapping of standard vendor prefixes using the defined style property and event name.&#xD; *&#xD; * @param {string} styleProp&#xD; * @param {string} eventName&#xD; * @returns {object}&#xD; */&#xD;function makePrefixMap(styleProp, eventName) {&#xD;  var prefixes = {};&#xD;&#xD;  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();&#xD;  prefixes[&apos;Webkit&apos; + styleProp] = &apos;webkit&apos; + eventName;&#xD;  prefixes[&apos;Moz&apos; + styleProp] = &apos;moz&apos; + eventName;&#xD;  prefixes[&apos;ms&apos; + styleProp] = &apos;MS&apos; + eventName;&#xD;  prefixes[&apos;O&apos; + styleProp] = &apos;o&apos; + eventName.toLowerCase();&#xD;&#xD;  return prefixes;&#xD;}&#xD;&#xD;/**&#xD; * A list of event names to a configurable list of vendor prefixes.&#xD; */&#xD;var vendorPrefixes = {&#xD;  animationend: makePrefixMap(&apos;Animation&apos;, &apos;AnimationEnd&apos;),&#xD;  animationiteration: makePrefixMap(&apos;Animation&apos;, &apos;AnimationIteration&apos;),&#xD;  animationstart: makePrefixMap(&apos;Animation&apos;, &apos;AnimationStart&apos;),&#xD;  transitionend: makePrefixMap(&apos;Transition&apos;, &apos;TransitionEnd&apos;)&#xD;};&#xD;&#xD;/**&#xD; * Event names that have already been detected and prefixed (if applicable).&#xD; */&#xD;var prefixedEventNames = {};&#xD;&#xD;/**&#xD; * Element to check for prefixes on.&#xD; */&#xD;var style = {};&#xD;&#xD;/**&#xD; * Bootstrap if a DOM exists.&#xD; */&#xD;if (ExecutionEnvironment.canUseDOM) {&#xD;  style = document.createElement(&apos;div&apos;).style;&#xD;&#xD;  // On some platforms, in particular some releases of Android 4.x,&#xD;  // the un-prefixed "animation" and "transition" properties are defined on the&#xD;  // style object but the events that fire will still be prefixed, so we need&#xD;  // to check if the un-prefixed events are usable, and if not remove them from the map.&#xD;  if (!(&apos;AnimationEvent&apos; in window)) {&#xD;    delete vendorPrefixes.animationend.animation;&#xD;    delete vendorPrefixes.animationiteration.animation;&#xD;    delete vendorPrefixes.animationstart.animation;&#xD;  }&#xD;&#xD;  // Same as above&#xD;  if (!(&apos;TransitionEvent&apos; in window)) {&#xD;    delete vendorPrefixes.transitionend.transition;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Attempts to determine the correct vendor prefixed event name.&#xD; *&#xD; * @param {string} eventName&#xD; * @returns {string}&#xD; */&#xD;function getVendorPrefixedEventName(eventName) {&#xD;  if (prefixedEventNames[eventName]) {&#xD;    return prefixedEventNames[eventName];&#xD;  } else if (!vendorPrefixes[eventName]) {&#xD;    return eventName;&#xD;  }&#xD;&#xD;  var prefixMap = vendorPrefixes[eventName];&#xD;&#xD;  for (var styleProp in prefixMap) {&#xD;    if (prefixMap.hasOwnProperty(styleProp) &amp;&amp; styleProp in style) {&#xD;      return prefixedEventNames[eventName] = prefixMap[styleProp];&#xD;    }&#xD;  }&#xD;&#xD;  return &apos;&apos;;&#xD;}&#xD;&#xD;module.exports = getVendorPrefixedEventName;&#xD;&#xD;/***/ }),&#xD;/* 462 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var escapeTextContentForBrowser = __webpack_require__(67);&#xD;&#xD;/**&#xD; * Escapes attribute value to prevent scripting attacks.&#xD; *&#xD; * @param {*} value Value to escape.&#xD; * @return {string} An escaped string.&#xD; */&#xD;function quoteAttributeValueForBrowser(value) {&#xD;  return &apos;"&apos; + escapeTextContentForBrowser(value) + &apos;"&apos;;&#xD;}&#xD;&#xD;module.exports = quoteAttributeValueForBrowser;&#xD;&#xD;/***/ }),&#xD;/* 463 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactMount = __webpack_require__(163);&#xD;&#xD;module.exports = ReactMount.renderSubtreeIntoContainer;&#xD;&#xD;/***/ }),&#xD;/* 464 */,&#xD;/* 465 */,&#xD;/* 466 */,&#xD;/* 467 */,&#xD;/* 468 */,&#xD;/* 469 */,&#xD;/* 470 */,&#xD;/* 471 */,&#xD;/* 472 */,&#xD;/* 473 */,&#xD;/* 474 */,&#xD;/* 475 */,&#xD;/* 476 */,&#xD;/* 477 */,&#xD;/* 478 */,&#xD;/* 479 */,&#xD;/* 480 */,&#xD;/* 481 */,&#xD;/* 482 */,&#xD;/* 483 */,&#xD;/* 484 */,&#xD;/* 485 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;/**&#xD; * Escape and wrap key so it is safe to use as a reactid&#xD; *&#xD; * @param {string} key to be escaped.&#xD; * @return {string} the escaped key.&#xD; */&#xD;&#xD;function escape(key) {&#xD;  var escapeRegex = /[=:]/g;&#xD;  var escaperLookup = {&#xD;    &apos;=&apos;: &apos;=0&apos;,&#xD;    &apos;:&apos;: &apos;=2&apos;&#xD;  };&#xD;  var escapedString = (&apos;&apos; + key).replace(escapeRegex, function (match) {&#xD;    return escaperLookup[match];&#xD;  });&#xD;&#xD;  return &apos;$&apos; + escapedString;&#xD;}&#xD;&#xD;/**&#xD; * Unescape and unwrap key for human-readable display&#xD; *&#xD; * @param {string} key to unescape.&#xD; * @return {string} the unescaped key.&#xD; */&#xD;function unescape(key) {&#xD;  var unescapeRegex = /(=0|=2)/g;&#xD;  var unescaperLookup = {&#xD;    &apos;=0&apos;: &apos;=&apos;,&#xD;    &apos;=2&apos;: &apos;:&apos;&#xD;  };&#xD;  var keySubstring = key[0] === &apos;.&apos; &amp;&amp; key[1] === &apos;$&apos; ? key.substring(2) : key.substring(1);&#xD;&#xD;  return (&apos;&apos; + keySubstring).replace(unescapeRegex, function (match) {&#xD;    return unescaperLookup[match];&#xD;  });&#xD;}&#xD;&#xD;var KeyEscapeUtils = {&#xD;  escape: escape,&#xD;  unescape: unescape&#xD;};&#xD;&#xD;module.exports = KeyEscapeUtils;&#xD;&#xD;/***/ }),&#xD;/* 486 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Static poolers. Several custom versions for each potential number of&#xD; * arguments. A completely generic pooler is easy to implement, but would&#xD; * require accessing the `arguments` object. In each of these, `this` refers to&#xD; * the Class itself, not an instance. If any others are needed, simply add them&#xD; * here, or in their own files.&#xD; */&#xD;var oneArgumentPooler = function (copyFieldsFrom) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, copyFieldsFrom);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(copyFieldsFrom);&#xD;  }&#xD;};&#xD;&#xD;var twoArgumentPooler = function (a1, a2) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2);&#xD;  }&#xD;};&#xD;&#xD;var threeArgumentPooler = function (a1, a2, a3) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2, a3);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2, a3);&#xD;  }&#xD;};&#xD;&#xD;var fourArgumentPooler = function (a1, a2, a3, a4) {&#xD;  var Klass = this;&#xD;  if (Klass.instancePool.length) {&#xD;    var instance = Klass.instancePool.pop();&#xD;    Klass.call(instance, a1, a2, a3, a4);&#xD;    return instance;&#xD;  } else {&#xD;    return new Klass(a1, a2, a3, a4);&#xD;  }&#xD;};&#xD;&#xD;var standardReleaser = function (instance) {&#xD;  var Klass = this;&#xD;  !(instance instanceof Klass) ?  true ? invariant(false, &apos;Trying to release an instance into a pool of a different type.&apos;) : _prodInvariant(&apos;25&apos;) : void 0;&#xD;  instance.destructor();&#xD;  if (Klass.instancePool.length &lt; Klass.poolSize) {&#xD;    Klass.instancePool.push(instance);&#xD;  }&#xD;};&#xD;&#xD;var DEFAULT_POOL_SIZE = 10;&#xD;var DEFAULT_POOLER = oneArgumentPooler;&#xD;&#xD;/**&#xD; * Augments `CopyConstructor` to be a poolable class, augmenting only the class&#xD; * itself (statically) not adding any prototypical fields. Any CopyConstructor&#xD; * you give this may have a `poolSize` property, and will look for a&#xD; * prototypical `destructor` on instances.&#xD; *&#xD; * @param {Function} CopyConstructor Constructor that can be used to reset.&#xD; * @param {Function} pooler Customizable pooler.&#xD; */&#xD;var addPoolingTo = function (CopyConstructor, pooler) {&#xD;  // Casting as any so that flow ignores the actual implementation and trusts&#xD;  // it to match the type we declared&#xD;  var NewKlass = CopyConstructor;&#xD;  NewKlass.instancePool = [];&#xD;  NewKlass.getPooled = pooler || DEFAULT_POOLER;&#xD;  if (!NewKlass.poolSize) {&#xD;    NewKlass.poolSize = DEFAULT_POOL_SIZE;&#xD;  }&#xD;  NewKlass.release = standardReleaser;&#xD;  return NewKlass;&#xD;};&#xD;&#xD;var PooledClass = {&#xD;  addPoolingTo: addPoolingTo,&#xD;  oneArgumentPooler: oneArgumentPooler,&#xD;  twoArgumentPooler: twoArgumentPooler,&#xD;  threeArgumentPooler: threeArgumentPooler,&#xD;  fourArgumentPooler: fourArgumentPooler&#xD;};&#xD;&#xD;module.exports = PooledClass;&#xD;&#xD;/***/ }),&#xD;/* 487 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var PooledClass = __webpack_require__(486);&#xD;var ReactElement = __webpack_require__(34);&#xD;&#xD;var emptyFunction = __webpack_require__(22);&#xD;var traverseAllChildren = __webpack_require__(497);&#xD;&#xD;var twoArgumentPooler = PooledClass.twoArgumentPooler;&#xD;var fourArgumentPooler = PooledClass.fourArgumentPooler;&#xD;&#xD;var userProvidedKeyEscapeRegex = /\/+/g;&#xD;function escapeUserProvidedKey(text) {&#xD;  return (&apos;&apos; + text).replace(userProvidedKeyEscapeRegex, &apos;$&amp;/&apos;);&#xD;}&#xD;&#xD;/**&#xD; * PooledClass representing the bookkeeping associated with performing a child&#xD; * traversal. Allows avoiding binding callbacks.&#xD; *&#xD; * @constructor ForEachBookKeeping&#xD; * @param {!function} forEachFunction Function to perform traversal with.&#xD; * @param {?*} forEachContext Context to perform context with.&#xD; */&#xD;function ForEachBookKeeping(forEachFunction, forEachContext) {&#xD;  this.func = forEachFunction;&#xD;  this.context = forEachContext;&#xD;  this.count = 0;&#xD;}&#xD;ForEachBookKeeping.prototype.destructor = function () {&#xD;  this.func = null;&#xD;  this.context = null;&#xD;  this.count = 0;&#xD;};&#xD;PooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);&#xD;&#xD;function forEachSingleChild(bookKeeping, child, name) {&#xD;  var func = bookKeeping.func,&#xD;      context = bookKeeping.context;&#xD;&#xD;  func.call(context, child, bookKeeping.count++);&#xD;}&#xD;&#xD;/**&#xD; * Iterates through children that are typically specified as `props.children`.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach&#xD; *&#xD; * The provided forEachFunc(child, index) will be called for each&#xD; * leaf child.&#xD; *&#xD; * @param {?*} children Children tree container.&#xD; * @param {function(*, int)} forEachFunc&#xD; * @param {*} forEachContext Context for forEachContext.&#xD; */&#xD;function forEachChildren(children, forEachFunc, forEachContext) {&#xD;  if (children == null) {&#xD;    return children;&#xD;  }&#xD;  var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);&#xD;  traverseAllChildren(children, forEachSingleChild, traverseContext);&#xD;  ForEachBookKeeping.release(traverseContext);&#xD;}&#xD;&#xD;/**&#xD; * PooledClass representing the bookkeeping associated with performing a child&#xD; * mapping. Allows avoiding binding callbacks.&#xD; *&#xD; * @constructor MapBookKeeping&#xD; * @param {!*} mapResult Object containing the ordered map of results.&#xD; * @param {!function} mapFunction Function to perform mapping with.&#xD; * @param {?*} mapContext Context to perform mapping with.&#xD; */&#xD;function MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {&#xD;  this.result = mapResult;&#xD;  this.keyPrefix = keyPrefix;&#xD;  this.func = mapFunction;&#xD;  this.context = mapContext;&#xD;  this.count = 0;&#xD;}&#xD;MapBookKeeping.prototype.destructor = function () {&#xD;  this.result = null;&#xD;  this.keyPrefix = null;&#xD;  this.func = null;&#xD;  this.context = null;&#xD;  this.count = 0;&#xD;};&#xD;PooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);&#xD;&#xD;function mapSingleChildIntoContext(bookKeeping, child, childKey) {&#xD;  var result = bookKeeping.result,&#xD;      keyPrefix = bookKeeping.keyPrefix,&#xD;      func = bookKeeping.func,&#xD;      context = bookKeeping.context;&#xD;&#xD;&#xD;  var mappedChild = func.call(context, child, bookKeeping.count++);&#xD;  if (Array.isArray(mappedChild)) {&#xD;    mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);&#xD;  } else if (mappedChild != null) {&#xD;    if (ReactElement.isValidElement(mappedChild)) {&#xD;      mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,&#xD;      // Keep both the (mapped) and old keys if they differ, just as&#xD;      // traverseAllChildren used to do for objects as children&#xD;      keyPrefix + (mappedChild.key &amp;&amp; (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + &apos;/&apos; : &apos;&apos;) + childKey);&#xD;    }&#xD;    result.push(mappedChild);&#xD;  }&#xD;}&#xD;&#xD;function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {&#xD;  var escapedPrefix = &apos;&apos;;&#xD;  if (prefix != null) {&#xD;    escapedPrefix = escapeUserProvidedKey(prefix) + &apos;/&apos;;&#xD;  }&#xD;  var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);&#xD;  traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);&#xD;  MapBookKeeping.release(traverseContext);&#xD;}&#xD;&#xD;/**&#xD; * Maps children that are typically specified as `props.children`.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map&#xD; *&#xD; * The provided mapFunction(child, key, index) will be called for each&#xD; * leaf child.&#xD; *&#xD; * @param {?*} children Children tree container.&#xD; * @param {function(*, int)} func The map function.&#xD; * @param {*} context Context for mapFunction.&#xD; * @return {object} Object containing the ordered map of results.&#xD; */&#xD;function mapChildren(children, func, context) {&#xD;  if (children == null) {&#xD;    return children;&#xD;  }&#xD;  var result = [];&#xD;  mapIntoWithKeyPrefixInternal(children, result, null, func, context);&#xD;  return result;&#xD;}&#xD;&#xD;function forEachSingleChildDummy(traverseContext, child, name) {&#xD;  return null;&#xD;}&#xD;&#xD;/**&#xD; * Count the number of children that are typically specified as&#xD; * `props.children`.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count&#xD; *&#xD; * @param {?*} children Children tree container.&#xD; * @return {number} The number of children.&#xD; */&#xD;function countChildren(children, context) {&#xD;  return traverseAllChildren(children, forEachSingleChildDummy, null);&#xD;}&#xD;&#xD;/**&#xD; * Flatten a children object (typically specified as `props.children`) and&#xD; * return an array with appropriately re-keyed children.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray&#xD; */&#xD;function toArray(children) {&#xD;  var result = [];&#xD;  mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);&#xD;  return result;&#xD;}&#xD;&#xD;var ReactChildren = {&#xD;  forEach: forEachChildren,&#xD;  map: mapChildren,&#xD;  mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,&#xD;  count: countChildren,&#xD;  toArray: toArray&#xD;};&#xD;&#xD;module.exports = ReactChildren;&#xD;&#xD;/***/ }),&#xD;/* 488 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35),&#xD;    _assign = __webpack_require__(10);&#xD;&#xD;var ReactComponent = __webpack_require__(101);&#xD;var ReactElement = __webpack_require__(34);&#xD;var ReactPropTypeLocationNames = __webpack_require__(186);&#xD;var ReactNoopUpdateQueue = __webpack_require__(102);&#xD;&#xD;var emptyObject = __webpack_require__(40);&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var MIXINS_KEY = &apos;mixins&apos;;&#xD;&#xD;// Helper function to allow the creation of anonymous functions which do not&#xD;// have .name set to the name of the variable being assigned to.&#xD;function identity(fn) {&#xD;  return fn;&#xD;}&#xD;&#xD;/**&#xD; * Policies that describe methods in `ReactClassInterface`.&#xD; */&#xD;&#xD;&#xD;var injectedMixins = [];&#xD;&#xD;/**&#xD; * Composite components are higher-level components that compose other composite&#xD; * or host components.&#xD; *&#xD; * To create a new type of `ReactClass`, pass a specification of&#xD; * your new class to `React.createClass`. The only requirement of your class&#xD; * specification is that you implement a `render` method.&#xD; *&#xD; *   var MyComponent = React.createClass({&#xD; *     render: function() {&#xD; *       return &lt;div&gt;Hello World&lt;/div&gt;;&#xD; *     }&#xD; *   });&#xD; *&#xD; * The class specification supports a specific protocol of methods that have&#xD; * special meaning (e.g. `render`). See `ReactClassInterface` for&#xD; * more the comprehensive protocol. Any other properties and methods in the&#xD; * class specification will be available on the prototype.&#xD; *&#xD; * @interface ReactClassInterface&#xD; * @internal&#xD; */&#xD;var ReactClassInterface = {&#xD;&#xD;  /**&#xD;   * An array of Mixin objects to include when defining your component.&#xD;   *&#xD;   * @type {array}&#xD;   * @optional&#xD;   */&#xD;  mixins: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * An object containing properties and methods that should be defined on&#xD;   * the component&apos;s constructor instead of its prototype (static methods).&#xD;   *&#xD;   * @type {object}&#xD;   * @optional&#xD;   */&#xD;  statics: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Definition of prop types for this component.&#xD;   *&#xD;   * @type {object}&#xD;   * @optional&#xD;   */&#xD;  propTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Definition of context types for this component.&#xD;   *&#xD;   * @type {object}&#xD;   * @optional&#xD;   */&#xD;  contextTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Definition of context types this component sets for its children.&#xD;   *&#xD;   * @type {object}&#xD;   * @optional&#xD;   */&#xD;  childContextTypes: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  // ==== Definition methods ====&#xD;&#xD;  /**&#xD;   * Invoked when the component is mounted. Values in the mapping will be set on&#xD;   * `this.props` if that prop is not specified (i.e. using an `in` check).&#xD;   *&#xD;   * This method is invoked before `getInitialState` and therefore cannot rely&#xD;   * on `this.state` or use `this.setState`.&#xD;   *&#xD;   * @return {object}&#xD;   * @optional&#xD;   */&#xD;  getDefaultProps: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;  /**&#xD;   * Invoked once before the component is mounted. The return value will be used&#xD;   * as the initial value of `this.state`.&#xD;   *&#xD;   *   getInitialState: function() {&#xD;   *     return {&#xD;   *       isOn: false,&#xD;   *       fooBaz: new BazFoo()&#xD;   *     }&#xD;   *   }&#xD;   *&#xD;   * @return {object}&#xD;   * @optional&#xD;   */&#xD;  getInitialState: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;  /**&#xD;   * @return {object}&#xD;   * @optional&#xD;   */&#xD;  getChildContext: &apos;DEFINE_MANY_MERGED&apos;,&#xD;&#xD;  /**&#xD;   * Uses props from `this.props` and state from `this.state` to render the&#xD;   * structure of the component.&#xD;   *&#xD;   * No guarantees are made about when or how often this method is invoked, so&#xD;   * it must not have side effects.&#xD;   *&#xD;   *   render: function() {&#xD;   *     var name = this.props.name;&#xD;   *     return &lt;div&gt;Hello, {name}!&lt;/div&gt;;&#xD;   *   }&#xD;   *&#xD;   * @return {ReactComponent}&#xD;   * @required&#xD;   */&#xD;  render: &apos;DEFINE_ONCE&apos;,&#xD;&#xD;  // ==== Delegate methods ====&#xD;&#xD;  /**&#xD;   * Invoked when the component is initially created and about to be mounted.&#xD;   * This may have side effects, but any external subscriptions or data created&#xD;   * by this method must be cleaned up in `componentWillUnmount`.&#xD;   *&#xD;   * @optional&#xD;   */&#xD;  componentWillMount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Invoked when the component has been mounted and has a DOM representation.&#xD;   * However, there is no guarantee that the DOM node is in the document.&#xD;   *&#xD;   * Use this as an opportunity to operate on the DOM when the component has&#xD;   * been mounted (initialized and rendered) for the first time.&#xD;   *&#xD;   * @param {DOMElement} rootNode DOM element representing the component.&#xD;   * @optional&#xD;   */&#xD;  componentDidMount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Invoked before the component receives new props.&#xD;   *&#xD;   * Use this as an opportunity to react to a prop transition by updating the&#xD;   * state using `this.setState`. Current props are accessed via `this.props`.&#xD;   *&#xD;   *   componentWillReceiveProps: function(nextProps, nextContext) {&#xD;   *     this.setState({&#xD;   *       likesIncreasing: nextProps.likeCount &gt; this.props.likeCount&#xD;   *     });&#xD;   *   }&#xD;   *&#xD;   * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop&#xD;   * transition may cause a state change, but the opposite is not true. If you&#xD;   * need it, you are probably looking for `componentWillUpdate`.&#xD;   *&#xD;   * @param {object} nextProps&#xD;   * @optional&#xD;   */&#xD;  componentWillReceiveProps: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Invoked while deciding if the component should be updated as a result of&#xD;   * receiving new props, state and/or context.&#xD;   *&#xD;   * Use this as an opportunity to `return false` when you&apos;re certain that the&#xD;   * transition to the new props/state/context will not require a component&#xD;   * update.&#xD;   *&#xD;   *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {&#xD;   *     return !equal(nextProps, this.props) ||&#xD;   *       !equal(nextState, this.state) ||&#xD;   *       !equal(nextContext, this.context);&#xD;   *   }&#xD;   *&#xD;   * @param {object} nextProps&#xD;   * @param {?object} nextState&#xD;   * @param {?object} nextContext&#xD;   * @return {boolean} True if the component should update.&#xD;   * @optional&#xD;   */&#xD;  shouldComponentUpdate: &apos;DEFINE_ONCE&apos;,&#xD;&#xD;  /**&#xD;   * Invoked when the component is about to update due to a transition from&#xD;   * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`&#xD;   * and `nextContext`.&#xD;   *&#xD;   * Use this as an opportunity to perform preparation before an update occurs.&#xD;   *&#xD;   * NOTE: You **cannot** use `this.setState()` in this method.&#xD;   *&#xD;   * @param {object} nextProps&#xD;   * @param {?object} nextState&#xD;   * @param {?object} nextContext&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @optional&#xD;   */&#xD;  componentWillUpdate: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Invoked when the component&apos;s DOM representation has been updated.&#xD;   *&#xD;   * Use this as an opportunity to operate on the DOM when the component has&#xD;   * been updated.&#xD;   *&#xD;   * @param {object} prevProps&#xD;   * @param {?object} prevState&#xD;   * @param {?object} prevContext&#xD;   * @param {DOMElement} rootNode DOM element representing the component.&#xD;   * @optional&#xD;   */&#xD;  componentDidUpdate: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  /**&#xD;   * Invoked when the component is about to be removed from its parent and have&#xD;   * its DOM representation destroyed.&#xD;   *&#xD;   * Use this as an opportunity to deallocate any external resources.&#xD;   *&#xD;   * NOTE: There is no `componentDidUnmount` since your component will have been&#xD;   * destroyed by that point.&#xD;   *&#xD;   * @optional&#xD;   */&#xD;  componentWillUnmount: &apos;DEFINE_MANY&apos;,&#xD;&#xD;  // ==== Advanced methods ====&#xD;&#xD;  /**&#xD;   * Updates the component&apos;s currently mounted DOM representation.&#xD;   *&#xD;   * By default, this implements React&apos;s rendering and reconciliation algorithm.&#xD;   * Sophisticated clients may wish to override this.&#xD;   *&#xD;   * @param {ReactReconcileTransaction} transaction&#xD;   * @internal&#xD;   * @overridable&#xD;   */&#xD;  updateComponent: &apos;OVERRIDE_BASE&apos;&#xD;&#xD;};&#xD;&#xD;/**&#xD; * Mapping from class specification keys to special processing functions.&#xD; *&#xD; * Although these are declared like instance properties in the specification&#xD; * when defining classes using `React.createClass`, they are actually static&#xD; * and are accessible on the constructor instead of the prototype. Despite&#xD; * being static, they must be defined outside of the "statics" key under&#xD; * which all other static methods are defined.&#xD; */&#xD;var RESERVED_SPEC_KEYS = {&#xD;  displayName: function (Constructor, displayName) {&#xD;    Constructor.displayName = displayName;&#xD;  },&#xD;  mixins: function (Constructor, mixins) {&#xD;    if (mixins) {&#xD;      for (var i = 0; i &lt; mixins.length; i++) {&#xD;        mixSpecIntoComponent(Constructor, mixins[i]);&#xD;      }&#xD;    }&#xD;  },&#xD;  childContextTypes: function (Constructor, childContextTypes) {&#xD;    if (true) {&#xD;      validateTypeDef(Constructor, childContextTypes, &apos;childContext&apos;);&#xD;    }&#xD;    Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);&#xD;  },&#xD;  contextTypes: function (Constructor, contextTypes) {&#xD;    if (true) {&#xD;      validateTypeDef(Constructor, contextTypes, &apos;context&apos;);&#xD;    }&#xD;    Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);&#xD;  },&#xD;  /**&#xD;   * Special case getDefaultProps which should move into statics but requires&#xD;   * automatic merging.&#xD;   */&#xD;  getDefaultProps: function (Constructor, getDefaultProps) {&#xD;    if (Constructor.getDefaultProps) {&#xD;      Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);&#xD;    } else {&#xD;      Constructor.getDefaultProps = getDefaultProps;&#xD;    }&#xD;  },&#xD;  propTypes: function (Constructor, propTypes) {&#xD;    if (true) {&#xD;      validateTypeDef(Constructor, propTypes, &apos;prop&apos;);&#xD;    }&#xD;    Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);&#xD;  },&#xD;  statics: function (Constructor, statics) {&#xD;    mixStaticSpecIntoComponent(Constructor, statics);&#xD;  },&#xD;  autobind: function () {} };&#xD;&#xD;function validateTypeDef(Constructor, typeDef, location) {&#xD;  for (var propName in typeDef) {&#xD;    if (typeDef.hasOwnProperty(propName)) {&#xD;      // use a warning instead of an invariant so components&#xD;      // don&apos;t show up in prod but only in __DEV__&#xD;       true ? warning(typeof typeDef[propName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, Constructor.displayName || &apos;ReactClass&apos;, ReactPropTypeLocationNames[location], propName) : void 0;&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function validateMethodOverride(isAlreadyDefined, name) {&#xD;  var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;&#xD;&#xD;  // Disallow overriding of base class methods unless explicitly allowed.&#xD;  if (ReactClassMixin.hasOwnProperty(name)) {&#xD;    !(specPolicy === &apos;OVERRIDE_BASE&apos;) ?  true ? invariant(false, &apos;ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.&apos;, name) : _prodInvariant(&apos;73&apos;, name) : void 0;&#xD;  }&#xD;&#xD;  // Disallow defining methods more than once unless explicitly allowed.&#xD;  if (isAlreadyDefined) {&#xD;    !(specPolicy === &apos;DEFINE_MANY&apos; || specPolicy === &apos;DEFINE_MANY_MERGED&apos;) ?  true ? invariant(false, &apos;ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.&apos;, name) : _prodInvariant(&apos;74&apos;, name) : void 0;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Mixin helper which handles policy validation and reserved&#xD; * specification keys when building React classes.&#xD; */&#xD;function mixSpecIntoComponent(Constructor, spec) {&#xD;  if (!spec) {&#xD;    if (true) {&#xD;      var typeofSpec = typeof spec;&#xD;      var isMixinValid = typeofSpec === &apos;object&apos; &amp;&amp; spec !== null;&#xD;&#xD;       true ? warning(isMixinValid, &apos;%s: You\&apos;re attempting to include a mixin that is either null &apos; + &apos;or not an object. Check the mixins included by the component, &apos; + &apos;as well as any mixins they include themselves. &apos; + &apos;Expected object but got %s.&apos;, Constructor.displayName || &apos;ReactClass&apos;, spec === null ? null : typeofSpec) : void 0;&#xD;    }&#xD;&#xD;    return;&#xD;  }&#xD;&#xD;  !(typeof spec !== &apos;function&apos;) ?  true ? invariant(false, &apos;ReactClass: You\&apos;re attempting to use a component class or function as a mixin. Instead, just use a regular object.&apos;) : _prodInvariant(&apos;75&apos;) : void 0;&#xD;  !!ReactElement.isValidElement(spec) ?  true ? invariant(false, &apos;ReactClass: You\&apos;re attempting to use a component as a mixin. Instead, just use a regular object.&apos;) : _prodInvariant(&apos;76&apos;) : void 0;&#xD;&#xD;  var proto = Constructor.prototype;&#xD;  var autoBindPairs = proto.__reactAutoBindPairs;&#xD;&#xD;  // By handling mixins before any other properties, we ensure the same&#xD;  // chaining order is applied to methods with DEFINE_MANY policy, whether&#xD;  // mixins are listed before or after these methods in the spec.&#xD;  if (spec.hasOwnProperty(MIXINS_KEY)) {&#xD;    RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);&#xD;  }&#xD;&#xD;  for (var name in spec) {&#xD;    if (!spec.hasOwnProperty(name)) {&#xD;      continue;&#xD;    }&#xD;&#xD;    if (name === MIXINS_KEY) {&#xD;      // We have already handled mixins in a special case above.&#xD;      continue;&#xD;    }&#xD;&#xD;    var property = spec[name];&#xD;    var isAlreadyDefined = proto.hasOwnProperty(name);&#xD;    validateMethodOverride(isAlreadyDefined, name);&#xD;&#xD;    if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {&#xD;      RESERVED_SPEC_KEYS[name](Constructor, property);&#xD;    } else {&#xD;      // Setup methods on prototype:&#xD;      // The following member methods should not be automatically bound:&#xD;      // 1. Expected ReactClass methods (in the "interface").&#xD;      // 2. Overridden methods (that were mixed in).&#xD;      var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);&#xD;      var isFunction = typeof property === &apos;function&apos;;&#xD;      var shouldAutoBind = isFunction &amp;&amp; !isReactClassMethod &amp;&amp; !isAlreadyDefined &amp;&amp; spec.autobind !== false;&#xD;&#xD;      if (shouldAutoBind) {&#xD;        autoBindPairs.push(name, property);&#xD;        proto[name] = property;&#xD;      } else {&#xD;        if (isAlreadyDefined) {&#xD;          var specPolicy = ReactClassInterface[name];&#xD;&#xD;          // These cases should already be caught by validateMethodOverride.&#xD;          !(isReactClassMethod &amp;&amp; (specPolicy === &apos;DEFINE_MANY_MERGED&apos; || specPolicy === &apos;DEFINE_MANY&apos;)) ?  true ? invariant(false, &apos;ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.&apos;, specPolicy, name) : _prodInvariant(&apos;77&apos;, specPolicy, name) : void 0;&#xD;&#xD;          // For methods which are defined more than once, call the existing&#xD;          // methods before calling the new property, merging if appropriate.&#xD;          if (specPolicy === &apos;DEFINE_MANY_MERGED&apos;) {&#xD;            proto[name] = createMergedResultFunction(proto[name], property);&#xD;          } else if (specPolicy === &apos;DEFINE_MANY&apos;) {&#xD;            proto[name] = createChainedFunction(proto[name], property);&#xD;          }&#xD;        } else {&#xD;          proto[name] = property;&#xD;          if (true) {&#xD;            // Add verbose displayName to the function, which helps when looking&#xD;            // at profiling tools.&#xD;            if (typeof property === &apos;function&apos; &amp;&amp; spec.displayName) {&#xD;              proto[name].displayName = spec.displayName + &apos;_&apos; + name;&#xD;            }&#xD;          }&#xD;        }&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;function mixStaticSpecIntoComponent(Constructor, statics) {&#xD;  if (!statics) {&#xD;    return;&#xD;  }&#xD;  for (var name in statics) {&#xD;    var property = statics[name];&#xD;    if (!statics.hasOwnProperty(name)) {&#xD;      continue;&#xD;    }&#xD;&#xD;    var isReserved = name in RESERVED_SPEC_KEYS;&#xD;    !!isReserved ?  true ? invariant(false, &apos;ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\&apos;t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.&apos;, name) : _prodInvariant(&apos;78&apos;, name) : void 0;&#xD;&#xD;    var isInherited = name in Constructor;&#xD;    !!isInherited ?  true ? invariant(false, &apos;ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.&apos;, name) : _prodInvariant(&apos;79&apos;, name) : void 0;&#xD;    Constructor[name] = property;&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Merge two objects, but throw if both contain the same key.&#xD; *&#xD; * @param {object} one The first object, which is mutated.&#xD; * @param {object} two The second object&#xD; * @return {object} one after it has been mutated to contain everything in two.&#xD; */&#xD;function mergeIntoWithNoDuplicateKeys(one, two) {&#xD;  !(one &amp;&amp; two &amp;&amp; typeof one === &apos;object&apos; &amp;&amp; typeof two === &apos;object&apos;) ?  true ? invariant(false, &apos;mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.&apos;) : _prodInvariant(&apos;80&apos;) : void 0;&#xD;&#xD;  for (var key in two) {&#xD;    if (two.hasOwnProperty(key)) {&#xD;      !(one[key] === undefined) ?  true ? invariant(false, &apos;mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.&apos;, key) : _prodInvariant(&apos;81&apos;, key) : void 0;&#xD;      one[key] = two[key];&#xD;    }&#xD;  }&#xD;  return one;&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that invokes two functions and merges their return values.&#xD; *&#xD; * @param {function} one Function to invoke first.&#xD; * @param {function} two Function to invoke second.&#xD; * @return {function} Function that invokes the two argument functions.&#xD; * @private&#xD; */&#xD;function createMergedResultFunction(one, two) {&#xD;  return function mergedResult() {&#xD;    var a = one.apply(this, arguments);&#xD;    var b = two.apply(this, arguments);&#xD;    if (a == null) {&#xD;      return b;&#xD;    } else if (b == null) {&#xD;      return a;&#xD;    }&#xD;    var c = {};&#xD;    mergeIntoWithNoDuplicateKeys(c, a);&#xD;    mergeIntoWithNoDuplicateKeys(c, b);&#xD;    return c;&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Creates a function that invokes two functions and ignores their return vales.&#xD; *&#xD; * @param {function} one Function to invoke first.&#xD; * @param {function} two Function to invoke second.&#xD; * @return {function} Function that invokes the two argument functions.&#xD; * @private&#xD; */&#xD;function createChainedFunction(one, two) {&#xD;  return function chainedFunction() {&#xD;    one.apply(this, arguments);&#xD;    two.apply(this, arguments);&#xD;  };&#xD;}&#xD;&#xD;/**&#xD; * Binds a method to the component.&#xD; *&#xD; * @param {object} component Component whose method is going to be bound.&#xD; * @param {function} method Method to be bound.&#xD; * @return {function} The bound method.&#xD; */&#xD;function bindAutoBindMethod(component, method) {&#xD;  var boundMethod = method.bind(component);&#xD;  if (true) {&#xD;    boundMethod.__reactBoundContext = component;&#xD;    boundMethod.__reactBoundMethod = method;&#xD;    boundMethod.__reactBoundArguments = null;&#xD;    var componentName = component.constructor.displayName;&#xD;    var _bind = boundMethod.bind;&#xD;    boundMethod.bind = function (newThis) {&#xD;      for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {&#xD;        args[_key - 1] = arguments[_key];&#xD;      }&#xD;&#xD;      // User is trying to bind() an autobound method; we effectively will&#xD;      // ignore the value of "this" that the user is trying to use, so&#xD;      // let&apos;s warn.&#xD;      if (newThis !== component &amp;&amp; newThis !== null) {&#xD;         true ? warning(false, &apos;bind(): React component methods may only be bound to the &apos; + &apos;component instance. See %s&apos;, componentName) : void 0;&#xD;      } else if (!args.length) {&#xD;         true ? warning(false, &apos;bind(): You are binding a component method to the component. &apos; + &apos;React does this for you automatically in a high-performance &apos; + &apos;way, so you can safely remove this call. See %s&apos;, componentName) : void 0;&#xD;        return boundMethod;&#xD;      }&#xD;      var reboundMethod = _bind.apply(boundMethod, arguments);&#xD;      reboundMethod.__reactBoundContext = component;&#xD;      reboundMethod.__reactBoundMethod = method;&#xD;      reboundMethod.__reactBoundArguments = args;&#xD;      return reboundMethod;&#xD;    };&#xD;  }&#xD;  return boundMethod;&#xD;}&#xD;&#xD;/**&#xD; * Binds all auto-bound methods in a component.&#xD; *&#xD; * @param {object} component Component whose method is going to be bound.&#xD; */&#xD;function bindAutoBindMethods(component) {&#xD;  var pairs = component.__reactAutoBindPairs;&#xD;  for (var i = 0; i &lt; pairs.length; i += 2) {&#xD;    var autoBindKey = pairs[i];&#xD;    var method = pairs[i + 1];&#xD;    component[autoBindKey] = bindAutoBindMethod(component, method);&#xD;  }&#xD;}&#xD;&#xD;/**&#xD; * Add more to the ReactClass base class. These are all legacy features and&#xD; * therefore not already part of the modern ReactComponent.&#xD; */&#xD;var ReactClassMixin = {&#xD;&#xD;  /**&#xD;   * TODO: This will be deprecated because state should always keep a consistent&#xD;   * type signature and the only use case for this, is to avoid that.&#xD;   */&#xD;  replaceState: function (newState, callback) {&#xD;    this.updater.enqueueReplaceState(this, newState);&#xD;    if (callback) {&#xD;      this.updater.enqueueCallback(this, callback, &apos;replaceState&apos;);&#xD;    }&#xD;  },&#xD;&#xD;  /**&#xD;   * Checks whether or not this composite component is mounted.&#xD;   * @return {boolean} True if mounted, false otherwise.&#xD;   * @protected&#xD;   * @final&#xD;   */&#xD;  isMounted: function () {&#xD;    return this.updater.isMounted(this);&#xD;  }&#xD;};&#xD;&#xD;var ReactClassComponent = function () {};&#xD;_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);&#xD;&#xD;var didWarnDeprecated = false;&#xD;&#xD;/**&#xD; * Module for creating composite components.&#xD; *&#xD; * @class ReactClass&#xD; */&#xD;var ReactClass = {&#xD;&#xD;  /**&#xD;   * Creates a composite component class given a class specification.&#xD;   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass&#xD;   *&#xD;   * @param {object} spec Class specification (which must define `render`).&#xD;   * @return {function} Component constructor function.&#xD;   * @public&#xD;   */&#xD;  createClass: function (spec) {&#xD;    if (true) {&#xD;       true ? warning(didWarnDeprecated, &apos;%s: React.createClass is deprecated and will be removed in version 16. &apos; + &apos;Use plain JavaScript classes instead. If you\&apos;re not yet ready to &apos; + &apos;migrate, create-react-class is available on npm as a &apos; + &apos;drop-in replacement.&apos;, spec &amp;&amp; spec.displayName || &apos;A Component&apos;) : void 0;&#xD;      didWarnDeprecated = true;&#xD;    }&#xD;&#xD;    // To keep our warnings more understandable, we&apos;ll use a little hack here to&#xD;    // ensure that Constructor.name !== &apos;Constructor&apos;. This makes sure we don&apos;t&#xD;    // unnecessarily identify a class without displayName as &apos;Constructor&apos;.&#xD;    var Constructor = identity(function (props, context, updater) {&#xD;      // This constructor gets overridden by mocks. The argument is used&#xD;      // by mocks to assert on what gets mounted.&#xD;&#xD;      if (true) {&#xD;         true ? warning(this instanceof Constructor, &apos;Something is calling a React component directly. Use a factory or &apos; + &apos;JSX instead. See: https://fb.me/react-legacyfactory&apos;) : void 0;&#xD;      }&#xD;&#xD;      // Wire up auto-binding&#xD;      if (this.__reactAutoBindPairs.length) {&#xD;        bindAutoBindMethods(this);&#xD;      }&#xD;&#xD;      this.props = props;&#xD;      this.context = context;&#xD;      this.refs = emptyObject;&#xD;      this.updater = updater || ReactNoopUpdateQueue;&#xD;&#xD;      this.state = null;&#xD;&#xD;      // ReactClasses doesn&apos;t have constructors. Instead, they use the&#xD;      // getInitialState and componentWillMount methods for initialization.&#xD;&#xD;      var initialState = this.getInitialState ? this.getInitialState() : null;&#xD;      if (true) {&#xD;        // We allow auto-mocks to proceed as if they&apos;re returning null.&#xD;        if (initialState === undefined &amp;&amp; this.getInitialState._isMockFunction) {&#xD;          // This is probably bad practice. Consider warning here and&#xD;          // deprecating this convenience.&#xD;          initialState = null;&#xD;        }&#xD;      }&#xD;      !(typeof initialState === &apos;object&apos; &amp;&amp; !Array.isArray(initialState)) ?  true ? invariant(false, &apos;%s.getInitialState(): must return an object or null&apos;, Constructor.displayName || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;82&apos;, Constructor.displayName || &apos;ReactCompositeComponent&apos;) : void 0;&#xD;&#xD;      this.state = initialState;&#xD;    });&#xD;    Constructor.prototype = new ReactClassComponent();&#xD;    Constructor.prototype.constructor = Constructor;&#xD;    Constructor.prototype.__reactAutoBindPairs = [];&#xD;&#xD;    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));&#xD;&#xD;    mixSpecIntoComponent(Constructor, spec);&#xD;&#xD;    // Initialize the defaultProps property after all mixins have been merged.&#xD;    if (Constructor.getDefaultProps) {&#xD;      Constructor.defaultProps = Constructor.getDefaultProps();&#xD;    }&#xD;&#xD;    if (true) {&#xD;      // This is a tag to indicate that the use of these method names is ok,&#xD;      // since it&apos;s used with createClass. If it&apos;s not, then it&apos;s likely a&#xD;      // mistake so we&apos;ll warn you to use the static property, property&#xD;      // initializer or constructor respectively.&#xD;      if (Constructor.getDefaultProps) {&#xD;        Constructor.getDefaultProps.isReactClassApproved = {};&#xD;      }&#xD;      if (Constructor.prototype.getInitialState) {&#xD;        Constructor.prototype.getInitialState.isReactClassApproved = {};&#xD;      }&#xD;    }&#xD;&#xD;    !Constructor.prototype.render ?  true ? invariant(false, &apos;createClass(...): Class specification must implement a `render` method.&apos;) : _prodInvariant(&apos;83&apos;) : void 0;&#xD;&#xD;    if (true) {&#xD;       true ? warning(!Constructor.prototype.componentShouldUpdate, &apos;%s has a method called &apos; + &apos;componentShouldUpdate(). Did you mean shouldComponentUpdate()? &apos; + &apos;The name is phrased as a question because the function is &apos; + &apos;expected to return a value.&apos;, spec.displayName || &apos;A component&apos;) : void 0;&#xD;       true ? warning(!Constructor.prototype.componentWillRecieveProps, &apos;%s has a method called &apos; + &apos;componentWillRecieveProps(). Did you mean componentWillReceiveProps()?&apos;, spec.displayName || &apos;A component&apos;) : void 0;&#xD;    }&#xD;&#xD;    // Reduce time spent doing lookups by setting these on the prototype.&#xD;    for (var methodName in ReactClassInterface) {&#xD;      if (!Constructor.prototype[methodName]) {&#xD;        Constructor.prototype[methodName] = null;&#xD;      }&#xD;    }&#xD;&#xD;    return Constructor;&#xD;  },&#xD;&#xD;  injection: {&#xD;    injectMixin: function (mixin) {&#xD;      injectedMixins.push(mixin);&#xD;    }&#xD;  }&#xD;&#xD;};&#xD;&#xD;module.exports = ReactClass;&#xD;&#xD;/***/ }),&#xD;/* 489 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var ReactElement = __webpack_require__(34);&#xD;&#xD;/**&#xD; * Create a factory that creates HTML tag elements.&#xD; *&#xD; * @private&#xD; */&#xD;var createDOMFactory = ReactElement.createFactory;&#xD;if (true) {&#xD;  var ReactElementValidator = __webpack_require__(185);&#xD;  createDOMFactory = ReactElementValidator.createFactory;&#xD;}&#xD;&#xD;/**&#xD; * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.&#xD; * This is also accessible via `React.DOM`.&#xD; *&#xD; * @public&#xD; */&#xD;var ReactDOMFactories = {&#xD;  a: createDOMFactory(&apos;a&apos;),&#xD;  abbr: createDOMFactory(&apos;abbr&apos;),&#xD;  address: createDOMFactory(&apos;address&apos;),&#xD;  area: createDOMFactory(&apos;area&apos;),&#xD;  article: createDOMFactory(&apos;article&apos;),&#xD;  aside: createDOMFactory(&apos;aside&apos;),&#xD;  audio: createDOMFactory(&apos;audio&apos;),&#xD;  b: createDOMFactory(&apos;b&apos;),&#xD;  base: createDOMFactory(&apos;base&apos;),&#xD;  bdi: createDOMFactory(&apos;bdi&apos;),&#xD;  bdo: createDOMFactory(&apos;bdo&apos;),&#xD;  big: createDOMFactory(&apos;big&apos;),&#xD;  blockquote: createDOMFactory(&apos;blockquote&apos;),&#xD;  body: createDOMFactory(&apos;body&apos;),&#xD;  br: createDOMFactory(&apos;br&apos;),&#xD;  button: createDOMFactory(&apos;button&apos;),&#xD;  canvas: createDOMFactory(&apos;canvas&apos;),&#xD;  caption: createDOMFactory(&apos;caption&apos;),&#xD;  cite: createDOMFactory(&apos;cite&apos;),&#xD;  code: createDOMFactory(&apos;code&apos;),&#xD;  col: createDOMFactory(&apos;col&apos;),&#xD;  colgroup: createDOMFactory(&apos;colgroup&apos;),&#xD;  data: createDOMFactory(&apos;data&apos;),&#xD;  datalist: createDOMFactory(&apos;datalist&apos;),&#xD;  dd: createDOMFactory(&apos;dd&apos;),&#xD;  del: createDOMFactory(&apos;del&apos;),&#xD;  details: createDOMFactory(&apos;details&apos;),&#xD;  dfn: createDOMFactory(&apos;dfn&apos;),&#xD;  dialog: createDOMFactory(&apos;dialog&apos;),&#xD;  div: createDOMFactory(&apos;div&apos;),&#xD;  dl: createDOMFactory(&apos;dl&apos;),&#xD;  dt: createDOMFactory(&apos;dt&apos;),&#xD;  em: createDOMFactory(&apos;em&apos;),&#xD;  embed: createDOMFactory(&apos;embed&apos;),&#xD;  fieldset: createDOMFactory(&apos;fieldset&apos;),&#xD;  figcaption: createDOMFactory(&apos;figcaption&apos;),&#xD;  figure: createDOMFactory(&apos;figure&apos;),&#xD;  footer: createDOMFactory(&apos;footer&apos;),&#xD;  form: createDOMFactory(&apos;form&apos;),&#xD;  h1: createDOMFactory(&apos;h1&apos;),&#xD;  h2: createDOMFactory(&apos;h2&apos;),&#xD;  h3: createDOMFactory(&apos;h3&apos;),&#xD;  h4: createDOMFactory(&apos;h4&apos;),&#xD;  h5: createDOMFactory(&apos;h5&apos;),&#xD;  h6: createDOMFactory(&apos;h6&apos;),&#xD;  head: createDOMFactory(&apos;head&apos;),&#xD;  header: createDOMFactory(&apos;header&apos;),&#xD;  hgroup: createDOMFactory(&apos;hgroup&apos;),&#xD;  hr: createDOMFactory(&apos;hr&apos;),&#xD;  html: createDOMFactory(&apos;html&apos;),&#xD;  i: createDOMFactory(&apos;i&apos;),&#xD;  iframe: createDOMFactory(&apos;iframe&apos;),&#xD;  img: createDOMFactory(&apos;img&apos;),&#xD;  input: createDOMFactory(&apos;input&apos;),&#xD;  ins: createDOMFactory(&apos;ins&apos;),&#xD;  kbd: createDOMFactory(&apos;kbd&apos;),&#xD;  keygen: createDOMFactory(&apos;keygen&apos;),&#xD;  label: createDOMFactory(&apos;label&apos;),&#xD;  legend: createDOMFactory(&apos;legend&apos;),&#xD;  li: createDOMFactory(&apos;li&apos;),&#xD;  link: createDOMFactory(&apos;link&apos;),&#xD;  main: createDOMFactory(&apos;main&apos;),&#xD;  map: createDOMFactory(&apos;map&apos;),&#xD;  mark: createDOMFactory(&apos;mark&apos;),&#xD;  menu: createDOMFactory(&apos;menu&apos;),&#xD;  menuitem: createDOMFactory(&apos;menuitem&apos;),&#xD;  meta: createDOMFactory(&apos;meta&apos;),&#xD;  meter: createDOMFactory(&apos;meter&apos;),&#xD;  nav: createDOMFactory(&apos;nav&apos;),&#xD;  noscript: createDOMFactory(&apos;noscript&apos;),&#xD;  object: createDOMFactory(&apos;object&apos;),&#xD;  ol: createDOMFactory(&apos;ol&apos;),&#xD;  optgroup: createDOMFactory(&apos;optgroup&apos;),&#xD;  option: createDOMFactory(&apos;option&apos;),&#xD;  output: createDOMFactory(&apos;output&apos;),&#xD;  p: createDOMFactory(&apos;p&apos;),&#xD;  param: createDOMFactory(&apos;param&apos;),&#xD;  picture: createDOMFactory(&apos;picture&apos;),&#xD;  pre: createDOMFactory(&apos;pre&apos;),&#xD;  progress: createDOMFactory(&apos;progress&apos;),&#xD;  q: createDOMFactory(&apos;q&apos;),&#xD;  rp: createDOMFactory(&apos;rp&apos;),&#xD;  rt: createDOMFactory(&apos;rt&apos;),&#xD;  ruby: createDOMFactory(&apos;ruby&apos;),&#xD;  s: createDOMFactory(&apos;s&apos;),&#xD;  samp: createDOMFactory(&apos;samp&apos;),&#xD;  script: createDOMFactory(&apos;script&apos;),&#xD;  section: createDOMFactory(&apos;section&apos;),&#xD;  select: createDOMFactory(&apos;select&apos;),&#xD;  small: createDOMFactory(&apos;small&apos;),&#xD;  source: createDOMFactory(&apos;source&apos;),&#xD;  span: createDOMFactory(&apos;span&apos;),&#xD;  strong: createDOMFactory(&apos;strong&apos;),&#xD;  style: createDOMFactory(&apos;style&apos;),&#xD;  sub: createDOMFactory(&apos;sub&apos;),&#xD;  summary: createDOMFactory(&apos;summary&apos;),&#xD;  sup: createDOMFactory(&apos;sup&apos;),&#xD;  table: createDOMFactory(&apos;table&apos;),&#xD;  tbody: createDOMFactory(&apos;tbody&apos;),&#xD;  td: createDOMFactory(&apos;td&apos;),&#xD;  textarea: createDOMFactory(&apos;textarea&apos;),&#xD;  tfoot: createDOMFactory(&apos;tfoot&apos;),&#xD;  th: createDOMFactory(&apos;th&apos;),&#xD;  thead: createDOMFactory(&apos;thead&apos;),&#xD;  time: createDOMFactory(&apos;time&apos;),&#xD;  title: createDOMFactory(&apos;title&apos;),&#xD;  tr: createDOMFactory(&apos;tr&apos;),&#xD;  track: createDOMFactory(&apos;track&apos;),&#xD;  u: createDOMFactory(&apos;u&apos;),&#xD;  ul: createDOMFactory(&apos;ul&apos;),&#xD;  &apos;var&apos;: createDOMFactory(&apos;var&apos;),&#xD;  video: createDOMFactory(&apos;video&apos;),&#xD;  wbr: createDOMFactory(&apos;wbr&apos;),&#xD;&#xD;  // SVG&#xD;  circle: createDOMFactory(&apos;circle&apos;),&#xD;  clipPath: createDOMFactory(&apos;clipPath&apos;),&#xD;  defs: createDOMFactory(&apos;defs&apos;),&#xD;  ellipse: createDOMFactory(&apos;ellipse&apos;),&#xD;  g: createDOMFactory(&apos;g&apos;),&#xD;  image: createDOMFactory(&apos;image&apos;),&#xD;  line: createDOMFactory(&apos;line&apos;),&#xD;  linearGradient: createDOMFactory(&apos;linearGradient&apos;),&#xD;  mask: createDOMFactory(&apos;mask&apos;),&#xD;  path: createDOMFactory(&apos;path&apos;),&#xD;  pattern: createDOMFactory(&apos;pattern&apos;),&#xD;  polygon: createDOMFactory(&apos;polygon&apos;),&#xD;  polyline: createDOMFactory(&apos;polyline&apos;),&#xD;  radialGradient: createDOMFactory(&apos;radialGradient&apos;),&#xD;  rect: createDOMFactory(&apos;rect&apos;),&#xD;  stop: createDOMFactory(&apos;stop&apos;),&#xD;  svg: createDOMFactory(&apos;svg&apos;),&#xD;  text: createDOMFactory(&apos;text&apos;),&#xD;  tspan: createDOMFactory(&apos;tspan&apos;)&#xD;};&#xD;&#xD;module.exports = ReactDOMFactories;&#xD;&#xD;/***/ }),&#xD;/* 490 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _require = __webpack_require__(34),&#xD;    isValidElement = _require.isValidElement;&#xD;&#xD;var factory = __webpack_require__(147);&#xD;&#xD;module.exports = factory(isValidElement);&#xD;&#xD;/***/ }),&#xD;/* 491 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;&#xD;&#xD;module.exports = ReactPropTypesSecret;&#xD;&#xD;/***/ }),&#xD;/* 492 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _assign = __webpack_require__(10);&#xD;&#xD;var ReactComponent = __webpack_require__(101);&#xD;var ReactNoopUpdateQueue = __webpack_require__(102);&#xD;&#xD;var emptyObject = __webpack_require__(40);&#xD;&#xD;/**&#xD; * Base class helpers for the updating state of a component.&#xD; */&#xD;function ReactPureComponent(props, context, updater) {&#xD;  // Duplicated from ReactComponent.&#xD;  this.props = props;&#xD;  this.context = context;&#xD;  this.refs = emptyObject;&#xD;  // We initialize the default updater but the real one gets injected by the&#xD;  // renderer.&#xD;  this.updater = updater || ReactNoopUpdateQueue;&#xD;}&#xD;&#xD;function ComponentDummy() {}&#xD;ComponentDummy.prototype = ReactComponent.prototype;&#xD;ReactPureComponent.prototype = new ComponentDummy();&#xD;ReactPureComponent.prototype.constructor = ReactPureComponent;&#xD;// Avoid an extra prototype jump for these methods.&#xD;_assign(ReactPureComponent.prototype, ReactComponent.prototype);&#xD;ReactPureComponent.prototype.isPureReactComponent = true;&#xD;&#xD;module.exports = ReactPureComponent;&#xD;&#xD;/***/ }),&#xD;/* 493 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;module.exports = &apos;15.5.4&apos;;&#xD;&#xD;/***/ }),&#xD;/* 494 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/* WEBPACK VAR INJECTION */(function(process) {/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var ReactPropTypeLocationNames = __webpack_require__(186);&#xD;var ReactPropTypesSecret = __webpack_require__(491);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var ReactComponentTreeHook;&#xD;&#xD;if (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; "undefined" === &apos;test&apos;) {&#xD;  // Temporary hack.&#xD;  // Inline requires don&apos;t work well with Jest:&#xD;  // https://github.com/facebook/react/issues/7240&#xD;  // Remove the inline requires when we don&apos;t need them anymore:&#xD;  // https://github.com/facebook/react/pull/7178&#xD;  ReactComponentTreeHook = __webpack_require__(20);&#xD;}&#xD;&#xD;var loggedTypeFailures = {};&#xD;&#xD;/**&#xD; * Assert that the values match with the type specs.&#xD; * Error messages are memorized and will only be shown once.&#xD; *&#xD; * @param {object} typeSpecs Map of name to a ReactPropType&#xD; * @param {object} values Runtime values that need to be type-checked&#xD; * @param {string} location e.g. "prop", "context", "child context"&#xD; * @param {string} componentName Name of the component for error messages.&#xD; * @param {?object} element The React element that is being type-checked&#xD; * @param {?number} debugID The React component instance that is being type-checked&#xD; * @private&#xD; */&#xD;function checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {&#xD;  for (var typeSpecName in typeSpecs) {&#xD;    if (typeSpecs.hasOwnProperty(typeSpecName)) {&#xD;      var error;&#xD;      // Prop type validation may throw. In case they do, we don&apos;t want to&#xD;      // fail the render phase where it didn&apos;t fail before. So we log it.&#xD;      // After these have been cleaned up, we&apos;ll let them throw.&#xD;      try {&#xD;        // This is intentionally an invariant that gets caught. It&apos;s the same&#xD;        // behavior as without this statement except with a better message.&#xD;        !(typeof typeSpecs[typeSpecName] === &apos;function&apos;) ?  true ? invariant(false, &apos;%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant(&apos;84&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : void 0;&#xD;        error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);&#xD;      } catch (ex) {&#xD;        error = ex;&#xD;      }&#xD;       true ? warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;&#xD;      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {&#xD;        // Only monitor this failure once because there tends to be a lot of the&#xD;        // same error.&#xD;        loggedTypeFailures[error.message] = true;&#xD;&#xD;        var componentStackInfo = &apos;&apos;;&#xD;&#xD;        if (true) {&#xD;          if (!ReactComponentTreeHook) {&#xD;            ReactComponentTreeHook = __webpack_require__(20);&#xD;          }&#xD;          if (debugID !== null) {&#xD;            componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);&#xD;          } else if (element !== null) {&#xD;            componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);&#xD;          }&#xD;        }&#xD;&#xD;         true ? warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, componentStackInfo) : void 0;&#xD;      }&#xD;    }&#xD;  }&#xD;}&#xD;&#xD;module.exports = checkReactTypeSpec;&#xD;/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(14)))&#xD;&#xD;/***/ }),&#xD;/* 495 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; * &#xD; */&#xD;&#xD;&#xD;&#xD;var nextDebugID = 1;&#xD;&#xD;function getNextDebugID() {&#xD;  return nextDebugID++;&#xD;}&#xD;&#xD;module.exports = getNextDebugID;&#xD;&#xD;/***/ }),&#xD;/* 496 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var ReactElement = __webpack_require__(34);&#xD;&#xD;var invariant = __webpack_require__(3);&#xD;&#xD;/**&#xD; * Returns the first child in a collection of children and verifies that there&#xD; * is only one child in the collection.&#xD; *&#xD; * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only&#xD; *&#xD; * The current implementation of this function assumes that a single child gets&#xD; * passed without a wrapper, but the purpose of this helper function is to&#xD; * abstract away the particular structure of children.&#xD; *&#xD; * @param {?object} children Child collection structure.&#xD; * @return {ReactElement} The first and only `ReactElement` contained in the&#xD; * structure.&#xD; */&#xD;function onlyChild(children) {&#xD;  !ReactElement.isValidElement(children) ?  true ? invariant(false, &apos;React.Children.only expected to receive a single React element child.&apos;) : _prodInvariant(&apos;143&apos;) : void 0;&#xD;  return children;&#xD;}&#xD;&#xD;module.exports = onlyChild;&#xD;&#xD;/***/ }),&#xD;/* 497 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;"use strict";&#xD;/**&#xD; * Copyright 2013-present, Facebook, Inc.&#xD; * All rights reserved.&#xD; *&#xD; * This source code is licensed under the BSD-style license found in the&#xD; * LICENSE file in the root directory of this source tree. An additional grant&#xD; * of patent rights can be found in the PATENTS file in the same directory.&#xD; *&#xD; */&#xD;&#xD;&#xD;&#xD;var _prodInvariant = __webpack_require__(35);&#xD;&#xD;var ReactCurrentOwner = __webpack_require__(25);&#xD;var REACT_ELEMENT_TYPE = __webpack_require__(184);&#xD;&#xD;var getIteratorFn = __webpack_require__(187);&#xD;var invariant = __webpack_require__(3);&#xD;var KeyEscapeUtils = __webpack_require__(485);&#xD;var warning = __webpack_require__(4);&#xD;&#xD;var SEPARATOR = &apos;.&apos;;&#xD;var SUBSEPARATOR = &apos;:&apos;;&#xD;&#xD;/**&#xD; * This is inlined from ReactElement since this file is shared between&#xD; * isomorphic and renderers. We could extract this to a&#xD; *&#xD; */&#xD;&#xD;/**&#xD; * TODO: Test that a single child and an array with one item have the same key&#xD; * pattern.&#xD; */&#xD;&#xD;var didWarnAboutMaps = false;&#xD;&#xD;/**&#xD; * Generate a key string that identifies a component within a set.&#xD; *&#xD; * @param {*} component A component that could contain a manual key.&#xD; * @param {number} index Index that is used if a manual key is not provided.&#xD; * @return {string}&#xD; */&#xD;function getComponentKey(component, index) {&#xD;  // Do some typechecking here since we call this blindly. We want to ensure&#xD;  // that we don&apos;t block potential future ES APIs.&#xD;  if (component &amp;&amp; typeof component === &apos;object&apos; &amp;&amp; component.key != null) {&#xD;    // Explicit key&#xD;    return KeyEscapeUtils.escape(component.key);&#xD;  }&#xD;  // Implicit key determined by the index in the set&#xD;  return index.toString(36);&#xD;}&#xD;&#xD;/**&#xD; * @param {?*} children Children tree container.&#xD; * @param {!string} nameSoFar Name of the key path so far.&#xD; * @param {!function} callback Callback to invoke with each child found.&#xD; * @param {?*} traverseContext Used to pass information throughout the traversal&#xD; * process.&#xD; * @return {!number} The number of children in this subtree.&#xD; */&#xD;function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {&#xD;  var type = typeof children;&#xD;&#xD;  if (type === &apos;undefined&apos; || type === &apos;boolean&apos;) {&#xD;    // All of the above are perceived as null.&#xD;    children = null;&#xD;  }&#xD;&#xD;  if (children === null || type === &apos;string&apos; || type === &apos;number&apos; ||&#xD;  // The following is inlined from ReactElement. This means we can optimize&#xD;  // some checks. React Fiber also inlines this logic for similar purposes.&#xD;  type === &apos;object&apos; &amp;&amp; children.$$typeof === REACT_ELEMENT_TYPE) {&#xD;    callback(traverseContext, children,&#xD;    // If it&apos;s the only child, treat the name as if it was wrapped in an array&#xD;    // so that it&apos;s consistent if the number of children grows.&#xD;    nameSoFar === &apos;&apos; ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);&#xD;    return 1;&#xD;  }&#xD;&#xD;  var child;&#xD;  var nextName;&#xD;  var subtreeCount = 0; // Count of children found in the current subtree.&#xD;  var nextNamePrefix = nameSoFar === &apos;&apos; ? SEPARATOR : nameSoFar + SUBSEPARATOR;&#xD;&#xD;  if (Array.isArray(children)) {&#xD;    for (var i = 0; i &lt; children.length; i++) {&#xD;      child = children[i];&#xD;      nextName = nextNamePrefix + getComponentKey(child, i);&#xD;      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;    }&#xD;  } else {&#xD;    var iteratorFn = getIteratorFn(children);&#xD;    if (iteratorFn) {&#xD;      var iterator = iteratorFn.call(children);&#xD;      var step;&#xD;      if (iteratorFn !== children.entries) {&#xD;        var ii = 0;&#xD;        while (!(step = iterator.next()).done) {&#xD;          child = step.value;&#xD;          nextName = nextNamePrefix + getComponentKey(child, ii++);&#xD;          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;        }&#xD;      } else {&#xD;        if (true) {&#xD;          var mapsAsChildrenAddendum = &apos;&apos;;&#xD;          if (ReactCurrentOwner.current) {&#xD;            var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();&#xD;            if (mapsAsChildrenOwnerName) {&#xD;              mapsAsChildrenAddendum = &apos; Check the render method of `&apos; + mapsAsChildrenOwnerName + &apos;`.&apos;;&#xD;            }&#xD;          }&#xD;           true ? warning(didWarnAboutMaps, &apos;Using Maps as children is not yet fully supported. It is an &apos; + &apos;experimental feature that might be removed. Convert it to a &apos; + &apos;sequence / iterable of keyed ReactElements instead.%s&apos;, mapsAsChildrenAddendum) : void 0;&#xD;          didWarnAboutMaps = true;&#xD;        }&#xD;        // Iterator will provide entry [k,v] tuples rather than values.&#xD;        while (!(step = iterator.next()).done) {&#xD;          var entry = step.value;&#xD;          if (entry) {&#xD;            child = entry[1];&#xD;            nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);&#xD;            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);&#xD;          }&#xD;        }&#xD;      }&#xD;    } else if (type === &apos;object&apos;) {&#xD;      var addendum = &apos;&apos;;&#xD;      if (true) {&#xD;        addendum = &apos; If you meant to render a collection of children, use an array &apos; + &apos;instead or wrap the object using createFragment(object) from the &apos; + &apos;React add-ons.&apos;;&#xD;        if (children._isReactElement) {&#xD;          addendum = &apos; It looks like you\&apos;re using an element created by a different &apos; + &apos;version of React. Make sure to use only one copy of React.&apos;;&#xD;        }&#xD;        if (ReactCurrentOwner.current) {&#xD;          var name = ReactCurrentOwner.current.getName();&#xD;          if (name) {&#xD;            addendum += &apos; Check the render method of `&apos; + name + &apos;`.&apos;;&#xD;          }&#xD;        }&#xD;      }&#xD;      var childrenString = String(children);&#xD;       true ?  true ? invariant(false, &apos;Objects are not valid as a React child (found: %s).%s&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : _prodInvariant(&apos;31&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : void 0;&#xD;    }&#xD;  }&#xD;&#xD;  return subtreeCount;&#xD;}&#xD;&#xD;/**&#xD; * Traverses children that are typically specified as `props.children`, but&#xD; * might also be specified through attributes:&#xD; *&#xD; * - `traverseAllChildren(this.props.children, ...)`&#xD; * - `traverseAllChildren(this.props.leftPanelChildren, ...)`&#xD; *&#xD; * The `traverseContext` is an optional argument that is passed through the&#xD; * entire traversal. It can be used to store accumulations or anything else that&#xD; * the callback might find relevant.&#xD; *&#xD; * @param {?*} children Children tree object.&#xD; * @param {!function} callback To invoke upon traversing each child.&#xD; * @param {?*} traverseContext Context for traversal.&#xD; * @return {!number} The number of children in this subtree.&#xD; */&#xD;function traverseAllChildren(children, callback, traverseContext) {&#xD;  if (children == null) {&#xD;    return 0;&#xD;  }&#xD;&#xD;  return traverseAllChildrenImpl(children, &apos;&apos;, callback, traverseContext);&#xD;}&#xD;&#xD;module.exports = traverseAllChildren;&#xD;&#xD;/***/ }),&#xD;/* 498 */,&#xD;/* 499 */,&#xD;/* 500 */,&#xD;/* 501 */,&#xD;/* 502 */,&#xD;/* 503 */,&#xD;/* 504 */,&#xD;/* 505 */,&#xD;/* 506 */,&#xD;/* 507 */,&#xD;/* 508 */,&#xD;/* 509 */,&#xD;/* 510 */,&#xD;/* 511 */,&#xD;/* 512 */,&#xD;/* 513 */,&#xD;/* 514 */,&#xD;/* 515 */,&#xD;/* 516 */,&#xD;/* 517 */,&#xD;/* 518 */,&#xD;/* 519 */,&#xD;/* 520 */,&#xD;/* 521 */,&#xD;/* 522 */,&#xD;/* 523 */,&#xD;/* 524 */,&#xD;/* 525 */,&#xD;/* 526 */,&#xD;/* 527 */,&#xD;/* 528 */,&#xD;/* 529 */,&#xD;/* 530 */,&#xD;/* 531 */,&#xD;/* 532 */,&#xD;/* 533 */,&#xD;/* 534 */,&#xD;/* 535 */,&#xD;/* 536 */,&#xD;/* 537 */,&#xD;/* 538 */,&#xD;/* 539 */,&#xD;/* 540 */,&#xD;/* 541 */,&#xD;/* 542 */,&#xD;/* 543 */,&#xD;/* 544 */,&#xD;/* 545 */,&#xD;/* 546 */,&#xD;/* 547 */,&#xD;/* 548 */,&#xD;/* 549 */,&#xD;/* 550 */,&#xD;/* 551 */,&#xD;/* 552 */,&#xD;/* 553 */,&#xD;/* 554 */,&#xD;/* 555 */,&#xD;/* 556 */,&#xD;/* 557 */,&#xD;/* 558 */,&#xD;/* 559 */,&#xD;/* 560 */,&#xD;/* 561 */,&#xD;/* 562 */,&#xD;/* 563 */,&#xD;/* 564 */,&#xD;/* 565 */,&#xD;/* 566 */,&#xD;/* 567 */,&#xD;/* 568 */,&#xD;/* 569 */&#xD;/***/ (function(module, exports, __webpack_require__) {&#xD;&#xD;__webpack_require__(0);&#xD;module.exports = __webpack_require__(37);&#xD;&#xD;&#xD;/***/ })&#xD;/******/ ]);&#xD;//# sourceMappingURL=lib.min.js.map</l></variable><variable name="lib.min.js.map"><l>{"version":3,"file":"lib.min.js","sources":["webpack:///webpack/bootstrap dda26b3298a637c4bed1","webpack:///./&#126;/react/react.js","webpack:///./&#126;/fbjs/lib/invariant.js","webpack:///./&#126;/fbjs/lib/warning.js","webpack:///./&#126;/react-dom/lib/reactProdInvariant.js","webpack:///./&#126;/object-assign/index.js","webpack:///./&#126;/react-dom/lib/ReactDOMComponentTree.js","webpack:///./&#126;/process/browser.js","webpack:///./&#126;/fbjs/lib/ExecutionEnvironment.js","webpack:///./&#126;/react/lib/ReactComponentTreeHook.js","webpack:///./&#126;/react-dom/lib/ReactInstrumentation.js","webpack:///./&#126;/fbjs/lib/emptyFunction.js","webpack:///./&#126;/react-dom/lib/ReactUpdates.js","webpack:///./&#126;/react/lib/ReactCurrentOwner.js","webpack:///./&#126;/react-dom/lib/SyntheticEvent.js","webpack:///./&#126;/react-dom/lib/DOMProperty.js","webpack:///./&#126;/react-dom/lib/PooledClass.js","webpack:///./&#126;/react/lib/ReactElement.js","webpack:///./&#126;/react/lib/reactProdInvariant.js","webpack:///./&#126;/react-dom/index.js","webpack:///./&#126;/fbjs/lib/emptyObject.js","webpack:///./&#126;/react-dom/lib/DOMLazyTree.js","webpack:///./&#126;/react-dom/lib/ReactReconciler.js","webpack:///./&#126;/react/lib/React.js","webpack:///./&#126;/react-dom/lib/EventPluginHub.js","webpack:///./&#126;/react-dom/lib/EventPropagators.js","webpack:///./&#126;/react-dom/lib/ReactInstanceMap.js","webpack:///./&#126;/react-dom/lib/SyntheticUIEvent.js","webpack:///./&#126;/react-dom/lib/EventPluginRegistry.js","webpack:///./&#126;/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./&#126;/react-dom/lib/SyntheticMouseEvent.js","webpack:///./&#126;/react-dom/lib/Transaction.js","webpack:///./&#126;/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./&#126;/react-dom/lib/setInnerHTML.js","webpack:///./&#126;/react/lib/canDefineProperty.js","webpack:///./&#126;/fbjs/lib/shallowEqual.js","webpack:///./&#126;/react-dom/lib/DOMChildrenOperations.js","webpack:///./&#126;/react-dom/lib/DOMNamespaces.js","webpack:///./&#126;/react-dom/lib/EventPluginUtils.js","webpack:///./&#126;/react-dom/lib/KeyEscapeUtils.js","webpack:///./&#126;/react-dom/lib/LinkedValueUtils.js","webpack:///./&#126;/react-dom/lib/ReactComponentEnvironment.js","webpack:///./&#126;/react-dom/lib/ReactErrorUtils.js","webpack:///./&#126;/react-dom/lib/ReactUpdateQueue.js","webpack:///./&#126;/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./&#126;/react-dom/lib/getEventCharCode.js","webpack:///./&#126;/react-dom/lib/getEventModifierState.js","webpack:///./&#126;/react-dom/lib/getEventTarget.js","webpack:///./&#126;/react-dom/lib/isEventSupported.js","webpack:///./&#126;/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./&#126;/react-dom/lib/validateDOMNesting.js","webpack:///./&#126;/react/lib/ReactComponent.js","webpack:///./&#126;/react/lib/ReactNoopUpdateQueue.js","webpack:///./&#126;/fbjs/lib/EventListener.js","webpack:///./&#126;/fbjs/lib/focusNode.js","webpack:///./&#126;/fbjs/lib/getActiveElement.js","webpack:///./&#126;/prop-types/factory.js","webpack:///./&#126;/prop-types/factoryWithTypeCheckers.js","webpack:///./&#126;/prop-types/lib/ReactPropTypesSecret.js","webpack:///./&#126;/react-dom/lib/CSSProperty.js","webpack:///./&#126;/react-dom/lib/CallbackQueue.js","webpack:///./&#126;/react-dom/lib/DOMPropertyOperations.js","webpack:///./&#126;/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./&#126;/react-dom/lib/ReactDOMSelect.js","webpack:///./&#126;/react-dom/lib/ReactEmptyComponent.js","webpack:///./&#126;/react-dom/lib/ReactFeatureFlags.js","webpack:///./&#126;/react-dom/lib/ReactHostComponent.js","webpack:///./&#126;/react-dom/lib/ReactInputSelection.js","webpack:///./&#126;/react-dom/lib/ReactMount.js","webpack:///./&#126;/react-dom/lib/ReactNodeTypes.js","webpack:///./&#126;/react-dom/lib/ReactPropTypesSecret.js","webpack:///./&#126;/react-dom/lib/ViewportMetrics.js","webpack:///./&#126;/react-dom/lib/accumulateInto.js","webpack:///./&#126;/react-dom/lib/forEachAccumulated.js","webpack:///./&#126;/react-dom/lib/getHostComponentFromComposite.js","webpack:///./&#126;/react-dom/lib/getTextContentAccessor.js","webpack:///./&#126;/react-dom/lib/instantiateReactComponent.js","webpack:///./&#126;/react-dom/lib/isTextInputElement.js","webpack:///./&#126;/react-dom/lib/setTextContent.js","webpack:///./&#126;/react-dom/lib/traverseAllChildren.js","webpack:///./&#126;/react/lib/ReactElementSymbol.js","webpack:///./&#126;/react/lib/ReactElementValidator.js","webpack:///./&#126;/react/lib/ReactPropTypeLocationNames.js","webpack:///./&#126;/react/lib/getIteratorFn.js","webpack:///./&#126;/fbjs/lib/camelize.js","webpack:///./&#126;/fbjs/lib/camelizeStyleName.js","webpack:///./&#126;/fbjs/lib/containsNode.js","webpack:///./&#126;/fbjs/lib/createArrayFromMixed.js","webpack:///./&#126;/fbjs/lib/createNodesFromMarkup.js","webpack:///./&#126;/fbjs/lib/getMarkupWrap.js","webpack:///./&#126;/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./&#126;/fbjs/lib/hyphenate.js","webpack:///./&#126;/fbjs/lib/hyphenateStyleName.js","webpack:///./&#126;/fbjs/lib/isNode.js","webpack:///./&#126;/fbjs/lib/isTextNode.js","webpack:///./&#126;/fbjs/lib/memoizeStringOnly.js","webpack:///./&#126;/fbjs/lib/performance.js","webpack:///./&#126;/fbjs/lib/performanceNow.js","webpack:///./&#126;/prop-types/checkPropTypes.js","webpack:///./&#126;/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./&#126;/react-dom/lib/AutoFocusUtils.js","webpack:///./&#126;/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./&#126;/react-dom/lib/CSSPropertyOperations.js","webpack:///./&#126;/react-dom/lib/ChangeEventPlugin.js","webpack:///./&#126;/react-dom/lib/Danger.js","webpack:///./&#126;/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./&#126;/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./&#126;/react-dom/lib/FallbackCompositionState.js","webpack:///./&#126;/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./&#126;/react-dom/lib/ReactChildReconciler.js","webpack:///./&#126;/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./&#126;/react-dom/lib/ReactCompositeComponent.js","webpack:///./&#126;/react-dom/lib/ReactDOM.js","webpack:///./&#126;/react-dom/lib/ReactDOMComponent.js","webpack:///./&#126;/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./&#126;/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./&#126;/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./&#126;/react-dom/lib/ReactDOMIDOperations.js","webpack:///./&#126;/react-dom/lib/ReactDOMInput.js","webpack:///./&#126;/react-dom/lib/ReactDOMInvalidARIAHook.js","webpack:///./&#126;/react-dom/lib/ReactDOMNullInputValuePropHook.js","webpack:///./&#126;/react-dom/lib/ReactDOMOption.js","webpack:///./&#126;/react-dom/lib/ReactDOMSelection.js","webpack:///./&#126;/react-dom/lib/ReactDOMTextComponent.js","webpack:///./&#126;/react-dom/lib/ReactDOMTextarea.js","webpack:///./&#126;/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./&#126;/react-dom/lib/ReactDOMUnknownPropertyHook.js","webpack:///./&#126;/react-dom/lib/ReactDebugTool.js","webpack:///./&#126;/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./&#126;/react-dom/lib/ReactDefaultInjection.js","webpack:///./&#126;/react-dom/lib/ReactElementSymbol.js","webpack:///./&#126;/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./&#126;/react-dom/lib/ReactEventListener.js","webpack:///./&#126;/react-dom/lib/ReactHostOperationHistoryHook.js","webpack:///./&#126;/react-dom/lib/ReactInjection.js","webpack:///./&#126;/react-dom/lib/ReactInvalidSetStateWarningHook.js","webpack:///./&#126;/react-dom/lib/ReactMarkupChecksum.js","webpack:///./&#126;/react-dom/lib/ReactMultiChild.js","webpack:///./&#126;/react-dom/lib/ReactOwner.js","webpack:///./&#126;/react-dom/lib/ReactPropTypeLocationNames.js","webpack:///./&#126;/react-dom/lib/ReactReconcileTransaction.js","webpack:///./&#126;/react-dom/lib/ReactRef.js","webpack:///./&#126;/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./&#126;/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./&#126;/react-dom/lib/ReactVersion.js","webpack:///./&#126;/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./&#126;/react-dom/lib/SelectEventPlugin.js","webpack:///./&#126;/react-dom/lib/SimpleEventPlugin.js","webpack:///./&#126;/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticDragEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticFocusEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticInputEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticTouchEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./&#126;/react-dom/lib/SyntheticWheelEvent.js","webpack:///./&#126;/react-dom/lib/adler32.js","webpack:///./&#126;/react-dom/lib/checkReactTypeSpec.js","webpack:///./&#126;/react-dom/lib/dangerousStyleValue.js","webpack:///./&#126;/react-dom/lib/findDOMNode.js","webpack:///./&#126;/react-dom/lib/flattenChildren.js","webpack:///./&#126;/react-dom/lib/getEventKey.js","webpack:///./&#126;/react-dom/lib/getIteratorFn.js","webpack:///./&#126;/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./&#126;/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./&#126;/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./&#126;/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./&#126;/react/lib/KeyEscapeUtils.js","webpack:///./&#126;/react/lib/PooledClass.js","webpack:///./&#126;/react/lib/ReactChildren.js","webpack:///./&#126;/react/lib/ReactClass.js","webpack:///./&#126;/react/lib/ReactDOMFactories.js","webpack:///./&#126;/react/lib/ReactPropTypes.js","webpack:///./&#126;/react/lib/ReactPropTypesSecret.js","webpack:///./&#126;/react/lib/ReactPureComponent.js","webpack:///./&#126;/react/lib/ReactVersion.js","webpack:///./&#126;/react/lib/checkReactTypeSpec.js","webpack:///./&#126;/react/lib/getNextDebugID.js","webpack:///./&#126;/react/lib/onlyChild.js","webpack:///./&#126;/react/lib/traverseAllChildren.js"],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i &lt; chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i &lt; executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tif(installedChunks[chunkId] === 0) {\n \t\t\treturn Promise.resolve();\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunks[chunkId]) {\n \t\t\treturn installedChunks[chunkId][2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunks[chunkId][2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName(&apos;head&apos;)[0];\n \t\tvar script = document.createElement(&apos;script&apos;);\n \t\tscript.type = &apos;text/javascript&apos;;\n \t\tscript.charset = &apos;utf-8&apos;;\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error(&apos;Loading chunk &apos; + chunkId + &apos; failed.&apos;));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module &amp;&amp; module.__esModule ?\n \t\t\tfunction getDefault() { return module[&apos;default&apos;]; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, &apos;a&apos;, getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 569);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap dda26b3298a637c4bed1","&apos;use strict&apos;;\n\nmodule.exports = require(&apos;./lib/React&apos;);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/react.js\n// module id = 0\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  validateFormat = function validateFormat(format) {\n    if (format === undefined) {\n      throw new Error(&apos;invariant requires an error message argument&apos;);\n    }\n  };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n  validateFormat(format);\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(&apos;Minified exception occurred; use the non-minified dev environment &apos; + &apos;for the full error message and additional helpful warnings.&apos;);\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(format.replace(/%s/g, function () {\n        return args[argIndex++];\n      }));\n      error.name = &apos;Invariant Violation&apos;;\n    }\n\n    error.framesToPop = 1; // we don&apos;t care about invariant&apos;s own frame\n    throw error;\n  }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/invariant.js\n// module id = 3\n// module chunks = 1","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar emptyFunction = require(&apos;./emptyFunction&apos;);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  (function () {\n    var printWarning = function printWarning(format) {\n      for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      var argIndex = 0;\n      var message = &apos;Warning: &apos; + format.replace(/%s/g, function () {\n        return args[argIndex++];\n      });\n      if (typeof console !== &apos;undefined&apos;) {\n        console.error(message);\n      }\n      try {\n        // --- Welcome to debugging React ---\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch (x) {}\n    };\n\n    warning = function warning(condition, format) {\n      if (format === undefined) {\n        throw new Error(&apos;`warning(condition, format, ...args)` requires a warning &apos; + &apos;message argument&apos;);\n      }\n\n      if (format.indexOf(&apos;Failed Composite propType: &apos;) === 0) {\n        return; // Ignore CompositeComponent proptype check.\n      }\n\n      if (!condition) {\n        for (var _len2 = arguments.length, args = Array(_len2 &gt; 2 ? _len2 - 2 : 0), _key2 = 2; _key2 &lt; _len2; _key2++) {\n          args[_key2 - 2] = arguments[_key2];\n        }\n\n        printWarning.apply(undefined, [format].concat(args));\n      }\n    };\n  })();\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/warning.js\n// module id = 4\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n&apos;use strict&apos;;\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n  var argCount = arguments.length - 1;\n\n  var message = &apos;Minified React error #&apos; + code + &apos;; visit &apos; + &apos;http://facebook.github.io/react/docs/error-decoder.html?invariant=&apos; + code;\n\n  for (var argIdx = 0; argIdx &lt; argCount; argIdx++) {\n    message += &apos;&amp;args[]=&apos; + encodeURIComponent(arguments[argIdx + 1]);\n  }\n\n  message += &apos; for the full message or use the non-minified dev environment&apos; + &apos; for full errors and additional helpful warnings.&apos;;\n\n  var error = new Error(message);\n  error.name = &apos;Invariant Violation&apos;;\n  error.framesToPop = 1; // we don&apos;t care about reactProdInvariant&apos;s own frame\n\n  throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/reactProdInvariant.js\n// module id = 6\n// module chunks = 1","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n&apos;use strict&apos;;\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError(&apos;Object.assign cannot be called with null or undefined&apos;);\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String(&apos;abc&apos;);  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = &apos;de&apos;;\n\t\tif (Object.getOwnPropertyNames(test1)[0] === &apos;5&apos;) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i &lt; 10; i++) {\n\t\t\ttest2[&apos;_&apos; + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join(&apos;&apos;) !== &apos;0123456789&apos;) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t&apos;abcdefghijklmnopqrst&apos;.split(&apos;&apos;).forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join(&apos;&apos;) !==\n\t\t\t\t&apos;abcdefghijklmnopqrst&apos;) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don&apos;t expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s &lt; arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i &lt; symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/object-assign/index.js\n// module id = 10\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar ReactDOMComponentFlags = require(&apos;./ReactDOMComponentFlags&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = &apos;__reactInternalInstance$&apos; + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n  return node.nodeType === 1 &amp;&amp; node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; react-text: &apos; + nodeID + &apos; &apos; || node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; react-empty: &apos; + nodeID + &apos; &apos;;\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n  var rendered;\n  while (rendered = component._renderedComponent) {\n    component = rendered;\n  }\n  return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n  var hostInst = getRenderedHostOrTextFromComponent(inst);\n  hostInst._hostNode = node;\n  node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n  var node = inst._hostNode;\n  if (node) {\n    delete node[internalInstanceKey];\n    inst._hostNode = null;\n  }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container&apos;s child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n  if (inst._flags &amp; Flags.hasCachedChildNodes) {\n    return;\n  }\n  var children = inst._renderedChildren;\n  var childNode = node.firstChild;\n  outer: for (var name in children) {\n    if (!children.hasOwnProperty(name)) {\n      continue;\n    }\n    var childInst = children[name];\n    var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n    if (childID === 0) {\n      // We&apos;re currently unmounting this child in ReactMultiChild; skip it.\n      continue;\n    }\n    // We assume the child nodes are in the same order as the child instances.\n    for (; childNode !== null; childNode = childNode.nextSibling) {\n      if (shouldPrecacheNode(childNode, childID)) {\n        precacheNode(childInst, childNode);\n        continue outer;\n      }\n    }\n    // We reached the end of the DOM children without finding an ID match.\n    !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Unable to find element with ID %s.&apos;, childID) : _prodInvariant(&apos;32&apos;, childID) : void 0;\n  }\n  inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n  if (node[internalInstanceKey]) {\n    return node[internalInstanceKey];\n  }\n\n  // Walk up the tree until we find an ancestor whose instance we have cached.\n  var parents = [];\n  while (!node[internalInstanceKey]) {\n    parents.push(node);\n    if (node.parentNode) {\n      node = node.parentNode;\n    } else {\n      // Top of the tree. This node must not be part of a React tree (or is\n      // unmounted, potentially).\n      return null;\n    }\n  }\n\n  var closest;\n  var inst;\n  for (; node &amp;&amp; (inst = node[internalInstanceKey]); node = parents.pop()) {\n    closest = inst;\n    if (parents.length) {\n      precacheChildNodes(inst, node);\n    }\n  }\n\n  return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n  var inst = getClosestInstanceFromNode(node);\n  if (inst != null &amp;&amp; inst._hostNode === node) {\n    return inst;\n  } else {\n    return null;\n  }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n  // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n  !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;\n\n  if (inst._hostNode) {\n    return inst._hostNode;\n  }\n\n  // Walk up the tree until we find an ancestor whose DOM node we have cached.\n  var parents = [];\n  while (!inst._hostNode) {\n    parents.push(inst);\n    !inst._hostParent ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;React DOM tree root should always have a node reference.&apos;) : _prodInvariant(&apos;34&apos;) : void 0;\n    inst = inst._hostParent;\n  }\n\n  // Now parents contains each ancestor that does *not* have a cached native\n  // node, and `inst` is the deepest ancestor that does.\n  for (; parents.length; inst = parents.pop()) {\n    precacheChildNodes(inst, inst._hostNode);\n  }\n\n  return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n  getClosestInstanceFromNode: getClosestInstanceFromNode,\n  getInstanceFromNode: getInstanceFromNode,\n  getNodeFromInstance: getNodeFromInstance,\n  precacheChildNodes: precacheChildNodes,\n  precacheNode: precacheNode,\n  uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMComponentTree.js\n// module id = 12\n// module chunks = 1","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don&apos;t break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn&apos;t define any globals.  It&apos;s inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error(&apos;setTimeout has not been defined&apos;);\n}\nfunction defaultClearTimeout () {\n    throw new Error(&apos;clearTimeout has not been defined&apos;);\n}\n(function () {\n    try {\n        if (typeof setTimeout === &apos;function&apos;) {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === &apos;function&apos;) {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn&apos;t available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) &amp;&amp; setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn&apos;t available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) &amp;&amp; clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn&apos;t  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it&apos;s a version of I.E. that must have the global object for &apos;this&apos;, hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex &lt; len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length &gt; 1) {\n        for (var i = 1; i &lt; arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 &amp;&amp; !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = &apos;browser&apos;;\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = &apos;&apos;; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n    throw new Error(&apos;process.binding is not supported&apos;);\n};\n\nprocess.cwd = function () { return &apos;/&apos; };\nprocess.chdir = function (dir) {\n    throw new Error(&apos;process.chdir is not supported&apos;);\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/process/browser.js\n// module id = 14\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar canUseDOM = !!(typeof window !== &apos;undefined&apos; &amp;&amp; window.document &amp;&amp; window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n  canUseDOM: canUseDOM,\n\n  canUseWorkers: typeof Worker !== &apos;undefined&apos;,\n\n  canUseEventListeners: canUseDOM &amp;&amp; !!(window.addEventListener || window.attachEvent),\n\n  canUseViewport: canUseDOM &amp;&amp; !!window.screen,\n\n  isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/ExecutionEnvironment.js\n// module id = 15\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactCurrentOwner = require(&apos;./ReactCurrentOwner&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nfunction isNative(fn) {\n  // Based on isNative() from Lodash\n  var funcToString = Function.prototype.toString;\n  var hasOwnProperty = Object.prototype.hasOwnProperty;\n  var reIsNative = RegExp(&apos;^&apos; + funcToString\n  // Take an example native function source for comparison\n  .call(hasOwnProperty)\n  // Strip regex characters so we can use it for regex\n  .replace(/[\\\\^$.*+?()[\\]{}|]/g, &apos;\\\\$&amp;&apos;)\n  // Remove hasOwnProperty from the template to make it generic\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, &apos;$1.*?&apos;) + &apos;$&apos;);\n  try {\n    var source = funcToString.call(fn);\n    return reIsNative.test(source);\n  } catch (err) {\n    return false;\n  }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === &apos;function&apos; &amp;&amp;\n// Map\ntypeof Map === &apos;function&apos; &amp;&amp; isNative(Map) &amp;&amp;\n// Map.prototype.keys\nMap.prototype != null &amp;&amp; typeof Map.prototype.keys === &apos;function&apos; &amp;&amp; isNative(Map.prototype.keys) &amp;&amp;\n// Set\ntypeof Set === &apos;function&apos; &amp;&amp; isNative(Set) &amp;&amp;\n// Set.prototype.keys\nSet.prototype != null &amp;&amp; typeof Set.prototype.keys === &apos;function&apos; &amp;&amp; isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n  var itemMap = new Map();\n  var rootIDSet = new Set();\n\n  setItem = function (id, item) {\n    itemMap.set(id, item);\n  };\n  getItem = function (id) {\n    return itemMap.get(id);\n  };\n  removeItem = function (id) {\n    itemMap[&apos;delete&apos;](id);\n  };\n  getItemIDs = function () {\n    return Array.from(itemMap.keys());\n  };\n\n  addRoot = function (id) {\n    rootIDSet.add(id);\n  };\n  removeRoot = function (id) {\n    rootIDSet[&apos;delete&apos;](id);\n  };\n  getRootIDs = function () {\n    return Array.from(rootIDSet.keys());\n  };\n} else {\n  var itemByKey = {};\n  var rootByKey = {};\n\n  // Use non-numeric keys to prevent V8 performance issues:\n  // https://github.com/facebook/react/pull/7232\n  var getKeyFromID = function (id) {\n    return &apos;.&apos; + id;\n  };\n  var getIDFromKey = function (key) {\n    return parseInt(key.substr(1), 10);\n  };\n\n  setItem = function (id, item) {\n    var key = getKeyFromID(id);\n    itemByKey[key] = item;\n  };\n  getItem = function (id) {\n    var key = getKeyFromID(id);\n    return itemByKey[key];\n  };\n  removeItem = function (id) {\n    var key = getKeyFromID(id);\n    delete itemByKey[key];\n  };\n  getItemIDs = function () {\n    return Object.keys(itemByKey).map(getIDFromKey);\n  };\n\n  addRoot = function (id) {\n    var key = getKeyFromID(id);\n    rootByKey[key] = true;\n  };\n  removeRoot = function (id) {\n    var key = getKeyFromID(id);\n    delete rootByKey[key];\n  };\n  getRootIDs = function () {\n    return Object.keys(rootByKey).map(getIDFromKey);\n  };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n  var item = getItem(id);\n  if (item) {\n    var childIDs = item.childIDs;\n\n    removeItem(id);\n    childIDs.forEach(purgeDeep);\n  }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n  return &apos;\\n    in &apos; + (name || &apos;Unknown&apos;) + (source ? &apos; (at &apos; + source.fileName.replace(/^.*[\\\\\\/]/, &apos;&apos;) + &apos;:&apos; + source.lineNumber + &apos;)&apos; : ownerName ? &apos; (created by &apos; + ownerName + &apos;)&apos; : &apos;&apos;);\n}\n\nfunction getDisplayName(element) {\n  if (element == null) {\n    return &apos;#empty&apos;;\n  } else if (typeof element === &apos;string&apos; || typeof element === &apos;number&apos;) {\n    return &apos;#text&apos;;\n  } else if (typeof element.type === &apos;string&apos;) {\n    return element.type;\n  } else {\n    return element.type.displayName || element.type.name || &apos;Unknown&apos;;\n  }\n}\n\nfunction describeID(id) {\n  var name = ReactComponentTreeHook.getDisplayName(id);\n  var element = ReactComponentTreeHook.getElement(id);\n  var ownerID = ReactComponentTreeHook.getOwnerID(id);\n  var ownerName;\n  if (ownerID) {\n    ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n  }\n  process.env.NODE_ENV !== &apos;production&apos; ? warning(element, &apos;ReactComponentTreeHook: Missing React element for debugID %s when &apos; + &apos;building stack&apos;, id) : void 0;\n  return describeComponentFrame(name, element &amp;&amp; element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n  onSetChildren: function (id, nextChildIDs) {\n    var item = getItem(id);\n    !item ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Item must have been set&apos;) : _prodInvariant(&apos;144&apos;) : void 0;\n    item.childIDs = nextChildIDs;\n\n    for (var i = 0; i &lt; nextChildIDs.length; i++) {\n      var nextChildID = nextChildIDs[i];\n      var nextChild = getItem(nextChildID);\n      !nextChild ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected hook events to fire for the child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;140&apos;) : void 0;\n      !(nextChild.childIDs != null || typeof nextChild.element !== &apos;object&apos; || nextChild.element == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;141&apos;) : void 0;\n      !nextChild.isMounted ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().&apos;) : _prodInvariant(&apos;71&apos;) : void 0;\n      if (nextChild.parentID == null) {\n        nextChild.parentID = id;\n        // TODO: This shouldn&apos;t be necessary but mounting a new root during in\n        // componentWillMount currently causes not-yet-mounted components to\n        // be purged from our tree data so their parent id is missing.\n      }\n      !(nextChild.parentID === id) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).&apos;, nextChildID, nextChild.parentID, id) : _prodInvariant(&apos;142&apos;, nextChildID, nextChild.parentID, id) : void 0;\n    }\n  },\n  onBeforeMountComponent: function (id, element, parentID) {\n    var item = {\n      element: element,\n      parentID: parentID,\n      text: null,\n      childIDs: [],\n      isMounted: false,\n      updateCount: 0\n    };\n    setItem(id, item);\n  },\n  onBeforeUpdateComponent: function (id, element) {\n    var item = getItem(id);\n    if (!item || !item.isMounted) {\n      // We may end up here as a result of setState() in componentWillUnmount().\n      // In this case, ignore the element.\n      return;\n    }\n    item.element = element;\n  },\n  onMountComponent: function (id) {\n    var item = getItem(id);\n    !item ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Item must have been set&apos;) : _prodInvariant(&apos;144&apos;) : void 0;\n    item.isMounted = true;\n    var isRoot = item.parentID === 0;\n    if (isRoot) {\n      addRoot(id);\n    }\n  },\n  onUpdateComponent: function (id) {\n    var item = getItem(id);\n    if (!item || !item.isMounted) {\n      // We may end up here as a result of setState() in componentWillUnmount().\n      // In this case, ignore the element.\n      return;\n    }\n    item.updateCount++;\n  },\n  onUnmountComponent: function (id) {\n    var item = getItem(id);\n    if (item) {\n      // We need to check if it exists.\n      // `item` might not exist if it is inside an error boundary, and a sibling\n      // error boundary child threw while mounting. Then this instance never\n      // got a chance to mount, but it still gets an unmounting event during\n      // the error boundary cleanup.\n      item.isMounted = false;\n      var isRoot = item.parentID === 0;\n      if (isRoot) {\n        removeRoot(id);\n      }\n    }\n    unmountedIDs.push(id);\n  },\n  purgeUnmountedComponents: function () {\n    if (ReactComponentTreeHook._preventPurging) {\n      // Should only be used for testing.\n      return;\n    }\n\n    for (var i = 0; i &lt; unmountedIDs.length; i++) {\n      var id = unmountedIDs[i];\n      purgeDeep(id);\n    }\n    unmountedIDs.length = 0;\n  },\n  isMounted: function (id) {\n    var item = getItem(id);\n    return item ? item.isMounted : false;\n  },\n  getCurrentStackAddendum: function (topElement) {\n    var info = &apos;&apos;;\n    if (topElement) {\n      var name = getDisplayName(topElement);\n      var owner = topElement._owner;\n      info += describeComponentFrame(name, topElement._source, owner &amp;&amp; owner.getName());\n    }\n\n    var currentOwner = ReactCurrentOwner.current;\n    var id = currentOwner &amp;&amp; currentOwner._debugID;\n\n    info += ReactComponentTreeHook.getStackAddendumByID(id);\n    return info;\n  },\n  getStackAddendumByID: function (id) {\n    var info = &apos;&apos;;\n    while (id) {\n      info += describeID(id);\n      id = ReactComponentTreeHook.getParentID(id);\n    }\n    return info;\n  },\n  getChildIDs: function (id) {\n    var item = getItem(id);\n    return item ? item.childIDs : [];\n  },\n  getDisplayName: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (!element) {\n      return null;\n    }\n    return getDisplayName(element);\n  },\n  getElement: function (id) {\n    var item = getItem(id);\n    return item ? item.element : null;\n  },\n  getOwnerID: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (!element || !element._owner) {\n      return null;\n    }\n    return element._owner._debugID;\n  },\n  getParentID: function (id) {\n    var item = getItem(id);\n    return item ? item.parentID : null;\n  },\n  getSource: function (id) {\n    var item = getItem(id);\n    var element = item ? item.element : null;\n    var source = element != null ? element._source : null;\n    return source;\n  },\n  getText: function (id) {\n    var element = ReactComponentTreeHook.getElement(id);\n    if (typeof element === &apos;string&apos;) {\n      return element;\n    } else if (typeof element === &apos;number&apos;) {\n      return &apos;&apos; + element;\n    } else {\n      return null;\n    }\n  },\n  getUpdateCount: function (id) {\n    var item = getItem(id);\n    return item ? item.updateCount : 0;\n  },\n\n\n  getRootIDs: getRootIDs,\n  getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactComponentTreeHook.js\n// module id = 20\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var ReactDebugTool = require(&apos;./ReactDebugTool&apos;);\n  debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactInstrumentation.js\n// module id = 21\n// module chunks = 1","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n  return function () {\n    return arg;\n  };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n  return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n  return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/emptyFunction.js\n// module id = 22\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar CallbackQueue = require(&apos;./CallbackQueue&apos;);\nvar PooledClass = require(&apos;./PooledClass&apos;);\nvar ReactFeatureFlags = require(&apos;./ReactFeatureFlags&apos;);\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\nvar Transaction = require(&apos;./Transaction&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n  !(ReactUpdates.ReactReconcileTransaction &amp;&amp; batchingStrategy) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates: must inject a reconcile transaction class and batching strategy&apos;) : _prodInvariant(&apos;123&apos;) : void 0;\n}\n\nvar NESTED_UPDATES = {\n  initialize: function () {\n    this.dirtyComponentsLength = dirtyComponents.length;\n  },\n  close: function () {\n    if (this.dirtyComponentsLength !== dirtyComponents.length) {\n      // Additional updates were enqueued by componentDidUpdate handlers or\n      // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n      // these new updates so that if A&apos;s componentDidUpdate calls setState on\n      // B, B will update before the callback A&apos;s updater provided when calling\n      // setState.\n      dirtyComponents.splice(0, this.dirtyComponentsLength);\n      flushBatchedUpdates();\n    } else {\n      dirtyComponents.length = 0;\n    }\n  }\n};\n\nvar UPDATE_QUEUEING = {\n  initialize: function () {\n    this.callbackQueue.reset();\n  },\n  close: function () {\n    this.callbackQueue.notifyAll();\n  }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n  this.reinitializeTransaction();\n  this.dirtyComponentsLength = null;\n  this.callbackQueue = CallbackQueue.getPooled();\n  this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n  /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n  getTransactionWrappers: function () {\n    return TRANSACTION_WRAPPERS;\n  },\n\n  destructor: function () {\n    this.dirtyComponentsLength = null;\n    CallbackQueue.release(this.callbackQueue);\n    this.callbackQueue = null;\n    ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n    this.reconcileTransaction = null;\n  },\n\n  perform: function (method, scope, a) {\n    // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n    // with this transaction&apos;s wrappers around it.\n    return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n  }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n  ensureInjected();\n  return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you&apos;re comparing\n * @param {ReactComponent} c2 second component you&apos;re comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n  return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n  var len = transaction.dirtyComponentsLength;\n  !(len === dirtyComponents.length) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected flush transaction\\&apos;s stored dirty-components length (%s) to match dirty-components array length (%s).&apos;, len, dirtyComponents.length) : _prodInvariant(&apos;124&apos;, len, dirtyComponents.length) : void 0;\n\n  // Since reconciling a component higher in the owner hierarchy usually (not\n  // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n  // them before their children by sorting the array.\n  dirtyComponents.sort(mountOrderComparator);\n\n  // Any updates enqueued while reconciling must be performed after this entire\n  // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n  // C, B could update twice in a single batch if C&apos;s render enqueues an update\n  // to B (since B would have already updated, we should skip it, and the only\n  // way we can know to do so is by checking the batch counter).\n  updateBatchNumber++;\n\n  for (var i = 0; i &lt; len; i++) {\n    // If a component is unmounted before pending changes apply, it will still\n    // be here, but we assume that it has cleared its _pendingCallbacks and\n    // that performUpdateIfNecessary is a noop.\n    var component = dirtyComponents[i];\n\n    // If performUpdateIfNecessary happens to enqueue any new updates, we\n    // shouldn&apos;t execute the callbacks until the next render happens, so\n    // stash the callbacks first\n    var callbacks = component._pendingCallbacks;\n    component._pendingCallbacks = null;\n\n    var markerName;\n    if (ReactFeatureFlags.logTopLevelRenders) {\n      var namedComponent = component;\n      // Duck type TopLevelWrapper. This is probably always true.\n      if (component._currentElement.type.isReactTopLevelWrapper) {\n        namedComponent = component._renderedComponent;\n      }\n      markerName = &apos;React update: &apos; + namedComponent.getName();\n      console.time(markerName);\n    }\n\n    ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n    if (markerName) {\n      console.timeEnd(markerName);\n    }\n\n    if (callbacks) {\n      for (var j = 0; j &lt; callbacks.length; j++) {\n        transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n      }\n    }\n  }\n}\n\nvar flushBatchedUpdates = function () {\n  // ReactUpdatesFlushTransaction&apos;s wrappers will clear the dirtyComponents\n  // array and perform any updates enqueued by mount-ready handlers (i.e.,\n  // componentDidUpdate) but we need to check here too in order to catch\n  // updates enqueued by setState callbacks and asap calls.\n  while (dirtyComponents.length || asapEnqueued) {\n    if (dirtyComponents.length) {\n      var transaction = ReactUpdatesFlushTransaction.getPooled();\n      transaction.perform(runBatchedUpdates, null, transaction);\n      ReactUpdatesFlushTransaction.release(transaction);\n    }\n\n    if (asapEnqueued) {\n      asapEnqueued = false;\n      var queue = asapCallbackQueue;\n      asapCallbackQueue = CallbackQueue.getPooled();\n      queue.notifyAll();\n      CallbackQueue.release(queue);\n    }\n  }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n  ensureInjected();\n\n  // Various parts of our code (such as ReactCompositeComponent&apos;s\n  // _renderValidatedComponent) assume that calls to render aren&apos;t nested;\n  // verify that that&apos;s the case. (This is called by each top-level update\n  // function, like setState, forceUpdate, etc.; creation and\n  // destruction of top-level components is guarded in ReactMount.)\n\n  if (!batchingStrategy.isBatchingUpdates) {\n    batchingStrategy.batchedUpdates(enqueueUpdate, component);\n    return;\n  }\n\n  dirtyComponents.push(component);\n  if (component._updateBatchNumber == null) {\n    component._updateBatchNumber = updateBatchNumber + 1;\n  }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n  !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates.asap: Can\\&apos;t enqueue an asap callback in a context whereupdates are not being batched.&apos;) : _prodInvariant(&apos;125&apos;) : void 0;\n  asapCallbackQueue.enqueue(callback, context);\n  asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n  injectReconcileTransaction: function (ReconcileTransaction) {\n    !ReconcileTransaction ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates: must provide a reconcile transaction class&apos;) : _prodInvariant(&apos;126&apos;) : void 0;\n    ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n  },\n\n  injectBatchingStrategy: function (_batchingStrategy) {\n    !_batchingStrategy ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates: must provide a batching strategy&apos;) : _prodInvariant(&apos;127&apos;) : void 0;\n    !(typeof _batchingStrategy.batchedUpdates === &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates: must provide a batchedUpdates() function&apos;) : _prodInvariant(&apos;128&apos;) : void 0;\n    !(typeof _batchingStrategy.isBatchingUpdates === &apos;boolean&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactUpdates: must provide an isBatchingUpdates boolean attribute&apos;) : _prodInvariant(&apos;129&apos;) : void 0;\n    batchingStrategy = _batchingStrategy;\n  }\n};\n\nvar ReactUpdates = {\n  /**\n   * React references `ReactReconcileTransaction` using this property in order\n   * to allow dependency injection.\n   *\n   * @internal\n   */\n  ReactReconcileTransaction: null,\n\n  batchedUpdates: batchedUpdates,\n  enqueueUpdate: enqueueUpdate,\n  flushBatchedUpdates: flushBatchedUpdates,\n  injection: ReactUpdatesInjection,\n  asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactUpdates.js\n// module id = 24\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactCurrentOwner.js\n// module id = 25\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar PooledClass = require(&apos;./PooledClass&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === &apos;function&apos;;\n\nvar shouldBeReleasedProperties = [&apos;dispatchConfig&apos;, &apos;_targetInst&apos;, &apos;nativeEvent&apos;, &apos;isDefaultPrevented&apos;, &apos;isPropagationStopped&apos;, &apos;_dispatchListeners&apos;, &apos;_dispatchInstances&apos;];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n  type: null,\n  target: null,\n  // currentTarget is set when dispatching; no use in copying it here\n  currentTarget: emptyFunction.thatReturnsNull,\n  eventPhase: null,\n  bubbles: null,\n  cancelable: null,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: null,\n  isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    // these have a getter/setter for warnings\n    delete this.nativeEvent;\n    delete this.preventDefault;\n    delete this.stopPropagation;\n  }\n\n  this.dispatchConfig = dispatchConfig;\n  this._targetInst = targetInst;\n  this.nativeEvent = nativeEvent;\n\n  var Interface = this.constructor.Interface;\n  for (var propName in Interface) {\n    if (!Interface.hasOwnProperty(propName)) {\n      continue;\n    }\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      delete this[propName]; // this has a getter/setter for warnings\n    }\n    var normalize = Interface[propName];\n    if (normalize) {\n      this[propName] = normalize(nativeEvent);\n    } else {\n      if (propName === &apos;target&apos;) {\n        this.target = nativeEventTarget;\n      } else {\n        this[propName] = nativeEvent[propName];\n      }\n    }\n  }\n\n  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n  if (defaultPrevented) {\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  } else {\n    this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n  }\n  this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n  return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n  preventDefault: function () {\n    this.defaultPrevented = true;\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.preventDefault) {\n      event.preventDefault();\n    } else if (typeof event.returnValue !== &apos;unknown&apos;) {\n      // eslint-disable-line valid-typeof\n      event.returnValue = false;\n    }\n    this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n  },\n\n  stopPropagation: function () {\n    var event = this.nativeEvent;\n    if (!event) {\n      return;\n    }\n\n    if (event.stopPropagation) {\n      event.stopPropagation();\n    } else if (typeof event.cancelBubble !== &apos;unknown&apos;) {\n      // eslint-disable-line valid-typeof\n      // The ChangeEventPlugin registers a \"propertychange\" event for\n      // IE. This event does not support bubbling or cancelling, and\n      // any references to cancelBubble throw \"Member not found\".  A\n      // typeof check of \"unknown\" circumvents this issue (and is also\n      // IE specific).\n      event.cancelBubble = true;\n    }\n\n    this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * We release all dispatched `SyntheticEvent`s after each event loop, adding\n   * them back into the pool. This allows a way to hold onto a reference that\n   * won&apos;t be added back into the pool.\n   */\n  persist: function () {\n    this.isPersistent = emptyFunction.thatReturnsTrue;\n  },\n\n  /**\n   * Checks if this event should be released back into the pool.\n   *\n   * @return {boolean} True if this should not be released, false otherwise.\n   */\n  isPersistent: emptyFunction.thatReturnsFalse,\n\n  /**\n   * `PooledClass` looks for `destructor` on each instance it releases.\n   */\n  destructor: function () {\n    var Interface = this.constructor.Interface;\n    for (var propName in Interface) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n      } else {\n        this[propName] = null;\n      }\n    }\n    for (var i = 0; i &lt; shouldBeReleasedProperties.length; i++) {\n      this[shouldBeReleasedProperties[i]] = null;\n    }\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      Object.defineProperty(this, &apos;nativeEvent&apos;, getPooledWarningPropertyDefinition(&apos;nativeEvent&apos;, null));\n      Object.defineProperty(this, &apos;preventDefault&apos;, getPooledWarningPropertyDefinition(&apos;preventDefault&apos;, emptyFunction));\n      Object.defineProperty(this, &apos;stopPropagation&apos;, getPooledWarningPropertyDefinition(&apos;stopPropagation&apos;, emptyFunction));\n    }\n  }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  if (isProxySupported) {\n    /*eslint-disable no-func-assign */\n    SyntheticEvent = new Proxy(SyntheticEvent, {\n      construct: function (target, args) {\n        return this.apply(target, Object.create(target.prototype), args);\n      },\n      apply: function (constructor, that, args) {\n        return new Proxy(constructor.apply(that, args), {\n          set: function (target, prop, value) {\n            if (prop !== &apos;isPersistent&apos; &amp;&amp; !target.constructor.Interface.hasOwnProperty(prop) &amp;&amp; shouldBeReleasedProperties.indexOf(prop) === -1) {\n              process.env.NODE_ENV !== &apos;production&apos; ? warning(didWarnForAddedNewProperty || target.isPersistent(), &apos;This synthetic event is reused for performance reasons. If you\\&apos;re &apos; + &apos;seeing this, you\\&apos;re adding a new property in the synthetic event object. &apos; + &apos;The property is never released. See &apos; + &apos;https://fb.me/react-event-pooling for more information.&apos;) : void 0;\n              didWarnForAddedNewProperty = true;\n            }\n            target[prop] = value;\n            return true;\n          }\n        });\n      }\n    });\n    /*eslint-enable no-func-assign */\n  }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n  var Super = this;\n\n  var E = function () {};\n  E.prototype = Super.prototype;\n  var prototype = new E();\n\n  _assign(prototype, Class.prototype);\n  Class.prototype = prototype;\n  Class.prototype.constructor = Class;\n\n  Class.Interface = _assign({}, Super.Interface, Interface);\n  Class.augmentClass = Super.augmentClass;\n\n  PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n  * Helper to nullify syntheticEvent instance properties when destructing\n  *\n  * @param {object} SyntheticEvent\n  * @param {String} propName\n  * @return {object} defineProperty object\n  */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n  var isFunction = typeof getVal === &apos;function&apos;;\n  return {\n    configurable: true,\n    set: set,\n    get: get\n  };\n\n  function set(val) {\n    var action = isFunction ? &apos;setting the method&apos; : &apos;setting the property&apos;;\n    warn(action, &apos;This is effectively a no-op&apos;);\n    return val;\n  }\n\n  function get() {\n    var action = isFunction ? &apos;accessing the method&apos; : &apos;accessing the property&apos;;\n    var result = isFunction ? &apos;This is a no-op function&apos; : &apos;This is set to null&apos;;\n    warn(action, result);\n    return getVal;\n  }\n\n  function warn(action, result) {\n    var warningCondition = false;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(warningCondition, &apos;This synthetic event is reused for performance reasons. If you\\&apos;re seeing this, &apos; + &apos;you\\&apos;re %s `%s` on a released/nullified synthetic event. %s. &apos; + &apos;If you must keep the original synthetic event around, use event.persist(). &apos; + &apos;See https://fb.me/react-event-pooling for more information.&apos;, action, propName, result) : void 0;\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticEvent.js\n// module id = 26\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nfunction checkMask(value, bitmask) {\n  return (value &amp; bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n  /**\n   * Mapping from normalized, camelcased property names to a configuration that\n   * specifies how the associated DOM property should be accessed or rendered.\n   */\n  MUST_USE_PROPERTY: 0x1,\n  HAS_BOOLEAN_VALUE: 0x4,\n  HAS_NUMERIC_VALUE: 0x8,\n  HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n  HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n  /**\n   * Inject some specialized knowledge about the DOM. This takes a config object\n   * with the following properties:\n   *\n   * isCustomAttribute: function that given an attribute name will return true\n   * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n   * attributes where it&apos;s impossible to enumerate all of the possible\n   * attribute names,\n   *\n   * Properties: object mapping DOM property name to one of the\n   * DOMPropertyInjection constants or null. If your attribute isn&apos;t in here,\n   * it won&apos;t get written to the DOM.\n   *\n   * DOMAttributeNames: object mapping React attribute name to the DOM\n   * attribute name. Attribute names not specified use the **lowercase**\n   * normalized name.\n   *\n   * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n   * attribute namespace URL. (Attribute names not specified use no namespace.)\n   *\n   * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n   * Property names not specified use the normalized name.\n   *\n   * DOMMutationMethods: Properties that require special mutation methods. If\n   * `value` is undefined, the mutation method should unset the property.\n   *\n   * @param {object} domPropertyConfig the config as described above.\n   */\n  injectDOMPropertyConfig: function (domPropertyConfig) {\n    var Injection = DOMPropertyInjection;\n    var Properties = domPropertyConfig.Properties || {};\n    var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n    var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n    var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n    var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n    if (domPropertyConfig.isCustomAttribute) {\n      DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n    }\n\n    for (var propName in Properties) {\n      !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;injectDOMPropertyConfig(...): You\\&apos;re trying to inject DOM property \\&apos;%s\\&apos; which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.&apos;, propName) : _prodInvariant(&apos;48&apos;, propName) : void 0;\n\n      var lowerCased = propName.toLowerCase();\n      var propConfig = Properties[propName];\n\n      var propertyInfo = {\n        attributeName: lowerCased,\n        attributeNamespace: null,\n        propertyName: propName,\n        mutationMethod: null,\n\n        mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n        hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n        hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n        hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n        hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n      };\n      !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue &lt;= 1) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s&apos;, propName) : _prodInvariant(&apos;50&apos;, propName) : void 0;\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        DOMProperty.getPossibleStandardName[lowerCased] = propName;\n      }\n\n      if (DOMAttributeNames.hasOwnProperty(propName)) {\n        var attributeName = DOMAttributeNames[propName];\n        propertyInfo.attributeName = attributeName;\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          DOMProperty.getPossibleStandardName[attributeName] = propName;\n        }\n      }\n\n      if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n        propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n      }\n\n      if (DOMPropertyNames.hasOwnProperty(propName)) {\n        propertyInfo.propertyName = DOMPropertyNames[propName];\n      }\n\n      if (DOMMutationMethods.hasOwnProperty(propName)) {\n        propertyInfo.mutationMethod = DOMMutationMethods[propName];\n      }\n\n      DOMProperty.properties[propName] = propertyInfo;\n    }\n  }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = &apos;:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD&apos;;\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n *   &gt; DOMProperty.isValid[&apos;id&apos;]\n *   true\n *   &gt; DOMProperty.isValid[&apos;foobar&apos;]\n *   undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n  ID_ATTRIBUTE_NAME: &apos;data-reactid&apos;,\n  ROOT_ATTRIBUTE_NAME: &apos;data-reactroot&apos;,\n\n  ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n  ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + &apos;\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040&apos;,\n\n  /**\n   * Map from property \"standard name\" to an object with info about how to set\n   * the property in the DOM. Each object contains:\n   *\n   * attributeName:\n   *   Used when rendering markup or with `*Attribute()`.\n   * attributeNamespace\n   * propertyName:\n   *   Used on DOM node instances. (This includes properties that mutate due to\n   *   external factors.)\n   * mutationMethod:\n   *   If non-null, used instead of the property or `setAttribute()` after\n   *   initial render.\n   * mustUseProperty:\n   *   Whether the property must be accessed and mutated as an object property.\n   * hasBooleanValue:\n   *   Whether the property should be removed when set to a falsey value.\n   * hasNumericValue:\n   *   Whether the property must be numeric or parse as a numeric and should be\n   *   removed when set to a falsey value.\n   * hasPositiveNumericValue:\n   *   Whether the property must be positive numeric or parse as a positive\n   *   numeric and should be removed when set to a falsey value.\n   * hasOverloadedBooleanValue:\n   *   Whether the property can be used as a flag as well as with a value.\n   *   Removed when strictly equal to false; present without a value when\n   *   strictly equal to true; present with a value otherwise.\n   */\n  properties: {},\n\n  /**\n   * Mapping from lowercase property names to the properly cased version, used\n   * to warn in the case of missing properties. Available only in __DEV__.\n   *\n   * autofocus is predefined, because adding it to the property whitelist\n   * causes unintended side effects.\n   *\n   * @type {Object}\n   */\n  getPossibleStandardName: process.env.NODE_ENV !== &apos;production&apos; ? { autofocus: &apos;autoFocus&apos; } : null,\n\n  /**\n   * All of the isCustomAttribute() functions that have been injected.\n   */\n  _isCustomAttributeFunctions: [],\n\n  /**\n   * Checks whether a property name is a custom attribute.\n   * @method\n   */\n  isCustomAttribute: function (attributeName) {\n    for (var i = 0; i &lt; DOMProperty._isCustomAttributeFunctions.length; i++) {\n      var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n      if (isCustomAttributeFn(attributeName)) {\n        return true;\n      }\n    }\n    return false;\n  },\n\n  injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DOMProperty.js\n// module id = 28\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, copyFieldsFrom);\n    return instance;\n  } else {\n    return new Klass(copyFieldsFrom);\n  }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2);\n    return instance;\n  } else {\n    return new Klass(a1, a2);\n  }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3);\n  }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3, a4);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3, a4);\n  }\n};\n\nvar standardReleaser = function (instance) {\n  var Klass = this;\n  !(instance instanceof Klass) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Trying to release an instance into a pool of a different type.&apos;) : _prodInvariant(&apos;25&apos;) : void 0;\n  instance.destructor();\n  if (Klass.instancePool.length &lt; Klass.poolSize) {\n    Klass.instancePool.push(instance);\n  }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n  // Casting as any so that flow ignores the actual implementation and trusts\n  // it to match the type we declared\n  var NewKlass = CopyConstructor;\n  NewKlass.instancePool = [];\n  NewKlass.getPooled = pooler || DEFAULT_POOLER;\n  if (!NewKlass.poolSize) {\n    NewKlass.poolSize = DEFAULT_POOL_SIZE;\n  }\n  NewKlass.release = standardReleaser;\n  return NewKlass;\n};\n\nvar PooledClass = {\n  addPoolingTo: addPoolingTo,\n  oneArgumentPooler: oneArgumentPooler,\n  twoArgumentPooler: twoArgumentPooler,\n  threeArgumentPooler: threeArgumentPooler,\n  fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/PooledClass.js\n// module id = 33\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar ReactCurrentOwner = require(&apos;./ReactCurrentOwner&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\nvar canDefineProperty = require(&apos;./canDefineProperty&apos;);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require(&apos;./ReactElementSymbol&apos;);\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    if (hasOwnProperty.call(config, &apos;ref&apos;)) {\n      var getter = Object.getOwnPropertyDescriptor(config, &apos;ref&apos;).get;\n      if (getter &amp;&amp; getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    if (hasOwnProperty.call(config, &apos;key&apos;)) {\n      var getter = Object.getOwnPropertyDescriptor(config, &apos;key&apos;).get;\n      if (getter &amp;&amp; getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    if (!specialPropKeyWarningShown) {\n      specialPropKeyWarningShown = true;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s: `key` is not a prop. Trying to access it will result &apos; + &apos;in `undefined` being returned. If you need to access the same &apos; + &apos;value within the child component, you should pass it as a different &apos; + &apos;prop. (https://fb.me/react-special-props)&apos;, displayName) : void 0;\n    }\n  };\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, &apos;key&apos;, {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    if (!specialPropRefWarningShown) {\n      specialPropRefWarningShown = true;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s: `ref` is not a prop. Trying to access it will result &apos; + &apos;in `undefined` being returned. If you need to access the same &apos; + &apos;value within the child component, you should pass it as a different &apos; + &apos;prop. (https://fb.me/react-special-props)&apos;, displayName) : void 0;\n    }\n  };\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, &apos;ref&apos;, {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for(&apos;react.element&apos;) to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allow us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {};\n\n    // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n    if (canDefineProperty) {\n      Object.defineProperty(element._store, &apos;validated&apos;, {\n        configurable: false,\n        enumerable: false,\n        writable: true,\n        value: false\n      });\n      // self and source are DEV only properties.\n      Object.defineProperty(element, &apos;_self&apos;, {\n        configurable: false,\n        enumerable: false,\n        writable: false,\n        value: self\n      });\n      // Two elements created in two different places should be considered\n      // equal for testing purposes and therefore we hide it from enumeration.\n      Object.defineProperty(element, &apos;_source&apos;, {\n        configurable: false,\n        enumerable: false,\n        writable: false,\n        value: source\n      });\n    } else {\n      element._store.validated = false;\n      element._self = self;\n      element._source = source;\n    }\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n  var propName;\n\n  // Reserved names are extracted\n  var props = {};\n\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n    }\n    if (hasValidKey(config)) {\n      key = &apos;&apos; + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source;\n    // Remaining properties are added to a new props object\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) &amp;&amp; !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength &gt; 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i &lt; childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n    props.children = childArray;\n  }\n\n  // Resolve default props\n  if (type &amp;&amp; type.defaultProps) {\n    var defaultProps = type.defaultProps;\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    if (key || ref) {\n      if (typeof props.$$typeof === &apos;undefined&apos; || props.$$typeof !== REACT_ELEMENT_TYPE) {\n        var displayName = typeof type === &apos;function&apos; ? type.displayName || type.name || &apos;Unknown&apos; : type;\n        if (key) {\n          defineKeyPropWarningGetter(props, displayName);\n        }\n        if (ref) {\n          defineRefPropWarningGetter(props, displayName);\n        }\n      }\n    }\n  }\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n  var factory = ReactElement.createElement.bind(null, type);\n  // Expose the type on the factory and the prototype so that it can be\n  // easily accessed on elements. E.g. `&lt;Foo /&gt;.type === Foo`.\n  // This should not be named `constructor` since this may not be the function\n  // that created the element, and it may not even be a constructor.\n  // Legacy hook TODO: Warn if this is accessed\n  factory.type = type;\n  return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n  return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n  var propName;\n\n  // Original props are copied\n  var props = _assign({}, element.props);\n\n  // Reserved names are extracted\n  var key = element.key;\n  var ref = element.ref;\n  // Self is preserved since the owner is preserved.\n  var self = element._self;\n  // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n  var source = element._source;\n\n  // Owner will be preserved, unless ref is overridden\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n    if (hasValidKey(config)) {\n      key = &apos;&apos; + config.key;\n    }\n\n    // Remaining properties override existing props\n    var defaultProps;\n    if (element.type &amp;&amp; element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) &amp;&amp; !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined &amp;&amp; defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  }\n\n  // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n  var childrenLength = arguments.length - 2;\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength &gt; 1) {\n    var childArray = Array(childrenLength);\n    for (var i = 0; i &lt; childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n  return typeof object === &apos;object&apos; &amp;&amp; object !== null &amp;&amp; object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactElement.js\n// module id = 34\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n&apos;use strict&apos;;\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n  var argCount = arguments.length - 1;\n\n  var message = &apos;Minified React error #&apos; + code + &apos;; visit &apos; + &apos;http://facebook.github.io/react/docs/error-decoder.html?invariant=&apos; + code;\n\n  for (var argIdx = 0; argIdx &lt; argCount; argIdx++) {\n    message += &apos;&amp;args[]=&apos; + encodeURIComponent(arguments[argIdx + 1]);\n  }\n\n  message += &apos; for the full message or use the non-minified dev environment&apos; + &apos; for full errors and additional helpful warnings.&apos;;\n\n  var error = new Error(message);\n  error.name = &apos;Invariant Violation&apos;;\n  error.framesToPop = 1; // we don&apos;t care about reactProdInvariant&apos;s own frame\n\n  throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/reactProdInvariant.js\n// module id = 35\n// module chunks = 1","&apos;use strict&apos;;\n\nmodule.exports = require(&apos;./lib/ReactDOM&apos;);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/index.js\n// module id = 37\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/emptyObject.js\n// module id = 40\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMNamespaces = require(&apos;./DOMNamespaces&apos;);\nvar setInnerHTML = require(&apos;./setInnerHTML&apos;);\n\nvar createMicrosoftUnsafeLocalFunction = require(&apos;./createMicrosoftUnsafeLocalFunction&apos;);\nvar setTextContent = require(&apos;./setTextContent&apos;);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== &apos;undefined&apos; &amp;&amp; typeof document.documentMode === &apos;number&apos; || typeof navigator !== &apos;undefined&apos; &amp;&amp; typeof navigator.userAgent === &apos;string&apos; &amp;&amp; /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n  if (!enableLazy) {\n    return;\n  }\n  var node = tree.node;\n  var children = tree.children;\n  if (children.length) {\n    for (var i = 0; i &lt; children.length; i++) {\n      insertTreeBefore(node, children[i], null);\n    }\n  } else if (tree.html != null) {\n    setInnerHTML(node, tree.html);\n  } else if (tree.text != null) {\n    setTextContent(node, tree.text);\n  }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n  // DocumentFragments aren&apos;t actually part of the DOM after insertion so\n  // appending children won&apos;t update the DOM. We need to ensure the fragment\n  // is properly populated first, breaking out of our lazy approach for just\n  // this level. Also, some &lt;object&gt; plugins (like Flash Player) will read\n  // &lt;param&gt; nodes immediately upon insertion into the DOM, so &lt;object&gt;\n  // must also be populated prior to insertion into the DOM.\n  if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE &amp;&amp; tree.node.nodeName.toLowerCase() === &apos;object&apos; &amp;&amp; (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n    insertTreeChildren(tree);\n    parentNode.insertBefore(tree.node, referenceNode);\n  } else {\n    parentNode.insertBefore(tree.node, referenceNode);\n    insertTreeChildren(tree);\n  }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n  oldNode.parentNode.replaceChild(newTree.node, oldNode);\n  insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n  if (enableLazy) {\n    parentTree.children.push(childTree);\n  } else {\n    parentTree.node.appendChild(childTree.node);\n  }\n}\n\nfunction queueHTML(tree, html) {\n  if (enableLazy) {\n    tree.html = html;\n  } else {\n    setInnerHTML(tree.node, html);\n  }\n}\n\nfunction queueText(tree, text) {\n  if (enableLazy) {\n    tree.text = text;\n  } else {\n    setTextContent(tree.node, text);\n  }\n}\n\nfunction toString() {\n  return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n  return {\n    node: node,\n    children: [],\n    html: null,\n    text: null,\n    toString: toString\n  };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DOMLazyTree.js\n// module id = 41\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactRef = require(&apos;./ReactRef&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n  ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n  /**\n   * Initializes the component, renders markup, and registers event listeners.\n   *\n   * @param {ReactComponent} internalInstance\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {?object} the containing host component instance\n   * @param {?object} info about the host container\n   * @return {?string} Rendered markup to be inserted into the DOM.\n   * @final\n   * @internal\n   */\n  mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n  ) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n      }\n    }\n    var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n    if (internalInstance._currentElement &amp;&amp; internalInstance._currentElement.ref != null) {\n      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n    }\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n      }\n    }\n    return markup;\n  },\n\n  /**\n   * Returns a value that can be passed to\n   * ReactComponentEnvironment.replaceNodeWithMarkup.\n   */\n  getHostNode: function (internalInstance) {\n    return internalInstance.getHostNode();\n  },\n\n  /**\n   * Releases any resources allocated by `mountComponent`.\n   *\n   * @final\n   * @internal\n   */\n  unmountComponent: function (internalInstance, safely) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n      }\n    }\n    ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n    internalInstance.unmountComponent(safely);\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n      }\n    }\n  },\n\n  /**\n   * Update a component using a new element.\n   *\n   * @param {ReactComponent} internalInstance\n   * @param {ReactElement} nextElement\n   * @param {ReactReconcileTransaction} transaction\n   * @param {object} context\n   * @internal\n   */\n  receiveComponent: function (internalInstance, nextElement, transaction, context) {\n    var prevElement = internalInstance._currentElement;\n\n    if (nextElement === prevElement &amp;&amp; context === internalInstance._context) {\n      // Since elements are immutable after the owner is rendered,\n      // we can do a cheap identity compare here to determine if this is a\n      // superfluous reconcile. It&apos;s possible for state to be mutable but such\n      // change should trigger an update of the owner which would recreate\n      // the element. We explicitly check for the existence of an owner since\n      // it&apos;s possible for an element created outside a composite to be\n      // deeply mutated and reused.\n\n      // TODO: Bailing out early is just a perf optimization right?\n      // TODO: Removing the return statement should affect correctness?\n      return;\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n      }\n    }\n\n    var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n    if (refsChanged) {\n      ReactRef.detachRefs(internalInstance, prevElement);\n    }\n\n    internalInstance.receiveComponent(nextElement, transaction, context);\n\n    if (refsChanged &amp;&amp; internalInstance._currentElement &amp;&amp; internalInstance._currentElement.ref != null) {\n      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n      }\n    }\n  },\n\n  /**\n   * Flush any dirty changes in a component.\n   *\n   * @param {ReactComponent} internalInstance\n   * @param {ReactReconcileTransaction} transaction\n   * @internal\n   */\n  performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n    if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n      // The component&apos;s enqueued batch number should always be the current\n      // batch or the following one.\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, &apos;performUpdateIfNecessary: Unexpected batch number (current %s, &apos; + &apos;pending %s)&apos;, updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n      return;\n    }\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n      }\n    }\n    internalInstance.performUpdateIfNecessary(transaction);\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (internalInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n      }\n    }\n  }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactReconciler.js\n// module id = 42\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar ReactChildren = require(&apos;./ReactChildren&apos;);\nvar ReactComponent = require(&apos;./ReactComponent&apos;);\nvar ReactPureComponent = require(&apos;./ReactPureComponent&apos;);\nvar ReactClass = require(&apos;./ReactClass&apos;);\nvar ReactDOMFactories = require(&apos;./ReactDOMFactories&apos;);\nvar ReactElement = require(&apos;./ReactElement&apos;);\nvar ReactPropTypes = require(&apos;./ReactPropTypes&apos;);\nvar ReactVersion = require(&apos;./ReactVersion&apos;);\n\nvar onlyChild = require(&apos;./onlyChild&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var canDefineProperty = require(&apos;./canDefineProperty&apos;);\n  var ReactElementValidator = require(&apos;./ReactElementValidator&apos;);\n  var didWarnPropTypesDeprecated = false;\n  createElement = ReactElementValidator.createElement;\n  createFactory = ReactElementValidator.createFactory;\n  cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var warned = false;\n  __spread = function () {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(warned, &apos;React.__spread is deprecated and should not be used. Use &apos; + &apos;Object.assign directly or another helper function with similar &apos; + &apos;semantics. You may be seeing this warning due to your compiler. &apos; + &apos;See https://fb.me/react-spread-deprecation for more details.&apos;) : void 0;\n    warned = true;\n    return _assign.apply(null, arguments);\n  };\n}\n\nvar React = {\n\n  // Modern\n\n  Children: {\n    map: ReactChildren.map,\n    forEach: ReactChildren.forEach,\n    count: ReactChildren.count,\n    toArray: ReactChildren.toArray,\n    only: onlyChild\n  },\n\n  Component: ReactComponent,\n  PureComponent: ReactPureComponent,\n\n  createElement: createElement,\n  cloneElement: cloneElement,\n  isValidElement: ReactElement.isValidElement,\n\n  // Classic\n\n  PropTypes: ReactPropTypes,\n  createClass: ReactClass.createClass,\n  createFactory: createFactory,\n  createMixin: function (mixin) {\n    // Currently a noop. Will be used to validate and trace mixins.\n    return mixin;\n  },\n\n  // This looks DOM specific but these are actually isomorphic helpers\n  // since they are just generating DOM strings.\n  DOM: ReactDOMFactories,\n\n  version: ReactVersion,\n\n  // Deprecated hook for JSX spread, don&apos;t use this for anything.\n  __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn&apos;t cause failures.\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  if (canDefineProperty) {\n    Object.defineProperty(React, &apos;PropTypes&apos;, {\n      get: function () {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(didWarnPropTypesDeprecated, &apos;Accessing PropTypes via the main React package is deprecated. Use &apos; + &apos;the prop-types package from npm instead.&apos;) : void 0;\n        didWarnPropTypesDeprecated = true;\n        return ReactPropTypes;\n      }\n    });\n  }\n}\n\nmodule.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/React.js\n// module id = 43\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar EventPluginRegistry = require(&apos;./EventPluginRegistry&apos;);\nvar EventPluginUtils = require(&apos;./EventPluginUtils&apos;);\nvar ReactErrorUtils = require(&apos;./ReactErrorUtils&apos;);\n\nvar accumulateInto = require(&apos;./accumulateInto&apos;);\nvar forEachAccumulated = require(&apos;./forEachAccumulated&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n  if (event) {\n    EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n    if (!event.isPersistent()) {\n      event.constructor.release(event);\n    }\n  }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n  return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n  return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n  // Prevents V8 performance issue:\n  // https://github.com/facebook/react/pull/7232\n  return &apos;.&apos; + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n  return tag === &apos;button&apos; || tag === &apos;input&apos; || tag === &apos;select&apos; || tag === &apos;textarea&apos;;\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case &apos;onClick&apos;:\n    case &apos;onClickCapture&apos;:\n    case &apos;onDoubleClick&apos;:\n    case &apos;onDoubleClickCapture&apos;:\n    case &apos;onMouseDown&apos;:\n    case &apos;onMouseDownCapture&apos;:\n    case &apos;onMouseMove&apos;:\n    case &apos;onMouseMoveCapture&apos;:\n    case &apos;onMouseUp&apos;:\n    case &apos;onMouseUpCapture&apos;:\n      return !!(props.disabled &amp;&amp; isInteractive(type));\n    default:\n      return false;\n  }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n *   `extractEvents` {function(string, DOMEventTarget, string, object): *}\n *     Required. When a top-level event is fired, this method is expected to\n *     extract synthetic events that will in turn be queued and dispatched.\n *\n *   `eventTypes` {object}\n *     Optional, plugins that fire events must publish a mapping of registration\n *     names that are used to register listeners. Values of this mapping must\n *     be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n *   `executeDispatch` {function(object, function, string)}\n *     Optional, allows plugins to override how an event gets dispatched. By\n *     default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n  /**\n   * Methods for injecting dependencies.\n   */\n  injection: {\n\n    /**\n     * @param {array} InjectedEventPluginOrder\n     * @public\n     */\n    injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n    /**\n     * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n     */\n    injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n  },\n\n  /**\n   * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n   *\n   * @param {object} inst The instance, which is the source of events.\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   * @param {function} listener The callback to store.\n   */\n  putListener: function (inst, registrationName, listener) {\n    !(typeof listener === &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Expected %s listener to be a function, instead got type %s&apos;, registrationName, typeof listener) : _prodInvariant(&apos;94&apos;, registrationName, typeof listener) : void 0;\n\n    var key = getDictionaryKey(inst);\n    var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n    bankForRegistrationName[key] = listener;\n\n    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n    if (PluginModule &amp;&amp; PluginModule.didPutListener) {\n      PluginModule.didPutListener(inst, registrationName, listener);\n    }\n  },\n\n  /**\n   * @param {object} inst The instance, which is the source of events.\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   * @return {?function} The stored callback.\n   */\n  getListener: function (inst, registrationName) {\n    // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n    // live here; needs to be moved to a better place soon\n    var bankForRegistrationName = listenerBank[registrationName];\n    if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n      return null;\n    }\n    var key = getDictionaryKey(inst);\n    return bankForRegistrationName &amp;&amp; bankForRegistrationName[key];\n  },\n\n  /**\n   * Deletes a listener from the registration bank.\n   *\n   * @param {object} inst The instance, which is the source of events.\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   */\n  deleteListener: function (inst, registrationName) {\n    var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n    if (PluginModule &amp;&amp; PluginModule.willDeleteListener) {\n      PluginModule.willDeleteListener(inst, registrationName);\n    }\n\n    var bankForRegistrationName = listenerBank[registrationName];\n    // TODO: This should never be null -- when is it?\n    if (bankForRegistrationName) {\n      var key = getDictionaryKey(inst);\n      delete bankForRegistrationName[key];\n    }\n  },\n\n  /**\n   * Deletes all listeners for the DOM element with the supplied ID.\n   *\n   * @param {object} inst The instance, which is the source of events.\n   */\n  deleteAllListeners: function (inst) {\n    var key = getDictionaryKey(inst);\n    for (var registrationName in listenerBank) {\n      if (!listenerBank.hasOwnProperty(registrationName)) {\n        continue;\n      }\n\n      if (!listenerBank[registrationName][key]) {\n        continue;\n      }\n\n      var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n      if (PluginModule &amp;&amp; PluginModule.willDeleteListener) {\n        PluginModule.willDeleteListener(inst, registrationName);\n      }\n\n      delete listenerBank[registrationName][key];\n    }\n  },\n\n  /**\n   * Allows registered plugins an opportunity to extract events from top-level\n   * native browser events.\n   *\n   * @return {*} An accumulation of synthetic events.\n   * @internal\n   */\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var events;\n    var plugins = EventPluginRegistry.plugins;\n    for (var i = 0; i &lt; plugins.length; i++) {\n      // Not every plugin in the ordering may be loaded at runtime.\n      var possiblePlugin = plugins[i];\n      if (possiblePlugin) {\n        var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n        if (extractedEvents) {\n          events = accumulateInto(events, extractedEvents);\n        }\n      }\n    }\n    return events;\n  },\n\n  /**\n   * Enqueues a synthetic event that should be dispatched when\n   * `processEventQueue` is invoked.\n   *\n   * @param {*} events An accumulation of synthetic events.\n   * @internal\n   */\n  enqueueEvents: function (events) {\n    if (events) {\n      eventQueue = accumulateInto(eventQueue, events);\n    }\n  },\n\n  /**\n   * Dispatches all synthetic events on the event queue.\n   *\n   * @internal\n   */\n  processEventQueue: function (simulated) {\n    // Set `eventQueue` to null before processing it so that we can tell if more\n    // events get enqueued while processing.\n    var processingEventQueue = eventQueue;\n    eventQueue = null;\n    if (simulated) {\n      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n    } else {\n      forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n    }\n    !!eventQueue ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.&apos;) : _prodInvariant(&apos;95&apos;) : void 0;\n    // This would be a good time to rethrow if any of the event handlers threw.\n    ReactErrorUtils.rethrowCaughtError();\n  },\n\n  /**\n   * These are needed for tests only. Do not use!\n   */\n  __purge: function () {\n    listenerBank = {};\n  },\n\n  __getListenerBank: function () {\n    return listenerBank;\n  }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/EventPluginHub.js\n// module id = 50\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPluginHub = require(&apos;./EventPluginHub&apos;);\nvar EventPluginUtils = require(&apos;./EventPluginUtils&apos;);\n\nvar accumulateInto = require(&apos;./accumulateInto&apos;);\nvar forEachAccumulated = require(&apos;./forEachAccumulated&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n  return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event&apos;s members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(inst, &apos;Dispatching inst must not be null&apos;) : void 0;\n  }\n  var listener = listenerAtPhase(inst, event, phase);\n  if (listener) {\n    event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n    event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n  }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory.  We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n  if (event &amp;&amp; event.dispatchConfig.phasedRegistrationNames) {\n    EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n  if (event &amp;&amp; event.dispatchConfig.phasedRegistrationNames) {\n    var targetInst = event._targetInst;\n    var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n    EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n  }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n  if (event &amp;&amp; event.dispatchConfig.registrationName) {\n    var registrationName = event.dispatchConfig.registrationName;\n    var listener = getListener(inst, registrationName);\n    if (listener) {\n      event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n      event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n    }\n  }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n  if (event &amp;&amp; event.dispatchConfig.registrationName) {\n    accumulateDispatches(event._targetInst, null, event);\n  }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n  EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n  forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n  accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n  accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n  accumulateDirectDispatches: accumulateDirectDispatches,\n  accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/EventPropagators.js\n// module id = 51\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n  /**\n   * This API should be called `delete` but we&apos;d have to make sure to always\n   * transform these to strings for IE support. When this transform is fully\n   * supported we can rename it.\n   */\n  remove: function (key) {\n    key._reactInternalInstance = undefined;\n  },\n\n  get: function (key) {\n    return key._reactInternalInstance;\n  },\n\n  has: function (key) {\n    return key._reactInternalInstance !== undefined;\n  },\n\n  set: function (key, value) {\n    key._reactInternalInstance = value;\n  }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactInstanceMap.js\n// module id = 52\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\nvar getEventTarget = require(&apos;./getEventTarget&apos;);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n  view: function (event) {\n    if (event.view) {\n      return event.view;\n    }\n\n    var target = getEventTarget(event);\n    if (target.window === target) {\n      // target is a window object\n      return target;\n    }\n\n    var doc = target.ownerDocument;\n    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n    if (doc) {\n      return doc.defaultView || doc.parentWindow;\n    } else {\n      return window;\n    }\n  },\n  detail: function (event) {\n    return event.detail || 0;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticUIEvent.js\n// module id = 53\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n  if (!eventPluginOrder) {\n    // Wait until an `eventPluginOrder` is injected.\n    return;\n  }\n  for (var pluginName in namesToPlugins) {\n    var pluginModule = namesToPlugins[pluginName];\n    var pluginIndex = eventPluginOrder.indexOf(pluginName);\n    !(pluginIndex &gt; -1) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.&apos;, pluginName) : _prodInvariant(&apos;96&apos;, pluginName) : void 0;\n    if (EventPluginRegistry.plugins[pluginIndex]) {\n      continue;\n    }\n    !pluginModule.extractEvents ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.&apos;, pluginName) : _prodInvariant(&apos;97&apos;, pluginName) : void 0;\n    EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n    var publishedEvents = pluginModule.eventTypes;\n    for (var eventName in publishedEvents) {\n      !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.&apos;, eventName, pluginName) : _prodInvariant(&apos;98&apos;, eventName, pluginName) : void 0;\n    }\n  }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n  !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.&apos;, eventName) : _prodInvariant(&apos;99&apos;, eventName) : void 0;\n  EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n  if (phasedRegistrationNames) {\n    for (var phaseName in phasedRegistrationNames) {\n      if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n        var phasedRegistrationName = phasedRegistrationNames[phaseName];\n        publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n      }\n    }\n    return true;\n  } else if (dispatchConfig.registrationName) {\n    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n    return true;\n  }\n  return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n  !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.&apos;, registrationName) : _prodInvariant(&apos;100&apos;, registrationName) : void 0;\n  EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n  EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    var lowerCasedName = registrationName.toLowerCase();\n    EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === &apos;onDoubleClick&apos;) {\n      EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n  /**\n   * Ordered list of injected plugins.\n   */\n  plugins: [],\n\n  /**\n   * Mapping from event name to dispatch config\n   */\n  eventNameDispatchConfigs: {},\n\n  /**\n   * Mapping from registration name to plugin module\n   */\n  registrationNameModules: {},\n\n  /**\n   * Mapping from registration name to event name\n   */\n  registrationNameDependencies: {},\n\n  /**\n   * Mapping from lowercase registration names to the properly cased version,\n   * used to warn in the case of missing event handlers. Available\n   * only in __DEV__.\n   * @type {Object}\n   */\n  possibleRegistrationNames: process.env.NODE_ENV !== &apos;production&apos; ? {} : null,\n  // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n  /**\n   * Injects an ordering of plugins (by plugin name). This allows the ordering\n   * to be decoupled from injection of the actual plugins so that ordering is\n   * always deterministic regardless of packaging, on-the-fly injection, etc.\n   *\n   * @param {array} InjectedEventPluginOrder\n   * @internal\n   * @see {EventPluginHub.injection.injectEventPluginOrder}\n   */\n  injectEventPluginOrder: function (injectedEventPluginOrder) {\n    !!eventPluginOrder ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.&apos;) : _prodInvariant(&apos;101&apos;) : void 0;\n    // Clone the ordering so it cannot be dynamically mutated.\n    eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n    recomputePluginOrdering();\n  },\n\n  /**\n   * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n   * in the ordering injected by `injectEventPluginOrder`.\n   *\n   * Plugins can be injected as part of page initialization or on-the-fly.\n   *\n   * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n   * @internal\n   * @see {EventPluginHub.injection.injectEventPluginsByName}\n   */\n  injectEventPluginsByName: function (injectedNamesToPlugins) {\n    var isOrderingDirty = false;\n    for (var pluginName in injectedNamesToPlugins) {\n      if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n        continue;\n      }\n      var pluginModule = injectedNamesToPlugins[pluginName];\n      if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n        !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.&apos;, pluginName) : _prodInvariant(&apos;102&apos;, pluginName) : void 0;\n        namesToPlugins[pluginName] = pluginModule;\n        isOrderingDirty = true;\n      }\n    }\n    if (isOrderingDirty) {\n      recomputePluginOrdering();\n    }\n  },\n\n  /**\n   * Looks up the plugin for the supplied event.\n   *\n   * @param {object} event A synthetic event.\n   * @return {?object} The plugin that created the supplied event.\n   * @internal\n   */\n  getPluginModuleForEvent: function (event) {\n    var dispatchConfig = event.dispatchConfig;\n    if (dispatchConfig.registrationName) {\n      return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n    }\n    if (dispatchConfig.phasedRegistrationNames !== undefined) {\n      // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n      // that it is not undefined.\n      var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n      for (var phase in phasedRegistrationNames) {\n        if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n          continue;\n        }\n        var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n        if (pluginModule) {\n          return pluginModule;\n        }\n      }\n    }\n    return null;\n  },\n\n  /**\n   * Exposed for unit testing.\n   * @private\n   */\n  _resetEventPlugins: function () {\n    eventPluginOrder = null;\n    for (var pluginName in namesToPlugins) {\n      if (namesToPlugins.hasOwnProperty(pluginName)) {\n        delete namesToPlugins[pluginName];\n      }\n    }\n    EventPluginRegistry.plugins.length = 0;\n\n    var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n    for (var eventName in eventNameDispatchConfigs) {\n      if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n        delete eventNameDispatchConfigs[eventName];\n      }\n    }\n\n    var registrationNameModules = EventPluginRegistry.registrationNameModules;\n    for (var registrationName in registrationNameModules) {\n      if (registrationNameModules.hasOwnProperty(registrationName)) {\n        delete registrationNameModules[registrationName];\n      }\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n      for (var lowerCasedName in possibleRegistrationNames) {\n        if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n          delete possibleRegistrationNames[lowerCasedName];\n        }\n      }\n    }\n  }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/EventPluginRegistry.js\n// module id = 63\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar EventPluginRegistry = require(&apos;./EventPluginRegistry&apos;);\nvar ReactEventEmitterMixin = require(&apos;./ReactEventEmitterMixin&apos;);\nvar ViewportMetrics = require(&apos;./ViewportMetrics&apos;);\n\nvar getVendorPrefixedEventName = require(&apos;./getVendorPrefixedEventName&apos;);\nvar isEventSupported = require(&apos;./isEventSupported&apos;);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n *  - Top-level delegation is used to trap most native browser events. This\n *    may only occur in the main thread and is the responsibility of\n *    ReactEventListener, which is injected and can therefore support pluggable\n *    event sources. This is the only work that occurs in the main thread.\n *\n *  - We normalize and de-duplicate events to account for browser quirks. This\n *    may be done in the worker thread.\n *\n *  - Forward these native events (with the associated top-level type used to\n *    trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n *    to extract any synthetic events.\n *\n *  - The `EventPluginHub` will then process each event by annotating them with\n *    \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n *  - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+    .\n * |    DOM     |    .\n * +------------+    .\n *       |           .\n *       v           .\n * +------------+    .\n * | ReactEvent |    .\n * |  Listener  |    .\n * +------------+    .                         +-----------+\n *       |           .               +--------+|SimpleEvent|\n *       |           .               |         |Plugin     |\n * +-----|------+    .               v         +-----------+\n * |     |      |    .    +--------------+                    +------------+\n * |     +-----------.---&gt;|EventPluginHub|                    |    Event   |\n * |            |    .    |              |     +-----------+  | Propagators|\n * | ReactEvent |    .    |              |     |TapEvent   |  |------------|\n * |  Emitter   |    .    |              |&lt;---+|Plugin     |  |other plugin|\n * |            |    .    |              |     +-----------+  |  utilities |\n * |     +-----------.---&gt;|              |                    +------------+\n * |     |      |    .    +--------------+\n * +-----|------+    .                ^        +-----------+\n *       |           .                |        |Enter/Leave|\n *       +           .                +-------+|Plugin     |\n * +-------------+   .                         +-----------+\n * | application |   .\n * |-------------|   .\n * |             |   .\n * |             |   .\n * +-------------+   .\n *                   .\n *    React Core     .  General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like &apos;submit&apos; which don&apos;t consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don&apos;t include them here\nvar topEventMapping = {\n  topAbort: &apos;abort&apos;,\n  topAnimationEnd: getVendorPrefixedEventName(&apos;animationend&apos;) || &apos;animationend&apos;,\n  topAnimationIteration: getVendorPrefixedEventName(&apos;animationiteration&apos;) || &apos;animationiteration&apos;,\n  topAnimationStart: getVendorPrefixedEventName(&apos;animationstart&apos;) || &apos;animationstart&apos;,\n  topBlur: &apos;blur&apos;,\n  topCanPlay: &apos;canplay&apos;,\n  topCanPlayThrough: &apos;canplaythrough&apos;,\n  topChange: &apos;change&apos;,\n  topClick: &apos;click&apos;,\n  topCompositionEnd: &apos;compositionend&apos;,\n  topCompositionStart: &apos;compositionstart&apos;,\n  topCompositionUpdate: &apos;compositionupdate&apos;,\n  topContextMenu: &apos;contextmenu&apos;,\n  topCopy: &apos;copy&apos;,\n  topCut: &apos;cut&apos;,\n  topDoubleClick: &apos;dblclick&apos;,\n  topDrag: &apos;drag&apos;,\n  topDragEnd: &apos;dragend&apos;,\n  topDragEnter: &apos;dragenter&apos;,\n  topDragExit: &apos;dragexit&apos;,\n  topDragLeave: &apos;dragleave&apos;,\n  topDragOver: &apos;dragover&apos;,\n  topDragStart: &apos;dragstart&apos;,\n  topDrop: &apos;drop&apos;,\n  topDurationChange: &apos;durationchange&apos;,\n  topEmptied: &apos;emptied&apos;,\n  topEncrypted: &apos;encrypted&apos;,\n  topEnded: &apos;ended&apos;,\n  topError: &apos;error&apos;,\n  topFocus: &apos;focus&apos;,\n  topInput: &apos;input&apos;,\n  topKeyDown: &apos;keydown&apos;,\n  topKeyPress: &apos;keypress&apos;,\n  topKeyUp: &apos;keyup&apos;,\n  topLoadedData: &apos;loadeddata&apos;,\n  topLoadedMetadata: &apos;loadedmetadata&apos;,\n  topLoadStart: &apos;loadstart&apos;,\n  topMouseDown: &apos;mousedown&apos;,\n  topMouseMove: &apos;mousemove&apos;,\n  topMouseOut: &apos;mouseout&apos;,\n  topMouseOver: &apos;mouseover&apos;,\n  topMouseUp: &apos;mouseup&apos;,\n  topPaste: &apos;paste&apos;,\n  topPause: &apos;pause&apos;,\n  topPlay: &apos;play&apos;,\n  topPlaying: &apos;playing&apos;,\n  topProgress: &apos;progress&apos;,\n  topRateChange: &apos;ratechange&apos;,\n  topScroll: &apos;scroll&apos;,\n  topSeeked: &apos;seeked&apos;,\n  topSeeking: &apos;seeking&apos;,\n  topSelectionChange: &apos;selectionchange&apos;,\n  topStalled: &apos;stalled&apos;,\n  topSuspend: &apos;suspend&apos;,\n  topTextInput: &apos;textInput&apos;,\n  topTimeUpdate: &apos;timeupdate&apos;,\n  topTouchCancel: &apos;touchcancel&apos;,\n  topTouchEnd: &apos;touchend&apos;,\n  topTouchMove: &apos;touchmove&apos;,\n  topTouchStart: &apos;touchstart&apos;,\n  topTransitionEnd: getVendorPrefixedEventName(&apos;transitionend&apos;) || &apos;transitionend&apos;,\n  topVolumeChange: &apos;volumechange&apos;,\n  topWaiting: &apos;waiting&apos;,\n  topWheel: &apos;wheel&apos;\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = &apos;_reactListenersID&apos; + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n  // In IE8, `mountAt` is a host object and doesn&apos;t have `hasOwnProperty`\n  // directly.\n  if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n    mountAt[topListenersIDKey] = reactTopListenersCounter++;\n    alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n  }\n  return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n *   EventPluginHub.putListener(&apos;myID&apos;, &apos;onClick&apos;, myFunction);\n *\n * This would allocate a \"registration\" of `(&apos;onClick&apos;, myFunction)` on &apos;myID&apos;.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n  /**\n   * Injectable event backend\n   */\n  ReactEventListener: null,\n\n  injection: {\n    /**\n     * @param {object} ReactEventListener\n     */\n    injectReactEventListener: function (ReactEventListener) {\n      ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n      ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n    }\n  },\n\n  /**\n   * Sets whether or not any created callbacks should be enabled.\n   *\n   * @param {boolean} enabled True if callbacks should be enabled.\n   */\n  setEnabled: function (enabled) {\n    if (ReactBrowserEventEmitter.ReactEventListener) {\n      ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n    }\n  },\n\n  /**\n   * @return {boolean} True if callbacks are enabled.\n   */\n  isEnabled: function () {\n    return !!(ReactBrowserEventEmitter.ReactEventListener &amp;&amp; ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n  },\n\n  /**\n   * We listen for bubbled touch events on the document object.\n   *\n   * Firefox v8.01 (and possibly others) exhibited strange behavior when\n   * mounting `onmousemove` events at some node that was not the document\n   * element. The symptoms were that if your mouse is not moving over something\n   * contained within that mount point (for example on the background) the\n   * top-level listeners for `onmousemove` won&apos;t be called. However, if you\n   * register the `mousemove` on the document object, then it will of course\n   * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n   * top-level listeners to the document object only, at least for these\n   * movement types of events and possibly all events.\n   *\n   * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n   *\n   * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n   * they bubble to document.\n   *\n   * @param {string} registrationName Name of listener (e.g. `onClick`).\n   * @param {object} contentDocumentHandle Document which owns the container\n   */\n  listenTo: function (registrationName, contentDocumentHandle) {\n    var mountAt = contentDocumentHandle;\n    var isListening = getListeningForDocument(mountAt);\n    var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n    for (var i = 0; i &lt; dependencies.length; i++) {\n      var dependency = dependencies[i];\n      if (!(isListening.hasOwnProperty(dependency) &amp;&amp; isListening[dependency])) {\n        if (dependency === &apos;topWheel&apos;) {\n          if (isEventSupported(&apos;wheel&apos;)) {\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;wheel&apos;, mountAt);\n          } else if (isEventSupported(&apos;mousewheel&apos;)) {\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;mousewheel&apos;, mountAt);\n          } else {\n            // Firefox needs to capture a different mouse scroll event.\n            // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topWheel&apos;, &apos;DOMMouseScroll&apos;, mountAt);\n          }\n        } else if (dependency === &apos;topScroll&apos;) {\n\n          if (isEventSupported(&apos;scroll&apos;, true)) {\n            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topScroll&apos;, &apos;scroll&apos;, mountAt);\n          } else {\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topScroll&apos;, &apos;scroll&apos;, ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n          }\n        } else if (dependency === &apos;topFocus&apos; || dependency === &apos;topBlur&apos;) {\n\n          if (isEventSupported(&apos;focus&apos;, true)) {\n            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topFocus&apos;, &apos;focus&apos;, mountAt);\n            ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(&apos;topBlur&apos;, &apos;blur&apos;, mountAt);\n          } else if (isEventSupported(&apos;focusin&apos;)) {\n            // IE has `focusin` and `focusout` events which bubble.\n            // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topFocus&apos;, &apos;focusin&apos;, mountAt);\n            ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(&apos;topBlur&apos;, &apos;focusout&apos;, mountAt);\n          }\n\n          // to make sure blur and focus event listeners are only attached once\n          isListening.topBlur = true;\n          isListening.topFocus = true;\n        } else if (topEventMapping.hasOwnProperty(dependency)) {\n          ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n        }\n\n        isListening[dependency] = true;\n      }\n    }\n  },\n\n  trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n    return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n  },\n\n  trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n    return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n  },\n\n  /**\n   * Protect against document.createEvent() returning null\n   * Some popup blocker extensions appear to do this:\n   * https://github.com/facebook/react/issues/6887\n   */\n  supportsEventPageXY: function () {\n    if (!document.createEvent) {\n      return false;\n    }\n    var ev = document.createEvent(&apos;MouseEvent&apos;);\n    return ev != null &amp;&amp; &apos;pageX&apos; in ev;\n  },\n\n  /**\n   * Listens to window scroll and resize events. We cache scroll values so that\n   * application code can access them without triggering reflows.\n   *\n   * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n   * pageX/pageY isn&apos;t supported (legacy browsers).\n   *\n   * NOTE: Scroll events do not bubble.\n   *\n   * @see http://www.quirksmode.org/dom/events/scroll.html\n   */\n  ensureScrollValueMonitoring: function () {\n    if (hasEventPageXY === undefined) {\n      hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n    }\n    if (!hasEventPageXY &amp;&amp; !isMonitoringScrollValue) {\n      var refresh = ViewportMetrics.refreshScrollValues;\n      ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n      isMonitoringScrollValue = true;\n    }\n  }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactBrowserEventEmitter.js\n// module id = 64\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticUIEvent = require(&apos;./SyntheticUIEvent&apos;);\nvar ViewportMetrics = require(&apos;./ViewportMetrics&apos;);\n\nvar getEventModifierState = require(&apos;./getEventModifierState&apos;);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n  screenX: null,\n  screenY: null,\n  clientX: null,\n  clientY: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  getModifierState: getEventModifierState,\n  button: function (event) {\n    // Webkit, Firefox, IE9+\n    // which:  1 2 3\n    // button: 0 1 2 (standard)\n    var button = event.button;\n    if (&apos;which&apos; in event) {\n      return button;\n    }\n    // IE&lt;9\n    // which:  undefined\n    // button: 0 0 0\n    // button: 1 4 2 (onmouseup)\n    return button === 2 ? 2 : button === 4 ? 1 : 0;\n  },\n  buttons: null,\n  relatedTarget: function (event) {\n    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n  },\n  // \"Proprietary\" Interface.\n  pageX: function (event) {\n    return &apos;pageX&apos; in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n  },\n  pageY: function (event) {\n    return &apos;pageY&apos; in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticMouseEvent.js\n// module id = 65\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * &lt;pre&gt;\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +-----------------&gt;|-|---|-|---|--&gt;|anyMethod|---|---|-|---|-|--------&gt;\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * &lt;/pre&gt;\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n *   Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n *   while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n *   reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n *   content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n *   to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n *   when the wrapped process is completed, or has failed.\n *\n * @param {Array&lt;TransactionalWrapper&gt;} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n  /**\n   * Sets up this instance so that it is prepared for collecting metrics. Does\n   * so such that this setup method may be used on an instance that is already\n   * initialized, in a way that does not consume additional memory upon reuse.\n   * That can be useful if you decide to make your subclass of this mixin a\n   * \"PooledClass\".\n   */\n  reinitializeTransaction: function () {\n    this.transactionWrappers = this.getTransactionWrappers();\n    if (this.wrapperInitData) {\n      this.wrapperInitData.length = 0;\n    } else {\n      this.wrapperInitData = [];\n    }\n    this._isInTransaction = false;\n  },\n\n  _isInTransaction: false,\n\n  /**\n   * @abstract\n   * @return {Array&lt;TransactionWrapper&gt;} Array of transaction wrappers.\n   */\n  getTransactionWrappers: null,\n\n  isInTransaction: function () {\n    return !!this._isInTransaction;\n  },\n\n  /**\n   * Executes the function within a safety window. Use this for the top level\n   * methods that result in large amounts of computation/mutations that would\n   * need to be safety checked. The optional arguments helps prevent the need\n   * to bind in many cases.\n   *\n   * @param {function} method Member of scope to call.\n   * @param {Object} scope Scope to invoke from.\n   * @param {Object?=} a Argument to pass to the method.\n   * @param {Object?=} b Argument to pass to the method.\n   * @param {Object?=} c Argument to pass to the method.\n   * @param {Object?=} d Argument to pass to the method.\n   * @param {Object?=} e Argument to pass to the method.\n   * @param {Object?=} f Argument to pass to the method.\n   *\n   * @return {*} Return value from `method`.\n   */\n  perform: function (method, scope, a, b, c, d, e, f) {\n    !!this.isInTransaction() ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.&apos;) : _prodInvariant(&apos;27&apos;) : void 0;\n    var errorThrown;\n    var ret;\n    try {\n      this._isInTransaction = true;\n      // Catching errors makes debugging more difficult, so we start with\n      // errorThrown set to true before setting it to false after calling\n      // close -- if it&apos;s still set to true in the finally block, it means\n      // one of these calls threw.\n      errorThrown = true;\n      this.initializeAll(0);\n      ret = method.call(scope, a, b, c, d, e, f);\n      errorThrown = false;\n    } finally {\n      try {\n        if (errorThrown) {\n          // If `method` throws, prefer to show that stack trace over any thrown\n          // by invoking `closeAll`.\n          try {\n            this.closeAll(0);\n          } catch (err) {}\n        } else {\n          // Since `method` didn&apos;t throw, we don&apos;t want to silence the exception\n          // here.\n          this.closeAll(0);\n        }\n      } finally {\n        this._isInTransaction = false;\n      }\n    }\n    return ret;\n  },\n\n  initializeAll: function (startIndex) {\n    var transactionWrappers = this.transactionWrappers;\n    for (var i = startIndex; i &lt; transactionWrappers.length; i++) {\n      var wrapper = transactionWrappers[i];\n      try {\n        // Catching errors makes debugging more difficult, so we start with the\n        // OBSERVED_ERROR state before overwriting it with the real return value\n        // of initialize -- if it&apos;s still set to OBSERVED_ERROR in the finally\n        // block, it means wrapper.initialize threw.\n        this.wrapperInitData[i] = OBSERVED_ERROR;\n        this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n      } finally {\n        if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n          // The initializer for wrapper i threw an error; initialize the\n          // remaining wrappers but silence any exceptions from them to ensure\n          // that the first error is the one to bubble up.\n          try {\n            this.initializeAll(i + 1);\n          } catch (err) {}\n        }\n      }\n    }\n  },\n\n  /**\n   * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n   * them the respective return values of `this.transactionWrappers.init[i]`\n   * (`close`rs that correspond to initializers that failed will not be\n   * invoked).\n   */\n  closeAll: function (startIndex) {\n    !this.isInTransaction() ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Transaction.closeAll(): Cannot close transaction when none are open.&apos;) : _prodInvariant(&apos;28&apos;) : void 0;\n    var transactionWrappers = this.transactionWrappers;\n    for (var i = startIndex; i &lt; transactionWrappers.length; i++) {\n      var wrapper = transactionWrappers[i];\n      var initData = this.wrapperInitData[i];\n      var errorThrown;\n      try {\n        // Catching errors makes debugging more difficult, so we start with\n        // errorThrown set to true before setting it to false after calling\n        // close -- if it&apos;s still set to true in the finally block, it means\n        // wrapper.close threw.\n        errorThrown = true;\n        if (initData !== OBSERVED_ERROR &amp;&amp; wrapper.close) {\n          wrapper.close.call(this, initData);\n        }\n        errorThrown = false;\n      } finally {\n        if (errorThrown) {\n          // The closer for wrapper i threw an error; close the remaining\n          // wrappers but silence any exceptions from them to ensure that the\n          // first error is the one to bubble up.\n          try {\n            this.closeAll(i + 1);\n          } catch (e) {}\n        }\n      }\n    }\n    this.wrapperInitData.length = 0;\n  }\n};\n\nmodule.exports = TransactionImpl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/Transaction.js\n// module id = 66\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * &apos;Software&apos;), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED &apos;AS IS&apos;, WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n&apos;use strict&apos;;\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"&apos;&amp;&lt;&gt;]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = &apos;&apos; + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = &apos;&apos;;\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index &lt; str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = &apos;&amp;quot;&apos;;\n        break;\n      case 38:\n        // &amp;\n        escape = &apos;&amp;amp;&apos;;\n        break;\n      case 39:\n        // &apos;\n        escape = &apos;&amp;#x27;&apos;; // modified from escape-html; used to be &apos;&amp;#39&apos;\n        break;\n      case 60:\n        // &lt;\n        escape = &apos;&amp;lt;&apos;;\n        break;\n      case 62:\n        // &gt;\n        escape = &apos;&amp;gt;&apos;;\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n  if (typeof text === &apos;boolean&apos; || typeof text === &apos;number&apos;) {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return &apos;&apos; + text;\n  }\n  return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/escapeTextContentForBrowser.js\n// module id = 67\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar DOMNamespaces = require(&apos;./DOMNamespaces&apos;);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /&lt;(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/&gt;]/;\n\nvar createMicrosoftUnsafeLocalFunction = require(&apos;./createMicrosoftUnsafeLocalFunction&apos;);\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n  // IE does not have innerHTML for SVG nodes, so instead we inject the\n  // new markup in a temp node and then move the child nodes across into\n  // the target node\n  if (node.namespaceURI === DOMNamespaces.svg &amp;&amp; !(&apos;innerHTML&apos; in node)) {\n    reusableSVGContainer = reusableSVGContainer || document.createElement(&apos;div&apos;);\n    reusableSVGContainer.innerHTML = &apos;&lt;svg&gt;&apos; + html + &apos;&lt;/svg&gt;&apos;;\n    var svgNode = reusableSVGContainer.firstChild;\n    while (svgNode.firstChild) {\n      node.appendChild(svgNode.firstChild);\n    }\n  } else {\n    node.innerHTML = html;\n  }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n  // IE8: When updating a just created node with innerHTML only leading\n  // whitespace is removed. When updating an existing node with innerHTML\n  // whitespace in root TextNodes is also collapsed.\n  // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n  // Feature detection; only IE8 is known to behave improperly like this.\n  var testElement = document.createElement(&apos;div&apos;);\n  testElement.innerHTML = &apos; &apos;;\n  if (testElement.innerHTML === &apos;&apos;) {\n    setInnerHTML = function (node, html) {\n      // Magic theory: IE8 supposedly differentiates between added and updated\n      // nodes when processing innerHTML, innerHTML on updated nodes suffers\n      // from worse whitespace behavior. Re-adding a node like this triggers\n      // the initial and more favorable whitespace behavior.\n      // TODO: What to do on a detached node?\n      if (node.parentNode) {\n        node.parentNode.replaceChild(node, node);\n      }\n\n      // We also implement a workaround for non-visible tags disappearing into\n      // thin air on IE8, this only happens if there is no visible text\n      // in-front of the non-visible tags. Piggyback on the whitespace fix\n      // and simply check if any non-visible tags appear in the source.\n      if (WHITESPACE_TEST.test(html) || html[0] === &apos;&lt;&apos; &amp;&amp; NONVISIBLE_TEST.test(html)) {\n        // Recover leading whitespace by temporarily prepending any character.\n        // \\uFEFF has the potential advantage of being zero-width/invisible.\n        // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n        // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n        // the actual Unicode character (by Babel, for example).\n        // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n        node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n        // deleteData leaves an empty `TextNode` which offsets the index of all\n        // children. Definitely want to avoid this.\n        var textNode = node.firstChild;\n        if (textNode.data.length === 1) {\n          node.removeChild(textNode);\n        } else {\n          textNode.deleteData(0, 1);\n        }\n      } else {\n        node.innerHTML = html;\n      }\n    };\n  }\n  testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/setInnerHTML.js\n// module id = 68\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  try {\n    // $FlowFixMe https://github.com/facebook/flow/issues/285\n    Object.defineProperty({}, &apos;x&apos;, { get: function () {} });\n    canDefineProperty = true;\n  } catch (x) {\n    // IE will fail on defineProperty\n  }\n}\n\nmodule.exports = canDefineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/canDefineProperty.js\n// module id = 72\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n&apos;use strict&apos;;\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  // SameValue algorithm\n  if (x === y) {\n    // Steps 1-5, 7-10\n    // Steps 6.b-6.e: +0 != -0\n    // Added the nonzero y check to make Flow happy, but it is redundant\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    // Step 6.a: NaN == NaN\n    return x !== x &amp;&amp; y !== y;\n  }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== &apos;object&apos; || objA === null || typeof objB !== &apos;object&apos; || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  // Test for A&apos;s keys different from B.\n  for (var i = 0; i &lt; keysA.length; i++) {\n    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/shallowEqual.js\n// module id = 82\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar Danger = require(&apos;./Danger&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n\nvar createMicrosoftUnsafeLocalFunction = require(&apos;./createMicrosoftUnsafeLocalFunction&apos;);\nvar setInnerHTML = require(&apos;./setInnerHTML&apos;);\nvar setTextContent = require(&apos;./setTextContent&apos;);\n\nfunction getNodeAfter(parentNode, node) {\n  // Special case for text components, which return [open, close] comments\n  // from getHostNode.\n  if (Array.isArray(node)) {\n    node = node[1];\n  }\n  return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n  // We rely exclusively on `insertBefore(node, null)` instead of also using\n  // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n  // we are careful to use `null`.)\n  parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n  DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n  if (Array.isArray(childNode)) {\n    moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n  } else {\n    insertChildAt(parentNode, childNode, referenceNode);\n  }\n}\n\nfunction removeChild(parentNode, childNode) {\n  if (Array.isArray(childNode)) {\n    var closingComment = childNode[1];\n    childNode = childNode[0];\n    removeDelimitedText(parentNode, childNode, closingComment);\n    parentNode.removeChild(closingComment);\n  }\n  parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n  var node = openingComment;\n  while (true) {\n    var nextNode = node.nextSibling;\n    insertChildAt(parentNode, node, referenceNode);\n    if (node === closingComment) {\n      break;\n    }\n    node = nextNode;\n  }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n  while (true) {\n    var node = startNode.nextSibling;\n    if (node === closingComment) {\n      // The closing comment is removed by ReactMultiChild.\n      break;\n    } else {\n      parentNode.removeChild(node);\n    }\n  }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n  var parentNode = openingComment.parentNode;\n  var nodeAfterComment = openingComment.nextSibling;\n  if (nodeAfterComment === closingComment) {\n    // There are no text nodes between the opening and closing comments; insert\n    // a new one if stringText isn&apos;t empty.\n    if (stringText) {\n      insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n    }\n  } else {\n    if (stringText) {\n      // Set the text content of the first node after the opening comment, and\n      // remove all following nodes up until the closing comment.\n      setTextContent(nodeAfterComment, stringText);\n      removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n    } else {\n      removeDelimitedText(parentNode, openingComment, closingComment);\n    }\n  }\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    ReactInstrumentation.debugTool.onHostOperation({\n      instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n      type: &apos;replace text&apos;,\n      payload: stringText\n    });\n  }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n    Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n    if (prevInstance._debugID !== 0) {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: prevInstance._debugID,\n        type: &apos;replace with&apos;,\n        payload: markup.toString()\n      });\n    } else {\n      var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n      if (nextInstance._debugID !== 0) {\n        ReactInstrumentation.debugTool.onHostOperation({\n          instanceID: nextInstance._debugID,\n          type: &apos;mount&apos;,\n          payload: markup.toString()\n        });\n      }\n    }\n  };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n  dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n  replaceDelimitedText: replaceDelimitedText,\n\n  /**\n   * Updates a component&apos;s children by processing a series of updates. The\n   * update configurations are each expected to have a `parentNode` property.\n   *\n   * @param {array&lt;object&gt;} updates List of update configurations.\n   * @internal\n   */\n  processUpdates: function (parentNode, updates) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n    }\n\n    for (var k = 0; k &lt; updates.length; k++) {\n      var update = updates[k];\n      switch (update.type) {\n        case &apos;INSERT_MARKUP&apos;:\n          insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            ReactInstrumentation.debugTool.onHostOperation({\n              instanceID: parentNodeDebugID,\n              type: &apos;insert child&apos;,\n              payload: { toIndex: update.toIndex, content: update.content.toString() }\n            });\n          }\n          break;\n        case &apos;MOVE_EXISTING&apos;:\n          moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            ReactInstrumentation.debugTool.onHostOperation({\n              instanceID: parentNodeDebugID,\n              type: &apos;move child&apos;,\n              payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n            });\n          }\n          break;\n        case &apos;SET_MARKUP&apos;:\n          setInnerHTML(parentNode, update.content);\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            ReactInstrumentation.debugTool.onHostOperation({\n              instanceID: parentNodeDebugID,\n              type: &apos;replace children&apos;,\n              payload: update.content.toString()\n            });\n          }\n          break;\n        case &apos;TEXT_CONTENT&apos;:\n          setTextContent(parentNode, update.content);\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            ReactInstrumentation.debugTool.onHostOperation({\n              instanceID: parentNodeDebugID,\n              type: &apos;replace text&apos;,\n              payload: update.content.toString()\n            });\n          }\n          break;\n        case &apos;REMOVE_NODE&apos;:\n          removeChild(parentNode, update.fromNode);\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            ReactInstrumentation.debugTool.onHostOperation({\n              instanceID: parentNodeDebugID,\n              type: &apos;remove child&apos;,\n              payload: { fromIndex: update.fromIndex }\n            });\n          }\n          break;\n      }\n    }\n  }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DOMChildrenOperations.js\n// module id = 85\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMNamespaces = {\n  html: &apos;http://www.w3.org/1999/xhtml&apos;,\n  mathml: &apos;http://www.w3.org/1998/Math/MathML&apos;,\n  svg: &apos;http://www.w3.org/2000/svg&apos;\n};\n\nmodule.exports = DOMNamespaces;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DOMNamespaces.js\n// module id = 86\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactErrorUtils = require(&apos;./ReactErrorUtils&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n *   and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n  injectComponentTree: function (Injected) {\n    ComponentTree = Injected;\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(Injected &amp;&amp; Injected.getNodeFromInstance &amp;&amp; Injected.getInstanceFromNode, &apos;EventPluginUtils.injection.injectComponentTree(...): Injected &apos; + &apos;module is missing getNodeFromInstance or getInstanceFromNode.&apos;) : void 0;\n    }\n  },\n  injectTreeTraversal: function (Injected) {\n    TreeTraversal = Injected;\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(Injected &amp;&amp; Injected.isAncestor &amp;&amp; Injected.getLowestCommonAncestor, &apos;EventPluginUtils.injection.injectTreeTraversal(...): Injected &apos; + &apos;module is missing isAncestor or getLowestCommonAncestor.&apos;) : void 0;\n    }\n  }\n};\n\nfunction isEndish(topLevelType) {\n  return topLevelType === &apos;topMouseUp&apos; || topLevelType === &apos;topTouchEnd&apos; || topLevelType === &apos;topTouchCancel&apos;;\n}\n\nfunction isMoveish(topLevelType) {\n  return topLevelType === &apos;topMouseMove&apos; || topLevelType === &apos;topTouchMove&apos;;\n}\nfunction isStartish(topLevelType) {\n  return topLevelType === &apos;topMouseDown&apos; || topLevelType === &apos;topTouchStart&apos;;\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  validateEventDispatches = function (event) {\n    var dispatchListeners = event._dispatchListeners;\n    var dispatchInstances = event._dispatchInstances;\n\n    var listenersIsArr = Array.isArray(dispatchListeners);\n    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n    var instancesIsArr = Array.isArray(dispatchInstances);\n    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(instancesIsArr === listenersIsArr &amp;&amp; instancesLen === listenersLen, &apos;EventPluginUtils: Invalid `event`.&apos;) : void 0;\n  };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n  var type = event.type || &apos;unknown-event&apos;;\n  event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n  if (simulated) {\n    ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n  } else {\n    ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n  }\n  event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event&apos;s collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n  var dispatchListeners = event._dispatchListeners;\n  var dispatchInstances = event._dispatchInstances;\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    validateEventDispatches(event);\n  }\n  if (Array.isArray(dispatchListeners)) {\n    for (var i = 0; i &lt; dispatchListeners.length; i++) {\n      if (event.isPropagationStopped()) {\n        break;\n      }\n      // Listeners and Instances are two parallel arrays that are always in sync.\n      executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n    }\n  } else if (dispatchListeners) {\n    executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n  }\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event&apos;s collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who&apos;s listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n  var dispatchListeners = event._dispatchListeners;\n  var dispatchInstances = event._dispatchInstances;\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    validateEventDispatches(event);\n  }\n  if (Array.isArray(dispatchListeners)) {\n    for (var i = 0; i &lt; dispatchListeners.length; i++) {\n      if (event.isPropagationStopped()) {\n        break;\n      }\n      // Listeners and Instances are two parallel arrays that are always in sync.\n      if (dispatchListeners[i](event, dispatchInstances[i])) {\n        return dispatchInstances[i];\n      }\n    }\n  } else if (dispatchListeners) {\n    if (dispatchListeners(event, dispatchInstances)) {\n      return dispatchInstances;\n    }\n  }\n  return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n  var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n  event._dispatchInstances = null;\n  event._dispatchListeners = null;\n  return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn&apos;t really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    validateEventDispatches(event);\n  }\n  var dispatchListener = event._dispatchListeners;\n  var dispatchInstance = event._dispatchInstances;\n  !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;executeDirectDispatch(...): Invalid `event`.&apos;) : _prodInvariant(&apos;103&apos;) : void 0;\n  event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n  var res = dispatchListener ? dispatchListener(event) : null;\n  event.currentTarget = null;\n  event._dispatchListeners = null;\n  event._dispatchInstances = null;\n  return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n  return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n  isEndish: isEndish,\n  isMoveish: isMoveish,\n  isStartish: isStartish,\n\n  executeDirectDispatch: executeDirectDispatch,\n  executeDispatchesInOrder: executeDispatchesInOrder,\n  executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n  hasDispatches: hasDispatches,\n\n  getInstanceFromNode: function (node) {\n    return ComponentTree.getInstanceFromNode(node);\n  },\n  getNodeFromInstance: function (node) {\n    return ComponentTree.getNodeFromInstance(node);\n  },\n  isAncestor: function (a, b) {\n    return TreeTraversal.isAncestor(a, b);\n  },\n  getLowestCommonAncestor: function (a, b) {\n    return TreeTraversal.getLowestCommonAncestor(a, b);\n  },\n  getParentInstance: function (inst) {\n    return TreeTraversal.getParentInstance(inst);\n  },\n  traverseTwoPhase: function (target, fn, arg) {\n    return TreeTraversal.traverseTwoPhase(target, fn, arg);\n  },\n  traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n    return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n  },\n\n  injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/EventPluginUtils.js\n// module id = 87\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    &apos;=&apos;: &apos;=0&apos;,\n    &apos;:&apos;: &apos;=2&apos;\n  };\n  var escapedString = (&apos;&apos; + key).replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n\n  return &apos;$&apos; + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n  var unescapeRegex = /(=0|=2)/g;\n  var unescaperLookup = {\n    &apos;=0&apos;: &apos;=&apos;,\n    &apos;=2&apos;: &apos;:&apos;\n  };\n  var keySubstring = key[0] === &apos;.&apos; &amp;&amp; key[1] === &apos;$&apos; ? key.substring(2) : key.substring(1);\n\n  return (&apos;&apos; + keySubstring).replace(unescapeRegex, function (match) {\n    return unescaperLookup[match];\n  });\n}\n\nvar KeyEscapeUtils = {\n  escape: escape,\n  unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/KeyEscapeUtils.js\n// module id = 88\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactPropTypesSecret = require(&apos;./ReactPropTypesSecret&apos;);\nvar propTypesFactory = require(&apos;prop-types/factory&apos;);\n\nvar React = require(&apos;react/lib/React&apos;);\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar hasReadOnlyValue = {\n  &apos;button&apos;: true,\n  &apos;checkbox&apos;: true,\n  &apos;image&apos;: true,\n  &apos;hidden&apos;: true,\n  &apos;radio&apos;: true,\n  &apos;reset&apos;: true,\n  &apos;submit&apos;: true\n};\n\nfunction _assertSingleLink(inputProps) {\n  !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\&apos;t want to use valueLink and vice versa.&apos;) : _prodInvariant(&apos;87&apos;) : void 0;\n}\nfunction _assertValueLink(inputProps) {\n  _assertSingleLink(inputProps);\n  !(inputProps.value == null &amp;&amp; inputProps.onChange == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\&apos;t want to use valueLink.&apos;) : _prodInvariant(&apos;88&apos;) : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n  _assertSingleLink(inputProps);\n  !(inputProps.checked == null &amp;&amp; inputProps.onChange == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\&apos;t want to use checkedLink&apos;) : _prodInvariant(&apos;89&apos;) : void 0;\n}\n\nvar propTypes = {\n  value: function (props, propName, componentName) {\n    if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n      return null;\n    }\n    return new Error(&apos;You provided a `value` prop to a form field without an &apos; + &apos;`onChange` handler. This will render a read-only field. If &apos; + &apos;the field should be mutable use `defaultValue`. Otherwise, &apos; + &apos;set either `onChange` or `readOnly`.&apos;);\n  },\n  checked: function (props, propName, componentName) {\n    if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n      return null;\n    }\n    return new Error(&apos;You provided a `checked` prop to a form field without an &apos; + &apos;`onChange` handler. This will render a read-only field. If &apos; + &apos;the field should be mutable use `defaultChecked`. Otherwise, &apos; + &apos;set either `onChange` or `readOnly`.&apos;);\n  },\n  onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n  if (owner) {\n    var name = owner.getName();\n    if (name) {\n      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n    }\n  }\n  return &apos;&apos;;\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n  checkPropTypes: function (tagName, props, owner) {\n    for (var propName in propTypes) {\n      if (propTypes.hasOwnProperty(propName)) {\n        var error = propTypes[propName](props, propName, tagName, &apos;prop&apos;, null, ReactPropTypesSecret);\n      }\n      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {\n        // Only monitor this failure once because there tends to be a lot of the\n        // same error.\n        loggedTypeFailures[error.message] = true;\n\n        var addendum = getDeclarationErrorAddendum(owner);\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Failed form propType: %s%s&apos;, error.message, addendum) : void 0;\n      }\n    }\n  },\n\n  /**\n   * @param {object} inputProps Props for form component\n   * @return {*} current value of the input either from value prop or link.\n   */\n  getValue: function (inputProps) {\n    if (inputProps.valueLink) {\n      _assertValueLink(inputProps);\n      return inputProps.valueLink.value;\n    }\n    return inputProps.value;\n  },\n\n  /**\n   * @param {object} inputProps Props for form component\n   * @return {*} current checked status of the input either from checked prop\n   *             or link.\n   */\n  getChecked: function (inputProps) {\n    if (inputProps.checkedLink) {\n      _assertCheckedLink(inputProps);\n      return inputProps.checkedLink.value;\n    }\n    return inputProps.checked;\n  },\n\n  /**\n   * @param {object} inputProps Props for form component\n   * @param {SyntheticEvent} event change event to handle\n   */\n  executeOnChange: function (inputProps, event) {\n    if (inputProps.valueLink) {\n      _assertValueLink(inputProps);\n      return inputProps.valueLink.requestChange(event.target.value);\n    } else if (inputProps.checkedLink) {\n      _assertCheckedLink(inputProps);\n      return inputProps.checkedLink.requestChange(event.target.checked);\n    } else if (inputProps.onChange) {\n      return inputProps.onChange.call(undefined, event);\n    }\n  }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/LinkedValueUtils.js\n// module id = 89\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n  /**\n   * Optionally injectable hook for swapping out mount images in the middle of\n   * the tree.\n   */\n  replaceNodeWithMarkup: null,\n\n  /**\n   * Optionally injectable hook for processing a queue of child updates. Will\n   * later move into MultiChildComponents.\n   */\n  processChildrenUpdates: null,\n\n  injection: {\n    injectEnvironment: function (environment) {\n      !!injected ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactCompositeComponent: injectEnvironment() can only be called once.&apos;) : _prodInvariant(&apos;104&apos;) : void 0;\n      ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n      ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n      injected = true;\n    }\n  }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactComponentEnvironment.js\n// module id = 90\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n  try {\n    func(a);\n  } catch (x) {\n    if (caughtError === null) {\n      caughtError = x;\n    }\n  }\n}\n\nvar ReactErrorUtils = {\n  invokeGuardedCallback: invokeGuardedCallback,\n\n  /**\n   * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n   * handler are sure to be rethrown by rethrowCaughtError.\n   */\n  invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n  /**\n   * During execution of guarded functions we will capture the first error which\n   * we will rethrow to be handled by the top level error handler.\n   */\n  rethrowCaughtError: function () {\n    if (caughtError) {\n      var error = caughtError;\n      caughtError = null;\n      throw error;\n    }\n  }\n};\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  /**\n   * To help development we can get better devtools integration by simulating a\n   * real browser event.\n   */\n  if (typeof window !== &apos;undefined&apos; &amp;&amp; typeof window.dispatchEvent === &apos;function&apos; &amp;&amp; typeof document !== &apos;undefined&apos; &amp;&amp; typeof document.createEvent === &apos;function&apos;) {\n    var fakeNode = document.createElement(&apos;react&apos;);\n    ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n      var boundFunc = func.bind(null, a);\n      var evtType = &apos;react-&apos; + name;\n      fakeNode.addEventListener(evtType, boundFunc, false);\n      var evt = document.createEvent(&apos;Event&apos;);\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n      fakeNode.removeEventListener(evtType, boundFunc, false);\n    };\n  }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactErrorUtils.js\n// module id = 91\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar ReactInstanceMap = require(&apos;./ReactInstanceMap&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nfunction enqueueUpdate(internalInstance) {\n  ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n  var type = typeof arg;\n  if (type !== &apos;object&apos;) {\n    return type;\n  }\n  var displayName = arg.constructor &amp;&amp; arg.constructor.name || type;\n  var keys = Object.keys(arg);\n  if (keys.length &gt; 0 &amp;&amp; keys.length &lt; 20) {\n    return displayName + &apos; (keys: &apos; + keys.join(&apos;, &apos;) + &apos;)&apos;;\n  }\n  return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n  var internalInstance = ReactInstanceMap.get(publicInstance);\n  if (!internalInstance) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var ctor = publicInstance.constructor;\n      // Only warn when we have a callerName. Otherwise we should be silent.\n      // We&apos;re probably calling from enqueueCallback. We don&apos;t want to warn\n      // there because we already warned for the corresponding lifecycle method.\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!callerName, &apos;%s(...): Can only update a mounted or mounting component. &apos; + &apos;This usually means you called %s() on an unmounted component. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, ctor &amp;&amp; (ctor.displayName || ctor.name) || &apos;ReactClass&apos;) : void 0;\n    }\n    return null;\n  }\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(ReactCurrentOwner.current == null, &apos;%s(...): Cannot update during an existing state transition (such as &apos; + &apos;within `render` or another component\\&apos;s constructor). Render methods &apos; + &apos;should be a pure function of props and state; constructor &apos; + &apos;side-effects are an anti-pattern, but can be moved to &apos; + &apos;`componentWillMount`.&apos;, callerName) : void 0;\n  }\n\n  return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var owner = ReactCurrentOwner.current;\n      if (owner !== null) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(owner._warnedAboutRefsInRender, &apos;%s is accessing isMounted inside its render() function. &apos; + &apos;render() should be a pure function of props and state. It should &apos; + &apos;never access something that requires stale data from the previous &apos; + &apos;render, such as refs. Move this logic to componentDidMount and &apos; + &apos;componentDidUpdate instead.&apos;, owner.getName() || &apos;A component&apos;) : void 0;\n        owner._warnedAboutRefsInRender = true;\n      }\n    }\n    var internalInstance = ReactInstanceMap.get(publicInstance);\n    if (internalInstance) {\n      // During componentWillMount and render this will still be null but after\n      // that will always render to something. At least for now. So we can use\n      // this hack.\n      return !!internalInstance._renderedComponent;\n    } else {\n      return false;\n    }\n  },\n\n  /**\n   * Enqueue a callback that will be executed after all the pending updates\n   * have processed.\n   *\n   * @param {ReactClass} publicInstance The instance to use as `this` context.\n   * @param {?function} callback Called after state is updated.\n   * @param {string} callerName Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueCallback: function (publicInstance, callback, callerName) {\n    ReactUpdateQueue.validateCallback(callback, callerName);\n    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n    // Previously we would throw an error if we didn&apos;t have an internal\n    // instance. Since we want to make it a no-op instead, we mirror the same\n    // behavior we have in other enqueue* methods.\n    // We also need to ignore callbacks in componentWillMount. See\n    // enqueueUpdates.\n    if (!internalInstance) {\n      return null;\n    }\n\n    if (internalInstance._pendingCallbacks) {\n      internalInstance._pendingCallbacks.push(callback);\n    } else {\n      internalInstance._pendingCallbacks = [callback];\n    }\n    // TODO: The callback here is ignored when setState is called from\n    // componentWillMount. Either fix it or disallow doing so completely in\n    // favor of getInitialState. Alternatively, we can disallow\n    // componentWillMount during server-side rendering.\n    enqueueUpdate(internalInstance);\n  },\n\n  enqueueCallbackInternal: function (internalInstance, callback) {\n    if (internalInstance._pendingCallbacks) {\n      internalInstance._pendingCallbacks.push(callback);\n    } else {\n      internalInstance._pendingCallbacks = [callback];\n    }\n    enqueueUpdate(internalInstance);\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component&apos;s state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance) {\n    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;forceUpdate&apos;);\n\n    if (!internalInstance) {\n      return;\n    }\n\n    internalInstance._pendingForceUpdate = true;\n\n    enqueueUpdate(internalInstance);\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback) {\n    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;replaceState&apos;);\n\n    if (!internalInstance) {\n      return;\n    }\n\n    internalInstance._pendingStateQueue = [completeState];\n    internalInstance._pendingReplaceState = true;\n\n    // Future-proof 15.5\n    if (callback !== undefined &amp;&amp; callback !== null) {\n      ReactUpdateQueue.validateCallback(callback, &apos;replaceState&apos;);\n      if (internalInstance._pendingCallbacks) {\n        internalInstance._pendingCallbacks.push(callback);\n      } else {\n        internalInstance._pendingCallbacks = [callback];\n      }\n    }\n\n    enqueueUpdate(internalInstance);\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      ReactInstrumentation.debugTool.onSetState();\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(partialState != null, &apos;setState(...): You passed an undefined or null state object; &apos; + &apos;instead, use forceUpdate().&apos;) : void 0;\n    }\n\n    var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, &apos;setState&apos;);\n\n    if (!internalInstance) {\n      return;\n    }\n\n    var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n    queue.push(partialState);\n\n    enqueueUpdate(internalInstance);\n  },\n\n  enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n    internalInstance._pendingElement = nextElement;\n    // TODO: introduce _pendingContext instead of setting it directly.\n    internalInstance._context = nextContext;\n    enqueueUpdate(internalInstance);\n  },\n\n  validateCallback: function (callback, callerName) {\n    !(!callback || typeof callback === &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.&apos;, callerName, formatUnexpectedArgument(callback)) : _prodInvariant(&apos;122&apos;, callerName, formatUnexpectedArgument(callback)) : void 0;\n  }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactUpdateQueue.js\n// module id = 92\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n&apos;use strict&apos;;\n\n/**\n * Create a function which has &apos;unsafe&apos; privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== &apos;undefined&apos; &amp;&amp; MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/createMicrosoftUnsafeLocalFunction.js\n// module id = 93\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n  var charCode;\n  var keyCode = nativeEvent.keyCode;\n\n  if (&apos;charCode&apos; in nativeEvent) {\n    charCode = nativeEvent.charCode;\n\n    // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n    if (charCode === 0 &amp;&amp; keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  }\n\n  // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n  if (charCode &gt;= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getEventCharCode.js\n// module id = 94\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n  &apos;Alt&apos;: &apos;altKey&apos;,\n  &apos;Control&apos;: &apos;ctrlKey&apos;,\n  &apos;Meta&apos;: &apos;metaKey&apos;,\n  &apos;Shift&apos;: &apos;shiftKey&apos;\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getEventModifierState.js\n// module id = 95\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n  var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n  // Normalize SVG &lt;use&gt; element events #4963\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n  return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getEventTarget.js\n// module id = 96\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n  useHasFeature = document.implementation &amp;&amp; document.implementation.hasFeature &amp;&amp;\n  // always returns true in newer browsers as per the standard.\n  // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n  document.implementation.hasFeature(&apos;&apos;, &apos;&apos;) !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n  if (!ExecutionEnvironment.canUseDOM || capture &amp;&amp; !(&apos;addEventListener&apos; in document)) {\n    return false;\n  }\n\n  var eventName = &apos;on&apos; + eventNameSuffix;\n  var isSupported = eventName in document;\n\n  if (!isSupported) {\n    var element = document.createElement(&apos;div&apos;);\n    element.setAttribute(eventName, &apos;return;&apos;);\n    isSupported = typeof element[eventName] === &apos;function&apos;;\n  }\n\n  if (!isSupported &amp;&amp; useHasFeature &amp;&amp; eventNameSuffix === &apos;wheel&apos;) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature(&apos;Events.wheel&apos;, &apos;3.0&apos;);\n  }\n\n  return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/isEventSupported.js\n// module id = 97\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n  var prevEmpty = prevElement === null || prevElement === false;\n  var nextEmpty = nextElement === null || nextElement === false;\n  if (prevEmpty || nextEmpty) {\n    return prevEmpty === nextEmpty;\n  }\n\n  var prevType = typeof prevElement;\n  var nextType = typeof nextElement;\n  if (prevType === &apos;string&apos; || prevType === &apos;number&apos;) {\n    return nextType === &apos;string&apos; || nextType === &apos;number&apos;;\n  } else {\n    return nextType === &apos;object&apos; &amp;&amp; prevElement.type === nextElement.type &amp;&amp; prevElement.key === nextElement.key;\n  }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/shouldUpdateReactComponent.js\n// module id = 98\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it&apos;s\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, &lt;b&gt;&lt;div&gt;&lt;/div&gt;&lt;/b&gt; is invalid but we don&apos;t warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // &lt;p&gt; tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n  var specialTags = [&apos;address&apos;, &apos;applet&apos;, &apos;area&apos;, &apos;article&apos;, &apos;aside&apos;, &apos;base&apos;, &apos;basefont&apos;, &apos;bgsound&apos;, &apos;blockquote&apos;, &apos;body&apos;, &apos;br&apos;, &apos;button&apos;, &apos;caption&apos;, &apos;center&apos;, &apos;col&apos;, &apos;colgroup&apos;, &apos;dd&apos;, &apos;details&apos;, &apos;dir&apos;, &apos;div&apos;, &apos;dl&apos;, &apos;dt&apos;, &apos;embed&apos;, &apos;fieldset&apos;, &apos;figcaption&apos;, &apos;figure&apos;, &apos;footer&apos;, &apos;form&apos;, &apos;frame&apos;, &apos;frameset&apos;, &apos;h1&apos;, &apos;h2&apos;, &apos;h3&apos;, &apos;h4&apos;, &apos;h5&apos;, &apos;h6&apos;, &apos;head&apos;, &apos;header&apos;, &apos;hgroup&apos;, &apos;hr&apos;, &apos;html&apos;, &apos;iframe&apos;, &apos;img&apos;, &apos;input&apos;, &apos;isindex&apos;, &apos;li&apos;, &apos;link&apos;, &apos;listing&apos;, &apos;main&apos;, &apos;marquee&apos;, &apos;menu&apos;, &apos;menuitem&apos;, &apos;meta&apos;, &apos;nav&apos;, &apos;noembed&apos;, &apos;noframes&apos;, &apos;noscript&apos;, &apos;object&apos;, &apos;ol&apos;, &apos;p&apos;, &apos;param&apos;, &apos;plaintext&apos;, &apos;pre&apos;, &apos;script&apos;, &apos;section&apos;, &apos;select&apos;, &apos;source&apos;, &apos;style&apos;, &apos;summary&apos;, &apos;table&apos;, &apos;tbody&apos;, &apos;td&apos;, &apos;template&apos;, &apos;textarea&apos;, &apos;tfoot&apos;, &apos;th&apos;, &apos;thead&apos;, &apos;title&apos;, &apos;tr&apos;, &apos;track&apos;, &apos;ul&apos;, &apos;wbr&apos;, &apos;xmp&apos;];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  var inScopeTags = [&apos;applet&apos;, &apos;caption&apos;, &apos;html&apos;, &apos;table&apos;, &apos;td&apos;, &apos;th&apos;, &apos;marquee&apos;, &apos;object&apos;, &apos;template&apos;,\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for &lt;title&gt;, including it here\n  // errs on the side of fewer warnings\n  &apos;foreignObject&apos;, &apos;desc&apos;, &apos;title&apos;];\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n  var buttonScopeTags = inScopeTags.concat([&apos;button&apos;]);\n\n  // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n  var impliedEndTags = [&apos;dd&apos;, &apos;dt&apos;, &apos;li&apos;, &apos;option&apos;, &apos;optgroup&apos;, &apos;p&apos;, &apos;rp&apos;, &apos;rt&apos;];\n\n  var emptyAncestorInfo = {\n    current: null,\n\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  var updatedAncestorInfo = function (oldInfo, tag, instance) {\n    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n    var info = { tag: tag, instance: instance };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    }\n\n    // See rules for &apos;li&apos;, &apos;dd&apos;, &apos;dt&apos; start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    if (specialTags.indexOf(tag) !== -1 &amp;&amp; tag !== &apos;address&apos; &amp;&amp; tag !== &apos;div&apos; &amp;&amp; tag !== &apos;p&apos;) {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === &apos;form&apos;) {\n      ancestorInfo.formTag = info;\n    }\n    if (tag === &apos;a&apos;) {\n      ancestorInfo.aTagInScope = info;\n    }\n    if (tag === &apos;button&apos;) {\n      ancestorInfo.buttonTagInScope = info;\n    }\n    if (tag === &apos;nobr&apos;) {\n      ancestorInfo.nobrTagInScope = info;\n    }\n    if (tag === &apos;p&apos;) {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n    if (tag === &apos;li&apos;) {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n    if (tag === &apos;dd&apos; || tag === &apos;dt&apos;) {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n\n  /**\n   * Returns whether\n   */\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let&apos;s check if we&apos;re in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case &apos;select&apos;:\n        return tag === &apos;option&apos; || tag === &apos;optgroup&apos; || tag === &apos;#text&apos;;\n      case &apos;optgroup&apos;:\n        return tag === &apos;option&apos; || tag === &apos;#text&apos;;\n      // Strictly speaking, seeing an &lt;option&gt; doesn&apos;t mean we&apos;re in a &lt;select&gt;\n      // but\n      case &apos;option&apos;:\n        return tag === &apos;#text&apos;;\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n      case &apos;tr&apos;:\n        return tag === &apos;th&apos; || tag === &apos;td&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n      case &apos;tbody&apos;:\n      case &apos;thead&apos;:\n      case &apos;tfoot&apos;:\n        return tag === &apos;tr&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n      case &apos;colgroup&apos;:\n        return tag === &apos;col&apos; || tag === &apos;template&apos;;\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n      case &apos;table&apos;:\n        return tag === &apos;caption&apos; || tag === &apos;colgroup&apos; || tag === &apos;tbody&apos; || tag === &apos;tfoot&apos; || tag === &apos;thead&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;\n\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n      case &apos;head&apos;:\n        return tag === &apos;base&apos; || tag === &apos;basefont&apos; || tag === &apos;bgsound&apos; || tag === &apos;link&apos; || tag === &apos;meta&apos; || tag === &apos;title&apos; || tag === &apos;noscript&apos; || tag === &apos;noframes&apos; || tag === &apos;style&apos; || tag === &apos;script&apos; || tag === &apos;template&apos;;\n\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n      case &apos;html&apos;:\n        return tag === &apos;head&apos; || tag === &apos;body&apos;;\n      case &apos;#document&apos;:\n        return tag === &apos;html&apos;;\n    }\n\n    // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n    switch (tag) {\n      case &apos;h1&apos;:\n      case &apos;h2&apos;:\n      case &apos;h3&apos;:\n      case &apos;h4&apos;:\n      case &apos;h5&apos;:\n      case &apos;h6&apos;:\n        return parentTag !== &apos;h1&apos; &amp;&amp; parentTag !== &apos;h2&apos; &amp;&amp; parentTag !== &apos;h3&apos; &amp;&amp; parentTag !== &apos;h4&apos; &amp;&amp; parentTag !== &apos;h5&apos; &amp;&amp; parentTag !== &apos;h6&apos;;\n\n      case &apos;rp&apos;:\n      case &apos;rt&apos;:\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case &apos;body&apos;:\n      case &apos;caption&apos;:\n      case &apos;col&apos;:\n      case &apos;colgroup&apos;:\n      case &apos;frame&apos;:\n      case &apos;head&apos;:\n      case &apos;html&apos;:\n      case &apos;tbody&apos;:\n      case &apos;td&apos;:\n      case &apos;tfoot&apos;:\n      case &apos;th&apos;:\n      case &apos;thead&apos;:\n      case &apos;tr&apos;:\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we&apos;re down here, then none of those matched and\n        // so we allow it only if we don&apos;t know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n\n  /**\n   * Returns whether\n   */\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case &apos;address&apos;:\n      case &apos;article&apos;:\n      case &apos;aside&apos;:\n      case &apos;blockquote&apos;:\n      case &apos;center&apos;:\n      case &apos;details&apos;:\n      case &apos;dialog&apos;:\n      case &apos;dir&apos;:\n      case &apos;div&apos;:\n      case &apos;dl&apos;:\n      case &apos;fieldset&apos;:\n      case &apos;figcaption&apos;:\n      case &apos;figure&apos;:\n      case &apos;footer&apos;:\n      case &apos;header&apos;:\n      case &apos;hgroup&apos;:\n      case &apos;main&apos;:\n      case &apos;menu&apos;:\n      case &apos;nav&apos;:\n      case &apos;ol&apos;:\n      case &apos;p&apos;:\n      case &apos;section&apos;:\n      case &apos;summary&apos;:\n      case &apos;ul&apos;:\n      case &apos;pre&apos;:\n      case &apos;listing&apos;:\n      case &apos;table&apos;:\n      case &apos;hr&apos;:\n      case &apos;xmp&apos;:\n      case &apos;h1&apos;:\n      case &apos;h2&apos;:\n      case &apos;h3&apos;:\n      case &apos;h4&apos;:\n      case &apos;h5&apos;:\n      case &apos;h6&apos;:\n        return ancestorInfo.pTagInButtonScope;\n\n      case &apos;form&apos;:\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case &apos;li&apos;:\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case &apos;dd&apos;:\n      case &apos;dt&apos;:\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case &apos;button&apos;:\n        return ancestorInfo.buttonTagInScope;\n\n      case &apos;a&apos;:\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case &apos;nobr&apos;:\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  /**\n   * Given a ReactCompositeComponent instance, return a list of its recursive\n   * owners, starting at the root and ending with the instance itself.\n   */\n  var findOwnerStack = function (instance) {\n    if (!instance) {\n      return [];\n    }\n\n    var stack = [];\n    do {\n      stack.push(instance);\n    } while (instance = instance._currentElement._owner);\n    stack.reverse();\n    return stack;\n  };\n\n  var didWarn = {};\n\n  validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo &amp;&amp; parentInfo.tag;\n\n    if (childText != null) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(childTag == null, &apos;validateDOMNesting: when childText is passed, childTag should be null&apos;) : void 0;\n      childTag = &apos;#text&apos;;\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var problematic = invalidParent || invalidAncestor;\n\n    if (problematic) {\n      var ancestorTag = problematic.tag;\n      var ancestorInstance = problematic.instance;\n\n      var childOwner = childInstance &amp;&amp; childInstance._currentElement._owner;\n      var ancestorOwner = ancestorInstance &amp;&amp; ancestorInstance._currentElement._owner;\n\n      var childOwners = findOwnerStack(childOwner);\n      var ancestorOwners = findOwnerStack(ancestorOwner);\n\n      var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n      var i;\n\n      var deepestCommon = -1;\n      for (i = 0; i &lt; minStackLen; i++) {\n        if (childOwners[i] === ancestorOwners[i]) {\n          deepestCommon = i;\n        } else {\n          break;\n        }\n      }\n\n      var UNKNOWN = &apos;(unknown)&apos;;\n      var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n        return inst.getName() || UNKNOWN;\n      });\n      var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n        return inst.getName() || UNKNOWN;\n      });\n      var ownerInfo = [].concat(\n      // If the parent and child instances have a common owner ancestor, start\n      // with that -- otherwise we just start with the parent&apos;s owners.\n      deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n      // If we&apos;re warning about an invalid (non-parent) ancestry, add &apos;...&apos;\n      invalidAncestor ? [&apos;...&apos;] : [], childOwnerNames, childTag).join(&apos; &gt; &apos;);\n\n      var warnKey = !!invalidParent + &apos;|&apos; + childTag + &apos;|&apos; + ancestorTag + &apos;|&apos; + ownerInfo;\n      if (didWarn[warnKey]) {\n        return;\n      }\n      didWarn[warnKey] = true;\n\n      var tagDisplayName = childTag;\n      var whitespaceInfo = &apos;&apos;;\n      if (childTag === &apos;#text&apos;) {\n        if (/\\S/.test(childText)) {\n          tagDisplayName = &apos;Text nodes&apos;;\n        } else {\n          tagDisplayName = &apos;Whitespace text nodes&apos;;\n          whitespaceInfo = &apos; Make sure you don\\&apos;t have any extra whitespace between tags on &apos; + &apos;each line of your source code.&apos;;\n        }\n      } else {\n        tagDisplayName = &apos;&lt;&apos; + childTag + &apos;&gt;&apos;;\n      }\n\n      if (invalidParent) {\n        var info = &apos;&apos;;\n        if (ancestorTag === &apos;table&apos; &amp;&amp; childTag === &apos;tr&apos;) {\n          info += &apos; Add a &lt;tbody&gt; to your code to match the DOM tree generated by &apos; + &apos;the browser.&apos;;\n        }\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;validateDOMNesting(...): %s cannot appear as a child of &lt;%s&gt;.%s &apos; + &apos;See %s.%s&apos;, tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n      } else {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;validateDOMNesting(...): %s cannot appear as a descendant of &apos; + &apos;&lt;%s&gt;. See %s.&apos;, tagDisplayName, ancestorTag, ownerInfo) : void 0;\n      }\n    }\n  };\n\n  validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n  // For testing\n  validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo &amp;&amp; parentInfo.tag;\n    return isTagValidWithParent(tag, parentTag) &amp;&amp; !findInvalidAncestorForTag(tag, ancestorInfo);\n  };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/validateDOMNesting.js\n// module id = 99\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactNoopUpdateQueue = require(&apos;./ReactNoopUpdateQueue&apos;);\n\nvar canDefineProperty = require(&apos;./canDefineProperty&apos;);\nvar emptyObject = require(&apos;fbjs/lib/emptyObject&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n  !(typeof partialState === &apos;object&apos; || typeof partialState === &apos;function&apos; || partialState == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;setState(...): takes an object of state variables to update or a function which returns an object of state variables.&apos;) : _prodInvariant(&apos;85&apos;) : void 0;\n  this.updater.enqueueSetState(this, partialState);\n  if (callback) {\n    this.updater.enqueueCallback(this, callback, &apos;setState&apos;);\n  }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component&apos;s state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this);\n  if (callback) {\n    this.updater.enqueueCallback(this, callback, &apos;forceUpdate&apos;);\n  }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we&apos;re not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it&apos;s accessed.\n */\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var deprecatedAPIs = {\n    isMounted: [&apos;isMounted&apos;, &apos;Instead, make sure to clean up subscriptions and pending requests in &apos; + &apos;componentWillUnmount to prevent memory leaks.&apos;],\n    replaceState: [&apos;replaceState&apos;, &apos;Refactor your code to use setState instead (see &apos; + &apos;https://github.com/facebook/react/issues/3236).&apos;]\n  };\n  var defineDeprecationWarning = function (methodName, info) {\n    if (canDefineProperty) {\n      Object.defineProperty(ReactComponent.prototype, methodName, {\n        get: function () {\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s(...) is deprecated in plain JavaScript React classes. %s&apos;, info[0], info[1]) : void 0;\n          return undefined;\n        }\n      });\n    }\n  };\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nmodule.exports = ReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactComponent.js\n// module id = 101\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nfunction warnNoop(publicInstance, callerName) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    var constructor = publicInstance.constructor;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s(...): Can only update a mounted or mounting component. &apos; + &apos;This usually means you called %s() on an unmounted component. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, constructor &amp;&amp; (constructor.displayName || constructor.name) || &apos;ReactClass&apos;) : void 0;\n  }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Enqueue a callback that will be executed after all the pending updates\n   * have processed.\n   *\n   * @param {ReactClass} publicInstance The instance to use as `this` context.\n   * @param {?function} callback Called after state is updated.\n   * @internal\n   */\n  enqueueCallback: function (publicInstance, callback) {},\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component&apos;s state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance) {\n    warnNoop(publicInstance, &apos;forceUpdate&apos;);\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState) {\n    warnNoop(publicInstance, &apos;replaceState&apos;);\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState) {\n    warnNoop(publicInstance, &apos;setState&apos;);\n  }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactNoopUpdateQueue.js\n// module id = 102\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = require(&apos;./emptyFunction&apos;);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n  /**\n   * Listen to DOM events during the bubble phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. &apos;click&apos; or &apos;mouseover&apos;.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  listen: function listen(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, false);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, false);\n        }\n      };\n    } else if (target.attachEvent) {\n      target.attachEvent(&apos;on&apos; + eventType, callback);\n      return {\n        remove: function remove() {\n          target.detachEvent(&apos;on&apos; + eventType, callback);\n        }\n      };\n    }\n  },\n\n  /**\n   * Listen to DOM events during the capture phase.\n   *\n   * @param {DOMEventTarget} target DOM element to register listener on.\n   * @param {string} eventType Event type, e.g. &apos;click&apos; or &apos;mouseover&apos;.\n   * @param {function} callback Callback function.\n   * @return {object} Object with a `remove` method.\n   */\n  capture: function capture(target, eventType, callback) {\n    if (target.addEventListener) {\n      target.addEventListener(eventType, callback, true);\n      return {\n        remove: function remove() {\n          target.removeEventListener(eventType, callback, true);\n        }\n      };\n    } else {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        console.error(&apos;Attempted to listen to events during the capture phase on a &apos; + &apos;browser that does not support the capture phase. Your application &apos; + &apos;will not receive some events.&apos;);\n      }\n      return {\n        remove: emptyFunction\n      };\n    }\n  },\n\n  registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/EventListener.js\n// module id = 133\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n  // IE8 can throw \"Can&apos;t move focus to the control because it is invisible,\n  // not enabled, or of a type that does not accept the focus.\" for all kinds of\n  // reasons that are too expensive and fragile to test.\n  try {\n    node.focus();\n  } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/focusNode.js\n// module id = 134\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n */\nfunction getActiveElement() /*?DOMElement*/{\n  if (typeof document === &apos;undefined&apos;) {\n    return null;\n  }\n  try {\n    return document.activeElement || document.body;\n  } catch (e) {\n    return document.body;\n  }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/getActiveElement.js\n// module id = 135\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n&apos;use strict&apos;;\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require(&apos;./factoryWithTypeCheckers&apos;);\nmodule.exports = function(isValidElement) {\n  // It is still allowed in 15.5.\n  var throwOnDirectAccess = false;\n  return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/prop-types/factory.js\n// module id = 147\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n&apos;use strict&apos;;\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ReactPropTypesSecret = require(&apos;./lib/ReactPropTypesSecret&apos;);\nvar checkPropTypes = require(&apos;./checkPropTypes&apos;);\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === &apos;function&apos;) {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require(&apos;ReactPropTypes&apos;);\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf([&apos;News&apos;,&apos;Photos&apos;]).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null &amp;&amp; typeof propValue !== &apos;string&apos; &amp;&amp;\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            &apos;Expected a string or an URI for &apos; + propName + &apos; in &apos; +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = &apos;&lt;&lt;anonymous&gt;&gt;&apos;;\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker(&apos;array&apos;),\n    bool: createPrimitiveTypeChecker(&apos;boolean&apos;),\n    func: createPrimitiveTypeChecker(&apos;function&apos;),\n    number: createPrimitiveTypeChecker(&apos;number&apos;),\n    object: createPrimitiveTypeChecker(&apos;object&apos;),\n    string: createPrimitiveTypeChecker(&apos;string&apos;),\n    symbol: createPrimitiveTypeChecker(&apos;symbol&apos;),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x &amp;&amp; y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don&apos;t use real\n   * Errors anymore. We don&apos;t inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message) {\n    this.message = message;\n    this.stack = &apos;&apos;;\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          invariant(\n            false,\n            &apos;Calling PropTypes validators directly is not supported by the `prop-types` package. &apos; +\n            &apos;Use `PropTypes.checkPropTypes()` to call them. &apos; +\n            &apos;Read more at http://fb.me/use-check-prop-types&apos;\n          );\n        } else if (process.env.NODE_ENV !== &apos;production&apos; &amp;&amp; typeof console !== &apos;undefined&apos;) {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + &apos;:&apos; + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &amp;&amp;\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount &lt; 3\n          ) {\n            warning(\n              false,\n              &apos;You are manually calling a React.PropTypes validation &apos; +\n              &apos;function for the `%s` prop on `%s`. This is deprecated &apos; +\n              &apos;and will throw in the standalone `prop-types` package. &apos; +\n              &apos;You may be seeing this warning due to a third-party PropTypes &apos; +\n              &apos;library. See https://fb.me/react-warning-dont-call-proptypes &apos; + &apos;for details.&apos;,\n              propFullName,\n              componentName\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required &apos; + (&apos;in `&apos; + componentName + &apos;`, but its value is `null`.&apos;));\n          }\n          return new PropTypeError(&apos;The &apos; + location + &apos; `&apos; + propFullName + &apos;` is marked as required in &apos; + (&apos;`&apos; + componentName + &apos;`, but its value is `undefined`.&apos;));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the &apos;object&apos;\n        // check, but we can offer a more precise error message here rather than\n        // &apos;of type `object`&apos;.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + preciseType + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;`&apos; + expectedType + &apos;`.&apos;));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== &apos;function&apos;) {\n        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside arrayOf.&apos;);\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an array.&apos;));\n      }\n      for (var i = 0; i &lt; propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + &apos;[&apos; + i + &apos;]&apos;, ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected a single ReactElement.&apos;));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + actualClassName + &apos;` supplied to `&apos; + componentName + &apos;`, expected &apos;) + (&apos;instance of `&apos; + expectedClassName + &apos;`.&apos;));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid argument supplied to oneOf, expected an instance of array.&apos;) : void 0;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i &lt; expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues);\n      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of value `&apos; + propValue + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected one of &apos; + valuesString + &apos;.&apos;));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== &apos;function&apos;) {\n        return new PropTypeError(&apos;Property `&apos; + propFullName + &apos;` of component `&apos; + componentName + &apos;` has invalid PropType notation inside objectOf.&apos;);\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== &apos;object&apos;) {\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type &apos; + (&apos;`&apos; + propType + &apos;` supplied to `&apos; + componentName + &apos;`, expected an object.&apos;));\n      }\n      for (var key in propValue) {\n        if (propValue.hasOwnProperty(key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid argument supplied to oneOfType, expected an instance of array.&apos;) : void 0;\n      return emptyFunction.thatReturnsNull;\n    }\n\n    for (var i = 0; i &lt; arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== &apos;function&apos;) {\n        warning(\n          false,\n          &apos;Invalid argument supplid to oneOfType. Expected an array of check functions, but &apos; +\n          &apos;received %s at index %s.&apos;,\n          getPostfixForTypeWarning(checker),\n          i\n        );\n        return emptyFunction.thatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      for (var i = 0; i &lt; arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n          return null;\n        }\n      }\n\n      return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`.&apos;));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` supplied to &apos; + (&apos;`&apos; + componentName + &apos;`, expected a ReactNode.&apos;));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== &apos;object&apos;) {\n        return new PropTypeError(&apos;Invalid &apos; + location + &apos; `&apos; + propFullName + &apos;` of type `&apos; + propType + &apos;` &apos; + (&apos;supplied to `&apos; + componentName + &apos;`, expected `object`.&apos;));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (!checker) {\n          continue;\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + &apos;.&apos; + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case &apos;number&apos;:\n      case &apos;string&apos;:\n      case &apos;undefined&apos;:\n        return true;\n      case &apos;boolean&apos;:\n        return !propValue;\n      case &apos;object&apos;:\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === &apos;symbol&apos;) {\n      return true;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === &apos;Symbol&apos;\n    if (propValue[&apos;@@toStringTag&apos;] === &apos;Symbol&apos;) {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === &apos;function&apos; &amp;&amp; propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return &apos;array&apos;;\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return &apos;function&apos; rather than\n      // &apos;object&apos; for typeof a RegExp. We&apos;ll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return &apos;object&apos;;\n    }\n    if (isSymbol(propType, propValue)) {\n      return &apos;symbol&apos;;\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === &apos;undefined&apos; || propValue === null) {\n      return &apos;&apos; + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === &apos;object&apos;) {\n      if (propValue instanceof Date) {\n        return &apos;date&apos;;\n      } else if (propValue instanceof RegExp) {\n        return &apos;regexp&apos;;\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case &apos;array&apos;:\n      case &apos;object&apos;:\n        return &apos;an &apos; + type;\n      case &apos;boolean&apos;:\n      case &apos;date&apos;:\n      case &apos;regexp&apos;:\n        return &apos;a &apos; + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/prop-types/factoryWithTypeCheckers.js\n// module id = 148\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n&apos;use strict&apos;;\n\nvar ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/prop-types/lib/ReactPropTypesSecret.js\n// module id = 149\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridRow: true,\n  gridColumn: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = [&apos;Webkit&apos;, &apos;ms&apos;, &apos;Moz&apos;, &apos;O&apos;];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = &apos;&apos; but IE8\n * doesn&apos;t like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value &apos;clock&apos; properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n  background: {\n    backgroundAttachment: true,\n    backgroundColor: true,\n    backgroundImage: true,\n    backgroundPositionX: true,\n    backgroundPositionY: true,\n    backgroundRepeat: true\n  },\n  backgroundPosition: {\n    backgroundPositionX: true,\n    backgroundPositionY: true\n  },\n  border: {\n    borderWidth: true,\n    borderStyle: true,\n    borderColor: true\n  },\n  borderBottom: {\n    borderBottomWidth: true,\n    borderBottomStyle: true,\n    borderBottomColor: true\n  },\n  borderLeft: {\n    borderLeftWidth: true,\n    borderLeftStyle: true,\n    borderLeftColor: true\n  },\n  borderRight: {\n    borderRightWidth: true,\n    borderRightStyle: true,\n    borderRightColor: true\n  },\n  borderTop: {\n    borderTopWidth: true,\n    borderTopStyle: true,\n    borderTopColor: true\n  },\n  font: {\n    fontStyle: true,\n    fontVariant: true,\n    fontWeight: true,\n    fontSize: true,\n    lineHeight: true,\n    fontFamily: true\n  },\n  outline: {\n    outlineWidth: true,\n    outlineStyle: true,\n    outlineColor: true\n  }\n};\n\nvar CSSProperty = {\n  isUnitlessNumber: isUnitlessNumber,\n  shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/CSSProperty.js\n// module id = 154\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require(&apos;./PooledClass&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n  function CallbackQueue(arg) {\n    _classCallCheck(this, CallbackQueue);\n\n    this._callbacks = null;\n    this._contexts = null;\n    this._arg = arg;\n  }\n\n  /**\n   * Enqueues a callback to be invoked when `notifyAll` is invoked.\n   *\n   * @param {function} callback Invoked when `notifyAll` is invoked.\n   * @param {?object} context Context to call `callback` with.\n   * @internal\n   */\n\n\n  CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n    this._callbacks = this._callbacks || [];\n    this._callbacks.push(callback);\n    this._contexts = this._contexts || [];\n    this._contexts.push(context);\n  };\n\n  /**\n   * Invokes all enqueued callbacks and clears the queue. This is invoked after\n   * the DOM representation of a component has been created or updated.\n   *\n   * @internal\n   */\n\n\n  CallbackQueue.prototype.notifyAll = function notifyAll() {\n    var callbacks = this._callbacks;\n    var contexts = this._contexts;\n    var arg = this._arg;\n    if (callbacks &amp;&amp; contexts) {\n      !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Mismatched list of contexts in callback queue&apos;) : _prodInvariant(&apos;24&apos;) : void 0;\n      this._callbacks = null;\n      this._contexts = null;\n      for (var i = 0; i &lt; callbacks.length; i++) {\n        callbacks[i].call(contexts[i], arg);\n      }\n      callbacks.length = 0;\n      contexts.length = 0;\n    }\n  };\n\n  CallbackQueue.prototype.checkpoint = function checkpoint() {\n    return this._callbacks ? this._callbacks.length : 0;\n  };\n\n  CallbackQueue.prototype.rollback = function rollback(len) {\n    if (this._callbacks &amp;&amp; this._contexts) {\n      this._callbacks.length = len;\n      this._contexts.length = len;\n    }\n  };\n\n  /**\n   * Resets the internal queue.\n   *\n   * @internal\n   */\n\n\n  CallbackQueue.prototype.reset = function reset() {\n    this._callbacks = null;\n    this._contexts = null;\n  };\n\n  /**\n   * `PooledClass` looks for this.\n   */\n\n\n  CallbackQueue.prototype.destructor = function destructor() {\n    this.reset();\n  };\n\n  return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/CallbackQueue.js\n// module id = 155\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n\nvar quoteAttributeValueForBrowser = require(&apos;./quoteAttributeValueForBrowser&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp(&apos;^[&apos; + DOMProperty.ATTRIBUTE_NAME_START_CHAR + &apos;][&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;);\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n  if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n    return true;\n  }\n  if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n    return false;\n  }\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n  illegalAttributeNameCache[attributeName] = true;\n  process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid attribute name: `%s`&apos;, attributeName) : void 0;\n  return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n  return value == null || propertyInfo.hasBooleanValue &amp;&amp; !value || propertyInfo.hasNumericValue &amp;&amp; isNaN(value) || propertyInfo.hasPositiveNumericValue &amp;&amp; value &lt; 1 || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n  /**\n   * Creates markup for the ID property.\n   *\n   * @param {string} id Unescaped ID.\n   * @return {string} Markup string.\n   */\n  createMarkupForID: function (id) {\n    return DOMProperty.ID_ATTRIBUTE_NAME + &apos;=&apos; + quoteAttributeValueForBrowser(id);\n  },\n\n  setAttributeForID: function (node, id) {\n    node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n  },\n\n  createMarkupForRoot: function () {\n    return DOMProperty.ROOT_ATTRIBUTE_NAME + &apos;=\"\"&apos;;\n  },\n\n  setAttributeForRoot: function (node) {\n    node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, &apos;&apos;);\n  },\n\n  /**\n   * Creates markup for a property.\n   *\n   * @param {string} name\n   * @param {*} value\n   * @return {?string} Markup string, or null if the property was invalid.\n   */\n  createMarkupForProperty: function (name, value) {\n    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n    if (propertyInfo) {\n      if (shouldIgnoreValue(propertyInfo, value)) {\n        return &apos;&apos;;\n      }\n      var attributeName = propertyInfo.attributeName;\n      if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === true) {\n        return attributeName + &apos;=\"\"&apos;;\n      }\n      return attributeName + &apos;=&apos; + quoteAttributeValueForBrowser(value);\n    } else if (DOMProperty.isCustomAttribute(name)) {\n      if (value == null) {\n        return &apos;&apos;;\n      }\n      return name + &apos;=&apos; + quoteAttributeValueForBrowser(value);\n    }\n    return null;\n  },\n\n  /**\n   * Creates markup for a custom property.\n   *\n   * @param {string} name\n   * @param {*} value\n   * @return {string} Markup string, or empty string if the property was invalid.\n   */\n  createMarkupForCustomAttribute: function (name, value) {\n    if (!isAttributeNameSafe(name) || value == null) {\n      return &apos;&apos;;\n    }\n    return name + &apos;=&apos; + quoteAttributeValueForBrowser(value);\n  },\n\n  /**\n   * Sets the value for a property on a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   * @param {*} value\n   */\n  setValueForProperty: function (node, name, value) {\n    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n    if (propertyInfo) {\n      var mutationMethod = propertyInfo.mutationMethod;\n      if (mutationMethod) {\n        mutationMethod(node, value);\n      } else if (shouldIgnoreValue(propertyInfo, value)) {\n        this.deleteValueForProperty(node, name);\n        return;\n      } else if (propertyInfo.mustUseProperty) {\n        // Contrary to `setAttribute`, object properties are properly\n        // `toString`ed by IE8/9.\n        node[propertyInfo.propertyName] = value;\n      } else {\n        var attributeName = propertyInfo.attributeName;\n        var namespace = propertyInfo.attributeNamespace;\n        // `setAttribute` with objects becomes only `[object]` in IE8/9,\n        // (&apos;&apos; + value) makes it output the correct toString()-value.\n        if (namespace) {\n          node.setAttributeNS(namespace, attributeName, &apos;&apos; + value);\n        } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue &amp;&amp; value === true) {\n          node.setAttribute(attributeName, &apos;&apos;);\n        } else {\n          node.setAttribute(attributeName, &apos;&apos; + value);\n        }\n      }\n    } else if (DOMProperty.isCustomAttribute(name)) {\n      DOMPropertyOperations.setValueForAttribute(node, name, value);\n      return;\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var payload = {};\n      payload[name] = value;\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n        type: &apos;update attribute&apos;,\n        payload: payload\n      });\n    }\n  },\n\n  setValueForAttribute: function (node, name, value) {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n    if (value == null) {\n      node.removeAttribute(name);\n    } else {\n      node.setAttribute(name, &apos;&apos; + value);\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var payload = {};\n      payload[name] = value;\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n        type: &apos;update attribute&apos;,\n        payload: payload\n      });\n    }\n  },\n\n  /**\n   * Deletes an attributes from a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   */\n  deleteValueForAttribute: function (node, name) {\n    node.removeAttribute(name);\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n        type: &apos;remove attribute&apos;,\n        payload: name\n      });\n    }\n  },\n\n  /**\n   * Deletes the value for a property on a node.\n   *\n   * @param {DOMElement} node\n   * @param {string} name\n   */\n  deleteValueForProperty: function (node, name) {\n    var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n    if (propertyInfo) {\n      var mutationMethod = propertyInfo.mutationMethod;\n      if (mutationMethod) {\n        mutationMethod(node, undefined);\n      } else if (propertyInfo.mustUseProperty) {\n        var propName = propertyInfo.propertyName;\n        if (propertyInfo.hasBooleanValue) {\n          node[propName] = false;\n        } else {\n          node[propName] = &apos;&apos;;\n        }\n      } else {\n        node.removeAttribute(propertyInfo.attributeName);\n      }\n    } else if (DOMProperty.isCustomAttribute(name)) {\n      node.removeAttribute(name);\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n        type: &apos;remove attribute&apos;,\n        payload: name\n      });\n    }\n  }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DOMPropertyOperations.js\n// module id = 156\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactDOMComponentFlags = {\n  hasCachedChildNodes: 1 &lt;&lt; 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMComponentFlags.js\n// module id = 157\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar LinkedValueUtils = require(&apos;./LinkedValueUtils&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n  if (this._rootNodeID &amp;&amp; this._wrapperState.pendingUpdate) {\n    this._wrapperState.pendingUpdate = false;\n\n    var props = this._currentElement.props;\n    var value = LinkedValueUtils.getValue(props);\n\n    if (value != null) {\n      updateOptions(this, Boolean(props.multiple), value);\n    }\n  }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n  if (owner) {\n    var name = owner.getName();\n    if (name) {\n      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n    }\n  }\n  return &apos;&apos;;\n}\n\nvar valuePropNames = [&apos;value&apos;, &apos;defaultValue&apos;];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n  var owner = inst._currentElement._owner;\n  LinkedValueUtils.checkPropTypes(&apos;select&apos;, props, owner);\n\n  if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;\n    didWarnValueLink = true;\n  }\n\n  for (var i = 0; i &lt; valuePropNames.length; i++) {\n    var propName = valuePropNames[i];\n    if (props[propName] == null) {\n      continue;\n    }\n    var isArray = Array.isArray(props[propName]);\n    if (props.multiple &amp;&amp; !isArray) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;The `%s` prop supplied to &lt;select&gt; must be an array if &apos; + &apos;`multiple` is true.%s&apos;, propName, getDeclarationErrorAddendum(owner)) : void 0;\n    } else if (!props.multiple &amp;&amp; isArray) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;The `%s` prop supplied to &lt;select&gt; must be a scalar &apos; + &apos;value if `multiple` is false.%s&apos;, propName, getDeclarationErrorAddendum(owner)) : void 0;\n    }\n  }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n  var selectedValue, i;\n  var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n  if (multiple) {\n    selectedValue = {};\n    for (i = 0; i &lt; propValue.length; i++) {\n      selectedValue[&apos;&apos; + propValue[i]] = true;\n    }\n    for (i = 0; i &lt; options.length; i++) {\n      var selected = selectedValue.hasOwnProperty(options[i].value);\n      if (options[i].selected !== selected) {\n        options[i].selected = selected;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn&apos;t consistent across all\n    // browsers for all cases.\n    selectedValue = &apos;&apos; + propValue;\n    for (i = 0; i &lt; options.length; i++) {\n      if (options[i].value === selectedValue) {\n        options[i].selected = true;\n        return;\n      }\n    }\n    if (options.length) {\n      options[0].selected = true;\n    }\n  }\n}\n\n/**\n * Implements a &lt;select&gt; host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n  getHostProps: function (inst, props) {\n    return _assign({}, props, {\n      onChange: inst._wrapperState.onChange,\n      value: undefined\n    });\n  },\n\n  mountWrapper: function (inst, props) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      checkSelectPropTypes(inst, props);\n    }\n\n    var value = LinkedValueUtils.getValue(props);\n    inst._wrapperState = {\n      pendingUpdate: false,\n      initialValue: value != null ? value : props.defaultValue,\n      listeners: null,\n      onChange: _handleChange.bind(inst),\n      wasMultiple: Boolean(props.multiple)\n    };\n\n    if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValueDefaultValue) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Select elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled select &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;) : void 0;\n      didWarnValueDefaultValue = true;\n    }\n  },\n\n  getSelectValueContext: function (inst) {\n    // ReactDOMOption looks at this initial value so the initial generated\n    // markup has correct `selected` attributes\n    return inst._wrapperState.initialValue;\n  },\n\n  postUpdateWrapper: function (inst) {\n    var props = inst._currentElement.props;\n\n    // After the initial mount, we control selected-ness manually so don&apos;t pass\n    // this value down\n    inst._wrapperState.initialValue = undefined;\n\n    var wasMultiple = inst._wrapperState.wasMultiple;\n    inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n    var value = LinkedValueUtils.getValue(props);\n    if (value != null) {\n      inst._wrapperState.pendingUpdate = false;\n      updateOptions(inst, Boolean(props.multiple), value);\n    } else if (wasMultiple !== Boolean(props.multiple)) {\n      // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n      if (props.defaultValue != null) {\n        updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n      } else {\n        // Revert the select back to its default unselected state.\n        updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : &apos;&apos;);\n      }\n    }\n  }\n};\n\nfunction _handleChange(event) {\n  var props = this._currentElement.props;\n  var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n  if (this._rootNodeID) {\n    this._wrapperState.pendingUpdate = true;\n  }\n  ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n  return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMSelect.js\n// module id = 158\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n  injectEmptyComponentFactory: function (factory) {\n    emptyComponentFactory = factory;\n  }\n};\n\nvar ReactEmptyComponent = {\n  create: function (instantiate) {\n    return emptyComponentFactory(instantiate);\n  }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactEmptyComponent.js\n// module id = 159\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactFeatureFlags = {\n  // When true, call console.time() before and .timeEnd() after each top-level\n  // render (both initial renders and updates). Useful when looking at prod-mode\n  // timeline profiles in Chrome, for example.\n  logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactFeatureFlags.js\n// module id = 160\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n  // This accepts a class that receives the tag string. This is a catch all\n  // that can render any kind of tag.\n  injectGenericComponentClass: function (componentClass) {\n    genericComponentClass = componentClass;\n  },\n  // This accepts a text component class that takes the text string to be\n  // rendered as props.\n  injectTextComponentClass: function (componentClass) {\n    textComponentClass = componentClass;\n  }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n  !genericComponentClass ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;There is no registered component for the tag %s&apos;, element.type) : _prodInvariant(&apos;111&apos;, element.type) : void 0;\n  return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n  return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n  return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n  createInternalComponent: createInternalComponent,\n  createInstanceForText: createInstanceForText,\n  isTextComponent: isTextComponent,\n  injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactHostComponent.js\n// module id = 161\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactDOMSelection = require(&apos;./ReactDOMSelection&apos;);\n\nvar containsNode = require(&apos;fbjs/lib/containsNode&apos;);\nvar focusNode = require(&apos;fbjs/lib/focusNode&apos;);\nvar getActiveElement = require(&apos;fbjs/lib/getActiveElement&apos;);\n\nfunction isInDocument(node) {\n  return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn&apos;t\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n  hasSelectionCapabilities: function (elem) {\n    var nodeName = elem &amp;&amp; elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();\n    return nodeName &amp;&amp; (nodeName === &apos;input&apos; &amp;&amp; elem.type === &apos;text&apos; || nodeName === &apos;textarea&apos; || elem.contentEditable === &apos;true&apos;);\n  },\n\n  getSelectionInformation: function () {\n    var focusedElem = getActiveElement();\n    return {\n      focusedElem: focusedElem,\n      selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n    };\n  },\n\n  /**\n   * @restoreSelection: If any selection information was potentially lost,\n   * restore it. This is useful when performing operations that could remove dom\n   * nodes and place them back in, resulting in focus being lost.\n   */\n  restoreSelection: function (priorSelectionInformation) {\n    var curFocusedElem = getActiveElement();\n    var priorFocusedElem = priorSelectionInformation.focusedElem;\n    var priorSelectionRange = priorSelectionInformation.selectionRange;\n    if (curFocusedElem !== priorFocusedElem &amp;&amp; isInDocument(priorFocusedElem)) {\n      if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n        ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n      }\n      focusNode(priorFocusedElem);\n    }\n  },\n\n  /**\n   * @getSelection: Gets the selection bounds of a focused textarea, input or\n   * contentEditable node.\n   * -@input: Look up selection bounds of this input\n   * -@return {start: selectionStart, end: selectionEnd}\n   */\n  getSelection: function (input) {\n    var selection;\n\n    if (&apos;selectionStart&apos; in input) {\n      // Modern browser with input or textarea.\n      selection = {\n        start: input.selectionStart,\n        end: input.selectionEnd\n      };\n    } else if (document.selection &amp;&amp; input.nodeName &amp;&amp; input.nodeName.toLowerCase() === &apos;input&apos;) {\n      // IE8 input.\n      var range = document.selection.createRange();\n      // There can only be one selection per document in IE, so it must\n      // be in our element.\n      if (range.parentElement() === input) {\n        selection = {\n          start: -range.moveStart(&apos;character&apos;, -input.value.length),\n          end: -range.moveEnd(&apos;character&apos;, -input.value.length)\n        };\n      }\n    } else {\n      // Content editable or old IE textarea.\n      selection = ReactDOMSelection.getOffsets(input);\n    }\n\n    return selection || { start: 0, end: 0 };\n  },\n\n  /**\n   * @setSelection: Sets the selection bounds of a textarea or input and focuses\n   * the input.\n   * -@input     Set selection bounds of this input or textarea\n   * -@offsets   Object of same form that is returned from get*\n   */\n  setSelection: function (input, offsets) {\n    var start = offsets.start;\n    var end = offsets.end;\n    if (end === undefined) {\n      end = start;\n    }\n\n    if (&apos;selectionStart&apos; in input) {\n      input.selectionStart = start;\n      input.selectionEnd = Math.min(end, input.value.length);\n    } else if (document.selection &amp;&amp; input.nodeName &amp;&amp; input.nodeName.toLowerCase() === &apos;input&apos;) {\n      var range = input.createTextRange();\n      range.collapse(true);\n      range.moveStart(&apos;character&apos;, start);\n      range.moveEnd(&apos;character&apos;, end - start);\n      range.select();\n    } else {\n      ReactDOMSelection.setOffsets(input, offsets);\n    }\n  }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactInputSelection.js\n// module id = 162\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar React = require(&apos;react/lib/React&apos;);\nvar ReactBrowserEventEmitter = require(&apos;./ReactBrowserEventEmitter&apos;);\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactDOMContainerInfo = require(&apos;./ReactDOMContainerInfo&apos;);\nvar ReactDOMFeatureFlags = require(&apos;./ReactDOMFeatureFlags&apos;);\nvar ReactFeatureFlags = require(&apos;./ReactFeatureFlags&apos;);\nvar ReactInstanceMap = require(&apos;./ReactInstanceMap&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar ReactMarkupChecksum = require(&apos;./ReactMarkupChecksum&apos;);\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\nvar ReactUpdateQueue = require(&apos;./ReactUpdateQueue&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar emptyObject = require(&apos;fbjs/lib/emptyObject&apos;);\nvar instantiateReactComponent = require(&apos;./instantiateReactComponent&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar setInnerHTML = require(&apos;./setInnerHTML&apos;);\nvar shouldUpdateReactComponent = require(&apos;./shouldUpdateReactComponent&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that&apos;s not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n  var minLen = Math.min(string1.length, string2.length);\n  for (var i = 0; i &lt; minLen; i++) {\n    if (string1.charAt(i) !== string2.charAt(i)) {\n      return i;\n    }\n  }\n  return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOC_NODE_TYPE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction internalGetID(node) {\n  // If node is something like a window, document, or text node, none of\n  // which support attributes or a .getAttribute method, gracefully return\n  // the empty string, as if the attribute were missing.\n  return node.getAttribute &amp;&amp; node.getAttribute(ATTR_NAME) || &apos;&apos;;\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n  var markerName;\n  if (ReactFeatureFlags.logTopLevelRenders) {\n    var wrappedElement = wrapperInstance._currentElement.props.child;\n    var type = wrappedElement.type;\n    markerName = &apos;React mount: &apos; + (typeof type === &apos;string&apos; ? type : type.displayName || type.name);\n    console.time(markerName);\n  }\n\n  var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n  );\n\n  if (markerName) {\n    console.timeEnd(markerName);\n  }\n\n  wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n  ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n  var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n  /* useCreateElement */\n  !shouldReuseMarkup &amp;&amp; ReactDOMFeatureFlags.useCreateElement);\n  transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n  ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    ReactInstrumentation.debugTool.onBeginFlush();\n  }\n  ReactReconciler.unmountComponent(instance, safely);\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    ReactInstrumentation.debugTool.onEndFlush();\n  }\n\n  if (container.nodeType === DOC_NODE_TYPE) {\n    container = container.documentElement;\n  }\n\n  // http://jsperf.com/emptying-a-node\n  while (container.lastChild) {\n    container.removeChild(container.lastChild);\n  }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n  var rootEl = getReactRootElementInContainer(container);\n  if (rootEl) {\n    var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n    return !!(inst &amp;&amp; inst._hostParent);\n  }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n  var rootEl = getReactRootElementInContainer(container);\n  return !!(rootEl &amp;&amp; isReactNode(rootEl) &amp;&amp; !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n  return !!(node &amp;&amp; (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n  return isValidContainer(node) &amp;&amp; (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n  var rootEl = getReactRootElementInContainer(container);\n  var prevHostInstance = rootEl &amp;&amp; ReactDOMComponentTree.getInstanceFromNode(rootEl);\n  return prevHostInstance &amp;&amp; !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n  var root = getHostRootInstanceInContainer(container);\n  return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n  this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  TopLevelWrapper.displayName = &apos;TopLevelWrapper&apos;;\n}\nTopLevelWrapper.prototype.render = function () {\n  return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n *   ReactMount.render(\n *     component,\n *     document.getElementById(&apos;container&apos;)\n *   );\n *\n *   &lt;div id=\"container\"&gt;                   &lt;-- Supplied `container`.\n *     &lt;div data-reactid=\".3\"&gt;              &lt;-- Rendered reactRoot of React\n *       // ...                                 component.\n *     &lt;/div&gt;\n *   &lt;/div&gt;\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n  TopLevelWrapper: TopLevelWrapper,\n\n  /**\n   * Used by devtools. The keys are not important.\n   */\n  _instancesByReactRootID: instancesByReactRootID,\n\n  /**\n   * This is a hook provided to support rendering React components while\n   * ensuring that the apparent scroll position of its `container` does not\n   * change.\n   *\n   * @param {DOMElement} container The `container` being rendered into.\n   * @param {function} renderCallback This must be called once to do the render.\n   */\n  scrollMonitor: function (container, renderCallback) {\n    renderCallback();\n  },\n\n  /**\n   * Take a component that&apos;s already mounted into the DOM and replace its props\n   * @param {ReactComponent} prevComponent component instance already in the DOM\n   * @param {ReactElement} nextElement component instance to render\n   * @param {DOMElement} container container to render into\n   * @param {?function} callback function triggered on completion\n   */\n  _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n    ReactMount.scrollMonitor(container, function () {\n      ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n      if (callback) {\n        ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n      }\n    });\n\n    return prevComponent;\n  },\n\n  /**\n   * Render a new component into the DOM. Hooked by hooks!\n   *\n   * @param {ReactElement} nextElement element to render\n   * @param {DOMElement} container container to render into\n   * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n   * @return {ReactComponent} nextComponent\n   */\n  _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n    // Various parts of our code (such as ReactCompositeComponent&apos;s\n    // _renderValidatedComponent) assume that calls to render aren&apos;t nested;\n    // verify that that&apos;s the case.\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(ReactCurrentOwner.current == null, &apos;_renderNewRootComponent(): Render methods should be a pure function &apos; + &apos;of props and state; triggering nested component updates from &apos; + &apos;render is not allowed. If necessary, trigger nested updates in &apos; + &apos;componentDidUpdate. Check the render method of %s.&apos;, ReactCurrentOwner.current &amp;&amp; ReactCurrentOwner.current.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n\n    !isValidContainer(container) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;_registerComponent(...): Target container is not a DOM element.&apos;) : _prodInvariant(&apos;37&apos;) : void 0;\n\n    ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n    var componentInstance = instantiateReactComponent(nextElement, false);\n\n    // The initial render is synchronous but any updates that happen during\n    // rendering, in componentWillMount or componentDidMount, will be batched\n    // according to the current batching strategy.\n\n    ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n    var wrapperID = componentInstance._instance.rootID;\n    instancesByReactRootID[wrapperID] = componentInstance;\n\n    return componentInstance;\n  },\n\n  /**\n   * Renders a React component into the DOM in the supplied `container`.\n   *\n   * If the React component was previously rendered into `container`, this will\n   * perform an update on it and only mutate the DOM as necessary to reflect the\n   * latest React component.\n   *\n   * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n   * @param {ReactElement} nextElement Component element to render.\n   * @param {DOMElement} container DOM element to render into.\n   * @param {?function} callback function triggered on completion\n   * @return {ReactComponent} Component instance rendered in `container`.\n   */\n  renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n    !(parentComponent != null &amp;&amp; ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;parentComponent must be a valid React Component&apos;) : _prodInvariant(&apos;38&apos;) : void 0;\n    return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n  },\n\n  _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n    ReactUpdateQueue.validateCallback(callback, &apos;ReactDOM.render&apos;);\n    !React.isValidElement(nextElement) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactDOM.render(): Invalid component element.%s&apos;, typeof nextElement === &apos;string&apos; ? &apos; Instead of passing a string like \\&apos;div\\&apos;, pass &apos; + &apos;React.createElement(\\&apos;div\\&apos;) or &lt;div /&gt;.&apos; : typeof nextElement === &apos;function&apos; ? &apos; Instead of passing a class like Foo, pass &apos; + &apos;React.createElement(Foo) or &lt;Foo /&gt;.&apos; :\n    // Check if it quacks like an element\n    nextElement != null &amp;&amp; nextElement.props !== undefined ? &apos; This may be caused by unintentionally loading two independent &apos; + &apos;copies of React.&apos; : &apos;&apos;) : _prodInvariant(&apos;39&apos;, typeof nextElement === &apos;string&apos; ? &apos; Instead of passing a string like \\&apos;div\\&apos;, pass &apos; + &apos;React.createElement(\\&apos;div\\&apos;) or &lt;div /&gt;.&apos; : typeof nextElement === &apos;function&apos; ? &apos; Instead of passing a class like Foo, pass &apos; + &apos;React.createElement(Foo) or &lt;Foo /&gt;.&apos; : nextElement != null &amp;&amp; nextElement.props !== undefined ? &apos; This may be caused by unintentionally loading two independent &apos; + &apos;copies of React.&apos; : &apos;&apos;) : void 0;\n\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== &apos;BODY&apos;, &apos;render(): Rendering components directly into document.body is &apos; + &apos;discouraged, since its children are often manipulated by third-party &apos; + &apos;scripts and browser extensions. This may lead to subtle &apos; + &apos;reconciliation issues. Try rendering into a container element created &apos; + &apos;for your app.&apos;) : void 0;\n\n    var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n    var nextContext;\n    if (parentComponent) {\n      var parentInst = ReactInstanceMap.get(parentComponent);\n      nextContext = parentInst._processChildContext(parentInst._context);\n    } else {\n      nextContext = emptyObject;\n    }\n\n    var prevComponent = getTopLevelWrapperInContainer(container);\n\n    if (prevComponent) {\n      var prevWrappedElement = prevComponent._currentElement;\n      var prevElement = prevWrappedElement.props.child;\n      if (shouldUpdateReactComponent(prevElement, nextElement)) {\n        var publicInst = prevComponent._renderedComponent.getPublicInstance();\n        var updatedCallback = callback &amp;&amp; function () {\n          callback.call(publicInst);\n        };\n        ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n        return publicInst;\n      } else {\n        ReactMount.unmountComponentAtNode(container);\n      }\n    }\n\n    var reactRootElement = getReactRootElementInContainer(container);\n    var containerHasReactMarkup = reactRootElement &amp;&amp; !!internalGetID(reactRootElement);\n    var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!containerHasNonRootReactChild, &apos;render(...): Replacing React-rendered children with a new root &apos; + &apos;component. If you intended to update the children of this node, &apos; + &apos;you should instead have the existing children update their state &apos; + &apos;and render the new components instead of calling ReactDOM.render.&apos;) : void 0;\n\n      if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n        var rootElementSibling = reactRootElement;\n        while (rootElementSibling) {\n          if (internalGetID(rootElementSibling)) {\n            process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;render(): Target node has markup rendered by React, but there &apos; + &apos;are unrelated nodes as well. This is most commonly caused by &apos; + &apos;white-space inserted around server-rendered markup.&apos;) : void 0;\n            break;\n          }\n          rootElementSibling = rootElementSibling.nextSibling;\n        }\n      }\n    }\n\n    var shouldReuseMarkup = containerHasReactMarkup &amp;&amp; !prevComponent &amp;&amp; !containerHasNonRootReactChild;\n    var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n    if (callback) {\n      callback.call(component);\n    }\n    return component;\n  },\n\n  /**\n   * Renders a React component into the DOM in the supplied `container`.\n   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n   *\n   * If the React component was previously rendered into `container`, this will\n   * perform an update on it and only mutate the DOM as necessary to reflect the\n   * latest React component.\n   *\n   * @param {ReactElement} nextElement Component element to render.\n   * @param {DOMElement} container DOM element to render into.\n   * @param {?function} callback function triggered on completion\n   * @return {ReactComponent} Component instance rendered in `container`.\n   */\n  render: function (nextElement, container, callback) {\n    return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n  },\n\n  /**\n   * Unmounts and destroys the React component rendered in the `container`.\n   * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n   *\n   * @param {DOMElement} container DOM element containing a React component.\n   * @return {boolean} True if a component was found in and unmounted from\n   *                   `container`\n   */\n  unmountComponentAtNode: function (container) {\n    // Various parts of our code (such as ReactCompositeComponent&apos;s\n    // _renderValidatedComponent) assume that calls to render aren&apos;t nested;\n    // verify that that&apos;s the case. (Strictly speaking, unmounting won&apos;t cause a\n    // render but we still don&apos;t expect to be in a render call here.)\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(ReactCurrentOwner.current == null, &apos;unmountComponentAtNode(): Render methods should be a pure function &apos; + &apos;of props and state; triggering nested component updates from render &apos; + &apos;is not allowed. If necessary, trigger nested updates in &apos; + &apos;componentDidUpdate. Check the render method of %s.&apos;, ReactCurrentOwner.current &amp;&amp; ReactCurrentOwner.current.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n\n    !isValidContainer(container) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;unmountComponentAtNode(...): Target container is not a DOM element.&apos;) : _prodInvariant(&apos;40&apos;) : void 0;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!nodeIsRenderedByOtherInstance(container), &apos;unmountComponentAtNode(): The node you\\&apos;re attempting to unmount &apos; + &apos;was rendered by another copy of React.&apos;) : void 0;\n    }\n\n    var prevComponent = getTopLevelWrapperInContainer(container);\n    if (!prevComponent) {\n      // Check if the node being unmounted was rendered by React, but isn&apos;t a\n      // root node.\n      var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n      // Check if the container itself is a React root node.\n      var isContainerReactRoot = container.nodeType === 1 &amp;&amp; container.hasAttribute(ROOT_ATTR_NAME);\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(!containerHasNonRootReactChild, &apos;unmountComponentAtNode(): The node you\\&apos;re attempting to unmount &apos; + &apos;was rendered by React and is not a top-level container. %s&apos;, isContainerReactRoot ? &apos;You may have accidentally passed in a React root node instead &apos; + &apos;of its container.&apos; : &apos;Instead, have the parent component update its state and &apos; + &apos;rerender in order to remove this component.&apos;) : void 0;\n      }\n\n      return false;\n    }\n    delete instancesByReactRootID[prevComponent._instance.rootID];\n    ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n    return true;\n  },\n\n  _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n    !isValidContainer(container) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;mountComponentIntoNode(...): Target container is not valid.&apos;) : _prodInvariant(&apos;41&apos;) : void 0;\n\n    if (shouldReuseMarkup) {\n      var rootElement = getReactRootElementInContainer(container);\n      if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n        ReactDOMComponentTree.precacheNode(instance, rootElement);\n        return;\n      } else {\n        var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n        rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n        var rootMarkup = rootElement.outerHTML;\n        rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n        var normalizedMarkup = markup;\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          // because rootMarkup is retrieved from the DOM, various normalizations\n          // will have occurred which will not be present in `markup`. Here,\n          // insert markup into a &lt;div&gt; or &lt;iframe&gt; depending on the container\n          // type to perform the same normalizations before comparing.\n          var normalizer;\n          if (container.nodeType === ELEMENT_NODE_TYPE) {\n            normalizer = document.createElement(&apos;div&apos;);\n            normalizer.innerHTML = markup;\n            normalizedMarkup = normalizer.innerHTML;\n          } else {\n            normalizer = document.createElement(&apos;iframe&apos;);\n            document.body.appendChild(normalizer);\n            normalizer.contentDocument.write(markup);\n            normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n            document.body.removeChild(normalizer);\n          }\n        }\n\n        var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n        var difference = &apos; (client) &apos; + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + &apos;\\n (server) &apos; + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n        !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;You\\&apos;re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s&apos;, difference) : _prodInvariant(&apos;42&apos;, difference) : void 0;\n\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;React attempted to reuse markup in a container but the &apos; + &apos;checksum was invalid. This generally means that you are &apos; + &apos;using server rendering and the markup generated on the &apos; + &apos;server was not what the client was expecting. React injected &apos; + &apos;new markup to compensate which works but you have lost many &apos; + &apos;of the benefits of server rendering. Instead, figure out &apos; + &apos;why the markup being generated is different on the client &apos; + &apos;or server:\\n%s&apos;, difference) : void 0;\n        }\n      }\n    }\n\n    !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;You\\&apos;re trying to render a component to the document but you didn\\&apos;t use server rendering. We can\\&apos;t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.&apos;) : _prodInvariant(&apos;43&apos;) : void 0;\n\n    if (transaction.useCreateElement) {\n      while (container.lastChild) {\n        container.removeChild(container.lastChild);\n      }\n      DOMLazyTree.insertTreeBefore(container, markup, null);\n    } else {\n      setInnerHTML(container, markup);\n      ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n      if (hostNode._debugID !== 0) {\n        ReactInstrumentation.debugTool.onHostOperation({\n          instanceID: hostNode._debugID,\n          type: &apos;mount&apos;,\n          payload: markup.toString()\n        });\n      }\n    }\n  }\n};\n\nmodule.exports = ReactMount;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactMount.js\n// module id = 163\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar React = require(&apos;react/lib/React&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar ReactNodeTypes = {\n  HOST: 0,\n  COMPOSITE: 1,\n  EMPTY: 2,\n\n  getType: function (node) {\n    if (node === null || node === false) {\n      return ReactNodeTypes.EMPTY;\n    } else if (React.isValidElement(node)) {\n      if (typeof node.type === &apos;function&apos;) {\n        return ReactNodeTypes.COMPOSITE;\n      } else {\n        return ReactNodeTypes.HOST;\n      }\n    }\n    !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Unexpected node: %s&apos;, node) : _prodInvariant(&apos;26&apos;, node) : void 0;\n  }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactNodeTypes.js\n// module id = 164\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactPropTypesSecret.js\n// module id = 165\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ViewportMetrics = {\n\n  currentScrollLeft: 0,\n\n  currentScrollTop: 0,\n\n  refreshScrollValues: function (scrollPosition) {\n    ViewportMetrics.currentScrollLeft = scrollPosition.x;\n    ViewportMetrics.currentScrollTop = scrollPosition.y;\n  }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ViewportMetrics.js\n// module id = 166\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array&lt;*&gt;} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n  !(next != null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;accumulateInto(...): Accumulated items must not be null or undefined.&apos;) : _prodInvariant(&apos;30&apos;) : void 0;\n\n  if (current == null) {\n    return next;\n  }\n\n  // Both are not empty. Warning: Never call x.concat(y) when you are not\n  // certain that x is an Array (x could be a string with concat method).\n  if (Array.isArray(current)) {\n    if (Array.isArray(next)) {\n      current.push.apply(current, next);\n      return current;\n    }\n    current.push(next);\n    return current;\n  }\n\n  if (Array.isArray(next)) {\n    // A bit too dangerous to mutate `next`.\n    return [current].concat(next);\n  }\n\n  return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/accumulateInto.js\n// module id = 167\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n  if (Array.isArray(arr)) {\n    arr.forEach(cb, scope);\n  } else if (arr) {\n    cb.call(scope, arr);\n  }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/forEachAccumulated.js\n// module id = 168\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactNodeTypes = require(&apos;./ReactNodeTypes&apos;);\n\nfunction getHostComponentFromComposite(inst) {\n  var type;\n\n  while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n    inst = inst._renderedComponent;\n  }\n\n  if (type === ReactNodeTypes.HOST) {\n    return inst._renderedComponent;\n  } else if (type === ReactNodeTypes.EMPTY) {\n    return null;\n  }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getHostComponentFromComposite.js\n// module id = 169\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n  if (!contentKey &amp;&amp; ExecutionEnvironment.canUseDOM) {\n    // Prefer textContent to innerText because many browsers support both but\n    // SVG &lt;text&gt; elements don&apos;t support innerText even when &lt;div&gt; does.\n    contentKey = &apos;textContent&apos; in document.documentElement ? &apos;textContent&apos; : &apos;innerText&apos;;\n  }\n  return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getTextContentAccessor.js\n// module id = 170\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar ReactCompositeComponent = require(&apos;./ReactCompositeComponent&apos;);\nvar ReactEmptyComponent = require(&apos;./ReactEmptyComponent&apos;);\nvar ReactHostComponent = require(&apos;./ReactHostComponent&apos;);\n\nvar getNextDebugID = require(&apos;react/lib/getNextDebugID&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n  this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n  if (owner) {\n    var name = owner.getName();\n    if (name) {\n      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n    }\n  }\n  return &apos;&apos;;\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n  return typeof type === &apos;function&apos; &amp;&amp; typeof type.prototype !== &apos;undefined&apos; &amp;&amp; typeof type.prototype.mountComponent === &apos;function&apos; &amp;&amp; typeof type.prototype.receiveComponent === &apos;function&apos;;\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element&apos;s constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n  var instance;\n\n  if (node === null || node === false) {\n    instance = ReactEmptyComponent.create(instantiateReactComponent);\n  } else if (typeof node === &apos;object&apos;) {\n    var element = node;\n    var type = element.type;\n    if (typeof type !== &apos;function&apos; &amp;&amp; typeof type !== &apos;string&apos;) {\n      var info = &apos;&apos;;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        if (type === undefined || typeof type === &apos;object&apos; &amp;&amp; type !== null &amp;&amp; Object.keys(type).length === 0) {\n          info += &apos; You likely forgot to export your component from the file &apos; + &apos;it\\&apos;s defined in.&apos;;\n        }\n      }\n      info += getDeclarationErrorAddendum(element._owner);\n      !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s&apos;, type == null ? type : typeof type, info) : _prodInvariant(&apos;130&apos;, type == null ? type : typeof type, info) : void 0;\n    }\n\n    // Special case string values\n    if (typeof element.type === &apos;string&apos;) {\n      instance = ReactHostComponent.createInternalComponent(element);\n    } else if (isInternalComponentType(element.type)) {\n      // This is temporarily available for custom components that are not string\n      // representations. I.e. ART. Once those are updated to use the string\n      // representation, we can drop this code path.\n      instance = new element.type(element);\n\n      // We renamed this. Allow the old name for compat. :(\n      if (!instance.getHostNode) {\n        instance.getHostNode = instance.getNativeNode;\n      }\n    } else {\n      instance = new ReactCompositeComponentWrapper(element);\n    }\n  } else if (typeof node === &apos;string&apos; || typeof node === &apos;number&apos;) {\n    instance = ReactHostComponent.createInstanceForText(node);\n  } else {\n    !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Encountered invalid React node of type %s&apos;, typeof node) : _prodInvariant(&apos;131&apos;, typeof node) : void 0;\n  }\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(typeof instance.mountComponent === &apos;function&apos; &amp;&amp; typeof instance.receiveComponent === &apos;function&apos; &amp;&amp; typeof instance.getHostNode === &apos;function&apos; &amp;&amp; typeof instance.unmountComponent === &apos;function&apos;, &apos;Only React Components can be mounted.&apos;) : void 0;\n  }\n\n  // These two fields are used by the DOM and ART diffing algorithms\n  // respectively. Instead of using expandos on components, we should be\n  // storing the state needed by the diffing algorithms elsewhere.\n  instance._mountIndex = 0;\n  instance._mountImage = null;\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n  }\n\n  // Internal instances should fully constructed at this point, so they should\n  // not get any new fields added to them at this point.\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    if (Object.preventExtensions) {\n      Object.preventExtensions(instance);\n    }\n  }\n\n  return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n  _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/instantiateReactComponent.js\n// module id = 171\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n  &apos;color&apos;: true,\n  &apos;date&apos;: true,\n  &apos;datetime&apos;: true,\n  &apos;datetime-local&apos;: true,\n  &apos;email&apos;: true,\n  &apos;month&apos;: true,\n  &apos;number&apos;: true,\n  &apos;password&apos;: true,\n  &apos;range&apos;: true,\n  &apos;search&apos;: true,\n  &apos;tel&apos;: true,\n  &apos;text&apos;: true,\n  &apos;time&apos;: true,\n  &apos;url&apos;: true,\n  &apos;week&apos;: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem &amp;&amp; elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();\n\n  if (nodeName === &apos;input&apos;) {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === &apos;textarea&apos;) {\n    return true;\n  }\n\n  return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/isTextInputElement.js\n// module id = 172\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar escapeTextContentForBrowser = require(&apos;./escapeTextContentForBrowser&apos;);\nvar setInnerHTML = require(&apos;./setInnerHTML&apos;);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts &lt;br&gt; instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild &amp;&amp; firstChild === node.lastChild &amp;&amp; firstChild.nodeType === 3) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n  node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n  if (!(&apos;textContent&apos; in document.documentElement)) {\n    setTextContent = function (node, text) {\n      if (node.nodeType === 3) {\n        node.nodeValue = text;\n        return;\n      }\n      setInnerHTML(node, escapeTextContentForBrowser(text));\n    };\n  }\n}\n\nmodule.exports = setTextContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/setTextContent.js\n// module id = 173\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar REACT_ELEMENT_TYPE = require(&apos;./ReactElementSymbol&apos;);\n\nvar getIteratorFn = require(&apos;./getIteratorFn&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar KeyEscapeUtils = require(&apos;./KeyEscapeUtils&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar SEPARATOR = &apos;.&apos;;\nvar SUBSEPARATOR = &apos;:&apos;;\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don&apos;t block potential future ES APIs.\n  if (component &amp;&amp; typeof component === &apos;object&apos; &amp;&amp; component.key != null) {\n    // Explicit key\n    return KeyEscapeUtils.escape(component.key);\n  }\n  // Implicit key determined by the index in the set\n  return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n  var type = typeof children;\n\n  if (type === &apos;undefined&apos; || type === &apos;boolean&apos;) {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  if (children === null || type === &apos;string&apos; || type === &apos;number&apos; ||\n  // The following is inlined from ReactElement. This means we can optimize\n  // some checks. React Fiber also inlines this logic for similar purposes.\n  type === &apos;object&apos; &amp;&amp; children.$$typeof === REACT_ELEMENT_TYPE) {\n    callback(traverseContext, children,\n    // If it&apos;s the only child, treat the name as if it was wrapped in an array\n    // so that it&apos;s consistent if the number of children grows.\n    nameSoFar === &apos;&apos; ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n  var nextNamePrefix = nameSoFar === &apos;&apos; ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (Array.isArray(children)) {\n    for (var i = 0; i &lt; children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getComponentKey(child, i);\n      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n    if (iteratorFn) {\n      var iterator = iteratorFn.call(children);\n      var step;\n      if (iteratorFn !== children.entries) {\n        var ii = 0;\n        while (!(step = iterator.next()).done) {\n          child = step.value;\n          nextName = nextNamePrefix + getComponentKey(child, ii++);\n          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n        }\n      } else {\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          var mapsAsChildrenAddendum = &apos;&apos;;\n          if (ReactCurrentOwner.current) {\n            var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n            if (mapsAsChildrenOwnerName) {\n              mapsAsChildrenAddendum = &apos; Check the render method of `&apos; + mapsAsChildrenOwnerName + &apos;`.&apos;;\n            }\n          }\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(didWarnAboutMaps, &apos;Using Maps as children is not yet fully supported. It is an &apos; + &apos;experimental feature that might be removed. Convert it to a &apos; + &apos;sequence / iterable of keyed ReactElements instead.%s&apos;, mapsAsChildrenAddendum) : void 0;\n          didWarnAboutMaps = true;\n        }\n        // Iterator will provide entry [k,v] tuples rather than values.\n        while (!(step = iterator.next()).done) {\n          var entry = step.value;\n          if (entry) {\n            child = entry[1];\n            nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n          }\n        }\n      }\n    } else if (type === &apos;object&apos;) {\n      var addendum = &apos;&apos;;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        addendum = &apos; If you meant to render a collection of children, use an array &apos; + &apos;instead or wrap the object using createFragment(object) from the &apos; + &apos;React add-ons.&apos;;\n        if (children._isReactElement) {\n          addendum = &apos; It looks like you\\&apos;re using an element created by a different &apos; + &apos;version of React. Make sure to use only one copy of React.&apos;;\n        }\n        if (ReactCurrentOwner.current) {\n          var name = ReactCurrentOwner.current.getName();\n          if (name) {\n            addendum += &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n          }\n        }\n      }\n      var childrenString = String(children);\n      !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Objects are not valid as a React child (found: %s).%s&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : _prodInvariant(&apos;31&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : void 0;\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n  if (children == null) {\n    return 0;\n  }\n\n  return traverseAllChildrenImpl(children, &apos;&apos;, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/traverseAllChildren.js\n// module id = 174\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol[&apos;for&apos;] &amp;&amp; Symbol[&apos;for&apos;](&apos;react.element&apos;) || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactElementSymbol.js\n// module id = 184\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n&apos;use strict&apos;;\n\nvar ReactCurrentOwner = require(&apos;./ReactCurrentOwner&apos;);\nvar ReactComponentTreeHook = require(&apos;./ReactComponentTreeHook&apos;);\nvar ReactElement = require(&apos;./ReactElement&apos;);\n\nvar checkReactTypeSpec = require(&apos;./checkReactTypeSpec&apos;);\n\nvar canDefineProperty = require(&apos;./canDefineProperty&apos;);\nvar getIteratorFn = require(&apos;./getIteratorFn&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = ReactCurrentOwner.current.getName();\n    if (name) {\n      return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n    }\n  }\n  return &apos;&apos;;\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n  if (elementProps !== null &amp;&amp; elementProps !== undefined &amp;&amp; elementProps.__source !== undefined) {\n    var source = elementProps.__source;\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, &apos;&apos;);\n    var lineNumber = source.lineNumber;\n    return &apos; Check your code at &apos; + fileName + &apos;:&apos; + lineNumber + &apos;.&apos;;\n  }\n  return &apos;&apos;;\n}\n\n/**\n * Warn if there&apos;s no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === &apos;string&apos; ? parentType : parentType.displayName || parentType.name;\n    if (parentName) {\n      info = &apos; Check the top-level render call using &lt;&apos; + parentName + &apos;&gt;.&apos;;\n    }\n  }\n  return info;\n}\n\n/**\n * Warn if the element doesn&apos;t have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven&apos;t already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element&apos;s parent&apos;s type.\n */\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n  element._store.validated = true;\n\n  var memoizer = ownerHasKeyUseWarning.uniqueKey || (ownerHasKeyUseWarning.uniqueKey = {});\n\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n  if (memoizer[currentComponentErrorInfo]) {\n    return;\n  }\n  memoizer[currentComponentErrorInfo] = true;\n\n  // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that&apos;s responsible for\n  // assigning it a key.\n  var childOwner = &apos;&apos;;\n  if (element &amp;&amp; element._owner &amp;&amp; element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = &apos; It was passed a child from &apos; + element._owner.getName() + &apos;.&apos;;\n  }\n\n  process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Each child in an array or iterator should have a unique \"key\" prop.&apos; + &apos;%s%s See https://fb.me/react-warning-keys for more information.%s&apos;, currentComponentErrorInfo, childOwner, ReactComponentTreeHook.getCurrentStackAddendum(element)) : void 0;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node&apos;s parent&apos;s type.\n */\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== &apos;object&apos;) {\n    return;\n  }\n  if (Array.isArray(node)) {\n    for (var i = 0; i &lt; node.length; i++) {\n      var child = node[i];\n      if (ReactElement.isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (ReactElement.isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n    // Entry iterators provide implicit keys.\n    if (iteratorFn) {\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n        while (!(step = iterator.next()).done) {\n          if (ReactElement.isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n  var componentClass = element.type;\n  if (typeof componentClass !== &apos;function&apos;) {\n    return;\n  }\n  var name = componentClass.displayName || componentClass.name;\n  if (componentClass.propTypes) {\n    checkReactTypeSpec(componentClass.propTypes, element.props, &apos;prop&apos;, name, element, null);\n  }\n  if (typeof componentClass.getDefaultProps === &apos;function&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(componentClass.getDefaultProps.isReactClassApproved, &apos;getDefaultProps is only used on classic React.createClass &apos; + &apos;definitions. Use a static property named `defaultProps` instead.&apos;) : void 0;\n  }\n}\n\nvar ReactElementValidator = {\n\n  createElement: function (type, props, children) {\n    var validType = typeof type === &apos;string&apos; || typeof type === &apos;function&apos;;\n    // We warn in this case but don&apos;t throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n    if (!validType) {\n      if (typeof type !== &apos;function&apos; &amp;&amp; typeof type !== &apos;string&apos;) {\n        var info = &apos;&apos;;\n        if (type === undefined || typeof type === &apos;object&apos; &amp;&amp; type !== null &amp;&amp; Object.keys(type).length === 0) {\n          info += &apos; You likely forgot to export your component from the file &apos; + &apos;it\\&apos;s defined in.&apos;;\n        }\n\n        var sourceInfo = getSourceInfoErrorAddendum(props);\n        if (sourceInfo) {\n          info += sourceInfo;\n        } else {\n          info += getDeclarationErrorAddendum();\n        }\n\n        info += ReactComponentTreeHook.getCurrentStackAddendum();\n\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;React.createElement: type is invalid -- expected a string (for &apos; + &apos;built-in components) or a class/function (for composite &apos; + &apos;components) but got: %s.%s&apos;, type == null ? type : typeof type, info) : void 0;\n      }\n    }\n\n    var element = ReactElement.createElement.apply(this, arguments);\n\n    // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n    if (element == null) {\n      return element;\n    }\n\n    // Skip key warning if the type isn&apos;t valid since our key validation logic\n    // doesn&apos;t expect a non-string/function type and can throw confusing errors.\n    // We don&apos;t want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n    if (validType) {\n      for (var i = 2; i &lt; arguments.length; i++) {\n        validateChildKeys(arguments[i], type);\n      }\n    }\n\n    validatePropTypes(element);\n\n    return element;\n  },\n\n  createFactory: function (type) {\n    var validatedFactory = ReactElementValidator.createElement.bind(null, type);\n    // Legacy hook TODO: Warn if this is accessed\n    validatedFactory.type = type;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (canDefineProperty) {\n        Object.defineProperty(validatedFactory, &apos;type&apos;, {\n          enumerable: false,\n          get: function () {\n            process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Factory.type is deprecated. Access the class directly &apos; + &apos;before passing it to createFactory.&apos;) : void 0;\n            Object.defineProperty(this, &apos;type&apos;, {\n              value: type\n            });\n            return type;\n          }\n        });\n      }\n    }\n\n    return validatedFactory;\n  },\n\n  cloneElement: function (element, props, children) {\n    var newElement = ReactElement.cloneElement.apply(this, arguments);\n    for (var i = 2; i &lt; arguments.length; i++) {\n      validateChildKeys(arguments[i], newElement.type);\n    }\n    validatePropTypes(newElement);\n    return newElement;\n  }\n\n};\n\nmodule.exports = ReactElementValidator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactElementValidator.js\n// module id = 185\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  ReactPropTypeLocationNames = {\n    prop: &apos;prop&apos;,\n    context: &apos;context&apos;,\n    childContext: &apos;child context&apos;\n  };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactPropTypeLocationNames.js\n// module id = 186\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n *     var iteratorFn = getIteratorFn(myIterable);\n *     if (iteratorFn) {\n *       var iterator = iteratorFn.call(myIterable);\n *       ...\n *     }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n  var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n  if (typeof iteratorFn === &apos;function&apos;) {\n    return iteratorFn;\n  }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/getIteratorFn.js\n// module id = 187\n// module chunks = 1","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n *   &gt; camelize(&apos;background-color&apos;)\n *   &lt; \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n  return string.replace(_hyphenPattern, function (_, character) {\n    return character.toUpperCase();\n  });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/camelize.js\n// module id = 325\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n&apos;use strict&apos;;\n\nvar camelize = require(&apos;./camelize&apos;);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n *   &gt; camelizeStyleName(&apos;background-color&apos;)\n *   &lt; \"backgroundColor\"\n *   &gt; camelizeStyleName(&apos;-moz-transition&apos;)\n *   &lt; \"MozTransition\"\n *   &gt; camelizeStyleName(&apos;-ms-transition&apos;)\n *   &lt; \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n  return camelize(string.replace(msPattern, &apos;ms-&apos;));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/camelizeStyleName.js\n// module id = 326\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require(&apos;./isTextNode&apos;);\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if (&apos;contains&apos; in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) &amp; 16);\n  } else {\n    return false;\n  }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/containsNode.js\n// module id = 327\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar invariant = require(&apos;./invariant&apos;);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n  var length = obj.length;\n\n  // Some browsers builtin objects can report typeof &apos;function&apos; (e.g. NodeList\n  // in old versions of Safari).\n  !(!Array.isArray(obj) &amp;&amp; (typeof obj === &apos;object&apos; || typeof obj === &apos;function&apos;)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;toArray: Array-like object expected&apos;) : invariant(false) : void 0;\n\n  !(typeof length === &apos;number&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;toArray: Object needs a length property&apos;) : invariant(false) : void 0;\n\n  !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;toArray: Object should have keys for indices&apos;) : invariant(false) : void 0;\n\n  !(typeof obj.callee !== &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;toArray: Object can\\&apos;t be `arguments`. Use rest params &apos; + &apos;(function(...args) {}) or Array.from() instead.&apos;) : invariant(false) : void 0;\n\n  // Old IE doesn&apos;t give collections access to hasOwnProperty. Assume inputs\n  // without method will throw during the slice call and skip straight to the\n  // fallback.\n  if (obj.hasOwnProperty) {\n    try {\n      return Array.prototype.slice.call(obj);\n    } catch (e) {\n      // IE &lt; 9 does not support Array#slice on collections objects\n    }\n  }\n\n  // Fall back to copying key by key. This assumes all keys have a value,\n  // so will not preserve sparsely populated inputs.\n  var ret = Array(length);\n  for (var ii = 0; ii &lt; length; ii++) {\n    ret[ii] = obj[ii];\n  }\n  return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n *   A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n *   Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments&apos; object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n  return (\n    // not null/false\n    !!obj &amp;&amp; (\n    // arrays are objects, NodeLists are functions in Safari\n    typeof obj == &apos;object&apos; || typeof obj == &apos;function&apos;) &amp;&amp;\n    // quacks like an array\n    &apos;length&apos; in obj &amp;&amp;\n    // not window\n    !(&apos;setInterval&apos; in obj) &amp;&amp;\n    // no DOM node should be considered an array-like\n    // a &apos;select&apos; element has &apos;length&apos; and &apos;item&apos; properties on IE8\n    typeof obj.nodeType != &apos;number&apos; &amp;&amp; (\n    // a real array\n    Array.isArray(obj) ||\n    // arguments\n    &apos;callee&apos; in obj ||\n    // HTMLCollection/NodeList\n    &apos;item&apos; in obj)\n  );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n *   var createArrayFromMixed = require(&apos;createArrayFromMixed&apos;);\n *\n *   function takesOneOrMoreThings(things) {\n *     things = createArrayFromMixed(things);\n *     ...\n *   }\n *\n * This allows you to treat `things&apos; as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n  if (!hasArrayNature(obj)) {\n    return [obj];\n  } else if (Array.isArray(obj)) {\n    return obj.slice();\n  } else {\n    return toArray(obj);\n  }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/createArrayFromMixed.js\n// module id = 328\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require(&apos;./ExecutionEnvironment&apos;);\n\nvar createArrayFromMixed = require(&apos;./createArrayFromMixed&apos;);\nvar getMarkupWrap = require(&apos;./getMarkupWrap&apos;);\nvar invariant = require(&apos;./invariant&apos;);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement(&apos;div&apos;) : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*&lt;(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n  var nodeNameMatch = markup.match(nodeNamePattern);\n  return nodeNameMatch &amp;&amp; nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * &lt;script&gt; element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any &lt;script&gt; elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered &lt;script&gt;.\n * @return {array&lt;DOMElement|DOMTextNode&gt;} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n  var node = dummyNode;\n  !!!dummyNode ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;createNodesFromMarkup dummy not initialized&apos;) : invariant(false) : void 0;\n  var nodeName = getNodeName(markup);\n\n  var wrap = nodeName &amp;&amp; getMarkupWrap(nodeName);\n  if (wrap) {\n    node.innerHTML = wrap[1] + markup + wrap[2];\n\n    var wrapDepth = wrap[0];\n    while (wrapDepth--) {\n      node = node.lastChild;\n    }\n  } else {\n    node.innerHTML = markup;\n  }\n\n  var scripts = node.getElementsByTagName(&apos;script&apos;);\n  if (scripts.length) {\n    !handleScript ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;createNodesFromMarkup(...): Unexpected &lt;script&gt; element rendered.&apos;) : invariant(false) : void 0;\n    createArrayFromMixed(scripts).forEach(handleScript);\n  }\n\n  var nodes = Array.from(node.childNodes);\n  while (node.lastChild) {\n    node.removeChild(node.lastChild);\n  }\n  return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/createNodesFromMarkup.js\n// module id = 329\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require(&apos;./ExecutionEnvironment&apos;);\n\nvar invariant = require(&apos;./invariant&apos;);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement(&apos;div&apos;) : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements (&apos;*&apos;).\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, &apos;&lt;select multiple=\"true\"&gt;&apos;, &apos;&lt;/select&gt;&apos;];\nvar tableWrap = [1, &apos;&lt;table&gt;&apos;, &apos;&lt;/table&gt;&apos;];\nvar trWrap = [3, &apos;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&apos;, &apos;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&apos;];\n\nvar svgWrap = [1, &apos;&lt;svg xmlns=\"http://www.w3.org/2000/svg\"&gt;&apos;, &apos;&lt;/svg&gt;&apos;];\n\nvar markupWrap = {\n  &apos;*&apos;: [1, &apos;?&lt;div&gt;&apos;, &apos;&lt;/div&gt;&apos;],\n\n  &apos;area&apos;: [1, &apos;&lt;map&gt;&apos;, &apos;&lt;/map&gt;&apos;],\n  &apos;col&apos;: [2, &apos;&lt;table&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;colgroup&gt;&apos;, &apos;&lt;/colgroup&gt;&lt;/table&gt;&apos;],\n  &apos;legend&apos;: [1, &apos;&lt;fieldset&gt;&apos;, &apos;&lt;/fieldset&gt;&apos;],\n  &apos;param&apos;: [1, &apos;&lt;object&gt;&apos;, &apos;&lt;/object&gt;&apos;],\n  &apos;tr&apos;: [2, &apos;&lt;table&gt;&lt;tbody&gt;&apos;, &apos;&lt;/tbody&gt;&lt;/table&gt;&apos;],\n\n  &apos;optgroup&apos;: selectWrap,\n  &apos;option&apos;: selectWrap,\n\n  &apos;caption&apos;: tableWrap,\n  &apos;colgroup&apos;: tableWrap,\n  &apos;tbody&apos;: tableWrap,\n  &apos;tfoot&apos;: tableWrap,\n  &apos;thead&apos;: tableWrap,\n\n  &apos;td&apos;: trWrap,\n  &apos;th&apos;: trWrap\n};\n\n// Initialize the SVG elements since we know they&apos;ll always need to be wrapped\n// consistently. If they are created inside a &lt;div&gt; they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = [&apos;circle&apos;, &apos;clipPath&apos;, &apos;defs&apos;, &apos;ellipse&apos;, &apos;g&apos;, &apos;image&apos;, &apos;line&apos;, &apos;linearGradient&apos;, &apos;mask&apos;, &apos;path&apos;, &apos;pattern&apos;, &apos;polygon&apos;, &apos;polyline&apos;, &apos;radialGradient&apos;, &apos;rect&apos;, &apos;stop&apos;, &apos;text&apos;, &apos;tspan&apos;];\nsvgElements.forEach(function (nodeName) {\n  markupWrap[nodeName] = svgWrap;\n  shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n  !!!dummyNode ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Markup wrapping node not initialized&apos;) : invariant(false) : void 0;\n  if (!markupWrap.hasOwnProperty(nodeName)) {\n    nodeName = &apos;*&apos;;\n  }\n  if (!shouldWrap.hasOwnProperty(nodeName)) {\n    if (nodeName === &apos;*&apos;) {\n      dummyNode.innerHTML = &apos;&lt;link /&gt;&apos;;\n    } else {\n      dummyNode.innerHTML = &apos;&lt;&apos; + nodeName + &apos;&gt;&lt;/&apos; + nodeName + &apos;&gt;&apos;;\n    }\n    shouldWrap[nodeName] = !dummyNode.firstChild;\n  }\n  return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/getMarkupWrap.js\n// module id = 330\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n&apos;use strict&apos;;\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n  if (scrollable === window) {\n    return {\n      x: window.pageXOffset || document.documentElement.scrollLeft,\n      y: window.pageYOffset || document.documentElement.scrollTop\n    };\n  }\n  return {\n    x: scrollable.scrollLeft,\n    y: scrollable.scrollTop\n  };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/getUnboundedScrollPosition.js\n// module id = 331\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n *   &gt; hyphenate(&apos;backgroundColor&apos;)\n *   &lt; \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n  return string.replace(_uppercasePattern, &apos;-$1&apos;).toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/hyphenate.js\n// module id = 332\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n&apos;use strict&apos;;\n\nvar hyphenate = require(&apos;./hyphenate&apos;);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   &gt; hyphenateStyleName(&apos;backgroundColor&apos;)\n *   &lt; \"background-color\"\n *   &gt; hyphenateStyleName(&apos;MozTransition&apos;)\n *   &lt; \"-moz-transition\"\n *   &gt; hyphenateStyleName(&apos;msTransition&apos;)\n *   &lt; \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n  return hyphenate(string).replace(msPattern, &apos;-ms-&apos;);\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/hyphenateStyleName.js\n// module id = 333\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n  return !!(object &amp;&amp; (typeof Node === &apos;function&apos; ? object instanceof Node : typeof object === &apos;object&apos; &amp;&amp; typeof object.nodeType === &apos;number&apos; &amp;&amp; typeof object.nodeName === &apos;string&apos;));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/isNode.js\n// module id = 334\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require(&apos;./isNode&apos;);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n  return isNode(object) &amp;&amp; object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/isTextNode.js\n// module id = 335\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n&apos;use strict&apos;;\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n  var cache = {};\n  return function (string) {\n    if (!cache.hasOwnProperty(string)) {\n      cache[string] = callback.call(this, string);\n    }\n    return cache[string];\n  };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/memoizeStringOnly.js\n// module id = 336\n// module chunks = 1","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;./ExecutionEnvironment&apos;);\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n  performance = window.performance || window.msPerformance || window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/performance.js\n// module id = 337\n// module chunks = 1","&apos;use strict&apos;;\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar performance = require(&apos;./performance&apos;);\n\nvar performanceNow;\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn&apos;t exist. We need to support Firefox &lt; 15 for now\n * because of Facebook&apos;s testing infrastructure.\n */\nif (performance.now) {\n  performanceNow = function performanceNow() {\n    return performance.now();\n  };\n} else {\n  performanceNow = function performanceNow() {\n    return Date.now();\n  };\n}\n\nmodule.exports = performanceNow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/fbjs/lib/performanceNow.js\n// module id = 338\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n&apos;use strict&apos;;\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var invariant = require(&apos;fbjs/lib/invariant&apos;);\n  var warning = require(&apos;fbjs/lib/warning&apos;);\n  var ReactPropTypesSecret = require(&apos;./lib/ReactPropTypesSecret&apos;);\n  var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    for (var typeSpecName in typeSpecs) {\n      if (typeSpecs.hasOwnProperty(typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don&apos;t want to\n        // fail the render phase where it didn&apos;t fail before. So we log it.\n        // After these have been cleaned up, we&apos;ll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It&apos;s the same\n          // behavior as without this statement except with a better message.\n          invariant(typeof typeSpecs[typeSpecName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, componentName || &apos;React class&apos;, location, typeSpecName);\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, location, typeSpecName, typeof error);\n        if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : &apos;&apos;;\n\n          warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, stack != null ? stack : &apos;&apos;);\n        }\n      }\n    }\n  }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/prop-types/checkPropTypes.js\n// module id = 387\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ARIADOMPropertyConfig = {\n  Properties: {\n    // Global States and Properties\n    &apos;aria-current&apos;: 0, // state\n    &apos;aria-details&apos;: 0,\n    &apos;aria-disabled&apos;: 0, // state\n    &apos;aria-hidden&apos;: 0, // state\n    &apos;aria-invalid&apos;: 0, // state\n    &apos;aria-keyshortcuts&apos;: 0,\n    &apos;aria-label&apos;: 0,\n    &apos;aria-roledescription&apos;: 0,\n    // Widget Attributes\n    &apos;aria-autocomplete&apos;: 0,\n    &apos;aria-checked&apos;: 0,\n    &apos;aria-expanded&apos;: 0,\n    &apos;aria-haspopup&apos;: 0,\n    &apos;aria-level&apos;: 0,\n    &apos;aria-modal&apos;: 0,\n    &apos;aria-multiline&apos;: 0,\n    &apos;aria-multiselectable&apos;: 0,\n    &apos;aria-orientation&apos;: 0,\n    &apos;aria-placeholder&apos;: 0,\n    &apos;aria-pressed&apos;: 0,\n    &apos;aria-readonly&apos;: 0,\n    &apos;aria-required&apos;: 0,\n    &apos;aria-selected&apos;: 0,\n    &apos;aria-sort&apos;: 0,\n    &apos;aria-valuemax&apos;: 0,\n    &apos;aria-valuemin&apos;: 0,\n    &apos;aria-valuenow&apos;: 0,\n    &apos;aria-valuetext&apos;: 0,\n    // Live Region Attributes\n    &apos;aria-atomic&apos;: 0,\n    &apos;aria-busy&apos;: 0,\n    &apos;aria-live&apos;: 0,\n    &apos;aria-relevant&apos;: 0,\n    // Drag-and-Drop Attributes\n    &apos;aria-dropeffect&apos;: 0,\n    &apos;aria-grabbed&apos;: 0,\n    // Relationship Attributes\n    &apos;aria-activedescendant&apos;: 0,\n    &apos;aria-colcount&apos;: 0,\n    &apos;aria-colindex&apos;: 0,\n    &apos;aria-colspan&apos;: 0,\n    &apos;aria-controls&apos;: 0,\n    &apos;aria-describedby&apos;: 0,\n    &apos;aria-errormessage&apos;: 0,\n    &apos;aria-flowto&apos;: 0,\n    &apos;aria-labelledby&apos;: 0,\n    &apos;aria-owns&apos;: 0,\n    &apos;aria-posinset&apos;: 0,\n    &apos;aria-rowcount&apos;: 0,\n    &apos;aria-rowindex&apos;: 0,\n    &apos;aria-rowspan&apos;: 0,\n    &apos;aria-setsize&apos;: 0\n  },\n  DOMAttributeNames: {},\n  DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ARIADOMPropertyConfig.js\n// module id = 394\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\n\nvar focusNode = require(&apos;fbjs/lib/focusNode&apos;);\n\nvar AutoFocusUtils = {\n  focusDOMComponent: function () {\n    focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n  }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/AutoFocusUtils.js\n// module id = 395\n// module chunks = 1","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPropagators = require(&apos;./EventPropagators&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar FallbackCompositionState = require(&apos;./FallbackCompositionState&apos;);\nvar SyntheticCompositionEvent = require(&apos;./SyntheticCompositionEvent&apos;);\nvar SyntheticInputEvent = require(&apos;./SyntheticInputEvent&apos;);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;CompositionEvent&apos; in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM &amp;&amp; &apos;documentMode&apos; in document) {\n  documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don&apos;t use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;TextEvent&apos; in window &amp;&amp; !documentMode &amp;&amp; !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM &amp;&amp; (!canUseCompositionEvent || documentMode &amp;&amp; documentMode &gt; 8 &amp;&amp; documentMode &lt;= 11);\n\n/**\n * Opera &lt;= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n  var opera = window.opera;\n  return typeof opera === &apos;object&apos; &amp;&amp; typeof opera.version === &apos;function&apos; &amp;&amp; parseInt(opera.version(), 10) &lt;= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n  beforeInput: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onBeforeInput&apos;,\n      captured: &apos;onBeforeInputCapture&apos;\n    },\n    dependencies: [&apos;topCompositionEnd&apos;, &apos;topKeyPress&apos;, &apos;topTextInput&apos;, &apos;topPaste&apos;]\n  },\n  compositionEnd: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onCompositionEnd&apos;,\n      captured: &apos;onCompositionEndCapture&apos;\n    },\n    dependencies: [&apos;topBlur&apos;, &apos;topCompositionEnd&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]\n  },\n  compositionStart: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onCompositionStart&apos;,\n      captured: &apos;onCompositionStartCapture&apos;\n    },\n    dependencies: [&apos;topBlur&apos;, &apos;topCompositionStart&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]\n  },\n  compositionUpdate: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onCompositionUpdate&apos;,\n      captured: &apos;onCompositionUpdateCapture&apos;\n    },\n    dependencies: [&apos;topBlur&apos;, &apos;topCompositionUpdate&apos;, &apos;topKeyDown&apos;, &apos;topKeyPress&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;]\n  }\n};\n\n// Track whether we&apos;ve ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &amp;&amp;\n  // ctrlKey &amp;&amp; altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey &amp;&amp; nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n  switch (topLevelType) {\n    case &apos;topCompositionStart&apos;:\n      return eventTypes.compositionStart;\n    case &apos;topCompositionEnd&apos;:\n      return eventTypes.compositionEnd;\n    case &apos;topCompositionUpdate&apos;:\n      return eventTypes.compositionUpdate;\n  }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n  return topLevelType === &apos;topKeyDown&apos; &amp;&amp; nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case &apos;topKeyUp&apos;:\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n    case &apos;topKeyDown&apos;:\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n    case &apos;topKeyPress&apos;:\n    case &apos;topMouseDown&apos;:\n    case &apos;topBlur&apos;:\n      // Events are not possible without cancelling IME.\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n  if (typeof detail === &apos;object&apos; &amp;&amp; &apos;data&apos; in detail) {\n    return detail.data;\n  }\n  return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType;\n  var fallbackData;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(topLevelType);\n  } else if (!currentComposition) {\n    if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n      eventType = eventTypes.compositionStart;\n    }\n  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n    eventType = eventTypes.compositionEnd;\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!currentComposition &amp;&amp; eventType === eventTypes.compositionStart) {\n      currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n    } else if (eventType === eventTypes.compositionEnd) {\n      if (currentComposition) {\n        fallbackData = currentComposition.getData();\n      }\n    }\n  }\n\n  var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n  if (fallbackData) {\n    // Inject data generated from fallback path into the synthetic event.\n    // This matches the property of native CompositionEventInterface.\n    event.data = fallbackData;\n  } else {\n    var customData = getDataFromCustomEvent(nativeEvent);\n    if (customData !== null) {\n      event.data = customData;\n    }\n  }\n\n  EventPropagators.accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n  switch (topLevelType) {\n    case &apos;topCompositionEnd&apos;:\n      return getDataFromCustomEvent(nativeEvent);\n    case &apos;topKeyPress&apos;:\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case &apos;topTextInput&apos;:\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data;\n\n      // If it&apos;s a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn&apos;t give us keycodes, so we need to blacklist it.\n      if (chars === SPACEBAR_CHAR &amp;&amp; hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (currentComposition) {\n    if (topLevelType === &apos;topCompositionEnd&apos; || !canUseCompositionEvent &amp;&amp; isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n      var chars = currentComposition.getData();\n      FallbackCompositionState.release(currentComposition);\n      currentComposition = null;\n      return chars;\n    }\n    return null;\n  }\n\n  switch (topLevelType) {\n    case &apos;topPaste&apos;:\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n    case &apos;topKeyPress&apos;:\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: &apos;AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (nativeEvent.which &amp;&amp; !isKeypressCommand(nativeEvent)) {\n        return String.fromCharCode(nativeEvent.which);\n      }\n      return null;\n    case &apos;topCompositionEnd&apos;:\n      return useFallbackCompositionData ? null : nativeEvent.data;\n    default:\n      return null;\n  }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n  var chars;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n  }\n\n  // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n  if (!chars) {\n    return null;\n  }\n\n  var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n  event.data = chars;\n  EventPropagators.accumulateTwoPhaseDispatches(event);\n  return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec&apos;d but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n  }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/BeforeInputEventPlugin.js\n// module id = 396\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar CSSProperty = require(&apos;./CSSProperty&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n\nvar camelizeStyleName = require(&apos;fbjs/lib/camelizeStyleName&apos;);\nvar dangerousStyleValue = require(&apos;./dangerousStyleValue&apos;);\nvar hyphenateStyleName = require(&apos;fbjs/lib/hyphenateStyleName&apos;);\nvar memoizeStringOnly = require(&apos;fbjs/lib/memoizeStringOnly&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n  return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = &apos;cssFloat&apos;;\nif (ExecutionEnvironment.canUseDOM) {\n  var tempStyle = document.createElement(&apos;div&apos;).style;\n  try {\n    // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n    tempStyle.font = &apos;&apos;;\n  } catch (e) {\n    hasShorthandPropertyBug = true;\n  }\n  // IE8 only supports accessing cssFloat (standard) as styleFloat\n  if (document.documentElement.style.cssFloat === undefined) {\n    styleFloatAccessor = &apos;styleFloat&apos;;\n  }\n}\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  // &apos;msTransform&apos; is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n  // style values shouldn&apos;t contain a semicolon\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n\n  var warnHyphenatedStyleName = function (name, owner) {\n    if (warnedStyleNames.hasOwnProperty(name) &amp;&amp; warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unsupported style property %s. Did you mean %s?%s&apos;, name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n  };\n\n  var warnBadVendoredStyleName = function (name, owner) {\n    if (warnedStyleNames.hasOwnProperty(name) &amp;&amp; warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unsupported vendor-prefixed style property %s. Did you mean %s?%s&apos;, name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value, owner) {\n    if (warnedStyleValues.hasOwnProperty(value) &amp;&amp; warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Style property values shouldn\\&apos;t contain a semicolon.%s &apos; + &apos;Try \"%s: %s\" instead.&apos;, checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, &apos;&apos;)) : void 0;\n  };\n\n  var warnStyleValueIsNaN = function (name, value, owner) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`NaN` is an invalid value for the `%s` css style property.%s&apos;, name, checkRenderMessage(owner)) : void 0;\n  };\n\n  var checkRenderMessage = function (owner) {\n    if (owner) {\n      var name = owner.getName();\n      if (name) {\n        return &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n      }\n    }\n    return &apos;&apos;;\n  };\n\n  /**\n   * @param {string} name\n   * @param {*} value\n   * @param {ReactDOMComponent} component\n   */\n  var warnValidStyle = function (name, value, component) {\n    var owner;\n    if (component) {\n      owner = component._currentElement._owner;\n    }\n    if (name.indexOf(&apos;-&apos;) &gt; -1) {\n      warnHyphenatedStyleName(name, owner);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name, owner);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value, owner);\n    }\n\n    if (typeof value === &apos;number&apos; &amp;&amp; isNaN(value)) {\n      warnStyleValueIsNaN(name, value, owner);\n    }\n  };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n  /**\n   * Serializes a mapping of style properties for use as inline styles:\n   *\n   *   &gt; createMarkupForStyles({width: &apos;200px&apos;, height: 0})\n   *   \"width:200px;height:0;\"\n   *\n   * Undefined values are ignored so that declarative programming is easier.\n   * The result should be HTML-escaped before insertion into the DOM.\n   *\n   * @param {object} styles\n   * @param {ReactDOMComponent} component\n   * @return {?string}\n   */\n  createMarkupForStyles: function (styles, component) {\n    var serialized = &apos;&apos;;\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n      var styleValue = styles[styleName];\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        warnValidStyle(styleName, styleValue, component);\n      }\n      if (styleValue != null) {\n        serialized += processStyleName(styleName) + &apos;:&apos;;\n        serialized += dangerousStyleValue(styleName, styleValue, component) + &apos;;&apos;;\n      }\n    }\n    return serialized || null;\n  },\n\n  /**\n   * Sets the value for multiple styles on a node.  If a value is specified as\n   * &apos;&apos; (empty string), the corresponding style property will be unset.\n   *\n   * @param {DOMElement} node\n   * @param {object} styles\n   * @param {ReactDOMComponent} component\n   */\n  setValueForStyles: function (node, styles, component) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      ReactInstrumentation.debugTool.onHostOperation({\n        instanceID: component._debugID,\n        type: &apos;update styles&apos;,\n        payload: styles\n      });\n    }\n\n    var style = node.style;\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        warnValidStyle(styleName, styles[styleName], component);\n      }\n      var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n      if (styleName === &apos;float&apos; || styleName === &apos;cssFloat&apos;) {\n        styleName = styleFloatAccessor;\n      }\n      if (styleValue) {\n        style[styleName] = styleValue;\n      } else {\n        var expansion = hasShorthandPropertyBug &amp;&amp; CSSProperty.shorthandPropertyExpansions[styleName];\n        if (expansion) {\n          // Shorthand property that IE8 won&apos;t like unsetting, so unset each\n          // component to placate it\n          for (var individualStyleName in expansion) {\n            style[individualStyleName] = &apos;&apos;;\n          }\n        } else {\n          style[styleName] = &apos;&apos;;\n        }\n      }\n    }\n  }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/CSSPropertyOperations.js\n// module id = 397\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPluginHub = require(&apos;./EventPluginHub&apos;);\nvar EventPropagators = require(&apos;./EventPropagators&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\nvar getEventTarget = require(&apos;./getEventTarget&apos;);\nvar isEventSupported = require(&apos;./isEventSupported&apos;);\nvar isTextInputElement = require(&apos;./isTextInputElement&apos;);\n\nvar eventTypes = {\n  change: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onChange&apos;,\n      captured: &apos;onChangeCapture&apos;\n    },\n    dependencies: [&apos;topBlur&apos;, &apos;topChange&apos;, &apos;topClick&apos;, &apos;topFocus&apos;, &apos;topInput&apos;, &apos;topKeyDown&apos;, &apos;topKeyUp&apos;, &apos;topSelectionChange&apos;]\n  }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName &amp;&amp; elem.nodeName.toLowerCase();\n  return nodeName === &apos;select&apos; || nodeName === &apos;input&apos; &amp;&amp; elem.type === &apos;file&apos;;\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n  // See `handleChange` comment below\n  doesChangeEventBubble = isEventSupported(&apos;change&apos;) &amp;&amp; (!document.documentMode || document.documentMode &gt; 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n  EventPropagators.accumulateTwoPhaseDispatches(event);\n\n  // If change and propertychange bubbled, we&apos;d just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn&apos;t, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don&apos;t work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n  ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n  EventPluginHub.enqueueEvents(event);\n  EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent(&apos;onchange&apos;, manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n  if (!activeElement) {\n    return;\n  }\n  activeElement.detachEvent(&apos;onchange&apos;, manualDispatchChangeEvent);\n  activeElement = null;\n  activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n  if (topLevelType === &apos;topChange&apos;) {\n    return targetInst;\n  }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n  if (topLevelType === &apos;topFocus&apos;) {\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForChangeEventIE8();\n    startWatchingForChangeEventIE8(target, targetInst);\n  } else if (topLevelType === &apos;topBlur&apos;) {\n    stopWatchingForChangeEventIE8();\n  }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  // IE10+ fire input events to often, such when a placeholder\n  // changes or when an input with a placeholder is focused.\n  isInputEventSupported = isEventSupported(&apos;input&apos;) &amp;&amp; (!document.documentMode || document.documentMode &gt; 11);\n}\n\n/**\n * (For IE &lt;=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n  get: function () {\n    return activeElementValueProp.get.call(this);\n  },\n  set: function (val) {\n    // Cast to a string so we can do equality checks.\n    activeElementValue = &apos;&apos; + val;\n    activeElementValueProp.set.call(this, val);\n  }\n};\n\n/**\n * (For IE &lt;=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElementValue = target.value;\n  activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, &apos;value&apos;);\n\n  // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n  // on DOM elements\n  Object.defineProperty(activeElement, &apos;value&apos;, newValueProp);\n  if (activeElement.attachEvent) {\n    activeElement.attachEvent(&apos;onpropertychange&apos;, handlePropertyChange);\n  } else {\n    activeElement.addEventListener(&apos;propertychange&apos;, handlePropertyChange, false);\n  }\n}\n\n/**\n * (For IE &lt;=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n\n  // delete restores the original property definition\n  delete activeElement.value;\n\n  if (activeElement.detachEvent) {\n    activeElement.detachEvent(&apos;onpropertychange&apos;, handlePropertyChange);\n  } else {\n    activeElement.removeEventListener(&apos;propertychange&apos;, handlePropertyChange, false);\n  }\n\n  activeElement = null;\n  activeElementInst = null;\n  activeElementValue = null;\n  activeElementValueProp = null;\n}\n\n/**\n * (For IE &lt;=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== &apos;value&apos;) {\n    return;\n  }\n  var value = nativeEvent.srcElement.value;\n  if (value === activeElementValue) {\n    return;\n  }\n  activeElementValue = value;\n\n  manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target&apos;s ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n  if (topLevelType === &apos;topInput&apos;) {\n    // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n    // what we want so fall through here and trigger an abstract event\n    return targetInst;\n  }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n  if (topLevelType === &apos;topFocus&apos;) {\n    // In IE8, we can capture almost all .value changes by adding a\n    // propertychange handler and looking for events with propertyName\n    // equal to &apos;value&apos;\n    // In IE9-11, propertychange fires for most input events but is buggy and\n    // doesn&apos;t fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don&apos;t want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (topLevelType === &apos;topBlur&apos;) {\n    stopWatchingForValueChange();\n  }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n  if (topLevelType === &apos;topSelectionChange&apos; || topLevelType === &apos;topKeyUp&apos; || topLevelType === &apos;topKeyDown&apos;) {\n    // On the selectionchange event, the target is just document which isn&apos;t\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren&apos;t necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it&apos;ll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    if (activeElement &amp;&amp; activeElement.value !== activeElementValue) {\n      activeElementValue = activeElement.value;\n      return activeElementInst;\n    }\n  }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  return elem.nodeName &amp;&amp; elem.nodeName.toLowerCase() === &apos;input&apos; &amp;&amp; (elem.type === &apos;checkbox&apos; || elem.type === &apos;radio&apos;);\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n  if (topLevelType === &apos;topClick&apos;) {\n    return targetInst;\n  }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n  // TODO: In IE, inst is occasionally null. Why?\n  if (inst == null) {\n    return;\n  }\n\n  // Fiber and ReactDOM keep wrapper state in separate places\n  var state = inst._wrapperState || node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== &apos;number&apos;) {\n    return;\n  }\n\n  // If controlled, assign the value attribute to the current value on blur\n  var value = &apos;&apos; + node.value;\n  if (node.getAttribute(&apos;value&apos;) !== value) {\n    node.setAttribute(&apos;value&apos;, value);\n  }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it&apos;s possible to\n * change the element&apos;s value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n    var getTargetInstFunc, handleEventFunc;\n    if (shouldUseChangeEvent(targetNode)) {\n      if (doesChangeEventBubble) {\n        getTargetInstFunc = getTargetInstForChangeEvent;\n      } else {\n        handleEventFunc = handleEventsForChangeEventIE8;\n      }\n    } else if (isTextInputElement(targetNode)) {\n      if (isInputEventSupported) {\n        getTargetInstFunc = getTargetInstForInputEvent;\n      } else {\n        getTargetInstFunc = getTargetInstForInputEventIE;\n        handleEventFunc = handleEventsForInputEventIE;\n      }\n    } else if (shouldUseClickEvent(targetNode)) {\n      getTargetInstFunc = getTargetInstForClickEvent;\n    }\n\n    if (getTargetInstFunc) {\n      var inst = getTargetInstFunc(topLevelType, targetInst);\n      if (inst) {\n        var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n        event.type = &apos;change&apos;;\n        EventPropagators.accumulateTwoPhaseDispatches(event);\n        return event;\n      }\n    }\n\n    if (handleEventFunc) {\n      handleEventFunc(topLevelType, targetNode, targetInst);\n    }\n\n    // When blurring, set the value attribute for number inputs\n    if (topLevelType === &apos;topBlur&apos;) {\n      handleControlledInputBlur(targetInst, targetNode);\n    }\n  }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ChangeEventPlugin.js\n// module id = 398\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\nvar createNodesFromMarkup = require(&apos;fbjs/lib/createNodesFromMarkup&apos;);\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\nvar Danger = {\n\n  /**\n   * Replaces a node with a string of markup at its current position within its\n   * parent. The markup must render into a single root node.\n   *\n   * @param {DOMElement} oldChild Child node to replace.\n   * @param {string} markup Markup to render in place of the child node.\n   * @internal\n   */\n  dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n    !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.&apos;) : _prodInvariant(&apos;56&apos;) : void 0;\n    !markup ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Missing markup.&apos;) : _prodInvariant(&apos;57&apos;) : void 0;\n    !(oldChild.nodeName !== &apos;HTML&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the &lt;html&gt; node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().&apos;) : _prodInvariant(&apos;58&apos;) : void 0;\n\n    if (typeof markup === &apos;string&apos;) {\n      var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n      oldChild.parentNode.replaceChild(newChild, oldChild);\n    } else {\n      DOMLazyTree.replaceChildWithTree(oldChild, markup);\n    }\n  }\n\n};\n\nmodule.exports = Danger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/Danger.js\n// module id = 399\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = [&apos;ResponderEventPlugin&apos;, &apos;SimpleEventPlugin&apos;, &apos;TapEventPlugin&apos;, &apos;EnterLeaveEventPlugin&apos;, &apos;ChangeEventPlugin&apos;, &apos;SelectEventPlugin&apos;, &apos;BeforeInputEventPlugin&apos;];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/DefaultEventPluginOrder.js\n// module id = 400\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPropagators = require(&apos;./EventPropagators&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar SyntheticMouseEvent = require(&apos;./SyntheticMouseEvent&apos;);\n\nvar eventTypes = {\n  mouseEnter: {\n    registrationName: &apos;onMouseEnter&apos;,\n    dependencies: [&apos;topMouseOut&apos;, &apos;topMouseOver&apos;]\n  },\n  mouseLeave: {\n    registrationName: &apos;onMouseLeave&apos;,\n    dependencies: [&apos;topMouseOut&apos;, &apos;topMouseOver&apos;]\n  }\n};\n\nvar EnterLeaveEventPlugin = {\n\n  eventTypes: eventTypes,\n\n  /**\n   * For almost every interaction we care about, there will be both a top-level\n   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n   * we do not extract duplicate events. However, moving the mouse into the\n   * browser from outside will not fire a `mouseout` event. In this case, we use\n   * the `mouseover` top-level event.\n   */\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    if (topLevelType === &apos;topMouseOver&apos; &amp;&amp; (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n      return null;\n    }\n    if (topLevelType !== &apos;topMouseOut&apos; &amp;&amp; topLevelType !== &apos;topMouseOver&apos;) {\n      // Must not be a mouse in or mouse out - ignoring.\n      return null;\n    }\n\n    var win;\n    if (nativeEventTarget.window === nativeEventTarget) {\n      // `nativeEventTarget` is probably a window object.\n      win = nativeEventTarget;\n    } else {\n      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n      var doc = nativeEventTarget.ownerDocument;\n      if (doc) {\n        win = doc.defaultView || doc.parentWindow;\n      } else {\n        win = window;\n      }\n    }\n\n    var from;\n    var to;\n    if (topLevelType === &apos;topMouseOut&apos;) {\n      from = targetInst;\n      var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n      to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n    } else {\n      // Moving to a node from outside the window.\n      from = null;\n      to = targetInst;\n    }\n\n    if (from === to) {\n      // Nothing pertains to our managed components.\n      return null;\n    }\n\n    var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n    var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n    var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n    leave.type = &apos;mouseleave&apos;;\n    leave.target = fromNode;\n    leave.relatedTarget = toNode;\n\n    var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n    enter.type = &apos;mouseenter&apos;;\n    enter.target = toNode;\n    enter.relatedTarget = fromNode;\n\n    EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n    return [leave, enter];\n  }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/EnterLeaveEventPlugin.js\n// module id = 401\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar PooledClass = require(&apos;./PooledClass&apos;);\n\nvar getTextContentAccessor = require(&apos;./getTextContentAccessor&apos;);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n  this._root = root;\n  this._startText = this.getText();\n  this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n  destructor: function () {\n    this._root = null;\n    this._startText = null;\n    this._fallbackText = null;\n  },\n\n  /**\n   * Get current text of input.\n   *\n   * @return {string}\n   */\n  getText: function () {\n    if (&apos;value&apos; in this._root) {\n      return this._root.value;\n    }\n    return this._root[getTextContentAccessor()];\n  },\n\n  /**\n   * Determine the differing substring between the initially stored\n   * text content and the current content.\n   *\n   * @return {string}\n   */\n  getData: function () {\n    if (this._fallbackText) {\n      return this._fallbackText;\n    }\n\n    var start;\n    var startValue = this._startText;\n    var startLength = startValue.length;\n    var end;\n    var endValue = this.getText();\n    var endLength = endValue.length;\n\n    for (start = 0; start &lt; startLength; start++) {\n      if (startValue[start] !== endValue[start]) {\n        break;\n      }\n    }\n\n    var minEnd = startLength - start;\n    for (end = 1; end &lt;= minEnd; end++) {\n      if (startValue[startLength - end] !== endValue[endLength - end]) {\n        break;\n      }\n    }\n\n    var sliceTail = end &gt; 1 ? 1 - end : undefined;\n    this._fallbackText = endValue.slice(start, sliceTail);\n    return this._fallbackText;\n  }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/FallbackCompositionState.js\n// module id = 402\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n  isCustomAttribute: RegExp.prototype.test.bind(new RegExp(&apos;^(data|aria)-[&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;)),\n  Properties: {\n    /**\n     * Standard Properties\n     */\n    accept: 0,\n    acceptCharset: 0,\n    accessKey: 0,\n    action: 0,\n    allowFullScreen: HAS_BOOLEAN_VALUE,\n    allowTransparency: 0,\n    alt: 0,\n    // specifies target context for links with `preload` type\n    as: 0,\n    async: HAS_BOOLEAN_VALUE,\n    autoComplete: 0,\n    // autoFocus is polyfilled/normalized by AutoFocusUtils\n    // autoFocus: HAS_BOOLEAN_VALUE,\n    autoPlay: HAS_BOOLEAN_VALUE,\n    capture: HAS_BOOLEAN_VALUE,\n    cellPadding: 0,\n    cellSpacing: 0,\n    charSet: 0,\n    challenge: 0,\n    checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    cite: 0,\n    classID: 0,\n    className: 0,\n    cols: HAS_POSITIVE_NUMERIC_VALUE,\n    colSpan: 0,\n    content: 0,\n    contentEditable: 0,\n    contextMenu: 0,\n    controls: HAS_BOOLEAN_VALUE,\n    coords: 0,\n    crossOrigin: 0,\n    data: 0, // For `&lt;object /&gt;` acts as `src`.\n    dateTime: 0,\n    &apos;default&apos;: HAS_BOOLEAN_VALUE,\n    defer: HAS_BOOLEAN_VALUE,\n    dir: 0,\n    disabled: HAS_BOOLEAN_VALUE,\n    download: HAS_OVERLOADED_BOOLEAN_VALUE,\n    draggable: 0,\n    encType: 0,\n    form: 0,\n    formAction: 0,\n    formEncType: 0,\n    formMethod: 0,\n    formNoValidate: HAS_BOOLEAN_VALUE,\n    formTarget: 0,\n    frameBorder: 0,\n    headers: 0,\n    height: 0,\n    hidden: HAS_BOOLEAN_VALUE,\n    high: 0,\n    href: 0,\n    hrefLang: 0,\n    htmlFor: 0,\n    httpEquiv: 0,\n    icon: 0,\n    id: 0,\n    inputMode: 0,\n    integrity: 0,\n    is: 0,\n    keyParams: 0,\n    keyType: 0,\n    kind: 0,\n    label: 0,\n    lang: 0,\n    list: 0,\n    loop: HAS_BOOLEAN_VALUE,\n    low: 0,\n    manifest: 0,\n    marginHeight: 0,\n    marginWidth: 0,\n    max: 0,\n    maxLength: 0,\n    media: 0,\n    mediaGroup: 0,\n    method: 0,\n    min: 0,\n    minLength: 0,\n    // Caution; `option.selected` is not updated if `select.multiple` is\n    // disabled with `removeAttribute`.\n    multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    name: 0,\n    nonce: 0,\n    noValidate: HAS_BOOLEAN_VALUE,\n    open: HAS_BOOLEAN_VALUE,\n    optimum: 0,\n    pattern: 0,\n    placeholder: 0,\n    playsInline: HAS_BOOLEAN_VALUE,\n    poster: 0,\n    preload: 0,\n    profile: 0,\n    radioGroup: 0,\n    readOnly: HAS_BOOLEAN_VALUE,\n    referrerPolicy: 0,\n    rel: 0,\n    required: HAS_BOOLEAN_VALUE,\n    reversed: HAS_BOOLEAN_VALUE,\n    role: 0,\n    rows: HAS_POSITIVE_NUMERIC_VALUE,\n    rowSpan: HAS_NUMERIC_VALUE,\n    sandbox: 0,\n    scope: 0,\n    scoped: HAS_BOOLEAN_VALUE,\n    scrolling: 0,\n    seamless: HAS_BOOLEAN_VALUE,\n    selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n    shape: 0,\n    size: HAS_POSITIVE_NUMERIC_VALUE,\n    sizes: 0,\n    span: HAS_POSITIVE_NUMERIC_VALUE,\n    spellCheck: 0,\n    src: 0,\n    srcDoc: 0,\n    srcLang: 0,\n    srcSet: 0,\n    start: HAS_NUMERIC_VALUE,\n    step: 0,\n    style: 0,\n    summary: 0,\n    tabIndex: 0,\n    target: 0,\n    title: 0,\n    // Setting .type throws on non-&lt;input&gt; tags\n    type: 0,\n    useMap: 0,\n    value: 0,\n    width: 0,\n    wmode: 0,\n    wrap: 0,\n\n    /**\n     * RDFa Properties\n     */\n    about: 0,\n    datatype: 0,\n    inlist: 0,\n    prefix: 0,\n    // property is also supported for OpenGraph in meta tags.\n    property: 0,\n    resource: 0,\n    &apos;typeof&apos;: 0,\n    vocab: 0,\n\n    /**\n     * Non-standard Properties\n     */\n    // autoCapitalize and autoCorrect are supported in Mobile Safari for\n    // keyboard hints.\n    autoCapitalize: 0,\n    autoCorrect: 0,\n    // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n    autoSave: 0,\n    // color is for Safari mask-icon link\n    color: 0,\n    // itemProp, itemScope, itemType are for\n    // Microdata support. See http://schema.org/docs/gs.html\n    itemProp: 0,\n    itemScope: HAS_BOOLEAN_VALUE,\n    itemType: 0,\n    // itemID and itemRef are for Microdata support as well but\n    // only specified in the WHATWG spec document. See\n    // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n    itemID: 0,\n    itemRef: 0,\n    // results show looking glass icon and recent searches on input\n    // search fields in WebKit/Blink\n    results: 0,\n    // IE-only attribute that specifies security restrictions on an iframe\n    // as an alternative to the sandbox attribute on IE&lt;10\n    security: 0,\n    // IE-only attribute that controls focus behavior\n    unselectable: 0\n  },\n  DOMAttributeNames: {\n    acceptCharset: &apos;accept-charset&apos;,\n    className: &apos;class&apos;,\n    htmlFor: &apos;for&apos;,\n    httpEquiv: &apos;http-equiv&apos;\n  },\n  DOMPropertyNames: {},\n  DOMMutationMethods: {\n    value: function (node, value) {\n      if (value == null) {\n        return node.removeAttribute(&apos;value&apos;);\n      }\n\n      // Number inputs get special treatment due to some edge cases in\n      // Chrome. Let everything else assign the value attribute as normal.\n      // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n      if (node.type !== &apos;number&apos; || node.hasAttribute(&apos;value&apos;) === false) {\n        node.setAttribute(&apos;value&apos;, &apos;&apos; + value);\n      } else if (node.validity &amp;&amp; !node.validity.badInput &amp;&amp; node.ownerDocument.activeElement !== node) {\n        // Don&apos;t assign an attribute if validation reports bad\n        // input. Chrome will clear the value. Additionally, don&apos;t\n        // operate on inputs that have focus, otherwise Chrome might\n        // strip off trailing decimal places and cause the user&apos;s\n        // cursor position to jump to the beginning of the input.\n        //\n        // In ReactDOMInput, we have an onBlur event that will trigger\n        // this function again when focus is lost.\n        node.setAttribute(&apos;value&apos;, &apos;&apos; + value);\n      }\n    }\n  }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/HTMLDOMPropertyConfig.js\n// module id = 403\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\n\nvar instantiateReactComponent = require(&apos;./instantiateReactComponent&apos;);\nvar KeyEscapeUtils = require(&apos;./KeyEscapeUtils&apos;);\nvar shouldUpdateReactComponent = require(&apos;./shouldUpdateReactComponent&apos;);\nvar traverseAllChildren = require(&apos;./traverseAllChildren&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; process.env.NODE_ENV === &apos;test&apos;) {\n  // Temporary hack.\n  // Inline requires don&apos;t work well with Jest:\n  // https://github.com/facebook/react/issues/7240\n  // Remove the inline requires when we don&apos;t need them anymore:\n  // https://github.com/facebook/react/pull/7178\n  ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n  // We found a component instance.\n  var keyUnique = childInstances[name] === undefined;\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    if (!ReactComponentTreeHook) {\n      ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n    }\n    if (!keyUnique) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;flattenChildren(...): Encountered two children with the same key, &apos; + &apos;`%s`. Child keys must be unique; when two children share a key, only &apos; + &apos;the first child will be used.%s&apos;, KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n    }\n  }\n  if (child != null &amp;&amp; keyUnique) {\n    childInstances[name] = instantiateReactComponent(child, true);\n  }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n  /**\n   * Generates a \"mount image\" for each of the supplied children. In the case\n   * of `ReactDOMComponent`, a mount image is a string of markup.\n   *\n   * @param {?object} nestedChildNodes Nested child maps.\n   * @return {?object} A set of child instances.\n   * @internal\n   */\n  instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n  ) {\n    if (nestedChildNodes == null) {\n      return null;\n    }\n    var childInstances = {};\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n        return instantiateChild(childInsts, child, name, selfDebugID);\n      }, childInstances);\n    } else {\n      traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n    }\n    return childInstances;\n  },\n\n  /**\n   * Updates the rendered children and returns a new set of children.\n   *\n   * @param {?object} prevChildren Previously initialized set of children.\n   * @param {?object} nextChildren Flat child element maps.\n   * @param {ReactReconcileTransaction} transaction\n   * @param {object} context\n   * @return {?object} A new set of child instances.\n   * @internal\n   */\n  updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n  ) {\n    // We currently don&apos;t have a way to track moves here but if we use iterators\n    // instead of for..in we can zip the iterators and check if an item has\n    // moved.\n    // TODO: If nothing has changed, return the prevChildren object so that we\n    // can quickly bailout if nothing has changed.\n    if (!nextChildren &amp;&amp; !prevChildren) {\n      return;\n    }\n    var name;\n    var prevChild;\n    for (name in nextChildren) {\n      if (!nextChildren.hasOwnProperty(name)) {\n        continue;\n      }\n      prevChild = prevChildren &amp;&amp; prevChildren[name];\n      var prevElement = prevChild &amp;&amp; prevChild._currentElement;\n      var nextElement = nextChildren[name];\n      if (prevChild != null &amp;&amp; shouldUpdateReactComponent(prevElement, nextElement)) {\n        ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n        nextChildren[name] = prevChild;\n      } else {\n        if (prevChild) {\n          removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n          ReactReconciler.unmountComponent(prevChild, false);\n        }\n        // The child must be instantiated before it&apos;s mounted.\n        var nextChildInstance = instantiateReactComponent(nextElement, true);\n        nextChildren[name] = nextChildInstance;\n        // Creating mount image now ensures refs are resolved in right order\n        // (see https://github.com/facebook/react/pull/7101 for explanation).\n        var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n        mountImages.push(nextChildMountImage);\n      }\n    }\n    // Unmount children that are no longer present.\n    for (name in prevChildren) {\n      if (prevChildren.hasOwnProperty(name) &amp;&amp; !(nextChildren &amp;&amp; nextChildren.hasOwnProperty(name))) {\n        prevChild = prevChildren[name];\n        removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n        ReactReconciler.unmountComponent(prevChild, false);\n      }\n    }\n  },\n\n  /**\n   * Unmounts all rendered children. This should be used to clean up children\n   * when this component is unmounted.\n   *\n   * @param {?object} renderedChildren Previously initialized set of children.\n   * @internal\n   */\n  unmountChildren: function (renderedChildren, safely) {\n    for (var name in renderedChildren) {\n      if (renderedChildren.hasOwnProperty(name)) {\n        var renderedChild = renderedChildren[name];\n        ReactReconciler.unmountComponent(renderedChild, safely);\n      }\n    }\n  }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactChildReconciler.js\n// module id = 404\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMChildrenOperations = require(&apos;./DOMChildrenOperations&apos;);\nvar ReactDOMIDOperations = require(&apos;./ReactDOMIDOperations&apos;);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n  processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n  replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactComponentBrowserEnvironment.js\n// module id = 405\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar React = require(&apos;react/lib/React&apos;);\nvar ReactComponentEnvironment = require(&apos;./ReactComponentEnvironment&apos;);\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar ReactErrorUtils = require(&apos;./ReactErrorUtils&apos;);\nvar ReactInstanceMap = require(&apos;./ReactInstanceMap&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar ReactNodeTypes = require(&apos;./ReactNodeTypes&apos;);\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var checkReactTypeSpec = require(&apos;./checkReactTypeSpec&apos;);\n}\n\nvar emptyObject = require(&apos;fbjs/lib/emptyObject&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar shallowEqual = require(&apos;fbjs/lib/shallowEqual&apos;);\nvar shouldUpdateReactComponent = require(&apos;./shouldUpdateReactComponent&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar CompositeTypes = {\n  ImpureClass: 0,\n  PureClass: 1,\n  StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n  var Component = ReactInstanceMap.get(this)._currentElement.type;\n  var element = Component(this.props, this.context, this.updater);\n  warnIfInvalidElement(Component, element);\n  return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(element === null || element === false || React.isValidElement(element), &apos;%s(...): A valid React element (or null) must be returned. You may have &apos; + &apos;returned undefined, an array or some other invalid object.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(!Component.childContextTypes, &apos;%s(...): childContextTypes cannot be defined on a functional component.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;\n  }\n}\n\nfunction shouldConstruct(Component) {\n  return !!(Component.prototype &amp;&amp; Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n  return !!(Component.prototype &amp;&amp; Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n  if (debugID === 0) {\n    // Top-level wrappers (see ReactMount) and empty components (see\n    // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n    // Both are implementation details that should go away in the future.\n    return fn();\n  }\n\n  ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n  try {\n    return fn();\n  } finally {\n    ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n  }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n *   - componentWillMount\n *   - render\n *   - [children&apos;s constructors]\n *     - [children&apos;s componentWillMount and render]\n *     - [children&apos;s componentDidMount]\n *     - componentDidMount\n *\n *       Update Phases:\n *       - componentWillReceiveProps (only called if parent updated)\n *       - shouldComponentUpdate\n *         - componentWillUpdate\n *           - render\n *           - [children&apos;s constructors or receive props phases]\n *         - componentDidUpdate\n *\n *     - componentWillUnmount\n *     - [children&apos;s componentWillUnmount]\n *   - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n  /**\n   * Base constructor for all composite component.\n   *\n   * @param {ReactElement} element\n   * @final\n   * @internal\n   */\n  construct: function (element) {\n    this._currentElement = element;\n    this._rootNodeID = 0;\n    this._compositeType = null;\n    this._instance = null;\n    this._hostParent = null;\n    this._hostContainerInfo = null;\n\n    // See ReactUpdateQueue\n    this._updateBatchNumber = null;\n    this._pendingElement = null;\n    this._pendingStateQueue = null;\n    this._pendingReplaceState = false;\n    this._pendingForceUpdate = false;\n\n    this._renderedNodeType = null;\n    this._renderedComponent = null;\n    this._context = null;\n    this._mountOrder = 0;\n    this._topLevelWrapper = null;\n\n    // See ReactUpdates and ReactUpdateQueue.\n    this._pendingCallbacks = null;\n\n    // ComponentWillUnmount shall only be called once\n    this._calledComponentWillUnmount = false;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      this._warnedAboutRefsInRender = false;\n    }\n  },\n\n  /**\n   * Initializes the component, renders markup, and registers event listeners.\n   *\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {?object} hostParent\n   * @param {?object} hostContainerInfo\n   * @param {?object} context\n   * @return {?string} Rendered markup to be inserted into the DOM.\n   * @final\n   * @internal\n   */\n  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n    var _this = this;\n\n    this._context = context;\n    this._mountOrder = nextMountID++;\n    this._hostParent = hostParent;\n    this._hostContainerInfo = hostContainerInfo;\n\n    var publicProps = this._currentElement.props;\n    var publicContext = this._processContext(context);\n\n    var Component = this._currentElement.type;\n\n    var updateQueue = transaction.getUpdateQueue();\n\n    // Initialize the public class\n    var doConstruct = shouldConstruct(Component);\n    var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n    var renderedElement;\n\n    // Support functional components\n    if (!doConstruct &amp;&amp; (inst == null || inst.render == null)) {\n      renderedElement = inst;\n      warnIfInvalidElement(Component, renderedElement);\n      !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : _prodInvariant(&apos;105&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;\n      inst = new StatelessComponent(Component);\n      this._compositeType = CompositeTypes.StatelessFunctional;\n    } else {\n      if (isPureComponent(Component)) {\n        this._compositeType = CompositeTypes.PureClass;\n      } else {\n        this._compositeType = CompositeTypes.ImpureClass;\n      }\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      // This will throw later in _renderValidatedComponent, but add an early\n      // warning now to help debugging\n      if (inst.render == null) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s(...): No `render` method found on the returned component &apos; + &apos;instance: you may have forgotten to define `render`.&apos;, Component.displayName || Component.name || &apos;Component&apos;) : void 0;\n      }\n\n      var propsMutated = inst.props !== publicProps;\n      var componentName = Component.displayName || Component.name || &apos;Component&apos;;\n\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(inst.props === undefined || !propsMutated, &apos;%s(...): When calling super() in `%s`, make sure to pass &apos; + &apos;up the same props that your component\\&apos;s constructor was passed.&apos;, componentName, componentName) : void 0;\n    }\n\n    // These should be set up in the constructor, but as a convenience for\n    // simpler class abstractions, we set them up after the fact.\n    inst.props = publicProps;\n    inst.context = publicContext;\n    inst.refs = emptyObject;\n    inst.updater = updateQueue;\n\n    this._instance = inst;\n\n    // Store a reference from the instance back to the internal representation\n    ReactInstanceMap.set(inst, this);\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      // Since plain JS classes are defined without any special initialization\n      // logic, we can not catch common errors early. Therefore, we have to\n      // catch them here, at initialization time, instead.\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, &apos;getInitialState was defined on %s, a plain JavaScript class. &apos; + &apos;This is only supported for classes created using React.createClass. &apos; + &apos;Did you mean to define a state property instead?&apos;, this.getName() || &apos;a component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, &apos;getDefaultProps was defined on %s, a plain JavaScript class. &apos; + &apos;This is only supported for classes created using React.createClass. &apos; + &apos;Use a static property to define defaultProps instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!inst.propTypes, &apos;propTypes was defined as an instance property on %s. Use a static &apos; + &apos;property to define propTypes instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!inst.contextTypes, &apos;contextTypes was defined as an instance property on %s. Use a &apos; + &apos;static property to define contextTypes instead.&apos;, this.getName() || &apos;a component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(typeof inst.componentShouldUpdate !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentShouldUpdate(). Did you mean shouldComponentUpdate()? &apos; + &apos;The name is phrased as a question because the function is &apos; + &apos;expected to return a value.&apos;, this.getName() || &apos;A component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(typeof inst.componentDidUnmount !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentDidUnmount(). But there is no such lifecycle method. &apos; + &apos;Did you mean componentWillUnmount()?&apos;, this.getName() || &apos;A component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(typeof inst.componentWillRecieveProps !== &apos;function&apos;, &apos;%s has a method called &apos; + &apos;componentWillRecieveProps(). Did you mean componentWillReceiveProps()?&apos;, this.getName() || &apos;A component&apos;) : void 0;\n    }\n\n    var initialState = inst.state;\n    if (initialState === undefined) {\n      inst.state = initialState = null;\n    }\n    !(typeof initialState === &apos;object&apos; &amp;&amp; !Array.isArray(initialState)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s.state: must be set to an object or null&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;106&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n\n    this._pendingStateQueue = null;\n    this._pendingReplaceState = false;\n    this._pendingForceUpdate = false;\n\n    var markup;\n    if (inst.unstable_handleError) {\n      markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n    } else {\n      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n    }\n\n    if (inst.componentDidMount) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        transaction.getReactMountReady().enqueue(function () {\n          measureLifeCyclePerf(function () {\n            return inst.componentDidMount();\n          }, _this._debugID, &apos;componentDidMount&apos;);\n        });\n      } else {\n        transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n      }\n    }\n\n    return markup;\n  },\n\n  _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      ReactCurrentOwner.current = this;\n      try {\n        return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n      } finally {\n        ReactCurrentOwner.current = null;\n      }\n    } else {\n      return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n    }\n  },\n\n  _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n    var Component = this._currentElement.type;\n\n    if (doConstruct) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        return measureLifeCyclePerf(function () {\n          return new Component(publicProps, publicContext, updateQueue);\n        }, this._debugID, &apos;ctor&apos;);\n      } else {\n        return new Component(publicProps, publicContext, updateQueue);\n      }\n    }\n\n    // This can still be an instance in case of factory components\n    // but we&apos;ll count this as time spent rendering as the more common case.\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      return measureLifeCyclePerf(function () {\n        return Component(publicProps, publicContext, updateQueue);\n      }, this._debugID, &apos;render&apos;);\n    } else {\n      return Component(publicProps, publicContext, updateQueue);\n    }\n  },\n\n  performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n    var markup;\n    var checkpoint = transaction.checkpoint();\n    try {\n      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n    } catch (e) {\n      // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n      transaction.rollback(checkpoint);\n      this._instance.unstable_handleError(e);\n      if (this._pendingStateQueue) {\n        this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n      }\n      checkpoint = transaction.checkpoint();\n\n      this._renderedComponent.unmountComponent(true);\n      transaction.rollback(checkpoint);\n\n      // Try again - we&apos;ve informed the component about the error, so they can render an error message this time.\n      // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n      markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n    }\n    return markup;\n  },\n\n  performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n    var inst = this._instance;\n\n    var debugID = 0;\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      debugID = this._debugID;\n    }\n\n    if (inst.componentWillMount) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        measureLifeCyclePerf(function () {\n          return inst.componentWillMount();\n        }, debugID, &apos;componentWillMount&apos;);\n      } else {\n        inst.componentWillMount();\n      }\n      // When mounting, calls to `setState` by `componentWillMount` will set\n      // `this._pendingStateQueue` without triggering a re-render.\n      if (this._pendingStateQueue) {\n        inst.state = this._processPendingState(inst.props, inst.context);\n      }\n    }\n\n    // If not a stateless component, we now render\n    if (renderedElement === undefined) {\n      renderedElement = this._renderValidatedComponent();\n    }\n\n    var nodeType = ReactNodeTypes.getType(renderedElement);\n    this._renderedNodeType = nodeType;\n    var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n    );\n    this._renderedComponent = child;\n\n    var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (debugID !== 0) {\n        var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n        ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n      }\n    }\n\n    return markup;\n  },\n\n  getHostNode: function () {\n    return ReactReconciler.getHostNode(this._renderedComponent);\n  },\n\n  /**\n   * Releases any resources allocated by `mountComponent`.\n   *\n   * @final\n   * @internal\n   */\n  unmountComponent: function (safely) {\n    if (!this._renderedComponent) {\n      return;\n    }\n\n    var inst = this._instance;\n\n    if (inst.componentWillUnmount &amp;&amp; !inst._calledComponentWillUnmount) {\n      inst._calledComponentWillUnmount = true;\n\n      if (safely) {\n        var name = this.getName() + &apos;.componentWillUnmount()&apos;;\n        ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n      } else {\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          measureLifeCyclePerf(function () {\n            return inst.componentWillUnmount();\n          }, this._debugID, &apos;componentWillUnmount&apos;);\n        } else {\n          inst.componentWillUnmount();\n        }\n      }\n    }\n\n    if (this._renderedComponent) {\n      ReactReconciler.unmountComponent(this._renderedComponent, safely);\n      this._renderedNodeType = null;\n      this._renderedComponent = null;\n      this._instance = null;\n    }\n\n    // Reset pending fields\n    // Even if this component is scheduled for another update in ReactUpdates,\n    // it would still be ignored because these fields are reset.\n    this._pendingStateQueue = null;\n    this._pendingReplaceState = false;\n    this._pendingForceUpdate = false;\n    this._pendingCallbacks = null;\n    this._pendingElement = null;\n\n    // These fields do not really need to be reset since this object is no\n    // longer accessible.\n    this._context = null;\n    this._rootNodeID = 0;\n    this._topLevelWrapper = null;\n\n    // Delete the reference from the instance to this internal representation\n    // which allow the internals to be properly cleaned up even if the user\n    // leaks a reference to the public instance.\n    ReactInstanceMap.remove(inst);\n\n    // Some existing components rely on inst.props even after they&apos;ve been\n    // destroyed (in event handlers).\n    // TODO: inst.props = null;\n    // TODO: inst.state = null;\n    // TODO: inst.context = null;\n  },\n\n  /**\n   * Filters the context object to only contain keys specified in\n   * `contextTypes`\n   *\n   * @param {object} context\n   * @return {?object}\n   * @private\n   */\n  _maskContext: function (context) {\n    var Component = this._currentElement.type;\n    var contextTypes = Component.contextTypes;\n    if (!contextTypes) {\n      return emptyObject;\n    }\n    var maskedContext = {};\n    for (var contextName in contextTypes) {\n      maskedContext[contextName] = context[contextName];\n    }\n    return maskedContext;\n  },\n\n  /**\n   * Filters the context object to only contain keys specified in\n   * `contextTypes`, and asserts that they are valid.\n   *\n   * @param {object} context\n   * @return {?object}\n   * @private\n   */\n  _processContext: function (context) {\n    var maskedContext = this._maskContext(context);\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var Component = this._currentElement.type;\n      if (Component.contextTypes) {\n        this._checkContextTypes(Component.contextTypes, maskedContext, &apos;context&apos;);\n      }\n    }\n    return maskedContext;\n  },\n\n  /**\n   * @param {object} currentContext\n   * @return {object}\n   * @private\n   */\n  _processChildContext: function (currentContext) {\n    var Component = this._currentElement.type;\n    var inst = this._instance;\n    var childContext;\n\n    if (inst.getChildContext) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n        try {\n          childContext = inst.getChildContext();\n        } finally {\n          ReactInstrumentation.debugTool.onEndProcessingChildContext();\n        }\n      } else {\n        childContext = inst.getChildContext();\n      }\n    }\n\n    if (childContext) {\n      !(typeof Component.childContextTypes === &apos;object&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;107&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        this._checkContextTypes(Component.childContextTypes, childContext, &apos;child context&apos;);\n      }\n      for (var name in childContext) {\n        !(name in Component.childContextTypes) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s.getChildContext(): key \"%s\" is not defined in childContextTypes.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;, name) : _prodInvariant(&apos;108&apos;, this.getName() || &apos;ReactCompositeComponent&apos;, name) : void 0;\n      }\n      return _assign({}, currentContext, childContext);\n    }\n    return currentContext;\n  },\n\n  /**\n   * Assert that the context types are valid\n   *\n   * @param {object} typeSpecs Map of context field to a ReactPropType\n   * @param {object} values Runtime values that need to be type-checked\n   * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n   * @private\n   */\n  _checkContextTypes: function (typeSpecs, values, location) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n    }\n  },\n\n  receiveComponent: function (nextElement, transaction, nextContext) {\n    var prevElement = this._currentElement;\n    var prevContext = this._context;\n\n    this._pendingElement = null;\n\n    this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n  },\n\n  /**\n   * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n   * is set, update the component.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @internal\n   */\n  performUpdateIfNecessary: function (transaction) {\n    if (this._pendingElement != null) {\n      ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n    } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n      this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n    } else {\n      this._updateBatchNumber = null;\n    }\n  },\n\n  /**\n   * Perform an update to a mounted component. The componentWillReceiveProps and\n   * shouldComponentUpdate methods are called, then (assuming the update isn&apos;t\n   * skipped) the remaining update lifecycle methods are called and the DOM\n   * representation is updated.\n   *\n   * By default, this implements React&apos;s rendering and reconciliation algorithm.\n   * Sophisticated clients may wish to override this.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @param {ReactElement} prevParentElement\n   * @param {ReactElement} nextParentElement\n   * @internal\n   * @overridable\n   */\n  updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n    var inst = this._instance;\n    !(inst != null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Attempted to update component `%s` that has already been unmounted (or failed to mount).&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;136&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n\n    var willReceive = false;\n    var nextContext;\n\n    // Determine if the context has changed or not\n    if (this._context === nextUnmaskedContext) {\n      nextContext = inst.context;\n    } else {\n      nextContext = this._processContext(nextUnmaskedContext);\n      willReceive = true;\n    }\n\n    var prevProps = prevParentElement.props;\n    var nextProps = nextParentElement.props;\n\n    // Not a simple state update but a props update\n    if (prevParentElement !== nextParentElement) {\n      willReceive = true;\n    }\n\n    // An update here will schedule an update but immediately set\n    // _pendingStateQueue which will ensure that any state updates gets\n    // immediately reconciled instead of waiting for the next batch.\n    if (willReceive &amp;&amp; inst.componentWillReceiveProps) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        measureLifeCyclePerf(function () {\n          return inst.componentWillReceiveProps(nextProps, nextContext);\n        }, this._debugID, &apos;componentWillReceiveProps&apos;);\n      } else {\n        inst.componentWillReceiveProps(nextProps, nextContext);\n      }\n    }\n\n    var nextState = this._processPendingState(nextProps, nextContext);\n    var shouldUpdate = true;\n\n    if (!this._pendingForceUpdate) {\n      if (inst.shouldComponentUpdate) {\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          shouldUpdate = measureLifeCyclePerf(function () {\n            return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n          }, this._debugID, &apos;shouldComponentUpdate&apos;);\n        } else {\n          shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n        }\n      } else {\n        if (this._compositeType === CompositeTypes.PureClass) {\n          shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n        }\n      }\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(shouldUpdate !== undefined, &apos;%s.shouldComponentUpdate(): Returned undefined instead of a &apos; + &apos;boolean value. Make sure to return true or false.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n    }\n\n    this._updateBatchNumber = null;\n    if (shouldUpdate) {\n      this._pendingForceUpdate = false;\n      // Will set `this.props`, `this.state` and `this.context`.\n      this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n    } else {\n      // If it&apos;s determined that a component should not update, we still want\n      // to set props and state but we shortcut the rest of the update.\n      this._currentElement = nextParentElement;\n      this._context = nextUnmaskedContext;\n      inst.props = nextProps;\n      inst.state = nextState;\n      inst.context = nextContext;\n    }\n  },\n\n  _processPendingState: function (props, context) {\n    var inst = this._instance;\n    var queue = this._pendingStateQueue;\n    var replace = this._pendingReplaceState;\n    this._pendingReplaceState = false;\n    this._pendingStateQueue = null;\n\n    if (!queue) {\n      return inst.state;\n    }\n\n    if (replace &amp;&amp; queue.length === 1) {\n      return queue[0];\n    }\n\n    var nextState = _assign({}, replace ? queue[0] : inst.state);\n    for (var i = replace ? 1 : 0; i &lt; queue.length; i++) {\n      var partial = queue[i];\n      _assign(nextState, typeof partial === &apos;function&apos; ? partial.call(inst, nextState, props, context) : partial);\n    }\n\n    return nextState;\n  },\n\n  /**\n   * Merges new props and state, notifies delegate methods of update and\n   * performs update.\n   *\n   * @param {ReactElement} nextElement Next element\n   * @param {object} nextProps Next public object to set as properties.\n   * @param {?object} nextState Next object to set as state.\n   * @param {?object} nextContext Next public object to set as context.\n   * @param {ReactReconcileTransaction} transaction\n   * @param {?object} unmaskedContext\n   * @private\n   */\n  _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n    var _this2 = this;\n\n    var inst = this._instance;\n\n    var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n    var prevProps;\n    var prevState;\n    var prevContext;\n    if (hasComponentDidUpdate) {\n      prevProps = inst.props;\n      prevState = inst.state;\n      prevContext = inst.context;\n    }\n\n    if (inst.componentWillUpdate) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        measureLifeCyclePerf(function () {\n          return inst.componentWillUpdate(nextProps, nextState, nextContext);\n        }, this._debugID, &apos;componentWillUpdate&apos;);\n      } else {\n        inst.componentWillUpdate(nextProps, nextState, nextContext);\n      }\n    }\n\n    this._currentElement = nextElement;\n    this._context = unmaskedContext;\n    inst.props = nextProps;\n    inst.state = nextState;\n    inst.context = nextContext;\n\n    this._updateRenderedComponent(transaction, unmaskedContext);\n\n    if (hasComponentDidUpdate) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        transaction.getReactMountReady().enqueue(function () {\n          measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, &apos;componentDidUpdate&apos;);\n        });\n      } else {\n        transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n      }\n    }\n  },\n\n  /**\n   * Call the component&apos;s `render` method and update the DOM accordingly.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @internal\n   */\n  _updateRenderedComponent: function (transaction, context) {\n    var prevComponentInstance = this._renderedComponent;\n    var prevRenderedElement = prevComponentInstance._currentElement;\n    var nextRenderedElement = this._renderValidatedComponent();\n\n    var debugID = 0;\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      debugID = this._debugID;\n    }\n\n    if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n      ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n    } else {\n      var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n      ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n      var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n      this._renderedNodeType = nodeType;\n      var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n      );\n      this._renderedComponent = child;\n\n      var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        if (debugID !== 0) {\n          var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n          ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n        }\n      }\n\n      this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n    }\n  },\n\n  /**\n   * Overridden in shallow rendering.\n   *\n   * @protected\n   */\n  _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n    ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n  },\n\n  /**\n   * @protected\n   */\n  _renderValidatedComponentWithoutOwnerOrContext: function () {\n    var inst = this._instance;\n    var renderedElement;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      renderedElement = measureLifeCyclePerf(function () {\n        return inst.render();\n      }, this._debugID, &apos;render&apos;);\n    } else {\n      renderedElement = inst.render();\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      // We allow auto-mocks to proceed as if they&apos;re returning null.\n      if (renderedElement === undefined &amp;&amp; inst.render._isMockFunction) {\n        // This is probably bad practice. Consider warning here and\n        // deprecating this convenience.\n        renderedElement = null;\n      }\n    }\n\n    return renderedElement;\n  },\n\n  /**\n   * @private\n   */\n  _renderValidatedComponent: function () {\n    var renderedElement;\n    if (process.env.NODE_ENV !== &apos;production&apos; || this._compositeType !== CompositeTypes.StatelessFunctional) {\n      ReactCurrentOwner.current = this;\n      try {\n        renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n      } finally {\n        ReactCurrentOwner.current = null;\n      }\n    } else {\n      renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n    }\n    !(\n    // TODO: An `isValidNode` function would probably be more appropriate\n    renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;109&apos;, this.getName() || &apos;ReactCompositeComponent&apos;) : void 0;\n\n    return renderedElement;\n  },\n\n  /**\n   * Lazily allocates the refs object and stores `component` as `ref`.\n   *\n   * @param {string} ref Reference name.\n   * @param {component} component Component to store as `ref`.\n   * @final\n   * @private\n   */\n  attachRef: function (ref, component) {\n    var inst = this.getPublicInstance();\n    !(inst != null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Stateless function components cannot have refs.&apos;) : _prodInvariant(&apos;110&apos;) : void 0;\n    var publicComponentInstance = component.getPublicInstance();\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var componentName = component &amp;&amp; component.getName ? component.getName() : &apos;a component&apos;;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, &apos;Stateless function components cannot be given refs &apos; + &apos;(See ref \"%s\" in %s created by %s). &apos; + &apos;Attempts to access this ref will fail.&apos;, ref, componentName, this.getName()) : void 0;\n    }\n    var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n    refs[ref] = publicComponentInstance;\n  },\n\n  /**\n   * Detaches a reference name.\n   *\n   * @param {string} ref Name to dereference.\n   * @final\n   * @private\n   */\n  detachRef: function (ref) {\n    var refs = this.getPublicInstance().refs;\n    delete refs[ref];\n  },\n\n  /**\n   * Get a text description of the component that can be used to identify it\n   * in error messages.\n   * @return {string} The name or null.\n   * @internal\n   */\n  getName: function () {\n    var type = this._currentElement.type;\n    var constructor = this._instance &amp;&amp; this._instance.constructor;\n    return type.displayName || constructor &amp;&amp; constructor.displayName || type.name || constructor &amp;&amp; constructor.name || null;\n  },\n\n  /**\n   * Get the publicly accessible representation of this component - i.e. what\n   * is exposed by refs and returned by render. Can be null for stateless\n   * components.\n   *\n   * @return {ReactComponent} the public component instance.\n   * @internal\n   */\n  getPublicInstance: function () {\n    var inst = this._instance;\n    if (this._compositeType === CompositeTypes.StatelessFunctional) {\n      return null;\n    }\n    return inst;\n  },\n\n  // Stub\n  _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactCompositeComponent.js\n// module id = 406\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n&apos;use strict&apos;;\n\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactDefaultInjection = require(&apos;./ReactDefaultInjection&apos;);\nvar ReactMount = require(&apos;./ReactMount&apos;);\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\nvar ReactVersion = require(&apos;./ReactVersion&apos;);\n\nvar findDOMNode = require(&apos;./findDOMNode&apos;);\nvar getHostComponentFromComposite = require(&apos;./getHostComponentFromComposite&apos;);\nvar renderSubtreeIntoContainer = require(&apos;./renderSubtreeIntoContainer&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n  findDOMNode: findDOMNode,\n  render: ReactMount.render,\n  unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n  version: ReactVersion,\n\n  /* eslint-disable camelcase */\n  unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n  unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== &apos;undefined&apos; &amp;&amp; typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === &apos;function&apos;) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n    ComponentTree: {\n      getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n      getNodeFromInstance: function (inst) {\n        // inst is an internal instance (but could be a composite)\n        if (inst._renderedComponent) {\n          inst = getHostComponentFromComposite(inst);\n        }\n        if (inst) {\n          return ReactDOMComponentTree.getNodeFromInstance(inst);\n        } else {\n          return null;\n        }\n      }\n    },\n    Mount: ReactMount,\n    Reconciler: ReactReconciler\n  });\n}\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n  if (ExecutionEnvironment.canUseDOM &amp;&amp; window.top === window.self) {\n\n    // First check if devtools is not installed\n    if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === &apos;undefined&apos;) {\n      // If we&apos;re in Chrome or Firefox, provide a download link if not installed.\n      if (navigator.userAgent.indexOf(&apos;Chrome&apos;) &gt; -1 &amp;&amp; navigator.userAgent.indexOf(&apos;Edge&apos;) === -1 || navigator.userAgent.indexOf(&apos;Firefox&apos;) &gt; -1) {\n        // Firefox does not have the issue with devtools loaded over file://\n        var showFileUrlMessage = window.location.protocol.indexOf(&apos;http&apos;) === -1 &amp;&amp; navigator.userAgent.indexOf(&apos;Firefox&apos;) === -1;\n        console.debug(&apos;Download the React DevTools &apos; + (showFileUrlMessage ? &apos;and use an HTTP server (instead of a file: URL) &apos; : &apos;&apos;) + &apos;for a better development experience: &apos; + &apos;https://fb.me/react-devtools&apos;);\n      }\n    }\n\n    var testFunc = function testFn() {};\n    process.env.NODE_ENV !== &apos;production&apos; ? warning((testFunc.name || testFunc.toString()).indexOf(&apos;testFn&apos;) !== -1, &apos;It looks like you\\&apos;re using a minified copy of the development build &apos; + &apos;of React. When deploying React apps to production, make sure to use &apos; + &apos;the production build which skips development warnings and is faster. &apos; + &apos;See https://fb.me/react-minification for more details.&apos;) : void 0;\n\n    // If we&apos;re in IE8, check to see if we are in compatibility mode and provide\n    // information on preventing compatibility mode\n    var ieCompatibilityMode = document.documentMode &amp;&amp; document.documentMode &lt; 8;\n\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(!ieCompatibilityMode, &apos;Internet Explorer is running in compatibility mode; please add the &apos; + &apos;following tag to your HTML to prevent this from happening: &apos; + &apos;&lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" /&gt;&apos;) : void 0;\n\n    var expectedFeatures = [\n    // shims\n    Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n    for (var i = 0; i &lt; expectedFeatures.length; i++) {\n      if (!expectedFeatures[i]) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;One or more ES5 shims expected by React are not available: &apos; + &apos;https://fb.me/react-warning-polyfills&apos;) : void 0;\n        break;\n      }\n    }\n  }\n}\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n  var ReactDOMUnknownPropertyHook = require(&apos;./ReactDOMUnknownPropertyHook&apos;);\n  var ReactDOMNullInputValuePropHook = require(&apos;./ReactDOMNullInputValuePropHook&apos;);\n  var ReactDOMInvalidARIAHook = require(&apos;./ReactDOMInvalidARIAHook&apos;);\n\n  ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n  ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n  ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOM.js\n// module id = 407\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar AutoFocusUtils = require(&apos;./AutoFocusUtils&apos;);\nvar CSSPropertyOperations = require(&apos;./CSSPropertyOperations&apos;);\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar DOMNamespaces = require(&apos;./DOMNamespaces&apos;);\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar DOMPropertyOperations = require(&apos;./DOMPropertyOperations&apos;);\nvar EventPluginHub = require(&apos;./EventPluginHub&apos;);\nvar EventPluginRegistry = require(&apos;./EventPluginRegistry&apos;);\nvar ReactBrowserEventEmitter = require(&apos;./ReactBrowserEventEmitter&apos;);\nvar ReactDOMComponentFlags = require(&apos;./ReactDOMComponentFlags&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactDOMInput = require(&apos;./ReactDOMInput&apos;);\nvar ReactDOMOption = require(&apos;./ReactDOMOption&apos;);\nvar ReactDOMSelect = require(&apos;./ReactDOMSelect&apos;);\nvar ReactDOMTextarea = require(&apos;./ReactDOMTextarea&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar ReactMultiChild = require(&apos;./ReactMultiChild&apos;);\nvar ReactServerRenderingTransaction = require(&apos;./ReactServerRenderingTransaction&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar escapeTextContentForBrowser = require(&apos;./escapeTextContentForBrowser&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar isEventSupported = require(&apos;./isEventSupported&apos;);\nvar shallowEqual = require(&apos;fbjs/lib/shallowEqual&apos;);\nvar validateDOMNesting = require(&apos;./validateDOMNesting&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { &apos;string&apos;: true, &apos;number&apos;: true };\n\nvar STYLE = &apos;style&apos;;\nvar HTML = &apos;__html&apos;;\nvar RESERVED_PROPS = {\n  children: null,\n  dangerouslySetInnerHTML: null,\n  suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n  if (internalInstance) {\n    var owner = internalInstance._currentElement._owner || null;\n    if (owner) {\n      var name = owner.getName();\n      if (name) {\n        return &apos; This DOM node was rendered by `&apos; + name + &apos;`.&apos;;\n      }\n    }\n  }\n  return &apos;&apos;;\n}\n\nfunction friendlyStringify(obj) {\n  if (typeof obj === &apos;object&apos;) {\n    if (Array.isArray(obj)) {\n      return &apos;[&apos; + obj.map(friendlyStringify).join(&apos;, &apos;) + &apos;]&apos;;\n    } else {\n      var pairs = [];\n      for (var key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n          pairs.push(keyEscaped + &apos;: &apos; + friendlyStringify(obj[key]));\n        }\n      }\n      return &apos;{&apos; + pairs.join(&apos;, &apos;) + &apos;}&apos;;\n    }\n  } else if (typeof obj === &apos;string&apos;) {\n    return JSON.stringify(obj);\n  } else if (typeof obj === &apos;function&apos;) {\n    return &apos;[function object]&apos;;\n  }\n  // Differs from JSON.stringify in that undefined because undefined and that\n  // inf and nan don&apos;t become null\n  return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n  if (style1 == null || style2 == null) {\n    return;\n  }\n  if (shallowEqual(style1, style2)) {\n    return;\n  }\n\n  var componentName = component._tag;\n  var owner = component._currentElement._owner;\n  var ownerName;\n  if (owner) {\n    ownerName = owner.getName();\n  }\n\n  var hash = ownerName + &apos;|&apos; + componentName;\n\n  if (styleMutationWarning.hasOwnProperty(hash)) {\n    return;\n  }\n\n  styleMutationWarning[hash] = true;\n\n  process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`%s` was passed a style object that has previously been mutated. &apos; + &apos;Mutating `style` is deprecated. Consider cloning it beforehand. Check &apos; + &apos;the `render` %s. Previous style: %s. Mutated style: %s.&apos;, componentName, owner ? &apos;of `&apos; + ownerName + &apos;`&apos; : &apos;using &lt;&apos; + componentName + &apos;&gt;&apos;, friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n  if (!props) {\n    return;\n  }\n  // Note the use of `==` which checks for null or undefined.\n  if (voidElementTags[component._tag]) {\n    !(props.children == null &amp;&amp; props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s&apos;, component._tag, component._currentElement._owner ? &apos; Check the render method of &apos; + component._currentElement._owner.getName() + &apos;.&apos; : &apos;&apos;) : _prodInvariant(&apos;137&apos;, component._tag, component._currentElement._owner ? &apos; Check the render method of &apos; + component._currentElement._owner.getName() + &apos;.&apos; : &apos;&apos;) : void 0;\n  }\n  if (props.dangerouslySetInnerHTML != null) {\n    !(props.children == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Can only set one of `children` or `props.dangerouslySetInnerHTML`.&apos;) : _prodInvariant(&apos;60&apos;) : void 0;\n    !(typeof props.dangerouslySetInnerHTML === &apos;object&apos; &amp;&amp; HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.&apos;) : _prodInvariant(&apos;61&apos;) : void 0;\n  }\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(props.innerHTML == null, &apos;Directly setting property `innerHTML` is not permitted. &apos; + &apos;For more information, lookup documentation on `dangerouslySetInnerHTML`.&apos;) : void 0;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, &apos;A component is `contentEditable` and contains `children` managed by &apos; + &apos;React. It is now your responsibility to guarantee that none of &apos; + &apos;those nodes are unexpectedly modified or duplicated. This is &apos; + &apos;probably not intentional.&apos;) : void 0;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(props.onFocusIn == null &amp;&amp; props.onFocusOut == null, &apos;React uses onFocus and onBlur instead of onFocusIn and onFocusOut. &apos; + &apos;All React events are normalized to bubble, so onFocusIn and onFocusOut &apos; + &apos;are not needed/supported by React.&apos;) : void 0;\n  }\n  !(props.style == null || typeof props.style === &apos;object&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\&apos;em\\&apos;}} when using JSX.%s&apos;, getDeclarationErrorAddendum(component)) : _prodInvariant(&apos;62&apos;, getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n  if (transaction instanceof ReactServerRenderingTransaction) {\n    return;\n  }\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    // IE8 has no API for event capturing and the `onScroll` event doesn&apos;t\n    // bubble.\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(registrationName !== &apos;onScroll&apos; || isEventSupported(&apos;scroll&apos;, true), &apos;This browser doesn\\&apos;t support the `onScroll` event&apos;) : void 0;\n  }\n  var containerInfo = inst._hostContainerInfo;\n  var isDocumentFragment = containerInfo._node &amp;&amp; containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n  var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n  listenTo(registrationName, doc);\n  transaction.getReactMountReady().enqueue(putListener, {\n    inst: inst,\n    registrationName: registrationName,\n    listener: listener\n  });\n}\n\nfunction putListener() {\n  var listenerToPut = this;\n  EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n  var inst = this;\n  ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n  var inst = this;\n  ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n  var inst = this;\n  ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  setAndValidateContentChildDev = function (content) {\n    var hasExistingContent = this._contentDebugID != null;\n    var debugID = this._debugID;\n    // This ID represents the inlined child that has no backing instance:\n    var contentDebugID = -debugID;\n\n    if (content == null) {\n      if (hasExistingContent) {\n        ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n      }\n      this._contentDebugID = null;\n      return;\n    }\n\n    validateDOMNesting(null, String(content), this, this._ancestorInfo);\n    this._contentDebugID = contentDebugID;\n    if (hasExistingContent) {\n      ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n      ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n    } else {\n      ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n      ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n      ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n    }\n  };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n  topAbort: &apos;abort&apos;,\n  topCanPlay: &apos;canplay&apos;,\n  topCanPlayThrough: &apos;canplaythrough&apos;,\n  topDurationChange: &apos;durationchange&apos;,\n  topEmptied: &apos;emptied&apos;,\n  topEncrypted: &apos;encrypted&apos;,\n  topEnded: &apos;ended&apos;,\n  topError: &apos;error&apos;,\n  topLoadedData: &apos;loadeddata&apos;,\n  topLoadedMetadata: &apos;loadedmetadata&apos;,\n  topLoadStart: &apos;loadstart&apos;,\n  topPause: &apos;pause&apos;,\n  topPlay: &apos;play&apos;,\n  topPlaying: &apos;playing&apos;,\n  topProgress: &apos;progress&apos;,\n  topRateChange: &apos;ratechange&apos;,\n  topSeeked: &apos;seeked&apos;,\n  topSeeking: &apos;seeking&apos;,\n  topStalled: &apos;stalled&apos;,\n  topSuspend: &apos;suspend&apos;,\n  topTimeUpdate: &apos;timeupdate&apos;,\n  topVolumeChange: &apos;volumechange&apos;,\n  topWaiting: &apos;waiting&apos;\n};\n\nfunction trapBubbledEventsLocal() {\n  var inst = this;\n  // If a component renders to null or if another component fatals and causes\n  // the state of the tree to be corrupted, `node` here can be null.\n  !inst._rootNodeID ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Must be mounted to trap events&apos;) : _prodInvariant(&apos;63&apos;) : void 0;\n  var node = getNode(inst);\n  !node ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;trapBubbledEvent(...): Requires node to be rendered.&apos;) : _prodInvariant(&apos;64&apos;) : void 0;\n\n  switch (inst._tag) {\n    case &apos;iframe&apos;:\n    case &apos;object&apos;:\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topLoad&apos;, &apos;load&apos;, node)];\n      break;\n    case &apos;video&apos;:\n    case &apos;audio&apos;:\n\n      inst._wrapperState.listeners = [];\n      // Create listener for each media event\n      for (var event in mediaEvents) {\n        if (mediaEvents.hasOwnProperty(event)) {\n          inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n        }\n      }\n      break;\n    case &apos;source&apos;:\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topError&apos;, &apos;error&apos;, node)];\n      break;\n    case &apos;img&apos;:\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topError&apos;, &apos;error&apos;, node), ReactBrowserEventEmitter.trapBubbledEvent(&apos;topLoad&apos;, &apos;load&apos;, node)];\n      break;\n    case &apos;form&apos;:\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topReset&apos;, &apos;reset&apos;, node), ReactBrowserEventEmitter.trapBubbledEvent(&apos;topSubmit&apos;, &apos;submit&apos;, node)];\n      break;\n    case &apos;input&apos;:\n    case &apos;select&apos;:\n    case &apos;textarea&apos;:\n      inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent(&apos;topInvalid&apos;, &apos;invalid&apos;, node)];\n      break;\n  }\n}\n\nfunction postUpdateSelectWrapper() {\n  ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  &apos;area&apos;: true,\n  &apos;base&apos;: true,\n  &apos;br&apos;: true,\n  &apos;col&apos;: true,\n  &apos;embed&apos;: true,\n  &apos;hr&apos;: true,\n  &apos;img&apos;: true,\n  &apos;input&apos;: true,\n  &apos;keygen&apos;: true,\n  &apos;link&apos;: true,\n  &apos;meta&apos;: true,\n  &apos;param&apos;: true,\n  &apos;source&apos;: true,\n  &apos;track&apos;: true,\n  &apos;wbr&apos;: true\n};\n\nvar newlineEatingTags = {\n  &apos;listing&apos;: true,\n  &apos;pre&apos;: true,\n  &apos;textarea&apos;: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n  &apos;menuitem&apos;: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it&apos;s a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n  if (!hasOwnProperty.call(validatedTagCache, tag)) {\n    !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Invalid tag: %s&apos;, tag) : _prodInvariant(&apos;65&apos;, tag) : void 0;\n    validatedTagCache[tag] = true;\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  return tagName.indexOf(&apos;-&apos;) &gt;= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n *  - Event listeners: `onClick`, `onMouseDown`, etc.\n *  - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n  var tag = element.type;\n  validateDangerousTag(tag);\n  this._currentElement = element;\n  this._tag = tag.toLowerCase();\n  this._namespaceURI = null;\n  this._renderedChildren = null;\n  this._previousStyle = null;\n  this._previousStyleCopy = null;\n  this._hostNode = null;\n  this._hostParent = null;\n  this._rootNodeID = 0;\n  this._domID = 0;\n  this._hostContainerInfo = null;\n  this._wrapperState = null;\n  this._topLevelWrapper = null;\n  this._flags = 0;\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    this._ancestorInfo = null;\n    setAndValidateContentChildDev.call(this, null);\n  }\n}\n\nReactDOMComponent.displayName = &apos;ReactDOMComponent&apos;;\n\nReactDOMComponent.Mixin = {\n\n  /**\n   * Generates root tag markup then recurses. This method has side effects and\n   * is not idempotent.\n   *\n   * @internal\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {?ReactDOMComponent} the parent component instance\n   * @param {?object} info about the host container\n   * @param {object} context\n   * @return {string} The computed markup.\n   */\n  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n    this._rootNodeID = globalIdCounter++;\n    this._domID = hostContainerInfo._idCounter++;\n    this._hostParent = hostParent;\n    this._hostContainerInfo = hostContainerInfo;\n\n    var props = this._currentElement.props;\n\n    switch (this._tag) {\n      case &apos;audio&apos;:\n      case &apos;form&apos;:\n      case &apos;iframe&apos;:\n      case &apos;img&apos;:\n      case &apos;link&apos;:\n      case &apos;object&apos;:\n      case &apos;source&apos;:\n      case &apos;video&apos;:\n        this._wrapperState = {\n          listeners: null\n        };\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case &apos;input&apos;:\n        ReactDOMInput.mountWrapper(this, props, hostParent);\n        props = ReactDOMInput.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case &apos;option&apos;:\n        ReactDOMOption.mountWrapper(this, props, hostParent);\n        props = ReactDOMOption.getHostProps(this, props);\n        break;\n      case &apos;select&apos;:\n        ReactDOMSelect.mountWrapper(this, props, hostParent);\n        props = ReactDOMSelect.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n      case &apos;textarea&apos;:\n        ReactDOMTextarea.mountWrapper(this, props, hostParent);\n        props = ReactDOMTextarea.getHostProps(this, props);\n        transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n        break;\n    }\n\n    assertValidProps(this, props);\n\n    // We create tags in the namespace of their parent container, except HTML\n    // tags get no namespace.\n    var namespaceURI;\n    var parentTag;\n    if (hostParent != null) {\n      namespaceURI = hostParent._namespaceURI;\n      parentTag = hostParent._tag;\n    } else if (hostContainerInfo._tag) {\n      namespaceURI = hostContainerInfo._namespaceURI;\n      parentTag = hostContainerInfo._tag;\n    }\n    if (namespaceURI == null || namespaceURI === DOMNamespaces.svg &amp;&amp; parentTag === &apos;foreignobject&apos;) {\n      namespaceURI = DOMNamespaces.html;\n    }\n    if (namespaceURI === DOMNamespaces.html) {\n      if (this._tag === &apos;svg&apos;) {\n        namespaceURI = DOMNamespaces.svg;\n      } else if (this._tag === &apos;math&apos;) {\n        namespaceURI = DOMNamespaces.mathml;\n      }\n    }\n    this._namespaceURI = namespaceURI;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var parentInfo;\n      if (hostParent != null) {\n        parentInfo = hostParent._ancestorInfo;\n      } else if (hostContainerInfo._tag) {\n        parentInfo = hostContainerInfo._ancestorInfo;\n      }\n      if (parentInfo) {\n        // parentInfo should always be present except for the top-level\n        // component when server rendering\n        validateDOMNesting(this._tag, null, this, parentInfo);\n      }\n      this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n    }\n\n    var mountImage;\n    if (transaction.useCreateElement) {\n      var ownerDocument = hostContainerInfo._ownerDocument;\n      var el;\n      if (namespaceURI === DOMNamespaces.html) {\n        if (this._tag === &apos;script&apos;) {\n          // Create the script via .innerHTML so its \"parser-inserted\" flag is\n          // set to true and it does not execute\n          var div = ownerDocument.createElement(&apos;div&apos;);\n          var type = this._currentElement.type;\n          div.innerHTML = &apos;&lt;&apos; + type + &apos;&gt;&lt;/&apos; + type + &apos;&gt;&apos;;\n          el = div.removeChild(div.firstChild);\n        } else if (props.is) {\n          el = ownerDocument.createElement(this._currentElement.type, props.is);\n        } else {\n          // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n          // See discussion in https://github.com/facebook/react/pull/6896\n          // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n          el = ownerDocument.createElement(this._currentElement.type);\n        }\n      } else {\n        el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n      }\n      ReactDOMComponentTree.precacheNode(this, el);\n      this._flags |= Flags.hasCachedChildNodes;\n      if (!this._hostParent) {\n        DOMPropertyOperations.setAttributeForRoot(el);\n      }\n      this._updateDOMProperties(null, props, transaction);\n      var lazyTree = DOMLazyTree(el);\n      this._createInitialChildren(transaction, props, context, lazyTree);\n      mountImage = lazyTree;\n    } else {\n      var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n      var tagContent = this._createContentMarkup(transaction, props, context);\n      if (!tagContent &amp;&amp; omittedCloseTags[this._tag]) {\n        mountImage = tagOpen + &apos;/&gt;&apos;;\n      } else {\n        mountImage = tagOpen + &apos;&gt;&apos; + tagContent + &apos;&lt;/&apos; + this._currentElement.type + &apos;&gt;&apos;;\n      }\n    }\n\n    switch (this._tag) {\n      case &apos;input&apos;:\n        transaction.getReactMountReady().enqueue(inputPostMount, this);\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case &apos;textarea&apos;:\n        transaction.getReactMountReady().enqueue(textareaPostMount, this);\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case &apos;select&apos;:\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case &apos;button&apos;:\n        if (props.autoFocus) {\n          transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n        }\n        break;\n      case &apos;option&apos;:\n        transaction.getReactMountReady().enqueue(optionPostMount, this);\n        break;\n    }\n\n    return mountImage;\n  },\n\n  /**\n   * Creates markup for the open tag and all attributes.\n   *\n   * This method has side effects because events get registered.\n   *\n   * Iterating over object properties is faster than iterating over arrays.\n   * @see http://jsperf.com/obj-vs-arr-iteration\n   *\n   * @private\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} props\n   * @return {string} Markup of opening tag.\n   */\n  _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n    var ret = &apos;&lt;&apos; + this._currentElement.type;\n\n    for (var propKey in props) {\n      if (!props.hasOwnProperty(propKey)) {\n        continue;\n      }\n      var propValue = props[propKey];\n      if (propValue == null) {\n        continue;\n      }\n      if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (propValue) {\n          enqueuePutListener(this, propKey, propValue, transaction);\n        }\n      } else {\n        if (propKey === STYLE) {\n          if (propValue) {\n            if (process.env.NODE_ENV !== &apos;production&apos;) {\n              // See `_updateDOMProperties`. style block\n              this._previousStyle = propValue;\n            }\n            propValue = this._previousStyleCopy = _assign({}, props.style);\n          }\n          propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n        }\n        var markup = null;\n        if (this._tag != null &amp;&amp; isCustomComponent(this._tag, props)) {\n          if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n            markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n          }\n        } else {\n          markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n        }\n        if (markup) {\n          ret += &apos; &apos; + markup;\n        }\n      }\n    }\n\n    // For static pages, no need to put React ID and checksum. Saves lots of\n    // bytes.\n    if (transaction.renderToStaticMarkup) {\n      return ret;\n    }\n\n    if (!this._hostParent) {\n      ret += &apos; &apos; + DOMPropertyOperations.createMarkupForRoot();\n    }\n    ret += &apos; &apos; + DOMPropertyOperations.createMarkupForID(this._domID);\n    return ret;\n  },\n\n  /**\n   * Creates markup for the content between the tags.\n   *\n   * @private\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} props\n   * @param {object} context\n   * @return {string} Content markup.\n   */\n  _createContentMarkup: function (transaction, props, context) {\n    var ret = &apos;&apos;;\n\n    // Intentional use of != to avoid catching zero/false.\n    var innerHTML = props.dangerouslySetInnerHTML;\n    if (innerHTML != null) {\n      if (innerHTML.__html != null) {\n        ret = innerHTML.__html;\n      }\n    } else {\n      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n      var childrenToUse = contentToUse != null ? null : props.children;\n      if (contentToUse != null) {\n        // TODO: Validate that text is allowed as a child of this node\n        ret = escapeTextContentForBrowser(contentToUse);\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          setAndValidateContentChildDev.call(this, contentToUse);\n        }\n      } else if (childrenToUse != null) {\n        var mountImages = this.mountChildren(childrenToUse, transaction, context);\n        ret = mountImages.join(&apos;&apos;);\n      }\n    }\n    if (newlineEatingTags[this._tag] &amp;&amp; ret.charAt(0) === &apos;\\n&apos;) {\n      // text/html ignores the first character in these tags if it&apos;s a newline\n      // Prefer to break application/xml over text/html (for now) by adding\n      // a newline specifically to get eaten by the parser. (Alternately for\n      // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn&apos;t get eaten, and the first\n      // \\r is normalized out by HTMLTextAreaElement#value.)\n      // See: &lt;http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre&gt;\n      // See: &lt;http://www.w3.org/TR/html5/syntax.html#element-restrictions&gt;\n      // See: &lt;http://www.w3.org/TR/html5/syntax.html#newlines&gt;\n      // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n      //  from &lt;http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody&gt;\n      return &apos;\\n&apos; + ret;\n    } else {\n      return ret;\n    }\n  },\n\n  _createInitialChildren: function (transaction, props, context, lazyTree) {\n    // Intentional use of != to avoid catching zero/false.\n    var innerHTML = props.dangerouslySetInnerHTML;\n    if (innerHTML != null) {\n      if (innerHTML.__html != null) {\n        DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n      }\n    } else {\n      var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n      var childrenToUse = contentToUse != null ? null : props.children;\n      // TODO: Validate that text is allowed as a child of this node\n      if (contentToUse != null) {\n        // Avoid setting textContent when the text is empty. In IE11 setting\n        // textContent on a text area will cause the placeholder to not\n        // show within the textarea until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        if (contentToUse !== &apos;&apos;) {\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            setAndValidateContentChildDev.call(this, contentToUse);\n          }\n          DOMLazyTree.queueText(lazyTree, contentToUse);\n        }\n      } else if (childrenToUse != null) {\n        var mountImages = this.mountChildren(childrenToUse, transaction, context);\n        for (var i = 0; i &lt; mountImages.length; i++) {\n          DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n        }\n      }\n    }\n  },\n\n  /**\n   * Receives a next element and updates the component.\n   *\n   * @internal\n   * @param {ReactElement} nextElement\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @param {object} context\n   */\n  receiveComponent: function (nextElement, transaction, context) {\n    var prevElement = this._currentElement;\n    this._currentElement = nextElement;\n    this.updateComponent(transaction, prevElement, nextElement, context);\n  },\n\n  /**\n   * Updates a DOM component after it has already been allocated and\n   * attached to the DOM. Reconciles the root DOM node, then recurses.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @param {ReactElement} prevElement\n   * @param {ReactElement} nextElement\n   * @internal\n   * @overridable\n   */\n  updateComponent: function (transaction, prevElement, nextElement, context) {\n    var lastProps = prevElement.props;\n    var nextProps = this._currentElement.props;\n\n    switch (this._tag) {\n      case &apos;input&apos;:\n        lastProps = ReactDOMInput.getHostProps(this, lastProps);\n        nextProps = ReactDOMInput.getHostProps(this, nextProps);\n        break;\n      case &apos;option&apos;:\n        lastProps = ReactDOMOption.getHostProps(this, lastProps);\n        nextProps = ReactDOMOption.getHostProps(this, nextProps);\n        break;\n      case &apos;select&apos;:\n        lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n        nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n        break;\n      case &apos;textarea&apos;:\n        lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n        nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n        break;\n    }\n\n    assertValidProps(this, nextProps);\n    this._updateDOMProperties(lastProps, nextProps, transaction);\n    this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n    switch (this._tag) {\n      case &apos;input&apos;:\n        // Update the wrapper around inputs *after* updating props. This has to\n        // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n        // raise warnings and prevent the new value from being assigned.\n        ReactDOMInput.updateWrapper(this);\n        break;\n      case &apos;textarea&apos;:\n        ReactDOMTextarea.updateWrapper(this);\n        break;\n      case &apos;select&apos;:\n        // &lt;select&gt; value update needs to occur after &lt;option&gt; children\n        // reconciliation\n        transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n        break;\n    }\n  },\n\n  /**\n   * Reconciles the properties by detecting differences in property values and\n   * updating the DOM as necessary. This function is probably the single most\n   * critical path for performance optimization.\n   *\n   * TODO: Benchmark whether checking for changed values in memory actually\n   *       improves performance (especially statically positioned elements).\n   * TODO: Benchmark the effects of putting this at the top since 99% of props\n   *       do not change for a given reconciliation.\n   * TODO: Benchmark areas that can be improved with caching.\n   *\n   * @private\n   * @param {object} lastProps\n   * @param {object} nextProps\n   * @param {?DOMElement} node\n   */\n  _updateDOMProperties: function (lastProps, nextProps, transaction) {\n    var propKey;\n    var styleName;\n    var styleUpdates;\n    for (propKey in lastProps) {\n      if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        var lastStyle = this._previousStyleCopy;\n        for (styleName in lastStyle) {\n          if (lastStyle.hasOwnProperty(styleName)) {\n            styleUpdates = styleUpdates || {};\n            styleUpdates[styleName] = &apos;&apos;;\n          }\n        }\n        this._previousStyleCopy = null;\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (lastProps[propKey]) {\n          // Only call deleteListener if there was a listener previously or\n          // else willDeleteListener gets called when there wasn&apos;t actually a\n          // listener (e.g., onClick={null})\n          deleteListener(this, propKey);\n        }\n      } else if (isCustomComponent(this._tag, lastProps)) {\n        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n          DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n        }\n      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n        DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n      }\n    }\n    for (propKey in nextProps) {\n      var nextProp = nextProps[propKey];\n      var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n      if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null &amp;&amp; lastProp == null) {\n        continue;\n      }\n      if (propKey === STYLE) {\n        if (nextProp) {\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n            this._previousStyle = nextProp;\n          }\n          nextProp = this._previousStyleCopy = _assign({}, nextProp);\n        } else {\n          this._previousStyleCopy = null;\n        }\n        if (lastProp) {\n          // Unset styles on `lastProp` but not on `nextProp`.\n          for (styleName in lastProp) {\n            if (lastProp.hasOwnProperty(styleName) &amp;&amp; (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n              styleUpdates = styleUpdates || {};\n              styleUpdates[styleName] = &apos;&apos;;\n            }\n          }\n          // Update styles that changed since `lastProp`.\n          for (styleName in nextProp) {\n            if (nextProp.hasOwnProperty(styleName) &amp;&amp; lastProp[styleName] !== nextProp[styleName]) {\n              styleUpdates = styleUpdates || {};\n              styleUpdates[styleName] = nextProp[styleName];\n            }\n          }\n        } else {\n          // Relies on `updateStylesByID` not mutating `styleUpdates`.\n          styleUpdates = nextProp;\n        }\n      } else if (registrationNameModules.hasOwnProperty(propKey)) {\n        if (nextProp) {\n          enqueuePutListener(this, propKey, nextProp, transaction);\n        } else if (lastProp) {\n          deleteListener(this, propKey);\n        }\n      } else if (isCustomComponent(this._tag, nextProps)) {\n        if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n          DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n        }\n      } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n        var node = getNode(this);\n        // If we&apos;re updating to null or undefined, we should remove the property\n        // from the DOM node instead of inadvertently setting to a string. This\n        // brings us in line with the same behavior we have on initial render.\n        if (nextProp != null) {\n          DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n        } else {\n          DOMPropertyOperations.deleteValueForProperty(node, propKey);\n        }\n      }\n    }\n    if (styleUpdates) {\n      CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n    }\n  },\n\n  /**\n   * Reconciles the children with the various properties that affect the\n   * children content.\n   *\n   * @param {object} lastProps\n   * @param {object} nextProps\n   * @param {ReactReconcileTransaction} transaction\n   * @param {object} context\n   */\n  _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n    var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n    var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n    var lastHtml = lastProps.dangerouslySetInnerHTML &amp;&amp; lastProps.dangerouslySetInnerHTML.__html;\n    var nextHtml = nextProps.dangerouslySetInnerHTML &amp;&amp; nextProps.dangerouslySetInnerHTML.__html;\n\n    // Note the use of `!=` which checks for null or undefined.\n    var lastChildren = lastContent != null ? null : lastProps.children;\n    var nextChildren = nextContent != null ? null : nextProps.children;\n\n    // If we&apos;re switching from children to content/html or vice versa, remove\n    // the old content\n    var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n    var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n    if (lastChildren != null &amp;&amp; nextChildren == null) {\n      this.updateChildren(null, transaction, context);\n    } else if (lastHasContentOrHtml &amp;&amp; !nextHasContentOrHtml) {\n      this.updateTextContent(&apos;&apos;);\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n      }\n    }\n\n    if (nextContent != null) {\n      if (lastContent !== nextContent) {\n        this.updateTextContent(&apos;&apos; + nextContent);\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          setAndValidateContentChildDev.call(this, nextContent);\n        }\n      }\n    } else if (nextHtml != null) {\n      if (lastHtml !== nextHtml) {\n        this.updateMarkup(&apos;&apos; + nextHtml);\n      }\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n      }\n    } else if (nextChildren != null) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        setAndValidateContentChildDev.call(this, null);\n      }\n\n      this.updateChildren(nextChildren, transaction, context);\n    }\n  },\n\n  getHostNode: function () {\n    return getNode(this);\n  },\n\n  /**\n   * Destroys all event registrations for this instance. Does not remove from\n   * the DOM. That must be done by the parent.\n   *\n   * @internal\n   */\n  unmountComponent: function (safely) {\n    switch (this._tag) {\n      case &apos;audio&apos;:\n      case &apos;form&apos;:\n      case &apos;iframe&apos;:\n      case &apos;img&apos;:\n      case &apos;link&apos;:\n      case &apos;object&apos;:\n      case &apos;source&apos;:\n      case &apos;video&apos;:\n        var listeners = this._wrapperState.listeners;\n        if (listeners) {\n          for (var i = 0; i &lt; listeners.length; i++) {\n            listeners[i].remove();\n          }\n        }\n        break;\n      case &apos;html&apos;:\n      case &apos;head&apos;:\n      case &apos;body&apos;:\n        /**\n         * Components like &lt;html&gt; &lt;head&gt; and &lt;body&gt; can&apos;t be removed or added\n         * easily in a cross-browser way, however it&apos;s valuable to be able to\n         * take advantage of React&apos;s reconciliation for styling and &lt;title&gt;\n         * management. So we just document it and throw in dangerous cases.\n         */\n        !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;&lt;%s&gt; tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg &lt;html&gt;, &lt;head&gt;, and &lt;body&gt;) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.&apos;, this._tag) : _prodInvariant(&apos;66&apos;, this._tag) : void 0;\n        break;\n    }\n\n    this.unmountChildren(safely);\n    ReactDOMComponentTree.uncacheNode(this);\n    EventPluginHub.deleteAllListeners(this);\n    this._rootNodeID = 0;\n    this._domID = 0;\n    this._wrapperState = null;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      setAndValidateContentChildDev.call(this, null);\n    }\n  },\n\n  getPublicInstance: function () {\n    return getNode(this);\n  }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMComponent.js\n// module id = 408\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar validateDOMNesting = require(&apos;./validateDOMNesting&apos;);\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n  var info = {\n    _topLevelWrapper: topLevelWrapper,\n    _idCounter: 1,\n    _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n    _node: node,\n    _tag: node ? node.nodeName.toLowerCase() : null,\n    _namespaceURI: node ? node.namespaceURI : null\n  };\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n  }\n  return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMContainerInfo.js\n// module id = 409\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n  // ReactCompositeComponent uses this:\n  this._currentElement = null;\n  // ReactDOMComponentTree uses these:\n  this._hostNode = null;\n  this._hostParent = null;\n  this._hostContainerInfo = null;\n  this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n    var domID = hostContainerInfo._idCounter++;\n    this._domID = domID;\n    this._hostParent = hostParent;\n    this._hostContainerInfo = hostContainerInfo;\n\n    var nodeValue = &apos; react-empty: &apos; + this._domID + &apos; &apos;;\n    if (transaction.useCreateElement) {\n      var ownerDocument = hostContainerInfo._ownerDocument;\n      var node = ownerDocument.createComment(nodeValue);\n      ReactDOMComponentTree.precacheNode(this, node);\n      return DOMLazyTree(node);\n    } else {\n      if (transaction.renderToStaticMarkup) {\n        // Normally we&apos;d insert a comment node, but since this is a situation\n        // where React won&apos;t take over (static pages), we can simply return\n        // nothing.\n        return &apos;&apos;;\n      }\n      return &apos;&lt;!--&apos; + nodeValue + &apos;--&gt;&apos;;\n    }\n  },\n  receiveComponent: function () {},\n  getHostNode: function () {\n    return ReactDOMComponentTree.getNodeFromInstance(this);\n  },\n  unmountComponent: function () {\n    ReactDOMComponentTree.uncacheNode(this);\n  }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMEmptyComponent.js\n// module id = 410\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactDOMFeatureFlags = {\n  useCreateElement: true,\n  useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMFeatureFlags.js\n// module id = 411\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMChildrenOperations = require(&apos;./DOMChildrenOperations&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n  /**\n   * Updates a component&apos;s children by processing a series of updates.\n   *\n   * @param {array&lt;object&gt;} updates List of update configurations.\n   * @internal\n   */\n  dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n    var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n    DOMChildrenOperations.processUpdates(node, updates);\n  }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMIDOperations.js\n// module id = 412\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar DOMPropertyOperations = require(&apos;./DOMPropertyOperations&apos;);\nvar LinkedValueUtils = require(&apos;./LinkedValueUtils&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n  if (this._rootNodeID) {\n    // DOM component is still mounted; update\n    ReactDOMInput.updateWrapper(this);\n  }\n}\n\nfunction isControlled(props) {\n  var usesChecked = props.type === &apos;checkbox&apos; || props.type === &apos;radio&apos;;\n  return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an &lt;input&gt; host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n  getHostProps: function (inst, props) {\n    var value = LinkedValueUtils.getValue(props);\n    var checked = LinkedValueUtils.getChecked(props);\n\n    var hostProps = _assign({\n      // Make sure we set .type before any other properties (setting .value\n      // before .type means .value is lost in IE11 and below)\n      type: undefined,\n      // Make sure we set .step before .value (setting .value before .step\n      // means .value is rounded on mount, based upon step precision)\n      step: undefined,\n      // Make sure we set .min &amp; .max before .value (to ensure proper order\n      // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n      min: undefined,\n      max: undefined\n    }, props, {\n      defaultChecked: undefined,\n      defaultValue: undefined,\n      value: value != null ? value : inst._wrapperState.initialValue,\n      checked: checked != null ? checked : inst._wrapperState.initialChecked,\n      onChange: inst._wrapperState.onChange\n    });\n\n    return hostProps;\n  },\n\n  mountWrapper: function (inst, props) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      LinkedValueUtils.checkPropTypes(&apos;input&apos;, props, inst._currentElement._owner);\n\n      var owner = inst._currentElement._owner;\n\n      if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;\n        didWarnValueLink = true;\n      }\n      if (props.checkedLink !== undefined &amp;&amp; !didWarnCheckedLink) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;\n        didWarnCheckedLink = true;\n      }\n      if (props.checked !== undefined &amp;&amp; props.defaultChecked !== undefined &amp;&amp; !didWarnCheckedDefaultChecked) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s contains an input of type %s with both checked and defaultChecked props. &apos; + &apos;Input elements must be either controlled or uncontrolled &apos; + &apos;(specify either the checked prop, or the defaultChecked prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled input &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;\n        didWarnCheckedDefaultChecked = true;\n      }\n      if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValueDefaultValue) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s contains an input of type %s with both value and defaultValue props. &apos; + &apos;Input elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled input &apos; + &apos;element and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;\n        didWarnValueDefaultValue = true;\n      }\n    }\n\n    var defaultValue = props.defaultValue;\n    inst._wrapperState = {\n      initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n      initialValue: props.value != null ? props.value : defaultValue,\n      listeners: null,\n      onChange: _handleChange.bind(inst),\n      controlled: isControlled(props)\n    };\n  },\n\n  updateWrapper: function (inst) {\n    var props = inst._currentElement.props;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var controlled = isControlled(props);\n      var owner = inst._currentElement._owner;\n\n      if (!inst._wrapperState.controlled &amp;&amp; controlled &amp;&amp; !didWarnUncontrolledToControlled) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s is changing an uncontrolled input of type %s to be controlled. &apos; + &apos;Input elements should not switch from uncontrolled to controlled (or vice versa). &apos; + &apos;Decide between using a controlled or uncontrolled input &apos; + &apos;element for the lifetime of the component. More info: https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;\n        didWarnUncontrolledToControlled = true;\n      }\n      if (inst._wrapperState.controlled &amp;&amp; !controlled &amp;&amp; !didWarnControlledToUncontrolled) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s is changing a controlled input of type %s to be uncontrolled. &apos; + &apos;Input elements should not switch from controlled to uncontrolled (or vice versa). &apos; + &apos;Decide between using a controlled or uncontrolled input &apos; + &apos;element for the lifetime of the component. More info: https://fb.me/react-controlled-components&apos;, owner &amp;&amp; owner.getName() || &apos;A component&apos;, props.type) : void 0;\n        didWarnControlledToUncontrolled = true;\n      }\n    }\n\n    // TODO: Shouldn&apos;t this be getChecked(props)?\n    var checked = props.checked;\n    if (checked != null) {\n      DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), &apos;checked&apos;, checked || false);\n    }\n\n    var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n    var value = LinkedValueUtils.getValue(props);\n    if (value != null) {\n      if (value === 0 &amp;&amp; node.value === &apos;&apos;) {\n        node.value = &apos;0&apos;;\n        // Note: IE9 reports a number inputs as &apos;text&apos;, so check props instead.\n      } else if (props.type === &apos;number&apos;) {\n        // Simulate `input.valueAsNumber`. IE9 does not support it\n        var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n        // eslint-disable-next-line\n        if (value != valueAsNumber) {\n          // Cast `value` to a string to ensure the value is set correctly. While\n          // browsers typically do this as necessary, jsdom doesn&apos;t.\n          node.value = &apos;&apos; + value;\n        }\n        // eslint-disable-next-line\n      } else if (value != node.value) {\n        // Cast `value` to a string to ensure the value is set correctly. While\n        // browsers typically do this as necessary, jsdom doesn&apos;t.\n        node.value = &apos;&apos; + value;\n      }\n    } else {\n      if (props.value == null &amp;&amp; props.defaultValue != null) {\n        // In Chrome, assigning defaultValue to certain input types triggers input validation.\n        // For number inputs, the display value loses trailing decimal points. For email inputs,\n        // Chrome raises \"The specified value &lt;x&gt; is not a valid email address\".\n        //\n        // Here we check to see if the defaultValue has actually changed, avoiding these problems\n        // when the user is inputting text\n        //\n        // https://github.com/facebook/react/issues/7253\n        if (node.defaultValue !== &apos;&apos; + props.defaultValue) {\n          node.defaultValue = &apos;&apos; + props.defaultValue;\n        }\n      }\n      if (props.checked == null &amp;&amp; props.defaultChecked != null) {\n        node.defaultChecked = !!props.defaultChecked;\n      }\n    }\n  },\n\n  postMountWrapper: function (inst) {\n    var props = inst._currentElement.props;\n\n    // This is in postMount because we need access to the DOM node, which is not\n    // available until after the component has mounted.\n    var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n    // Detach value from defaultValue. We won&apos;t do anything if we&apos;re working on\n    // submit or reset inputs as those values &amp; defaultValues are linked. They\n    // are not resetable nodes so this operation doesn&apos;t matter and actually\n    // removes browser-default values (eg \"Submit Query\") when no value is\n    // provided.\n\n    switch (props.type) {\n      case &apos;submit&apos;:\n      case &apos;reset&apos;:\n        break;\n      case &apos;color&apos;:\n      case &apos;date&apos;:\n      case &apos;datetime&apos;:\n      case &apos;datetime-local&apos;:\n      case &apos;month&apos;:\n      case &apos;time&apos;:\n      case &apos;week&apos;:\n        // This fixes the no-show issue on iOS Safari and Android Chrome:\n        // https://github.com/facebook/react/issues/7233\n        node.value = &apos;&apos;;\n        node.value = node.defaultValue;\n        break;\n      default:\n        node.value = node.value;\n        break;\n    }\n\n    // Normally, we&apos;d just do `node.checked = node.checked` upon initial mount, less this bug\n    // this is needed to work around a chrome bug where setting defaultChecked\n    // will sometimes influence the value of checked (even after detachment).\n    // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n    // We need to temporarily unset name to avoid disrupting radio button groups.\n    var name = node.name;\n    if (name !== &apos;&apos;) {\n      node.name = &apos;&apos;;\n    }\n    node.defaultChecked = !node.defaultChecked;\n    node.defaultChecked = !node.defaultChecked;\n    if (name !== &apos;&apos;) {\n      node.name = name;\n    }\n  }\n};\n\nfunction _handleChange(event) {\n  var props = this._currentElement.props;\n\n  var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n  // Here we use asap to wait until all updates have propagated, which\n  // is important when using controlled components within layers:\n  // https://github.com/facebook/react/issues/1698\n  ReactUpdates.asap(forceUpdateIfMounted, this);\n\n  var name = props.name;\n  if (props.type === &apos;radio&apos; &amp;&amp; name != null) {\n    var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    }\n\n    // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won&apos;t include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form, let&apos;s just use the global\n    // `querySelectorAll` to ensure we don&apos;t miss anything.\n    var group = queryRoot.querySelectorAll(&apos;input[name=&apos; + JSON.stringify(&apos;&apos; + name) + &apos;][type=\"radio\"]&apos;);\n\n    for (var i = 0; i &lt; group.length; i++) {\n      var otherNode = group[i];\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      }\n      // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That&apos;s probably okay; we don&apos;t support it just as we don&apos;t support\n      // mixing React radio buttons with non-React ones.\n      var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n      !otherInstance ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.&apos;) : _prodInvariant(&apos;90&apos;) : void 0;\n      // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n      ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n    }\n  }\n\n  return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMInput.js\n// module id = 413\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar warnedProperties = {};\nvar rARIA = new RegExp(&apos;^(aria)-[&apos; + DOMProperty.ATTRIBUTE_NAME_CHAR + &apos;]*$&apos;);\n\nfunction validateProperty(tagName, name, debugID) {\n  if (warnedProperties.hasOwnProperty(name) &amp;&amp; warnedProperties[name]) {\n    return true;\n  }\n\n  if (rARIA.test(name)) {\n    var lowerCasedName = name.toLowerCase();\n    var standardName = DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;\n\n    // If this is an aria-* attribute, but is not listed in the known DOM\n    // DOM properties, then it is an invalid aria-* attribute.\n    if (standardName == null) {\n      warnedProperties[name] = true;\n      return false;\n    }\n    // aria-* attributes should be lowercase; suggest the lowercase version.\n    if (name !== standardName) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unknown ARIA attribute %s. Did you mean %s?%s&apos;, name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n      warnedProperties[name] = true;\n      return true;\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(debugID, element) {\n  var invalidProps = [];\n\n  for (var key in element.props) {\n    var isValid = validateProperty(element.type, key, debugID);\n    if (!isValid) {\n      invalidProps.push(key);\n    }\n  }\n\n  var unknownPropString = invalidProps.map(function (prop) {\n    return &apos;`&apos; + prop + &apos;`&apos;;\n  }).join(&apos;, &apos;);\n\n  if (invalidProps.length === 1) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid aria prop %s on &lt;%s&gt; tag. &apos; + &apos;For details, see https://fb.me/invalid-aria-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n  } else if (invalidProps.length &gt; 1) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Invalid aria props %s on &lt;%s&gt; tag. &apos; + &apos;For details, see https://fb.me/invalid-aria-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n  }\n}\n\nfunction handleElement(debugID, element) {\n  if (element == null || typeof element.type !== &apos;string&apos;) {\n    return;\n  }\n  if (element.type.indexOf(&apos;-&apos;) &gt;= 0 || element.props.is) {\n    return;\n  }\n\n  warnInvalidARIAProps(debugID, element);\n}\n\nvar ReactDOMInvalidARIAHook = {\n  onBeforeMountComponent: function (debugID, element) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      handleElement(debugID, element);\n    }\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      handleElement(debugID, element);\n    }\n  }\n};\n\nmodule.exports = ReactDOMInvalidARIAHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMInvalidARIAHook.js\n// module id = 414\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar didWarnValueNull = false;\n\nfunction handleElement(debugID, element) {\n  if (element == null) {\n    return;\n  }\n  if (element.type !== &apos;input&apos; &amp;&amp; element.type !== &apos;textarea&apos; &amp;&amp; element.type !== &apos;select&apos;) {\n    return;\n  }\n  if (element.props != null &amp;&amp; element.props.value === null &amp;&amp; !didWarnValueNull) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`value` prop on `%s` should not be null. &apos; + &apos;Consider using the empty string to clear the component or `undefined` &apos; + &apos;for uncontrolled components.%s&apos;, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n\n    didWarnValueNull = true;\n  }\n}\n\nvar ReactDOMNullInputValuePropHook = {\n  onBeforeMountComponent: function (debugID, element) {\n    handleElement(debugID, element);\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    handleElement(debugID, element);\n  }\n};\n\nmodule.exports = ReactDOMNullInputValuePropHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMNullInputValuePropHook.js\n// module id = 415\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar React = require(&apos;react/lib/React&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactDOMSelect = require(&apos;./ReactDOMSelect&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n  var content = &apos;&apos;;\n\n  // Flatten children and warn if they aren&apos;t strings or numbers;\n  // invalid types are ignored.\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n    if (typeof child === &apos;string&apos; || typeof child === &apos;number&apos;) {\n      content += child;\n    } else if (!didWarnInvalidOptionChildren) {\n      didWarnInvalidOptionChildren = true;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Only strings and numbers are supported as &lt;option&gt; children.&apos;) : void 0;\n    }\n  });\n\n  return content;\n}\n\n/**\n * Implements an &lt;option&gt; host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n  mountWrapper: function (inst, props, hostParent) {\n    // TODO (yungsters): Remove support for `selected` in &lt;option&gt;.\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(props.selected == null, &apos;Use the `defaultValue` or `value` props on &lt;select&gt; instead of &apos; + &apos;setting `selected` on &lt;option&gt;.&apos;) : void 0;\n    }\n\n    // Look up whether this option is &apos;selected&apos;\n    var selectValue = null;\n    if (hostParent != null) {\n      var selectParent = hostParent;\n\n      if (selectParent._tag === &apos;optgroup&apos;) {\n        selectParent = selectParent._hostParent;\n      }\n\n      if (selectParent != null &amp;&amp; selectParent._tag === &apos;select&apos;) {\n        selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n      }\n    }\n\n    // If the value is null (e.g., no specified value or after initial mount)\n    // or missing (e.g., for &lt;datalist&gt;), we don&apos;t change props.selected\n    var selected = null;\n    if (selectValue != null) {\n      var value;\n      if (props.value != null) {\n        value = props.value + &apos;&apos;;\n      } else {\n        value = flattenChildren(props.children);\n      }\n      selected = false;\n      if (Array.isArray(selectValue)) {\n        // multiple\n        for (var i = 0; i &lt; selectValue.length; i++) {\n          if (&apos;&apos; + selectValue[i] === value) {\n            selected = true;\n            break;\n          }\n        }\n      } else {\n        selected = &apos;&apos; + selectValue === value;\n      }\n    }\n\n    inst._wrapperState = { selected: selected };\n  },\n\n  postMountWrapper: function (inst) {\n    // value=\"\" should make a value attribute (#6219)\n    var props = inst._currentElement.props;\n    if (props.value != null) {\n      var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n      node.setAttribute(&apos;value&apos;, props.value);\n    }\n  },\n\n  getHostProps: function (inst, props) {\n    var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n    // Read state only from initial mount because &lt;select&gt; updates value\n    // manually; we need the initial state only for server rendering\n    if (inst._wrapperState.selected != null) {\n      hostProps.selected = inst._wrapperState.selected;\n    }\n\n    var content = flattenChildren(props.children);\n\n    if (content) {\n      hostProps.children = content;\n    }\n\n    return hostProps;\n  }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMOption.js\n// module id = 416\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\nvar getNodeForCharacterOffset = require(&apos;./getNodeForCharacterOffset&apos;);\nvar getTextContentAccessor = require(&apos;./getTextContentAccessor&apos;);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n  return anchorNode === focusNode &amp;&amp; anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE&apos;s selection API doesn&apos;t provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it&apos;s always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n  var selection = document.selection;\n  var selectedRange = selection.createRange();\n  var selectedLength = selectedRange.text.length;\n\n  // Duplicate selection so we can move range without breaking user selection.\n  var fromStart = selectedRange.duplicate();\n  fromStart.moveToElementText(node);\n  fromStart.setEndPoint(&apos;EndToStart&apos;, selectedRange);\n\n  var startOffset = fromStart.text.length;\n  var endOffset = startOffset + selectedLength;\n\n  return {\n    start: startOffset,\n    end: endOffset\n  };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n  var selection = window.getSelection &amp;&amp; window.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode;\n  var anchorOffset = selection.anchorOffset;\n  var focusNode = selection.focusNode;\n  var focusOffset = selection.focusOffset;\n\n  var currentRange = selection.getRangeAt(0);\n\n  // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n  // divs\", e.g. the up/down buttons on an &lt;input type=\"number\"&gt;. Anonymous\n  // divs do not seem to expose properties, triggering a \"Permission denied\n  // error\" if any of its properties are accessed. The only seemingly possible\n  // way to avoid erroring is to access a property that typically works for\n  // non-anonymous divs and catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n  try {\n    /* eslint-disable no-unused-expressions */\n    currentRange.startContainer.nodeType;\n    currentRange.endContainer.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  // If the node and offset values are the same, the selection is collapsed.\n  // `Selection.isCollapsed` is available natively, but IE sometimes gets\n  // this value wrong.\n  var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n  var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n  var tempRange = currentRange.cloneRange();\n  tempRange.selectNodeContents(node);\n  tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n  var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n  var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n  var end = start + rangeLength;\n\n  // Detect whether the selection is backward.\n  var detectionRange = document.createRange();\n  detectionRange.setStart(anchorNode, anchorOffset);\n  detectionRange.setEnd(focusNode, focusOffset);\n  var isBackward = detectionRange.collapsed;\n\n  return {\n    start: isBackward ? end : start,\n    end: isBackward ? start : end\n  };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n  var range = document.selection.createRange().duplicate();\n  var start, end;\n\n  if (offsets.end === undefined) {\n    start = offsets.start;\n    end = start;\n  } else if (offsets.start &gt; offsets.end) {\n    start = offsets.end;\n    end = offsets.start;\n  } else {\n    start = offsets.start;\n    end = offsets.end;\n  }\n\n  range.moveToElementText(node);\n  range.moveStart(&apos;character&apos;, start);\n  range.setEndPoint(&apos;EndToStart&apos;, range);\n  range.moveEnd(&apos;character&apos;, end - start);\n  range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it&apos;s not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n  if (!window.getSelection) {\n    return;\n  }\n\n  var selection = window.getSelection();\n  var length = node[getTextContentAccessor()].length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n  // IE 11 uses modern selection, but doesn&apos;t support the extend method.\n  // Flip backward selections, so we can set with a single range.\n  if (!selection.extend &amp;&amp; start &gt; end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset(node, start);\n  var endMarker = getNodeForCharacterOffset(node, end);\n\n  if (startMarker &amp;&amp; endMarker) {\n    var range = document.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start &gt; end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;selection&apos; in document &amp;&amp; !(&apos;getSelection&apos; in window);\n\nvar ReactDOMSelection = {\n  /**\n   * @param {DOMElement} node\n   */\n  getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n  /**\n   * @param {DOMElement|DOMTextNode} node\n   * @param {object} offsets\n   */\n  setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMSelection.js\n// module id = 417\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar DOMChildrenOperations = require(&apos;./DOMChildrenOperations&apos;);\nvar DOMLazyTree = require(&apos;./DOMLazyTree&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\n\nvar escapeTextContentForBrowser = require(&apos;./escapeTextContentForBrowser&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar validateDOMNesting = require(&apos;./validateDOMNesting&apos;);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n *  - When mounting text into the DOM, adjacent text nodes are merged.\n *  - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n  // TODO: This is really a ReactText (ReactNode), not a ReactElement\n  this._currentElement = text;\n  this._stringText = &apos;&apos; + text;\n  // ReactDOMComponentTree uses these:\n  this._hostNode = null;\n  this._hostParent = null;\n\n  // Properties\n  this._domID = 0;\n  this._mountIndex = 0;\n  this._closingComment = null;\n  this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n  /**\n   * Creates the markup for this text node. This node is not intended to have\n   * any features besides containing text content.\n   *\n   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n   * @return {string} Markup for this text node.\n   * @internal\n   */\n  mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var parentInfo;\n      if (hostParent != null) {\n        parentInfo = hostParent._ancestorInfo;\n      } else if (hostContainerInfo != null) {\n        parentInfo = hostContainerInfo._ancestorInfo;\n      }\n      if (parentInfo) {\n        // parentInfo should always be present except for the top-level\n        // component when server rendering\n        validateDOMNesting(null, this._stringText, this, parentInfo);\n      }\n    }\n\n    var domID = hostContainerInfo._idCounter++;\n    var openingValue = &apos; react-text: &apos; + domID + &apos; &apos;;\n    var closingValue = &apos; /react-text &apos;;\n    this._domID = domID;\n    this._hostParent = hostParent;\n    if (transaction.useCreateElement) {\n      var ownerDocument = hostContainerInfo._ownerDocument;\n      var openingComment = ownerDocument.createComment(openingValue);\n      var closingComment = ownerDocument.createComment(closingValue);\n      var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n      if (this._stringText) {\n        DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n      }\n      DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n      ReactDOMComponentTree.precacheNode(this, openingComment);\n      this._closingComment = closingComment;\n      return lazyTree;\n    } else {\n      var escapedText = escapeTextContentForBrowser(this._stringText);\n\n      if (transaction.renderToStaticMarkup) {\n        // Normally we&apos;d wrap this between comment nodes for the reasons stated\n        // above, but since this is a situation where React won&apos;t take over\n        // (static pages), we can simply return the text as it is.\n        return escapedText;\n      }\n\n      return &apos;&lt;!--&apos; + openingValue + &apos;--&gt;&apos; + escapedText + &apos;&lt;!--&apos; + closingValue + &apos;--&gt;&apos;;\n    }\n  },\n\n  /**\n   * Updates this component by updating the text content.\n   *\n   * @param {ReactText} nextText The next text content\n   * @param {ReactReconcileTransaction} transaction\n   * @internal\n   */\n  receiveComponent: function (nextText, transaction) {\n    if (nextText !== this._currentElement) {\n      this._currentElement = nextText;\n      var nextStringText = &apos;&apos; + nextText;\n      if (nextStringText !== this._stringText) {\n        // TODO: Save this as pending props and use performUpdateIfNecessary\n        // and/or updateComponent to do the actual update for consistency with\n        // other component types?\n        this._stringText = nextStringText;\n        var commentNodes = this.getHostNode();\n        DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n      }\n    }\n  },\n\n  getHostNode: function () {\n    var hostNode = this._commentNodes;\n    if (hostNode) {\n      return hostNode;\n    }\n    if (!this._closingComment) {\n      var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n      var node = openingComment.nextSibling;\n      while (true) {\n        !(node != null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Missing closing comment for text component %s&apos;, this._domID) : _prodInvariant(&apos;67&apos;, this._domID) : void 0;\n        if (node.nodeType === 8 &amp;&amp; node.nodeValue === &apos; /react-text &apos;) {\n          this._closingComment = node;\n          break;\n        }\n        node = node.nextSibling;\n      }\n    }\n    hostNode = [this._hostNode, this._closingComment];\n    this._commentNodes = hostNode;\n    return hostNode;\n  },\n\n  unmountComponent: function () {\n    this._closingComment = null;\n    this._commentNodes = null;\n    ReactDOMComponentTree.uncacheNode(this);\n  }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMTextComponent.js\n// module id = 418\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar LinkedValueUtils = require(&apos;./LinkedValueUtils&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n  if (this._rootNodeID) {\n    // DOM component is still mounted; update\n    ReactDOMTextarea.updateWrapper(this);\n  }\n}\n\n/**\n * Implements a &lt;textarea&gt; host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n  getHostProps: function (inst, props) {\n    !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;`dangerouslySetInnerHTML` does not make sense on &lt;textarea&gt;.&apos;) : _prodInvariant(&apos;91&apos;) : void 0;\n\n    // Always set children to the same thing. In IE9, the selection range will\n    // get reset if `textContent` is mutated.  We could add a check in setTextContent\n    // to only set the value if/when the value differs from the node value (which would\n    // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n    // The value can be a boolean or object so that&apos;s why it&apos;s forced to be a string.\n    var hostProps = _assign({}, props, {\n      value: undefined,\n      defaultValue: undefined,\n      children: &apos;&apos; + inst._wrapperState.initialValue,\n      onChange: inst._wrapperState.onChange\n    });\n\n    return hostProps;\n  },\n\n  mountWrapper: function (inst, props) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      LinkedValueUtils.checkPropTypes(&apos;textarea&apos;, props, inst._currentElement._owner);\n      if (props.valueLink !== undefined &amp;&amp; !didWarnValueLink) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.&apos;) : void 0;\n        didWarnValueLink = true;\n      }\n      if (props.value !== undefined &amp;&amp; props.defaultValue !== undefined &amp;&amp; !didWarnValDefaultVal) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Textarea elements must be either controlled or uncontrolled &apos; + &apos;(specify either the value prop, or the defaultValue prop, but not &apos; + &apos;both). Decide between using a controlled or uncontrolled textarea &apos; + &apos;and remove one of these props. More info: &apos; + &apos;https://fb.me/react-controlled-components&apos;) : void 0;\n        didWarnValDefaultVal = true;\n      }\n    }\n\n    var value = LinkedValueUtils.getValue(props);\n    var initialValue = value;\n\n    // Only bother fetching default value if we&apos;re going to use it\n    if (value == null) {\n      var defaultValue = props.defaultValue;\n      // TODO (yungsters): Remove support for children content in &lt;textarea&gt;.\n      var children = props.children;\n      if (children != null) {\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Use the `defaultValue` or `value` props instead of setting &apos; + &apos;children on &lt;textarea&gt;.&apos;) : void 0;\n        }\n        !(defaultValue == null) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;If you supply `defaultValue` on a &lt;textarea&gt;, do not pass children.&apos;) : _prodInvariant(&apos;92&apos;) : void 0;\n        if (Array.isArray(children)) {\n          !(children.length &lt;= 1) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;&lt;textarea&gt; can only have at most one child.&apos;) : _prodInvariant(&apos;93&apos;) : void 0;\n          children = children[0];\n        }\n\n        defaultValue = &apos;&apos; + children;\n      }\n      if (defaultValue == null) {\n        defaultValue = &apos;&apos;;\n      }\n      initialValue = defaultValue;\n    }\n\n    inst._wrapperState = {\n      initialValue: &apos;&apos; + initialValue,\n      listeners: null,\n      onChange: _handleChange.bind(inst)\n    };\n  },\n\n  updateWrapper: function (inst) {\n    var props = inst._currentElement.props;\n\n    var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n    var value = LinkedValueUtils.getValue(props);\n    if (value != null) {\n      // Cast `value` to a string to ensure the value is set correctly. While\n      // browsers typically do this as necessary, jsdom doesn&apos;t.\n      var newValue = &apos;&apos; + value;\n\n      // To avoid side effects (such as losing text selection), only set value if changed\n      if (newValue !== node.value) {\n        node.value = newValue;\n      }\n      if (props.defaultValue == null) {\n        node.defaultValue = newValue;\n      }\n    }\n    if (props.defaultValue != null) {\n      node.defaultValue = props.defaultValue;\n    }\n  },\n\n  postMountWrapper: function (inst) {\n    // This is in postMount because we need access to the DOM node, which is not\n    // available until after the component has mounted.\n    var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n    var textContent = node.textContent;\n\n    // Only set node.value if textContent is equal to the expected\n    // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n    // will populate textContent as well.\n    // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n    if (textContent === inst._wrapperState.initialValue) {\n      node.value = textContent;\n    }\n  }\n};\n\nfunction _handleChange(event) {\n  var props = this._currentElement.props;\n  var returnValue = LinkedValueUtils.executeOnChange(props, event);\n  ReactUpdates.asap(forceUpdateIfMounted, this);\n  return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMTextarea.js\n// module id = 419\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n  !(&apos;_hostNode&apos; in instA) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;\n  !(&apos;_hostNode&apos; in instB) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;getNodeFromInstance: Invalid argument.&apos;) : _prodInvariant(&apos;33&apos;) : void 0;\n\n  var depthA = 0;\n  for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n    depthA++;\n  }\n  var depthB = 0;\n  for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n    depthB++;\n  }\n\n  // If A is deeper, crawl up.\n  while (depthA - depthB &gt; 0) {\n    instA = instA._hostParent;\n    depthA--;\n  }\n\n  // If B is deeper, crawl up.\n  while (depthB - depthA &gt; 0) {\n    instB = instB._hostParent;\n    depthB--;\n  }\n\n  // Walk in lockstep until we find a match.\n  var depth = depthA;\n  while (depth--) {\n    if (instA === instB) {\n      return instA;\n    }\n    instA = instA._hostParent;\n    instB = instB._hostParent;\n  }\n  return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n  !(&apos;_hostNode&apos; in instA) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;isAncestor: Invalid argument.&apos;) : _prodInvariant(&apos;35&apos;) : void 0;\n  !(&apos;_hostNode&apos; in instB) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;isAncestor: Invalid argument.&apos;) : _prodInvariant(&apos;35&apos;) : void 0;\n\n  while (instB) {\n    if (instB === instA) {\n      return true;\n    }\n    instB = instB._hostParent;\n  }\n  return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n  !(&apos;_hostNode&apos; in inst) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;getParentInstance: Invalid argument.&apos;) : _prodInvariant(&apos;36&apos;) : void 0;\n\n  return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n  var path = [];\n  while (inst) {\n    path.push(inst);\n    inst = inst._hostParent;\n  }\n  var i;\n  for (i = path.length; i-- &gt; 0;) {\n    fn(path[i], &apos;captured&apos;, arg);\n  }\n  for (i = 0; i &lt; path.length; i++) {\n    fn(path[i], &apos;bubbled&apos;, arg);\n  }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n  var common = from &amp;&amp; to ? getLowestCommonAncestor(from, to) : null;\n  var pathFrom = [];\n  while (from &amp;&amp; from !== common) {\n    pathFrom.push(from);\n    from = from._hostParent;\n  }\n  var pathTo = [];\n  while (to &amp;&amp; to !== common) {\n    pathTo.push(to);\n    to = to._hostParent;\n  }\n  var i;\n  for (i = 0; i &lt; pathFrom.length; i++) {\n    fn(pathFrom[i], &apos;bubbled&apos;, argFrom);\n  }\n  for (i = pathTo.length; i-- &gt; 0;) {\n    fn(pathTo[i], &apos;captured&apos;, argTo);\n  }\n}\n\nmodule.exports = {\n  isAncestor: isAncestor,\n  getLowestCommonAncestor: getLowestCommonAncestor,\n  getParentInstance: getParentInstance,\n  traverseTwoPhase: traverseTwoPhase,\n  traverseEnterLeave: traverseEnterLeave\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMTreeTraversal.js\n// module id = 420\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar EventPluginRegistry = require(&apos;./EventPluginRegistry&apos;);\nvar ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var reactProps = {\n    children: true,\n    dangerouslySetInnerHTML: true,\n    key: true,\n    ref: true,\n\n    autoFocus: true,\n    defaultValue: true,\n    valueLink: true,\n    defaultChecked: true,\n    checkedLink: true,\n    innerHTML: true,\n    suppressContentEditableWarning: true,\n    onFocusIn: true,\n    onFocusOut: true\n  };\n  var warnedProperties = {};\n\n  var validateProperty = function (tagName, name, debugID) {\n    if (DOMProperty.properties.hasOwnProperty(name) || DOMProperty.isCustomAttribute(name)) {\n      return true;\n    }\n    if (reactProps.hasOwnProperty(name) &amp;&amp; reactProps[name] || warnedProperties.hasOwnProperty(name) &amp;&amp; warnedProperties[name]) {\n      return true;\n    }\n    if (EventPluginRegistry.registrationNameModules.hasOwnProperty(name)) {\n      return true;\n    }\n    warnedProperties[name] = true;\n    var lowerCasedName = name.toLowerCase();\n\n    // data-* attributes should be lowercase; suggest the lowercase version\n    var standardName = DOMProperty.isCustomAttribute(lowerCasedName) ? lowerCasedName : DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ? DOMProperty.getPossibleStandardName[lowerCasedName] : null;\n\n    var registrationName = EventPluginRegistry.possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? EventPluginRegistry.possibleRegistrationNames[lowerCasedName] : null;\n\n    if (standardName != null) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unknown DOM property %s. Did you mean %s?%s&apos;, name, standardName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n      return true;\n    } else if (registrationName != null) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unknown event handler property %s. Did you mean `%s`?%s&apos;, name, registrationName, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n      return true;\n    } else {\n      // We were unable to guess which prop the user intended.\n      // It is likely that the user was just blindly spreading/forwarding props\n      // Components should be careful to only render valid props/attributes.\n      // Warning will be invoked in warnUnknownProperties to allow grouping.\n      return false;\n    }\n  };\n}\n\nvar warnUnknownProperties = function (debugID, element) {\n  var unknownProps = [];\n  for (var key in element.props) {\n    var isValid = validateProperty(element.type, key, debugID);\n    if (!isValid) {\n      unknownProps.push(key);\n    }\n  }\n\n  var unknownPropString = unknownProps.map(function (prop) {\n    return &apos;`&apos; + prop + &apos;`&apos;;\n  }).join(&apos;, &apos;);\n\n  if (unknownProps.length === 1) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unknown prop %s on &lt;%s&gt; tag. Remove this prop from the element. &apos; + &apos;For details, see https://fb.me/react-unknown-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n  } else if (unknownProps.length &gt; 1) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Unknown props %s on &lt;%s&gt; tag. Remove these props from the element. &apos; + &apos;For details, see https://fb.me/react-unknown-prop%s&apos;, unknownPropString, element.type, ReactComponentTreeHook.getStackAddendumByID(debugID)) : void 0;\n  }\n};\n\nfunction handleElement(debugID, element) {\n  if (element == null || typeof element.type !== &apos;string&apos;) {\n    return;\n  }\n  if (element.type.indexOf(&apos;-&apos;) &gt;= 0 || element.props.is) {\n    return;\n  }\n  warnUnknownProperties(debugID, element);\n}\n\nvar ReactDOMUnknownPropertyHook = {\n  onBeforeMountComponent: function (debugID, element) {\n    handleElement(debugID, element);\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    handleElement(debugID, element);\n  }\n};\n\nmodule.exports = ReactDOMUnknownPropertyHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDOMUnknownPropertyHook.js\n// module id = 421\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactInvalidSetStateWarningHook = require(&apos;./ReactInvalidSetStateWarningHook&apos;);\nvar ReactHostOperationHistoryHook = require(&apos;./ReactHostOperationHistoryHook&apos;);\nvar ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\nvar performanceNow = require(&apos;fbjs/lib/performanceNow&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar hooks = [];\nvar didHookThrowForEvent = {};\n\nfunction callHook(event, fn, context, arg1, arg2, arg3, arg4, arg5) {\n  try {\n    fn.call(context, arg1, arg2, arg3, arg4, arg5);\n  } catch (e) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(didHookThrowForEvent[event], &apos;Exception thrown by hook while handling %s: %s&apos;, event, e + &apos;\\n&apos; + e.stack) : void 0;\n    didHookThrowForEvent[event] = true;\n  }\n}\n\nfunction emitEvent(event, arg1, arg2, arg3, arg4, arg5) {\n  for (var i = 0; i &lt; hooks.length; i++) {\n    var hook = hooks[i];\n    var fn = hook[event];\n    if (fn) {\n      callHook(event, fn, hook, arg1, arg2, arg3, arg4, arg5);\n    }\n  }\n}\n\nvar isProfiling = false;\nvar flushHistory = [];\nvar lifeCycleTimerStack = [];\nvar currentFlushNesting = 0;\nvar currentFlushMeasurements = [];\nvar currentFlushStartTime = 0;\nvar currentTimerDebugID = null;\nvar currentTimerStartTime = 0;\nvar currentTimerNestedFlushDuration = 0;\nvar currentTimerType = null;\n\nvar lifeCycleTimerHasWarned = false;\n\nfunction clearHistory() {\n  ReactComponentTreeHook.purgeUnmountedComponents();\n  ReactHostOperationHistoryHook.clearHistory();\n}\n\nfunction getTreeSnapshot(registeredIDs) {\n  return registeredIDs.reduce(function (tree, id) {\n    var ownerID = ReactComponentTreeHook.getOwnerID(id);\n    var parentID = ReactComponentTreeHook.getParentID(id);\n    tree[id] = {\n      displayName: ReactComponentTreeHook.getDisplayName(id),\n      text: ReactComponentTreeHook.getText(id),\n      updateCount: ReactComponentTreeHook.getUpdateCount(id),\n      childIDs: ReactComponentTreeHook.getChildIDs(id),\n      // Text nodes don&apos;t have owners but this is close enough.\n      ownerID: ownerID || parentID &amp;&amp; ReactComponentTreeHook.getOwnerID(parentID) || 0,\n      parentID: parentID\n    };\n    return tree;\n  }, {});\n}\n\nfunction resetMeasurements() {\n  var previousStartTime = currentFlushStartTime;\n  var previousMeasurements = currentFlushMeasurements;\n  var previousOperations = ReactHostOperationHistoryHook.getHistory();\n\n  if (currentFlushNesting === 0) {\n    currentFlushStartTime = 0;\n    currentFlushMeasurements = [];\n    clearHistory();\n    return;\n  }\n\n  if (previousMeasurements.length || previousOperations.length) {\n    var registeredIDs = ReactComponentTreeHook.getRegisteredIDs();\n    flushHistory.push({\n      duration: performanceNow() - previousStartTime,\n      measurements: previousMeasurements || [],\n      operations: previousOperations || [],\n      treeSnapshot: getTreeSnapshot(registeredIDs)\n    });\n  }\n\n  clearHistory();\n  currentFlushStartTime = performanceNow();\n  currentFlushMeasurements = [];\n}\n\nfunction checkDebugID(debugID) {\n  var allowRoot = arguments.length &gt; 1 &amp;&amp; arguments[1] !== undefined ? arguments[1] : false;\n\n  if (allowRoot &amp;&amp; debugID === 0) {\n    return;\n  }\n  if (!debugID) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;ReactDebugTool: debugID may not be empty.&apos;) : void 0;\n  }\n}\n\nfunction beginLifeCycleTimer(debugID, timerType) {\n  if (currentFlushNesting === 0) {\n    return;\n  }\n  if (currentTimerType &amp;&amp; !lifeCycleTimerHasWarned) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;There is an internal error in the React performance measurement code. &apos; + &apos;Did not expect %s timer to start while %s timer is still in &apos; + &apos;progress for %s instance.&apos;, timerType, currentTimerType || &apos;no&apos;, debugID === currentTimerDebugID ? &apos;the same&apos; : &apos;another&apos;) : void 0;\n    lifeCycleTimerHasWarned = true;\n  }\n  currentTimerStartTime = performanceNow();\n  currentTimerNestedFlushDuration = 0;\n  currentTimerDebugID = debugID;\n  currentTimerType = timerType;\n}\n\nfunction endLifeCycleTimer(debugID, timerType) {\n  if (currentFlushNesting === 0) {\n    return;\n  }\n  if (currentTimerType !== timerType &amp;&amp; !lifeCycleTimerHasWarned) {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;There is an internal error in the React performance measurement code. &apos; + &apos;We did not expect %s timer to stop while %s timer is still in &apos; + &apos;progress for %s instance. Please report this as a bug in React.&apos;, timerType, currentTimerType || &apos;no&apos;, debugID === currentTimerDebugID ? &apos;the same&apos; : &apos;another&apos;) : void 0;\n    lifeCycleTimerHasWarned = true;\n  }\n  if (isProfiling) {\n    currentFlushMeasurements.push({\n      timerType: timerType,\n      instanceID: debugID,\n      duration: performanceNow() - currentTimerStartTime - currentTimerNestedFlushDuration\n    });\n  }\n  currentTimerStartTime = 0;\n  currentTimerNestedFlushDuration = 0;\n  currentTimerDebugID = null;\n  currentTimerType = null;\n}\n\nfunction pauseCurrentLifeCycleTimer() {\n  var currentTimer = {\n    startTime: currentTimerStartTime,\n    nestedFlushStartTime: performanceNow(),\n    debugID: currentTimerDebugID,\n    timerType: currentTimerType\n  };\n  lifeCycleTimerStack.push(currentTimer);\n  currentTimerStartTime = 0;\n  currentTimerNestedFlushDuration = 0;\n  currentTimerDebugID = null;\n  currentTimerType = null;\n}\n\nfunction resumeCurrentLifeCycleTimer() {\n  var _lifeCycleTimerStack$ = lifeCycleTimerStack.pop(),\n      startTime = _lifeCycleTimerStack$.startTime,\n      nestedFlushStartTime = _lifeCycleTimerStack$.nestedFlushStartTime,\n      debugID = _lifeCycleTimerStack$.debugID,\n      timerType = _lifeCycleTimerStack$.timerType;\n\n  var nestedFlushDuration = performanceNow() - nestedFlushStartTime;\n  currentTimerStartTime = startTime;\n  currentTimerNestedFlushDuration += nestedFlushDuration;\n  currentTimerDebugID = debugID;\n  currentTimerType = timerType;\n}\n\nvar lastMarkTimeStamp = 0;\nvar canUsePerformanceMeasure = typeof performance !== &apos;undefined&apos; &amp;&amp; typeof performance.mark === &apos;function&apos; &amp;&amp; typeof performance.clearMarks === &apos;function&apos; &amp;&amp; typeof performance.measure === &apos;function&apos; &amp;&amp; typeof performance.clearMeasures === &apos;function&apos;;\n\nfunction shouldMark(debugID) {\n  if (!isProfiling || !canUsePerformanceMeasure) {\n    return false;\n  }\n  var element = ReactComponentTreeHook.getElement(debugID);\n  if (element == null || typeof element !== &apos;object&apos;) {\n    return false;\n  }\n  var isHostElement = typeof element.type === &apos;string&apos;;\n  if (isHostElement) {\n    return false;\n  }\n  return true;\n}\n\nfunction markBegin(debugID, markType) {\n  if (!shouldMark(debugID)) {\n    return;\n  }\n\n  var markName = debugID + &apos;::&apos; + markType;\n  lastMarkTimeStamp = performanceNow();\n  performance.mark(markName);\n}\n\nfunction markEnd(debugID, markType) {\n  if (!shouldMark(debugID)) {\n    return;\n  }\n\n  var markName = debugID + &apos;::&apos; + markType;\n  var displayName = ReactComponentTreeHook.getDisplayName(debugID) || &apos;Unknown&apos;;\n\n  // Chrome has an issue of dropping markers recorded too fast:\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=640652\n  // To work around this, we will not report very small measurements.\n  // I determined the magic number by tweaking it back and forth.\n  // 0.05ms was enough to prevent the issue, but I set it to 0.1ms to be safe.\n  // When the bug is fixed, we can `measure()` unconditionally if we want to.\n  var timeStamp = performanceNow();\n  if (timeStamp - lastMarkTimeStamp &gt; 0.1) {\n    var measurementName = displayName + &apos; [&apos; + markType + &apos;]&apos;;\n    performance.measure(measurementName, markName);\n  }\n\n  performance.clearMarks(markName);\n  performance.clearMeasures(measurementName);\n}\n\nvar ReactDebugTool = {\n  addHook: function (hook) {\n    hooks.push(hook);\n  },\n  removeHook: function (hook) {\n    for (var i = 0; i &lt; hooks.length; i++) {\n      if (hooks[i] === hook) {\n        hooks.splice(i, 1);\n        i--;\n      }\n    }\n  },\n  isProfiling: function () {\n    return isProfiling;\n  },\n  beginProfiling: function () {\n    if (isProfiling) {\n      return;\n    }\n\n    isProfiling = true;\n    flushHistory.length = 0;\n    resetMeasurements();\n    ReactDebugTool.addHook(ReactHostOperationHistoryHook);\n  },\n  endProfiling: function () {\n    if (!isProfiling) {\n      return;\n    }\n\n    isProfiling = false;\n    resetMeasurements();\n    ReactDebugTool.removeHook(ReactHostOperationHistoryHook);\n  },\n  getFlushHistory: function () {\n    return flushHistory;\n  },\n  onBeginFlush: function () {\n    currentFlushNesting++;\n    resetMeasurements();\n    pauseCurrentLifeCycleTimer();\n    emitEvent(&apos;onBeginFlush&apos;);\n  },\n  onEndFlush: function () {\n    resetMeasurements();\n    currentFlushNesting--;\n    resumeCurrentLifeCycleTimer();\n    emitEvent(&apos;onEndFlush&apos;);\n  },\n  onBeginLifeCycleTimer: function (debugID, timerType) {\n    checkDebugID(debugID);\n    emitEvent(&apos;onBeginLifeCycleTimer&apos;, debugID, timerType);\n    markBegin(debugID, timerType);\n    beginLifeCycleTimer(debugID, timerType);\n  },\n  onEndLifeCycleTimer: function (debugID, timerType) {\n    checkDebugID(debugID);\n    endLifeCycleTimer(debugID, timerType);\n    markEnd(debugID, timerType);\n    emitEvent(&apos;onEndLifeCycleTimer&apos;, debugID, timerType);\n  },\n  onBeginProcessingChildContext: function () {\n    emitEvent(&apos;onBeginProcessingChildContext&apos;);\n  },\n  onEndProcessingChildContext: function () {\n    emitEvent(&apos;onEndProcessingChildContext&apos;);\n  },\n  onHostOperation: function (operation) {\n    checkDebugID(operation.instanceID);\n    emitEvent(&apos;onHostOperation&apos;, operation);\n  },\n  onSetState: function () {\n    emitEvent(&apos;onSetState&apos;);\n  },\n  onSetChildren: function (debugID, childDebugIDs) {\n    checkDebugID(debugID);\n    childDebugIDs.forEach(checkDebugID);\n    emitEvent(&apos;onSetChildren&apos;, debugID, childDebugIDs);\n  },\n  onBeforeMountComponent: function (debugID, element, parentDebugID) {\n    checkDebugID(debugID);\n    checkDebugID(parentDebugID, true);\n    emitEvent(&apos;onBeforeMountComponent&apos;, debugID, element, parentDebugID);\n    markBegin(debugID, &apos;mount&apos;);\n  },\n  onMountComponent: function (debugID) {\n    checkDebugID(debugID);\n    markEnd(debugID, &apos;mount&apos;);\n    emitEvent(&apos;onMountComponent&apos;, debugID);\n  },\n  onBeforeUpdateComponent: function (debugID, element) {\n    checkDebugID(debugID);\n    emitEvent(&apos;onBeforeUpdateComponent&apos;, debugID, element);\n    markBegin(debugID, &apos;update&apos;);\n  },\n  onUpdateComponent: function (debugID) {\n    checkDebugID(debugID);\n    markEnd(debugID, &apos;update&apos;);\n    emitEvent(&apos;onUpdateComponent&apos;, debugID);\n  },\n  onBeforeUnmountComponent: function (debugID) {\n    checkDebugID(debugID);\n    emitEvent(&apos;onBeforeUnmountComponent&apos;, debugID);\n    markBegin(debugID, &apos;unmount&apos;);\n  },\n  onUnmountComponent: function (debugID) {\n    checkDebugID(debugID);\n    markEnd(debugID, &apos;unmount&apos;);\n    emitEvent(&apos;onUnmountComponent&apos;, debugID);\n  },\n  onTestEvent: function () {\n    emitEvent(&apos;onTestEvent&apos;);\n  }\n};\n\n// TODO remove these when RN/www gets updated\nReactDebugTool.addDevtool = ReactDebugTool.addHook;\nReactDebugTool.removeDevtool = ReactDebugTool.removeHook;\n\nReactDebugTool.addHook(ReactInvalidSetStateWarningHook);\nReactDebugTool.addHook(ReactComponentTreeHook);\nvar url = ExecutionEnvironment.canUseDOM &amp;&amp; window.location.href || &apos;&apos;;\nif (/[?&amp;]react_perf\\b/.test(url)) {\n  ReactDebugTool.beginProfiling();\n}\n\nmodule.exports = ReactDebugTool;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDebugTool.js\n// module id = 422\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\nvar Transaction = require(&apos;./Transaction&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\n\nvar RESET_BATCHED_UPDATES = {\n  initialize: emptyFunction,\n  close: function () {\n    ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n  }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n  initialize: emptyFunction,\n  close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n  this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n  getTransactionWrappers: function () {\n    return TRANSACTION_WRAPPERS;\n  }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n  isBatchingUpdates: false,\n\n  /**\n   * Call the provided function in a context within which calls to `setState`\n   * and friends are batched such that components aren&apos;t updated unnecessarily.\n   */\n  batchedUpdates: function (callback, a, b, c, d, e) {\n    var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n    ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n    // The code is written this way to avoid extra allocations\n    if (alreadyBatchingUpdates) {\n      return callback(a, b, c, d, e);\n    } else {\n      return transaction.perform(callback, null, a, b, c, d, e);\n    }\n  }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDefaultBatchingStrategy.js\n// module id = 423\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ARIADOMPropertyConfig = require(&apos;./ARIADOMPropertyConfig&apos;);\nvar BeforeInputEventPlugin = require(&apos;./BeforeInputEventPlugin&apos;);\nvar ChangeEventPlugin = require(&apos;./ChangeEventPlugin&apos;);\nvar DefaultEventPluginOrder = require(&apos;./DefaultEventPluginOrder&apos;);\nvar EnterLeaveEventPlugin = require(&apos;./EnterLeaveEventPlugin&apos;);\nvar HTMLDOMPropertyConfig = require(&apos;./HTMLDOMPropertyConfig&apos;);\nvar ReactComponentBrowserEnvironment = require(&apos;./ReactComponentBrowserEnvironment&apos;);\nvar ReactDOMComponent = require(&apos;./ReactDOMComponent&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactDOMEmptyComponent = require(&apos;./ReactDOMEmptyComponent&apos;);\nvar ReactDOMTreeTraversal = require(&apos;./ReactDOMTreeTraversal&apos;);\nvar ReactDOMTextComponent = require(&apos;./ReactDOMTextComponent&apos;);\nvar ReactDefaultBatchingStrategy = require(&apos;./ReactDefaultBatchingStrategy&apos;);\nvar ReactEventListener = require(&apos;./ReactEventListener&apos;);\nvar ReactInjection = require(&apos;./ReactInjection&apos;);\nvar ReactReconcileTransaction = require(&apos;./ReactReconcileTransaction&apos;);\nvar SVGDOMPropertyConfig = require(&apos;./SVGDOMPropertyConfig&apos;);\nvar SelectEventPlugin = require(&apos;./SelectEventPlugin&apos;);\nvar SimpleEventPlugin = require(&apos;./SimpleEventPlugin&apos;);\n\nvar alreadyInjected = false;\n\nfunction inject() {\n  if (alreadyInjected) {\n    // TODO: This is currently true because these injections are shared between\n    // the client and the server package. They should be built independently\n    // and not share any injection state. Then this problem will be solved.\n    return;\n  }\n  alreadyInjected = true;\n\n  ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n  /**\n   * Inject modules for resolving DOM hierarchy and plugin ordering.\n   */\n  ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n  ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n  ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n  /**\n   * Some important event plugins included by default (without having to require\n   * them).\n   */\n  ReactInjection.EventPluginHub.injectEventPluginsByName({\n    SimpleEventPlugin: SimpleEventPlugin,\n    EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n    ChangeEventPlugin: ChangeEventPlugin,\n    SelectEventPlugin: SelectEventPlugin,\n    BeforeInputEventPlugin: BeforeInputEventPlugin\n  });\n\n  ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n  ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n  ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n  ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n  ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n  ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n    return new ReactDOMEmptyComponent(instantiate);\n  });\n\n  ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n  ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n  ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n  inject: inject\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactDefaultInjection.js\n// module id = 424\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol[&apos;for&apos;] &amp;&amp; Symbol[&apos;for&apos;](&apos;react.element&apos;) || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactElementSymbol.js\n// module id = 425\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPluginHub = require(&apos;./EventPluginHub&apos;);\n\nfunction runEventQueueInBatch(events) {\n  EventPluginHub.enqueueEvents(events);\n  EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n  /**\n   * Streams a fired top-level event to `EventPluginHub` where plugins have the\n   * opportunity to create `ReactEvent`s to be dispatched.\n   */\n  handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n    runEventQueueInBatch(events);\n  }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactEventEmitterMixin.js\n// module id = 426\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar EventListener = require(&apos;fbjs/lib/EventListener&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar PooledClass = require(&apos;./PooledClass&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar getEventTarget = require(&apos;./getEventTarget&apos;);\nvar getUnboundedScrollPosition = require(&apos;fbjs/lib/getUnboundedScrollPosition&apos;);\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n  // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n  // traversal, but caching is difficult to do correctly without using a\n  // mutation observer to listen for all DOM changes.\n  while (inst._hostParent) {\n    inst = inst._hostParent;\n  }\n  var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n  var container = rootNode.parentNode;\n  return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n  this.topLevelType = topLevelType;\n  this.nativeEvent = nativeEvent;\n  this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n  destructor: function () {\n    this.topLevelType = null;\n    this.nativeEvent = null;\n    this.ancestors.length = 0;\n  }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n  var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n  var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n  // Loop through the hierarchy, in case there&apos;s any nested components.\n  // It&apos;s important that we build the array of ancestors before calling any\n  // event handlers, because event handlers can modify the DOM, leading to\n  // inconsistencies with ReactMount&apos;s node cache. See #1105.\n  var ancestor = targetInst;\n  do {\n    bookKeeping.ancestors.push(ancestor);\n    ancestor = ancestor &amp;&amp; findParent(ancestor);\n  } while (ancestor);\n\n  for (var i = 0; i &lt; bookKeeping.ancestors.length; i++) {\n    targetInst = bookKeeping.ancestors[i];\n    ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n  }\n}\n\nfunction scrollValueMonitor(cb) {\n  var scrollPosition = getUnboundedScrollPosition(window);\n  cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n  _enabled: true,\n  _handleTopLevel: null,\n\n  WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n  setHandleTopLevel: function (handleTopLevel) {\n    ReactEventListener._handleTopLevel = handleTopLevel;\n  },\n\n  setEnabled: function (enabled) {\n    ReactEventListener._enabled = !!enabled;\n  },\n\n  isEnabled: function () {\n    return ReactEventListener._enabled;\n  },\n\n  /**\n   * Traps top-level events by using event bubbling.\n   *\n   * @param {string} topLevelType Record from `EventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  /**\n   * Traps a top-level event by using event capturing.\n   *\n   * @param {string} topLevelType Record from `EventConstants`.\n   * @param {string} handlerBaseName Event name (e.g. \"click\").\n   * @param {object} element Element on which to attach listener.\n   * @return {?object} An object with a remove function which will forcefully\n   *                  remove the listener.\n   * @internal\n   */\n  trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n    if (!element) {\n      return null;\n    }\n    return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n  },\n\n  monitorScrollValue: function (refresh) {\n    var callback = scrollValueMonitor.bind(null, refresh);\n    EventListener.listen(window, &apos;scroll&apos;, callback);\n  },\n\n  dispatchEvent: function (topLevelType, nativeEvent) {\n    if (!ReactEventListener._enabled) {\n      return;\n    }\n\n    var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n    try {\n      // Event queue being processed in the same cycle allows\n      // `preventDefault`.\n      ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n    } finally {\n      TopLevelCallbackBookKeeping.release(bookKeeping);\n    }\n  }\n};\n\nmodule.exports = ReactEventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactEventListener.js\n// module id = 427\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar history = [];\n\nvar ReactHostOperationHistoryHook = {\n  onHostOperation: function (operation) {\n    history.push(operation);\n  },\n  clearHistory: function () {\n    if (ReactHostOperationHistoryHook._preventClearing) {\n      // Should only be used for tests.\n      return;\n    }\n\n    history = [];\n  },\n  getHistory: function () {\n    return history;\n  }\n};\n\nmodule.exports = ReactHostOperationHistoryHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactHostOperationHistoryHook.js\n// module id = 428\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar DOMProperty = require(&apos;./DOMProperty&apos;);\nvar EventPluginHub = require(&apos;./EventPluginHub&apos;);\nvar EventPluginUtils = require(&apos;./EventPluginUtils&apos;);\nvar ReactComponentEnvironment = require(&apos;./ReactComponentEnvironment&apos;);\nvar ReactEmptyComponent = require(&apos;./ReactEmptyComponent&apos;);\nvar ReactBrowserEventEmitter = require(&apos;./ReactBrowserEventEmitter&apos;);\nvar ReactHostComponent = require(&apos;./ReactHostComponent&apos;);\nvar ReactUpdates = require(&apos;./ReactUpdates&apos;);\n\nvar ReactInjection = {\n  Component: ReactComponentEnvironment.injection,\n  DOMProperty: DOMProperty.injection,\n  EmptyComponent: ReactEmptyComponent.injection,\n  EventPluginHub: EventPluginHub.injection,\n  EventPluginUtils: EventPluginUtils.injection,\n  EventEmitter: ReactBrowserEventEmitter.injection,\n  HostComponent: ReactHostComponent.injection,\n  Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactInjection.js\n// module id = 429\n// module chunks = 1","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var processingChildContext = false;\n\n  var warnInvalidSetState = function () {\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(!processingChildContext, &apos;setState(...): Cannot call setState() inside getChildContext()&apos;) : void 0;\n  };\n}\n\nvar ReactInvalidSetStateWarningHook = {\n  onBeginProcessingChildContext: function () {\n    processingChildContext = true;\n  },\n  onEndProcessingChildContext: function () {\n    processingChildContext = false;\n  },\n  onSetState: function () {\n    warnInvalidSetState();\n  }\n};\n\nmodule.exports = ReactInvalidSetStateWarningHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactInvalidSetStateWarningHook.js\n// module id = 430\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar adler32 = require(&apos;./adler32&apos;);\n\nvar TAG_END = /\\/?&gt;/;\nvar COMMENT_START = /^&lt;\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n  CHECKSUM_ATTR_NAME: &apos;data-react-checksum&apos;,\n\n  /**\n   * @param {string} markup Markup string\n   * @return {string} Markup string with checksum attribute attached\n   */\n  addChecksumToMarkup: function (markup) {\n    var checksum = adler32(markup);\n\n    // Add checksum (handle both parent tags, comments and self-closing tags)\n    if (COMMENT_START.test(markup)) {\n      return markup;\n    } else {\n      return markup.replace(TAG_END, &apos; &apos; + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + &apos;=\"&apos; + checksum + &apos;\"$&amp;&apos;);\n    }\n  },\n\n  /**\n   * @param {string} markup to use\n   * @param {DOMElement} element root React element\n   * @returns {boolean} whether or not the markup is the same\n   */\n  canReuseMarkup: function (markup, element) {\n    var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n    existingChecksum = existingChecksum &amp;&amp; parseInt(existingChecksum, 10);\n    var markupChecksum = adler32(markup);\n    return markupChecksum === existingChecksum;\n  }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactMarkupChecksum.js\n// module id = 431\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactComponentEnvironment = require(&apos;./ReactComponentEnvironment&apos;);\nvar ReactInstanceMap = require(&apos;./ReactInstanceMap&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\n\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar ReactReconciler = require(&apos;./ReactReconciler&apos;);\nvar ReactChildReconciler = require(&apos;./ReactChildReconciler&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar flattenChildren = require(&apos;./flattenChildren&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: &apos;INSERT_MARKUP&apos;,\n    content: markup,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: toIndex,\n    afterNode: afterNode\n  };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: &apos;MOVE_EXISTING&apos;,\n    content: null,\n    fromIndex: child._mountIndex,\n    fromNode: ReactReconciler.getHostNode(child),\n    toIndex: toIndex,\n    afterNode: afterNode\n  };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: &apos;REMOVE_NODE&apos;,\n    content: null,\n    fromIndex: child._mountIndex,\n    fromNode: node,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: &apos;SET_MARKUP&apos;,\n    content: markup,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n  // NOTE: Null values reduce hidden classes.\n  return {\n    type: &apos;TEXT_CONTENT&apos;,\n    content: textContent,\n    fromIndex: null,\n    fromNode: null,\n    toIndex: null,\n    afterNode: null\n  };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n  if (update) {\n    queue = queue || [];\n    queue.push(update);\n  }\n  return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n  ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var getDebugID = function (inst) {\n    if (!inst._debugID) {\n      // Check for ART-like instances. TODO: This is silly/gross.\n      var internal;\n      if (internal = ReactInstanceMap.get(inst)) {\n        inst = internal;\n      }\n    }\n    return inst._debugID;\n  };\n  setChildrenForInstrumentation = function (children) {\n    var debugID = getDebugID(this);\n    // TODO: React Native empty components are also multichild.\n    // This means they still get into this method but don&apos;t have _debugID.\n    if (debugID !== 0) {\n      ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n        return children[key]._debugID;\n      }) : []);\n    }\n  };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n  /**\n   * Provides common functionality for components that must reconcile multiple\n   * children. This is used by `ReactDOMComponent` to mount, update, and\n   * unmount child components.\n   *\n   * @lends {ReactMultiChild.prototype}\n   */\n  Mixin: {\n\n    _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        var selfDebugID = getDebugID(this);\n        if (this._currentElement) {\n          try {\n            ReactCurrentOwner.current = this._currentElement._owner;\n            return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n          } finally {\n            ReactCurrentOwner.current = null;\n          }\n        }\n      }\n      return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n    },\n\n    _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n      var nextChildren;\n      var selfDebugID = 0;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        selfDebugID = getDebugID(this);\n        if (this._currentElement) {\n          try {\n            ReactCurrentOwner.current = this._currentElement._owner;\n            nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n          } finally {\n            ReactCurrentOwner.current = null;\n          }\n          ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n          return nextChildren;\n        }\n      }\n      nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n      ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n      return nextChildren;\n    },\n\n    /**\n     * Generates a \"mount image\" for each of the supplied children. In the case\n     * of `ReactDOMComponent`, a mount image is a string of markup.\n     *\n     * @param {?object} nestedChildren Nested child maps.\n     * @return {array} An array of mounted representations.\n     * @internal\n     */\n    mountChildren: function (nestedChildren, transaction, context) {\n      var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n      this._renderedChildren = children;\n\n      var mountImages = [];\n      var index = 0;\n      for (var name in children) {\n        if (children.hasOwnProperty(name)) {\n          var child = children[name];\n          var selfDebugID = 0;\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            selfDebugID = getDebugID(this);\n          }\n          var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n          child._mountIndex = index++;\n          mountImages.push(mountImage);\n        }\n      }\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        setChildrenForInstrumentation.call(this, children);\n      }\n\n      return mountImages;\n    },\n\n    /**\n     * Replaces any rendered children with a text content string.\n     *\n     * @param {string} nextContent String of content.\n     * @internal\n     */\n    updateTextContent: function (nextContent) {\n      var prevChildren = this._renderedChildren;\n      // Remove any rendered children.\n      ReactChildReconciler.unmountChildren(prevChildren, false);\n      for (var name in prevChildren) {\n        if (prevChildren.hasOwnProperty(name)) {\n          !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;updateTextContent called on non-empty component.&apos;) : _prodInvariant(&apos;118&apos;) : void 0;\n        }\n      }\n      // Set new text content.\n      var updates = [makeTextContent(nextContent)];\n      processQueue(this, updates);\n    },\n\n    /**\n     * Replaces any rendered children with a markup string.\n     *\n     * @param {string} nextMarkup String of markup.\n     * @internal\n     */\n    updateMarkup: function (nextMarkup) {\n      var prevChildren = this._renderedChildren;\n      // Remove any rendered children.\n      ReactChildReconciler.unmountChildren(prevChildren, false);\n      for (var name in prevChildren) {\n        if (prevChildren.hasOwnProperty(name)) {\n          !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;updateTextContent called on non-empty component.&apos;) : _prodInvariant(&apos;118&apos;) : void 0;\n        }\n      }\n      var updates = [makeSetMarkup(nextMarkup)];\n      processQueue(this, updates);\n    },\n\n    /**\n     * Updates the rendered children with new children.\n     *\n     * @param {?object} nextNestedChildrenElements Nested child element maps.\n     * @param {ReactReconcileTransaction} transaction\n     * @internal\n     */\n    updateChildren: function (nextNestedChildrenElements, transaction, context) {\n      // Hook used by React ART\n      this._updateChildren(nextNestedChildrenElements, transaction, context);\n    },\n\n    /**\n     * @param {?object} nextNestedChildrenElements Nested child element maps.\n     * @param {ReactReconcileTransaction} transaction\n     * @final\n     * @protected\n     */\n    _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n      var prevChildren = this._renderedChildren;\n      var removedNodes = {};\n      var mountImages = [];\n      var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n      if (!nextChildren &amp;&amp; !prevChildren) {\n        return;\n      }\n      var updates = null;\n      var name;\n      // `nextIndex` will increment for each child in `nextChildren`, but\n      // `lastIndex` will be the last index visited in `prevChildren`.\n      var nextIndex = 0;\n      var lastIndex = 0;\n      // `nextMountIndex` will increment for each newly mounted child.\n      var nextMountIndex = 0;\n      var lastPlacedNode = null;\n      for (name in nextChildren) {\n        if (!nextChildren.hasOwnProperty(name)) {\n          continue;\n        }\n        var prevChild = prevChildren &amp;&amp; prevChildren[name];\n        var nextChild = nextChildren[name];\n        if (prevChild === nextChild) {\n          updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n          lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n          prevChild._mountIndex = nextIndex;\n        } else {\n          if (prevChild) {\n            // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n            lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n            // The `removedNodes` loop below will actually remove the child.\n          }\n          // The child must be instantiated before it&apos;s mounted.\n          updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n          nextMountIndex++;\n        }\n        nextIndex++;\n        lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n      }\n      // Remove children that are no longer present.\n      for (name in removedNodes) {\n        if (removedNodes.hasOwnProperty(name)) {\n          updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n        }\n      }\n      if (updates) {\n        processQueue(this, updates);\n      }\n      this._renderedChildren = nextChildren;\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        setChildrenForInstrumentation.call(this, nextChildren);\n      }\n    },\n\n    /**\n     * Unmounts all rendered children. This should be used to clean up children\n     * when this component is unmounted. It does not actually perform any\n     * backend operations.\n     *\n     * @internal\n     */\n    unmountChildren: function (safely) {\n      var renderedChildren = this._renderedChildren;\n      ReactChildReconciler.unmountChildren(renderedChildren, safely);\n      this._renderedChildren = null;\n    },\n\n    /**\n     * Moves a child component to the supplied index.\n     *\n     * @param {ReactComponent} child Component to move.\n     * @param {number} toIndex Destination index of the element.\n     * @param {number} lastIndex Last index visited of the siblings of `child`.\n     * @protected\n     */\n    moveChild: function (child, afterNode, toIndex, lastIndex) {\n      // If the index of `child` is less than `lastIndex`, then it needs to\n      // be moved. Otherwise, we do not need to move it because a child will be\n      // inserted or moved before `child`.\n      if (child._mountIndex &lt; lastIndex) {\n        return makeMove(child, afterNode, toIndex);\n      }\n    },\n\n    /**\n     * Creates a child component.\n     *\n     * @param {ReactComponent} child Component to create.\n     * @param {string} mountImage Markup to insert.\n     * @protected\n     */\n    createChild: function (child, afterNode, mountImage) {\n      return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n    },\n\n    /**\n     * Removes a child component.\n     *\n     * @param {ReactComponent} child Child to remove.\n     * @protected\n     */\n    removeChild: function (child, node) {\n      return makeRemove(child, node);\n    },\n\n    /**\n     * Mounts a child with the supplied name.\n     *\n     * NOTE: This is part of `updateChildren` and is here for readability.\n     *\n     * @param {ReactComponent} child Component to mount.\n     * @param {string} name Name of the child.\n     * @param {number} index Index at which to insert the child.\n     * @param {ReactReconcileTransaction} transaction\n     * @private\n     */\n    _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n      child._mountIndex = index;\n      return this.createChild(child, afterNode, mountImage);\n    },\n\n    /**\n     * Unmounts a rendered child.\n     *\n     * NOTE: This is part of `updateChildren` and is here for readability.\n     *\n     * @param {ReactComponent} child Component to unmount.\n     * @private\n     */\n    _unmountChild: function (child, node) {\n      var update = this.removeChild(child, node);\n      child._mountIndex = null;\n      return update;\n    }\n\n  }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactMultiChild.js\n// module id = 432\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n  return !!(object &amp;&amp; typeof object.attachRef === &apos;function&apos; &amp;&amp; typeof object.detachRef === &apos;function&apos;);\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n *   var MyComponent = React.createClass({\n *     render: function() {\n *       return (\n *         &lt;div onClick={this.handleClick}&gt;\n *           &lt;CustomComponent ref=\"custom\" /&gt;\n *         &lt;/div&gt;\n *       );\n *     },\n *     handleClick: function() {\n *       this.refs.custom.handleClick();\n *     },\n *     componentDidMount: function() {\n *       this.refs.custom.initialize();\n *     }\n *   });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React&apos;s data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n  /**\n   * Adds a component by ref to an owner component.\n   *\n   * @param {ReactComponent} component Component to reference.\n   * @param {string} ref Name by which to refer to the component.\n   * @param {ReactOwner} owner Component on which to record the ref.\n   * @final\n   * @internal\n   */\n  addComponentAsRefTo: function (component, ref, owner) {\n    !isValidOwner(owner) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\&apos;s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).&apos;) : _prodInvariant(&apos;119&apos;) : void 0;\n    owner.attachRef(ref, component);\n  },\n\n  /**\n   * Removes a component by ref from an owner component.\n   *\n   * @param {ReactComponent} component Component to dereference.\n   * @param {string} ref Name of the ref to remove.\n   * @param {ReactOwner} owner Component on which the ref is recorded.\n   * @final\n   * @internal\n   */\n  removeComponentAsRefFrom: function (component, ref, owner) {\n    !isValidOwner(owner) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\&apos;s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).&apos;) : _prodInvariant(&apos;120&apos;) : void 0;\n    var ownerPublicInstance = owner.getPublicInstance();\n    // Check that `component`&apos;s owner is still alive and that `component` is still the current ref\n    // because we do not want to detach the ref if another component stole it.\n    if (ownerPublicInstance &amp;&amp; ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n      owner.detachRef(ref);\n    }\n  }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactOwner.js\n// module id = 433\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  ReactPropTypeLocationNames = {\n    prop: &apos;prop&apos;,\n    context: &apos;context&apos;,\n    childContext: &apos;child context&apos;\n  };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactPropTypeLocationNames.js\n// module id = 434\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar CallbackQueue = require(&apos;./CallbackQueue&apos;);\nvar PooledClass = require(&apos;./PooledClass&apos;);\nvar ReactBrowserEventEmitter = require(&apos;./ReactBrowserEventEmitter&apos;);\nvar ReactInputSelection = require(&apos;./ReactInputSelection&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar Transaction = require(&apos;./Transaction&apos;);\nvar ReactUpdateQueue = require(&apos;./ReactUpdateQueue&apos;);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n  /**\n   * @return {Selection} Selection information.\n   */\n  initialize: ReactInputSelection.getSelectionInformation,\n  /**\n   * @param {Selection} sel Selection information returned from `initialize`.\n   */\n  close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n  /**\n   * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n   * the reconciliation.\n   */\n  initialize: function () {\n    var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n    ReactBrowserEventEmitter.setEnabled(false);\n    return currentlyEnabled;\n  },\n\n  /**\n   * @param {boolean} previouslyEnabled Enabled status of\n   *   `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n   *   restores the previous value.\n   */\n  close: function (previouslyEnabled) {\n    ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n  }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n  /**\n   * Initializes the internal `onDOMReady` queue.\n   */\n  initialize: function () {\n    this.reactMountReady.reset();\n  },\n\n  /**\n   * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n   */\n  close: function () {\n    this.reactMountReady.notifyAll();\n  }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  TRANSACTION_WRAPPERS.push({\n    initialize: ReactInstrumentation.debugTool.onBeginFlush,\n    close: ReactInstrumentation.debugTool.onEndFlush\n  });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n *   modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n *   track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n  this.reinitializeTransaction();\n  // Only server-side rendering really needs this option (see\n  // `ReactServerRendering`), but server-side uses\n  // `ReactServerRenderingTransaction` instead. This option is here so that it&apos;s\n  // accessible and defaults to false when `ReactDOMComponent` and\n  // `ReactDOMTextComponent` checks it in `mountComponent`.`\n  this.renderToStaticMarkup = false;\n  this.reactMountReady = CallbackQueue.getPooled(null);\n  this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n  /**\n   * @see Transaction\n   * @abstract\n   * @final\n   * @return {array&lt;object&gt;} List of operation wrap procedures.\n   *   TODO: convert to array&lt;TransactionWrapper&gt;\n   */\n  getTransactionWrappers: function () {\n    return TRANSACTION_WRAPPERS;\n  },\n\n  /**\n   * @return {object} The queue to collect `onDOMReady` callbacks with.\n   */\n  getReactMountReady: function () {\n    return this.reactMountReady;\n  },\n\n  /**\n   * @return {object} The queue to collect React async events.\n   */\n  getUpdateQueue: function () {\n    return ReactUpdateQueue;\n  },\n\n  /**\n   * Save current transaction state -- if the return value from this method is\n   * passed to `rollback`, the transaction will be reset to that state.\n   */\n  checkpoint: function () {\n    // reactMountReady is the our only stateful wrapper\n    return this.reactMountReady.checkpoint();\n  },\n\n  rollback: function (checkpoint) {\n    this.reactMountReady.rollback(checkpoint);\n  },\n\n  /**\n   * `PooledClass` looks for this, and will invoke this before allowing this\n   * instance to be reused.\n   */\n  destructor: function () {\n    CallbackQueue.release(this.reactMountReady);\n    this.reactMountReady = null;\n  }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactReconcileTransaction.js\n// module id = 435\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactOwner = require(&apos;./ReactOwner&apos;);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n  if (typeof ref === &apos;function&apos;) {\n    ref(component.getPublicInstance());\n  } else {\n    // Legacy ref\n    ReactOwner.addComponentAsRefTo(component, ref, owner);\n  }\n}\n\nfunction detachRef(ref, component, owner) {\n  if (typeof ref === &apos;function&apos;) {\n    ref(null);\n  } else {\n    // Legacy ref\n    ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n  }\n}\n\nReactRef.attachRefs = function (instance, element) {\n  if (element === null || typeof element !== &apos;object&apos;) {\n    return;\n  }\n  var ref = element.ref;\n  if (ref != null) {\n    attachRef(ref, instance, element._owner);\n  }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n  // If either the owner or a `ref` has changed, make sure the newest owner\n  // has stored a reference to `this`, and the previous owner (if different)\n  // has forgotten the reference to `this`. We use the element instead\n  // of the public this.props because the post processing cannot determine\n  // a ref. The ref conceptually lives on the element.\n\n  // TODO: Should this even be possible? The owner cannot change because\n  // it&apos;s forbidden by shouldUpdateReactComponent. The ref can change\n  // if you swap the keys of but not the refs. Reconsider where this check\n  // is made. It probably belongs where the key checking and\n  // instantiateReactComponent is done.\n\n  var prevRef = null;\n  var prevOwner = null;\n  if (prevElement !== null &amp;&amp; typeof prevElement === &apos;object&apos;) {\n    prevRef = prevElement.ref;\n    prevOwner = prevElement._owner;\n  }\n\n  var nextRef = null;\n  var nextOwner = null;\n  if (nextElement !== null &amp;&amp; typeof nextElement === &apos;object&apos;) {\n    nextRef = nextElement.ref;\n    nextOwner = nextElement._owner;\n  }\n\n  return prevRef !== nextRef ||\n  // If owner changes but we have an unchanged function ref, don&apos;t update refs\n  typeof nextRef === &apos;string&apos; &amp;&amp; nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n  if (element === null || typeof element !== &apos;object&apos;) {\n    return;\n  }\n  var ref = element.ref;\n  if (ref != null) {\n    detachRef(ref, instance, element._owner);\n  }\n};\n\nmodule.exports = ReactRef;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactRef.js\n// module id = 436\n// module chunks = 1","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar PooledClass = require(&apos;./PooledClass&apos;);\nvar Transaction = require(&apos;./Transaction&apos;);\nvar ReactInstrumentation = require(&apos;./ReactInstrumentation&apos;);\nvar ReactServerUpdateQueue = require(&apos;./ReactServerUpdateQueue&apos;);\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  TRANSACTION_WRAPPERS.push({\n    initialize: ReactInstrumentation.debugTool.onBeginFlush,\n    close: ReactInstrumentation.debugTool.onEndFlush\n  });\n}\n\nvar noopCallbackQueue = {\n  enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n  this.reinitializeTransaction();\n  this.renderToStaticMarkup = renderToStaticMarkup;\n  this.useCreateElement = false;\n  this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n  /**\n   * @see Transaction\n   * @abstract\n   * @final\n   * @return {array} Empty list of operation wrap procedures.\n   */\n  getTransactionWrappers: function () {\n    return TRANSACTION_WRAPPERS;\n  },\n\n  /**\n   * @return {object} The queue to collect `onDOMReady` callbacks with.\n   */\n  getReactMountReady: function () {\n    return noopCallbackQueue;\n  },\n\n  /**\n   * @return {object} The queue to collect React async events.\n   */\n  getUpdateQueue: function () {\n    return this.updateQueue;\n  },\n\n  /**\n   * `PooledClass` looks for this, and will invoke this before allowing this\n   * instance to be reused.\n   */\n  destructor: function () {},\n\n  checkpoint: function () {},\n\n  rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactServerRenderingTransaction.js\n// module id = 437\n// module chunks = 1","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require(&apos;./ReactUpdateQueue&apos;);\n\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nfunction warnNoop(publicInstance, callerName) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    var constructor = publicInstance.constructor;\n    process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;%s(...): Can only update a mounting component. &apos; + &apos;This usually means you called %s() outside componentWillMount() on the server. &apos; + &apos;This is a no-op. Please check the code for the %s component.&apos;, callerName, callerName, constructor &amp;&amp; (constructor.displayName || constructor.name) || &apos;ReactClass&apos;) : void 0;\n  }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n  function ReactServerUpdateQueue(transaction) {\n    _classCallCheck(this, ReactServerUpdateQueue);\n\n    this.transaction = transaction;\n  }\n\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n\n\n  ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n    return false;\n  };\n\n  /**\n   * Enqueue a callback that will be executed after all the pending updates\n   * have processed.\n   *\n   * @param {ReactClass} publicInstance The instance to use as `this` context.\n   * @param {?function} callback Called after state is updated.\n   * @internal\n   */\n\n\n  ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n    if (this.transaction.isInTransaction()) {\n      ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n    }\n  };\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component&apos;s state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @internal\n   */\n\n\n  ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n    if (this.transaction.isInTransaction()) {\n      ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n    } else {\n      warnNoop(publicInstance, &apos;forceUpdate&apos;);\n    }\n  };\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object|function} completeState Next state.\n   * @internal\n   */\n\n\n  ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n    if (this.transaction.isInTransaction()) {\n      ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n    } else {\n      warnNoop(publicInstance, &apos;replaceState&apos;);\n    }\n  };\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don&apos;t use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object|function} partialState Next partial state to be merged with state.\n   * @internal\n   */\n\n\n  ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n    if (this.transaction.isInTransaction()) {\n      ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n    } else {\n      warnNoop(publicInstance, &apos;setState&apos;);\n    }\n  };\n\n  return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactServerUpdateQueue.js\n// module id = 438\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nmodule.exports = &apos;15.5.4&apos;;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/ReactVersion.js\n// module id = 439\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar NS = {\n  xlink: &apos;http://www.w3.org/1999/xlink&apos;,\n  xml: &apos;http://www.w3.org/XML/1998/namespace&apos;\n};\n\n// We use attributes for everything SVG so let&apos;s avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n  accentHeight: &apos;accent-height&apos;,\n  accumulate: 0,\n  additive: 0,\n  alignmentBaseline: &apos;alignment-baseline&apos;,\n  allowReorder: &apos;allowReorder&apos;,\n  alphabetic: 0,\n  amplitude: 0,\n  arabicForm: &apos;arabic-form&apos;,\n  ascent: 0,\n  attributeName: &apos;attributeName&apos;,\n  attributeType: &apos;attributeType&apos;,\n  autoReverse: &apos;autoReverse&apos;,\n  azimuth: 0,\n  baseFrequency: &apos;baseFrequency&apos;,\n  baseProfile: &apos;baseProfile&apos;,\n  baselineShift: &apos;baseline-shift&apos;,\n  bbox: 0,\n  begin: 0,\n  bias: 0,\n  by: 0,\n  calcMode: &apos;calcMode&apos;,\n  capHeight: &apos;cap-height&apos;,\n  clip: 0,\n  clipPath: &apos;clip-path&apos;,\n  clipRule: &apos;clip-rule&apos;,\n  clipPathUnits: &apos;clipPathUnits&apos;,\n  colorInterpolation: &apos;color-interpolation&apos;,\n  colorInterpolationFilters: &apos;color-interpolation-filters&apos;,\n  colorProfile: &apos;color-profile&apos;,\n  colorRendering: &apos;color-rendering&apos;,\n  contentScriptType: &apos;contentScriptType&apos;,\n  contentStyleType: &apos;contentStyleType&apos;,\n  cursor: 0,\n  cx: 0,\n  cy: 0,\n  d: 0,\n  decelerate: 0,\n  descent: 0,\n  diffuseConstant: &apos;diffuseConstant&apos;,\n  direction: 0,\n  display: 0,\n  divisor: 0,\n  dominantBaseline: &apos;dominant-baseline&apos;,\n  dur: 0,\n  dx: 0,\n  dy: 0,\n  edgeMode: &apos;edgeMode&apos;,\n  elevation: 0,\n  enableBackground: &apos;enable-background&apos;,\n  end: 0,\n  exponent: 0,\n  externalResourcesRequired: &apos;externalResourcesRequired&apos;,\n  fill: 0,\n  fillOpacity: &apos;fill-opacity&apos;,\n  fillRule: &apos;fill-rule&apos;,\n  filter: 0,\n  filterRes: &apos;filterRes&apos;,\n  filterUnits: &apos;filterUnits&apos;,\n  floodColor: &apos;flood-color&apos;,\n  floodOpacity: &apos;flood-opacity&apos;,\n  focusable: 0,\n  fontFamily: &apos;font-family&apos;,\n  fontSize: &apos;font-size&apos;,\n  fontSizeAdjust: &apos;font-size-adjust&apos;,\n  fontStretch: &apos;font-stretch&apos;,\n  fontStyle: &apos;font-style&apos;,\n  fontVariant: &apos;font-variant&apos;,\n  fontWeight: &apos;font-weight&apos;,\n  format: 0,\n  from: 0,\n  fx: 0,\n  fy: 0,\n  g1: 0,\n  g2: 0,\n  glyphName: &apos;glyph-name&apos;,\n  glyphOrientationHorizontal: &apos;glyph-orientation-horizontal&apos;,\n  glyphOrientationVertical: &apos;glyph-orientation-vertical&apos;,\n  glyphRef: &apos;glyphRef&apos;,\n  gradientTransform: &apos;gradientTransform&apos;,\n  gradientUnits: &apos;gradientUnits&apos;,\n  hanging: 0,\n  horizAdvX: &apos;horiz-adv-x&apos;,\n  horizOriginX: &apos;horiz-origin-x&apos;,\n  ideographic: 0,\n  imageRendering: &apos;image-rendering&apos;,\n  &apos;in&apos;: 0,\n  in2: 0,\n  intercept: 0,\n  k: 0,\n  k1: 0,\n  k2: 0,\n  k3: 0,\n  k4: 0,\n  kernelMatrix: &apos;kernelMatrix&apos;,\n  kernelUnitLength: &apos;kernelUnitLength&apos;,\n  kerning: 0,\n  keyPoints: &apos;keyPoints&apos;,\n  keySplines: &apos;keySplines&apos;,\n  keyTimes: &apos;keyTimes&apos;,\n  lengthAdjust: &apos;lengthAdjust&apos;,\n  letterSpacing: &apos;letter-spacing&apos;,\n  lightingColor: &apos;lighting-color&apos;,\n  limitingConeAngle: &apos;limitingConeAngle&apos;,\n  local: 0,\n  markerEnd: &apos;marker-end&apos;,\n  markerMid: &apos;marker-mid&apos;,\n  markerStart: &apos;marker-start&apos;,\n  markerHeight: &apos;markerHeight&apos;,\n  markerUnits: &apos;markerUnits&apos;,\n  markerWidth: &apos;markerWidth&apos;,\n  mask: 0,\n  maskContentUnits: &apos;maskContentUnits&apos;,\n  maskUnits: &apos;maskUnits&apos;,\n  mathematical: 0,\n  mode: 0,\n  numOctaves: &apos;numOctaves&apos;,\n  offset: 0,\n  opacity: 0,\n  operator: 0,\n  order: 0,\n  orient: 0,\n  orientation: 0,\n  origin: 0,\n  overflow: 0,\n  overlinePosition: &apos;overline-position&apos;,\n  overlineThickness: &apos;overline-thickness&apos;,\n  paintOrder: &apos;paint-order&apos;,\n  panose1: &apos;panose-1&apos;,\n  pathLength: &apos;pathLength&apos;,\n  patternContentUnits: &apos;patternContentUnits&apos;,\n  patternTransform: &apos;patternTransform&apos;,\n  patternUnits: &apos;patternUnits&apos;,\n  pointerEvents: &apos;pointer-events&apos;,\n  points: 0,\n  pointsAtX: &apos;pointsAtX&apos;,\n  pointsAtY: &apos;pointsAtY&apos;,\n  pointsAtZ: &apos;pointsAtZ&apos;,\n  preserveAlpha: &apos;preserveAlpha&apos;,\n  preserveAspectRatio: &apos;preserveAspectRatio&apos;,\n  primitiveUnits: &apos;primitiveUnits&apos;,\n  r: 0,\n  radius: 0,\n  refX: &apos;refX&apos;,\n  refY: &apos;refY&apos;,\n  renderingIntent: &apos;rendering-intent&apos;,\n  repeatCount: &apos;repeatCount&apos;,\n  repeatDur: &apos;repeatDur&apos;,\n  requiredExtensions: &apos;requiredExtensions&apos;,\n  requiredFeatures: &apos;requiredFeatures&apos;,\n  restart: 0,\n  result: 0,\n  rotate: 0,\n  rx: 0,\n  ry: 0,\n  scale: 0,\n  seed: 0,\n  shapeRendering: &apos;shape-rendering&apos;,\n  slope: 0,\n  spacing: 0,\n  specularConstant: &apos;specularConstant&apos;,\n  specularExponent: &apos;specularExponent&apos;,\n  speed: 0,\n  spreadMethod: &apos;spreadMethod&apos;,\n  startOffset: &apos;startOffset&apos;,\n  stdDeviation: &apos;stdDeviation&apos;,\n  stemh: 0,\n  stemv: 0,\n  stitchTiles: &apos;stitchTiles&apos;,\n  stopColor: &apos;stop-color&apos;,\n  stopOpacity: &apos;stop-opacity&apos;,\n  strikethroughPosition: &apos;strikethrough-position&apos;,\n  strikethroughThickness: &apos;strikethrough-thickness&apos;,\n  string: 0,\n  stroke: 0,\n  strokeDasharray: &apos;stroke-dasharray&apos;,\n  strokeDashoffset: &apos;stroke-dashoffset&apos;,\n  strokeLinecap: &apos;stroke-linecap&apos;,\n  strokeLinejoin: &apos;stroke-linejoin&apos;,\n  strokeMiterlimit: &apos;stroke-miterlimit&apos;,\n  strokeOpacity: &apos;stroke-opacity&apos;,\n  strokeWidth: &apos;stroke-width&apos;,\n  surfaceScale: &apos;surfaceScale&apos;,\n  systemLanguage: &apos;systemLanguage&apos;,\n  tableValues: &apos;tableValues&apos;,\n  targetX: &apos;targetX&apos;,\n  targetY: &apos;targetY&apos;,\n  textAnchor: &apos;text-anchor&apos;,\n  textDecoration: &apos;text-decoration&apos;,\n  textRendering: &apos;text-rendering&apos;,\n  textLength: &apos;textLength&apos;,\n  to: 0,\n  transform: 0,\n  u1: 0,\n  u2: 0,\n  underlinePosition: &apos;underline-position&apos;,\n  underlineThickness: &apos;underline-thickness&apos;,\n  unicode: 0,\n  unicodeBidi: &apos;unicode-bidi&apos;,\n  unicodeRange: &apos;unicode-range&apos;,\n  unitsPerEm: &apos;units-per-em&apos;,\n  vAlphabetic: &apos;v-alphabetic&apos;,\n  vHanging: &apos;v-hanging&apos;,\n  vIdeographic: &apos;v-ideographic&apos;,\n  vMathematical: &apos;v-mathematical&apos;,\n  values: 0,\n  vectorEffect: &apos;vector-effect&apos;,\n  version: 0,\n  vertAdvY: &apos;vert-adv-y&apos;,\n  vertOriginX: &apos;vert-origin-x&apos;,\n  vertOriginY: &apos;vert-origin-y&apos;,\n  viewBox: &apos;viewBox&apos;,\n  viewTarget: &apos;viewTarget&apos;,\n  visibility: 0,\n  widths: 0,\n  wordSpacing: &apos;word-spacing&apos;,\n  writingMode: &apos;writing-mode&apos;,\n  x: 0,\n  xHeight: &apos;x-height&apos;,\n  x1: 0,\n  x2: 0,\n  xChannelSelector: &apos;xChannelSelector&apos;,\n  xlinkActuate: &apos;xlink:actuate&apos;,\n  xlinkArcrole: &apos;xlink:arcrole&apos;,\n  xlinkHref: &apos;xlink:href&apos;,\n  xlinkRole: &apos;xlink:role&apos;,\n  xlinkShow: &apos;xlink:show&apos;,\n  xlinkTitle: &apos;xlink:title&apos;,\n  xlinkType: &apos;xlink:type&apos;,\n  xmlBase: &apos;xml:base&apos;,\n  xmlns: 0,\n  xmlnsXlink: &apos;xmlns:xlink&apos;,\n  xmlLang: &apos;xml:lang&apos;,\n  xmlSpace: &apos;xml:space&apos;,\n  y: 0,\n  y1: 0,\n  y2: 0,\n  yChannelSelector: &apos;yChannelSelector&apos;,\n  z: 0,\n  zoomAndPan: &apos;zoomAndPan&apos;\n};\n\nvar SVGDOMPropertyConfig = {\n  Properties: {},\n  DOMAttributeNamespaces: {\n    xlinkActuate: NS.xlink,\n    xlinkArcrole: NS.xlink,\n    xlinkHref: NS.xlink,\n    xlinkRole: NS.xlink,\n    xlinkShow: NS.xlink,\n    xlinkTitle: NS.xlink,\n    xlinkType: NS.xlink,\n    xmlBase: NS.xml,\n    xmlLang: NS.xml,\n    xmlSpace: NS.xml\n  },\n  DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n  SVGDOMPropertyConfig.Properties[key] = 0;\n  if (ATTRS[key]) {\n    SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n  }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SVGDOMPropertyConfig.js\n// module id = 440\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar EventPropagators = require(&apos;./EventPropagators&apos;);\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactInputSelection = require(&apos;./ReactInputSelection&apos;);\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\nvar getActiveElement = require(&apos;fbjs/lib/getActiveElement&apos;);\nvar isTextInputElement = require(&apos;./isTextInputElement&apos;);\nvar shallowEqual = require(&apos;fbjs/lib/shallowEqual&apos;);\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM &amp;&amp; &apos;documentMode&apos; in document &amp;&amp; document.documentMode &lt;= 11;\n\nvar eventTypes = {\n  select: {\n    phasedRegistrationNames: {\n      bubbled: &apos;onSelect&apos;,\n      captured: &apos;onSelectCapture&apos;\n    },\n    dependencies: [&apos;topBlur&apos;, &apos;topContextMenu&apos;, &apos;topFocus&apos;, &apos;topKeyDown&apos;, &apos;topKeyUp&apos;, &apos;topMouseDown&apos;, &apos;topMouseUp&apos;, &apos;topSelectionChange&apos;]\n  }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n  if (&apos;selectionStart&apos; in node &amp;&amp; ReactInputSelection.hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else if (window.getSelection) {\n    var selection = window.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  } else if (document.selection) {\n    var range = document.selection.createRange();\n    return {\n      parentElement: range.parentElement(),\n      text: range.text,\n      top: range.boundingTop,\n      left: range.boundingLeft\n    };\n  }\n}\n\n/**\n * Poll selection to see whether it&apos;s changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there&apos;s no focused element we\n  // won&apos;t dispatch.\n  if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n    return null;\n  }\n\n  // Only fire when selection has actually changed.\n  var currentSelection = getSelection(activeElement);\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n\n    var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n    syntheticEvent.type = &apos;select&apos;;\n    syntheticEvent.target = activeElement;\n\n    EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n    return syntheticEvent;\n  }\n\n  return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    if (!hasListener) {\n      return null;\n    }\n\n    var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n    switch (topLevelType) {\n      // Track the input node that has focus.\n      case &apos;topFocus&apos;:\n        if (isTextInputElement(targetNode) || targetNode.contentEditable === &apos;true&apos;) {\n          activeElement = targetNode;\n          activeElementInst = targetInst;\n          lastSelection = null;\n        }\n        break;\n      case &apos;topBlur&apos;:\n        activeElement = null;\n        activeElementInst = null;\n        lastSelection = null;\n        break;\n\n      // Don&apos;t fire the event while the user is dragging. This matches the\n      // semantics of the native select event.\n      case &apos;topMouseDown&apos;:\n        mouseDown = true;\n        break;\n      case &apos;topContextMenu&apos;:\n      case &apos;topMouseUp&apos;:\n        mouseDown = false;\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n      // Chrome and IE fire non-standard event when selection is changed (and\n      // sometimes when it hasn&apos;t). IE&apos;s event fires out of order with respect\n      // to key and input events on deletion, so we discard it.\n      //\n      // Firefox doesn&apos;t support selectionchange, so check selection status\n      // after each key entry. The selection changes after keydown and before\n      // keyup, but we check on keydown as well in the case of holding down a\n      // key, when multiple keydown events are fired but only one keyup is.\n      // This is also our approach for IE handling, for the reason above.\n      case &apos;topSelectionChange&apos;:\n        if (skipSelectionChangeEvent) {\n          break;\n        }\n      // falls through\n      case &apos;topKeyDown&apos;:\n      case &apos;topKeyUp&apos;:\n        return constructSelectEvent(nativeEvent, nativeEventTarget);\n    }\n\n    return null;\n  },\n\n  didPutListener: function (inst, registrationName, listener) {\n    if (registrationName === &apos;onSelect&apos;) {\n      hasListener = true;\n    }\n  }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SelectEventPlugin.js\n// module id = 441\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar EventListener = require(&apos;fbjs/lib/EventListener&apos;);\nvar EventPropagators = require(&apos;./EventPropagators&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar SyntheticAnimationEvent = require(&apos;./SyntheticAnimationEvent&apos;);\nvar SyntheticClipboardEvent = require(&apos;./SyntheticClipboardEvent&apos;);\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\nvar SyntheticFocusEvent = require(&apos;./SyntheticFocusEvent&apos;);\nvar SyntheticKeyboardEvent = require(&apos;./SyntheticKeyboardEvent&apos;);\nvar SyntheticMouseEvent = require(&apos;./SyntheticMouseEvent&apos;);\nvar SyntheticDragEvent = require(&apos;./SyntheticDragEvent&apos;);\nvar SyntheticTouchEvent = require(&apos;./SyntheticTouchEvent&apos;);\nvar SyntheticTransitionEvent = require(&apos;./SyntheticTransitionEvent&apos;);\nvar SyntheticUIEvent = require(&apos;./SyntheticUIEvent&apos;);\nvar SyntheticWheelEvent = require(&apos;./SyntheticWheelEvent&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar getEventCharCode = require(&apos;./getEventCharCode&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Turns\n * [&apos;abort&apos;, ...]\n * into\n * eventTypes = {\n *   &apos;abort&apos;: {\n *     phasedRegistrationNames: {\n *       bubbled: &apos;onAbort&apos;,\n *       captured: &apos;onAbortCapture&apos;,\n *     },\n *     dependencies: [&apos;topAbort&apos;],\n *   },\n *   ...\n * };\n * topLevelEventsToDispatchConfig = {\n *   &apos;topAbort&apos;: { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n[&apos;abort&apos;, &apos;animationEnd&apos;, &apos;animationIteration&apos;, &apos;animationStart&apos;, &apos;blur&apos;, &apos;canPlay&apos;, &apos;canPlayThrough&apos;, &apos;click&apos;, &apos;contextMenu&apos;, &apos;copy&apos;, &apos;cut&apos;, &apos;doubleClick&apos;, &apos;drag&apos;, &apos;dragEnd&apos;, &apos;dragEnter&apos;, &apos;dragExit&apos;, &apos;dragLeave&apos;, &apos;dragOver&apos;, &apos;dragStart&apos;, &apos;drop&apos;, &apos;durationChange&apos;, &apos;emptied&apos;, &apos;encrypted&apos;, &apos;ended&apos;, &apos;error&apos;, &apos;focus&apos;, &apos;input&apos;, &apos;invalid&apos;, &apos;keyDown&apos;, &apos;keyPress&apos;, &apos;keyUp&apos;, &apos;load&apos;, &apos;loadedData&apos;, &apos;loadedMetadata&apos;, &apos;loadStart&apos;, &apos;mouseDown&apos;, &apos;mouseMove&apos;, &apos;mouseOut&apos;, &apos;mouseOver&apos;, &apos;mouseUp&apos;, &apos;paste&apos;, &apos;pause&apos;, &apos;play&apos;, &apos;playing&apos;, &apos;progress&apos;, &apos;rateChange&apos;, &apos;reset&apos;, &apos;scroll&apos;, &apos;seeked&apos;, &apos;seeking&apos;, &apos;stalled&apos;, &apos;submit&apos;, &apos;suspend&apos;, &apos;timeUpdate&apos;, &apos;touchCancel&apos;, &apos;touchEnd&apos;, &apos;touchMove&apos;, &apos;touchStart&apos;, &apos;transitionEnd&apos;, &apos;volumeChange&apos;, &apos;waiting&apos;, &apos;wheel&apos;].forEach(function (event) {\n  var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n  var onEvent = &apos;on&apos; + capitalizedEvent;\n  var topEvent = &apos;top&apos; + capitalizedEvent;\n\n  var type = {\n    phasedRegistrationNames: {\n      bubbled: onEvent,\n      captured: onEvent + &apos;Capture&apos;\n    },\n    dependencies: [topEvent]\n  };\n  eventTypes[event] = type;\n  topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n  // Prevents V8 performance issue:\n  // https://github.com/facebook/react/pull/7232\n  return &apos;.&apos; + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n  return tag === &apos;button&apos; || tag === &apos;input&apos; || tag === &apos;select&apos; || tag === &apos;textarea&apos;;\n}\n\nvar SimpleEventPlugin = {\n\n  eventTypes: eventTypes,\n\n  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n    var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n    if (!dispatchConfig) {\n      return null;\n    }\n    var EventConstructor;\n    switch (topLevelType) {\n      case &apos;topAbort&apos;:\n      case &apos;topCanPlay&apos;:\n      case &apos;topCanPlayThrough&apos;:\n      case &apos;topDurationChange&apos;:\n      case &apos;topEmptied&apos;:\n      case &apos;topEncrypted&apos;:\n      case &apos;topEnded&apos;:\n      case &apos;topError&apos;:\n      case &apos;topInput&apos;:\n      case &apos;topInvalid&apos;:\n      case &apos;topLoad&apos;:\n      case &apos;topLoadedData&apos;:\n      case &apos;topLoadedMetadata&apos;:\n      case &apos;topLoadStart&apos;:\n      case &apos;topPause&apos;:\n      case &apos;topPlay&apos;:\n      case &apos;topPlaying&apos;:\n      case &apos;topProgress&apos;:\n      case &apos;topRateChange&apos;:\n      case &apos;topReset&apos;:\n      case &apos;topSeeked&apos;:\n      case &apos;topSeeking&apos;:\n      case &apos;topStalled&apos;:\n      case &apos;topSubmit&apos;:\n      case &apos;topSuspend&apos;:\n      case &apos;topTimeUpdate&apos;:\n      case &apos;topVolumeChange&apos;:\n      case &apos;topWaiting&apos;:\n        // HTML Events\n        // @see http://www.w3.org/TR/html5/index.html#events-0\n        EventConstructor = SyntheticEvent;\n        break;\n      case &apos;topKeyPress&apos;:\n        // Firefox creates a keypress event for function keys too. This removes\n        // the unwanted keypress events. Enter is however both printable and\n        // non-printable. One would expect Tab to be as well (but it isn&apos;t).\n        if (getEventCharCode(nativeEvent) === 0) {\n          return null;\n        }\n      /* falls through */\n      case &apos;topKeyDown&apos;:\n      case &apos;topKeyUp&apos;:\n        EventConstructor = SyntheticKeyboardEvent;\n        break;\n      case &apos;topBlur&apos;:\n      case &apos;topFocus&apos;:\n        EventConstructor = SyntheticFocusEvent;\n        break;\n      case &apos;topClick&apos;:\n        // Firefox creates a click event on right mouse clicks. This removes the\n        // unwanted click events.\n        if (nativeEvent.button === 2) {\n          return null;\n        }\n      /* falls through */\n      case &apos;topDoubleClick&apos;:\n      case &apos;topMouseDown&apos;:\n      case &apos;topMouseMove&apos;:\n      case &apos;topMouseUp&apos;:\n      // TODO: Disabled elements should not respond to mouse events\n      /* falls through */\n      case &apos;topMouseOut&apos;:\n      case &apos;topMouseOver&apos;:\n      case &apos;topContextMenu&apos;:\n        EventConstructor = SyntheticMouseEvent;\n        break;\n      case &apos;topDrag&apos;:\n      case &apos;topDragEnd&apos;:\n      case &apos;topDragEnter&apos;:\n      case &apos;topDragExit&apos;:\n      case &apos;topDragLeave&apos;:\n      case &apos;topDragOver&apos;:\n      case &apos;topDragStart&apos;:\n      case &apos;topDrop&apos;:\n        EventConstructor = SyntheticDragEvent;\n        break;\n      case &apos;topTouchCancel&apos;:\n      case &apos;topTouchEnd&apos;:\n      case &apos;topTouchMove&apos;:\n      case &apos;topTouchStart&apos;:\n        EventConstructor = SyntheticTouchEvent;\n        break;\n      case &apos;topAnimationEnd&apos;:\n      case &apos;topAnimationIteration&apos;:\n      case &apos;topAnimationStart&apos;:\n        EventConstructor = SyntheticAnimationEvent;\n        break;\n      case &apos;topTransitionEnd&apos;:\n        EventConstructor = SyntheticTransitionEvent;\n        break;\n      case &apos;topScroll&apos;:\n        EventConstructor = SyntheticUIEvent;\n        break;\n      case &apos;topWheel&apos;:\n        EventConstructor = SyntheticWheelEvent;\n        break;\n      case &apos;topCopy&apos;:\n      case &apos;topCut&apos;:\n      case &apos;topPaste&apos;:\n        EventConstructor = SyntheticClipboardEvent;\n        break;\n    }\n    !EventConstructor ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;SimpleEventPlugin: Unhandled event type, `%s`.&apos;, topLevelType) : _prodInvariant(&apos;86&apos;, topLevelType) : void 0;\n    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n    EventPropagators.accumulateTwoPhaseDispatches(event);\n    return event;\n  },\n\n  didPutListener: function (inst, registrationName, listener) {\n    // Mobile Safari does not fire properly bubble click events on\n    // non-interactive elements, which means delegated click listeners do not\n    // fire. The workaround for this bug involves attaching an empty click\n    // listener on the target node.\n    // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n    if (registrationName === &apos;onClick&apos; &amp;&amp; !isInteractive(inst._tag)) {\n      var key = getDictionaryKey(inst);\n      var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n      if (!onClickListeners[key]) {\n        onClickListeners[key] = EventListener.listen(node, &apos;click&apos;, emptyFunction);\n      }\n    }\n  },\n\n  willDeleteListener: function (inst, registrationName) {\n    if (registrationName === &apos;onClick&apos; &amp;&amp; !isInteractive(inst._tag)) {\n      var key = getDictionaryKey(inst);\n      onClickListeners[key].remove();\n      delete onClickListeners[key];\n    }\n  }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SimpleEventPlugin.js\n// module id = 442\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n  animationName: null,\n  elapsedTime: null,\n  pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticAnimationEvent.js\n// module id = 443\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n  clipboardData: function (event) {\n    return &apos;clipboardData&apos; in event ? event.clipboardData : window.clipboardData;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticClipboardEvent.js\n// module id = 444\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n  data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticCompositionEvent.js\n// module id = 445\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticMouseEvent = require(&apos;./SyntheticMouseEvent&apos;);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n  dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticDragEvent.js\n// module id = 446\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticUIEvent = require(&apos;./SyntheticUIEvent&apos;);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n  relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticFocusEvent.js\n// module id = 447\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\nvar InputEventInterface = {\n  data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticInputEvent.js\n// module id = 448\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticUIEvent = require(&apos;./SyntheticUIEvent&apos;);\n\nvar getEventCharCode = require(&apos;./getEventCharCode&apos;);\nvar getEventKey = require(&apos;./getEventKey&apos;);\nvar getEventModifierState = require(&apos;./getEventModifierState&apos;);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n  key: getEventKey,\n  location: null,\n  ctrlKey: null,\n  shiftKey: null,\n  altKey: null,\n  metaKey: null,\n  repeat: null,\n  locale: null,\n  getModifierState: getEventModifierState,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === &apos;keypress&apos;) {\n      return getEventCharCode(event);\n    }\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n\n    // The actual meaning of the value depends on the users&apos; keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === &apos;keydown&apos; || event.type === &apos;keyup&apos;) {\n      return event.keyCode;\n    }\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === &apos;keypress&apos;) {\n      return getEventCharCode(event);\n    }\n    if (event.type === &apos;keydown&apos; || event.type === &apos;keyup&apos;) {\n      return event.keyCode;\n    }\n    return 0;\n  }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticKeyboardEvent.js\n// module id = 449\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticUIEvent = require(&apos;./SyntheticUIEvent&apos;);\n\nvar getEventModifierState = require(&apos;./getEventModifierState&apos;);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n  touches: null,\n  targetTouches: null,\n  changedTouches: null,\n  altKey: null,\n  metaKey: null,\n  ctrlKey: null,\n  shiftKey: null,\n  getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticTouchEvent.js\n// module id = 450\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticEvent = require(&apos;./SyntheticEvent&apos;);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n  propertyName: null,\n  elapsedTime: null,\n  pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticTransitionEvent.js\n// module id = 451\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar SyntheticMouseEvent = require(&apos;./SyntheticMouseEvent&apos;);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n  deltaX: function (event) {\n    return &apos;deltaX&apos; in event ? event.deltaX :\n    // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    &apos;wheelDeltaX&apos; in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return &apos;deltaY&apos; in event ? event.deltaY :\n    // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    &apos;wheelDeltaY&apos; in event ? -event.wheelDeltaY :\n    // Fallback to `wheelDelta` for IE&lt;9 and normalize (down is positive).\n    &apos;wheelDelta&apos; in event ? -event.wheelDelta : 0;\n  },\n  deltaZ: null,\n\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // &#126;40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n  return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/SyntheticWheelEvent.js\n// module id = 452\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n  var a = 1;\n  var b = 0;\n  var i = 0;\n  var l = data.length;\n  var m = l &amp; &#126;0x3;\n  while (i &lt; m) {\n    var n = Math.min(i + 4096, m);\n    for (; i &lt; n; i += 4) {\n      b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n    }\n    a %= MOD;\n    b %= MOD;\n  }\n  for (; i &lt; l; i++) {\n    b += a += data.charCodeAt(i);\n  }\n  a %= MOD;\n  b %= MOD;\n  return a | b &lt;&lt; 16;\n}\n\nmodule.exports = adler32;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/adler32.js\n// module id = 453\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactPropTypeLocationNames = require(&apos;./ReactPropTypeLocationNames&apos;);\nvar ReactPropTypesSecret = require(&apos;./ReactPropTypesSecret&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; process.env.NODE_ENV === &apos;test&apos;) {\n  // Temporary hack.\n  // Inline requires don&apos;t work well with Jest:\n  // https://github.com/facebook/react/issues/7240\n  // Remove the inline requires when we don&apos;t need them anymore:\n  // https://github.com/facebook/react/pull/7178\n  ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n}\n\nvar loggedTypeFailures = {};\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?object} element The React element that is being type-checked\n * @param {?number} debugID The React component instance that is being type-checked\n * @private\n */\nfunction checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {\n  for (var typeSpecName in typeSpecs) {\n    if (typeSpecs.hasOwnProperty(typeSpecName)) {\n      var error;\n      // Prop type validation may throw. In case they do, we don&apos;t want to\n      // fail the render phase where it didn&apos;t fail before. So we log it.\n      // After these have been cleaned up, we&apos;ll let them throw.\n      try {\n        // This is intentionally an invariant that gets caught. It&apos;s the same\n        // behavior as without this statement except with a better message.\n        !(typeof typeSpecs[typeSpecName] === &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant(&apos;84&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : void 0;\n        error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n      } catch (ex) {\n        error = ex;\n      }\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;\n      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {\n        // Only monitor this failure once because there tends to be a lot of the\n        // same error.\n        loggedTypeFailures[error.message] = true;\n\n        var componentStackInfo = &apos;&apos;;\n\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          if (!ReactComponentTreeHook) {\n            ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n          }\n          if (debugID !== null) {\n            componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);\n          } else if (element !== null) {\n            componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);\n          }\n        }\n\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, componentStackInfo) : void 0;\n      }\n    }\n  }\n}\n\nmodule.exports = checkReactTypeSpec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/checkReactTypeSpec.js\n// module id = 454\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar CSSProperty = require(&apos;./CSSProperty&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n  // Note that we&apos;ve removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn&apos;t repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we&apos;re going to\n  // trust URLs moving forward. See #2115901\n\n  var isEmpty = value == null || typeof value === &apos;boolean&apos; || value === &apos;&apos;;\n  if (isEmpty) {\n    return &apos;&apos;;\n  }\n\n  var isNonNumeric = isNaN(value);\n  if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) &amp;&amp; isUnitlessNumber[name]) {\n    return &apos;&apos; + value; // cast to string\n  }\n\n  if (typeof value === &apos;string&apos;) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      // Allow &apos;0&apos; to pass through without warning. 0 is already special and\n      // doesn&apos;t require units, so we don&apos;t need to warn about it.\n      if (component &amp;&amp; value !== &apos;0&apos;) {\n        var owner = component._currentElement._owner;\n        var ownerName = owner ? owner.getName() : null;\n        if (ownerName &amp;&amp; !styleWarnings[ownerName]) {\n          styleWarnings[ownerName] = {};\n        }\n        var warned = false;\n        if (ownerName) {\n          var warnings = styleWarnings[ownerName];\n          warned = warnings[name];\n          if (!warned) {\n            warnings[name] = true;\n          }\n        }\n        if (!warned) {\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;a `%s` tag (owner: `%s`) was passed a numeric string value &apos; + &apos;for CSS property `%s` (value: `%s`) which will be treated &apos; + &apos;as a unitless number in a future version of React.&apos;, component._currentElement.type, ownerName || &apos;unknown&apos;, name, value) : void 0;\n        }\n      }\n    }\n    value = value.trim();\n  }\n  return value + &apos;px&apos;;\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/dangerousStyleValue.js\n// module id = 455\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactCurrentOwner = require(&apos;react/lib/ReactCurrentOwner&apos;);\nvar ReactDOMComponentTree = require(&apos;./ReactDOMComponentTree&apos;);\nvar ReactInstanceMap = require(&apos;./ReactInstanceMap&apos;);\n\nvar getHostComponentFromComposite = require(&apos;./getHostComponentFromComposite&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    var owner = ReactCurrentOwner.current;\n    if (owner !== null) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(owner._warnedAboutRefsInRender, &apos;%s is accessing findDOMNode inside its render(). &apos; + &apos;render() should be a pure function of props and state. It should &apos; + &apos;never access something that requires stale data from the previous &apos; + &apos;render, such as refs. Move this logic to componentDidMount and &apos; + &apos;componentDidUpdate instead.&apos;, owner.getName() || &apos;A component&apos;) : void 0;\n      owner._warnedAboutRefsInRender = true;\n    }\n  }\n  if (componentOrElement == null) {\n    return null;\n  }\n  if (componentOrElement.nodeType === 1) {\n    return componentOrElement;\n  }\n\n  var inst = ReactInstanceMap.get(componentOrElement);\n  if (inst) {\n    inst = getHostComponentFromComposite(inst);\n    return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n  }\n\n  if (typeof componentOrElement.render === &apos;function&apos;) {\n    !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;findDOMNode was called on an unmounted component.&apos;) : _prodInvariant(&apos;44&apos;) : void 0;\n  } else {\n    !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Element appears to be neither ReactComponent nor DOMNode (keys: %s)&apos;, Object.keys(componentOrElement)) : _prodInvariant(&apos;45&apos;, Object.keys(componentOrElement)) : void 0;\n  }\n}\n\nmodule.exports = findDOMNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/findDOMNode.js\n// module id = 456\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar KeyEscapeUtils = require(&apos;./KeyEscapeUtils&apos;);\nvar traverseAllChildren = require(&apos;./traverseAllChildren&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; process.env.NODE_ENV === &apos;test&apos;) {\n  // Temporary hack.\n  // Inline requires don&apos;t work well with Jest:\n  // https://github.com/facebook/react/issues/7240\n  // Remove the inline requires when we don&apos;t need them anymore:\n  // https://github.com/facebook/react/pull/7178\n  ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n  // We found a component instance.\n  if (traverseContext &amp;&amp; typeof traverseContext === &apos;object&apos;) {\n    var result = traverseContext;\n    var keyUnique = result[name] === undefined;\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      if (!ReactComponentTreeHook) {\n        ReactComponentTreeHook = require(&apos;react/lib/ReactComponentTreeHook&apos;);\n      }\n      if (!keyUnique) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;flattenChildren(...): Encountered two children with the same key, &apos; + &apos;`%s`. Child keys must be unique; when two children share a key, only &apos; + &apos;the first child will be used.%s&apos;, KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n      }\n    }\n    if (keyUnique &amp;&amp; child != null) {\n      result[name] = child;\n    }\n  }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n  if (children == null) {\n    return children;\n  }\n  var result = {};\n\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    traverseAllChildren(children, function (traverseContext, child, name) {\n      return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n    }, result);\n  } else {\n    traverseAllChildren(children, flattenSingleChildIntoContext, result);\n  }\n  return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/flattenChildren.js\n// module id = 457\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar getEventCharCode = require(&apos;./getEventCharCode&apos;);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n  &apos;Esc&apos;: &apos;Escape&apos;,\n  &apos;Spacebar&apos;: &apos; &apos;,\n  &apos;Left&apos;: &apos;ArrowLeft&apos;,\n  &apos;Up&apos;: &apos;ArrowUp&apos;,\n  &apos;Right&apos;: &apos;ArrowRight&apos;,\n  &apos;Down&apos;: &apos;ArrowDown&apos;,\n  &apos;Del&apos;: &apos;Delete&apos;,\n  &apos;Win&apos;: &apos;OS&apos;,\n  &apos;Menu&apos;: &apos;ContextMenu&apos;,\n  &apos;Apps&apos;: &apos;ContextMenu&apos;,\n  &apos;Scroll&apos;: &apos;ScrollLock&apos;,\n  &apos;MozPrintableKey&apos;: &apos;Unidentified&apos;\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n  8: &apos;Backspace&apos;,\n  9: &apos;Tab&apos;,\n  12: &apos;Clear&apos;,\n  13: &apos;Enter&apos;,\n  16: &apos;Shift&apos;,\n  17: &apos;Control&apos;,\n  18: &apos;Alt&apos;,\n  19: &apos;Pause&apos;,\n  20: &apos;CapsLock&apos;,\n  27: &apos;Escape&apos;,\n  32: &apos; &apos;,\n  33: &apos;PageUp&apos;,\n  34: &apos;PageDown&apos;,\n  35: &apos;End&apos;,\n  36: &apos;Home&apos;,\n  37: &apos;ArrowLeft&apos;,\n  38: &apos;ArrowUp&apos;,\n  39: &apos;ArrowRight&apos;,\n  40: &apos;ArrowDown&apos;,\n  45: &apos;Insert&apos;,\n  46: &apos;Delete&apos;,\n  112: &apos;F1&apos;, 113: &apos;F2&apos;, 114: &apos;F3&apos;, 115: &apos;F4&apos;, 116: &apos;F5&apos;, 117: &apos;F6&apos;,\n  118: &apos;F7&apos;, 119: &apos;F8&apos;, 120: &apos;F9&apos;, 121: &apos;F10&apos;, 122: &apos;F11&apos;, 123: &apos;F12&apos;,\n  144: &apos;NumLock&apos;,\n  145: &apos;ScrollLock&apos;,\n  224: &apos;Meta&apos;\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n    if (key !== &apos;Unidentified&apos;) {\n      return key;\n    }\n  }\n\n  // Browser does not implement `key`, polyfill as much of it as we can.\n  if (nativeEvent.type === &apos;keypress&apos;) {\n    var charCode = getEventCharCode(nativeEvent);\n\n    // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n    return charCode === 13 ? &apos;Enter&apos; : String.fromCharCode(charCode);\n  }\n  if (nativeEvent.type === &apos;keydown&apos; || nativeEvent.type === &apos;keyup&apos;) {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || &apos;Unidentified&apos;;\n  }\n  return &apos;&apos;;\n}\n\nmodule.exports = getEventKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getEventKey.js\n// module id = 458\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === &apos;function&apos; &amp;&amp; Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = &apos;@@iterator&apos;; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n *     var iteratorFn = getIteratorFn(myIterable);\n *     if (iteratorFn) {\n *       var iterator = iteratorFn.call(myIterable);\n *       ...\n *     }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n  var iteratorFn = maybeIterable &amp;&amp; (ITERATOR_SYMBOL &amp;&amp; maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n  if (typeof iteratorFn === &apos;function&apos;) {\n    return iteratorFn;\n  }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getIteratorFn.js\n// module id = 459\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n  while (node &amp;&amp; node.firstChild) {\n    node = node.firstChild;\n  }\n  return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node&apos;s siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n    node = node.parentNode;\n  }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === 3) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart &lt;= offset &amp;&amp; nodeEnd &gt;= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getNodeForCharacterOffset.js\n// module id = 460\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ExecutionEnvironment = require(&apos;fbjs/lib/ExecutionEnvironment&apos;);\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[&apos;Webkit&apos; + styleProp] = &apos;webkit&apos; + eventName;\n  prefixes[&apos;Moz&apos; + styleProp] = &apos;moz&apos; + eventName;\n  prefixes[&apos;ms&apos; + styleProp] = &apos;MS&apos; + eventName;\n  prefixes[&apos;O&apos; + styleProp] = &apos;o&apos; + eventName.toLowerCase();\n\n  return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n  animationend: makePrefixMap(&apos;Animation&apos;, &apos;AnimationEnd&apos;),\n  animationiteration: makePrefixMap(&apos;Animation&apos;, &apos;AnimationIteration&apos;),\n  animationstart: makePrefixMap(&apos;Animation&apos;, &apos;AnimationStart&apos;),\n  transitionend: makePrefixMap(&apos;Transition&apos;, &apos;TransitionEnd&apos;)\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n  style = document.createElement(&apos;div&apos;).style;\n\n  // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n  if (!(&apos;AnimationEvent&apos; in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  }\n\n  // Same as above\n  if (!(&apos;TransitionEvent&apos; in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) &amp;&amp; styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return &apos;&apos;;\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/getVendorPrefixedEventName.js\n// module id = 461\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar escapeTextContentForBrowser = require(&apos;./escapeTextContentForBrowser&apos;);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n  return &apos;\"&apos; + escapeTextContentForBrowser(value) + &apos;\"&apos;;\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/quoteAttributeValueForBrowser.js\n// module id = 462\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactMount = require(&apos;./ReactMount&apos;);\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react-dom/lib/renderSubtreeIntoContainer.js\n// module id = 463\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    &apos;=&apos;: &apos;=0&apos;,\n    &apos;:&apos;: &apos;=2&apos;\n  };\n  var escapedString = (&apos;&apos; + key).replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n\n  return &apos;$&apos; + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n  var unescapeRegex = /(=0|=2)/g;\n  var unescaperLookup = {\n    &apos;=0&apos;: &apos;=&apos;,\n    &apos;=2&apos;: &apos;:&apos;\n  };\n  var keySubstring = key[0] === &apos;.&apos; &amp;&amp; key[1] === &apos;$&apos; ? key.substring(2) : key.substring(1);\n\n  return (&apos;&apos; + keySubstring).replace(unescapeRegex, function (match) {\n    return unescaperLookup[match];\n  });\n}\n\nvar KeyEscapeUtils = {\n  escape: escape,\n  unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/KeyEscapeUtils.js\n// module id = 485\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, copyFieldsFrom);\n    return instance;\n  } else {\n    return new Klass(copyFieldsFrom);\n  }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2);\n    return instance;\n  } else {\n    return new Klass(a1, a2);\n  }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3);\n  }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n  var Klass = this;\n  if (Klass.instancePool.length) {\n    var instance = Klass.instancePool.pop();\n    Klass.call(instance, a1, a2, a3, a4);\n    return instance;\n  } else {\n    return new Klass(a1, a2, a3, a4);\n  }\n};\n\nvar standardReleaser = function (instance) {\n  var Klass = this;\n  !(instance instanceof Klass) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Trying to release an instance into a pool of a different type.&apos;) : _prodInvariant(&apos;25&apos;) : void 0;\n  instance.destructor();\n  if (Klass.instancePool.length &lt; Klass.poolSize) {\n    Klass.instancePool.push(instance);\n  }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n  // Casting as any so that flow ignores the actual implementation and trusts\n  // it to match the type we declared\n  var NewKlass = CopyConstructor;\n  NewKlass.instancePool = [];\n  NewKlass.getPooled = pooler || DEFAULT_POOLER;\n  if (!NewKlass.poolSize) {\n    NewKlass.poolSize = DEFAULT_POOL_SIZE;\n  }\n  NewKlass.release = standardReleaser;\n  return NewKlass;\n};\n\nvar PooledClass = {\n  addPoolingTo: addPoolingTo,\n  oneArgumentPooler: oneArgumentPooler,\n  twoArgumentPooler: twoArgumentPooler,\n  threeArgumentPooler: threeArgumentPooler,\n  fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/PooledClass.js\n// module id = 486\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar PooledClass = require(&apos;./PooledClass&apos;);\nvar ReactElement = require(&apos;./ReactElement&apos;);\n\nvar emptyFunction = require(&apos;fbjs/lib/emptyFunction&apos;);\nvar traverseAllChildren = require(&apos;./traverseAllChildren&apos;);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n  return (&apos;&apos; + text).replace(userProvidedKeyEscapeRegex, &apos;$&amp;/&apos;);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n  this.func = forEachFunction;\n  this.context = forEachContext;\n  this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n  this.func = null;\n  this.context = null;\n  this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n  var func = bookKeeping.func,\n      context = bookKeeping.context;\n\n  func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  if (children == null) {\n    return children;\n  }\n  var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n  traverseAllChildren(children, forEachSingleChild, traverseContext);\n  ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n  this.result = mapResult;\n  this.keyPrefix = keyPrefix;\n  this.func = mapFunction;\n  this.context = mapContext;\n  this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n  this.result = null;\n  this.keyPrefix = null;\n  this.func = null;\n  this.context = null;\n  this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n  var result = bookKeeping.result,\n      keyPrefix = bookKeeping.keyPrefix,\n      func = bookKeeping.func,\n      context = bookKeeping.context;\n\n\n  var mappedChild = func.call(context, child, bookKeeping.count++);\n  if (Array.isArray(mappedChild)) {\n    mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n  } else if (mappedChild != null) {\n    if (ReactElement.isValidElement(mappedChild)) {\n      mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n      // Keep both the (mapped) and old keys if they differ, just as\n      // traverseAllChildren used to do for objects as children\n      keyPrefix + (mappedChild.key &amp;&amp; (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + &apos;/&apos; : &apos;&apos;) + childKey);\n    }\n    result.push(mappedChild);\n  }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n  var escapedPrefix = &apos;&apos;;\n  if (prefix != null) {\n    escapedPrefix = escapeUserProvidedKey(prefix) + &apos;/&apos;;\n  }\n  var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n  traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n  MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n  return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n  return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n  return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n  var result = [];\n  mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n  return result;\n}\n\nvar ReactChildren = {\n  forEach: forEachChildren,\n  map: mapChildren,\n  mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n  count: countChildren,\n  toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactChildren.js\n// module id = 487\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;),\n    _assign = require(&apos;object-assign&apos;);\n\nvar ReactComponent = require(&apos;./ReactComponent&apos;);\nvar ReactElement = require(&apos;./ReactElement&apos;);\nvar ReactPropTypeLocationNames = require(&apos;./ReactPropTypeLocationNames&apos;);\nvar ReactNoopUpdateQueue = require(&apos;./ReactNoopUpdateQueue&apos;);\n\nvar emptyObject = require(&apos;fbjs/lib/emptyObject&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar MIXINS_KEY = &apos;mixins&apos;;\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n  return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n *   var MyComponent = React.createClass({\n *     render: function() {\n *       return &lt;div&gt;Hello World&lt;/div&gt;;\n *     }\n *   });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n  /**\n   * An array of Mixin objects to include when defining your component.\n   *\n   * @type {array}\n   * @optional\n   */\n  mixins: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * An object containing properties and methods that should be defined on\n   * the component&apos;s constructor instead of its prototype (static methods).\n   *\n   * @type {object}\n   * @optional\n   */\n  statics: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Definition of prop types for this component.\n   *\n   * @type {object}\n   * @optional\n   */\n  propTypes: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Definition of context types for this component.\n   *\n   * @type {object}\n   * @optional\n   */\n  contextTypes: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Definition of context types this component sets for its children.\n   *\n   * @type {object}\n   * @optional\n   */\n  childContextTypes: &apos;DEFINE_MANY&apos;,\n\n  // ==== Definition methods ====\n\n  /**\n   * Invoked when the component is mounted. Values in the mapping will be set on\n   * `this.props` if that prop is not specified (i.e. using an `in` check).\n   *\n   * This method is invoked before `getInitialState` and therefore cannot rely\n   * on `this.state` or use `this.setState`.\n   *\n   * @return {object}\n   * @optional\n   */\n  getDefaultProps: &apos;DEFINE_MANY_MERGED&apos;,\n\n  /**\n   * Invoked once before the component is mounted. The return value will be used\n   * as the initial value of `this.state`.\n   *\n   *   getInitialState: function() {\n   *     return {\n   *       isOn: false,\n   *       fooBaz: new BazFoo()\n   *     }\n   *   }\n   *\n   * @return {object}\n   * @optional\n   */\n  getInitialState: &apos;DEFINE_MANY_MERGED&apos;,\n\n  /**\n   * @return {object}\n   * @optional\n   */\n  getChildContext: &apos;DEFINE_MANY_MERGED&apos;,\n\n  /**\n   * Uses props from `this.props` and state from `this.state` to render the\n   * structure of the component.\n   *\n   * No guarantees are made about when or how often this method is invoked, so\n   * it must not have side effects.\n   *\n   *   render: function() {\n   *     var name = this.props.name;\n   *     return &lt;div&gt;Hello, {name}!&lt;/div&gt;;\n   *   }\n   *\n   * @return {ReactComponent}\n   * @required\n   */\n  render: &apos;DEFINE_ONCE&apos;,\n\n  // ==== Delegate methods ====\n\n  /**\n   * Invoked when the component is initially created and about to be mounted.\n   * This may have side effects, but any external subscriptions or data created\n   * by this method must be cleaned up in `componentWillUnmount`.\n   *\n   * @optional\n   */\n  componentWillMount: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Invoked when the component has been mounted and has a DOM representation.\n   * However, there is no guarantee that the DOM node is in the document.\n   *\n   * Use this as an opportunity to operate on the DOM when the component has\n   * been mounted (initialized and rendered) for the first time.\n   *\n   * @param {DOMElement} rootNode DOM element representing the component.\n   * @optional\n   */\n  componentDidMount: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Invoked before the component receives new props.\n   *\n   * Use this as an opportunity to react to a prop transition by updating the\n   * state using `this.setState`. Current props are accessed via `this.props`.\n   *\n   *   componentWillReceiveProps: function(nextProps, nextContext) {\n   *     this.setState({\n   *       likesIncreasing: nextProps.likeCount &gt; this.props.likeCount\n   *     });\n   *   }\n   *\n   * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n   * transition may cause a state change, but the opposite is not true. If you\n   * need it, you are probably looking for `componentWillUpdate`.\n   *\n   * @param {object} nextProps\n   * @optional\n   */\n  componentWillReceiveProps: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Invoked while deciding if the component should be updated as a result of\n   * receiving new props, state and/or context.\n   *\n   * Use this as an opportunity to `return false` when you&apos;re certain that the\n   * transition to the new props/state/context will not require a component\n   * update.\n   *\n   *   shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n   *     return !equal(nextProps, this.props) ||\n   *       !equal(nextState, this.state) ||\n   *       !equal(nextContext, this.context);\n   *   }\n   *\n   * @param {object} nextProps\n   * @param {?object} nextState\n   * @param {?object} nextContext\n   * @return {boolean} True if the component should update.\n   * @optional\n   */\n  shouldComponentUpdate: &apos;DEFINE_ONCE&apos;,\n\n  /**\n   * Invoked when the component is about to update due to a transition from\n   * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n   * and `nextContext`.\n   *\n   * Use this as an opportunity to perform preparation before an update occurs.\n   *\n   * NOTE: You **cannot** use `this.setState()` in this method.\n   *\n   * @param {object} nextProps\n   * @param {?object} nextState\n   * @param {?object} nextContext\n   * @param {ReactReconcileTransaction} transaction\n   * @optional\n   */\n  componentWillUpdate: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Invoked when the component&apos;s DOM representation has been updated.\n   *\n   * Use this as an opportunity to operate on the DOM when the component has\n   * been updated.\n   *\n   * @param {object} prevProps\n   * @param {?object} prevState\n   * @param {?object} prevContext\n   * @param {DOMElement} rootNode DOM element representing the component.\n   * @optional\n   */\n  componentDidUpdate: &apos;DEFINE_MANY&apos;,\n\n  /**\n   * Invoked when the component is about to be removed from its parent and have\n   * its DOM representation destroyed.\n   *\n   * Use this as an opportunity to deallocate any external resources.\n   *\n   * NOTE: There is no `componentDidUnmount` since your component will have been\n   * destroyed by that point.\n   *\n   * @optional\n   */\n  componentWillUnmount: &apos;DEFINE_MANY&apos;,\n\n  // ==== Advanced methods ====\n\n  /**\n   * Updates the component&apos;s currently mounted DOM representation.\n   *\n   * By default, this implements React&apos;s rendering and reconciliation algorithm.\n   * Sophisticated clients may wish to override this.\n   *\n   * @param {ReactReconcileTransaction} transaction\n   * @internal\n   * @overridable\n   */\n  updateComponent: &apos;OVERRIDE_BASE&apos;\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n  displayName: function (Constructor, displayName) {\n    Constructor.displayName = displayName;\n  },\n  mixins: function (Constructor, mixins) {\n    if (mixins) {\n      for (var i = 0; i &lt; mixins.length; i++) {\n        mixSpecIntoComponent(Constructor, mixins[i]);\n      }\n    }\n  },\n  childContextTypes: function (Constructor, childContextTypes) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      validateTypeDef(Constructor, childContextTypes, &apos;childContext&apos;);\n    }\n    Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n  },\n  contextTypes: function (Constructor, contextTypes) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      validateTypeDef(Constructor, contextTypes, &apos;context&apos;);\n    }\n    Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n  },\n  /**\n   * Special case getDefaultProps which should move into statics but requires\n   * automatic merging.\n   */\n  getDefaultProps: function (Constructor, getDefaultProps) {\n    if (Constructor.getDefaultProps) {\n      Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n    } else {\n      Constructor.getDefaultProps = getDefaultProps;\n    }\n  },\n  propTypes: function (Constructor, propTypes) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      validateTypeDef(Constructor, propTypes, &apos;prop&apos;);\n    }\n    Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n  },\n  statics: function (Constructor, statics) {\n    mixStaticSpecIntoComponent(Constructor, statics);\n  },\n  autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n  for (var propName in typeDef) {\n    if (typeDef.hasOwnProperty(propName)) {\n      // use a warning instead of an invariant so components\n      // don&apos;t show up in prod but only in __DEV__\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(typeof typeDef[propName] === &apos;function&apos;, &apos;%s: %s type `%s` is invalid; it must be a function, usually from &apos; + &apos;React.PropTypes.&apos;, Constructor.displayName || &apos;ReactClass&apos;, ReactPropTypeLocationNames[location], propName) : void 0;\n    }\n  }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n  var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n  // Disallow overriding of base class methods unless explicitly allowed.\n  if (ReactClassMixin.hasOwnProperty(name)) {\n    !(specPolicy === &apos;OVERRIDE_BASE&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.&apos;, name) : _prodInvariant(&apos;73&apos;, name) : void 0;\n  }\n\n  // Disallow defining methods more than once unless explicitly allowed.\n  if (isAlreadyDefined) {\n    !(specPolicy === &apos;DEFINE_MANY&apos; || specPolicy === &apos;DEFINE_MANY_MERGED&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.&apos;, name) : _prodInvariant(&apos;74&apos;, name) : void 0;\n  }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n  if (!spec) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      var typeofSpec = typeof spec;\n      var isMixinValid = typeofSpec === &apos;object&apos; &amp;&amp; spec !== null;\n\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(isMixinValid, &apos;%s: You\\&apos;re attempting to include a mixin that is either null &apos; + &apos;or not an object. Check the mixins included by the component, &apos; + &apos;as well as any mixins they include themselves. &apos; + &apos;Expected object but got %s.&apos;, Constructor.displayName || &apos;ReactClass&apos;, spec === null ? null : typeofSpec) : void 0;\n    }\n\n    return;\n  }\n\n  !(typeof spec !== &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClass: You\\&apos;re attempting to use a component class or function as a mixin. Instead, just use a regular object.&apos;) : _prodInvariant(&apos;75&apos;) : void 0;\n  !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClass: You\\&apos;re attempting to use a component as a mixin. Instead, just use a regular object.&apos;) : _prodInvariant(&apos;76&apos;) : void 0;\n\n  var proto = Constructor.prototype;\n  var autoBindPairs = proto.__reactAutoBindPairs;\n\n  // By handling mixins before any other properties, we ensure the same\n  // chaining order is applied to methods with DEFINE_MANY policy, whether\n  // mixins are listed before or after these methods in the spec.\n  if (spec.hasOwnProperty(MIXINS_KEY)) {\n    RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n  }\n\n  for (var name in spec) {\n    if (!spec.hasOwnProperty(name)) {\n      continue;\n    }\n\n    if (name === MIXINS_KEY) {\n      // We have already handled mixins in a special case above.\n      continue;\n    }\n\n    var property = spec[name];\n    var isAlreadyDefined = proto.hasOwnProperty(name);\n    validateMethodOverride(isAlreadyDefined, name);\n\n    if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n      RESERVED_SPEC_KEYS[name](Constructor, property);\n    } else {\n      // Setup methods on prototype:\n      // The following member methods should not be automatically bound:\n      // 1. Expected ReactClass methods (in the \"interface\").\n      // 2. Overridden methods (that were mixed in).\n      var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n      var isFunction = typeof property === &apos;function&apos;;\n      var shouldAutoBind = isFunction &amp;&amp; !isReactClassMethod &amp;&amp; !isAlreadyDefined &amp;&amp; spec.autobind !== false;\n\n      if (shouldAutoBind) {\n        autoBindPairs.push(name, property);\n        proto[name] = property;\n      } else {\n        if (isAlreadyDefined) {\n          var specPolicy = ReactClassInterface[name];\n\n          // These cases should already be caught by validateMethodOverride.\n          !(isReactClassMethod &amp;&amp; (specPolicy === &apos;DEFINE_MANY_MERGED&apos; || specPolicy === &apos;DEFINE_MANY&apos;)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.&apos;, specPolicy, name) : _prodInvariant(&apos;77&apos;, specPolicy, name) : void 0;\n\n          // For methods which are defined more than once, call the existing\n          // methods before calling the new property, merging if appropriate.\n          if (specPolicy === &apos;DEFINE_MANY_MERGED&apos;) {\n            proto[name] = createMergedResultFunction(proto[name], property);\n          } else if (specPolicy === &apos;DEFINE_MANY&apos;) {\n            proto[name] = createChainedFunction(proto[name], property);\n          }\n        } else {\n          proto[name] = property;\n          if (process.env.NODE_ENV !== &apos;production&apos;) {\n            // Add verbose displayName to the function, which helps when looking\n            // at profiling tools.\n            if (typeof property === &apos;function&apos; &amp;&amp; spec.displayName) {\n              proto[name].displayName = spec.displayName + &apos;_&apos; + name;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n  if (!statics) {\n    return;\n  }\n  for (var name in statics) {\n    var property = statics[name];\n    if (!statics.hasOwnProperty(name)) {\n      continue;\n    }\n\n    var isReserved = name in RESERVED_SPEC_KEYS;\n    !!isReserved ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\&apos;t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.&apos;, name) : _prodInvariant(&apos;78&apos;, name) : void 0;\n\n    var isInherited = name in Constructor;\n    !!isInherited ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.&apos;, name) : _prodInvariant(&apos;79&apos;, name) : void 0;\n    Constructor[name] = property;\n  }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n  !(one &amp;&amp; two &amp;&amp; typeof one === &apos;object&apos; &amp;&amp; typeof two === &apos;object&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.&apos;) : _prodInvariant(&apos;80&apos;) : void 0;\n\n  for (var key in two) {\n    if (two.hasOwnProperty(key)) {\n      !(one[key] === undefined) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.&apos;, key) : _prodInvariant(&apos;81&apos;, key) : void 0;\n      one[key] = two[key];\n    }\n  }\n  return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n  return function mergedResult() {\n    var a = one.apply(this, arguments);\n    var b = two.apply(this, arguments);\n    if (a == null) {\n      return b;\n    } else if (b == null) {\n      return a;\n    }\n    var c = {};\n    mergeIntoWithNoDuplicateKeys(c, a);\n    mergeIntoWithNoDuplicateKeys(c, b);\n    return c;\n  };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n  return function chainedFunction() {\n    one.apply(this, arguments);\n    two.apply(this, arguments);\n  };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n  var boundMethod = method.bind(component);\n  if (process.env.NODE_ENV !== &apos;production&apos;) {\n    boundMethod.__reactBoundContext = component;\n    boundMethod.__reactBoundMethod = method;\n    boundMethod.__reactBoundArguments = null;\n    var componentName = component.constructor.displayName;\n    var _bind = boundMethod.bind;\n    boundMethod.bind = function (newThis) {\n      for (var _len = arguments.length, args = Array(_len &gt; 1 ? _len - 1 : 0), _key = 1; _key &lt; _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      // User is trying to bind() an autobound method; we effectively will\n      // ignore the value of \"this\" that the user is trying to use, so\n      // let&apos;s warn.\n      if (newThis !== component &amp;&amp; newThis !== null) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;bind(): React component methods may only be bound to the &apos; + &apos;component instance. See %s&apos;, componentName) : void 0;\n      } else if (!args.length) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;bind(): You are binding a component method to the component. &apos; + &apos;React does this for you automatically in a high-performance &apos; + &apos;way, so you can safely remove this call. See %s&apos;, componentName) : void 0;\n        return boundMethod;\n      }\n      var reboundMethod = _bind.apply(boundMethod, arguments);\n      reboundMethod.__reactBoundContext = component;\n      reboundMethod.__reactBoundMethod = method;\n      reboundMethod.__reactBoundArguments = args;\n      return reboundMethod;\n    };\n  }\n  return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n  var pairs = component.__reactAutoBindPairs;\n  for (var i = 0; i &lt; pairs.length; i += 2) {\n    var autoBindKey = pairs[i];\n    var method = pairs[i + 1];\n    component[autoBindKey] = bindAutoBindMethod(component, method);\n  }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n  /**\n   * TODO: This will be deprecated because state should always keep a consistent\n   * type signature and the only use case for this, is to avoid that.\n   */\n  replaceState: function (newState, callback) {\n    this.updater.enqueueReplaceState(this, newState);\n    if (callback) {\n      this.updater.enqueueCallback(this, callback, &apos;replaceState&apos;);\n    }\n  },\n\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function () {\n    return this.updater.isMounted(this);\n  }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n  /**\n   * Creates a composite component class given a class specification.\n   * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n   *\n   * @param {object} spec Class specification (which must define `render`).\n   * @return {function} Component constructor function.\n   * @public\n   */\n  createClass: function (spec) {\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(didWarnDeprecated, &apos;%s: React.createClass is deprecated and will be removed in version 16. &apos; + &apos;Use plain JavaScript classes instead. If you\\&apos;re not yet ready to &apos; + &apos;migrate, create-react-class is available on npm as a &apos; + &apos;drop-in replacement.&apos;, spec &amp;&amp; spec.displayName || &apos;A Component&apos;) : void 0;\n      didWarnDeprecated = true;\n    }\n\n    // To keep our warnings more understandable, we&apos;ll use a little hack here to\n    // ensure that Constructor.name !== &apos;Constructor&apos;. This makes sure we don&apos;t\n    // unnecessarily identify a class without displayName as &apos;Constructor&apos;.\n    var Constructor = identity(function (props, context, updater) {\n      // This constructor gets overridden by mocks. The argument is used\n      // by mocks to assert on what gets mounted.\n\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(this instanceof Constructor, &apos;Something is calling a React component directly. Use a factory or &apos; + &apos;JSX instead. See: https://fb.me/react-legacyfactory&apos;) : void 0;\n      }\n\n      // Wire up auto-binding\n      if (this.__reactAutoBindPairs.length) {\n        bindAutoBindMethods(this);\n      }\n\n      this.props = props;\n      this.context = context;\n      this.refs = emptyObject;\n      this.updater = updater || ReactNoopUpdateQueue;\n\n      this.state = null;\n\n      // ReactClasses doesn&apos;t have constructors. Instead, they use the\n      // getInitialState and componentWillMount methods for initialization.\n\n      var initialState = this.getInitialState ? this.getInitialState() : null;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        // We allow auto-mocks to proceed as if they&apos;re returning null.\n        if (initialState === undefined &amp;&amp; this.getInitialState._isMockFunction) {\n          // This is probably bad practice. Consider warning here and\n          // deprecating this convenience.\n          initialState = null;\n        }\n      }\n      !(typeof initialState === &apos;object&apos; &amp;&amp; !Array.isArray(initialState)) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s.getInitialState(): must return an object or null&apos;, Constructor.displayName || &apos;ReactCompositeComponent&apos;) : _prodInvariant(&apos;82&apos;, Constructor.displayName || &apos;ReactCompositeComponent&apos;) : void 0;\n\n      this.state = initialState;\n    });\n    Constructor.prototype = new ReactClassComponent();\n    Constructor.prototype.constructor = Constructor;\n    Constructor.prototype.__reactAutoBindPairs = [];\n\n    injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n    mixSpecIntoComponent(Constructor, spec);\n\n    // Initialize the defaultProps property after all mixins have been merged.\n    if (Constructor.getDefaultProps) {\n      Constructor.defaultProps = Constructor.getDefaultProps();\n    }\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      // This is a tag to indicate that the use of these method names is ok,\n      // since it&apos;s used with createClass. If it&apos;s not, then it&apos;s likely a\n      // mistake so we&apos;ll warn you to use the static property, property\n      // initializer or constructor respectively.\n      if (Constructor.getDefaultProps) {\n        Constructor.getDefaultProps.isReactClassApproved = {};\n      }\n      if (Constructor.prototype.getInitialState) {\n        Constructor.prototype.getInitialState.isReactClassApproved = {};\n      }\n    }\n\n    !Constructor.prototype.render ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;createClass(...): Class specification must implement a `render` method.&apos;) : _prodInvariant(&apos;83&apos;) : void 0;\n\n    if (process.env.NODE_ENV !== &apos;production&apos;) {\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!Constructor.prototype.componentShouldUpdate, &apos;%s has a method called &apos; + &apos;componentShouldUpdate(). Did you mean shouldComponentUpdate()? &apos; + &apos;The name is phrased as a question because the function is &apos; + &apos;expected to return a value.&apos;, spec.displayName || &apos;A component&apos;) : void 0;\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!Constructor.prototype.componentWillRecieveProps, &apos;%s has a method called &apos; + &apos;componentWillRecieveProps(). Did you mean componentWillReceiveProps()?&apos;, spec.displayName || &apos;A component&apos;) : void 0;\n    }\n\n    // Reduce time spent doing lookups by setting these on the prototype.\n    for (var methodName in ReactClassInterface) {\n      if (!Constructor.prototype[methodName]) {\n        Constructor.prototype[methodName] = null;\n      }\n    }\n\n    return Constructor;\n  },\n\n  injection: {\n    injectMixin: function (mixin) {\n      injectedMixins.push(mixin);\n    }\n  }\n\n};\n\nmodule.exports = ReactClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactClass.js\n// module id = 488\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar ReactElement = require(&apos;./ReactElement&apos;);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== &apos;production&apos;) {\n  var ReactElementValidator = require(&apos;./ReactElementValidator&apos;);\n  createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n  a: createDOMFactory(&apos;a&apos;),\n  abbr: createDOMFactory(&apos;abbr&apos;),\n  address: createDOMFactory(&apos;address&apos;),\n  area: createDOMFactory(&apos;area&apos;),\n  article: createDOMFactory(&apos;article&apos;),\n  aside: createDOMFactory(&apos;aside&apos;),\n  audio: createDOMFactory(&apos;audio&apos;),\n  b: createDOMFactory(&apos;b&apos;),\n  base: createDOMFactory(&apos;base&apos;),\n  bdi: createDOMFactory(&apos;bdi&apos;),\n  bdo: createDOMFactory(&apos;bdo&apos;),\n  big: createDOMFactory(&apos;big&apos;),\n  blockquote: createDOMFactory(&apos;blockquote&apos;),\n  body: createDOMFactory(&apos;body&apos;),\n  br: createDOMFactory(&apos;br&apos;),\n  button: createDOMFactory(&apos;button&apos;),\n  canvas: createDOMFactory(&apos;canvas&apos;),\n  caption: createDOMFactory(&apos;caption&apos;),\n  cite: createDOMFactory(&apos;cite&apos;),\n  code: createDOMFactory(&apos;code&apos;),\n  col: createDOMFactory(&apos;col&apos;),\n  colgroup: createDOMFactory(&apos;colgroup&apos;),\n  data: createDOMFactory(&apos;data&apos;),\n  datalist: createDOMFactory(&apos;datalist&apos;),\n  dd: createDOMFactory(&apos;dd&apos;),\n  del: createDOMFactory(&apos;del&apos;),\n  details: createDOMFactory(&apos;details&apos;),\n  dfn: createDOMFactory(&apos;dfn&apos;),\n  dialog: createDOMFactory(&apos;dialog&apos;),\n  div: createDOMFactory(&apos;div&apos;),\n  dl: createDOMFactory(&apos;dl&apos;),\n  dt: createDOMFactory(&apos;dt&apos;),\n  em: createDOMFactory(&apos;em&apos;),\n  embed: createDOMFactory(&apos;embed&apos;),\n  fieldset: createDOMFactory(&apos;fieldset&apos;),\n  figcaption: createDOMFactory(&apos;figcaption&apos;),\n  figure: createDOMFactory(&apos;figure&apos;),\n  footer: createDOMFactory(&apos;footer&apos;),\n  form: createDOMFactory(&apos;form&apos;),\n  h1: createDOMFactory(&apos;h1&apos;),\n  h2: createDOMFactory(&apos;h2&apos;),\n  h3: createDOMFactory(&apos;h3&apos;),\n  h4: createDOMFactory(&apos;h4&apos;),\n  h5: createDOMFactory(&apos;h5&apos;),\n  h6: createDOMFactory(&apos;h6&apos;),\n  head: createDOMFactory(&apos;head&apos;),\n  header: createDOMFactory(&apos;header&apos;),\n  hgroup: createDOMFactory(&apos;hgroup&apos;),\n  hr: createDOMFactory(&apos;hr&apos;),\n  html: createDOMFactory(&apos;html&apos;),\n  i: createDOMFactory(&apos;i&apos;),\n  iframe: createDOMFactory(&apos;iframe&apos;),\n  img: createDOMFactory(&apos;img&apos;),\n  input: createDOMFactory(&apos;input&apos;),\n  ins: createDOMFactory(&apos;ins&apos;),\n  kbd: createDOMFactory(&apos;kbd&apos;),\n  keygen: createDOMFactory(&apos;keygen&apos;),\n  label: createDOMFactory(&apos;label&apos;),\n  legend: createDOMFactory(&apos;legend&apos;),\n  li: createDOMFactory(&apos;li&apos;),\n  link: createDOMFactory(&apos;link&apos;),\n  main: createDOMFactory(&apos;main&apos;),\n  map: createDOMFactory(&apos;map&apos;),\n  mark: createDOMFactory(&apos;mark&apos;),\n  menu: createDOMFactory(&apos;menu&apos;),\n  menuitem: createDOMFactory(&apos;menuitem&apos;),\n  meta: createDOMFactory(&apos;meta&apos;),\n  meter: createDOMFactory(&apos;meter&apos;),\n  nav: createDOMFactory(&apos;nav&apos;),\n  noscript: createDOMFactory(&apos;noscript&apos;),\n  object: createDOMFactory(&apos;object&apos;),\n  ol: createDOMFactory(&apos;ol&apos;),\n  optgroup: createDOMFactory(&apos;optgroup&apos;),\n  option: createDOMFactory(&apos;option&apos;),\n  output: createDOMFactory(&apos;output&apos;),\n  p: createDOMFactory(&apos;p&apos;),\n  param: createDOMFactory(&apos;param&apos;),\n  picture: createDOMFactory(&apos;picture&apos;),\n  pre: createDOMFactory(&apos;pre&apos;),\n  progress: createDOMFactory(&apos;progress&apos;),\n  q: createDOMFactory(&apos;q&apos;),\n  rp: createDOMFactory(&apos;rp&apos;),\n  rt: createDOMFactory(&apos;rt&apos;),\n  ruby: createDOMFactory(&apos;ruby&apos;),\n  s: createDOMFactory(&apos;s&apos;),\n  samp: createDOMFactory(&apos;samp&apos;),\n  script: createDOMFactory(&apos;script&apos;),\n  section: createDOMFactory(&apos;section&apos;),\n  select: createDOMFactory(&apos;select&apos;),\n  small: createDOMFactory(&apos;small&apos;),\n  source: createDOMFactory(&apos;source&apos;),\n  span: createDOMFactory(&apos;span&apos;),\n  strong: createDOMFactory(&apos;strong&apos;),\n  style: createDOMFactory(&apos;style&apos;),\n  sub: createDOMFactory(&apos;sub&apos;),\n  summary: createDOMFactory(&apos;summary&apos;),\n  sup: createDOMFactory(&apos;sup&apos;),\n  table: createDOMFactory(&apos;table&apos;),\n  tbody: createDOMFactory(&apos;tbody&apos;),\n  td: createDOMFactory(&apos;td&apos;),\n  textarea: createDOMFactory(&apos;textarea&apos;),\n  tfoot: createDOMFactory(&apos;tfoot&apos;),\n  th: createDOMFactory(&apos;th&apos;),\n  thead: createDOMFactory(&apos;thead&apos;),\n  time: createDOMFactory(&apos;time&apos;),\n  title: createDOMFactory(&apos;title&apos;),\n  tr: createDOMFactory(&apos;tr&apos;),\n  track: createDOMFactory(&apos;track&apos;),\n  u: createDOMFactory(&apos;u&apos;),\n  ul: createDOMFactory(&apos;ul&apos;),\n  &apos;var&apos;: createDOMFactory(&apos;var&apos;),\n  video: createDOMFactory(&apos;video&apos;),\n  wbr: createDOMFactory(&apos;wbr&apos;),\n\n  // SVG\n  circle: createDOMFactory(&apos;circle&apos;),\n  clipPath: createDOMFactory(&apos;clipPath&apos;),\n  defs: createDOMFactory(&apos;defs&apos;),\n  ellipse: createDOMFactory(&apos;ellipse&apos;),\n  g: createDOMFactory(&apos;g&apos;),\n  image: createDOMFactory(&apos;image&apos;),\n  line: createDOMFactory(&apos;line&apos;),\n  linearGradient: createDOMFactory(&apos;linearGradient&apos;),\n  mask: createDOMFactory(&apos;mask&apos;),\n  path: createDOMFactory(&apos;path&apos;),\n  pattern: createDOMFactory(&apos;pattern&apos;),\n  polygon: createDOMFactory(&apos;polygon&apos;),\n  polyline: createDOMFactory(&apos;polyline&apos;),\n  radialGradient: createDOMFactory(&apos;radialGradient&apos;),\n  rect: createDOMFactory(&apos;rect&apos;),\n  stop: createDOMFactory(&apos;stop&apos;),\n  svg: createDOMFactory(&apos;svg&apos;),\n  text: createDOMFactory(&apos;text&apos;),\n  tspan: createDOMFactory(&apos;tspan&apos;)\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactDOMFactories.js\n// module id = 489\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _require = require(&apos;./ReactElement&apos;),\n    isValidElement = _require.isValidElement;\n\nvar factory = require(&apos;prop-types/factory&apos;);\n\nmodule.exports = factory(isValidElement);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactPropTypes.js\n// module id = 490\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar ReactPropTypesSecret = &apos;SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED&apos;;\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactPropTypesSecret.js\n// module id = 491\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _assign = require(&apos;object-assign&apos;);\n\nvar ReactComponent = require(&apos;./ReactComponent&apos;);\nvar ReactNoopUpdateQueue = require(&apos;./ReactNoopUpdateQueue&apos;);\n\nvar emptyObject = require(&apos;fbjs/lib/emptyObject&apos;);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n  // Duplicated from ReactComponent.\n  this.props = props;\n  this.context = context;\n  this.refs = emptyObject;\n  // We initialize the default updater but the real one gets injected by the\n  // renderer.\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactPureComponent.js\n// module id = 492\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nmodule.exports = &apos;15.5.4&apos;;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/ReactVersion.js\n// module id = 493\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactPropTypeLocationNames = require(&apos;./ReactPropTypeLocationNames&apos;);\nvar ReactPropTypesSecret = require(&apos;./ReactPropTypesSecret&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== &apos;undefined&apos; &amp;&amp; process.env &amp;&amp; process.env.NODE_ENV === &apos;test&apos;) {\n  // Temporary hack.\n  // Inline requires don&apos;t work well with Jest:\n  // https://github.com/facebook/react/issues/7240\n  // Remove the inline requires when we don&apos;t need them anymore:\n  // https://github.com/facebook/react/pull/7178\n  ReactComponentTreeHook = require(&apos;./ReactComponentTreeHook&apos;);\n}\n\nvar loggedTypeFailures = {};\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?object} element The React element that is being type-checked\n * @param {?number} debugID The React component instance that is being type-checked\n * @private\n */\nfunction checkReactTypeSpec(typeSpecs, values, location, componentName, element, debugID) {\n  for (var typeSpecName in typeSpecs) {\n    if (typeSpecs.hasOwnProperty(typeSpecName)) {\n      var error;\n      // Prop type validation may throw. In case they do, we don&apos;t want to\n      // fail the render phase where it didn&apos;t fail before. So we log it.\n      // After these have been cleaned up, we&apos;ll let them throw.\n      try {\n        // This is intentionally an invariant that gets caught. It&apos;s the same\n        // behavior as without this statement except with a better message.\n        !(typeof typeSpecs[typeSpecName] === &apos;function&apos;) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;%s: %s type `%s` is invalid; it must be a function, usually from React.PropTypes.&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : _prodInvariant(&apos;84&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName) : void 0;\n        error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n      } catch (ex) {\n        error = ex;\n      }\n      process.env.NODE_ENV !== &apos;production&apos; ? warning(!error || error instanceof Error, &apos;%s: type specification of %s `%s` is invalid; the type checker &apos; + &apos;function must return `null` or an `Error` but returned a %s. &apos; + &apos;You may have forgotten to pass an argument to the type checker &apos; + &apos;creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and &apos; + &apos;shape all require an argument).&apos;, componentName || &apos;React class&apos;, ReactPropTypeLocationNames[location], typeSpecName, typeof error) : void 0;\n      if (error instanceof Error &amp;&amp; !(error.message in loggedTypeFailures)) {\n        // Only monitor this failure once because there tends to be a lot of the\n        // same error.\n        loggedTypeFailures[error.message] = true;\n\n        var componentStackInfo = &apos;&apos;;\n\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          if (!ReactComponentTreeHook) {\n            ReactComponentTreeHook = require(&apos;./ReactComponentTreeHook&apos;);\n          }\n          if (debugID !== null) {\n            componentStackInfo = ReactComponentTreeHook.getStackAddendumByID(debugID);\n          } else if (element !== null) {\n            componentStackInfo = ReactComponentTreeHook.getCurrentStackAddendum(element);\n          }\n        }\n\n        process.env.NODE_ENV !== &apos;production&apos; ? warning(false, &apos;Failed %s type: %s%s&apos;, location, error.message, componentStackInfo) : void 0;\n      }\n    }\n  }\n}\n\nmodule.exports = checkReactTypeSpec;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/checkReactTypeSpec.js\n// module id = 494\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n&apos;use strict&apos;;\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n  return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/getNextDebugID.js\n// module id = 495\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactElement = require(&apos;./ReactElement&apos;);\n\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n  !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;React.Children.only expected to receive a single React element child.&apos;) : _prodInvariant(&apos;143&apos;) : void 0;\n  return children;\n}\n\nmodule.exports = onlyChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/onlyChild.js\n// module id = 496\n// module chunks = 1","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n&apos;use strict&apos;;\n\nvar _prodInvariant = require(&apos;./reactProdInvariant&apos;);\n\nvar ReactCurrentOwner = require(&apos;./ReactCurrentOwner&apos;);\nvar REACT_ELEMENT_TYPE = require(&apos;./ReactElementSymbol&apos;);\n\nvar getIteratorFn = require(&apos;./getIteratorFn&apos;);\nvar invariant = require(&apos;fbjs/lib/invariant&apos;);\nvar KeyEscapeUtils = require(&apos;./KeyEscapeUtils&apos;);\nvar warning = require(&apos;fbjs/lib/warning&apos;);\n\nvar SEPARATOR = &apos;.&apos;;\nvar SUBSEPARATOR = &apos;:&apos;;\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don&apos;t block potential future ES APIs.\n  if (component &amp;&amp; typeof component === &apos;object&apos; &amp;&amp; component.key != null) {\n    // Explicit key\n    return KeyEscapeUtils.escape(component.key);\n  }\n  // Implicit key determined by the index in the set\n  return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n  var type = typeof children;\n\n  if (type === &apos;undefined&apos; || type === &apos;boolean&apos;) {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  if (children === null || type === &apos;string&apos; || type === &apos;number&apos; ||\n  // The following is inlined from ReactElement. This means we can optimize\n  // some checks. React Fiber also inlines this logic for similar purposes.\n  type === &apos;object&apos; &amp;&amp; children.$$typeof === REACT_ELEMENT_TYPE) {\n    callback(traverseContext, children,\n    // If it&apos;s the only child, treat the name as if it was wrapped in an array\n    // so that it&apos;s consistent if the number of children grows.\n    nameSoFar === &apos;&apos; ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n  var nextNamePrefix = nameSoFar === &apos;&apos; ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (Array.isArray(children)) {\n    for (var i = 0; i &lt; children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getComponentKey(child, i);\n      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n    if (iteratorFn) {\n      var iterator = iteratorFn.call(children);\n      var step;\n      if (iteratorFn !== children.entries) {\n        var ii = 0;\n        while (!(step = iterator.next()).done) {\n          child = step.value;\n          nextName = nextNamePrefix + getComponentKey(child, ii++);\n          subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n        }\n      } else {\n        if (process.env.NODE_ENV !== &apos;production&apos;) {\n          var mapsAsChildrenAddendum = &apos;&apos;;\n          if (ReactCurrentOwner.current) {\n            var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n            if (mapsAsChildrenOwnerName) {\n              mapsAsChildrenAddendum = &apos; Check the render method of `&apos; + mapsAsChildrenOwnerName + &apos;`.&apos;;\n            }\n          }\n          process.env.NODE_ENV !== &apos;production&apos; ? warning(didWarnAboutMaps, &apos;Using Maps as children is not yet fully supported. It is an &apos; + &apos;experimental feature that might be removed. Convert it to a &apos; + &apos;sequence / iterable of keyed ReactElements instead.%s&apos;, mapsAsChildrenAddendum) : void 0;\n          didWarnAboutMaps = true;\n        }\n        // Iterator will provide entry [k,v] tuples rather than values.\n        while (!(step = iterator.next()).done) {\n          var entry = step.value;\n          if (entry) {\n            child = entry[1];\n            nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n            subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n          }\n        }\n      }\n    } else if (type === &apos;object&apos;) {\n      var addendum = &apos;&apos;;\n      if (process.env.NODE_ENV !== &apos;production&apos;) {\n        addendum = &apos; If you meant to render a collection of children, use an array &apos; + &apos;instead or wrap the object using createFragment(object) from the &apos; + &apos;React add-ons.&apos;;\n        if (children._isReactElement) {\n          addendum = &apos; It looks like you\\&apos;re using an element created by a different &apos; + &apos;version of React. Make sure to use only one copy of React.&apos;;\n        }\n        if (ReactCurrentOwner.current) {\n          var name = ReactCurrentOwner.current.getName();\n          if (name) {\n            addendum += &apos; Check the render method of `&apos; + name + &apos;`.&apos;;\n          }\n        }\n      }\n      var childrenString = String(children);\n      !false ? process.env.NODE_ENV !== &apos;production&apos; ? invariant(false, &apos;Objects are not valid as a React child (found: %s).%s&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : _prodInvariant(&apos;31&apos;, childrenString === &apos;[object Object]&apos; ? &apos;object with keys {&apos; + Object.keys(children).join(&apos;, &apos;) + &apos;}&apos; : childrenString, addendum) : void 0;\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n  if (children == null) {\n    return 0;\n  }\n\n  return traverseAllChildrenImpl(children, &apos;&apos;, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./&#126;/react/lib/traverseAllChildren.js\n// module id = 497\n// module chunks = 1"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A;;;;;ACtJA;AACA;AACA;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AChNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACp4BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACv+BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A","sourceRoot":""}</l></variable></variables></scene></scenes></project><media name="files" app="Snap! 8.2, https://snap.berkeley.edu" version="2"><costume name="Untitled" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==" mediaID="Stage_cst_Untitled"/></media></snapdata>